@jetbrains/ring-ui 5.0.0-beta.9 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/components/alert/alert.css +1 -1
- package/components/alert-service/alert-service.js +1 -1
- package/components/analytics/analytics__ga-plugin.d.ts +1 -1
- package/components/analytics/analytics__ga-plugin.js +12 -3
- package/components/auth/auth__core.js +5 -1
- package/components/auth-dialog-service/auth-dialog-service.js +1 -1
- package/components/avatar/avatar.d.ts +1 -0
- package/components/avatar/fallback-avatar.js +2 -2
- package/components/button/button.css +2 -2
- package/components/button/button.d.ts +2 -1
- package/components/button-group/button-group.css +4 -2
- package/components/checkbox/checkbox.css +8 -12
- package/components/checkbox/checkbox.js +1 -1
- package/components/checkbox-ng/checkbox-ng.js +1 -1
- package/components/confirm-service/confirm-service.js +1 -1
- package/components/data-list/data-list.d.ts +4 -8
- package/components/date-picker/date-picker.css +1 -0
- package/components/date-picker/date-popup.js +0 -1
- package/components/dialog/dialog.d.ts +1 -1
- package/components/dropdown/dropdown.d.ts +2 -2
- package/components/global/angular-component-factory.js +1 -1
- package/components/global/promise-with-timeout.d.ts +2 -1
- package/components/global/promise-with-timeout.js +5 -2
- package/components/global/react-render-adapter.d.ts +29 -0
- package/components/global/react-render-adapter.js +36 -0
- package/components/global/rerender-hoc.d.ts +5 -9
- package/components/global/rerender-hoc.js +4 -2
- package/components/global/theme.js +11 -4
- package/components/global/variables.css +0 -1
- package/components/global/variables.d.ts +0 -1
- package/components/global/variables_dark.css +0 -1
- package/components/header/profile.d.ts +3 -3
- package/components/input/input.css +1 -1
- package/components/input/input.d.ts +3 -1
- package/components/input/input.js +1 -1
- package/components/island/adaptive-island-hoc.d.ts +4 -8
- package/components/island/content.d.ts +33 -2
- package/components/island/content.js +5 -4
- package/components/island/island.d.ts +4 -8
- package/components/link/clickableLink.d.ts +1 -1
- package/components/link/link.d.ts +14 -22
- package/components/link/link.js +2 -2
- package/components/list/consts.d.ts +3 -1
- package/components/list/list.css +1 -0
- package/components/list/list.d.ts +2 -0
- package/components/list/list.js +12 -13
- package/components/list/list__link.js +2 -2
- package/components/login-dialog/service.js +1 -1
- package/components/message/message.css +12 -26
- package/components/message/message.js +27 -14
- package/components/popup/popup.d.ts +7 -1
- package/components/popup/popup.js +4 -3
- package/components/popup/popup.target.d.ts +1 -1
- package/components/popup/position.d.ts +1 -1
- package/components/popup/position.js +2 -2
- package/components/popup-menu/popup-menu.d.ts +1 -0
- package/components/query-assist/query-assist.d.ts +5 -9
- package/components/query-assist/query-assist.js +2 -2
- package/components/radio/radio.d.ts +1 -1
- package/components/select/select.css +4 -1
- package/components/select/select.d.ts +12 -14
- package/components/select/select.js +20 -17
- package/components/select/select__popup.d.ts +4 -1
- package/components/select/select__popup.js +4 -3
- package/components/select-ng/select-ng.js +16 -5
- package/components/select-ng/select-ng__lazy.js +19 -8
- package/components/select-ng/select-ng__lazy.test.js +3 -1
- package/components/shortcuts/shortcuts-hoc.d.ts +4 -8
- package/components/shortcuts/shortcuts.d.ts +1 -1
- package/components/tab-trap/tab-trap.d.ts +1 -1
- package/components/table/disable-hover-hoc.d.ts +4 -8
- package/components/table/header.d.ts +8 -1
- package/components/table/row-with-focus-sensor.d.ts +4 -4
- package/components/table/row-with-focus-sensor.js +4 -4
- package/components/table/row.d.ts +1 -0
- package/components/table/smart-table.d.ts +1 -0
- package/components/table/smart-table.js +7 -3
- package/components/table/table.d.ts +4 -8
- package/components/tabs/collapsible-more.js +2 -2
- package/components/tabs/collapsible-tabs.d.ts +2 -2
- package/components/tabs/collapsible-tabs.js +1 -1
- package/components/tabs/custom-item.d.ts +1 -1
- package/components/tabs/dumb-tabs.d.ts +2 -2
- package/components/tabs/smart-tabs.d.ts +4 -4
- package/components/tabs/smart-tabs.js +9 -3
- package/components/tabs/tab-link.d.ts +1 -1
- package/components/tabs/tab.d.ts +1 -1
- package/components/tabs/tabs.css +10 -1
- package/components/tag/tag.css +1 -1
- package/components/tag/tag.js +1 -2
- package/components/tags-input/tags-input.d.ts +4 -8
- package/components/tags-list/tags-list.d.ts +1 -1
- package/components/tooltip-ng/tooltip-ng.js +13 -10
- package/components/user-agreement/service.d.ts +14 -62
- package/components/user-agreement/service.js +1 -1
- package/dist/_helpers/anchor.js +1 -1
- package/dist/_helpers/badge.js +1 -1
- package/dist/_helpers/button-group.js +1 -1
- package/dist/_helpers/button-set.js +1 -1
- package/dist/_helpers/button-toolbar.js +1 -1
- package/dist/_helpers/button__classes.js +2 -2
- package/dist/_helpers/card.js +1 -1
- package/dist/_helpers/checkbox.js +1 -1
- package/dist/_helpers/date-picker.js +1 -1
- package/dist/_helpers/dialog__body-scroll-preventer.js +3 -2
- package/dist/_helpers/error-message.js +1 -1
- package/dist/_helpers/footer.js +1 -1
- package/dist/_helpers/grid.js +1 -1
- package/dist/_helpers/group.js +1 -1
- package/dist/_helpers/header.js +1 -1
- package/dist/_helpers/icon.js +1 -1
- package/dist/_helpers/input.js +1 -1
- package/dist/_helpers/island.js +1 -1
- package/dist/_helpers/link.js +1 -1
- package/dist/_helpers/list.js +1 -1
- package/dist/_helpers/loader-inline.js +1 -1
- package/dist/_helpers/loader-screen.js +1 -1
- package/dist/_helpers/panel.js +1 -1
- package/dist/_helpers/query-assist__suggestions.js +1 -1
- package/dist/_helpers/radio.js +1 -1
- package/dist/_helpers/select__filter.js +2 -1
- package/dist/_helpers/services-link.js +2 -2
- package/dist/_helpers/sidebar.js +3 -2
- package/dist/_helpers/table.js +1 -1
- package/dist/_helpers/tabs.js +1 -1
- package/dist/_helpers/theme.js +12 -7
- package/dist/_helpers/title.js +2 -1
- package/dist/alert/alert.js +15 -3
- package/dist/alert/container.js +1 -1
- package/dist/alert-service/alert-service.js +14 -1
- package/dist/analytics/analytics.js +4 -3
- package/dist/analytics/analytics__custom-plugin.js +2 -1
- package/dist/analytics/analytics__fus-plugin.js +1 -0
- package/dist/analytics/analytics__ga-plugin.d.ts +1 -1
- package/dist/analytics/analytics__ga-plugin.js +16 -7
- package/dist/analytics/analytics__plugin-utils.js +4 -3
- package/dist/analytics-ng/analytics-ng.js +3 -2
- package/dist/auth/auth.js +13 -0
- package/dist/auth/auth__core.js +29 -12
- package/dist/auth/background-flow.js +2 -1
- package/dist/auth/down-notification.js +14 -1
- package/dist/auth/iframe-flow.js +3 -0
- package/dist/auth/landing.js +17 -4
- package/dist/auth/request-builder.js +1 -0
- package/dist/auth/response-parser.js +1 -0
- package/dist/auth/storage.js +13 -0
- package/dist/auth/token-validator.js +2 -0
- package/dist/auth/window-flow.js +2 -1
- package/dist/auth-dialog/auth-dialog.js +4 -2
- package/dist/auth-dialog-service/auth-dialog-service.js +4 -1
- package/dist/auth-ng/auth-ng.js +14 -1
- package/dist/autofocus-ng/autofocus-ng.js +1 -0
- package/dist/avatar/avatar-example-datauri.js +1 -23
- package/dist/avatar/avatar.d.ts +1 -0
- package/dist/avatar/avatar.js +5 -3
- package/dist/avatar/fallback-avatar.js +6 -5
- package/dist/avatar-editor-ng/avatar-editor-ng.js +13 -0
- package/dist/avatar-editor-ng/avatar-editor-ng__template.js +1 -28
- package/dist/avatar-ng/avatar-ng.js +3 -0
- package/dist/badge/badge.js +1 -0
- package/dist/badge-ng/badge-ng.js +2 -0
- package/dist/breadcrumb-ng/breadcrumb-ng.js +4 -28
- package/dist/button/button.d.ts +2 -1
- package/dist/button/button.js +2 -0
- package/dist/button-group-ng/button-group-ng.js +2 -1
- package/dist/button-ng/button-ng.js +5 -11
- package/dist/button-set-ng/button-set-ng.js +1 -1
- package/dist/button-toolbar-ng/button-toolbar-ng.js +1 -0
- package/dist/caret/caret.js +2 -0
- package/dist/checkbox/checkbox.js +3 -1
- package/dist/checkbox-ng/checkbox-ng.js +4 -21
- package/dist/code/code.js +4 -3
- package/dist/confirm/confirm.js +3 -1
- package/dist/confirm-ng/confirm-ng.js +3 -0
- package/dist/confirm-service/confirm-service.js +4 -1
- package/dist/content-layout/content-layout.js +1 -0
- package/dist/content-layout/sidebar.js +1 -0
- package/dist/data-list/data-list.d.ts +4 -8
- package/dist/data-list/data-list.js +3 -1
- package/dist/data-list/data-list.mock.js +1 -0
- package/dist/data-list/item.js +3 -1
- package/dist/data-list/selection.js +1 -0
- package/dist/data-list/title.js +3 -1
- package/dist/data-list-ng/data-list-ng.js +4 -1
- package/dist/date-picker/consts.js +1 -1
- package/dist/date-picker/date-input.js +4 -2
- package/dist/date-picker/date-picker.js +10 -8
- package/dist/date-picker/date-popup.js +4 -3
- package/dist/date-picker/day.js +1 -0
- package/dist/date-picker/month-names.js +1 -0
- package/dist/date-picker/month-slider.js +1 -0
- package/dist/date-picker/month.js +1 -0
- package/dist/date-picker/months.js +1 -0
- package/dist/date-picker/years.js +1 -0
- package/dist/dialog/dialog.d.ts +1 -1
- package/dist/dialog/dialog.js +2 -0
- package/dist/dialog/dialog__body-scroll-preventer.js +1 -0
- package/dist/dialog-ng/dialog-ng.js +7 -4
- package/dist/dialog-ng/dialog-ng__template.js +1 -70
- package/dist/docked-panel-ng/docked-panel-ng.js +2 -1
- package/dist/dropdown/anchor.js +2 -0
- package/dist/dropdown/dropdown.d.ts +2 -2
- package/dist/dropdown/dropdown.js +2 -0
- package/dist/dropdown-menu/dropdown-menu.js +4 -2
- package/dist/error-bubble/error-bubble.js +3 -1
- package/dist/error-message/error-message.js +3 -1
- package/dist/error-message-ng/error-message-ng.js +3 -21
- package/dist/footer/footer.js +1 -0
- package/dist/footer-ng/footer-ng.js +3 -14
- package/dist/form-ng/form-ng.js +2 -4
- package/dist/global/angular-component-factory.js +8 -6
- package/dist/global/create-stateful-context.js +3 -2
- package/dist/global/data-tests.js +2 -0
- package/dist/global/dom.js +1 -0
- package/dist/global/focus-sensor-hoc.js +1 -0
- package/dist/global/fuzzy-highlight.js +1 -1
- package/dist/global/inject-styles.js +5 -7
- package/dist/global/listeners.js +1 -0
- package/dist/global/memoize.js +2 -0
- package/dist/global/normalize-indent.js +2 -0
- package/dist/global/promise-with-timeout.d.ts +2 -1
- package/dist/global/promise-with-timeout.js +6 -2
- package/dist/global/react-dom-renderer.js +1 -0
- package/dist/global/react-render-adapter.d.ts +29 -0
- package/dist/global/react-render-adapter.js +41 -0
- package/dist/global/rerender-hoc.d.ts +5 -9
- package/dist/global/rerender-hoc.js +7 -3
- package/dist/global/theme.js +15 -0
- package/dist/global/trivial-template-tag.js +2 -0
- package/dist/global/url.js +3 -1
- package/dist/global/variables.d.ts +0 -1
- package/dist/grid/col.js +2 -1
- package/dist/grid/grid.js +1 -0
- package/dist/grid/row.js +1 -1
- package/dist/group-ng/group-ng.js +1 -1
- package/dist/header/header.js +18 -14
- package/dist/header/logo.js +2 -0
- package/dist/header/profile.d.ts +3 -3
- package/dist/header/profile.js +3 -1
- package/dist/header/services-link.js +1 -0
- package/dist/header/services.js +2 -0
- package/dist/header/smart-profile.js +17 -13
- package/dist/header/smart-services.js +14 -11
- package/dist/header/tray-icon.js +2 -0
- package/dist/heading/heading.js +3 -3
- package/dist/http/http.js +4 -2
- package/dist/http/http.mock.js +2 -0
- package/dist/hub-source/hub-source.js +1 -1
- package/dist/hub-source/hub-source__user.js +4 -2
- package/dist/hub-source/hub-source__users-groups.js +3 -2
- package/dist/icon/icon.js +3 -3
- package/dist/icon/icon__svg.js +2 -0
- package/dist/icon/index.js +2 -0
- package/dist/icon-ng/icon-ng.js +7 -5
- package/dist/input/input.d.ts +3 -1
- package/dist/input/input.js +5 -3
- package/dist/input-ng/input-ng.js +6 -59
- package/dist/island/adaptive-island-hoc.d.ts +4 -8
- package/dist/island/adaptive-island-hoc.js +4 -3
- package/dist/island/content.d.ts +33 -2
- package/dist/island/content.js +8 -4
- package/dist/island/header.js +3 -2
- package/dist/island/island.d.ts +4 -8
- package/dist/island/island.js +1 -0
- package/dist/island-ng/island-content-ng.js +2 -16
- package/dist/island-ng/island-header-ng.js +2 -8
- package/dist/island-ng/island-ng-class-fixer.js +2 -0
- package/dist/island-ng/island-ng.js +2 -8
- package/dist/link/clickableLink.d.ts +1 -1
- package/dist/link/clickableLink.js +1 -0
- package/dist/link/link.d.ts +14 -22
- package/dist/link/link.js +5 -4
- package/dist/link-ng/link-ng.js +1 -4
- package/dist/list/consts.d.ts +3 -1
- package/dist/list/list.d.ts +2 -0
- package/dist/list/list.js +30 -23
- package/dist/list/list__custom.js +1 -0
- package/dist/list/list__item.js +6 -4
- package/dist/list/list__link.js +3 -1
- package/dist/list/list__users-groups-source.js +4 -2
- package/dist/loader/loader.js +1 -0
- package/dist/loader/loader__core.js +5 -4
- package/dist/loader-inline/loader-inline.js +1 -0
- package/dist/loader-inline-ng/loader-inline-ng.js +1 -1
- package/dist/loader-ng/loader-ng.js +1 -0
- package/dist/loader-screen/loader-screen.js +1 -0
- package/dist/loader-screen-ng/loader-screen-ng.js +2 -6
- package/dist/login-dialog/login-dialog.js +3 -1
- package/dist/login-dialog/service.js +4 -1
- package/dist/markdown/code.js +1 -0
- package/dist/markdown/link.js +1 -0
- package/dist/markdown/markdown.js +2 -1
- package/dist/message/message.js +39 -33
- package/dist/old-browsers-message/old-browsers-message.js +2 -1
- package/dist/old-browsers-message/old-browsers-message__stop.js +1 -0
- package/dist/old-browsers-message/white-list.js +1 -0
- package/dist/pager/pager.js +7 -4
- package/dist/pager-ng/pager-ng.js +5 -2
- package/dist/panel-ng/panel-ng.js +1 -0
- package/dist/permissions/permissions.js +1 -1
- package/dist/permissions-ng/permissions-ng.js +14 -1
- package/dist/place-under-ng/place-under-ng.js +3 -2
- package/dist/popup/popup.d.ts +7 -1
- package/dist/popup/popup.js +11 -7
- package/dist/popup/popup.target.d.ts +1 -1
- package/dist/popup/position.d.ts +1 -1
- package/dist/popup/position.js +3 -2
- package/dist/popup-menu/popup-menu.d.ts +1 -0
- package/dist/popup-menu/popup-menu.js +3 -1
- package/dist/progress-bar/progress-bar.js +3 -2
- package/dist/progress-bar-ng/progress-bar-ng.js +2 -0
- package/dist/promised-click-ng/promised-click-ng.js +2 -0
- package/dist/proxy-attrs/proxy-attrs.js +5 -3
- package/dist/query-assist/query-assist.d.ts +5 -9
- package/dist/query-assist/query-assist.js +9 -5
- package/dist/query-assist/query-assist__suggestions.js +3 -1
- package/dist/query-assist-ng/query-assist-ng.js +7 -3
- package/dist/radio/radio.d.ts +1 -1
- package/dist/radio/radio.js +1 -0
- package/dist/radio/radio__item.js +1 -0
- package/dist/radio-ng/radio-ng.js +2 -18
- package/dist/save-field-ng/save-field-ng.js +3 -1
- package/dist/save-field-ng/save-field-ng__template.js +1 -32
- package/dist/select/select.d.ts +12 -14
- package/dist/select/select.js +33 -22
- package/dist/select/select__filter.js +4 -2
- package/dist/select/select__popup.d.ts +4 -1
- package/dist/select/select__popup.js +9 -4
- package/dist/select-ng/select-ng.js +23 -8
- package/dist/select-ng/select-ng__lazy.js +30 -12
- package/dist/select-ng/select-ng__options.js +2 -2
- package/dist/shortcuts/shortcuts-hoc.d.ts +4 -8
- package/dist/shortcuts/shortcuts-hoc.js +4 -3
- package/dist/shortcuts/shortcuts.d.ts +1 -1
- package/dist/shortcuts-hint-ng/shortcuts-hint-ng.js +3 -0
- package/dist/shortcuts-hint-ng/shortcuts-hint-ng__template.js +1 -48
- package/dist/shortcuts-ng/shortcuts-ng.js +4 -3
- package/dist/sidebar-ng/sidebar-ng.js +2 -0
- package/dist/sidebar-ng/sidebar-ng__button-template.js +1 -18
- package/dist/sidebar-ng/sidebar-ng__template.js +1 -10
- package/dist/storage/storage.js +13 -0
- package/dist/storage/storage__fallback.js +4 -3
- package/dist/storage/storage__local.js +13 -0
- package/dist/style.css +1 -1
- package/dist/tab-trap/tab-trap.d.ts +1 -1
- package/dist/tab-trap/tab-trap.js +2 -1
- package/dist/table/cell.js +1 -0
- package/dist/table/disable-hover-hoc.d.ts +4 -8
- package/dist/table/disable-hover-hoc.js +4 -3
- package/dist/table/header-cell.js +2 -0
- package/dist/table/header.d.ts +8 -1
- package/dist/table/header.js +3 -1
- package/dist/table/multitable.js +1 -0
- package/dist/table/row-with-focus-sensor.d.ts +4 -4
- package/dist/table/row-with-focus-sensor.js +15 -5
- package/dist/table/row.d.ts +1 -0
- package/dist/table/row.js +4 -2
- package/dist/table/selection-adapter.js +2 -0
- package/dist/table/selection-shortcuts-hoc.js +1 -0
- package/dist/table/selection.js +1 -0
- package/dist/table/smart-table.d.ts +1 -0
- package/dist/table/smart-table.js +13 -7
- package/dist/table/table.d.ts +4 -8
- package/dist/table/table.js +3 -1
- package/dist/table-legacy-ng/table-legacy-ng.js +13 -47
- package/dist/table-legacy-ng/table-legacy-ng__pager.js +6 -9
- package/dist/table-legacy-ng/table-legacy-ng__toolbar.js +2 -1
- package/dist/table-ng/smart-table-ng.js +4 -1
- package/dist/table-ng/table-ng.js +4 -1
- package/dist/tabs/collapsible-more.js +4 -2
- package/dist/tabs/collapsible-tab.js +1 -0
- package/dist/tabs/collapsible-tabs.d.ts +2 -2
- package/dist/tabs/collapsible-tabs.js +3 -1
- package/dist/tabs/custom-item.d.ts +1 -1
- package/dist/tabs/dumb-tabs.d.ts +2 -2
- package/dist/tabs/dumb-tabs.js +3 -1
- package/dist/tabs/smart-tabs.d.ts +4 -4
- package/dist/tabs/smart-tabs.js +10 -6
- package/dist/tabs/tab-link.d.ts +1 -1
- package/dist/tabs/tab-link.js +1 -0
- package/dist/tabs/tab.d.ts +1 -1
- package/dist/tabs/tab.js +1 -0
- package/dist/tabs/tabs.js +3 -1
- package/dist/tabs-ng/tabs-ng.js +1 -0
- package/dist/tabs-ng/tabs-ng__template.js +1 -38
- package/dist/tag/tag.js +4 -3
- package/dist/tags-input/tags-input.d.ts +4 -8
- package/dist/tags-input/tags-input.js +6 -3
- package/dist/tags-input-ng/tags-input-ng.js +5 -2
- package/dist/tags-list/tags-list.d.ts +1 -1
- package/dist/tags-list/tags-list.js +3 -1
- package/dist/template-ng/template-ng.js +1 -0
- package/dist/text/text.js +1 -1
- package/dist/theme-ng/theme-ng.js +1 -0
- package/dist/toggle/toggle.js +2 -1
- package/dist/toggle-ng/toggle-ng.js +2 -0
- package/dist/tooltip/tooltip.js +3 -1
- package/dist/tooltip-ng/tooltip-ng.js +12 -6
- package/dist/user-agreement/service.d.ts +14 -62
- package/dist/user-agreement/service.js +14 -8
- package/dist/user-agreement/toolbox.eula.js +1 -160
- package/dist/user-agreement/user-agreement.js +3 -1
- package/dist/user-card/card.js +2 -0
- package/dist/user-card/smart-user-card-tooltip.js +2 -0
- package/dist/user-card/tooltip.js +2 -0
- package/dist/user-card/user-card.js +2 -0
- package/dist/user-card-ng/user-card-ng.js +3 -0
- package/package.json +74 -66
|
@@ -58,7 +58,7 @@ export interface QueryAssistProps {
|
|
|
58
58
|
actions?: ReactNode[] | null | undefined;
|
|
59
59
|
'data-test'?: string | null | undefined;
|
|
60
60
|
}
|
|
61
|
-
interface StyleRange {
|
|
61
|
+
export interface StyleRange {
|
|
62
62
|
style: string;
|
|
63
63
|
start: number;
|
|
64
64
|
length: number;
|
|
@@ -294,18 +294,14 @@ export default class QueryAssist extends Component<QueryAssistProps> {
|
|
|
294
294
|
export declare type QueryAssistAttrs = JSX.LibraryManagedAttributes<typeof QueryAssist, QueryAssistProps>;
|
|
295
295
|
export declare const RerenderableQueryAssist: {
|
|
296
296
|
new (props: QueryAssistProps): {
|
|
297
|
-
_propsCache:
|
|
298
|
-
|
|
299
|
-
}>;
|
|
300
|
-
rerender(props?: Partial<QueryAssistProps>, callback?: (() => void) | undefined): void | Element | React.Component<QueryAssistProps, any, any>;
|
|
297
|
+
_propsCache: QueryAssistProps & React.RefAttributes<unknown>;
|
|
298
|
+
rerender(props?: Partial<QueryAssistProps>, callback?: (() => void) | undefined): void;
|
|
301
299
|
node?: HTMLElement | null | undefined;
|
|
302
|
-
context:
|
|
300
|
+
context: unknown;
|
|
303
301
|
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<QueryAssistProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
|
304
302
|
forceUpdate(callback?: (() => void) | undefined): void;
|
|
305
303
|
render(): React.ReactNode;
|
|
306
|
-
readonly props: Readonly<QueryAssistProps
|
|
307
|
-
children?: React.ReactNode;
|
|
308
|
-
}>;
|
|
304
|
+
readonly props: Readonly<QueryAssistProps>;
|
|
309
305
|
state: Readonly<{}>;
|
|
310
306
|
refs: {
|
|
311
307
|
[key: string]: React.ReactInstance;
|
|
@@ -3,8 +3,8 @@ import PropTypes from 'prop-types';
|
|
|
3
3
|
import debounce from 'just-debounce-it';
|
|
4
4
|
import classNames from 'classnames';
|
|
5
5
|
import deepEqual from 'deep-equal';
|
|
6
|
-
import searchIcon from '@jetbrains/icons/search';
|
|
7
|
-
import closeIcon from '@jetbrains/icons/close';
|
|
6
|
+
import searchIcon from '@jetbrains/icons/search-12px';
|
|
7
|
+
import closeIcon from '@jetbrains/icons/close-12px';
|
|
8
8
|
import getUID from '../global/get-uid';
|
|
9
9
|
import dataTests from '../global/data-tests';
|
|
10
10
|
import { getRect, preventDefault } from '../global/dom';
|
|
@@ -10,7 +10,7 @@ export default class Radio extends Component<RadioProps> {
|
|
|
10
10
|
disabled: PropTypes.Requireable<boolean>;
|
|
11
11
|
value: PropTypes.Requireable<string | number | boolean>;
|
|
12
12
|
onChange: PropTypes.Requireable<(...args: any[]) => any>;
|
|
13
|
-
children: PropTypes.Validator<string | number | boolean |
|
|
13
|
+
children: PropTypes.Validator<string | number | boolean | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
|
|
14
14
|
};
|
|
15
15
|
static Item: React.ForwardRefExoticComponent<import("./radio__item").RadioItemProps & React.RefAttributes<import("./radio__item").Radio>>;
|
|
16
16
|
uid: string;
|
|
@@ -63,6 +63,9 @@
|
|
|
63
63
|
.selectedIcon {
|
|
64
64
|
composes: resetButton from "../global/global.css";
|
|
65
65
|
|
|
66
|
+
position: relative;
|
|
67
|
+
top: 3px;
|
|
68
|
+
|
|
66
69
|
display: inline-block;
|
|
67
70
|
|
|
68
71
|
width: calc(2 * unit);
|
|
@@ -78,7 +81,7 @@
|
|
|
78
81
|
.clearIcon {
|
|
79
82
|
padding: 0 3px;
|
|
80
83
|
|
|
81
|
-
vertical-align: -
|
|
84
|
+
vertical-align: -2px;
|
|
82
85
|
}
|
|
83
86
|
|
|
84
87
|
.sizeS {
|
|
@@ -45,6 +45,7 @@ export interface CustomAnchorProps {
|
|
|
45
45
|
buttonProps: ButtonHTMLAttributes<HTMLButtonElement> & DataTestProps;
|
|
46
46
|
popup: ReactNode;
|
|
47
47
|
}
|
|
48
|
+
export declare type CustomAnchor = ((props: CustomAnchorProps) => ReactNode);
|
|
48
49
|
export interface BaseSelectProps<T = unknown> {
|
|
49
50
|
data: readonly SelectItem<T>[];
|
|
50
51
|
filter: boolean | Filter<T>;
|
|
@@ -60,7 +61,7 @@ export interface BaseSelectProps<T = unknown> {
|
|
|
60
61
|
maxHeight: number;
|
|
61
62
|
hideArrow: boolean;
|
|
62
63
|
directions: readonly Directions[];
|
|
63
|
-
label: string;
|
|
64
|
+
label: string | null;
|
|
64
65
|
selectedLabel: ReactNode;
|
|
65
66
|
inputPlaceholder: string;
|
|
66
67
|
shortcutsEnabled: boolean;
|
|
@@ -68,7 +69,7 @@ export interface BaseSelectProps<T = unknown> {
|
|
|
68
69
|
onLoadMore: () => void;
|
|
69
70
|
onOpen: () => void;
|
|
70
71
|
onFilter: (value: string) => void;
|
|
71
|
-
onFocus: () => void;
|
|
72
|
+
onFocus: (e: React.FocusEvent<HTMLInputElement>) => void;
|
|
72
73
|
onBlur: () => void;
|
|
73
74
|
onKeyDown: (event: React.KeyboardEvent<HTMLInputElement>) => void;
|
|
74
75
|
onSelect: (selected: SelectItem<T> | null, event?: Event | SyntheticEvent) => void;
|
|
@@ -77,6 +78,7 @@ export interface BaseSelectProps<T = unknown> {
|
|
|
77
78
|
onDone: () => void;
|
|
78
79
|
onReset: () => void;
|
|
79
80
|
dir: 'ltr' | 'rtl';
|
|
81
|
+
renderBottomToolbar?: () => ReactNode;
|
|
80
82
|
height?: ControlsHeight | undefined;
|
|
81
83
|
targetElement?: HTMLElement | null | undefined;
|
|
82
84
|
className?: string | null | undefined;
|
|
@@ -93,7 +95,7 @@ export interface BaseSelectProps<T = unknown> {
|
|
|
93
95
|
hint?: ReactNode;
|
|
94
96
|
add?: Add | null | undefined;
|
|
95
97
|
compact?: boolean | null | undefined;
|
|
96
|
-
customAnchor?:
|
|
98
|
+
customAnchor?: CustomAnchor | null | undefined;
|
|
97
99
|
disableMoveOverflow?: boolean | null | undefined;
|
|
98
100
|
disableScrollToActive?: boolean | null | undefined;
|
|
99
101
|
'data-test'?: string | null | undefined;
|
|
@@ -112,7 +114,7 @@ export interface MultipleSelectProps<T = unknown> extends BaseSelectProps<T> {
|
|
|
112
114
|
onChange: (selected: SelectItem<T>[], event?: Event | SyntheticEvent) => void;
|
|
113
115
|
tags?: Tags | boolean | null | undefined;
|
|
114
116
|
}
|
|
115
|
-
declare type SelectProps<T = unknown> = SingleSelectProps<T> | MultipleSelectProps<T>;
|
|
117
|
+
export declare type SelectProps<T = unknown> = SingleSelectProps<T> | MultipleSelectProps<T>;
|
|
116
118
|
interface AddButton {
|
|
117
119
|
prefix: string | null | undefined;
|
|
118
120
|
label: string;
|
|
@@ -161,8 +163,8 @@ export default class Select<T = unknown> extends Component<SelectProps<T>, Selec
|
|
|
161
163
|
maxHeight: number;
|
|
162
164
|
directions: Directions[];
|
|
163
165
|
selected: null;
|
|
164
|
-
label:
|
|
165
|
-
selectedLabel:
|
|
166
|
+
label: null;
|
|
167
|
+
selectedLabel: null;
|
|
166
168
|
inputPlaceholder: string;
|
|
167
169
|
hint: null;
|
|
168
170
|
shortcutsEnabled: boolean;
|
|
@@ -256,18 +258,14 @@ export declare type MultipleSelectAttrs<T = unknown> = JSX.LibraryManagedAttribu
|
|
|
256
258
|
export declare type SelectAttrs<T = unknown> = JSX.LibraryManagedAttributes<typeof Select, SelectProps<T>>;
|
|
257
259
|
export declare const RerenderableSelect: {
|
|
258
260
|
new (props: SelectProps<unknown>): {
|
|
259
|
-
_propsCache:
|
|
260
|
-
|
|
261
|
-
}>;
|
|
262
|
-
rerender(props?: Partial<SelectProps<unknown>>, callback?: (() => void) | undefined): void | Element | React.Component<SelectProps<unknown>, any, any>;
|
|
261
|
+
_propsCache: SelectProps<unknown> & React.RefAttributes<unknown>;
|
|
262
|
+
rerender(props?: Partial<SelectProps<unknown>>, callback?: (() => void) | undefined): void;
|
|
263
263
|
node?: HTMLElement | null | undefined;
|
|
264
|
-
context:
|
|
264
|
+
context: unknown;
|
|
265
265
|
setState<K extends keyof SelectState<unknown>>(state: SelectState<unknown> | ((prevState: Readonly<SelectState<unknown>>, props: Readonly<SelectProps<unknown>>) => SelectState<unknown> | Pick<SelectState<unknown>, K> | null) | Pick<SelectState<unknown>, K> | null, callback?: (() => void) | undefined): void;
|
|
266
266
|
forceUpdate(callback?: (() => void) | undefined): void;
|
|
267
267
|
render(): React.ReactNode;
|
|
268
|
-
readonly props: Readonly<SelectProps<unknown
|
|
269
|
-
children?: React.ReactNode;
|
|
270
|
-
}>;
|
|
268
|
+
readonly props: Readonly<SelectProps<unknown>>;
|
|
271
269
|
state: Readonly<SelectState<unknown>>;
|
|
272
270
|
refs: {
|
|
273
271
|
[key: string]: React.ReactInstance;
|
|
@@ -2,7 +2,7 @@ import React, { Component, Fragment } from 'react';
|
|
|
2
2
|
import classNames from 'classnames';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import chevronDownIcon from '@jetbrains/icons/chevron-down';
|
|
5
|
-
import closeIcon from '@jetbrains/icons/close';
|
|
5
|
+
import closeIcon from '@jetbrains/icons/close-12px';
|
|
6
6
|
import deepEqual from 'deep-equal';
|
|
7
7
|
import { Anchor } from '../dropdown/dropdown';
|
|
8
8
|
import Avatar, { Size as AvatarSize } from '../avatar/avatar';
|
|
@@ -75,8 +75,8 @@ function buildMultipleMap(selected) {
|
|
|
75
75
|
}
|
|
76
76
|
function getListItems(props, state, rawFilterString, data = props.data) {
|
|
77
77
|
let filterString = rawFilterString.trim();
|
|
78
|
-
if (isInputMode(props.type) &&
|
|
79
|
-
filterString === state.selected.label) {
|
|
78
|
+
if (isInputMode(props.type) && !props.allowAny && state.selected &&
|
|
79
|
+
!Array.isArray(state.selected) && filterString === state.selected.label) {
|
|
80
80
|
filterString = ''; // ignore multiple if it is exactly the selected item
|
|
81
81
|
}
|
|
82
82
|
const lowerCaseString = filterString.toLowerCase();
|
|
@@ -197,8 +197,8 @@ export default class Select extends Component {
|
|
|
197
197
|
Popup.PopupProps.Directions.TOP_RIGHT
|
|
198
198
|
],
|
|
199
199
|
selected: null,
|
|
200
|
-
label:
|
|
201
|
-
selectedLabel:
|
|
200
|
+
label: null,
|
|
201
|
+
selectedLabel: null,
|
|
202
202
|
inputPlaceholder: '',
|
|
203
203
|
hint: null,
|
|
204
204
|
shortcutsEnabled: false,
|
|
@@ -253,6 +253,9 @@ export default class Select extends Component {
|
|
|
253
253
|
if (prevMultiple !== multiple && !deepEqual(prevMultiple, multiple)) {
|
|
254
254
|
nextState.selected = multiple ? [] : null;
|
|
255
255
|
}
|
|
256
|
+
if (multiple && !nextState.selected) {
|
|
257
|
+
nextState.selected = prevState.selected;
|
|
258
|
+
}
|
|
256
259
|
const { selected } = { ...prevState, ...nextState };
|
|
257
260
|
if (selected && Array.isArray(selected)) {
|
|
258
261
|
nextState.multipleMap = buildMultipleMap(selected);
|
|
@@ -296,8 +299,8 @@ export default class Select extends Component {
|
|
|
296
299
|
id = getUID('select-');
|
|
297
300
|
shortcutsScope = this.id;
|
|
298
301
|
listId = `${this.id}:list`;
|
|
299
|
-
_focusHandler = () => {
|
|
300
|
-
this.props.onFocus();
|
|
302
|
+
_focusHandler = (e) => {
|
|
303
|
+
this.props.onFocus(e);
|
|
301
304
|
this.setState({
|
|
302
305
|
shortcutsEnabled: true,
|
|
303
306
|
focused: true
|
|
@@ -441,13 +444,14 @@ export default class Select extends Component {
|
|
|
441
444
|
}
|
|
442
445
|
_hidePopup(tryFocusAnchor) {
|
|
443
446
|
if (this.node && this.state.showPopup) {
|
|
444
|
-
this.setState({
|
|
447
|
+
this.setState(prevState => ({
|
|
445
448
|
showPopup: false,
|
|
446
|
-
filterValue: ''
|
|
447
|
-
});
|
|
449
|
+
filterValue: this.props.allowAny ? prevState.filterValue : ''
|
|
450
|
+
}));
|
|
448
451
|
if (tryFocusAnchor) {
|
|
449
|
-
const
|
|
452
|
+
const focusableSelectExists = this.node &&
|
|
450
453
|
this.node.querySelector('[data-test~=ring-select__focus]');
|
|
454
|
+
const restoreFocusNode = this.props.targetElement || focusableSelectExists;
|
|
451
455
|
if (restoreFocusNode) {
|
|
452
456
|
restoreFocusNode.focus();
|
|
453
457
|
}
|
|
@@ -460,15 +464,16 @@ export default class Select extends Component {
|
|
|
460
464
|
this.props.onAdd(value);
|
|
461
465
|
};
|
|
462
466
|
getToolbar() {
|
|
463
|
-
const { hint } = this.props;
|
|
467
|
+
const { hint, renderBottomToolbar } = this.props;
|
|
464
468
|
const { prefix, label, delayed } = this.state.addButton || {};
|
|
465
|
-
const isToolbarHasElements = this.state.addButton || hint;
|
|
469
|
+
const isToolbarHasElements = this.state.addButton || hint || renderBottomToolbar;
|
|
466
470
|
if (!isToolbarHasElements) {
|
|
467
471
|
return null;
|
|
468
472
|
}
|
|
469
473
|
return (<div className={classNames({
|
|
470
|
-
[styles.toolbar]:
|
|
474
|
+
[styles.toolbar]: Boolean(this.state.addButton || renderBottomToolbar)
|
|
471
475
|
})} data-test="ring-select-toolbar">
|
|
476
|
+
{renderBottomToolbar && renderBottomToolbar()}
|
|
472
477
|
{this.state.addButton && (<Button text delayed={delayed} className={classNames(styles.button, styles.buttonSpaced)} onClick={this.addHandler} data-test="ring-select-toolbar-button">
|
|
473
478
|
{prefix ? `${prefix} ${label}` : label}
|
|
474
479
|
</Button>)}
|
|
@@ -710,9 +715,7 @@ export default class Select extends Component {
|
|
|
710
715
|
!this.state.selected;
|
|
711
716
|
}
|
|
712
717
|
_getLabel() {
|
|
713
|
-
return this.props.label
|
|
714
|
-
(typeof this.props.selectedLabel === 'string' ? this.props.selectedLabel : null) ||
|
|
715
|
-
'Select an option';
|
|
718
|
+
return this.props.label ?? this.props.selectedLabel ?? 'Select an option';
|
|
716
719
|
}
|
|
717
720
|
_getSelectedString() {
|
|
718
721
|
if (Array.isArray(this.state.selected)) {
|
|
@@ -21,6 +21,9 @@ export interface Multiple {
|
|
|
21
21
|
label?: string | null | undefined;
|
|
22
22
|
limit?: number | null | undefined;
|
|
23
23
|
selectAll?: boolean | null | undefined;
|
|
24
|
+
renderSelectedItemsDescription?: (selectedItems: SelectItem[], total: number) => ReactNode;
|
|
25
|
+
selectAllLabel?: string;
|
|
26
|
+
deselectAllLabel?: string;
|
|
24
27
|
removeSelectedItems?: boolean | null | undefined;
|
|
25
28
|
}
|
|
26
29
|
export interface TagsReset {
|
|
@@ -105,7 +108,7 @@ export default class SelectPopup<T = unknown> extends PureComponent<SelectPopupP
|
|
|
105
108
|
getFilterWithTags(): JSX.Element | null;
|
|
106
109
|
getBottomLine(): "" | JSX.Element | null;
|
|
107
110
|
handleListResize: () => void;
|
|
108
|
-
getList(ringPopupTarget: string | undefined): JSX.Element | null;
|
|
111
|
+
getList(ringPopupTarget: string | Element | undefined): JSX.Element | null;
|
|
109
112
|
handleSelectAll: () => void;
|
|
110
113
|
getSelectAll: () => false | JSX.Element;
|
|
111
114
|
private _adjustListMaxHeight;
|
|
@@ -245,16 +245,17 @@ export default class SelectPopup extends PureComponent {
|
|
|
245
245
|
}
|
|
246
246
|
};
|
|
247
247
|
getSelectAll = () => {
|
|
248
|
+
const multiple = this.props.multiple;
|
|
248
249
|
const activeFilters = this.props.data.filter(item => !item.disabled);
|
|
249
250
|
return Array.isArray(this.props.selected) && (<div className={styles.selectAll}>
|
|
250
251
|
{activeFilters.length === 0
|
|
251
252
|
? (<span />)
|
|
252
253
|
: (<Button text inline onClick={this.handleSelectAll}>
|
|
253
254
|
{activeFilters.length !== this.props.selected.length
|
|
254
|
-
? 'Select all'
|
|
255
|
-
: 'Deselect all'}
|
|
255
|
+
? multiple.selectAllLabel || 'Select all'
|
|
256
|
+
: multiple.deselectAllLabel || 'Deselect all'}
|
|
256
257
|
</Button>)}
|
|
257
|
-
<Text info>{`${this.props.selected.length} selected`}</Text>
|
|
258
|
+
{multiple.renderSelectedItemsDescription?.(this.props.selected, activeFilters.length) || (<Text info>{`${this.props.selected.length} selected`}</Text>)}
|
|
258
259
|
</div>);
|
|
259
260
|
};
|
|
260
261
|
// Cache the value because this method is called
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import angular from 'angular';
|
|
2
2
|
|
|
3
3
|
import React from 'react';
|
|
4
|
-
import {render, unmountComponentAtNode} from 'react-dom';
|
|
5
4
|
|
|
5
|
+
import {render, unmountComponentAtNode} from '../global/react-render-adapter';
|
|
6
6
|
import getEventKey from '../global/get-event-key';
|
|
7
7
|
import Select, {RerenderableSelect} from '../select/select';
|
|
8
8
|
import MessageBundle from '../message-bundle-ng/message-bundle-ng';
|
|
@@ -376,9 +376,15 @@ angularModule.directive('rgSelect', function rgSelectDirective() {
|
|
|
376
376
|
return sizes[ctrl.size] || sizes.FULL;
|
|
377
377
|
}
|
|
378
378
|
|
|
379
|
+
function selectRef(instance) {
|
|
380
|
+
if (instance != null) {
|
|
381
|
+
ctrl.selectInstance = instance;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
|
|
379
385
|
function reRenderSelect(props) {
|
|
380
|
-
if (ctrl.selectInstance
|
|
381
|
-
ctrl.selectInstance.rerender(props);
|
|
386
|
+
if (ctrl.selectInstance?.node) {
|
|
387
|
+
ctrl.selectInstance.rerender({...props, ref: selectRef});
|
|
382
388
|
}
|
|
383
389
|
}
|
|
384
390
|
|
|
@@ -518,9 +524,14 @@ angularModule.directive('rgSelect', function rgSelectDirective() {
|
|
|
518
524
|
ctrl.config = angular.extend({}, ctrl.defaultConfig, ctrl.config || {});
|
|
519
525
|
|
|
520
526
|
if (getType() === 'suggest' || getType() === 'input') {
|
|
521
|
-
|
|
527
|
+
render(
|
|
528
|
+
<RerenderableSelect
|
|
529
|
+
ref={selectRef}
|
|
530
|
+
{...ctrl.config}
|
|
531
|
+
/>,
|
|
532
|
+
container);
|
|
522
533
|
} else {
|
|
523
|
-
ctrl.selectInstance = new SelectLazy(container, ctrl.config, ctrl, getType());
|
|
534
|
+
ctrl.selectInstance = new SelectLazy(container, ctrl.config, ctrl, getType(), selectRef);
|
|
524
535
|
}
|
|
525
536
|
|
|
526
537
|
// Preserve existing contents of the directive
|
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
import angular from 'angular';
|
|
2
2
|
|
|
3
|
-
import {render, hydrate} from 'react-dom';
|
|
4
3
|
import React from 'react';
|
|
5
4
|
|
|
5
|
+
import {render, hydrate} from '../global/react-render-adapter';
|
|
6
6
|
import {RerenderableSelect} from '../select/select';
|
|
7
7
|
|
|
8
8
|
class SelectLazy {
|
|
9
|
-
constructor(container, props, ctrl, type) {
|
|
9
|
+
constructor(container, props, ctrl, type, selectRef) {
|
|
10
10
|
this.container = container;
|
|
11
11
|
this.ctrl = ctrl;
|
|
12
12
|
this.props = props || {};
|
|
13
13
|
this.type = type;
|
|
14
14
|
this.node = container;
|
|
15
|
+
this.selectInstance = null;
|
|
16
|
+
this.selectRef = node => {
|
|
17
|
+
this.selectInstance = node;
|
|
18
|
+
selectRef(node);
|
|
19
|
+
};
|
|
15
20
|
this._popup = {
|
|
16
21
|
isVisible: angular.noop
|
|
17
22
|
};
|
|
@@ -38,15 +43,20 @@ class SelectLazy {
|
|
|
38
43
|
}
|
|
39
44
|
|
|
40
45
|
attachEvents() {
|
|
41
|
-
this.container.addEventListener('click', this.onClick);
|
|
46
|
+
this.container.addEventListener('click', this.onClick, {capture: true});
|
|
42
47
|
}
|
|
43
48
|
|
|
44
49
|
detachEvents() {
|
|
45
|
-
this.container.removeEventListener('click', this.onClick);
|
|
50
|
+
this.container.removeEventListener('click', this.onClick, {capture: true});
|
|
46
51
|
}
|
|
47
52
|
|
|
48
53
|
render(props) {
|
|
49
|
-
this.reactSelect =
|
|
54
|
+
this.reactSelect = (
|
|
55
|
+
<RerenderableSelect
|
|
56
|
+
{...Object.assign({}, this.props, props || {})}
|
|
57
|
+
ref={this.selectRef}
|
|
58
|
+
/>
|
|
59
|
+
);
|
|
50
60
|
this.props = this.reactSelect.props;
|
|
51
61
|
|
|
52
62
|
if (this.type !== 'dropdown') {
|
|
@@ -58,11 +68,12 @@ class SelectLazy {
|
|
|
58
68
|
_clickHandler() {
|
|
59
69
|
this.detachEvents();
|
|
60
70
|
if (this.type === 'dropdown') {
|
|
61
|
-
|
|
71
|
+
render(this.reactSelect, this.container);
|
|
72
|
+
// Hack for React17, where click event is not triggered on just rendered Select node
|
|
73
|
+
this.selectInstance?._openPopupIfClosed?.();
|
|
62
74
|
} else {
|
|
63
|
-
|
|
75
|
+
hydrate(this.reactSelect, this.container);
|
|
64
76
|
}
|
|
65
|
-
this.ctrl.selectInstance._openPopupIfClosed();
|
|
66
77
|
}
|
|
67
78
|
}
|
|
68
79
|
|
|
@@ -67,7 +67,9 @@ describe('Select Lazy', () => {
|
|
|
67
67
|
|
|
68
68
|
|
|
69
69
|
function renderLazySelect(type = 'button') {
|
|
70
|
-
const lazySelect = new SelectLazy(containerNode, {}, ctrl, type
|
|
70
|
+
const lazySelect = new SelectLazy(containerNode, {}, ctrl, type, instance => {
|
|
71
|
+
ctrl.selectInstance = instance;
|
|
72
|
+
});
|
|
71
73
|
lazySelect.render();
|
|
72
74
|
return lazySelect;
|
|
73
75
|
}
|
|
@@ -12,12 +12,10 @@ export default function shortcutsHOC<P>(ComposedComponent: ComponentType<P> | st
|
|
|
12
12
|
new (props: (P & ShortcutsHOCProps) | Readonly<P & ShortcutsHOCProps>): {
|
|
13
13
|
_shortcutsScopeUid: string;
|
|
14
14
|
render(): JSX.Element;
|
|
15
|
-
context:
|
|
15
|
+
context: unknown;
|
|
16
16
|
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<P & ShortcutsHOCProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
|
17
17
|
forceUpdate(callback?: (() => void) | undefined): void;
|
|
18
|
-
readonly props: Readonly<P & ShortcutsHOCProps
|
|
19
|
-
children?: React.ReactNode;
|
|
20
|
-
}>;
|
|
18
|
+
readonly props: Readonly<P & ShortcutsHOCProps>;
|
|
21
19
|
state: Readonly<{}>;
|
|
22
20
|
refs: {
|
|
23
21
|
[key: string]: React.ReactInstance;
|
|
@@ -38,12 +36,10 @@ export default function shortcutsHOC<P>(ComposedComponent: ComponentType<P> | st
|
|
|
38
36
|
new (props: P & ShortcutsHOCProps, context: any): {
|
|
39
37
|
_shortcutsScopeUid: string;
|
|
40
38
|
render(): JSX.Element;
|
|
41
|
-
context:
|
|
39
|
+
context: unknown;
|
|
42
40
|
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<P & ShortcutsHOCProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
|
43
41
|
forceUpdate(callback?: (() => void) | undefined): void;
|
|
44
|
-
readonly props: Readonly<P & ShortcutsHOCProps
|
|
45
|
-
children?: React.ReactNode;
|
|
46
|
-
}>;
|
|
42
|
+
readonly props: Readonly<P & ShortcutsHOCProps>;
|
|
47
43
|
state: Readonly<{}>;
|
|
48
44
|
refs: {
|
|
49
45
|
[key: string]: React.ReactInstance;
|
|
@@ -24,5 +24,5 @@ export default class Shortcuts extends PureComponent<ShortcutsProps> {
|
|
|
24
24
|
componentWillUnmount(): void;
|
|
25
25
|
turnShorcutsOn(): void;
|
|
26
26
|
turnShorcutsOff(): void;
|
|
27
|
-
render():
|
|
27
|
+
render(): true | import("react").ReactChild | import("react").ReactFragment | null;
|
|
28
28
|
}
|
|
@@ -13,7 +13,7 @@ export interface TabTrapProps extends HTMLAttributes<HTMLElement> {
|
|
|
13
13
|
*/
|
|
14
14
|
export default class TabTrap extends Component<TabTrapProps> {
|
|
15
15
|
static propTypes: {
|
|
16
|
-
children: PropTypes.Validator<string | number | boolean |
|
|
16
|
+
children: PropTypes.Validator<string | number | boolean | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
|
|
17
17
|
trapDisabled: PropTypes.Requireable<boolean>;
|
|
18
18
|
autoFocusFirst: PropTypes.Requireable<boolean>;
|
|
19
19
|
focusBackOnClose: PropTypes.Requireable<boolean>;
|
|
@@ -13,12 +13,10 @@ export default function disableHoverHOC<P extends DisableHoverAddProps>(Composed
|
|
|
13
13
|
onMouseMove: () => void;
|
|
14
14
|
onKeyDown: (e: KeyboardEvent) => void;
|
|
15
15
|
render(): JSX.Element;
|
|
16
|
-
context:
|
|
16
|
+
context: unknown;
|
|
17
17
|
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<DisableHoverProps<P>>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
|
18
18
|
forceUpdate(callback?: (() => void) | undefined): void;
|
|
19
|
-
readonly props: Readonly<DisableHoverProps<P
|
|
20
|
-
children?: React.ReactNode;
|
|
21
|
-
}>;
|
|
19
|
+
readonly props: Readonly<DisableHoverProps<P>>;
|
|
22
20
|
refs: {
|
|
23
21
|
[key: string]: React.ReactInstance;
|
|
24
22
|
};
|
|
@@ -42,12 +40,10 @@ export default function disableHoverHOC<P extends DisableHoverAddProps>(Composed
|
|
|
42
40
|
onMouseMove: () => void;
|
|
43
41
|
onKeyDown: (e: KeyboardEvent) => void;
|
|
44
42
|
render(): JSX.Element;
|
|
45
|
-
context:
|
|
43
|
+
context: unknown;
|
|
46
44
|
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<DisableHoverProps<P>>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
|
47
45
|
forceUpdate(callback?: (() => void) | undefined): void;
|
|
48
|
-
readonly props: Readonly<DisableHoverProps<P
|
|
49
|
-
children?: React.ReactNode;
|
|
50
|
-
}>;
|
|
46
|
+
readonly props: Readonly<DisableHoverProps<P>>;
|
|
51
47
|
refs: {
|
|
52
48
|
[key: string]: React.ReactInstance;
|
|
53
49
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeEventHandler, PureComponent, SyntheticEvent } from 'react';
|
|
1
|
+
import { ChangeEventHandler, PureComponent, ReactNode, SyntheticEvent } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { Waypoint } from 'react-waypoint';
|
|
4
4
|
import { Column, SortParams } from './header-cell';
|
|
@@ -16,6 +16,13 @@ export interface HeaderProps {
|
|
|
16
16
|
caption?: string | null | undefined;
|
|
17
17
|
checkboxDisabled?: boolean | undefined;
|
|
18
18
|
}
|
|
19
|
+
declare module 'react-waypoint' {
|
|
20
|
+
namespace Waypoint {
|
|
21
|
+
interface WaypointProps {
|
|
22
|
+
children?: ReactNode;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
19
26
|
export default class Header extends PureComponent<HeaderProps> {
|
|
20
27
|
static propTypes: {
|
|
21
28
|
caption: PropTypes.Requireable<string>;
|
|
@@ -3,10 +3,10 @@ import { FocusSensorProps } from '../global/focus-sensor-hoc';
|
|
|
3
3
|
import Row, { RowProps } from './row';
|
|
4
4
|
import { SelectionItem } from './selection';
|
|
5
5
|
export interface RowWithFocusSensorCallbacksProps<T extends SelectionItem> extends Omit<FocusSensorProps<RowProps<T>, HTMLTableRowElement, typeof Row>, 'onFocus'> {
|
|
6
|
-
onFocus
|
|
7
|
-
onSelect
|
|
8
|
-
onCollapse
|
|
9
|
-
onExpand
|
|
6
|
+
onFocus?: (item: T) => void;
|
|
7
|
+
onSelect?: (item: T, selected: boolean) => void;
|
|
8
|
+
onCollapse?: (item: T) => void;
|
|
9
|
+
onExpand?: (item: T) => void;
|
|
10
10
|
}
|
|
11
11
|
export default class RowWithFocusSensorCallbacks<T extends SelectionItem> extends PureComponent<RowWithFocusSensorCallbacksProps<T>> {
|
|
12
12
|
RowWithFocusSensor: React.ComponentType<FocusSensorProps<RowProps<T>, HTMLDivElement, typeof Row>>;
|
|
@@ -6,16 +6,16 @@ export default class RowWithFocusSensorCallbacks extends PureComponent {
|
|
|
6
6
|
// https://stackoverflow.com/a/53882322/6304152
|
|
7
7
|
RowWithFocusSensor = getContainer();
|
|
8
8
|
onFocus = () => {
|
|
9
|
-
this.props.onFocus(this.props.item);
|
|
9
|
+
this.props.onFocus?.(this.props.item);
|
|
10
10
|
};
|
|
11
11
|
onSelect = (item, selected) => {
|
|
12
|
-
this.props.onSelect(item, selected);
|
|
12
|
+
this.props.onSelect?.(item, selected);
|
|
13
13
|
};
|
|
14
14
|
onCollapse = () => {
|
|
15
|
-
this.props.onCollapse(this.props.item);
|
|
15
|
+
this.props.onCollapse?.(this.props.item);
|
|
16
16
|
};
|
|
17
17
|
onExpand = () => {
|
|
18
|
-
this.props.onExpand(this.props.item);
|
|
18
|
+
this.props.onExpand?.(this.props.item);
|
|
19
19
|
};
|
|
20
20
|
render() {
|
|
21
21
|
return (<this.RowWithFocusSensor {...this.props} onFocus={this.onFocus} onSelect={this.onSelect} onCollapse={this.onCollapse} onExpand={this.onExpand}/>);
|
|
@@ -4,6 +4,7 @@ import { TableAttrs } from './table';
|
|
|
4
4
|
import Selection, { SelectionItem } from './selection';
|
|
5
5
|
export interface SmartTableProps<T extends SelectionItem> extends Omit<TableAttrs<T>, 'selection' | 'onSelect'> {
|
|
6
6
|
onSelectionChange: (selection: Selection<T>) => void;
|
|
7
|
+
selection?: Selection<T>;
|
|
7
8
|
}
|
|
8
9
|
declare class SmartTable<T extends SelectionItem> extends PureComponent<SmartTableProps<T>> {
|
|
9
10
|
static propTypes: {
|
|
@@ -19,11 +19,15 @@ class SmartTable extends PureComponent {
|
|
|
19
19
|
})
|
|
20
20
|
};
|
|
21
21
|
UNSAFE_componentWillReceiveProps(nextProps) {
|
|
22
|
-
const { data, isItemSelectable } = nextProps;
|
|
23
|
-
if (this.props.
|
|
24
|
-
const selection = new Selection({ data, isItemSelectable });
|
|
22
|
+
const { data, isItemSelectable, selection } = nextProps;
|
|
23
|
+
if (this.props.remoteSelection && this.props.selection !== selection) {
|
|
25
24
|
this.setState({ selection });
|
|
26
25
|
}
|
|
26
|
+
else if (this.props.data !== data || this.props.isItemSelectable !== isItemSelectable) {
|
|
27
|
+
this.setState({
|
|
28
|
+
selection: new Selection({ data, isItemSelectable })
|
|
29
|
+
});
|
|
30
|
+
}
|
|
27
31
|
}
|
|
28
32
|
onSelect = (selection) => {
|
|
29
33
|
this.setState({ selection });
|
|
@@ -103,12 +103,10 @@ export default class TableContainer<T extends SelectionItem> extends Component<T
|
|
|
103
103
|
onMouseMove: () => void;
|
|
104
104
|
onKeyDown: (e: KeyboardEvent) => void;
|
|
105
105
|
render(): JSX.Element;
|
|
106
|
-
context:
|
|
106
|
+
context: unknown;
|
|
107
107
|
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<DisableHoverProps<SelectionShortcutsProps<T, FocusSensorProps<TableProps<T>, HTMLTableRowElement, typeof Table>>>>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
|
108
108
|
forceUpdate(callback?: (() => void) | undefined): void;
|
|
109
|
-
readonly props: Readonly<DisableHoverProps<SelectionShortcutsProps<T, FocusSensorProps<TableProps<T>, HTMLTableRowElement, typeof Table
|
|
110
|
-
children?: React.ReactNode;
|
|
111
|
-
}>;
|
|
109
|
+
readonly props: Readonly<DisableHoverProps<SelectionShortcutsProps<T, FocusSensorProps<TableProps<T>, HTMLTableRowElement, typeof Table>>>>;
|
|
112
110
|
refs: {
|
|
113
111
|
[key: string]: React.ReactInstance;
|
|
114
112
|
};
|
|
@@ -132,12 +130,10 @@ export default class TableContainer<T extends SelectionItem> extends Component<T
|
|
|
132
130
|
onMouseMove: () => void;
|
|
133
131
|
onKeyDown: (e: KeyboardEvent) => void;
|
|
134
132
|
render(): JSX.Element;
|
|
135
|
-
context:
|
|
133
|
+
context: unknown;
|
|
136
134
|
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<DisableHoverProps<SelectionShortcutsProps<T, FocusSensorProps<TableProps<T>, HTMLTableRowElement, typeof Table>>>>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
|
137
135
|
forceUpdate(callback?: (() => void) | undefined): void;
|
|
138
|
-
readonly props: Readonly<DisableHoverProps<SelectionShortcutsProps<T, FocusSensorProps<TableProps<T>, HTMLTableRowElement, typeof Table
|
|
139
|
-
children?: React.ReactNode;
|
|
140
|
-
}>;
|
|
136
|
+
readonly props: Readonly<DisableHoverProps<SelectionShortcutsProps<T, FocusSensorProps<TableProps<T>, HTMLTableRowElement, typeof Table>>>>;
|
|
141
137
|
refs: {
|
|
142
138
|
[key: string]: React.ReactInstance;
|
|
143
139
|
};
|
|
@@ -27,11 +27,11 @@ const morePopupDirections = [
|
|
|
27
27
|
Directions.BOTTOM_RIGHT
|
|
28
28
|
];
|
|
29
29
|
export const MoreButton = React.memo(({ items, selected, onSelect, moreClassName, moreActiveClassName, morePopupClassName, morePopupItemClassName, morePopupBeforeEnd }) => {
|
|
30
|
-
const onSelectHandler = React.useCallback(listItem => {
|
|
30
|
+
const onSelectHandler = React.useCallback((listItem) => {
|
|
31
31
|
if (listItem.disabled === true || listItem.custom === true) {
|
|
32
32
|
return;
|
|
33
33
|
}
|
|
34
|
-
const cb = onSelect(listItem.key);
|
|
34
|
+
const cb = onSelect(String(listItem.key));
|
|
35
35
|
cb();
|
|
36
36
|
}, [onSelect]);
|
|
37
37
|
const hasActiveChild = React.useMemo(() => items.some(item => item.props.alwaysHidden && item.props.id === selected), [items, selected]);
|