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
|
@@ -8,44 +8,37 @@ LICENSE file in the root directory of this source tree.
|
|
|
8
8
|
|
|
9
9
|
import * as React from 'react';
|
|
10
10
|
|
|
11
|
-
import {Button, SIZE} from '../button/index.js';
|
|
12
|
-
import {ButtonGroup, MODE} from '../button-group/index.js';
|
|
13
|
-
import {Input, SIZE as INPUT_SIZE} from '../input/index.js';
|
|
14
|
-
import {useStyletron} from '../styles/index.js';
|
|
15
|
-
import {ParagraphXSmall} from '../typography/index.js';
|
|
11
|
+
import { Button, SIZE } from '../button/index.js';
|
|
12
|
+
import { ButtonGroup, MODE } from '../button-group/index.js';
|
|
13
|
+
import { Input, SIZE as INPUT_SIZE } from '../input/index.js';
|
|
14
|
+
import { useStyletron } from '../styles/index.js';
|
|
16
15
|
|
|
17
16
|
import Column from './column.js';
|
|
18
|
-
import {COLUMNS, NUMERICAL_FORMATS,
|
|
19
|
-
import FilterShell from './filter-shell.js';
|
|
20
|
-
import type {ColumnT, SharedColumnOptionsT} from './types.js';
|
|
21
|
-
import {LocaleContext} from '../locale/index.js';
|
|
17
|
+
import { COLUMNS, NUMERICAL_FORMATS, MAX_BIN_COUNT, HISTOGRAM_SIZE } from './constants.js';
|
|
18
|
+
import FilterShell, { type ExcludeKind } from './filter-shell.js';
|
|
19
|
+
import type { ColumnT, SharedColumnOptionsT } from './types.js';
|
|
20
|
+
import { LocaleContext } from '../locale/index.js';
|
|
21
|
+
import { bin, max as maxFunc, extent, scaleLinear, median, bisector } from 'd3';
|
|
22
|
+
import { Slider } from '../slider/index.js';
|
|
22
23
|
|
|
23
24
|
type NumericalFormats =
|
|
24
25
|
| typeof NUMERICAL_FORMATS.DEFAULT
|
|
25
26
|
| typeof NUMERICAL_FORMATS.ACCOUNTING
|
|
26
27
|
| typeof NUMERICAL_FORMATS.PERCENTAGE;
|
|
27
28
|
|
|
28
|
-
type NumericalOperations =
|
|
29
|
-
| typeof NUMERICAL_OPERATIONS.EQ
|
|
30
|
-
| typeof NUMERICAL_OPERATIONS.GT
|
|
31
|
-
| typeof NUMERICAL_OPERATIONS.GTE
|
|
32
|
-
| typeof NUMERICAL_OPERATIONS.LT
|
|
33
|
-
| typeof NUMERICAL_OPERATIONS.LTE;
|
|
34
|
-
|
|
35
29
|
type OptionsT = {|
|
|
36
30
|
...SharedColumnOptionsT<number>,
|
|
37
31
|
format?: NumericalFormats | ((value: number) => string),
|
|
38
|
-
highlight?: number => boolean,
|
|
32
|
+
highlight?: (number) => boolean,
|
|
39
33
|
precision?: number,
|
|
40
34
|
|};
|
|
41
35
|
|
|
42
36
|
type FilterParametersT = {|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
operation: NumericalOperations,
|
|
46
|
-
|}>,
|
|
37
|
+
lowerValue: number,
|
|
38
|
+
upperValue: number,
|
|
47
39
|
description: string,
|
|
48
40
|
exclude: boolean,
|
|
41
|
+
excludeKind: ExcludeKind,
|
|
49
42
|
|};
|
|
50
43
|
|
|
51
44
|
type NumericalColumnT = ColumnT<number, FilterParametersT>;
|
|
@@ -86,224 +79,208 @@ function validateInput(input) {
|
|
|
86
79
|
return Boolean(parseFloat(input)) || input === '' || input === '-';
|
|
87
80
|
}
|
|
88
81
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
right: '',
|
|
121
|
-
};
|
|
122
|
-
} else if (comparison.operation === NUMERICAL_OPERATIONS.LTE) {
|
|
123
|
-
return {
|
|
124
|
-
exclude: filterParams.exclude,
|
|
125
|
-
comparatorIndex: 0,
|
|
126
|
-
operatorIndex: 2,
|
|
127
|
-
left: '',
|
|
128
|
-
right: comparison.value.toString(),
|
|
129
|
-
};
|
|
130
|
-
} else if (comparison.operation === NUMERICAL_OPERATIONS.GTE) {
|
|
131
|
-
return {
|
|
132
|
-
exclude: filterParams.exclude,
|
|
133
|
-
comparatorIndex: 0,
|
|
134
|
-
operatorIndex: 3,
|
|
135
|
-
left: comparison.value.toString(),
|
|
136
|
-
right: '',
|
|
137
|
-
};
|
|
138
|
-
} else if (comparison.operation === NUMERICAL_OPERATIONS.EQ) {
|
|
139
|
-
return {
|
|
140
|
-
exclude: filterParams.exclude,
|
|
141
|
-
comparatorIndex: 1,
|
|
142
|
-
operatorIndex: 0,
|
|
143
|
-
left: comparison.value.toString(),
|
|
144
|
-
right: '',
|
|
145
|
-
};
|
|
146
|
-
}
|
|
82
|
+
const bisect = bisector((d) => d.x0);
|
|
83
|
+
|
|
84
|
+
const Histogram = React.memo(function Histogram({
|
|
85
|
+
data,
|
|
86
|
+
lower,
|
|
87
|
+
upper,
|
|
88
|
+
isRange,
|
|
89
|
+
exclude,
|
|
90
|
+
precision,
|
|
91
|
+
}) {
|
|
92
|
+
const [css, theme] = useStyletron();
|
|
93
|
+
|
|
94
|
+
const { bins, xScale, yScale } = React.useMemo(() => {
|
|
95
|
+
const bins = bin().thresholds(Math.min(data.length, MAX_BIN_COUNT))(data);
|
|
96
|
+
|
|
97
|
+
const xScale = scaleLinear()
|
|
98
|
+
.domain([bins[0].x0, bins[bins.length - 1].x1])
|
|
99
|
+
.range([0, HISTOGRAM_SIZE.width])
|
|
100
|
+
.clamp(true);
|
|
101
|
+
|
|
102
|
+
const yScale = scaleLinear()
|
|
103
|
+
.domain([0, maxFunc(bins, (d) => d.length)])
|
|
104
|
+
.nice()
|
|
105
|
+
.range([HISTOGRAM_SIZE.height, 0]);
|
|
106
|
+
return { bins, xScale, yScale };
|
|
107
|
+
}, [data]);
|
|
108
|
+
|
|
109
|
+
// We need to find the index of bar which is nearest to the given single value
|
|
110
|
+
const singleIndexNearest = React.useMemo(() => {
|
|
111
|
+
if (isRange) {
|
|
112
|
+
return null;
|
|
147
113
|
}
|
|
148
|
-
|
|
114
|
+
return bisect.center(bins, lower);
|
|
115
|
+
}, [isRange, data, lower, upper]);
|
|
149
116
|
|
|
150
|
-
return
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
117
|
+
return (
|
|
118
|
+
<div
|
|
119
|
+
className={css({
|
|
120
|
+
display: 'flex',
|
|
121
|
+
marginTop: theme.sizing.scale600,
|
|
122
|
+
marginLeft: theme.sizing.scale200,
|
|
123
|
+
marginRight: 0,
|
|
124
|
+
marginBottom: theme.sizing.scale400,
|
|
125
|
+
justifyContent: 'space-between',
|
|
126
|
+
overflow: 'visible',
|
|
127
|
+
})}
|
|
128
|
+
>
|
|
129
|
+
<svg {...HISTOGRAM_SIZE}>
|
|
130
|
+
{bins.map((d, index) => {
|
|
131
|
+
const x = xScale(d.x0) + 1;
|
|
132
|
+
const y = yScale(d.length);
|
|
133
|
+
const width = Math.max(0, xScale(d.x1) - xScale(d.x0) - 1);
|
|
134
|
+
const height = yScale(0) - yScale(d.length);
|
|
135
|
+
|
|
136
|
+
let included;
|
|
137
|
+
if (singleIndexNearest != null) {
|
|
138
|
+
included = index === singleIndexNearest;
|
|
139
|
+
} else {
|
|
140
|
+
const withinLower = d.x1 > lower;
|
|
141
|
+
const withinUpper = d.x0 <= upper;
|
|
142
|
+
included = withinLower && withinUpper;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (exclude) {
|
|
146
|
+
included = !included;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return (
|
|
150
|
+
<rect
|
|
151
|
+
key={`bar-${index}`}
|
|
152
|
+
fill={included ? theme.colors.primary : theme.colors.mono400}
|
|
153
|
+
x={x}
|
|
154
|
+
y={y}
|
|
155
|
+
width={width}
|
|
156
|
+
height={height}
|
|
157
|
+
/>
|
|
158
|
+
);
|
|
159
|
+
})}
|
|
160
|
+
</svg>
|
|
161
|
+
</div>
|
|
162
|
+
);
|
|
163
|
+
});
|
|
158
164
|
|
|
159
165
|
function NumericalFilter(props) {
|
|
160
166
|
const [css, theme] = useStyletron();
|
|
161
167
|
const locale = React.useContext(LocaleContext);
|
|
162
168
|
|
|
163
|
-
const
|
|
169
|
+
const precision = props.options.precision;
|
|
170
|
+
|
|
171
|
+
// The state handling of this component could be refactored and cleaned up if we used useReducer.
|
|
172
|
+
const initialState = React.useMemo(() => {
|
|
173
|
+
return (
|
|
174
|
+
props.filterParams || {
|
|
175
|
+
exclude: false,
|
|
176
|
+
excludeKind: 'range',
|
|
177
|
+
comparatorIndex: 0,
|
|
178
|
+
lowerValue: null,
|
|
179
|
+
upperValue: null,
|
|
180
|
+
}
|
|
181
|
+
);
|
|
182
|
+
}, [props.filterParams]);
|
|
183
|
+
|
|
164
184
|
const [exclude, setExclude] = React.useState(initialState.exclude);
|
|
165
|
-
|
|
166
|
-
|
|
185
|
+
|
|
186
|
+
// the api of our ButtonGroup forces these numerical indexes...
|
|
187
|
+
// TODO look into allowing semantic names, similar to the radio component. Tricky part would be backwards compat
|
|
188
|
+
const [comparatorIndex, setComparatorIndex] = React.useState(() => {
|
|
189
|
+
switch (initialState.excludeKind) {
|
|
190
|
+
case 'value':
|
|
191
|
+
return 1;
|
|
192
|
+
case 'range':
|
|
193
|
+
default:
|
|
194
|
+
// fallthrough
|
|
195
|
+
return 0;
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
// We use the d3 function to get the extent as it's a little more robust to null, -Infinity, etc.
|
|
200
|
+
const [min, max] = React.useMemo(() => extent(props.data), [props.data]);
|
|
201
|
+
|
|
202
|
+
const [lv, setLower] = React.useState<number>(() =>
|
|
203
|
+
roundToFixed(initialState.lowerValue || min, precision)
|
|
204
|
+
);
|
|
205
|
+
const [uv, setUpper] = React.useState<number>(() =>
|
|
206
|
+
roundToFixed(initialState.upperValue || max, precision)
|
|
167
207
|
);
|
|
168
|
-
|
|
169
|
-
|
|
208
|
+
|
|
209
|
+
// We keep a separate value for the single select, to give a user the ability to toggle between
|
|
210
|
+
// the range and single values without losing their previous input.
|
|
211
|
+
const [sv, setSingle] = React.useState<number>(() =>
|
|
212
|
+
roundToFixed(initialState.lowerValue || median(props.data), precision)
|
|
170
213
|
);
|
|
171
|
-
const [left, setLeft] = React.useState(initialState.left);
|
|
172
|
-
const [right, setRight] = React.useState(initialState.right);
|
|
173
214
|
|
|
215
|
+
// This is the only conditional which we want to use to determine
|
|
216
|
+
// if we are in range or single value mode.
|
|
217
|
+
// Don't derive it via something else, e.g. lowerValue === upperValue, etc.
|
|
174
218
|
const isRange = comparatorIndex === 0;
|
|
175
|
-
const min = React.useMemo(() => Math.min(...props.data), [props.data]);
|
|
176
|
-
const max = React.useMemo(() => Math.max(...props.data), [props.data]);
|
|
177
219
|
|
|
178
|
-
|
|
179
|
-
if (!left) {
|
|
180
|
-
setLeft(min.toString());
|
|
181
|
-
}
|
|
182
|
-
if (!right) {
|
|
183
|
-
setRight(max.toString());
|
|
184
|
-
}
|
|
185
|
-
}, []);
|
|
186
|
-
|
|
187
|
-
const [leftDisabled, rightDisabled] = React.useMemo(() => {
|
|
188
|
-
if (!isRange) return [false, false];
|
|
189
|
-
switch (operatorIndex) {
|
|
190
|
-
case 4:
|
|
191
|
-
return [false, false];
|
|
192
|
-
case 0:
|
|
193
|
-
case 2:
|
|
194
|
-
return [true, false];
|
|
195
|
-
case 1:
|
|
196
|
-
case 3:
|
|
197
|
-
return [false, true];
|
|
198
|
-
default:
|
|
199
|
-
return [true, true];
|
|
200
|
-
}
|
|
201
|
-
}, [operatorIndex, isRange]);
|
|
202
|
-
|
|
203
|
-
const leftInputRef = React.useRef(null);
|
|
204
|
-
const rightInputRef = React.useRef(null);
|
|
205
|
-
React.useEffect(() => {
|
|
206
|
-
if (!leftDisabled && leftInputRef.current) {
|
|
207
|
-
leftInputRef.current.focus({preventScroll: true});
|
|
208
|
-
} else if (!rightDisabled && rightInputRef.current) {
|
|
209
|
-
rightInputRef.current.focus({preventScroll: true});
|
|
210
|
-
}
|
|
211
|
-
}, [leftDisabled, rightDisabled, comparatorIndex]);
|
|
220
|
+
const excludeKind = isRange ? 'range' : 'value';
|
|
212
221
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
case 3:
|
|
220
|
-
setRight(max.toString());
|
|
221
|
-
break;
|
|
222
|
-
case 0:
|
|
223
|
-
case 2:
|
|
224
|
-
setLeft(min.toString());
|
|
225
|
-
break;
|
|
222
|
+
// while the user is inputting values, we take their input at face value,
|
|
223
|
+
// if we don't do this, a user can't input partial numbers, e.g. "-", or "3."
|
|
224
|
+
const [focused, setFocus] = React.useState(false);
|
|
225
|
+
const [inputValueLower, inputValueUpper] = React.useMemo(() => {
|
|
226
|
+
if (focused) {
|
|
227
|
+
return [isRange ? lv : sv, uv];
|
|
226
228
|
}
|
|
227
|
-
|
|
229
|
+
|
|
230
|
+
// once the user is done inputting.
|
|
231
|
+
// we validate then format to the given precision
|
|
232
|
+
let l = isRange ? lv : sv;
|
|
233
|
+
l = validateInput(l) ? l : min;
|
|
234
|
+
let h = validateInput(uv) ? uv : max;
|
|
235
|
+
|
|
236
|
+
return [roundToFixed(l, precision), roundToFixed(h, precision)];
|
|
237
|
+
}, [isRange, focused, sv, lv, uv, precision]);
|
|
238
|
+
|
|
239
|
+
// We have our slider values range from 1 to the bin size, so we have a scale which
|
|
240
|
+
// takes in the data driven range and maps it to values the scale can always handle
|
|
241
|
+
const sliderScale = React.useMemo(
|
|
242
|
+
() =>
|
|
243
|
+
scaleLinear()
|
|
244
|
+
.domain([min, max])
|
|
245
|
+
.rangeRound([1, MAX_BIN_COUNT])
|
|
246
|
+
// We clamp the values within our min and max even if a user enters a huge number
|
|
247
|
+
.clamp(true),
|
|
248
|
+
[min, max]
|
|
249
|
+
);
|
|
250
|
+
|
|
251
|
+
let sliderValue = isRange
|
|
252
|
+
? [sliderScale(inputValueLower), sliderScale(inputValueUpper)]
|
|
253
|
+
: [sliderScale(inputValueLower)];
|
|
254
|
+
|
|
255
|
+
// keep the slider happy by sorting the two values
|
|
256
|
+
if (isRange && sliderValue[0] > sliderValue[1]) {
|
|
257
|
+
sliderValue = [sliderValue[1], sliderValue[0]];
|
|
258
|
+
}
|
|
228
259
|
|
|
229
260
|
return (
|
|
230
261
|
<FilterShell
|
|
231
262
|
exclude={exclude}
|
|
232
263
|
onExcludeChange={() => setExclude(!exclude)}
|
|
264
|
+
excludeKind={excludeKind}
|
|
233
265
|
onApply={() => {
|
|
234
266
|
if (isRange) {
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
break;
|
|
245
|
-
}
|
|
246
|
-
case 1: {
|
|
247
|
-
const value = parseFloat(left);
|
|
248
|
-
const operation = NUMERICAL_OPERATIONS.GT;
|
|
249
|
-
props.setFilter({
|
|
250
|
-
comparisons: [{value, operation}],
|
|
251
|
-
description: `> ${value}`,
|
|
252
|
-
exclude,
|
|
253
|
-
});
|
|
254
|
-
break;
|
|
255
|
-
}
|
|
256
|
-
case 2: {
|
|
257
|
-
const value = parseFloat(right);
|
|
258
|
-
const operation = NUMERICAL_OPERATIONS.LTE;
|
|
259
|
-
props.setFilter({
|
|
260
|
-
comparisons: [{value, operation}],
|
|
261
|
-
description: `≤ ${value}`,
|
|
262
|
-
exclude,
|
|
263
|
-
});
|
|
264
|
-
break;
|
|
265
|
-
}
|
|
266
|
-
case 3: {
|
|
267
|
-
const value = parseFloat(left);
|
|
268
|
-
const operation = NUMERICAL_OPERATIONS.GTE;
|
|
269
|
-
props.setFilter({
|
|
270
|
-
comparisons: [{value, operation}],
|
|
271
|
-
description: `≥ ${value}`,
|
|
272
|
-
exclude,
|
|
273
|
-
});
|
|
274
|
-
break;
|
|
275
|
-
}
|
|
276
|
-
case 4: {
|
|
277
|
-
// 'between' case is interesting since if we want less than 10 plus greater than 5
|
|
278
|
-
// comparators, the filter will include _all_ numbers.
|
|
279
|
-
const leftValue = parseFloat(left);
|
|
280
|
-
const rightValue = parseFloat(right);
|
|
281
|
-
props.setFilter({
|
|
282
|
-
comparisons: [
|
|
283
|
-
{
|
|
284
|
-
value: leftValue,
|
|
285
|
-
operation: NUMERICAL_OPERATIONS.LT,
|
|
286
|
-
},
|
|
287
|
-
{
|
|
288
|
-
value: rightValue,
|
|
289
|
-
operation: NUMERICAL_OPERATIONS.GT,
|
|
290
|
-
},
|
|
291
|
-
],
|
|
292
|
-
description: `≥ ${leftValue} & ≤ ${rightValue}`,
|
|
293
|
-
exclude: !exclude,
|
|
294
|
-
});
|
|
295
|
-
break;
|
|
296
|
-
}
|
|
297
|
-
default:
|
|
298
|
-
break;
|
|
299
|
-
}
|
|
267
|
+
const lowerValue = parseFloat(inputValueLower);
|
|
268
|
+
const upperValue = parseFloat(inputValueUpper);
|
|
269
|
+
props.setFilter({
|
|
270
|
+
description: `≥ ${lowerValue} and ≤ ${upperValue}`,
|
|
271
|
+
exclude: exclude,
|
|
272
|
+
lowerValue,
|
|
273
|
+
upperValue,
|
|
274
|
+
excludeKind,
|
|
275
|
+
});
|
|
300
276
|
} else {
|
|
301
|
-
const value = parseFloat(
|
|
302
|
-
const operation = NUMERICAL_OPERATIONS.EQ;
|
|
277
|
+
const value = parseFloat(inputValueLower);
|
|
303
278
|
props.setFilter({
|
|
304
|
-
comparisons: [{value, operation}],
|
|
305
279
|
description: `= ${value}`,
|
|
306
|
-
exclude,
|
|
280
|
+
exclude: exclude,
|
|
281
|
+
lowerValue: inputValueLower,
|
|
282
|
+
upperValue: inputValueLower,
|
|
283
|
+
excludeKind,
|
|
307
284
|
});
|
|
308
285
|
}
|
|
309
286
|
|
|
@@ -311,113 +288,144 @@ function NumericalFilter(props) {
|
|
|
311
288
|
}}
|
|
312
289
|
>
|
|
313
290
|
<ButtonGroup
|
|
314
|
-
size={SIZE.
|
|
291
|
+
size={SIZE.mini}
|
|
315
292
|
mode={MODE.radio}
|
|
316
293
|
selected={comparatorIndex}
|
|
317
294
|
onClick={(_, index) => setComparatorIndex(index)}
|
|
318
295
|
overrides={{
|
|
319
296
|
Root: {
|
|
320
|
-
style: ({$theme}) => ({marginBottom: $theme.sizing.scale300}),
|
|
297
|
+
style: ({ $theme }) => ({ marginBottom: $theme.sizing.scale300 }),
|
|
321
298
|
},
|
|
322
299
|
}}
|
|
323
300
|
>
|
|
324
301
|
<Button
|
|
325
302
|
type="button"
|
|
326
|
-
overrides={{BaseButton: {style: {width: '100%'}}}}
|
|
303
|
+
overrides={{ BaseButton: { style: { width: '100%' } } }}
|
|
304
|
+
aria-label={locale.datatable.numericalFilterRange}
|
|
327
305
|
>
|
|
328
306
|
{locale.datatable.numericalFilterRange}
|
|
329
307
|
</Button>
|
|
330
308
|
<Button
|
|
331
309
|
type="button"
|
|
332
|
-
overrides={{BaseButton: {style: {width: '100%'}}}}
|
|
310
|
+
overrides={{ BaseButton: { style: { width: '100%' } } }}
|
|
311
|
+
aria-label={locale.datatable.numericalFilterSingleValue}
|
|
333
312
|
>
|
|
334
313
|
{locale.datatable.numericalFilterSingleValue}
|
|
335
314
|
</Button>
|
|
336
315
|
</ButtonGroup>
|
|
337
316
|
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
317
|
+
<Histogram
|
|
318
|
+
data={props.data}
|
|
319
|
+
lower={inputValueLower}
|
|
320
|
+
upper={inputValueUpper}
|
|
321
|
+
isRange={isRange}
|
|
322
|
+
exclude={exclude}
|
|
323
|
+
precision={props.options.precision}
|
|
324
|
+
/>
|
|
325
|
+
|
|
326
|
+
<div className={css({ display: 'flex', justifyContent: 'space-between' })}>
|
|
327
|
+
<Slider
|
|
328
|
+
// The slider throws errors when switching between single and two values
|
|
329
|
+
// when it tries to read getThumbDistance on a thumb which is not there anymore
|
|
330
|
+
// if we create a new instance these errors are prevented.
|
|
331
|
+
key={isRange.toString()}
|
|
332
|
+
min={1}
|
|
333
|
+
max={MAX_BIN_COUNT}
|
|
334
|
+
value={sliderValue}
|
|
335
|
+
onChange={({ value }) => {
|
|
336
|
+
if (!value) {
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
// we convert back from the slider scale to the actual data's scale
|
|
340
|
+
if (isRange) {
|
|
341
|
+
const [lowerValue, upperValue] = value;
|
|
342
|
+
setLower(sliderScale.invert(lowerValue));
|
|
343
|
+
setUpper(sliderScale.invert(upperValue));
|
|
344
|
+
} else {
|
|
345
|
+
const [singleValue] = value;
|
|
346
|
+
setSingle(sliderScale.invert(singleValue));
|
|
347
|
+
}
|
|
348
|
+
}}
|
|
344
349
|
overrides={{
|
|
350
|
+
InnerThumb: function InnerThumb({ $value, $thumbIndex }) {
|
|
351
|
+
return <React.Fragment>{$value[$thumbIndex]}</React.Fragment>;
|
|
352
|
+
},
|
|
353
|
+
TickBar: ({ $min, $max }) => null, // we don't want the ticks
|
|
354
|
+
ThumbValue: () => null,
|
|
345
355
|
Root: {
|
|
346
|
-
style: (
|
|
356
|
+
style: () => ({
|
|
357
|
+
// Aligns the center of the slider handles with the histogram bars
|
|
358
|
+
width: 'calc(100% + 14px)',
|
|
359
|
+
margin: '0 -7px',
|
|
360
|
+
}),
|
|
361
|
+
},
|
|
362
|
+
InnerTrack: {
|
|
363
|
+
style: ({ $theme }) => {
|
|
364
|
+
if (!isRange) {
|
|
365
|
+
return {
|
|
366
|
+
// For range selection we use the color as is, but when selecting the single value,
|
|
367
|
+
// we don't want the track standing out, so mute its color
|
|
368
|
+
background: theme.colors.mono400,
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
},
|
|
372
|
+
},
|
|
373
|
+
Thumb: {
|
|
374
|
+
style: () => ({
|
|
375
|
+
// Slider handles are small enough to visually be centered within each histogram bar
|
|
376
|
+
height: '18px',
|
|
377
|
+
width: '18px',
|
|
378
|
+
fontSize: '0px',
|
|
379
|
+
}),
|
|
347
380
|
},
|
|
348
381
|
}}
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
type="button"
|
|
352
|
-
overrides={{BaseButton: {style: {width: '100%'}}}}
|
|
353
|
-
>
|
|
354
|
-
<
|
|
355
|
-
</Button>
|
|
356
|
-
<Button
|
|
357
|
-
type="button"
|
|
358
|
-
overrides={{BaseButton: {style: {width: '100%'}}}}
|
|
359
|
-
>
|
|
360
|
-
>
|
|
361
|
-
</Button>
|
|
362
|
-
<Button
|
|
363
|
-
type="button"
|
|
364
|
-
overrides={{BaseButton: {style: {width: '100%'}}}}
|
|
365
|
-
>
|
|
366
|
-
≤
|
|
367
|
-
</Button>
|
|
368
|
-
<Button
|
|
369
|
-
type="button"
|
|
370
|
-
overrides={{BaseButton: {style: {width: '100%'}}}}
|
|
371
|
-
>
|
|
372
|
-
≥
|
|
373
|
-
</Button>
|
|
374
|
-
<Button
|
|
375
|
-
type="button"
|
|
376
|
-
overrides={{BaseButton: {style: {width: '100%'}}}}
|
|
377
|
-
>
|
|
378
|
-
=
|
|
379
|
-
</Button>
|
|
380
|
-
</ButtonGroup>
|
|
381
|
-
)}
|
|
382
|
-
|
|
382
|
+
/>
|
|
383
|
+
</div>
|
|
383
384
|
<div
|
|
384
385
|
className={css({
|
|
385
386
|
display: 'flex',
|
|
387
|
+
marginTop: theme.sizing.scale400,
|
|
388
|
+
// This % gap is visually appealing given the filter box width
|
|
389
|
+
gap: '30%',
|
|
386
390
|
justifyContent: 'space-between',
|
|
387
|
-
marginLeft: theme.sizing.scale300,
|
|
388
|
-
marginRight: theme.sizing.scale300,
|
|
389
391
|
})}
|
|
390
392
|
>
|
|
391
|
-
<ParagraphXSmall>{format(min, props.options)}</ParagraphXSmall>{' '}
|
|
392
|
-
<ParagraphXSmall>{format(max, props.options)}</ParagraphXSmall>
|
|
393
|
-
</div>
|
|
394
|
-
|
|
395
|
-
<div className={css({display: 'flex', justifyContent: 'space-between'})}>
|
|
396
393
|
<Input
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
value={
|
|
402
|
-
onChange={event => {
|
|
394
|
+
min={min}
|
|
395
|
+
max={max}
|
|
396
|
+
size={INPUT_SIZE.mini}
|
|
397
|
+
overrides={{ Root: { style: { width: '100%' } } }}
|
|
398
|
+
value={inputValueLower}
|
|
399
|
+
onChange={(event) => {
|
|
403
400
|
if (validateInput(event.target.value)) {
|
|
404
|
-
|
|
401
|
+
isRange
|
|
402
|
+
? // $FlowFixMe - we know it is a number by now
|
|
403
|
+
setLower(event.target.value)
|
|
404
|
+
: // $FlowFixMe - we know it is a number by now
|
|
405
|
+
setSingle(event.target.value);
|
|
405
406
|
}
|
|
406
407
|
}}
|
|
408
|
+
onFocus={() => setFocus(true)}
|
|
409
|
+
onBlur={() => setFocus(false)}
|
|
407
410
|
/>
|
|
408
|
-
|
|
409
411
|
{isRange && (
|
|
410
412
|
<Input
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
413
|
+
min={min}
|
|
414
|
+
max={max}
|
|
415
|
+
size={INPUT_SIZE.mini}
|
|
416
|
+
overrides={{
|
|
417
|
+
Input: { style: { textAlign: 'right' } },
|
|
418
|
+
Root: { style: { width: '100%' } },
|
|
419
|
+
}}
|
|
420
|
+
value={inputValueUpper}
|
|
421
|
+
onChange={(event) => {
|
|
417
422
|
if (validateInput(event.target.value)) {
|
|
418
|
-
|
|
423
|
+
// $FlowFixMe - we know it is a number by now
|
|
424
|
+
setUpper(event.target.value);
|
|
419
425
|
}
|
|
420
426
|
}}
|
|
427
|
+
onFocus={() => setFocus(true)}
|
|
428
|
+
onBlur={() => setFocus(false)}
|
|
421
429
|
/>
|
|
422
430
|
)}
|
|
423
431
|
</div>
|
|
@@ -433,9 +441,7 @@ function NumericalCell(props) {
|
|
|
433
441
|
...theme.typography.MonoParagraphXSmall,
|
|
434
442
|
display: 'flex',
|
|
435
443
|
justifyContent: theme.direction !== 'rtl' ? 'flex-end' : 'flex-start',
|
|
436
|
-
color: props.highlight(props.value)
|
|
437
|
-
? theme.colors.contentNegative
|
|
438
|
-
: null,
|
|
444
|
+
color: props.highlight(props.value) ? theme.colors.contentNegative : null,
|
|
439
445
|
width: '100%',
|
|
440
446
|
})}
|
|
441
447
|
>
|
|
@@ -452,7 +458,7 @@ const defaultOptions = {
|
|
|
452
458
|
sortable: true,
|
|
453
459
|
filterable: true,
|
|
454
460
|
format: NUMERICAL_FORMATS.DEFAULT,
|
|
455
|
-
highlight: (n => false: number => boolean),
|
|
461
|
+
highlight: ((n) => false: (number) => boolean),
|
|
456
462
|
precision: 0,
|
|
457
463
|
};
|
|
458
464
|
|
|
@@ -478,26 +484,10 @@ function NumericalColumn(options: OptionsT): NumericalColumnT {
|
|
|
478
484
|
|
|
479
485
|
return Column({
|
|
480
486
|
kind: COLUMNS.NUMERICAL,
|
|
481
|
-
buildFilter: function(params) {
|
|
482
|
-
return function(data) {
|
|
483
|
-
const
|
|
484
|
-
|
|
485
|
-
const right = roundToFixed(c.value, normalizedOptions.precision);
|
|
486
|
-
switch (c.operation) {
|
|
487
|
-
case NUMERICAL_OPERATIONS.EQ:
|
|
488
|
-
return left === right;
|
|
489
|
-
case NUMERICAL_OPERATIONS.GT:
|
|
490
|
-
return left > right;
|
|
491
|
-
case NUMERICAL_OPERATIONS.GTE:
|
|
492
|
-
return left >= right;
|
|
493
|
-
case NUMERICAL_OPERATIONS.LT:
|
|
494
|
-
return left < right;
|
|
495
|
-
case NUMERICAL_OPERATIONS.LTE:
|
|
496
|
-
return left <= right;
|
|
497
|
-
default:
|
|
498
|
-
return true;
|
|
499
|
-
}
|
|
500
|
-
});
|
|
487
|
+
buildFilter: function (params) {
|
|
488
|
+
return function (data) {
|
|
489
|
+
const value = roundToFixed(data, normalizedOptions.precision);
|
|
490
|
+
const included = value >= params.lowerValue && value <= params.upperValue;
|
|
501
491
|
return params.exclude ? !included : included;
|
|
502
492
|
};
|
|
503
493
|
},
|
|
@@ -521,7 +511,7 @@ function NumericalColumn(options: OptionsT): NumericalColumnT {
|
|
|
521
511
|
return <NumericalFilter {...props} options={normalizedOptions} />;
|
|
522
512
|
},
|
|
523
513
|
sortable: normalizedOptions.sortable,
|
|
524
|
-
sortFn: function(a, b) {
|
|
514
|
+
sortFn: function (a, b) {
|
|
525
515
|
return a - b;
|
|
526
516
|
},
|
|
527
517
|
title: normalizedOptions.title,
|