baseui 10.9.2 → 10.11.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/a11y/a11y.js +1 -1
- package/a11y/a11y.js.flow +15 -18
- package/a11y/index.js.flow +1 -1
- package/a11y/types.js.flow +2 -2
- package/accordion/accordion.js +3 -2
- package/accordion/accordion.js.flow +18 -32
- package/accordion/index.js.flow +6 -6
- package/accordion/panel.js +1 -1
- package/accordion/panel.js.flow +24 -42
- package/accordion/stateful-panel-container.js.flow +7 -12
- package/accordion/stateful-panel.js.flow +3 -3
- package/accordion/stateless-accordion.js.flow +6 -6
- package/accordion/styled-components.js.flow +16 -16
- package/accordion/types.js.flow +9 -9
- package/app-nav-bar/app-nav-bar.js.flow +20 -36
- package/app-nav-bar/index.js.flow +3 -3
- package/app-nav-bar/mobile-menu.js +9 -13
- package/app-nav-bar/mobile-menu.js.flow +29 -62
- package/app-nav-bar/styled-components.js.flow +40 -44
- package/app-nav-bar/types.js.flow +11 -11
- package/app-nav-bar/user-menu.js +8 -9
- package/app-nav-bar/user-menu.js.flow +32 -57
- package/app-nav-bar/user-profile-tile.js.flow +12 -24
- package/app-nav-bar/utils.js.flow +9 -12
- package/aspect-ratio-box/aspect-ratio-box-body.js.flow +2 -2
- package/aspect-ratio-box/aspect-ratio-box.js +2 -2
- package/aspect-ratio-box/aspect-ratio-box.js.flow +11 -13
- package/aspect-ratio-box/index.js.flow +2 -2
- package/aspect-ratio-box/types.js.flow +1 -1
- package/avatar/avatar.js.flow +7 -21
- package/avatar/index.js.flow +1 -1
- package/avatar/styled-components.js.flow +7 -11
- package/avatar/types.js.flow +3 -3
- package/block/block.js +1 -1
- package/block/block.js.flow +8 -11
- package/block/index.js.flow +1 -1
- package/block/styled-components.js.flow +37 -36
- package/block/types.js.flow +3 -2
- package/breadcrumbs/breadcrumbs.js +3 -6
- package/breadcrumbs/breadcrumbs.js.flow +17 -35
- package/breadcrumbs/index.d.ts +1 -0
- package/breadcrumbs/index.js.flow +1 -1
- package/breadcrumbs/styled-components.js.flow +5 -5
- package/breadcrumbs/types.js.flow +3 -2
- package/button/button-internals.js.flow +7 -10
- package/button/button.js +2 -1
- package/button/button.js.flow +25 -36
- package/button/default-props.js.flow +1 -1
- package/button/index.d.ts +6 -0
- package/button/index.js.flow +2 -2
- package/button/styled-components.js +19 -5
- package/button/styled-components.js.flow +89 -82
- package/button/types.js.flow +13 -4
- package/button/utils.js +3 -1
- package/button/utils.js.flow +4 -2
- package/button-group/button-group.js +1 -1
- package/button-group/button-group.js.flow +15 -17
- package/button-group/index.d.ts +1 -0
- package/button-group/index.js.flow +6 -6
- package/button-group/stateful-button-group.js +5 -1
- package/button-group/stateful-button-group.js.flow +4 -3
- package/button-group/stateful-container.js.flow +14 -26
- package/button-group/styled-components.js.flow +5 -5
- package/button-group/types.js.flow +9 -12
- package/card/card.js.flow +12 -30
- package/card/index.js.flow +1 -1
- package/card/styled-components.js.flow +8 -8
- package/card/types.js.flow +3 -3
- package/checkbox/checkbox.js +2 -3
- package/checkbox/checkbox.js.flow +24 -39
- package/checkbox/index.d.ts +1 -0
- package/checkbox/index.js.flow +4 -4
- package/checkbox/stateful-checkbox-container.js.flow +14 -17
- package/checkbox/stateful-checkbox.js.flow +5 -5
- package/checkbox/styled-components.js.flow +27 -50
- package/checkbox/types.js.flow +26 -7
- package/combobox/combobox.js +4 -4
- package/combobox/combobox.js.flow +24 -36
- package/combobox/index.js.flow +2 -2
- package/combobox/styled-components.js.flow +23 -20
- package/combobox/types.js.flow +7 -5
- package/data-table/column-anchor.js.flow +8 -8
- package/data-table/column-boolean.js.flow +15 -20
- package/data-table/column-categorical.js.flow +26 -31
- package/data-table/column-custom.js +1 -0
- package/data-table/column-custom.js.flow +6 -10
- package/data-table/column-datetime.js +6 -6
- package/data-table/column-datetime.js.flow +66 -114
- package/data-table/column-numerical.js +320 -362
- package/data-table/column-numerical.js.flow +296 -306
- package/data-table/column-row-index.js.flow +3 -3
- package/data-table/column-string.js.flow +8 -8
- package/data-table/column.js +1 -0
- package/data-table/column.js.flow +7 -8
- package/data-table/constants.js +17 -11
- package/data-table/constants.js.flow +11 -8
- package/data-table/data-table.js +56 -53
- package/data-table/data-table.js.flow +89 -132
- package/data-table/filter-menu.js.flow +26 -37
- package/data-table/filter-shell.js +27 -4
- package/data-table/filter-shell.js.flow +38 -14
- package/data-table/header-cell.js.flow +112 -122
- package/data-table/index.js.flow +15 -24
- package/data-table/locale.js +4 -2
- package/data-table/locale.js.flow +6 -2
- package/data-table/measure-column-widths.js +83 -119
- package/data-table/measure-column-widths.js.flow +86 -114
- package/data-table/stateful-container.js.flow +13 -22
- package/data-table/stateful-data-table.js.flow +21 -27
- package/data-table/text-search.js.flow +3 -3
- package/data-table/types.js.flow +17 -20
- package/datepicker/calendar-header.js +4 -7
- package/datepicker/calendar-header.js.flow +105 -174
- package/datepicker/calendar.js +2 -1
- package/datepicker/calendar.js.flow +99 -139
- package/datepicker/datepicker.js +1 -1
- package/datepicker/datepicker.js.flow +84 -159
- package/datepicker/day.js.flow +52 -86
- package/datepicker/index.js.flow +8 -10
- package/datepicker/month.js.flow +10 -14
- package/datepicker/stateful-calendar.js.flow +2 -2
- package/datepicker/stateful-container.js.flow +10 -13
- package/datepicker/stateful-datepicker.js.flow +2 -2
- package/datepicker/styled-components.js +2 -2
- package/datepicker/styled-components.js.flow +111 -150
- package/datepicker/types.js.flow +38 -38
- package/datepicker/utils/calendar-header-helpers.js.flow +5 -5
- package/datepicker/utils/date-fns-adapter.js.flow +1 -1
- package/datepicker/utils/date-helpers.js +1 -1
- package/datepicker/utils/date-helpers.js.flow +85 -127
- package/datepicker/utils/day-state.js.flow +1 -1
- package/datepicker/utils/index.js +1 -1
- package/datepicker/utils/index.js.flow +4 -5
- package/datepicker/utils/types.js.flow +2 -2
- package/datepicker/week.js.flow +8 -11
- package/dnd-list/index.js.flow +7 -6
- package/dnd-list/list.js.flow +18 -45
- package/dnd-list/stateful-list-container.js.flow +7 -10
- package/dnd-list/stateful-list.js.flow +3 -3
- package/dnd-list/styled-components.js.flow +36 -45
- package/dnd-list/types.js.flow +6 -6
- package/drawer/close-icon.js.flow +1 -1
- package/drawer/constants.js.flow +3 -2
- package/drawer/drawer.js +1 -1
- package/drawer/drawer.js.flow +26 -43
- package/drawer/index.js.flow +2 -2
- package/drawer/styled-components.js.flow +34 -47
- package/drawer/types.js.flow +5 -8
- package/es/a11y/a11y.js +1 -1
- package/es/accordion/accordion.js +2 -1
- package/es/accordion/panel.js +1 -1
- package/es/app-nav-bar/mobile-menu.js +9 -13
- package/es/app-nav-bar/user-menu.js +8 -9
- package/es/aspect-ratio-box/aspect-ratio-box.js +2 -2
- package/es/block/block.js +1 -1
- package/es/breadcrumbs/breadcrumbs.js +4 -7
- package/es/button/button.js +2 -1
- package/es/button/styled-components.js +20 -6
- package/es/button/utils.js +2 -0
- package/es/button-group/button-group.js +1 -1
- package/es/button-group/stateful-button-group.js +4 -1
- package/es/checkbox/checkbox.js +2 -3
- package/es/checkbox/stateful-checkbox-container.js +0 -3
- package/es/combobox/combobox.js +6 -8
- package/es/data-table/column-custom.js +1 -0
- package/es/data-table/column-datetime.js +6 -6
- package/es/data-table/column-numerical.js +252 -320
- package/es/data-table/column.js +1 -0
- package/es/data-table/constants.js +12 -8
- package/es/data-table/data-table.js +21 -19
- package/es/data-table/filter-shell.js +26 -4
- package/es/data-table/locale.js +4 -2
- package/es/data-table/measure-column-widths.js +75 -84
- package/es/datepicker/calendar-header.js +7 -10
- package/es/datepicker/calendar.js +3 -3
- package/es/datepicker/datepicker.js +1 -1
- package/es/datepicker/styled-components.js +2 -2
- package/es/datepicker/utils/date-helpers.js +1 -1
- package/es/datepicker/utils/index.js +1 -1
- package/es/drawer/drawer.js +1 -1
- package/es/flex-grid/flex-grid-item.js +6 -4
- package/es/flex-grid/flex-grid.js +7 -3
- package/es/form-control/form-control.js +4 -4
- package/es/heading/heading.js +1 -1
- package/es/helpers/overrides.js +13 -9
- package/es/icon/alert.js +18 -14
- package/es/icon/arrow-down.js +18 -14
- package/es/icon/arrow-left.js +18 -14
- package/es/icon/arrow-right.js +18 -14
- package/es/icon/arrow-up.js +18 -14
- package/es/icon/blank.js +14 -10
- package/es/icon/check-indeterminate.js +18 -14
- package/es/icon/check.js +18 -14
- package/es/icon/chevron-down.js +19 -15
- package/es/icon/chevron-left.js +18 -14
- package/es/icon/chevron-right.js +18 -14
- package/es/icon/chevron-up.js +19 -15
- package/es/icon/delete-alt.js +18 -14
- package/es/icon/delete.js +18 -14
- package/es/icon/filter.js +32 -28
- package/es/icon/grab.js +18 -14
- package/es/icon/hide.js +16 -12
- package/es/icon/menu.js +32 -28
- package/es/icon/omit-dollar-prefixed-keys.js +1 -1
- package/es/icon/overflow.js +26 -22
- package/es/icon/plus.js +18 -14
- package/es/icon/search.js +18 -14
- package/es/icon/show.js +16 -12
- package/es/icon/spinner.js +23 -19
- package/es/icon/triangle-down.js +16 -12
- package/es/icon/triangle-left.js +16 -12
- package/es/icon/triangle-right.js +16 -12
- package/es/icon/triangle-up.js +16 -12
- package/es/icon/upload.js +18 -14
- package/es/input/masked-input.js +1 -0
- package/es/input/stateful-container.js +0 -1
- package/es/input/styled-components.js +3 -2
- package/es/layer/layer.js +4 -3
- package/es/list/list-heading.js +3 -3
- package/es/list/list-item.js +1 -1
- package/es/list/menu-adapter.js +1 -2
- package/es/map-marker/fixed-marker.js +11 -5
- package/es/menu/maybe-child-menu.js +1 -2
- package/es/menu/menu.js +1 -1
- package/es/menu/option-profile.js +2 -0
- package/es/menu/stateful-container.js +3 -4
- package/es/menu/stateful-menu.js +4 -1
- package/es/menu/types.js +1 -1
- package/es/modal/modal-button.js +5 -1
- package/es/modal/modal.js +1 -3
- package/es/pagination/index.js +1 -1
- package/es/pagination/stateful-container.js +1 -0
- package/es/pagination/stateful-pagination.js +1 -0
- package/es/payment-card/payment-card.js +4 -1
- package/es/payment-card/styled-components.js +0 -1
- package/es/phone-input/base-country-picker.js +6 -8
- package/es/phone-input/country-picker.js +5 -8
- package/es/phone-input/country-select-dropdown.js +4 -2
- package/es/phone-input/country-select.js +5 -8
- package/es/phone-input/flag.js +2 -1
- package/es/phone-input/phone-input-lite.js +1 -2
- package/es/phone-input/phone-input-next.js +1 -2
- package/es/pin-code/pin-code.js +1 -2
- package/es/popover/popover.js +7 -7
- package/es/progress-bar/progressbar-rounded.js +25 -22
- package/es/progress-bar/progressbar.js +6 -3
- package/es/radio/radio.js +1 -1
- package/es/radio/radiogroup.js +1 -1
- package/es/rating/emoticon-rating.js +1 -1
- package/es/rating/star-rating.js +1 -1
- package/es/select/autosize-input.js +1 -2
- package/es/select/dropdown.js +2 -4
- package/es/select/multi-value.js +1 -1
- package/es/select/select-component.js +5 -4
- package/es/select/styled-components.js +1 -2
- package/es/select/value.js +1 -1
- package/es/slider/slider.js +2 -2
- package/es/snackbar/snackbar-element.js +4 -3
- package/es/snackbar/styled-components.js +1 -1
- package/es/spinner/spinner.js +22 -18
- package/es/spinner/styled-components.js +3 -2
- package/es/styles/__mocks__/styled.js +2 -1
- package/es/styles/styled.js +9 -7
- package/es/table/sortable-head-cell.js +1 -1
- package/es/table-semantic/styled-components.js +2 -1
- package/es/tabs/tabs.js +2 -2
- package/es/tag/styled-components.js +4 -8
- package/es/tag/tag.js +1 -1
- package/es/textarea/styled-components.js +9 -7
- package/es/textarea/textarea.js +2 -1
- package/es/timepicker/timepicker.js +2 -4
- package/es/timezonepicker/timezone-picker.js +3 -6
- package/es/timezonepicker/tzdata.js +6 -1
- package/es/timezonepicker/update-tzdata.js +9 -4
- package/es/toast/styled-components.js +30 -28
- package/es/toast/toaster.js +5 -7
- package/es/toast/types.js +0 -2
- package/es/tree-view/tree-label-interactable.js +8 -4
- package/es/tree-view/tree-label.js +5 -1
- package/es/tree-view/tree-node.js +1 -1
- package/es/tree-view/tree-view.js +6 -6
- package/es/typography/index.js +144 -36
- package/es/utils/deep-merge.js +2 -2
- package/es/utils/deprecated-component.js +5 -3
- package/esm/a11y/a11y.js +1 -1
- package/esm/accordion/accordion.js +3 -2
- package/esm/accordion/panel.js +1 -1
- package/esm/app-nav-bar/mobile-menu.js +9 -13
- package/esm/app-nav-bar/user-menu.js +8 -9
- package/esm/aspect-ratio-box/aspect-ratio-box.js +2 -2
- package/esm/block/block.js +1 -1
- package/esm/breadcrumbs/breadcrumbs.js +4 -7
- package/esm/button/button.js +2 -1
- package/esm/button/styled-components.js +19 -5
- package/esm/button/utils.js +3 -1
- package/esm/button-group/button-group.js +1 -1
- package/esm/button-group/stateful-button-group.js +5 -1
- package/esm/checkbox/checkbox.js +2 -3
- package/esm/combobox/combobox.js +4 -4
- package/esm/data-table/column-custom.js +1 -0
- package/esm/data-table/column-datetime.js +6 -6
- package/esm/data-table/column-numerical.js +317 -360
- package/esm/data-table/column.js +1 -0
- package/esm/data-table/constants.js +12 -8
- package/esm/data-table/data-table.js +56 -53
- package/esm/data-table/filter-shell.js +26 -4
- package/esm/data-table/locale.js +4 -2
- package/esm/data-table/measure-column-widths.js +83 -119
- package/esm/datepicker/calendar-header.js +7 -10
- package/esm/datepicker/calendar.js +2 -1
- package/esm/datepicker/datepicker.js +1 -1
- package/esm/datepicker/styled-components.js +2 -2
- package/esm/datepicker/utils/date-helpers.js +1 -1
- package/esm/datepicker/utils/index.js +1 -1
- package/esm/drawer/drawer.js +1 -1
- package/esm/flex-grid/flex-grid-item.js +5 -3
- package/esm/flex-grid/flex-grid.js +14 -9
- package/esm/form-control/form-control.js +4 -4
- package/esm/heading/heading.js +1 -1
- package/esm/helpers/overrides.js +13 -9
- package/esm/icon/alert.js +18 -14
- package/esm/icon/arrow-down.js +18 -14
- package/esm/icon/arrow-left.js +18 -14
- package/esm/icon/arrow-right.js +18 -14
- package/esm/icon/arrow-up.js +18 -14
- package/esm/icon/blank.js +14 -10
- package/esm/icon/check-indeterminate.js +18 -14
- package/esm/icon/check.js +18 -14
- package/esm/icon/chevron-down.js +19 -15
- package/esm/icon/chevron-left.js +18 -14
- package/esm/icon/chevron-right.js +18 -14
- package/esm/icon/chevron-up.js +19 -15
- package/esm/icon/delete-alt.js +18 -14
- package/esm/icon/delete.js +18 -14
- package/esm/icon/filter.js +32 -28
- package/esm/icon/grab.js +18 -14
- package/esm/icon/hide.js +16 -12
- package/esm/icon/menu.js +32 -28
- package/esm/icon/omit-dollar-prefixed-keys.js +1 -1
- package/esm/icon/overflow.js +26 -22
- package/esm/icon/plus.js +18 -14
- package/esm/icon/search.js +18 -14
- package/esm/icon/show.js +16 -12
- package/esm/icon/spinner.js +23 -19
- package/esm/icon/triangle-down.js +16 -12
- package/esm/icon/triangle-left.js +16 -12
- package/esm/icon/triangle-right.js +16 -12
- package/esm/icon/triangle-up.js +16 -12
- package/esm/icon/upload.js +18 -14
- package/esm/input/masked-input.js +1 -0
- package/esm/input/stateful-container.js +0 -1
- package/esm/input/styled-components.js +6 -2
- package/esm/layer/layer.js +4 -3
- package/esm/list/list-heading.js +3 -3
- package/esm/list/list-item.js +1 -1
- package/esm/list/menu-adapter.js +1 -2
- package/esm/map-marker/fixed-marker.js +11 -5
- package/esm/menu/maybe-child-menu.js +1 -2
- package/esm/menu/menu.js +1 -1
- package/esm/menu/option-profile.js +2 -0
- package/esm/menu/stateful-container.js +3 -4
- package/esm/menu/stateful-menu.js +9 -5
- package/esm/menu/types.js +1 -1
- package/esm/modal/modal-button.js +10 -5
- package/esm/modal/modal.js +1 -3
- package/esm/pagination/index.js +1 -1
- package/esm/pagination/stateful-container.js +1 -0
- package/esm/pagination/stateful-pagination.js +1 -0
- package/esm/payment-card/payment-card.js +25 -21
- package/esm/phone-input/base-country-picker.js +6 -8
- package/esm/phone-input/country-picker.js +5 -8
- package/esm/phone-input/country-select-dropdown.js +4 -2
- package/esm/phone-input/country-select.js +5 -8
- package/esm/phone-input/flag.js +2 -1
- package/esm/phone-input/phone-input-lite.js +1 -2
- package/esm/phone-input/phone-input-next.js +1 -2
- package/esm/pin-code/pin-code.js +1 -2
- package/esm/popover/popover.js +7 -7
- package/esm/progress-bar/progressbar-rounded.js +25 -22
- package/esm/progress-bar/progressbar.js +9 -5
- package/esm/radio/radio.js +3 -1
- package/esm/radio/radiogroup.js +1 -1
- package/esm/rating/emoticon-rating.js +1 -1
- package/esm/rating/star-rating.js +1 -1
- package/esm/select/autosize-input.js +1 -2
- package/esm/select/dropdown.js +1 -2
- package/esm/select/multi-value.js +1 -1
- package/esm/select/select-component.js +5 -4
- package/esm/select/styled-components.js +1 -2
- package/esm/select/value.js +1 -1
- package/esm/slider/slider.js +2 -2
- package/esm/snackbar/snackbar-element.js +4 -3
- package/esm/snackbar/styled-components.js +1 -1
- package/esm/spinner/spinner.js +22 -18
- package/esm/spinner/styled-components.js +0 -2
- package/esm/styles/__mocks__/styled.js +2 -1
- package/esm/styles/styled.js +9 -7
- package/esm/table/sortable-head-cell.js +1 -1
- package/esm/table-semantic/styled-components.js +2 -1
- package/esm/tabs/tabs.js +2 -2
- package/esm/tag/styled-components.js +4 -8
- package/esm/tag/tag.js +1 -1
- package/esm/textarea/styled-components.js +8 -7
- package/esm/textarea/textarea.js +2 -1
- package/esm/timepicker/timepicker.js +2 -4
- package/esm/timezonepicker/timezone-picker.js +3 -6
- package/esm/timezonepicker/tzdata.js +6 -1
- package/esm/timezonepicker/update-tzdata.js +11 -13
- package/esm/toast/styled-components.js +30 -19
- package/esm/toast/toaster.js +5 -7
- package/esm/toast/types.js +0 -2
- package/esm/tree-view/tree-label-interactable.js +12 -8
- package/esm/tree-view/tree-label.js +7 -3
- package/esm/tree-view/tree-node.js +1 -1
- package/esm/tree-view/tree-view.js +6 -6
- package/esm/typography/index.js +416 -272
- package/esm/utils/deep-merge.js +2 -2
- package/esm/utils/deprecated-component.js +5 -3
- package/file-uploader/file-uploader.js.flow +30 -60
- package/file-uploader/index.js.flow +1 -1
- package/file-uploader/styled-components.js.flow +9 -11
- package/file-uploader/types.js.flow +8 -10
- package/flex-grid/flex-grid-item.js +5 -3
- package/flex-grid/flex-grid-item.js.flow +31 -40
- package/flex-grid/flex-grid.js +14 -9
- package/flex-grid/flex-grid.js.flow +32 -31
- package/flex-grid/index.js.flow +2 -2
- package/flex-grid/types.js.flow +1 -1
- package/form-control/form-control.js +4 -4
- package/form-control/form-control.js.flow +16 -32
- package/form-control/index.js.flow +1 -1
- package/form-control/styled-components.js.flow +18 -21
- package/form-control/types.js.flow +2 -2
- package/header-navigation/header-navigation.js.flow +5 -10
- package/header-navigation/index.js.flow +2 -2
- package/header-navigation/styled-components.js.flow +38 -41
- package/header-navigation/types.js.flow +1 -1
- package/heading/heading-level.js.flow +3 -7
- package/heading/heading.js +1 -1
- package/heading/heading.js.flow +9 -23
- package/heading/index.js.flow +2 -2
- package/heading/types.js.flow +1 -1
- package/helper/constants.js.flow +1 -1
- package/helper/helper-steps.js.flow +8 -21
- package/helper/helper.js.flow +8 -8
- package/helper/index.js.flow +4 -4
- package/helper/stateful-helper.js.flow +5 -5
- package/helper/styled-components.js.flow +12 -24
- package/helpers/base-provider.js.flow +5 -5
- package/helpers/i18n-interpolation.js.flow +2 -2
- package/helpers/overrides.js +13 -9
- package/helpers/overrides.js.flow +40 -51
- package/helpers/react-helpers.js.flow +5 -5
- package/helpers/responsive-helpers.js.flow +2 -2
- package/helpers/strings.js.flow +1 -2
- package/helpers/types.js.flow +2 -2
- package/icon/alert.js +18 -14
- package/icon/alert.js.flow +7 -6
- package/icon/arrow-down.js +18 -14
- package/icon/arrow-down.js.flow +8 -14
- package/icon/arrow-left.js +18 -14
- package/icon/arrow-left.js.flow +8 -14
- package/icon/arrow-right.js +18 -14
- package/icon/arrow-right.js.flow +8 -14
- package/icon/arrow-up.js +18 -14
- package/icon/arrow-up.js.flow +8 -8
- package/icon/blank.js +14 -10
- package/icon/blank.js.flow +7 -6
- package/icon/build-icons.js.flow +13 -28
- package/icon/check-indeterminate.js +18 -14
- package/icon/check-indeterminate.js.flow +8 -15
- package/icon/check.js +18 -14
- package/icon/check.js.flow +7 -6
- package/icon/chevron-down.js +19 -15
- package/icon/chevron-down.js.flow +8 -8
- package/icon/chevron-left.js +18 -14
- package/icon/chevron-left.js.flow +8 -8
- package/icon/chevron-right.js +18 -14
- package/icon/chevron-right.js.flow +8 -10
- package/icon/chevron-up.js +19 -15
- package/icon/chevron-up.js.flow +8 -8
- package/icon/delete-alt.js +18 -14
- package/icon/delete-alt.js.flow +8 -14
- package/icon/delete.js +18 -14
- package/icon/delete.js.flow +7 -6
- package/icon/filter.js +32 -28
- package/icon/filter.js.flow +7 -6
- package/icon/grab.js +18 -14
- package/icon/grab.js.flow +7 -6
- package/icon/hide.js +16 -12
- package/icon/hide.js.flow +7 -6
- package/icon/icon-exports.js.flow +28 -28
- package/icon/icon.js.flow +4 -4
- package/icon/index.js.flow +2 -2
- package/icon/menu.js +32 -28
- package/icon/menu.js.flow +7 -6
- package/icon/omit-dollar-prefixed-keys.js +1 -1
- package/icon/omit-dollar-prefixed-keys.js.flow +2 -2
- package/icon/overflow.js +26 -22
- package/icon/overflow.js.flow +8 -8
- package/icon/plus.js +18 -14
- package/icon/plus.js.flow +7 -6
- package/icon/search.js +18 -14
- package/icon/search.js.flow +7 -6
- package/icon/show.js +16 -12
- package/icon/show.js.flow +7 -6
- package/icon/spinner.js +23 -19
- package/icon/spinner.js.flow +8 -8
- package/icon/styled-components.js.flow +13 -4
- package/icon/triangle-down.js +16 -12
- package/icon/triangle-down.js.flow +8 -16
- package/icon/triangle-left.js +16 -12
- package/icon/triangle-left.js.flow +8 -16
- package/icon/triangle-right.js +16 -12
- package/icon/triangle-right.js.flow +8 -16
- package/icon/triangle-up.js +16 -12
- package/icon/triangle-up.js.flow +8 -14
- package/icon/types.js.flow +1 -1
- package/icon/upload.js +18 -14
- package/icon/upload.js.flow +7 -6
- package/index.js.flow +5 -5
- package/input/base-input.js.flow +32 -57
- package/input/index.d.ts +1 -1
- package/input/index.js.flow +6 -11
- package/input/input.js.flow +13 -27
- package/input/masked-input.js +1 -0
- package/input/masked-input.js.flow +8 -7
- package/input/stateful-container.js +0 -1
- package/input/stateful-container.js.flow +6 -12
- package/input/stateful-input.js.flow +2 -2
- package/input/styled-components.js +6 -2
- package/input/styled-components.js.flow +78 -59
- package/input/types.js.flow +17 -18
- package/input/utils.js.flow +5 -5
- package/layer/index.js.flow +4 -4
- package/layer/layer.js +4 -3
- package/layer/layer.js.flow +19 -30
- package/layer/layers-manager.js.flow +25 -36
- package/layer/tether.js.flow +12 -14
- package/layer/types.js.flow +3 -3
- package/layer/utils.js.flow +2 -8
- package/layout-grid/cell.js.flow +5 -8
- package/layout-grid/grid.js.flow +11 -26
- package/layout-grid/index.js.flow +2 -2
- package/layout-grid/styled-components.js.flow +23 -38
- package/layout-grid/types.js.flow +3 -6
- package/link/index.js.flow +8 -8
- package/link/styled-components.js.flow +5 -7
- package/list/index.d.ts +4 -13
- package/list/index.js.flow +5 -5
- package/list/list-heading.js +3 -3
- package/list/list-heading.js.flow +76 -91
- package/list/list-item-label.js.flow +8 -12
- package/list/list-item.js +1 -1
- package/list/list-item.js.flow +64 -69
- package/list/menu-adapter.js +1 -2
- package/list/menu-adapter.js.flow +29 -36
- package/list/styled-components.js.flow +52 -60
- package/list/types.js.flow +11 -11
- package/list/utils.js.flow +3 -6
- package/locale/es_AR.js.flow +1 -2
- package/locale/index.js.flow +5 -10
- package/locale/types.js.flow +12 -12
- package/map-marker/badge-enhancer.js.flow +12 -27
- package/map-marker/constants.js.flow +3 -3
- package/map-marker/drag-shadow.js.flow +8 -23
- package/map-marker/fixed-marker.js +11 -5
- package/map-marker/fixed-marker.js.flow +21 -29
- package/map-marker/floating-marker.js.flow +9 -18
- package/map-marker/index.js.flow +2 -2
- package/map-marker/label-enhancer.js.flow +6 -9
- package/map-marker/needle.js.flow +6 -12
- package/map-marker/pin-head.js.flow +15 -38
- package/map-marker/styled-components.js.flow +45 -60
- package/map-marker/types.js.flow +9 -11
- package/menu/index.d.ts +2 -1
- package/menu/index.js.flow +7 -7
- package/menu/maybe-child-menu.js +1 -2
- package/menu/maybe-child-menu.js.flow +11 -14
- package/menu/menu.js +1 -1
- package/menu/menu.js.flow +17 -26
- package/menu/nested-menus.js.flow +21 -23
- package/menu/option-list.js.flow +16 -18
- package/menu/option-profile.js +2 -0
- package/menu/option-profile.js.flow +16 -30
- package/menu/stateful-container.js +3 -4
- package/menu/stateful-container.js.flow +42 -62
- package/menu/stateful-menu.js +9 -5
- package/menu/stateful-menu.js.flow +6 -5
- package/menu/styled-components.js.flow +47 -64
- package/menu/types.js.flow +30 -36
- package/menu/utils.js.flow +1 -1
- package/modal/close-icon.js.flow +2 -6
- package/modal/focus-once.js.flow +1 -1
- package/modal/index.js.flow +4 -4
- package/modal/modal-button.js +10 -5
- package/modal/modal-button.js.flow +10 -15
- package/modal/modal.js +1 -3
- package/modal/modal.js.flow +23 -40
- package/modal/styled-components.js.flow +18 -32
- package/modal/types.js.flow +6 -12
- package/notification/index.js.flow +2 -2
- package/notification/notification.js.flow +2 -2
- package/package.json +20 -15
- package/pagination/index.js +8 -8
- package/pagination/index.js.flow +8 -11
- package/pagination/pagination.js.flow +39 -62
- package/pagination/stateful-container.js +1 -0
- package/pagination/stateful-container.js.flow +14 -22
- package/pagination/stateful-pagination.js +1 -0
- package/pagination/stateful-pagination.js.flow +4 -6
- package/pagination/styled-components.js.flow +10 -14
- package/pagination/types.js.flow +12 -8
- package/payment-card/icons/amex.js.flow +2 -5
- package/payment-card/icons/dinersclub.js.flow +1 -1
- package/payment-card/icons/discover.js.flow +1 -1
- package/payment-card/icons/elo.js.flow +1 -1
- package/payment-card/icons/generic.js.flow +1 -1
- package/payment-card/icons/jcb.js.flow +4 -13
- package/payment-card/icons/maestro.js.flow +1 -1
- package/payment-card/icons/mastercard.js.flow +1 -1
- package/payment-card/icons/unionpay.js.flow +1 -1
- package/payment-card/icons/visa.js.flow +1 -1
- package/payment-card/index.js.flow +6 -6
- package/payment-card/payment-card.js +25 -21
- package/payment-card/payment-card.js.flow +16 -21
- package/payment-card/stateful-payment-card.js.flow +3 -2
- package/payment-card/styled-components.js.flow +5 -6
- package/payment-card/types.js.flow +2 -6
- package/payment-card/utils.js.flow +6 -18
- package/phone-input/base-country-picker.js +7 -8
- package/phone-input/base-country-picker.js.flow +27 -44
- package/phone-input/constants.js.flow +227 -227
- package/phone-input/country-picker.js +5 -8
- package/phone-input/country-picker.js.flow +19 -29
- package/phone-input/country-select-dropdown.js +3 -2
- package/phone-input/country-select-dropdown.js.flow +31 -43
- package/phone-input/country-select.js +5 -8
- package/phone-input/country-select.js.flow +13 -28
- package/phone-input/default-props.js.flow +2 -6
- package/phone-input/flag.js +2 -1
- package/phone-input/flag.js.flow +7 -6
- package/phone-input/flags/index.js.flow +241 -241
- package/phone-input/index.js.flow +10 -14
- package/phone-input/phone-input-lite.js +1 -2
- package/phone-input/phone-input-lite.js.flow +6 -7
- package/phone-input/phone-input-next.js +1 -2
- package/phone-input/phone-input-next.js.flow +13 -14
- package/phone-input/phone-input.js.flow +2 -2
- package/phone-input/stateful-phone-input-container.js.flow +4 -4
- package/phone-input/stateful-phone-input-next.js.flow +3 -5
- package/phone-input/stateful-phone-input.js.flow +1 -1
- package/phone-input/styled-components.js.flow +54 -59
- package/phone-input/types.js.flow +11 -16
- package/phone-input/utils.js.flow +2 -4
- package/pin-code/default-props.js.flow +1 -1
- package/pin-code/index.js.flow +4 -6
- package/pin-code/pin-code.js +1 -2
- package/pin-code/pin-code.js.flow +15 -28
- package/pin-code/stateful-pin-code-container.js.flow +6 -10
- package/pin-code/stateful-pin-code.js.flow +1 -1
- package/pin-code/styled-components.js.flow +19 -22
- package/pin-code/types.js.flow +6 -6
- package/popover/default-props.js.flow +2 -2
- package/popover/index.js.flow +3 -3
- package/popover/popover.js +7 -3
- package/popover/popover.js.flow +59 -75
- package/popover/stateful-container.js.flow +5 -8
- package/popover/stateful-popover.js.flow +4 -9
- package/popover/styled-components.js.flow +13 -26
- package/popover/types.js.flow +13 -28
- package/popover/utils.js.flow +9 -16
- package/progress-bar/index.d.ts +1 -0
- package/progress-bar/index.js.flow +3 -3
- package/progress-bar/progressbar-rounded.js +25 -22
- package/progress-bar/progressbar-rounded.js.flow +10 -7
- package/progress-bar/progressbar.js +9 -5
- package/progress-bar/progressbar.js.flow +20 -36
- package/progress-bar/styled-components.js.flow +98 -117
- package/progress-bar/types.js.flow +4 -7
- package/progress-steps/index.js.flow +3 -3
- package/progress-steps/numbered-step.js.flow +6 -15
- package/progress-steps/progress-steps.js.flow +7 -14
- package/progress-steps/step.js.flow +7 -20
- package/progress-steps/styled-components.js.flow +25 -29
- package/progress-steps/types.js.flow +2 -2
- package/radio/index.js.flow +5 -5
- package/radio/radio.js +3 -1
- package/radio/radio.js.flow +16 -19
- package/radio/radiogroup.js +1 -1
- package/radio/radiogroup.js.flow +19 -28
- package/radio/stateful-radiogroup-container.js.flow +7 -10
- package/radio/stateful-radiogroup.js.flow +4 -6
- package/radio/styled-components.js.flow +26 -32
- package/radio/types.js.flow +5 -4
- package/rating/emoticon-rating.js +1 -1
- package/rating/emoticon-rating.js.flow +26 -40
- package/rating/index.js.flow +2 -2
- package/rating/star-rating.js +1 -1
- package/rating/star-rating.js.flow +23 -34
- package/rating/styled-components.js.flow +8 -27
- package/rating/types.js.flow +4 -4
- package/select/autosize-input.js +1 -2
- package/select/autosize-input.js.flow +10 -18
- package/select/constants.js.flow +1 -1
- package/select/default-props.js.flow +1 -1
- package/select/dropdown.js +1 -2
- package/select/dropdown.js.flow +20 -35
- package/select/index.d.ts +19 -33
- package/select/index.js.flow +11 -13
- package/select/multi-select.js.flow +2 -4
- package/select/multi-value.js +1 -1
- package/select/multi-value.js.flow +6 -9
- package/select/select-component.js +5 -5
- package/select/select-component.js.flow +98 -175
- package/select/select.js.flow +1 -6
- package/select/single-select.js.flow +1 -1
- package/select/stateful-select-container.js.flow +5 -13
- package/select/stateful-select.js.flow +1 -1
- package/select/styled-components.js.flow +167 -218
- package/select/types.js.flow +15 -18
- package/select/utils/default-filter-options.js.flow +7 -8
- package/select/utils/index.js.flow +5 -12
- package/select/value.js +1 -1
- package/select/value.js.flow +5 -8
- package/side-navigation/index.js.flow +2 -2
- package/side-navigation/nav-item.js.flow +8 -13
- package/side-navigation/nav.js.flow +15 -35
- package/side-navigation/stateful-container.js.flow +10 -19
- package/side-navigation/stateful-nav.js.flow +2 -2
- package/side-navigation/styled-components.js.flow +16 -20
- package/side-navigation/types.js.flow +9 -9
- package/skeleton/index.js.flow +1 -1
- package/skeleton/skeleton.js.flow +4 -4
- package/skeleton/styled-components.js.flow +15 -18
- package/skeleton/types.js.flow +1 -1
- package/slider/index.js.flow +4 -3
- package/slider/slider.js +2 -2
- package/slider/slider.js.flow +19 -41
- package/slider/stateful-slider-container.js.flow +9 -12
- package/slider/stateful-slider.js.flow +2 -2
- package/slider/styled-components.js.flow +21 -21
- package/slider/types.js.flow +9 -13
- package/snackbar/index.js.flow +3 -3
- package/snackbar/snackbar-context.js.flow +16 -23
- package/snackbar/snackbar-element.js +4 -3
- package/snackbar/snackbar-element.js.flow +19 -32
- package/snackbar/styled-components.js +1 -1
- package/snackbar/styled-components.js.flow +19 -24
- package/snackbar/types.js.flow +6 -6
- package/spinner/index.js.flow +3 -2
- package/spinner/spinner.js +22 -18
- package/spinner/spinner.js.flow +10 -20
- package/spinner/styled-components.js +0 -2
- package/spinner/styled-components.js.flow +12 -11
- package/spinner/types.js.flow +3 -3
- package/styles/__mocks__/styled.js +1 -0
- package/styles/as-primary-export-hoc.js.flow +2 -2
- package/styles/index.js.flow +3 -3
- package/styles/styled.js +9 -7
- package/styles/styled.js.flow +35 -43
- package/styles/theme-provider.js.flow +6 -10
- package/styles/types.js.flow +2 -2
- package/styles/util.js.flow +17 -4
- package/table/filter.js.flow +12 -28
- package/table/index.d.ts +1 -0
- package/table/index.js.flow +4 -7
- package/table/sortable-head-cell.js +1 -1
- package/table/sortable-head-cell.js.flow +10 -13
- package/table/styled-components.js.flow +67 -79
- package/table/table.js.flow +2 -2
- package/table/types.js.flow +3 -2
- package/table-grid/index.js.flow +3 -7
- package/table-grid/sortable-head-cell.js.flow +2 -2
- package/table-grid/styled-components.js.flow +21 -23
- package/table-semantic/index.js.flow +4 -4
- package/table-semantic/styled-components.js +2 -1
- package/table-semantic/styled-components.js.flow +88 -125
- package/table-semantic/table-builder-column.js.flow +2 -4
- package/table-semantic/table-builder.js.flow +31 -70
- package/table-semantic/table.js.flow +13 -28
- package/table-semantic/types.js.flow +2 -2
- package/tabs/index.js.flow +4 -4
- package/tabs/stateful-tabs.js.flow +8 -24
- package/tabs/styled-components.js.flow +11 -11
- package/tabs/tab.js.flow +13 -16
- package/tabs/tabs.js +2 -2
- package/tabs/tabs.js.flow +17 -38
- package/tabs/types.js.flow +6 -6
- package/tabs-motion/stateful-tabs.js.flow +11 -24
- package/tabs-motion/styled-components.js.flow +59 -71
- package/tabs-motion/tab.js.flow +1 -1
- package/tabs-motion/tabs.js.flow +32 -62
- package/tabs-motion/types.js.flow +9 -9
- package/tabs-motion/utils.js.flow +6 -10
- package/tag/index.js.flow +2 -2
- package/tag/styled-components.js +4 -8
- package/tag/styled-components.js.flow +140 -146
- package/tag/tag.js +1 -1
- package/tag/tag.js.flow +13 -17
- package/tag/types.js.flow +2 -2
- package/tag/utils.js.flow +2 -2
- package/textarea/constants.js.flow +1 -1
- package/textarea/index.js.flow +5 -5
- package/textarea/stateful-container.js.flow +1 -0
- package/textarea/stateful-textarea.js.flow +1 -1
- package/textarea/styled-components.js +8 -7
- package/textarea/styled-components.js.flow +18 -15
- package/textarea/textarea.js +2 -1
- package/textarea/textarea.js.flow +11 -10
- package/textarea/types.js.flow +7 -5
- package/themes/dark-theme/borders.js.flow +1 -1
- package/themes/dark-theme/color-component-tokens.js.flow +2 -4
- package/themes/dark-theme/color-deprecated-semantic-tokens.js.flow +1 -1
- package/themes/dark-theme/color-semantic-tokens.js.flow +2 -2
- package/themes/dark-theme/color-tokens.js.flow +2 -2
- package/themes/dark-theme/create-dark-theme.js.flow +5 -7
- package/themes/dark-theme/dark-theme.js.flow +1 -1
- package/themes/dark-theme/primitives.js.flow +2 -2
- package/themes/index.js.flow +4 -4
- package/themes/light-theme/color-component-tokens.js.flow +2 -4
- package/themes/light-theme/color-deprecated-semantic-tokens.js.flow +2 -4
- package/themes/light-theme/color-semantic-tokens.js.flow +2 -2
- package/themes/light-theme/color-tokens.js.flow +2 -2
- package/themes/light-theme/create-light-theme.js.flow +5 -7
- package/themes/light-theme/light-theme.js.flow +1 -1
- package/themes/light-theme/primitives.js.flow +2 -2
- package/themes/move-theme/dark-theme-with-move.js.flow +3 -6
- package/themes/move-theme/light-theme-with-move.js.flow +3 -6
- package/themes/move-theme/typography.js.flow +28 -29
- package/themes/shared/animation.js.flow +1 -1
- package/themes/shared/borders.js.flow +1 -1
- package/themes/shared/breakpoints.js.flow +1 -1
- package/themes/shared/grid.js.flow +1 -1
- package/themes/shared/lighting.js.flow +1 -1
- package/themes/shared/media-query.js.flow +2 -2
- package/themes/shared/sizing.js.flow +1 -1
- package/themes/shared/typography.js.flow +20 -21
- package/themes/types.js.flow +3 -3
- package/timepicker/index.js.flow +1 -1
- package/timepicker/timepicker.js +2 -4
- package/timepicker/timepicker.js.flow +40 -73
- package/timepicker/types.js.flow +4 -4
- package/timezonepicker/index.js.flow +1 -1
- package/timezonepicker/timezone-picker.js +3 -6
- package/timezonepicker/timezone-picker.js.flow +27 -40
- package/timezonepicker/types.js.flow +5 -5
- package/timezonepicker/tzdata.js +6 -1
- package/timezonepicker/tzdata.js.flow +6 -1
- package/timezonepicker/update-tzdata.js +11 -13
- package/timezonepicker/update-tzdata.js.flow +11 -6
- package/toast/index.js.flow +3 -3
- package/toast/styled-components.js +30 -19
- package/toast/styled-components.js.flow +87 -74
- package/toast/toast.js.flow +25 -37
- package/toast/toaster.js +5 -7
- package/toast/toaster.js.flow +42 -65
- package/toast/types.js.flow +4 -5
- package/tokens/colors.js.flow +1 -1
- package/tokens/index.js.flow +1 -1
- package/tooltip/default-props.js.flow +2 -2
- package/tooltip/index.js.flow +4 -9
- package/tooltip/stateful-tooltip-container.js.flow +2 -2
- package/tooltip/stateful-tooltip.js.flow +3 -3
- package/tooltip/styled-components.js.flow +7 -11
- package/tooltip/tooltip.js.flow +5 -10
- package/tree-view/index.js.flow +5 -5
- package/tree-view/stateful-container.js.flow +12 -18
- package/tree-view/stateful-tree-view.js.flow +2 -2
- package/tree-view/styled-components.js.flow +25 -35
- package/tree-view/tree-label-interactable.js +12 -8
- package/tree-view/tree-label-interactable.js.flow +9 -9
- package/tree-view/tree-label.js +7 -3
- package/tree-view/tree-label.js.flow +12 -27
- package/tree-view/tree-node.js +1 -1
- package/tree-view/tree-node.js.flow +8 -9
- package/tree-view/tree-view.js +6 -6
- package/tree-view/tree-view.js.flow +17 -30
- package/tree-view/types.js.flow +6 -4
- package/tree-view/utils.js.flow +24 -55
- package/typography/index.js +416 -272
- package/typography/index.js.flow +388 -432
- package/utils/create-event.js.flow +1 -1
- package/utils/deep-merge.js +2 -2
- package/utils/deep-merge.js.flow +4 -7
- package/utils/deprecated-component.js +5 -3
- package/utils/deprecated-component.js.flow +7 -5
- package/utils/focusVisible.js.flow +26 -22
package/menu/menu.js.flow
CHANGED
|
@@ -6,25 +6,21 @@ LICENSE file in the root directory of this source tree.
|
|
|
6
6
|
*/
|
|
7
7
|
// @flow
|
|
8
8
|
import * as React from 'react';
|
|
9
|
-
import {LocaleContext} from '../locale/index.js';
|
|
9
|
+
import { LocaleContext } from '../locale/index.js';
|
|
10
10
|
// Components
|
|
11
|
-
import {
|
|
12
|
-
StyledList,
|
|
13
|
-
StyledEmptyState,
|
|
14
|
-
StyledOptgroupHeader,
|
|
15
|
-
} from './styled-components.js';
|
|
11
|
+
import { StyledList, StyledEmptyState, StyledOptgroupHeader } from './styled-components.js';
|
|
16
12
|
import OptionList from './option-list.js';
|
|
17
|
-
import {getOverrides} from '../helpers/overrides.js';
|
|
13
|
+
import { getOverrides } from '../helpers/overrides.js';
|
|
18
14
|
// Types
|
|
19
|
-
import type {StatelessMenuPropsT} from './types.js';
|
|
20
|
-
import type {LocaleT} from '../locale/types.js';
|
|
15
|
+
import type { StatelessMenuPropsT } from './types.js';
|
|
16
|
+
import type { LocaleT } from '../locale/types.js';
|
|
21
17
|
|
|
22
|
-
import {isFocusVisible, forkFocus, forkBlur} from '../utils/focusVisible.js';
|
|
18
|
+
import { isFocusVisible, forkFocus, forkBlur } from '../utils/focusVisible.js';
|
|
23
19
|
|
|
24
20
|
export default function Menu(props: StatelessMenuPropsT) {
|
|
25
21
|
const {
|
|
26
22
|
overrides = {},
|
|
27
|
-
ariaLabel = 'Menu',
|
|
23
|
+
'aria-label': ariaLabel = 'Menu',
|
|
28
24
|
rootRef = React.createRef(),
|
|
29
25
|
focusMenu = () => {},
|
|
30
26
|
unfocusMenu = () => {},
|
|
@@ -48,18 +44,13 @@ export default function Menu(props: StatelessMenuPropsT) {
|
|
|
48
44
|
|
|
49
45
|
const [List, listProps] = getOverrides(overrides.List, StyledList);
|
|
50
46
|
const [Option, optionProps] = getOverrides(overrides.Option, OptionList);
|
|
51
|
-
const [EmptyState, emptyStateProps] = getOverrides(
|
|
52
|
-
overrides.EmptyState,
|
|
53
|
-
StyledEmptyState,
|
|
54
|
-
);
|
|
47
|
+
const [EmptyState, emptyStateProps] = getOverrides(overrides.EmptyState, StyledEmptyState);
|
|
55
48
|
const [OptgroupHeader, optgroupHeaderProps] = getOverrides(
|
|
56
49
|
overrides.OptgroupHeader,
|
|
57
|
-
StyledOptgroupHeader
|
|
50
|
+
StyledOptgroupHeader
|
|
58
51
|
);
|
|
59
52
|
|
|
60
|
-
const groupedItems = Array.isArray(props.items)
|
|
61
|
-
? {__ungrouped: props.items}
|
|
62
|
-
: props.items;
|
|
53
|
+
const groupedItems = Array.isArray(props.items) ? { __ungrouped: props.items } : props.items;
|
|
63
54
|
const optgroups = Object.keys(groupedItems);
|
|
64
55
|
const [elements] = optgroups.reduce(
|
|
65
56
|
([els, itemIndex], optgroup) => {
|
|
@@ -67,12 +58,12 @@ export default function Menu(props: StatelessMenuPropsT) {
|
|
|
67
58
|
els.push(
|
|
68
59
|
<OptgroupHeader key={optgroup} {...optgroupHeaderProps}>
|
|
69
60
|
{optgroup}
|
|
70
|
-
</OptgroupHeader
|
|
61
|
+
</OptgroupHeader>
|
|
71
62
|
);
|
|
72
63
|
}
|
|
73
64
|
const groupItems = groupedItems[optgroup].map((item, index) => {
|
|
74
65
|
itemIndex = itemIndex + 1;
|
|
75
|
-
const {getRequiredItemProps = (item, index) => ({})} = props;
|
|
66
|
+
const { getRequiredItemProps = (item, index) => ({}) } = props;
|
|
76
67
|
|
|
77
68
|
const {
|
|
78
69
|
disabled,
|
|
@@ -102,10 +93,10 @@ export default function Menu(props: StatelessMenuPropsT) {
|
|
|
102
93
|
});
|
|
103
94
|
return [els.concat(groupItems), itemIndex];
|
|
104
95
|
},
|
|
105
|
-
[[], -1]
|
|
96
|
+
[[], -1]
|
|
106
97
|
);
|
|
107
98
|
|
|
108
|
-
const isEmpty = optgroups.every(optgroup => !groupedItems[optgroup].length);
|
|
99
|
+
const isEmpty = optgroups.every((optgroup) => !groupedItems[optgroup].length);
|
|
109
100
|
|
|
110
101
|
return (
|
|
111
102
|
<LocaleContext.Consumer>
|
|
@@ -118,9 +109,9 @@ export default function Menu(props: StatelessMenuPropsT) {
|
|
|
118
109
|
onMouseEnter={focusMenu}
|
|
119
110
|
onMouseLeave={handleMouseLeave}
|
|
120
111
|
onMouseOver={focusMenu}
|
|
121
|
-
onFocus={forkFocus({onFocus: focusMenu}, handleFocus)}
|
|
122
|
-
onBlur={forkBlur({onBlur: unfocusMenu}, handleBlur)}
|
|
123
|
-
onKeyDown={event => {
|
|
112
|
+
onFocus={forkFocus({ onFocus: focusMenu }, handleFocus)}
|
|
113
|
+
onBlur={forkBlur({ onBlur: unfocusMenu }, handleBlur)}
|
|
114
|
+
onKeyDown={(event) => {
|
|
124
115
|
if (props.isFocused) {
|
|
125
116
|
handleKeyDown(event);
|
|
126
117
|
}
|
|
@@ -9,7 +9,7 @@ LICENSE file in the root directory of this source tree.
|
|
|
9
9
|
|
|
10
10
|
import * as React from 'react';
|
|
11
11
|
|
|
12
|
-
import type {NestedMenuRefT, NestedMenuContextT} from './types.js';
|
|
12
|
+
import type { NestedMenuRefT, NestedMenuContextT } from './types.js';
|
|
13
13
|
|
|
14
14
|
type StateT = {
|
|
15
15
|
nestedMenuHoverIndex: number,
|
|
@@ -19,17 +19,15 @@ type PropsT = {
|
|
|
19
19
|
children: React.Node,
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
-
export const NestedMenuContext: React.Context<NestedMenuContextT> = React.createContext(
|
|
23
|
-
{
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
},
|
|
32
|
-
);
|
|
22
|
+
export const NestedMenuContext: React.Context<NestedMenuContextT> = React.createContext({
|
|
23
|
+
addMenuToNesting: () => {},
|
|
24
|
+
removeMenuFromNesting: () => {},
|
|
25
|
+
getParentMenu: () => {},
|
|
26
|
+
getChildMenu: () => {},
|
|
27
|
+
nestedMenuHoverIndex: -1,
|
|
28
|
+
isNestedMenuVisible: () => false,
|
|
29
|
+
mountRef: { current: null },
|
|
30
|
+
});
|
|
33
31
|
|
|
34
32
|
function isSame(a: ?HTMLElement, b: ?HTMLElement) {
|
|
35
33
|
if (!a || !b) {
|
|
@@ -40,20 +38,20 @@ function isSame(a: ?HTMLElement, b: ?HTMLElement) {
|
|
|
40
38
|
}
|
|
41
39
|
|
|
42
40
|
export default class NestedMenus extends React.Component<PropsT, StateT> {
|
|
43
|
-
state = {menus: [], nestedMenuHoverIndex: -1};
|
|
44
|
-
mountRef = (React.createRef(): {current: HTMLElement | null});
|
|
41
|
+
state = { menus: [], nestedMenuHoverIndex: -1 };
|
|
42
|
+
mountRef = (React.createRef(): { current: HTMLElement | null });
|
|
45
43
|
mouseLeaveTimeoueId = null;
|
|
46
44
|
|
|
47
45
|
handleMenuMouseLeave = (event: MouseEvent) => {
|
|
48
46
|
this.mouseLeaveTimeoueId = setTimeout(() => {
|
|
49
|
-
this.setState({nestedMenuHoverIndex: -1});
|
|
47
|
+
this.setState({ nestedMenuHoverIndex: -1 });
|
|
50
48
|
}, 200);
|
|
51
49
|
};
|
|
52
50
|
|
|
53
51
|
handleMenuMouseEnter = (event: MouseEvent) => {
|
|
54
52
|
if (__BROWSER__) {
|
|
55
53
|
clearTimeout(this.mouseLeaveTimeoueId);
|
|
56
|
-
const index = this.state.menus.findIndex(m => {
|
|
54
|
+
const index = this.state.menus.findIndex((m) => {
|
|
57
55
|
return (
|
|
58
56
|
m.current &&
|
|
59
57
|
event.currentTarget instanceof Node &&
|
|
@@ -61,7 +59,7 @@ export default class NestedMenus extends React.Component<PropsT, StateT> {
|
|
|
61
59
|
);
|
|
62
60
|
});
|
|
63
61
|
|
|
64
|
-
this.setState({nestedMenuHoverIndex: index});
|
|
62
|
+
this.setState({ nestedMenuHoverIndex: index });
|
|
65
63
|
}
|
|
66
64
|
};
|
|
67
65
|
|
|
@@ -74,14 +72,14 @@ export default class NestedMenus extends React.Component<PropsT, StateT> {
|
|
|
74
72
|
element.addEventListener('mouseenter', this.handleMenuMouseEnter);
|
|
75
73
|
element.addEventListener('mouseleave', this.handleMenuMouseLeave);
|
|
76
74
|
|
|
77
|
-
this.setState(state => {
|
|
78
|
-
return {menus: [...state.menus, ref]};
|
|
75
|
+
this.setState((state) => {
|
|
76
|
+
return { menus: [...state.menus, ref] };
|
|
79
77
|
});
|
|
80
78
|
}
|
|
81
79
|
};
|
|
82
80
|
|
|
83
81
|
removeMenuFromNesting = (ref: NestedMenuRefT) => {
|
|
84
|
-
this.setState(state => {
|
|
82
|
+
this.setState((state) => {
|
|
85
83
|
for (const r of this.state.menus) {
|
|
86
84
|
if (r.current && isSame(r.current, ref.current)) {
|
|
87
85
|
const element = r.current;
|
|
@@ -90,16 +88,16 @@ export default class NestedMenus extends React.Component<PropsT, StateT> {
|
|
|
90
88
|
}
|
|
91
89
|
}
|
|
92
90
|
|
|
93
|
-
const nextMenus = state.menus.filter(r => {
|
|
91
|
+
const nextMenus = state.menus.filter((r) => {
|
|
94
92
|
return r.current && !isSame(r.current, ref.current);
|
|
95
93
|
});
|
|
96
94
|
|
|
97
|
-
return {menus: nextMenus};
|
|
95
|
+
return { menus: nextMenus };
|
|
98
96
|
});
|
|
99
97
|
};
|
|
100
98
|
|
|
101
99
|
findMenuIndexByRef = (ref: NestedMenuRefT) => {
|
|
102
|
-
return this.state.menus.findIndex(r => isSame(r.current, ref.current));
|
|
100
|
+
return this.state.menus.findIndex((r) => isSame(r.current, ref.current));
|
|
103
101
|
};
|
|
104
102
|
|
|
105
103
|
getParentMenu = (ref: NestedMenuRefT): ?NestedMenuRefT => {
|
package/menu/option-list.js.flow
CHANGED
|
@@ -8,18 +8,21 @@ LICENSE file in the root directory of this source tree.
|
|
|
8
8
|
|
|
9
9
|
import * as React from 'react';
|
|
10
10
|
|
|
11
|
-
import {LocaleContext} from '../locale/index.js';
|
|
12
|
-
import {getOverrides} from '../helpers/overrides.js';
|
|
11
|
+
import { LocaleContext } from '../locale/index.js';
|
|
12
|
+
import { getOverrides } from '../helpers/overrides.js';
|
|
13
13
|
|
|
14
|
-
import {OPTION_LIST_SIZE} from './constants.js';
|
|
14
|
+
import { OPTION_LIST_SIZE } from './constants.js';
|
|
15
15
|
import MaybeChildMenu from './maybe-child-menu.js';
|
|
16
|
-
import {StyledListItem, StyledListItemAnchor} from './styled-components.js';
|
|
17
|
-
import type {OptionListPropsT} from './types.js';
|
|
16
|
+
import { StyledListItem, StyledListItemAnchor } from './styled-components.js';
|
|
17
|
+
import type { OptionListPropsT } from './types.js';
|
|
18
18
|
|
|
19
|
-
function OptionList(
|
|
19
|
+
function OptionList(
|
|
20
|
+
props: OptionListPropsT,
|
|
21
|
+
ref?: { current: null | HTMLElement, ... } | ((null | HTMLElement) => mixed)
|
|
22
|
+
) {
|
|
20
23
|
const {
|
|
21
24
|
getChildMenu,
|
|
22
|
-
getItemLabel = item => (item ? item.label : ''),
|
|
25
|
+
getItemLabel = (item) => (item ? item.label : ''),
|
|
23
26
|
item,
|
|
24
27
|
onClick = () => {},
|
|
25
28
|
onMouseEnter = () => {},
|
|
@@ -32,16 +35,13 @@ function OptionList(props: OptionListPropsT, ref: React.ElementRef<*>) {
|
|
|
32
35
|
...restProps
|
|
33
36
|
} = props;
|
|
34
37
|
|
|
35
|
-
const [ListItem, listItemProps] = getOverrides(
|
|
36
|
-
overrides.ListItem,
|
|
37
|
-
StyledListItem,
|
|
38
|
-
);
|
|
38
|
+
const [ListItem, listItemProps] = getOverrides(overrides.ListItem, StyledListItem);
|
|
39
39
|
const [ListItemAnchor, listItemAnchorProps] = getOverrides(
|
|
40
40
|
overrides.ListItemAnchor,
|
|
41
|
-
StyledListItemAnchor
|
|
41
|
+
StyledListItemAnchor
|
|
42
42
|
);
|
|
43
43
|
|
|
44
|
-
const getItem = item => {
|
|
44
|
+
const getItem = (item) => {
|
|
45
45
|
if (item.href && renderHrefAsAnchor) {
|
|
46
46
|
return (
|
|
47
47
|
<ListItemAnchor $item={item} href={item.href} {...listItemAnchorProps}>
|
|
@@ -55,7 +55,7 @@ function OptionList(props: OptionListPropsT, ref: React.ElementRef<*>) {
|
|
|
55
55
|
|
|
56
56
|
return (
|
|
57
57
|
<LocaleContext.Consumer>
|
|
58
|
-
{locale => (
|
|
58
|
+
{(locale) => (
|
|
59
59
|
<MaybeChildMenu
|
|
60
60
|
getChildMenu={getChildMenu}
|
|
61
61
|
isOpen={!!$isHighlighted}
|
|
@@ -68,9 +68,7 @@ function OptionList(props: OptionListPropsT, ref: React.ElementRef<*>) {
|
|
|
68
68
|
<ListItem
|
|
69
69
|
ref={ref}
|
|
70
70
|
aria-label={
|
|
71
|
-
getChildMenu && getChildMenu(item)
|
|
72
|
-
? locale.menu.parentMenuItemAriaLabel
|
|
73
|
-
: null
|
|
71
|
+
getChildMenu && getChildMenu(item) ? locale.menu.parentMenuItemAriaLabel : null
|
|
74
72
|
}
|
|
75
73
|
item={item}
|
|
76
74
|
onClick={onClick}
|
|
@@ -80,7 +78,7 @@ function OptionList(props: OptionListPropsT, ref: React.ElementRef<*>) {
|
|
|
80
78
|
{...restProps}
|
|
81
79
|
{...listItemProps}
|
|
82
80
|
>
|
|
83
|
-
{getItem({isHighlighted: $isHighlighted, ...item})}
|
|
81
|
+
{getItem({ isHighlighted: $isHighlighted, ...item })}
|
|
84
82
|
</ListItem>
|
|
85
83
|
</MaybeChildMenu>
|
|
86
84
|
)}
|
package/menu/option-profile.js
CHANGED
|
@@ -39,6 +39,7 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
|
|
|
39
39
|
|
|
40
40
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
41
41
|
|
|
42
|
+
// flowlint-next-line unclear-type:off
|
|
42
43
|
function OptionProfile(props, ref) {
|
|
43
44
|
var item = props.item,
|
|
44
45
|
getChildMenu = props.getChildMenu,
|
|
@@ -96,6 +97,7 @@ function OptionProfile(props, ref) {
|
|
|
96
97
|
body = _getProfileItemLabels.body;
|
|
97
98
|
|
|
98
99
|
return /*#__PURE__*/React.createElement(_maybeChildMenu.default, {
|
|
100
|
+
ref: ref,
|
|
99
101
|
getChildMenu: getChildMenu,
|
|
100
102
|
isOpen: !!$isHighlighted,
|
|
101
103
|
item: item,
|
|
@@ -18,11 +18,12 @@ import {
|
|
|
18
18
|
StyledProfileSubtitle,
|
|
19
19
|
StyledProfileBody,
|
|
20
20
|
} from './styled-components.js';
|
|
21
|
-
import {getOverrides} from '../helpers/overrides.js';
|
|
21
|
+
import { getOverrides } from '../helpers/overrides.js';
|
|
22
22
|
// Types
|
|
23
|
-
import type {OptionProfilePropsT} from './types.js';
|
|
23
|
+
import type { OptionProfilePropsT } from './types.js';
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
// flowlint-next-line unclear-type:off
|
|
26
|
+
function OptionProfile(props: OptionProfilePropsT, ref: React.ElementRef<any>) {
|
|
26
27
|
const {
|
|
27
28
|
item,
|
|
28
29
|
getChildMenu,
|
|
@@ -38,38 +39,33 @@ function OptionProfile(props: OptionProfilePropsT, ref: React.ElementRef<*>) {
|
|
|
38
39
|
|
|
39
40
|
const [ListItemProfile, listItemProfileProps] = getOverrides(
|
|
40
41
|
overrides.ListItemProfile,
|
|
41
|
-
StyledListItemProfile
|
|
42
|
+
StyledListItemProfile
|
|
42
43
|
);
|
|
43
44
|
const [ProfileImgContainer, profileImgContainerProps] = getOverrides(
|
|
44
45
|
overrides.ProfileImgContainer,
|
|
45
|
-
StyledProfileImgContainer
|
|
46
|
-
);
|
|
47
|
-
const [ProfileImg, profileImgProps] = getOverrides(
|
|
48
|
-
overrides.ProfileImg,
|
|
49
|
-
StyledProfileImg,
|
|
46
|
+
StyledProfileImgContainer
|
|
50
47
|
);
|
|
48
|
+
const [ProfileImg, profileImgProps] = getOverrides(overrides.ProfileImg, StyledProfileImg);
|
|
51
49
|
const [ProfileLabelsContainer, profileLabelsContainerProps] = getOverrides(
|
|
52
50
|
overrides.ProfileLabelsContainer,
|
|
53
|
-
StyledProfileLabelsContainer
|
|
51
|
+
StyledProfileLabelsContainer
|
|
54
52
|
);
|
|
55
53
|
const [ProfileTitle, profileTitleProps] = getOverrides(
|
|
56
54
|
overrides.ProfileTitle,
|
|
57
|
-
StyledProfileTitle
|
|
55
|
+
StyledProfileTitle
|
|
58
56
|
);
|
|
59
57
|
const [ProfileSubtitle, profileSubtitleProps] = getOverrides(
|
|
60
58
|
overrides.ProfileSubtitle,
|
|
61
|
-
StyledProfileSubtitle
|
|
62
|
-
);
|
|
63
|
-
const [ProfileBody, profileBodyProps] = getOverrides(
|
|
64
|
-
overrides.ProfileBody,
|
|
65
|
-
StyledProfileBody,
|
|
59
|
+
StyledProfileSubtitle
|
|
66
60
|
);
|
|
61
|
+
const [ProfileBody, profileBodyProps] = getOverrides(overrides.ProfileBody, StyledProfileBody);
|
|
67
62
|
|
|
68
63
|
const ItemImg = getProfileItemImg(item);
|
|
69
|
-
const {title, subtitle, body} = getProfileItemLabels(item);
|
|
64
|
+
const { title, subtitle, body } = getProfileItemLabels(item);
|
|
70
65
|
|
|
71
66
|
return (
|
|
72
67
|
<MaybeChildMenu
|
|
68
|
+
ref={ref}
|
|
73
69
|
getChildMenu={getChildMenu}
|
|
74
70
|
isOpen={!!$isHighlighted}
|
|
75
71
|
item={item}
|
|
@@ -82,11 +78,7 @@ function OptionProfile(props: OptionProfilePropsT, ref: React.ElementRef<*>) {
|
|
|
82
78
|
{ItemImg &&
|
|
83
79
|
(typeof ItemImg === 'string' ? (
|
|
84
80
|
// Render img src string wrapped with image component
|
|
85
|
-
<ProfileImg
|
|
86
|
-
src={ItemImg}
|
|
87
|
-
alt={getProfileItemImgText(item)}
|
|
88
|
-
{...profileImgProps}
|
|
89
|
-
/>
|
|
81
|
+
<ProfileImg src={ItemImg} alt={getProfileItemImgText(item)} {...profileImgProps} />
|
|
90
82
|
) : (
|
|
91
83
|
// Or just render the entire component user specified
|
|
92
84
|
<ItemImg {...profileImgProps} />
|
|
@@ -94,11 +86,7 @@ function OptionProfile(props: OptionProfilePropsT, ref: React.ElementRef<*>) {
|
|
|
94
86
|
</ProfileImgContainer>
|
|
95
87
|
<ProfileLabelsContainer {...profileLabelsContainerProps}>
|
|
96
88
|
{title && <ProfileTitle {...profileTitleProps}>{title}</ProfileTitle>}
|
|
97
|
-
{subtitle &&
|
|
98
|
-
<ProfileSubtitle {...profileSubtitleProps}>
|
|
99
|
-
{subtitle}
|
|
100
|
-
</ProfileSubtitle>
|
|
101
|
-
)}
|
|
89
|
+
{subtitle && <ProfileSubtitle {...profileSubtitleProps}>{subtitle}</ProfileSubtitle>}
|
|
102
90
|
{body && <ProfileBody {...profileBodyProps}>{body}</ProfileBody>}
|
|
103
91
|
</ProfileLabelsContainer>
|
|
104
92
|
</ListItemProfile>
|
|
@@ -106,9 +94,7 @@ function OptionProfile(props: OptionProfilePropsT, ref: React.ElementRef<*>) {
|
|
|
106
94
|
);
|
|
107
95
|
}
|
|
108
96
|
|
|
109
|
-
const forwarded = React.forwardRef<OptionProfilePropsT, HTMLElement>(
|
|
110
|
-
OptionProfile,
|
|
111
|
-
);
|
|
97
|
+
const forwarded = React.forwardRef<OptionProfilePropsT, HTMLElement>(OptionProfile);
|
|
112
98
|
forwarded.displayName = 'OptionProfile';
|
|
113
99
|
|
|
114
100
|
export default forwarded;
|
|
@@ -374,9 +374,7 @@ var MenuStatefulContainerInner = /*#__PURE__*/function (_React$Component) {
|
|
|
374
374
|
var rootRef = this.props.rootRef ? this.props.rootRef : this.rootRef;
|
|
375
375
|
|
|
376
376
|
if (typeof document !== 'undefined') {
|
|
377
|
-
if (rootRef.current
|
|
378
|
-
/** This condition added to satisfy Flow */
|
|
379
|
-
&& this.state.highlightedIndex > -1 && this.refList[this.state.highlightedIndex]) {
|
|
377
|
+
if (rootRef.current && this.state.highlightedIndex > -1 && this.refList[this.state.highlightedIndex]) {
|
|
380
378
|
(0, _utils.scrollItemIntoView)(this.refList[this.state.highlightedIndex].current, rootRef.current, this.state.highlightedIndex === 0, this.state.highlightedIndex === this.getItems().length - 1, 'center');
|
|
381
379
|
}
|
|
382
380
|
|
|
@@ -436,7 +434,7 @@ var MenuStatefulContainerInner = /*#__PURE__*/function (_React$Component) {
|
|
|
436
434
|
highlightedIndex: -1
|
|
437
435
|
});
|
|
438
436
|
}
|
|
439
|
-
} // One array to hold all
|
|
437
|
+
} // One array to hold all list item refs
|
|
440
438
|
|
|
441
439
|
}, {
|
|
442
440
|
key: "internalSetState",
|
|
@@ -492,6 +490,7 @@ var MenuStatefulContainerInner = /*#__PURE__*/function (_React$Component) {
|
|
|
492
490
|
_defineProperty(MenuStatefulContainerInner, "defaultProps", DEFAULT_PROPS);
|
|
493
491
|
|
|
494
492
|
var MenuStatefulContainer = function MenuStatefulContainer(props) {
|
|
493
|
+
//$FlowExpectedError[cannot-spread-inexact]
|
|
495
494
|
return /*#__PURE__*/React.createElement(MenuStatefulContainerInner, _extends({
|
|
496
495
|
uidSeed: (0, _reactUid.useUIDSeed)()
|
|
497
496
|
}, props));
|
|
@@ -7,8 +7,8 @@ LICENSE file in the root directory of this source tree.
|
|
|
7
7
|
// @flow
|
|
8
8
|
import * as React from 'react';
|
|
9
9
|
// Files
|
|
10
|
-
import {STATE_CHANGE_TYPES, KEY_STRINGS} from './constants.js';
|
|
11
|
-
import {scrollItemIntoView} from './utils.js';
|
|
10
|
+
import { STATE_CHANGE_TYPES, KEY_STRINGS } from './constants.js';
|
|
11
|
+
import { scrollItemIntoView } from './utils.js';
|
|
12
12
|
// Types
|
|
13
13
|
import type {
|
|
14
14
|
StatefulContainerPropsT,
|
|
@@ -16,8 +16,9 @@ import type {
|
|
|
16
16
|
GetRequiredItemPropsFnT,
|
|
17
17
|
RenderPropsT,
|
|
18
18
|
StateReducerFnT,
|
|
19
|
+
ItemT,
|
|
19
20
|
} from './types.js';
|
|
20
|
-
import {useUIDSeed} from 'react-uid';
|
|
21
|
+
import { useUIDSeed } from 'react-uid';
|
|
21
22
|
|
|
22
23
|
const DEFAULT_PROPS = {
|
|
23
24
|
// keeping it in defaultProps to satisfy Flow
|
|
@@ -27,7 +28,7 @@ const DEFAULT_PROPS = {
|
|
|
27
28
|
isFocused: false,
|
|
28
29
|
},
|
|
29
30
|
typeAhead: true,
|
|
30
|
-
keyboardControlNode: {current: null},
|
|
31
|
+
keyboardControlNode: ({ current: null }: { current: null | HTMLElement }),
|
|
31
32
|
stateReducer: ((changeType, changes) => changes: StateReducerFnT),
|
|
32
33
|
onItemSelect: () => {},
|
|
33
34
|
getRequiredItemProps: () => ({}),
|
|
@@ -43,8 +44,10 @@ const DEFAULT_PROPS = {
|
|
|
43
44
|
};
|
|
44
45
|
|
|
45
46
|
class MenuStatefulContainerInner extends React.Component<
|
|
46
|
-
StatefulContainerPropsT & {uidSeed: (item: number) => string}
|
|
47
|
-
|
|
47
|
+
StatefulContainerPropsT & { uidSeed: (item: number) => string } & {
|
|
48
|
+
getRequiredItemProps: GetRequiredItemPropsFnT,
|
|
49
|
+
},
|
|
50
|
+
StatefulContainerStateT
|
|
48
51
|
> {
|
|
49
52
|
static defaultProps = DEFAULT_PROPS;
|
|
50
53
|
|
|
@@ -55,7 +58,7 @@ class MenuStatefulContainerInner extends React.Component<
|
|
|
55
58
|
|
|
56
59
|
// We need to have access to the root component user renders
|
|
57
60
|
// to correctly facilitate keyboard scrolling behavior
|
|
58
|
-
rootRef = (React.createRef(): {current:
|
|
61
|
+
rootRef = (React.createRef<HTMLElement>(): { current: null | HTMLElement });
|
|
59
62
|
keyboardControlNode = this.props.keyboardControlNode.current;
|
|
60
63
|
getItems() {
|
|
61
64
|
if (Array.isArray(this.props.items)) {
|
|
@@ -72,7 +75,7 @@ class MenuStatefulContainerInner extends React.Component<
|
|
|
72
75
|
const rootRef = this.props.rootRef ? this.props.rootRef : this.rootRef;
|
|
73
76
|
if (__BROWSER__) {
|
|
74
77
|
if (
|
|
75
|
-
rootRef.current
|
|
78
|
+
rootRef.current &&
|
|
76
79
|
this.state.highlightedIndex > -1 &&
|
|
77
80
|
this.refList[this.state.highlightedIndex]
|
|
78
81
|
) {
|
|
@@ -81,7 +84,7 @@ class MenuStatefulContainerInner extends React.Component<
|
|
|
81
84
|
rootRef.current,
|
|
82
85
|
this.state.highlightedIndex === 0,
|
|
83
86
|
this.state.highlightedIndex === this.getItems().length - 1,
|
|
84
|
-
'center'
|
|
87
|
+
'center'
|
|
85
88
|
);
|
|
86
89
|
}
|
|
87
90
|
|
|
@@ -107,28 +110,18 @@ class MenuStatefulContainerInner extends React.Component<
|
|
|
107
110
|
}
|
|
108
111
|
}
|
|
109
112
|
|
|
110
|
-
componentDidUpdate(
|
|
111
|
-
prevProps: StatefulContainerPropsT,
|
|
112
|
-
prevState: StatefulContainerStateT,
|
|
113
|
-
) {
|
|
113
|
+
componentDidUpdate(prevProps: StatefulContainerPropsT, prevState: StatefulContainerStateT) {
|
|
114
114
|
if (__BROWSER__) {
|
|
115
115
|
if (!prevState.isFocused && this.state.isFocused) {
|
|
116
116
|
if (this.keyboardControlNode)
|
|
117
117
|
this.keyboardControlNode.addEventListener('keydown', this.onKeyDown);
|
|
118
118
|
} else if (prevState.isFocused && !this.state.isFocused) {
|
|
119
119
|
if (this.keyboardControlNode)
|
|
120
|
-
this.keyboardControlNode.removeEventListener(
|
|
121
|
-
'keydown',
|
|
122
|
-
this.onKeyDown,
|
|
123
|
-
);
|
|
120
|
+
this.keyboardControlNode.removeEventListener('keydown', this.onKeyDown);
|
|
124
121
|
}
|
|
125
122
|
}
|
|
126
123
|
var range = this.getItems().length;
|
|
127
|
-
if (
|
|
128
|
-
this.props.forceHighlight &&
|
|
129
|
-
this.state.highlightedIndex === -1 &&
|
|
130
|
-
range > 0
|
|
131
|
-
) {
|
|
124
|
+
if (this.props.forceHighlight && this.state.highlightedIndex === -1 && range > 0) {
|
|
132
125
|
this.internalSetState(STATE_CHANGE_TYPES.enter, {
|
|
133
126
|
highlightedIndex: 0,
|
|
134
127
|
});
|
|
@@ -149,35 +142,33 @@ class MenuStatefulContainerInner extends React.Component<
|
|
|
149
142
|
!this.props.isNestedMenuVisible(this.rootRef) &&
|
|
150
143
|
!this.props.forceHighlight
|
|
151
144
|
) {
|
|
152
|
-
this.setState({highlightedIndex: -1});
|
|
145
|
+
this.setState({ highlightedIndex: -1 });
|
|
153
146
|
}
|
|
154
147
|
}
|
|
155
148
|
|
|
156
|
-
// One array to hold all
|
|
157
|
-
refList: Array<
|
|
149
|
+
// One array to hold all list item refs
|
|
150
|
+
refList: Array<{ current: null | HTMLElement }> = [];
|
|
158
151
|
// list of ids applied to list items. used to set aria-activedescendant
|
|
159
152
|
optionIds: string[] = [];
|
|
160
153
|
//characters input from keyboard, will automatically be clear after some time
|
|
161
154
|
typeAheadChars: string = '';
|
|
162
|
-
//count time for each
|
|
163
|
-
typeAheadTimeOut:
|
|
155
|
+
//count time for each continuous keyboard input
|
|
156
|
+
typeAheadTimeOut: null | TimeoutID = null;
|
|
164
157
|
|
|
165
158
|
// Internal set state function that will also invoke stateReducer
|
|
166
159
|
|
|
167
160
|
internalSetState(
|
|
168
161
|
changeType: $Keys<typeof STATE_CHANGE_TYPES>,
|
|
169
|
-
changes: $Shape<StatefulContainerStateT
|
|
162
|
+
changes: $Shape<StatefulContainerStateT>
|
|
170
163
|
) {
|
|
171
|
-
const {stateReducer} = this.props;
|
|
164
|
+
const { stateReducer } = this.props;
|
|
172
165
|
|
|
173
166
|
if (
|
|
174
167
|
this.props.onActiveDescendantChange &&
|
|
175
168
|
typeof changes.highlightedIndex === 'number' &&
|
|
176
169
|
this.state.highlightedIndex !== changes.highlightedIndex
|
|
177
170
|
) {
|
|
178
|
-
this.props.onActiveDescendantChange(
|
|
179
|
-
this.optionIds[changes.highlightedIndex],
|
|
180
|
-
);
|
|
171
|
+
this.props.onActiveDescendantChange(this.optionIds[changes.highlightedIndex]);
|
|
181
172
|
}
|
|
182
173
|
|
|
183
174
|
this.setState(stateReducer(changeType, changes, this.state));
|
|
@@ -260,7 +251,7 @@ class MenuStatefulContainerInner extends React.Component<
|
|
|
260
251
|
// $FlowFixMe
|
|
261
252
|
rootRef.current,
|
|
262
253
|
nextIndex === 0,
|
|
263
|
-
nextIndex === list.length - 1
|
|
254
|
+
nextIndex === list.length - 1
|
|
264
255
|
);
|
|
265
256
|
}
|
|
266
257
|
};
|
|
@@ -317,33 +308,25 @@ class MenuStatefulContainerInner extends React.Component<
|
|
|
317
308
|
// $FlowFixMe
|
|
318
309
|
rootRef.current,
|
|
319
310
|
nextIndex === 0,
|
|
320
|
-
nextIndex === this.getItems().length - 1
|
|
311
|
+
nextIndex === this.getItems().length - 1
|
|
321
312
|
);
|
|
322
313
|
}
|
|
323
314
|
};
|
|
324
315
|
|
|
325
316
|
// Handler for enter key
|
|
326
317
|
handleEnterKey = (event: KeyboardEvent) => {
|
|
327
|
-
const {onItemSelect} = this.props;
|
|
328
|
-
const {highlightedIndex} = this.state;
|
|
318
|
+
const { onItemSelect } = this.props;
|
|
319
|
+
const { highlightedIndex } = this.state;
|
|
329
320
|
const items = this.getItems();
|
|
330
|
-
if (
|
|
331
|
-
items[highlightedIndex] &&
|
|
332
|
-
onItemSelect &&
|
|
333
|
-
!items[highlightedIndex].disabled
|
|
334
|
-
) {
|
|
321
|
+
if (items[highlightedIndex] && onItemSelect && !items[highlightedIndex].disabled) {
|
|
335
322
|
event.preventDefault();
|
|
336
|
-
onItemSelect({item: items[highlightedIndex], event});
|
|
323
|
+
onItemSelect({ item: items[highlightedIndex], event });
|
|
337
324
|
}
|
|
338
325
|
};
|
|
339
326
|
|
|
340
|
-
handleItemClick = (
|
|
341
|
-
index: number,
|
|
342
|
-
item: *,
|
|
343
|
-
event: SyntheticMouseEvent<HTMLElement>,
|
|
344
|
-
) => {
|
|
327
|
+
handleItemClick = (index: number, item: ItemT, event: SyntheticMouseEvent<HTMLElement>) => {
|
|
345
328
|
if (this.props.onItemSelect && !item.disabled) {
|
|
346
|
-
this.props.onItemSelect({item, event});
|
|
329
|
+
this.props.onItemSelect({ item, event });
|
|
347
330
|
this.internalSetState(STATE_CHANGE_TYPES.click, {
|
|
348
331
|
highlightedIndex: index,
|
|
349
332
|
activedescendantId: this.optionIds[index],
|
|
@@ -367,12 +350,11 @@ class MenuStatefulContainerInner extends React.Component<
|
|
|
367
350
|
this.refList[index] = itemRef;
|
|
368
351
|
this.optionIds[index] = this.props.uidSeed(index);
|
|
369
352
|
}
|
|
370
|
-
const {
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
const disabled =
|
|
375
|
-
typeof disabledVal === 'boolean' ? disabledVal : !!item.disabled;
|
|
353
|
+
const { disabled: disabledVal, ...requiredItemProps } = this.props.getRequiredItemProps(
|
|
354
|
+
item,
|
|
355
|
+
index
|
|
356
|
+
);
|
|
357
|
+
const disabled = typeof disabledVal === 'boolean' ? disabledVal : !!item.disabled;
|
|
376
358
|
return {
|
|
377
359
|
id: requiredItemProps.id || this.optionIds[index],
|
|
378
360
|
disabled,
|
|
@@ -407,7 +389,7 @@ class MenuStatefulContainerInner extends React.Component<
|
|
|
407
389
|
highlightedIndex: 0,
|
|
408
390
|
});
|
|
409
391
|
} else {
|
|
410
|
-
this.internalSetState(STATE_CHANGE_TYPES.focus, {isFocused: true});
|
|
392
|
+
this.internalSetState(STATE_CHANGE_TYPES.focus, { isFocused: true });
|
|
411
393
|
}
|
|
412
394
|
|
|
413
395
|
rootRef.current.focus();
|
|
@@ -415,7 +397,7 @@ class MenuStatefulContainerInner extends React.Component<
|
|
|
415
397
|
};
|
|
416
398
|
|
|
417
399
|
unfocusMenu = () => {
|
|
418
|
-
this.internalSetState(STATE_CHANGE_TYPES.focus, {isFocused: false});
|
|
400
|
+
this.internalSetState(STATE_CHANGE_TYPES.focus, { isFocused: false });
|
|
419
401
|
};
|
|
420
402
|
|
|
421
403
|
resetMenu = () => {
|
|
@@ -448,23 +430,21 @@ class MenuStatefulContainerInner extends React.Component<
|
|
|
448
430
|
...restProps,
|
|
449
431
|
rootRef: this.props.rootRef ? this.props.rootRef : this.rootRef,
|
|
450
432
|
activedescendantId: this.optionIds[this.state.highlightedIndex],
|
|
451
|
-
getRequiredItemProps: (item, index) =>
|
|
452
|
-
this.getRequiredItemProps(item, index),
|
|
433
|
+
getRequiredItemProps: (item, index) => this.getRequiredItemProps(item, index),
|
|
453
434
|
handleMouseLeave: this.handleMouseLeave,
|
|
454
435
|
highlightedIndex: this.state.highlightedIndex,
|
|
455
436
|
isFocused: this.state.isFocused,
|
|
456
|
-
handleKeyDown: this.props.keyboardControlNode.current
|
|
457
|
-
? event => {}
|
|
458
|
-
: this.onKeyDown,
|
|
437
|
+
handleKeyDown: this.props.keyboardControlNode.current ? (event) => {} : this.onKeyDown,
|
|
459
438
|
focusMenu: this.focusMenu,
|
|
460
439
|
unfocusMenu: this.unfocusMenu,
|
|
461
|
-
}: RenderPropsT)
|
|
440
|
+
}: RenderPropsT)
|
|
462
441
|
);
|
|
463
442
|
}
|
|
464
443
|
}
|
|
465
444
|
|
|
466
445
|
// Remove when MenuStatefulContainer is converted to a functional component.
|
|
467
446
|
const MenuStatefulContainer = (props: StatefulContainerPropsT) => {
|
|
447
|
+
//$FlowExpectedError[cannot-spread-inexact]
|
|
468
448
|
return <MenuStatefulContainerInner uidSeed={useUIDSeed()} {...props} />;
|
|
469
449
|
};
|
|
470
450
|
|