@wordpress/components 19.12.0 → 19.13.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 +37 -0
- package/CONTRIBUTING.md +94 -12
- package/build/alignment-matrix-control/index.js +3 -3
- package/build/alignment-matrix-control/index.js.map +1 -1
- package/build/angle-picker-control/index.js +2 -2
- package/build/angle-picker-control/index.js.map +1 -1
- package/build/border-box-control/border-box-control-linked-button/component.js.map +1 -1
- package/build/border-box-control/utils.js.map +1 -1
- package/build/border-control/border-control/hook.js.map +1 -1
- package/build/box-control/all-input-control.js +6 -10
- package/build/box-control/all-input-control.js.map +1 -1
- package/build/box-control/axial-input-controls.js.map +1 -1
- package/build/box-control/index.js +3 -7
- package/build/box-control/index.js.map +1 -1
- package/build/box-control/input-controls.js +6 -10
- package/build/box-control/input-controls.js.map +1 -1
- package/build/box-control/unit-control.js +4 -4
- package/build/box-control/unit-control.js.map +1 -1
- package/build/button/index.native.js +1 -3
- package/build/button/index.native.js.map +1 -1
- package/build/checkbox-control/index.js.map +1 -1
- package/build/color-picker/index.native.js.map +1 -1
- package/build/combobox-control/index.js +4 -2
- package/build/combobox-control/index.js.map +1 -1
- package/build/confirm-dialog/component.js.map +1 -1
- package/build/custom-gradient-bar/constants.js +1 -3
- package/build/custom-gradient-bar/constants.js.map +1 -1
- package/build/custom-gradient-bar/control-points.js +15 -8
- package/build/custom-gradient-bar/control-points.js.map +1 -1
- package/build/custom-gradient-bar/index.js +5 -5
- package/build/custom-gradient-bar/index.js.map +1 -1
- package/build/custom-gradient-bar/utils.js +5 -7
- package/build/custom-gradient-bar/utils.js.map +1 -1
- package/build/custom-gradient-picker/utils.js.map +1 -1
- package/build/custom-select-control/index.js.map +1 -1
- package/build/date-time/date/index.js +4 -4
- package/build/date-time/date/index.js.map +1 -1
- package/build/date-time/date-time/index.js +3 -3
- package/build/date-time/date-time/index.js.map +1 -1
- package/build/dimension-control/index.js +1 -3
- package/build/dimension-control/index.js.map +1 -1
- package/build/divider/styles.js +5 -5
- package/build/divider/styles.js.map +1 -1
- package/build/draggable/index.js.map +1 -1
- package/build/draggable/index.native.js +6 -1
- package/build/draggable/index.native.js.map +1 -1
- package/build/drop-zone/provider.js.map +1 -1
- package/build/dropdown/index.js +2 -2
- package/build/dropdown/index.js.map +1 -1
- package/build/dropdown-menu/index.js +13 -2
- package/build/dropdown-menu/index.js.map +1 -1
- package/build/dropdown-menu/index.native.js +13 -2
- package/build/dropdown-menu/index.native.js.map +1 -1
- package/build/external-link/index.js +20 -8
- package/build/external-link/index.js.map +1 -1
- package/build/external-link/styles/external-link-styles.js +3 -3
- package/build/external-link/styles/external-link-styles.js.map +1 -1
- package/build/external-link/types.js +6 -0
- package/build/external-link/types.js.map +1 -0
- package/build/flex/flex/hook.js +9 -5
- package/build/flex/flex/hook.js.map +1 -1
- package/build/focal-point-picker/controls.js +3 -7
- package/build/focal-point-picker/controls.js.map +1 -1
- package/build/focal-point-picker/index.js.map +1 -1
- package/build/focal-point-picker/media.js +4 -8
- package/build/focal-point-picker/media.js.map +1 -1
- package/build/font-size-picker/index.js +1 -1
- package/build/font-size-picker/index.js.map +1 -1
- package/build/form-toggle/index.js +6 -4
- package/build/form-toggle/index.js.map +1 -1
- package/build/form-token-field/index.js +328 -359
- package/build/form-token-field/index.js.map +1 -1
- package/build/form-token-field/suggestions-list.js +26 -20
- package/build/form-token-field/suggestions-list.js.map +1 -1
- package/build/form-token-field/token-input.js +39 -53
- package/build/form-token-field/token-input.js.map +1 -1
- package/build/form-token-field/token.js +3 -3
- package/build/form-token-field/token.js.map +1 -1
- package/build/form-token-field/types.js +6 -0
- package/build/form-token-field/types.js.map +1 -0
- package/build/gradient-picker/index.js.map +1 -1
- package/build/heading/hook.js.map +1 -1
- package/build/higher-order/navigate-regions/index.js.map +1 -1
- package/build/higher-order/with-focus-return/index.js.map +1 -1
- package/build/higher-order/with-spoken-messages/index.js.map +1 -1
- package/build/icon/index.js.map +1 -1
- package/build/input-control/index.js +5 -5
- package/build/input-control/index.js.map +1 -1
- package/build/input-control/input-field.js +10 -10
- package/build/input-control/input-field.js.map +1 -1
- package/build/input-control/reducer/reducer.js.map +1 -1
- package/build/input-control/utils.js +1 -1
- package/build/input-control/utils.js.map +1 -1
- package/build/menu-items-choice/index.js +3 -7
- package/build/menu-items-choice/index.js.map +1 -1
- package/build/mobile/bottom-sheet/bottom-sheet-context.native.js.map +1 -1
- package/build/mobile/bottom-sheet/cell.native.js.map +1 -1
- package/build/mobile/bottom-sheet/cycle-picker-cell.native.js +1 -7
- package/build/mobile/bottom-sheet/cycle-picker-cell.native.js.map +1 -1
- package/build/mobile/bottom-sheet/index.native.js.map +1 -1
- package/build/mobile/bottom-sheet/picker-cell.native.js.map +1 -1
- package/build/mobile/bottom-sheet/stepper-cell/index.native.js.map +1 -1
- package/build/mobile/color-settings/index.native.js.map +1 -1
- package/build/mobile/global-styles-context/index.native.js.map +1 -1
- package/build/mobile/gradient/index.native.js.map +1 -1
- package/build/mobile/html-text-input/index.native.js.map +1 -1
- package/build/mobile/inserter-button/index.native.js.map +1 -1
- package/build/mobile/link-settings/image-link-destinations-screen.native.js.map +1 -1
- package/build/mobile/media-edit/index.native.js.map +1 -1
- package/build/mobile/segmented-control/index.native.js +1 -1
- package/build/mobile/segmented-control/index.native.js.map +1 -1
- package/build/modal/index.js +1 -1
- package/build/modal/index.js.map +1 -1
- package/build/navigable-container/container.js +4 -2
- package/build/navigable-container/container.js.map +1 -1
- package/build/navigation/context.js +12 -16
- package/build/navigation/context.js.map +1 -1
- package/build/navigation/index.js +3 -3
- package/build/navigation/index.js.map +1 -1
- package/build/navigation/item/index.js +3 -3
- package/build/navigation/item/index.js.map +1 -1
- package/build/navigator/navigator-back-button/hook.js.map +1 -1
- package/build/navigator/navigator-button/hook.js.map +1 -1
- package/build/navigator/navigator-provider/component.js +1 -1
- package/build/navigator/navigator-provider/component.js.map +1 -1
- package/build/navigator/navigator-screen/component.js +1 -1
- package/build/navigator/navigator-screen/component.js.map +1 -1
- package/build/notice/index.js +5 -5
- package/build/notice/index.js.map +1 -1
- package/build/notice/list.js +4 -2
- package/build/notice/list.js.map +1 -1
- package/build/panel/body.js +3 -3
- package/build/panel/body.js.map +1 -1
- package/build/placeholder/index.js +26 -12
- package/build/placeholder/index.js.map +1 -1
- package/build/radio-control/index.js +43 -7
- package/build/radio-control/index.js.map +1 -1
- package/build/radio-control/types.js +6 -0
- package/build/radio-control/types.js.map +1 -0
- package/build/range-control/index.js +8 -6
- package/build/range-control/index.js.map +1 -1
- package/build/range-control/input-range.js +6 -10
- package/build/range-control/input-range.js.map +1 -1
- package/build/range-control/utils.js +7 -5
- package/build/range-control/utils.js.map +1 -1
- package/build/resizable-box/resize-tooltip/index.js +3 -3
- package/build/resizable-box/resize-tooltip/index.js.map +1 -1
- package/build/resizable-box/resize-tooltip/utils.js +4 -7
- package/build/resizable-box/resize-tooltip/utils.js.map +1 -1
- package/build/responsive-wrapper/index.js.map +1 -1
- package/build/select-control/index.js +5 -3
- package/build/select-control/index.js.map +1 -1
- package/build/slot-fill/fill.js +1 -7
- package/build/slot-fill/fill.js.map +1 -1
- package/build/slot-fill/slot.js +14 -3
- package/build/slot-fill/slot.js.map +1 -1
- package/build/snackbar/index.js +7 -7
- package/build/snackbar/index.js.map +1 -1
- package/build/snackbar/list.js +3 -1
- package/build/snackbar/list.js.map +1 -1
- package/build/tab-panel/index.js +3 -1
- package/build/tab-panel/index.js.map +1 -1
- package/build/text/hook.js +4 -4
- package/build/text/hook.js.map +1 -1
- package/build/text/utils.js.map +1 -1
- package/build/toggle-control/index.js +1 -3
- package/build/toggle-control/index.js.map +1 -1
- package/build/toggle-control/index.native.js +1 -7
- package/build/toggle-control/index.native.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.js.map +1 -1
- package/build/toolbar/index.js.map +1 -1
- package/build/tools-panel/tools-panel/hook.js.map +1 -1
- package/build/tools-panel/tools-panel-header/hook.js.map +1 -1
- package/build/tooltip/index.js +2 -1
- package/build/tooltip/index.js.map +1 -1
- package/build/tree-grid/roving-tab-index-item.js.map +1 -1
- package/build/tree-select/index.js +57 -4
- package/build/tree-select/index.js.map +1 -1
- package/build/tree-select/types.js +6 -0
- package/build/tree-select/types.js.map +1 -0
- package/build/ui/form-group/form-group-content.js.map +1 -1
- package/build/unit-control/index.js.map +1 -1
- package/build/utils/unit-values.js.map +1 -1
- package/build/utils/values.js.map +1 -1
- package/build/z-stack/component.js +22 -3
- package/build/z-stack/component.js.map +1 -1
- package/build/z-stack/types.js +6 -0
- package/build/z-stack/types.js.map +1 -0
- package/build-module/alignment-matrix-control/index.js +2 -1
- package/build-module/alignment-matrix-control/index.js.map +1 -1
- package/build-module/angle-picker-control/index.js +1 -1
- package/build-module/angle-picker-control/index.js.map +1 -1
- package/build-module/border-box-control/border-box-control-linked-button/component.js.map +1 -1
- package/build-module/border-box-control/utils.js.map +1 -1
- package/build-module/border-control/border-control/hook.js.map +1 -1
- package/build-module/box-control/all-input-control.js +3 -5
- package/build-module/box-control/all-input-control.js.map +1 -1
- package/build-module/box-control/axial-input-controls.js.map +1 -1
- package/build-module/box-control/index.js +2 -5
- package/build-module/box-control/index.js.map +1 -1
- package/build-module/box-control/input-controls.js +3 -5
- package/build-module/box-control/input-controls.js.map +1 -1
- package/build-module/box-control/unit-control.js +3 -1
- package/build-module/box-control/unit-control.js.map +1 -1
- package/build-module/button/index.native.js +1 -2
- package/build-module/button/index.native.js.map +1 -1
- package/build-module/checkbox-control/index.js.map +1 -1
- package/build-module/color-picker/index.native.js.map +1 -1
- package/build-module/combobox-control/index.js +5 -2
- package/build-module/combobox-control/index.js.map +1 -1
- package/build-module/confirm-dialog/component.js.map +1 -1
- package/build-module/custom-gradient-bar/constants.js +0 -1
- package/build-module/custom-gradient-bar/constants.js.map +1 -1
- package/build-module/custom-gradient-bar/control-points.js +16 -9
- package/build-module/custom-gradient-bar/control-points.js.map +1 -1
- package/build-module/custom-gradient-bar/index.js +6 -6
- package/build-module/custom-gradient-bar/index.js.map +1 -1
- package/build-module/custom-gradient-bar/utils.js +6 -8
- package/build-module/custom-gradient-bar/utils.js.map +1 -1
- package/build-module/custom-gradient-picker/utils.js.map +1 -1
- package/build-module/custom-select-control/index.js.map +1 -1
- package/build-module/date-time/date/index.js +4 -3
- package/build-module/date-time/date/index.js.map +1 -1
- package/build-module/date-time/date-time/index.js +2 -1
- package/build-module/date-time/date-time/index.js.map +1 -1
- package/build-module/dimension-control/index.js +1 -2
- package/build-module/dimension-control/index.js.map +1 -1
- package/build-module/divider/styles.js +5 -5
- package/build-module/divider/styles.js.map +1 -1
- package/build-module/draggable/index.js.map +1 -1
- package/build-module/draggable/index.native.js +6 -1
- package/build-module/draggable/index.native.js.map +1 -1
- package/build-module/drop-zone/provider.js.map +1 -1
- package/build-module/dropdown/index.js +2 -2
- package/build-module/dropdown/index.js.map +1 -1
- package/build-module/dropdown-menu/index.js +12 -1
- package/build-module/dropdown-menu/index.js.map +1 -1
- package/build-module/dropdown-menu/index.native.js +12 -1
- package/build-module/dropdown-menu/index.native.js.map +1 -1
- package/build-module/external-link/index.js +22 -7
- package/build-module/external-link/index.js.map +1 -1
- package/build-module/external-link/styles/external-link-styles.js +3 -3
- package/build-module/external-link/styles/external-link-styles.js.map +1 -1
- package/build-module/external-link/types.js +2 -0
- package/build-module/external-link/types.js.map +1 -0
- package/build-module/flex/flex/hook.js +7 -5
- package/build-module/flex/flex/hook.js.map +1 -1
- package/build-module/focal-point-picker/controls.js +3 -5
- package/build-module/focal-point-picker/controls.js.map +1 -1
- package/build-module/focal-point-picker/index.js.map +1 -1
- package/build-module/focal-point-picker/media.js +3 -5
- package/build-module/focal-point-picker/media.js.map +1 -1
- package/build-module/font-size-picker/index.js +1 -1
- package/build-module/font-size-picker/index.js.map +1 -1
- package/build-module/form-toggle/index.js +1 -1
- package/build-module/form-toggle/index.js.map +1 -1
- package/build-module/form-token-field/index.js +329 -361
- package/build-module/form-token-field/index.js.map +1 -1
- package/build-module/form-token-field/suggestions-list.js +32 -23
- package/build-module/form-token-field/suggestions-list.js.map +1 -1
- package/build-module/form-token-field/token-input.js +43 -58
- package/build-module/form-token-field/token-input.js.map +1 -1
- package/build-module/form-token-field/token.js +3 -1
- package/build-module/form-token-field/token.js.map +1 -1
- package/build-module/form-token-field/types.js +2 -0
- package/build-module/form-token-field/types.js.map +1 -0
- package/build-module/gradient-picker/index.js.map +1 -1
- package/build-module/heading/hook.js.map +1 -1
- package/build-module/higher-order/navigate-regions/index.js.map +1 -1
- package/build-module/higher-order/with-focus-return/index.js.map +1 -1
- package/build-module/higher-order/with-spoken-messages/index.js.map +1 -1
- package/build-module/icon/index.js.map +1 -1
- package/build-module/input-control/index.js +2 -1
- package/build-module/input-control/index.js.map +1 -1
- package/build-module/input-control/input-field.js +2 -1
- package/build-module/input-control/input-field.js.map +1 -1
- package/build-module/input-control/reducer/reducer.js.map +1 -1
- package/build-module/input-control/utils.js +1 -1
- package/build-module/input-control/utils.js.map +1 -1
- package/build-module/menu-items-choice/index.js +3 -5
- package/build-module/menu-items-choice/index.js.map +1 -1
- package/build-module/mobile/bottom-sheet/bottom-sheet-context.native.js.map +1 -1
- package/build-module/mobile/bottom-sheet/cell.native.js.map +1 -1
- package/build-module/mobile/bottom-sheet/cycle-picker-cell.native.js +1 -6
- package/build-module/mobile/bottom-sheet/cycle-picker-cell.native.js.map +1 -1
- package/build-module/mobile/bottom-sheet/index.native.js.map +1 -1
- package/build-module/mobile/bottom-sheet/picker-cell.native.js.map +1 -1
- package/build-module/mobile/bottom-sheet/stepper-cell/index.native.js.map +1 -1
- package/build-module/mobile/color-settings/index.native.js.map +1 -1
- package/build-module/mobile/global-styles-context/index.native.js.map +1 -1
- package/build-module/mobile/gradient/index.native.js.map +1 -1
- package/build-module/mobile/html-text-input/index.native.js.map +1 -1
- package/build-module/mobile/inserter-button/index.native.js.map +1 -1
- package/build-module/mobile/link-settings/image-link-destinations-screen.native.js.map +1 -1
- package/build-module/mobile/media-edit/index.native.js.map +1 -1
- package/build-module/mobile/segmented-control/index.native.js +2 -2
- package/build-module/mobile/segmented-control/index.native.js.map +1 -1
- package/build-module/modal/index.js +1 -1
- package/build-module/modal/index.js.map +1 -1
- package/build-module/navigable-container/container.js +5 -2
- package/build-module/navigable-container/container.js.map +1 -1
- package/build-module/navigation/context.js +3 -5
- package/build-module/navigation/context.js.map +1 -1
- package/build-module/navigation/index.js +3 -1
- package/build-module/navigation/index.js.map +1 -1
- package/build-module/navigation/item/index.js +3 -1
- package/build-module/navigation/item/index.js.map +1 -1
- package/build-module/navigator/navigator-back-button/hook.js.map +1 -1
- package/build-module/navigator/navigator-button/hook.js.map +1 -1
- package/build-module/navigator/navigator-provider/component.js +1 -1
- package/build-module/navigator/navigator-provider/component.js.map +1 -1
- package/build-module/navigator/navigator-screen/component.js +1 -1
- package/build-module/navigator/navigator-screen/component.js.map +1 -1
- package/build-module/notice/index.js +2 -1
- package/build-module/notice/index.js.map +1 -1
- package/build-module/notice/list.js +4 -1
- package/build-module/notice/list.js.map +1 -1
- package/build-module/panel/body.js +3 -1
- package/build-module/panel/body.js.map +1 -1
- package/build-module/placeholder/index.js +24 -11
- package/build-module/placeholder/index.js.map +1 -1
- package/build-module/radio-control/index.js +40 -7
- package/build-module/radio-control/index.js.map +1 -1
- package/build-module/radio-control/types.js +2 -0
- package/build-module/radio-control/types.js.map +1 -0
- package/build-module/range-control/index.js +4 -2
- package/build-module/range-control/index.js.map +1 -1
- package/build-module/range-control/input-range.js +2 -5
- package/build-module/range-control/input-range.js.map +1 -1
- package/build-module/range-control/utils.js +4 -1
- package/build-module/range-control/utils.js.map +1 -1
- package/build-module/resizable-box/resize-tooltip/index.js +2 -1
- package/build-module/resizable-box/resize-tooltip/index.js.map +1 -1
- package/build-module/resizable-box/resize-tooltip/utils.js +3 -5
- package/build-module/resizable-box/resize-tooltip/utils.js.map +1 -1
- package/build-module/responsive-wrapper/index.js.map +1 -1
- package/build-module/select-control/index.js +3 -1
- package/build-module/select-control/index.js.map +1 -1
- package/build-module/slot-fill/fill.js +1 -6
- package/build-module/slot-fill/fill.js.map +1 -1
- package/build-module/slot-fill/slot.js +12 -2
- package/build-module/slot-fill/slot.js.map +1 -1
- package/build-module/snackbar/index.js +3 -1
- package/build-module/snackbar/index.js.map +1 -1
- package/build-module/snackbar/list.js +4 -1
- package/build-module/snackbar/list.js.map +1 -1
- package/build-module/tab-panel/index.js +3 -1
- package/build-module/tab-panel/index.js.map +1 -1
- package/build-module/text/hook.js +4 -4
- package/build-module/text/hook.js.map +1 -1
- package/build-module/text/utils.js.map +1 -1
- package/build-module/toggle-control/index.js +1 -2
- package/build-module/toggle-control/index.js.map +1 -1
- package/build-module/toggle-control/index.native.js +1 -6
- package/build-module/toggle-control/index.native.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.js.map +1 -1
- package/build-module/toolbar/index.js.map +1 -1
- package/build-module/tools-panel/tools-panel/hook.js.map +1 -1
- package/build-module/tools-panel/tools-panel-header/hook.js.map +1 -1
- package/build-module/tooltip/index.js +2 -1
- package/build-module/tooltip/index.js.map +1 -1
- package/build-module/tree-grid/roving-tab-index-item.js.map +1 -1
- package/build-module/tree-select/index.js +53 -3
- package/build-module/tree-select/index.js.map +1 -1
- package/build-module/tree-select/types.js +2 -0
- package/build-module/tree-select/types.js.map +1 -0
- package/build-module/ui/form-group/form-group-content.js.map +1 -1
- package/build-module/unit-control/index.js.map +1 -1
- package/build-module/utils/unit-values.js.map +1 -1
- package/build-module/utils/values.js.map +1 -1
- package/build-module/z-stack/component.js +21 -2
- package/build-module/z-stack/component.js.map +1 -1
- package/build-module/z-stack/types.js +2 -0
- package/build-module/z-stack/types.js.map +1 -0
- package/build-style/style-rtl.css +32 -3
- package/build-style/style.css +32 -4
- package/build-types/base-control/stories/index.d.ts.map +1 -1
- package/build-types/base-field/hook.d.ts +0 -1
- package/build-types/base-field/hook.d.ts.map +1 -1
- package/build-types/border-box-control/border-box-control/hook.d.ts +0 -1
- package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
- package/build-types/border-box-control/border-box-control-linked-button/component.d.ts.map +1 -1
- package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +0 -1
- package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts.map +1 -1
- package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +0 -1
- package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts.map +1 -1
- package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +0 -1
- package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts.map +1 -1
- package/build-types/border-box-control/utils.d.ts.map +1 -1
- package/build-types/border-control/border-control/hook.d.ts +0 -1
- package/build-types/border-control/border-control/hook.d.ts.map +1 -1
- package/build-types/border-control/border-control-dropdown/hook.d.ts +0 -1
- package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
- package/build-types/border-control/border-control-style-picker/hook.d.ts +0 -1
- package/build-types/border-control/border-control-style-picker/hook.d.ts.map +1 -1
- package/build-types/button-group/index.d.ts +1 -1
- package/build-types/button-group/index.d.ts.map +1 -1
- package/build-types/card/card/hook.d.ts +0 -1
- package/build-types/card/card/hook.d.ts.map +1 -1
- package/build-types/card/card-body/hook.d.ts +0 -1
- package/build-types/card/card-body/hook.d.ts.map +1 -1
- package/build-types/card/card-divider/hook.d.ts +0 -1
- package/build-types/card/card-divider/hook.d.ts.map +1 -1
- package/build-types/card/card-footer/hook.d.ts +0 -1
- package/build-types/card/card-footer/hook.d.ts.map +1 -1
- package/build-types/card/card-header/hook.d.ts +0 -1
- package/build-types/card/card-header/hook.d.ts.map +1 -1
- package/build-types/card/card-media/hook.d.ts +0 -1
- package/build-types/card/card-media/hook.d.ts.map +1 -1
- package/build-types/checkbox-control/index.d.ts.map +1 -1
- package/build-types/checkbox-control/stories/index.d.ts.map +1 -1
- package/build-types/color-picker/styles.d.ts +7 -7
- package/build-types/confirm-dialog/component.d.ts.map +1 -1
- package/build-types/date-time/date/index.d.ts.map +1 -1
- package/build-types/date-time/date-time/index.d.ts.map +1 -1
- package/build-types/date-time/stories/date-time.d.ts.map +1 -1
- package/build-types/date-time/stories/date.d.ts.map +1 -1
- package/build-types/date-time/time/styles.d.ts +1 -1
- package/build-types/divider/styles.d.ts.map +1 -1
- package/build-types/dropdown-menu/index.d.ts.map +1 -1
- package/build-types/elevation/hook.d.ts +0 -1
- package/build-types/elevation/hook.d.ts.map +1 -1
- package/build-types/external-link/index.d.ts +17 -0
- package/build-types/external-link/index.d.ts.map +1 -0
- package/build-types/external-link/stories/index.d.ts +12 -0
- package/build-types/external-link/stories/index.d.ts.map +1 -0
- package/build-types/external-link/styles/external-link-styles.d.ts +10 -0
- package/build-types/external-link/styles/external-link-styles.d.ts.map +1 -0
- package/build-types/external-link/types.d.ts +15 -0
- package/build-types/external-link/types.d.ts.map +1 -0
- package/build-types/flex/flex/hook.d.ts +0 -1
- package/build-types/flex/flex/hook.d.ts.map +1 -1
- package/build-types/flex/flex-block/hook.d.ts +0 -1
- package/build-types/flex/flex-block/hook.d.ts.map +1 -1
- package/build-types/flex/flex-item/hook.d.ts +0 -1
- package/build-types/flex/flex-item/hook.d.ts.map +1 -1
- package/build-types/form-token-field/index.d.ts +15 -0
- package/build-types/form-token-field/index.d.ts.map +1 -0
- package/build-types/form-token-field/stories/index.d.ts +13 -0
- package/build-types/form-token-field/stories/index.d.ts.map +1 -0
- package/build-types/form-token-field/suggestions-list.d.ts +10 -0
- package/build-types/form-token-field/suggestions-list.d.ts.map +1 -0
- package/build-types/form-token-field/test/lib/fixtures.d.ts +26 -0
- package/build-types/form-token-field/test/lib/fixtures.d.ts.map +1 -0
- package/build-types/form-token-field/test/lib/token-field-wrapper.d.ts +18 -0
- package/build-types/form-token-field/test/lib/token-field-wrapper.d.ts.map +1 -0
- package/build-types/form-token-field/token-input.d.ts +12 -0
- package/build-types/form-token-field/token-input.d.ts.map +1 -0
- package/build-types/form-token-field/token.d.ts +4 -0
- package/build-types/form-token-field/token.d.ts.map +1 -0
- package/build-types/form-token-field/types.d.ts +176 -0
- package/build-types/form-token-field/types.d.ts.map +1 -0
- package/build-types/grid/hook.d.ts +0 -1
- package/build-types/grid/hook.d.ts.map +1 -1
- package/build-types/h-stack/hook.d.ts +0 -1
- package/build-types/h-stack/hook.d.ts.map +1 -1
- package/build-types/heading/hook.d.ts +0 -1
- package/build-types/heading/hook.d.ts.map +1 -1
- package/build-types/higher-order/with-focus-outside/index.d.ts +1 -1
- package/build-types/input-control/index.d.ts +1 -1
- package/build-types/input-control/index.d.ts.map +1 -1
- package/build-types/input-control/input-field.d.ts +1 -1
- package/build-types/input-control/input-field.d.ts.map +1 -1
- package/build-types/input-control/reducer/reducer.d.ts.map +1 -1
- package/build-types/input-control/stories/index.d.ts +5 -5
- package/build-types/input-control/stories/index.d.ts.map +1 -1
- package/build-types/item-group/item/hook.d.ts +0 -1
- package/build-types/item-group/item/hook.d.ts.map +1 -1
- package/build-types/item-group/item-group/hook.d.ts +0 -1
- package/build-types/item-group/item-group/hook.d.ts.map +1 -1
- package/build-types/navigator/navigator-back-button/hook.d.ts +0 -1
- package/build-types/navigator/navigator-back-button/hook.d.ts.map +1 -1
- package/build-types/navigator/navigator-button/hook.d.ts +0 -1
- package/build-types/navigator/navigator-button/hook.d.ts.map +1 -1
- package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
- package/build-types/number-control/styles/number-control-styles.d.ts +1 -1
- package/build-types/radio-control/index.d.ts +31 -0
- package/build-types/radio-control/index.d.ts.map +1 -0
- package/build-types/radio-control/stories/index.d.ts +12 -0
- package/build-types/radio-control/stories/index.d.ts.map +1 -0
- package/build-types/radio-control/types.d.ts +29 -0
- package/build-types/radio-control/types.d.ts.map +1 -0
- package/build-types/range-control/index.d.ts +5 -5
- package/build-types/range-control/index.d.ts.map +1 -1
- package/build-types/range-control/input-range.d.ts +4 -4
- package/build-types/range-control/input-range.d.ts.map +1 -1
- package/build-types/range-control/utils.d.ts.map +1 -1
- package/build-types/resizable-box/resize-tooltip/index.d.ts.map +1 -1
- package/build-types/resizable-box/resize-tooltip/utils.d.ts.map +1 -1
- package/build-types/scrollable/hook.d.ts +0 -1
- package/build-types/scrollable/hook.d.ts.map +1 -1
- package/build-types/select-control/index.d.ts +1 -1
- package/build-types/select-control/index.d.ts.map +1 -1
- package/build-types/select-control/stories/index.d.ts +3 -3
- package/build-types/select-control/stories/index.d.ts.map +1 -1
- package/build-types/slot-fill/fill.d.ts.map +1 -1
- package/build-types/slot-fill/slot.d.ts.map +1 -1
- package/build-types/spacer/hook.d.ts +0 -1
- package/build-types/spacer/hook.d.ts.map +1 -1
- package/build-types/surface/hook.d.ts +0 -1
- package/build-types/surface/hook.d.ts.map +1 -1
- package/build-types/text/hook.d.ts +0 -1
- package/build-types/text/hook.d.ts.map +1 -1
- package/build-types/text/utils.d.ts.map +1 -1
- package/build-types/text-control/index.d.ts +1 -1
- package/build-types/text-control/index.d.ts.map +1 -1
- package/build-types/text-control/stories/index.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.d.ts.map +1 -1
- package/build-types/tools-panel/tools-panel/hook.d.ts +0 -1
- package/build-types/tools-panel/tools-panel/hook.d.ts.map +1 -1
- package/build-types/tools-panel/tools-panel-header/hook.d.ts +0 -1
- package/build-types/tools-panel/tools-panel-header/hook.d.ts.map +1 -1
- package/build-types/tools-panel/tools-panel-item/hook.d.ts +0 -1
- package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
- package/build-types/tooltip/index.d.ts.map +1 -1
- package/build-types/tree-select/index.d.ts +53 -0
- package/build-types/tree-select/index.d.ts.map +1 -0
- package/build-types/tree-select/stories/index.d.ts +12 -0
- package/build-types/tree-select/stories/index.d.ts.map +1 -0
- package/build-types/tree-select/types.d.ts +30 -0
- package/build-types/tree-select/types.d.ts.map +1 -0
- package/build-types/truncate/hook.d.ts +0 -1
- package/build-types/truncate/hook.d.ts.map +1 -1
- package/build-types/ui/context/wordpress-component.d.ts.map +1 -1
- package/build-types/ui/control-group/hook.d.ts +0 -1
- package/build-types/ui/control-group/hook.d.ts.map +1 -1
- package/build-types/ui/control-label/hook.d.ts +0 -1
- package/build-types/ui/control-label/hook.d.ts.map +1 -1
- package/build-types/ui/form-group/use-form-group.d.ts +0 -2
- package/build-types/ui/form-group/use-form-group.d.ts.map +1 -1
- package/build-types/unit-control/index.d.ts +1 -1
- package/build-types/unit-control/index.d.ts.map +1 -1
- package/build-types/unit-control/stories/index.d.ts.map +1 -1
- package/build-types/utils/unit-values.d.ts.map +1 -1
- package/build-types/utils/values.d.ts.map +1 -1
- package/build-types/v-stack/hook.d.ts +0 -1
- package/build-types/v-stack/hook.d.ts.map +1 -1
- package/build-types/z-stack/component.d.ts +18 -28
- package/build-types/z-stack/component.d.ts.map +1 -1
- package/build-types/z-stack/stories/index.d.ts +6 -0
- package/build-types/z-stack/stories/index.d.ts.map +1 -0
- package/build-types/z-stack/types.d.ts +33 -0
- package/build-types/z-stack/types.d.ts.map +1 -0
- package/package.json +17 -17
- package/src/alignment-matrix-control/index.js +2 -1
- package/src/angle-picker-control/index.js +1 -1
- package/src/base-control/stories/index.tsx +2 -3
- package/src/border-box-control/border-box-control-linked-button/component.tsx +2 -5
- package/src/border-box-control/utils.ts +5 -2
- package/src/border-control/border-control/hook.ts +2 -3
- package/src/box-control/all-input-control.js +2 -4
- package/src/box-control/axial-input-controls.js +4 -6
- package/src/box-control/index.js +2 -5
- package/src/box-control/input-controls.js +33 -36
- package/src/box-control/unit-control.js +2 -1
- package/src/button/index.native.js +1 -2
- package/src/card/stories/index.js +10 -5
- package/src/checkbox-control/index.tsx +2 -3
- package/src/checkbox-control/stories/index.tsx +2 -3
- package/src/checkbox-control/test/index.tsx +2 -1
- package/src/color-picker/index.native.js +7 -4
- package/src/combobox-control/index.js +4 -2
- package/src/confirm-dialog/component.tsx +7 -8
- package/src/custom-gradient-bar/constants.js +2 -2
- package/src/custom-gradient-bar/control-points.js +20 -16
- package/src/custom-gradient-bar/index.js +11 -11
- package/src/custom-gradient-bar/test/utils.js +79 -0
- package/src/custom-gradient-bar/utils.js +6 -18
- package/src/custom-gradient-picker/style.scss +1 -3
- package/src/custom-gradient-picker/utils.js +4 -3
- package/src/custom-select-control/index.js +2 -1
- package/src/custom-select-control/stories/index.js +1 -2
- package/src/date-time/date/index.tsx +2 -2
- package/src/date-time/date/style.scss +10 -0
- package/src/date-time/date/test/index.tsx +1 -1
- package/src/date-time/date-time/index.tsx +6 -8
- package/src/date-time/stories/date-time.tsx +4 -6
- package/src/date-time/stories/date.tsx +2 -3
- package/src/date-time/time/test/index.tsx +12 -12
- package/src/dimension-control/index.js +1 -2
- package/src/divider/styles.ts +2 -3
- package/src/draggable/index.js +3 -3
- package/src/draggable/index.native.js +12 -4
- package/src/drop-zone/provider.js +1 -2
- package/src/dropdown/index.js +2 -2
- package/src/dropdown-menu/index.js +11 -1
- package/src/dropdown-menu/index.native.js +11 -1
- package/src/external-link/README.md +18 -0
- package/src/external-link/{index.js → index.tsx} +26 -6
- package/src/external-link/stories/index.tsx +36 -0
- package/src/external-link/styles/{external-link-styles.js → external-link-styles.ts} +0 -0
- package/src/external-link/types.ts +15 -0
- package/src/flex/flex/hook.js +4 -1
- package/src/focal-point-picker/controls.js +1 -5
- package/src/focal-point-picker/index.js +2 -8
- package/src/focal-point-picker/media.js +2 -5
- package/src/font-size-picker/index.js +3 -1
- package/src/form-toggle/index.js +2 -1
- package/src/form-toggle/test/index.js +1 -2
- package/src/form-token-field/index.tsx +694 -0
- package/src/form-token-field/stories/index.tsx +103 -0
- package/src/form-token-field/style.scss +2 -1
- package/src/form-token-field/{suggestions-list.js → suggestions-list.tsx} +45 -29
- package/src/form-token-field/test/index.js +64 -31
- package/src/form-token-field/test/lib/{token-field-wrapper.js → token-field-wrapper.tsx} +24 -9
- package/src/form-token-field/token-input.tsx +76 -0
- package/src/form-token-field/{token.js → token.tsx} +4 -2
- package/src/form-token-field/types.ts +178 -0
- package/src/gradient-picker/index.js +4 -3
- package/src/heading/hook.ts +5 -4
- package/src/higher-order/navigate-regions/index.js +7 -5
- package/src/higher-order/with-filters/test/index.js +43 -36
- package/src/higher-order/with-focus-return/index.js +14 -13
- package/src/higher-order/with-spoken-messages/index.js +8 -7
- package/src/higher-order/with-spoken-messages/test/index.js +1 -1
- package/src/icon/index.tsx +2 -2
- package/src/input-control/index.tsx +2 -1
- package/src/input-control/input-field.tsx +2 -1
- package/src/input-control/reducer/reducer.ts +23 -21
- package/src/input-control/utils.ts +1 -1
- package/src/item-group/stories/index.js +2 -1
- package/src/menu-item/test/index.js +2 -1
- package/src/menu-items-choice/index.js +2 -5
- package/src/mobile/bottom-sheet/bottom-sheet-context.native.js +2 -4
- package/src/mobile/bottom-sheet/cell.native.js +2 -3
- package/src/mobile/bottom-sheet/cycle-picker-cell.native.js +3 -5
- package/src/mobile/bottom-sheet/index.native.js +14 -17
- package/src/mobile/bottom-sheet/picker-cell.native.js +2 -7
- package/src/mobile/bottom-sheet/stepper-cell/index.native.js +4 -6
- package/src/mobile/color-settings/index.native.js +2 -4
- package/src/mobile/global-styles-context/index.native.js +8 -7
- package/src/mobile/gradient/index.native.js +12 -9
- package/src/mobile/gradient/test/index.native.js +1 -3
- package/src/mobile/html-text-input/index.native.js +2 -3
- package/src/mobile/inserter-button/index.native.js +2 -6
- package/src/mobile/link-settings/image-link-destinations-screen.native.js +6 -2
- package/src/mobile/media-edit/index.native.js +2 -3
- package/src/mobile/segmented-control/index.native.js +4 -5
- package/src/mobile/utils/test/index.native.js +3 -12
- package/src/modal/index.js +1 -1
- package/src/navigable-container/container.js +3 -2
- package/src/navigable-container/test/menu.js +1 -2
- package/src/navigable-container/test/tabbable.js +1 -2
- package/src/navigation/context.js +2 -5
- package/src/navigation/index.js +2 -1
- package/src/navigation/item/index.js +2 -1
- package/src/navigation/stories/controlled-state.js +1 -1
- package/src/navigation/stories/more-examples.js +2 -3
- package/src/navigation/test/index.js +252 -52
- package/src/navigator/navigator-back-button/hook.ts +14 -12
- package/src/navigator/navigator-button/hook.ts +14 -13
- package/src/navigator/navigator-provider/component.tsx +2 -6
- package/src/navigator/navigator-screen/component.tsx +3 -3
- package/src/notice/index.js +2 -1
- package/src/notice/list.js +3 -1
- package/src/panel/body.js +2 -1
- package/src/placeholder/README.md +7 -6
- package/src/placeholder/index.js +27 -10
- package/src/placeholder/style.scss +23 -0
- package/src/radio-control/README.md +17 -23
- package/src/radio-control/index.tsx +107 -0
- package/src/radio-control/stories/index.tsx +72 -0
- package/src/radio-control/types.ts +32 -0
- package/src/range-control/index.js +4 -2
- package/src/range-control/input-range.js +2 -5
- package/src/range-control/utils.js +3 -1
- package/src/resizable-box/resize-tooltip/index.tsx +2 -1
- package/src/resizable-box/resize-tooltip/utils.ts +1 -5
- package/src/responsive-wrapper/index.js +2 -4
- package/src/sandbox/test/index.js +4 -6
- package/src/select-control/index.tsx +3 -1
- package/src/select-control/stories/index.tsx +3 -4
- package/src/slot-fill/fill.js +1 -5
- package/src/slot-fill/slot.js +12 -2
- package/src/snackbar/index.js +1 -1
- package/src/snackbar/list.js +2 -1
- package/src/tab-panel/index.js +3 -1
- package/src/text/hook.js +4 -1
- package/src/text/utils.js +2 -3
- package/src/text-control/stories/index.tsx +4 -6
- package/src/toggle-control/index.js +1 -2
- package/src/toggle-control/index.native.js +2 -6
- package/src/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.tsx +2 -4
- package/src/toolbar/index.js +1 -2
- package/src/tools-panel/tools-panel/hook.ts +2 -4
- package/src/tools-panel/tools-panel-header/hook.ts +2 -5
- package/src/tooltip/index.js +1 -0
- package/src/tree-grid/roving-tab-index-item.js +2 -4
- package/src/tree-grid/test/index.js +2 -3
- package/src/tree-select/README.md +2 -2
- package/src/tree-select/index.tsx +99 -0
- package/src/tree-select/stories/index.tsx +80 -0
- package/src/tree-select/types.ts +35 -0
- package/src/ui/context/wordpress-component.ts +4 -5
- package/src/ui/form-group/form-group-content.js +4 -4
- package/src/unit-control/index.tsx +7 -9
- package/src/unit-control/stories/index.tsx +8 -12
- package/src/unit-control/test/index.tsx +4 -7
- package/src/utils/hooks/stories/use-cx.js +8 -7
- package/src/utils/hooks/test/use-controlled-state.js +2 -1
- package/src/utils/unit-values.ts +2 -1
- package/src/utils/values.js +2 -3
- package/src/z-stack/README.md +14 -3
- package/src/z-stack/component.tsx +24 -29
- package/src/z-stack/stories/index.tsx +76 -0
- package/src/z-stack/types.ts +33 -0
- package/tsconfig.json +5 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/src/external-link/stories/index.js +0 -23
- package/src/form-token-field/index.js +0 -725
- package/src/form-token-field/stories/index.js +0 -102
- package/src/form-token-field/token-input.js +0 -81
- package/src/radio-control/index.js +0 -69
- package/src/radio-control/stories/index.js +0 -41
- package/src/tree-select/index.js +0 -48
- package/src/tree-select/stories/index.js +0 -80
- package/src/z-stack/stories/index.js +0 -70
|
@@ -5,10 +5,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
+
exports.FormTokenField = FormTokenField;
|
|
8
9
|
exports.default = void 0;
|
|
9
10
|
|
|
10
11
|
var _element = require("@wordpress/element");
|
|
11
12
|
|
|
13
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
14
|
+
|
|
12
15
|
var _lodash = require("lodash");
|
|
13
16
|
|
|
14
17
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
@@ -17,6 +20,8 @@ var _i18n = require("@wordpress/i18n");
|
|
|
17
20
|
|
|
18
21
|
var _compose = require("@wordpress/compose");
|
|
19
22
|
|
|
23
|
+
var _a11y = require("@wordpress/a11y");
|
|
24
|
+
|
|
20
25
|
var _keycodes = require("@wordpress/keycodes");
|
|
21
26
|
|
|
22
27
|
var _isShallowEqual = _interopRequireDefault(require("@wordpress/is-shallow-equal"));
|
|
@@ -27,8 +32,6 @@ var _tokenInput = _interopRequireDefault(require("./token-input"));
|
|
|
27
32
|
|
|
28
33
|
var _suggestionsList = _interopRequireDefault(require("./suggestions-list"));
|
|
29
34
|
|
|
30
|
-
var _withSpokenMessages = _interopRequireDefault(require("../higher-order/with-spoken-messages"));
|
|
31
|
-
|
|
32
35
|
/**
|
|
33
36
|
* External dependencies
|
|
34
37
|
*/
|
|
@@ -40,154 +43,174 @@ var _withSpokenMessages = _interopRequireDefault(require("../higher-order/with-s
|
|
|
40
43
|
/**
|
|
41
44
|
* Internal dependencies
|
|
42
45
|
*/
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* A `FormTokenField` is a field similar to the tags and categories fields in the interim editor chrome,
|
|
49
|
+
* or the "to" field in Mail on OS X. Tokens can be entered by typing them or selecting them from a list of suggested tokens.
|
|
50
|
+
*
|
|
51
|
+
* Up to one hundred suggestions that match what the user has typed so far will be shown from which the user can pick from (auto-complete).
|
|
52
|
+
* Tokens are separated by the "," character. Suggestions can be selected with the up or down arrows and added with the tab or enter key.
|
|
53
|
+
*
|
|
54
|
+
* The `value` property is handled in a manner similar to controlled form components.
|
|
55
|
+
* See [Forms](http://facebook.github.io/react/docs/forms.html) in the React Documentation for more information.
|
|
56
|
+
*/
|
|
57
|
+
function FormTokenField(props) {
|
|
58
|
+
const {
|
|
59
|
+
autoCapitalize,
|
|
60
|
+
autoComplete,
|
|
61
|
+
maxLength,
|
|
62
|
+
placeholder,
|
|
63
|
+
label = (0, _i18n.__)('Add item'),
|
|
64
|
+
className,
|
|
65
|
+
suggestions = [],
|
|
66
|
+
maxSuggestions = 100,
|
|
67
|
+
value = [],
|
|
68
|
+
displayTransform = _lodash.identity,
|
|
69
|
+
saveTransform = token => token.trim(),
|
|
70
|
+
onChange = () => {},
|
|
71
|
+
onInputChange = () => {},
|
|
72
|
+
onFocus = undefined,
|
|
73
|
+
isBorderless = false,
|
|
74
|
+
disabled = false,
|
|
75
|
+
tokenizeOnSpace = false,
|
|
76
|
+
messages = {
|
|
77
|
+
added: (0, _i18n.__)('Item added.'),
|
|
78
|
+
removed: (0, _i18n.__)('Item removed.'),
|
|
79
|
+
remove: (0, _i18n.__)('Remove item'),
|
|
80
|
+
__experimentalInvalid: (0, _i18n.__)('Invalid item')
|
|
81
|
+
},
|
|
82
|
+
__experimentalExpandOnFocus = false,
|
|
83
|
+
__experimentalValidateInput = () => true,
|
|
84
|
+
__experimentalShowHowTo = true
|
|
85
|
+
} = props;
|
|
86
|
+
const instanceId = (0, _compose.useInstanceId)(FormTokenField); // We reset to these initial values again in the onBlur
|
|
87
|
+
|
|
88
|
+
const [incompleteTokenValue, setIncompleteTokenValue] = (0, _element.useState)('');
|
|
89
|
+
const [inputOffsetFromEnd, setInputOffsetFromEnd] = (0, _element.useState)(0);
|
|
90
|
+
const [isActive, setIsActive] = (0, _element.useState)(false);
|
|
91
|
+
const [isExpanded, setIsExpanded] = (0, _element.useState)(false);
|
|
92
|
+
const [selectedSuggestionIndex, setSelectedSuggestionIndex] = (0, _element.useState)(-1);
|
|
93
|
+
const [selectedSuggestionScroll, setSelectedSuggestionScroll] = (0, _element.useState)(false);
|
|
94
|
+
const prevSuggestions = (0, _compose.usePrevious)(suggestions);
|
|
95
|
+
const prevValue = (0, _compose.usePrevious)(value);
|
|
96
|
+
const input = (0, _element.useRef)(null);
|
|
97
|
+
const tokensAndInput = (0, _element.useRef)(null);
|
|
98
|
+
const debouncedSpeak = (0, _compose.useDebounce)(_a11y.speak, 500);
|
|
99
|
+
(0, _element.useEffect)(() => {
|
|
75
100
|
// Make sure to focus the input when the isActive state is true.
|
|
76
|
-
if (
|
|
77
|
-
|
|
101
|
+
if (isActive && !hasFocus()) {
|
|
102
|
+
focus();
|
|
78
103
|
}
|
|
104
|
+
}, [isActive]);
|
|
105
|
+
(0, _element.useEffect)(() => {
|
|
106
|
+
const suggestionsDidUpdate = !(0, _isShallowEqual.default)(suggestions, prevSuggestions || []);
|
|
79
107
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
const suggestionsDidUpdate = !(0, _isShallowEqual.default)(suggestions, prevProps.suggestions);
|
|
108
|
+
if (suggestionsDidUpdate || value !== prevValue) {
|
|
109
|
+
updateSuggestions(suggestionsDidUpdate);
|
|
110
|
+
} // TODO: updateSuggestions() should first be refactored so its actual deps are clearer.
|
|
111
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
85
112
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
113
|
+
}, [suggestions, prevSuggestions, value, prevValue]);
|
|
114
|
+
(0, _element.useEffect)(() => {
|
|
115
|
+
updateSuggestions(); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
116
|
+
}, [incompleteTokenValue]);
|
|
117
|
+
|
|
118
|
+
if (disabled && isActive) {
|
|
119
|
+
setIsActive(false);
|
|
120
|
+
setIncompleteTokenValue('');
|
|
89
121
|
}
|
|
90
122
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
123
|
+
function focus() {
|
|
124
|
+
var _input$current;
|
|
95
125
|
|
|
96
|
-
|
|
97
|
-
isActive: false,
|
|
98
|
-
incompleteTokenValue: ''
|
|
99
|
-
};
|
|
126
|
+
(_input$current = input.current) === null || _input$current === void 0 ? void 0 : _input$current.focus();
|
|
100
127
|
}
|
|
101
128
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
129
|
+
function hasFocus() {
|
|
130
|
+
var _input$current2;
|
|
105
131
|
|
|
106
|
-
|
|
107
|
-
this.tokensAndInput = ref;
|
|
132
|
+
return input.current === ((_input$current2 = input.current) === null || _input$current2 === void 0 ? void 0 : _input$current2.ownerDocument.activeElement);
|
|
108
133
|
}
|
|
109
134
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
if (this.input.hasFocus() || event.target === this.tokensAndInput) {
|
|
116
|
-
this.setState({
|
|
117
|
-
isActive: true,
|
|
118
|
-
isExpanded: !!__experimentalExpandOnFocus || this.state.isExpanded
|
|
119
|
-
});
|
|
135
|
+
function onFocusHandler(event) {
|
|
136
|
+
// If focus is on the input or on the container, set the isActive state to true.
|
|
137
|
+
if (hasFocus() || event.target === tokensAndInput.current) {
|
|
138
|
+
setIsActive(true);
|
|
139
|
+
setIsExpanded(__experimentalExpandOnFocus || isExpanded);
|
|
120
140
|
} else {
|
|
121
141
|
/*
|
|
122
142
|
* Otherwise, focus is on one of the token "remove" buttons and we
|
|
123
143
|
* set the isActive state to false to prevent the input to be
|
|
124
144
|
* re-focused, see componentDidUpdate().
|
|
125
145
|
*/
|
|
126
|
-
|
|
127
|
-
isActive: false
|
|
128
|
-
});
|
|
146
|
+
setIsActive(false);
|
|
129
147
|
}
|
|
130
148
|
|
|
131
|
-
if ('function' === typeof
|
|
132
|
-
|
|
149
|
+
if ('function' === typeof onFocus) {
|
|
150
|
+
onFocus(event);
|
|
133
151
|
}
|
|
134
152
|
}
|
|
135
153
|
|
|
136
|
-
onBlur() {
|
|
137
|
-
if (
|
|
138
|
-
|
|
139
|
-
isActive: false
|
|
140
|
-
});
|
|
154
|
+
function onBlur() {
|
|
155
|
+
if (inputHasValidValue()) {
|
|
156
|
+
setIsActive(false);
|
|
141
157
|
} else {
|
|
142
|
-
|
|
158
|
+
// Reset to initial state
|
|
159
|
+
setIncompleteTokenValue('');
|
|
160
|
+
setInputOffsetFromEnd(0);
|
|
161
|
+
setIsActive(false);
|
|
162
|
+
setIsExpanded(false);
|
|
163
|
+
setSelectedSuggestionIndex(-1);
|
|
164
|
+
setSelectedSuggestionScroll(false);
|
|
143
165
|
}
|
|
144
166
|
}
|
|
145
167
|
|
|
146
|
-
onKeyDown(event) {
|
|
168
|
+
function onKeyDown(event) {
|
|
147
169
|
let preventDefault = false;
|
|
148
170
|
|
|
149
171
|
if (event.defaultPrevented) {
|
|
150
172
|
return;
|
|
151
|
-
}
|
|
173
|
+
} // TODO: replace to event.code;
|
|
174
|
+
|
|
152
175
|
|
|
153
176
|
switch (event.keyCode) {
|
|
154
177
|
case _keycodes.BACKSPACE:
|
|
155
|
-
preventDefault =
|
|
178
|
+
preventDefault = handleDeleteKey(deleteTokenBeforeInput);
|
|
156
179
|
break;
|
|
157
180
|
|
|
158
181
|
case _keycodes.ENTER:
|
|
159
|
-
preventDefault =
|
|
182
|
+
preventDefault = addCurrentToken();
|
|
160
183
|
break;
|
|
161
184
|
|
|
162
185
|
case _keycodes.LEFT:
|
|
163
|
-
preventDefault =
|
|
186
|
+
preventDefault = handleLeftArrowKey();
|
|
164
187
|
break;
|
|
165
188
|
|
|
166
189
|
case _keycodes.UP:
|
|
167
|
-
preventDefault =
|
|
190
|
+
preventDefault = handleUpArrowKey();
|
|
168
191
|
break;
|
|
169
192
|
|
|
170
193
|
case _keycodes.RIGHT:
|
|
171
|
-
preventDefault =
|
|
194
|
+
preventDefault = handleRightArrowKey();
|
|
172
195
|
break;
|
|
173
196
|
|
|
174
197
|
case _keycodes.DOWN:
|
|
175
|
-
preventDefault =
|
|
198
|
+
preventDefault = handleDownArrowKey();
|
|
176
199
|
break;
|
|
177
200
|
|
|
178
201
|
case _keycodes.DELETE:
|
|
179
|
-
preventDefault =
|
|
202
|
+
preventDefault = handleDeleteKey(deleteTokenAfterInput);
|
|
180
203
|
break;
|
|
181
204
|
|
|
182
205
|
case _keycodes.SPACE:
|
|
183
|
-
if (
|
|
184
|
-
preventDefault =
|
|
206
|
+
if (tokenizeOnSpace) {
|
|
207
|
+
preventDefault = addCurrentToken();
|
|
185
208
|
}
|
|
186
209
|
|
|
187
210
|
break;
|
|
188
211
|
|
|
189
212
|
case _keycodes.ESCAPE:
|
|
190
|
-
preventDefault =
|
|
213
|
+
preventDefault = handleEscapeKey(event);
|
|
191
214
|
break;
|
|
192
215
|
|
|
193
216
|
default:
|
|
@@ -199,13 +222,13 @@ class FormTokenField extends _element.Component {
|
|
|
199
222
|
}
|
|
200
223
|
}
|
|
201
224
|
|
|
202
|
-
onKeyPress(event) {
|
|
203
|
-
let preventDefault = false;
|
|
225
|
+
function onKeyPress(event) {
|
|
226
|
+
let preventDefault = false; // TODO: replace to event.code;
|
|
204
227
|
|
|
205
228
|
switch (event.charCode) {
|
|
206
229
|
case 44:
|
|
207
230
|
// Comma.
|
|
208
|
-
preventDefault =
|
|
231
|
+
preventDefault = handleCommaKey();
|
|
209
232
|
break;
|
|
210
233
|
|
|
211
234
|
default:
|
|
@@ -217,212 +240,201 @@ class FormTokenField extends _element.Component {
|
|
|
217
240
|
}
|
|
218
241
|
}
|
|
219
242
|
|
|
220
|
-
onContainerTouched(event) {
|
|
243
|
+
function onContainerTouched(event) {
|
|
221
244
|
// Prevent clicking/touching the tokensAndInput container from blurring
|
|
222
245
|
// the input and adding the current token.
|
|
223
|
-
if (event.target ===
|
|
246
|
+
if (event.target === tokensAndInput.current && isActive) {
|
|
224
247
|
event.preventDefault();
|
|
225
248
|
}
|
|
226
249
|
}
|
|
227
250
|
|
|
228
|
-
onTokenClickRemove(event) {
|
|
229
|
-
|
|
230
|
-
|
|
251
|
+
function onTokenClickRemove(event) {
|
|
252
|
+
deleteToken(event.value);
|
|
253
|
+
focus();
|
|
231
254
|
}
|
|
232
255
|
|
|
233
|
-
onSuggestionHovered(suggestion) {
|
|
234
|
-
const index =
|
|
256
|
+
function onSuggestionHovered(suggestion) {
|
|
257
|
+
const index = getMatchingSuggestions().indexOf(suggestion);
|
|
235
258
|
|
|
236
259
|
if (index >= 0) {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
selectedSuggestionScroll: false
|
|
240
|
-
});
|
|
260
|
+
setSelectedSuggestionIndex(index);
|
|
261
|
+
setSelectedSuggestionScroll(false);
|
|
241
262
|
}
|
|
242
263
|
}
|
|
243
264
|
|
|
244
|
-
onSuggestionSelected(suggestion) {
|
|
245
|
-
|
|
265
|
+
function onSuggestionSelected(suggestion) {
|
|
266
|
+
addNewToken(suggestion);
|
|
246
267
|
}
|
|
247
268
|
|
|
248
|
-
|
|
269
|
+
function onInputChangeHandler(event) {
|
|
249
270
|
const text = event.value;
|
|
250
|
-
const separator =
|
|
271
|
+
const separator = tokenizeOnSpace ? /[ ,\t]+/ : /[,\t]+/;
|
|
251
272
|
const items = text.split(separator);
|
|
252
273
|
const tokenValue = (0, _lodash.last)(items) || '';
|
|
253
274
|
|
|
254
275
|
if (items.length > 1) {
|
|
255
|
-
|
|
276
|
+
addNewTokens(items.slice(0, -1));
|
|
256
277
|
}
|
|
257
278
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
}, this.updateSuggestions);
|
|
261
|
-
this.props.onInputChange(tokenValue);
|
|
279
|
+
setIncompleteTokenValue(tokenValue);
|
|
280
|
+
onInputChange(tokenValue);
|
|
262
281
|
}
|
|
263
282
|
|
|
264
|
-
handleDeleteKey(
|
|
283
|
+
function handleDeleteKey(_deleteToken) {
|
|
265
284
|
let preventDefault = false;
|
|
266
285
|
|
|
267
|
-
if (
|
|
268
|
-
|
|
286
|
+
if (hasFocus() && isInputEmpty()) {
|
|
287
|
+
_deleteToken();
|
|
288
|
+
|
|
269
289
|
preventDefault = true;
|
|
270
290
|
}
|
|
271
291
|
|
|
272
292
|
return preventDefault;
|
|
273
293
|
}
|
|
274
294
|
|
|
275
|
-
handleLeftArrowKey() {
|
|
295
|
+
function handleLeftArrowKey() {
|
|
276
296
|
let preventDefault = false;
|
|
277
297
|
|
|
278
|
-
if (
|
|
279
|
-
|
|
298
|
+
if (isInputEmpty()) {
|
|
299
|
+
moveInputBeforePreviousToken();
|
|
280
300
|
preventDefault = true;
|
|
281
301
|
}
|
|
282
302
|
|
|
283
303
|
return preventDefault;
|
|
284
304
|
}
|
|
285
305
|
|
|
286
|
-
handleRightArrowKey() {
|
|
306
|
+
function handleRightArrowKey() {
|
|
287
307
|
let preventDefault = false;
|
|
288
308
|
|
|
289
|
-
if (
|
|
290
|
-
|
|
309
|
+
if (isInputEmpty()) {
|
|
310
|
+
moveInputAfterNextToken();
|
|
291
311
|
preventDefault = true;
|
|
292
312
|
}
|
|
293
313
|
|
|
294
314
|
return preventDefault;
|
|
295
315
|
}
|
|
296
316
|
|
|
297
|
-
handleUpArrowKey() {
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
317
|
+
function handleUpArrowKey() {
|
|
318
|
+
setSelectedSuggestionIndex(index => {
|
|
319
|
+
return (index === 0 ? getMatchingSuggestions(incompleteTokenValue, suggestions, value, maxSuggestions, saveTransform).length : index) - 1;
|
|
320
|
+
});
|
|
321
|
+
setSelectedSuggestionScroll(true);
|
|
302
322
|
return true; // PreventDefault.
|
|
303
323
|
}
|
|
304
324
|
|
|
305
|
-
handleDownArrowKey() {
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
325
|
+
function handleDownArrowKey() {
|
|
326
|
+
setSelectedSuggestionIndex(index => {
|
|
327
|
+
return (index + 1) % getMatchingSuggestions(incompleteTokenValue, suggestions, value, maxSuggestions, saveTransform).length;
|
|
328
|
+
});
|
|
329
|
+
setSelectedSuggestionScroll(true);
|
|
310
330
|
return true; // PreventDefault.
|
|
311
331
|
}
|
|
312
332
|
|
|
313
|
-
handleEscapeKey(event) {
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
}
|
|
333
|
+
function handleEscapeKey(event) {
|
|
334
|
+
if (event.target instanceof HTMLInputElement) {
|
|
335
|
+
setIncompleteTokenValue(event.target.value);
|
|
336
|
+
setIsExpanded(false);
|
|
337
|
+
setSelectedSuggestionIndex(-1);
|
|
338
|
+
setSelectedSuggestionScroll(false);
|
|
339
|
+
}
|
|
340
|
+
|
|
320
341
|
return true; // PreventDefault.
|
|
321
342
|
}
|
|
322
343
|
|
|
323
|
-
handleCommaKey() {
|
|
324
|
-
if (
|
|
325
|
-
|
|
344
|
+
function handleCommaKey() {
|
|
345
|
+
if (inputHasValidValue()) {
|
|
346
|
+
addNewToken(incompleteTokenValue);
|
|
326
347
|
}
|
|
327
348
|
|
|
328
349
|
return true; // PreventDefault.
|
|
329
350
|
}
|
|
330
351
|
|
|
331
|
-
moveInputToIndex(index) {
|
|
332
|
-
|
|
333
|
-
inputOffsetFromEnd: props.value.length - Math.max(index, -1) - 1
|
|
334
|
-
}));
|
|
352
|
+
function moveInputToIndex(index) {
|
|
353
|
+
setInputOffsetFromEnd(value.length - Math.max(index, -1) - 1);
|
|
335
354
|
}
|
|
336
355
|
|
|
337
|
-
moveInputBeforePreviousToken() {
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
})
|
|
356
|
+
function moveInputBeforePreviousToken() {
|
|
357
|
+
setInputOffsetFromEnd(prevInputOffsetFromEnd => {
|
|
358
|
+
return Math.min(prevInputOffsetFromEnd + 1, value.length);
|
|
359
|
+
});
|
|
341
360
|
}
|
|
342
361
|
|
|
343
|
-
moveInputAfterNextToken() {
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
})
|
|
362
|
+
function moveInputAfterNextToken() {
|
|
363
|
+
setInputOffsetFromEnd(prevInputOffsetFromEnd => {
|
|
364
|
+
return Math.max(prevInputOffsetFromEnd - 1, 0);
|
|
365
|
+
});
|
|
347
366
|
}
|
|
348
367
|
|
|
349
|
-
deleteTokenBeforeInput() {
|
|
350
|
-
const index =
|
|
368
|
+
function deleteTokenBeforeInput() {
|
|
369
|
+
const index = getIndexOfInput() - 1;
|
|
351
370
|
|
|
352
371
|
if (index > -1) {
|
|
353
|
-
|
|
372
|
+
deleteToken(value[index]);
|
|
354
373
|
}
|
|
355
374
|
}
|
|
356
375
|
|
|
357
|
-
deleteTokenAfterInput() {
|
|
358
|
-
const index =
|
|
376
|
+
function deleteTokenAfterInput() {
|
|
377
|
+
const index = getIndexOfInput();
|
|
359
378
|
|
|
360
|
-
if (index <
|
|
361
|
-
|
|
379
|
+
if (index < value.length) {
|
|
380
|
+
deleteToken(value[index]); // Update input offset since it's the offset from the last token.
|
|
362
381
|
|
|
363
|
-
|
|
382
|
+
moveInputToIndex(index);
|
|
364
383
|
}
|
|
365
384
|
}
|
|
366
385
|
|
|
367
|
-
addCurrentToken() {
|
|
386
|
+
function addCurrentToken() {
|
|
368
387
|
let preventDefault = false;
|
|
369
|
-
const selectedSuggestion =
|
|
388
|
+
const selectedSuggestion = getSelectedSuggestion();
|
|
370
389
|
|
|
371
390
|
if (selectedSuggestion) {
|
|
372
|
-
|
|
391
|
+
addNewToken(selectedSuggestion);
|
|
373
392
|
preventDefault = true;
|
|
374
|
-
} else if (
|
|
375
|
-
|
|
393
|
+
} else if (inputHasValidValue()) {
|
|
394
|
+
addNewToken(incompleteTokenValue);
|
|
376
395
|
preventDefault = true;
|
|
377
396
|
}
|
|
378
397
|
|
|
379
398
|
return preventDefault;
|
|
380
399
|
}
|
|
381
400
|
|
|
382
|
-
addNewTokens(tokens) {
|
|
383
|
-
const tokensToAdd = (0, _lodash.uniq)(tokens.map(
|
|
401
|
+
function addNewTokens(tokens) {
|
|
402
|
+
const tokensToAdd = (0, _lodash.uniq)(tokens.map(saveTransform).filter(Boolean).filter(token => !valueContainsToken(token)));
|
|
384
403
|
|
|
385
404
|
if (tokensToAdd.length > 0) {
|
|
386
|
-
const newValue = (0, _lodash.clone)(
|
|
387
|
-
newValue.splice
|
|
388
|
-
|
|
405
|
+
const newValue = (0, _lodash.clone)(value);
|
|
406
|
+
newValue.splice(getIndexOfInput(), 0, ...tokensToAdd);
|
|
407
|
+
onChange(newValue);
|
|
389
408
|
}
|
|
390
409
|
}
|
|
391
410
|
|
|
392
|
-
addNewToken(token) {
|
|
393
|
-
const {
|
|
394
|
-
__experimentalExpandOnFocus,
|
|
395
|
-
__experimentalValidateInput
|
|
396
|
-
} = this.props;
|
|
397
|
-
|
|
411
|
+
function addNewToken(token) {
|
|
398
412
|
if (!__experimentalValidateInput(token)) {
|
|
399
|
-
|
|
413
|
+
(0, _a11y.speak)(messages.__experimentalInvalid, 'assertive');
|
|
400
414
|
return;
|
|
401
415
|
}
|
|
402
416
|
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
isExpanded: !__experimentalExpandOnFocus
|
|
410
|
-
});
|
|
417
|
+
addNewTokens([token]);
|
|
418
|
+
(0, _a11y.speak)(messages.added, 'assertive');
|
|
419
|
+
setIncompleteTokenValue('');
|
|
420
|
+
setSelectedSuggestionIndex(-1);
|
|
421
|
+
setSelectedSuggestionScroll(false);
|
|
422
|
+
setIsExpanded(!__experimentalExpandOnFocus);
|
|
411
423
|
|
|
412
|
-
if (
|
|
413
|
-
|
|
424
|
+
if (isActive) {
|
|
425
|
+
focus();
|
|
414
426
|
}
|
|
415
427
|
}
|
|
416
428
|
|
|
417
|
-
deleteToken(token) {
|
|
418
|
-
const newTokens =
|
|
419
|
-
return
|
|
429
|
+
function deleteToken(token) {
|
|
430
|
+
const newTokens = value.filter(item => {
|
|
431
|
+
return getTokenValue(item) !== getTokenValue(token);
|
|
420
432
|
});
|
|
421
|
-
|
|
422
|
-
|
|
433
|
+
onChange(newTokens);
|
|
434
|
+
(0, _a11y.speak)(messages.removed, 'assertive');
|
|
423
435
|
}
|
|
424
436
|
|
|
425
|
-
getTokenValue(token) {
|
|
437
|
+
function getTokenValue(token) {
|
|
426
438
|
if ('object' === typeof token) {
|
|
427
439
|
return token.value;
|
|
428
440
|
}
|
|
@@ -430,24 +442,39 @@ class FormTokenField extends _element.Component {
|
|
|
430
442
|
return token;
|
|
431
443
|
}
|
|
432
444
|
|
|
433
|
-
getMatchingSuggestions() {
|
|
434
|
-
let searchValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] :
|
|
435
|
-
|
|
436
|
-
let
|
|
437
|
-
|
|
438
|
-
let
|
|
439
|
-
|
|
445
|
+
function getMatchingSuggestions() {
|
|
446
|
+
let searchValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : incompleteTokenValue;
|
|
447
|
+
|
|
448
|
+
let _suggestions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : suggestions;
|
|
449
|
+
|
|
450
|
+
let _value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : value;
|
|
451
|
+
|
|
452
|
+
let _maxSuggestions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : maxSuggestions;
|
|
453
|
+
|
|
454
|
+
let _saveTransform = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : saveTransform;
|
|
455
|
+
|
|
456
|
+
let match = _saveTransform(searchValue);
|
|
457
|
+
|
|
440
458
|
const startsWithMatch = [];
|
|
441
459
|
const containsMatch = [];
|
|
442
460
|
|
|
461
|
+
const normalizedValue = _value.map(item => {
|
|
462
|
+
if (typeof item === 'string') {
|
|
463
|
+
return item;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
return item.value;
|
|
467
|
+
});
|
|
468
|
+
|
|
443
469
|
if (match.length === 0) {
|
|
444
|
-
|
|
470
|
+
_suggestions = (0, _lodash.difference)(_suggestions, normalizedValue);
|
|
445
471
|
} else {
|
|
446
472
|
match = match.toLocaleLowerCase();
|
|
447
|
-
|
|
473
|
+
|
|
474
|
+
_suggestions.forEach(suggestion => {
|
|
448
475
|
const index = suggestion.toLocaleLowerCase().indexOf(match);
|
|
449
476
|
|
|
450
|
-
if (
|
|
477
|
+
if (normalizedValue.indexOf(suggestion) === -1) {
|
|
451
478
|
if (index === 0) {
|
|
452
479
|
startsWithMatch.push(suggestion);
|
|
453
480
|
} else if (index > 0) {
|
|
@@ -455,62 +482,52 @@ class FormTokenField extends _element.Component {
|
|
|
455
482
|
}
|
|
456
483
|
}
|
|
457
484
|
});
|
|
458
|
-
|
|
485
|
+
|
|
486
|
+
_suggestions = startsWithMatch.concat(containsMatch);
|
|
459
487
|
}
|
|
460
488
|
|
|
461
|
-
return (0,
|
|
489
|
+
return _suggestions.slice(0, _maxSuggestions);
|
|
462
490
|
}
|
|
463
491
|
|
|
464
|
-
getSelectedSuggestion() {
|
|
465
|
-
if (
|
|
466
|
-
return
|
|
492
|
+
function getSelectedSuggestion() {
|
|
493
|
+
if (selectedSuggestionIndex !== -1) {
|
|
494
|
+
return getMatchingSuggestions()[selectedSuggestionIndex];
|
|
467
495
|
}
|
|
496
|
+
|
|
497
|
+
return undefined;
|
|
468
498
|
}
|
|
469
499
|
|
|
470
|
-
valueContainsToken(token) {
|
|
471
|
-
return (0, _lodash.some)(
|
|
472
|
-
return
|
|
500
|
+
function valueContainsToken(token) {
|
|
501
|
+
return (0, _lodash.some)(value, item => {
|
|
502
|
+
return getTokenValue(token) === getTokenValue(item);
|
|
473
503
|
});
|
|
474
504
|
}
|
|
475
505
|
|
|
476
|
-
getIndexOfInput() {
|
|
477
|
-
return
|
|
506
|
+
function getIndexOfInput() {
|
|
507
|
+
return value.length - inputOffsetFromEnd;
|
|
478
508
|
}
|
|
479
509
|
|
|
480
|
-
isInputEmpty() {
|
|
481
|
-
return
|
|
510
|
+
function isInputEmpty() {
|
|
511
|
+
return incompleteTokenValue.length === 0;
|
|
482
512
|
}
|
|
483
513
|
|
|
484
|
-
inputHasValidValue() {
|
|
485
|
-
return
|
|
514
|
+
function inputHasValidValue() {
|
|
515
|
+
return saveTransform(incompleteTokenValue).length > 0;
|
|
486
516
|
}
|
|
487
517
|
|
|
488
|
-
updateSuggestions() {
|
|
518
|
+
function updateSuggestions() {
|
|
489
519
|
let resetSelectedSuggestion = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
490
|
-
const {
|
|
491
|
-
__experimentalExpandOnFocus
|
|
492
|
-
} = this.props;
|
|
493
|
-
const {
|
|
494
|
-
incompleteTokenValue
|
|
495
|
-
} = this.state;
|
|
496
520
|
const inputHasMinimumChars = incompleteTokenValue.trim().length > 1;
|
|
497
|
-
const matchingSuggestions =
|
|
521
|
+
const matchingSuggestions = getMatchingSuggestions(incompleteTokenValue);
|
|
498
522
|
const hasMatchingSuggestions = matchingSuggestions.length > 0;
|
|
499
|
-
|
|
500
|
-
isExpanded: __experimentalExpandOnFocus || inputHasMinimumChars && hasMatchingSuggestions
|
|
501
|
-
};
|
|
523
|
+
setIsExpanded(__experimentalExpandOnFocus || inputHasMinimumChars && hasMatchingSuggestions);
|
|
502
524
|
|
|
503
525
|
if (resetSelectedSuggestion) {
|
|
504
|
-
|
|
505
|
-
|
|
526
|
+
setSelectedSuggestionIndex(-1);
|
|
527
|
+
setSelectedSuggestionScroll(false);
|
|
506
528
|
}
|
|
507
529
|
|
|
508
|
-
this.setState(newState);
|
|
509
|
-
|
|
510
530
|
if (inputHasMinimumChars) {
|
|
511
|
-
const {
|
|
512
|
-
debouncedSpeak
|
|
513
|
-
} = this.props;
|
|
514
531
|
const message = hasMatchingSuggestions ? (0, _i18n.sprintf)(
|
|
515
532
|
/* translators: %d: number of results. */
|
|
516
533
|
(0, _i18n._n)('%d result found, use up and down arrow keys to navigate.', '%d results found, use up and down arrow keys to navigate.', matchingSuggestions.length), matchingSuggestions.length) : (0, _i18n.__)('No results.');
|
|
@@ -518,150 +535,102 @@ class FormTokenField extends _element.Component {
|
|
|
518
535
|
}
|
|
519
536
|
}
|
|
520
537
|
|
|
521
|
-
renderTokensAndInput() {
|
|
522
|
-
const components = (0, _lodash.map)(
|
|
523
|
-
components.splice(
|
|
538
|
+
function renderTokensAndInput() {
|
|
539
|
+
const components = (0, _lodash.map)(value, renderToken);
|
|
540
|
+
components.splice(getIndexOfInput(), 0, renderInput());
|
|
524
541
|
return components;
|
|
525
542
|
}
|
|
526
543
|
|
|
527
|
-
renderToken(token, index, tokens) {
|
|
528
|
-
const
|
|
529
|
-
|
|
544
|
+
function renderToken(token, index, tokens) {
|
|
545
|
+
const _value = getTokenValue(token);
|
|
546
|
+
|
|
547
|
+
const status = typeof token !== 'string' ? token.status : undefined;
|
|
530
548
|
const termPosition = index + 1;
|
|
531
549
|
const termsCount = tokens.length;
|
|
532
550
|
return (0, _element.createElement)(_token.default, {
|
|
533
|
-
key: 'token-' +
|
|
534
|
-
value:
|
|
551
|
+
key: 'token-' + _value,
|
|
552
|
+
value: _value,
|
|
535
553
|
status: status,
|
|
536
|
-
title: token.title,
|
|
537
|
-
displayTransform:
|
|
538
|
-
onClickRemove:
|
|
539
|
-
isBorderless: token.isBorderless ||
|
|
540
|
-
onMouseEnter: token.onMouseEnter,
|
|
541
|
-
onMouseLeave: token.onMouseLeave,
|
|
542
|
-
disabled: 'error' !== status &&
|
|
543
|
-
messages:
|
|
554
|
+
title: typeof token !== 'string' ? token.title : undefined,
|
|
555
|
+
displayTransform: displayTransform,
|
|
556
|
+
onClickRemove: onTokenClickRemove,
|
|
557
|
+
isBorderless: typeof token !== 'string' && token.isBorderless || isBorderless,
|
|
558
|
+
onMouseEnter: typeof token !== 'string' ? token.onMouseEnter : undefined,
|
|
559
|
+
onMouseLeave: typeof token !== 'string' ? token.onMouseLeave : undefined,
|
|
560
|
+
disabled: 'error' !== status && disabled,
|
|
561
|
+
messages: messages,
|
|
544
562
|
termsCount: termsCount,
|
|
545
563
|
termPosition: termPosition
|
|
546
564
|
});
|
|
547
565
|
}
|
|
548
566
|
|
|
549
|
-
renderInput() {
|
|
550
|
-
const {
|
|
551
|
-
autoCapitalize,
|
|
552
|
-
autoComplete,
|
|
553
|
-
maxLength,
|
|
554
|
-
placeholder,
|
|
555
|
-
value,
|
|
556
|
-
instanceId
|
|
557
|
-
} = this.props;
|
|
558
|
-
let props = {
|
|
567
|
+
function renderInput() {
|
|
568
|
+
const inputProps = {
|
|
559
569
|
instanceId,
|
|
560
570
|
autoCapitalize,
|
|
561
571
|
autoComplete,
|
|
562
572
|
placeholder: value.length === 0 ? placeholder : '',
|
|
563
|
-
ref: this.bindInput,
|
|
564
573
|
key: 'input',
|
|
565
|
-
disabled: this.props.disabled,
|
|
566
|
-
value: this.state.incompleteTokenValue,
|
|
567
|
-
onBlur: this.onBlur,
|
|
568
|
-
isExpanded: this.state.isExpanded,
|
|
569
|
-
selectedSuggestionIndex: this.state.selectedSuggestionIndex
|
|
570
|
-
};
|
|
571
|
-
|
|
572
|
-
if (!(maxLength && value.length >= maxLength)) {
|
|
573
|
-
props = { ...props,
|
|
574
|
-
onChange: this.onInputChange
|
|
575
|
-
};
|
|
576
|
-
}
|
|
577
|
-
|
|
578
|
-
return (0, _element.createElement)(_tokenInput.default, props);
|
|
579
|
-
}
|
|
580
|
-
|
|
581
|
-
render() {
|
|
582
|
-
const {
|
|
583
574
|
disabled,
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
} = this.props;
|
|
589
|
-
const {
|
|
590
|
-
isExpanded
|
|
591
|
-
} = this.state;
|
|
592
|
-
const classes = (0, _classnames.default)(className, 'components-form-token-field__input-container', {
|
|
593
|
-
'is-active': this.state.isActive,
|
|
594
|
-
'is-disabled': disabled
|
|
595
|
-
});
|
|
596
|
-
let tokenFieldProps = {
|
|
597
|
-
className: 'components-form-token-field',
|
|
598
|
-
tabIndex: '-1'
|
|
575
|
+
value: incompleteTokenValue,
|
|
576
|
+
onBlur,
|
|
577
|
+
isExpanded,
|
|
578
|
+
selectedSuggestionIndex
|
|
599
579
|
};
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
onKeyDown: this.onKeyDown,
|
|
605
|
-
onKeyPress: this.onKeyPress,
|
|
606
|
-
onFocus: this.onFocus
|
|
607
|
-
});
|
|
608
|
-
} // Disable reason: There is no appropriate role which describes the
|
|
609
|
-
// input container intended accessible usability.
|
|
610
|
-
// TODO: Refactor click detection to use blur to stop propagation.
|
|
611
|
-
|
|
612
|
-
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
return (0, _element.createElement)("div", tokenFieldProps, (0, _element.createElement)("label", {
|
|
616
|
-
htmlFor: `components-form-token-input-${instanceId}`,
|
|
617
|
-
className: "components-form-token-field__label"
|
|
618
|
-
}, label), (0, _element.createElement)("div", {
|
|
619
|
-
ref: this.bindTokensAndInput,
|
|
620
|
-
className: classes,
|
|
621
|
-
tabIndex: "-1",
|
|
622
|
-
onMouseDown: this.onContainerTouched,
|
|
623
|
-
onTouchStart: this.onContainerTouched
|
|
624
|
-
}, this.renderTokensAndInput(), isExpanded && (0, _element.createElement)(_suggestionsList.default, {
|
|
625
|
-
instanceId: instanceId,
|
|
626
|
-
match: this.props.saveTransform(this.state.incompleteTokenValue),
|
|
627
|
-
displayTransform: this.props.displayTransform,
|
|
628
|
-
suggestions: matchingSuggestions,
|
|
629
|
-
selectedIndex: this.state.selectedSuggestionIndex,
|
|
630
|
-
scrollIntoView: this.state.selectedSuggestionScroll,
|
|
631
|
-
onHover: this.onSuggestionHovered,
|
|
632
|
-
onSelect: this.onSuggestionSelected
|
|
633
|
-
})), __experimentalShowHowTo && (0, _element.createElement)("p", {
|
|
634
|
-
id: `components-form-token-suggestions-howto-${instanceId}`,
|
|
635
|
-
className: "components-form-token-field__help"
|
|
636
|
-
}, this.props.tokenizeOnSpace ? (0, _i18n.__)('Separate with commas, spaces, or the Enter key.') : (0, _i18n.__)('Separate with commas or the Enter key.')));
|
|
637
|
-
/* eslint-enable jsx-a11y/no-static-element-interactions */
|
|
580
|
+
return (0, _element.createElement)(_tokenInput.default, (0, _extends2.default)({}, inputProps, {
|
|
581
|
+
onChange: !(maxLength && value.length >= maxLength) ? onInputChangeHandler : undefined,
|
|
582
|
+
ref: input
|
|
583
|
+
}));
|
|
638
584
|
}
|
|
639
585
|
|
|
586
|
+
const classes = (0, _classnames.default)(className, 'components-form-token-field__input-container', {
|
|
587
|
+
'is-active': isActive,
|
|
588
|
+
'is-disabled': disabled
|
|
589
|
+
});
|
|
590
|
+
let tokenFieldProps = {
|
|
591
|
+
className: 'components-form-token-field',
|
|
592
|
+
tabIndex: -1
|
|
593
|
+
};
|
|
594
|
+
const matchingSuggestions = getMatchingSuggestions();
|
|
595
|
+
|
|
596
|
+
if (!disabled) {
|
|
597
|
+
tokenFieldProps = Object.assign({}, tokenFieldProps, {
|
|
598
|
+
onKeyDown,
|
|
599
|
+
onKeyPress,
|
|
600
|
+
onFocus: onFocusHandler
|
|
601
|
+
});
|
|
602
|
+
} // Disable reason: There is no appropriate role which describes the
|
|
603
|
+
// input container intended accessible usability.
|
|
604
|
+
// TODO: Refactor click detection to use blur to stop propagation.
|
|
605
|
+
|
|
606
|
+
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
return (0, _element.createElement)("div", tokenFieldProps, (0, _element.createElement)("label", {
|
|
610
|
+
htmlFor: `components-form-token-input-${instanceId}`,
|
|
611
|
+
className: "components-form-token-field__label"
|
|
612
|
+
}, label), (0, _element.createElement)("div", {
|
|
613
|
+
ref: tokensAndInput,
|
|
614
|
+
className: classes,
|
|
615
|
+
tabIndex: -1,
|
|
616
|
+
onMouseDown: onContainerTouched,
|
|
617
|
+
onTouchStart: onContainerTouched
|
|
618
|
+
}, renderTokensAndInput(), isExpanded && (0, _element.createElement)(_suggestionsList.default, {
|
|
619
|
+
instanceId: instanceId,
|
|
620
|
+
match: saveTransform(incompleteTokenValue),
|
|
621
|
+
displayTransform: displayTransform,
|
|
622
|
+
suggestions: matchingSuggestions,
|
|
623
|
+
selectedIndex: selectedSuggestionIndex,
|
|
624
|
+
scrollIntoView: selectedSuggestionScroll,
|
|
625
|
+
onHover: onSuggestionHovered,
|
|
626
|
+
onSelect: onSuggestionSelected
|
|
627
|
+
})), __experimentalShowHowTo && (0, _element.createElement)("p", {
|
|
628
|
+
id: `components-form-token-suggestions-howto-${instanceId}`,
|
|
629
|
+
className: "components-form-token-field__help"
|
|
630
|
+
}, tokenizeOnSpace ? (0, _i18n.__)('Separate with commas, spaces, or the Enter key.') : (0, _i18n.__)('Separate with commas or the Enter key.')));
|
|
631
|
+
/* eslint-enable jsx-a11y/no-static-element-interactions */
|
|
640
632
|
}
|
|
641
633
|
|
|
642
|
-
|
|
643
|
-
suggestions: Object.freeze([]),
|
|
644
|
-
maxSuggestions: 100,
|
|
645
|
-
value: Object.freeze([]),
|
|
646
|
-
displayTransform: _lodash.identity,
|
|
647
|
-
saveTransform: token => token.trim(),
|
|
648
|
-
onChange: () => {},
|
|
649
|
-
onInputChange: () => {},
|
|
650
|
-
isBorderless: false,
|
|
651
|
-
disabled: false,
|
|
652
|
-
tokenizeOnSpace: false,
|
|
653
|
-
messages: {
|
|
654
|
-
added: (0, _i18n.__)('Item added.'),
|
|
655
|
-
removed: (0, _i18n.__)('Item removed.'),
|
|
656
|
-
remove: (0, _i18n.__)('Remove item'),
|
|
657
|
-
__experimentalInvalid: (0, _i18n.__)('Invalid item')
|
|
658
|
-
},
|
|
659
|
-
__experimentalExpandOnFocus: false,
|
|
660
|
-
__experimentalValidateInput: () => true,
|
|
661
|
-
__experimentalShowHowTo: true
|
|
662
|
-
};
|
|
663
|
-
|
|
664
|
-
var _default = (0, _withSpokenMessages.default)((0, _compose.withInstanceId)(FormTokenField));
|
|
665
|
-
|
|
634
|
+
var _default = FormTokenField;
|
|
666
635
|
exports.default = _default;
|
|
667
636
|
//# sourceMappingURL=index.js.map
|