@jetbrains/ring-ui 5.0.0-beta.9 → 5.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -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.d.ts +1 -0
- package/components/global/theme.js +19 -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 +20 -8
- 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.d.ts +1 -0
- package/dist/global/theme.js +16 -1
- 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
package/CHANGELOG.md
CHANGED
|
@@ -36,9 +36,17 @@
|
|
|
36
36
|
|
|
37
37
|
<ThemeProvider theme={Theme.DARK}>{children}</ThemeProvider>
|
|
38
38
|
```
|
|
39
|
+
|
|
40
|
+
If you still need to apply theme to the global scope, here is a solution:
|
|
41
|
+
```js
|
|
42
|
+
import Theme, {applyTheme} from '@jetbrains/ring-ui/components/global/theme';
|
|
43
|
+
|
|
44
|
+
applyTheme(Theme.DARK, document.body);
|
|
45
|
+
```
|
|
39
46
|
You can also pass `Theme.AUTO` to use the user-defined system theme.
|
|
40
47
|
The only exceptions are the components that provide dark context by default: Alert, Header, Message. Those still accept a `theme` prop.
|
|
41
48
|
- `--ring-dark-*` CSS custom properties are removed, `--ring-dark-text-color` is renamed to `--ring-white-text-color`
|
|
49
|
+
- `--ring-message-background-color` is removed in favor of `--ring-popup-background-color`
|
|
42
50
|
- The codebase has migrated to TypeScript
|
|
43
51
|
- `react-markdown` has been updated to v7, which affects the props of `Markdown` component. The most notable change is replacing `source` with `children`:
|
|
44
52
|
```js
|
|
@@ -52,6 +60,18 @@
|
|
|
52
60
|
- Removed `core-js@2` support
|
|
53
61
|
- Removed `webpack@4` support
|
|
54
62
|
|
|
63
|
+
## [4.2.0]
|
|
64
|
+
|
|
65
|
+
### React 18 support
|
|
66
|
+
|
|
67
|
+
To enable the new root API, add the following code before any rendering:
|
|
68
|
+
```js
|
|
69
|
+
import * as client from 'react-dom/client'
|
|
70
|
+
import {setClient} from '@jetbrains/ring-ui/components/global/react-render-adapter'
|
|
71
|
+
|
|
72
|
+
setClient(client)
|
|
73
|
+
```
|
|
74
|
+
|
|
55
75
|
## [4.1.0]
|
|
56
76
|
|
|
57
77
|
### Pre-built version
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
pointer-events: auto;
|
|
25
25
|
|
|
26
26
|
border-radius: var(--ring-border-radius);
|
|
27
|
-
background-color: var(--ring-
|
|
27
|
+
background-color: var(--ring-popup-background-color);
|
|
28
28
|
box-shadow: var(--ring-popup-shadow);
|
|
29
29
|
|
|
30
30
|
font-size: var(--ring-font-size);
|
|
@@ -10,7 +10,7 @@ declare global {
|
|
|
10
10
|
* @constructor
|
|
11
11
|
*/
|
|
12
12
|
export default class AnalyticsGAPlugin implements AnalyticsPlugin {
|
|
13
|
-
constructor(gaId?: string | undefined, isDevelopment?: boolean | undefined, domain?: string);
|
|
13
|
+
constructor(gaId?: string | undefined, isDevelopment?: boolean | undefined, domain?: string, cookielessUserIdentifier?: string | undefined);
|
|
14
14
|
trackEvent(category: string, action: string): void;
|
|
15
15
|
trackPageView(path: string): void;
|
|
16
16
|
get serializeAdditionalInfo(): boolean;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @constructor
|
|
5
5
|
*/
|
|
6
6
|
export default class AnalyticsGAPlugin {
|
|
7
|
-
constructor(gaId, isDevelopment, domain) {
|
|
7
|
+
constructor(gaId, isDevelopment, domain, cookielessUserIdentifier) {
|
|
8
8
|
if (!gaId && !isDevelopment) {
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
@@ -25,9 +25,18 @@ export default class AnalyticsGAPlugin {
|
|
|
25
25
|
*/
|
|
26
26
|
const key = gaId || 'UA-57284711-1';
|
|
27
27
|
/* global ga */
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
if (cookielessUserIdentifier) {
|
|
29
|
+
ga('create', key, {
|
|
30
|
+
storage: 'none',
|
|
31
|
+
clientId: cookielessUserIdentifier
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
const gaCookieParams = domain ? { cookieDomain: domain } : {};
|
|
36
|
+
ga('create', key, (!gaId ? { cookieDomain: 'none' } : gaCookieParams));
|
|
37
|
+
}
|
|
30
38
|
ga('set', 'anonymizeIp', true);
|
|
39
|
+
ga('set', 'location', domain || '/');
|
|
31
40
|
ga('set', 'allowAdFeatures', false);
|
|
32
41
|
}
|
|
33
42
|
trackEvent(category, action) {
|
|
@@ -727,9 +727,13 @@ export default class Auth {
|
|
|
727
727
|
return await (stateId && this._storage?.getState(stateId)) || {};
|
|
728
728
|
}
|
|
729
729
|
_checkBackendsAreUp() {
|
|
730
|
+
const abortCtrl = new AbortController();
|
|
730
731
|
const { backendCheckTimeout } = this.config;
|
|
731
732
|
return Promise.all([
|
|
732
|
-
promiseWithTimeout(this.http.fetch('settings/public?fields=id'
|
|
733
|
+
promiseWithTimeout(this.http.fetch('settings/public?fields=id', { signal: abortCtrl.signal }), backendCheckTimeout, {
|
|
734
|
+
error: new Error('The authorization server is taking too long to respond. Please try again later.'),
|
|
735
|
+
onTimeout: () => abortCtrl.abort()
|
|
736
|
+
}),
|
|
733
737
|
this.config.checkBackendIsUp()
|
|
734
738
|
]).catch(err => {
|
|
735
739
|
if (err instanceof TypeError) {
|
|
@@ -54,13 +54,13 @@ const Sizes = {
|
|
|
54
54
|
};
|
|
55
55
|
const sizeKeys = Object.keys(Sizes).map(Number);
|
|
56
56
|
function extractLetters(name) {
|
|
57
|
-
const names = name.split(/[\s._]+/).filter(Boolean);
|
|
57
|
+
const names = name.split(/[\s._]+/).filter(Boolean).map(word => Array.from(word));
|
|
58
58
|
if (names.length >= 2) {
|
|
59
59
|
return names[0][0].toUpperCase() + names[1][0].toUpperCase();
|
|
60
60
|
}
|
|
61
61
|
else if (names.length === 1) {
|
|
62
62
|
if (names[0].length >= 2) {
|
|
63
|
-
return names[0].slice(0, 2).toUpperCase();
|
|
63
|
+
return names[0].slice(0, 2).join('').toUpperCase();
|
|
64
64
|
}
|
|
65
65
|
else {
|
|
66
66
|
return `${names[0][0].toUpperCase()}X`;
|
|
@@ -69,11 +69,11 @@
|
|
|
69
69
|
&.active {
|
|
70
70
|
transition: none;
|
|
71
71
|
|
|
72
|
-
box-shadow:
|
|
72
|
+
box-shadow: inset 0 0 0 2px var(--ring-main-color);
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
&:global(.focus-visible).active {
|
|
76
|
-
box-shadow:
|
|
76
|
+
box-shadow: inset 0 0 0 2px var(--ring-main-color), 0 0 0 1px var(--ring-border-hover-color);
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
&[disabled] {
|
|
@@ -3,7 +3,7 @@ import React, { PureComponent, ButtonHTMLAttributes } from 'react';
|
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import { IconType, Size } from '../icon/icon';
|
|
5
5
|
import { ClickableLinkProps } from '../link/clickableLink';
|
|
6
|
-
import { ControlsHeight } from '../global/controls-height';
|
|
6
|
+
import { ControlsHeight, ControlsHeightContext } from '../global/controls-height';
|
|
7
7
|
export interface ButtonBaseProps {
|
|
8
8
|
height?: ControlsHeight | undefined;
|
|
9
9
|
active?: boolean | null | undefined;
|
|
@@ -58,6 +58,7 @@ export declare class Button extends PureComponent<ButtonProps> {
|
|
|
58
58
|
};
|
|
59
59
|
static IconSize: typeof Size;
|
|
60
60
|
static contextType: React.Context<ControlsHeight>;
|
|
61
|
+
context: React.ContextType<typeof ControlsHeightContext>;
|
|
61
62
|
buttonRef: React.RefObject<HTMLButtonElement>;
|
|
62
63
|
render(): JSX.Element;
|
|
63
64
|
}
|
|
@@ -24,6 +24,8 @@
|
|
|
24
24
|
border-radius: var(--ring-border-radius);
|
|
25
25
|
|
|
26
26
|
box-shadow: button-shadow var(--ring-borders-color);
|
|
27
|
+
|
|
28
|
+
line-height: normal;
|
|
27
29
|
}
|
|
28
30
|
|
|
29
31
|
.buttonGroup .button {
|
|
@@ -103,13 +105,13 @@
|
|
|
103
105
|
/* stylelint-disable-next-line selector-max-specificity */
|
|
104
106
|
.buttonGroup .button.button.active {
|
|
105
107
|
border-radius: var(--ring-border-radius);
|
|
106
|
-
box-shadow:
|
|
108
|
+
box-shadow: inset 0 0 0 2px var(--ring-main-color);
|
|
107
109
|
}
|
|
108
110
|
|
|
109
111
|
/* stylelint-disable-next-line selector-max-specificity */
|
|
110
112
|
.buttonGroup .button:global(.focus-visible).active {
|
|
111
113
|
border-radius: var(--ring-border-radius);
|
|
112
|
-
box-shadow:
|
|
114
|
+
box-shadow: inset 0 0 0 2px var(--ring-main-color), 0 0 0 1px var(--ring-border-hover-color);
|
|
113
115
|
}
|
|
114
116
|
|
|
115
117
|
/* stylelint-disable-next-line selector-max-specificity */
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
pointer-events: none;
|
|
37
37
|
|
|
38
38
|
border: 1px solid var(--ring-borders-color);
|
|
39
|
-
border-radius: var(--ring-border-radius);
|
|
39
|
+
border-radius: var(--ring-border-radius-small);
|
|
40
40
|
background-color: var(--ring-content-background-color);
|
|
41
41
|
}
|
|
42
42
|
|
|
@@ -46,9 +46,8 @@
|
|
|
46
46
|
width: calc(unit * 2);
|
|
47
47
|
height: calc(unit * 2);
|
|
48
48
|
|
|
49
|
-
transition: opacity var(--ring-fast-ease), transform var(--ring-fast-ease);
|
|
50
|
-
|
|
51
49
|
opacity: 0;
|
|
50
|
+
color: var(--ring-white-text-color);
|
|
52
51
|
|
|
53
52
|
& svg {
|
|
54
53
|
position: absolute;
|
|
@@ -60,8 +59,8 @@
|
|
|
60
59
|
.check {
|
|
61
60
|
composes: icon;
|
|
62
61
|
|
|
63
|
-
top:
|
|
64
|
-
left: 1px;
|
|
62
|
+
top: -1px;
|
|
63
|
+
left: -1px;
|
|
65
64
|
}
|
|
66
65
|
|
|
67
66
|
.minus {
|
|
@@ -88,20 +87,17 @@
|
|
|
88
87
|
|
|
89
88
|
/* stylelint-disable-next-line selector-max-specificity */
|
|
90
89
|
&:checked + .cell,
|
|
91
|
-
&:indeterminate
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
background-color: var(--ring-selected-background-color);
|
|
90
|
+
&:indeterminate + .cell {
|
|
91
|
+
border-color: transparent;
|
|
92
|
+
background-color: var(--ring-main-color);
|
|
95
93
|
}
|
|
96
94
|
|
|
97
95
|
/* stylelint-disable-next-line selector-max-specificity */
|
|
98
96
|
&:checked + .cell .check {
|
|
99
|
-
transform: translateY(unit);
|
|
100
|
-
|
|
101
97
|
opacity: 1;
|
|
102
98
|
}
|
|
103
99
|
|
|
104
|
-
&:focus + .cell,
|
|
100
|
+
&:global(.focus-visible) + .cell,
|
|
105
101
|
&.focus + .cell {
|
|
106
102
|
transition: background-color var(--ring-ease);
|
|
107
103
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { PureComponent } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import classNames from 'classnames';
|
|
4
|
-
import checkmarkIcon from '@jetbrains/icons/checkmark';
|
|
4
|
+
import checkmarkIcon from '@jetbrains/icons/checkmark-14px';
|
|
5
5
|
import minusIcon from '@jetbrains/icons/remove-10px';
|
|
6
6
|
import Icon from '../icon/icon';
|
|
7
7
|
import styles from './checkbox.css';
|
|
@@ -31,12 +31,10 @@ export default class DataListContainer<T extends SelectionItem> extends Componen
|
|
|
31
31
|
onMouseMove: () => void;
|
|
32
32
|
onKeyDown: (e: KeyboardEvent) => void;
|
|
33
33
|
render(): JSX.Element;
|
|
34
|
-
context:
|
|
34
|
+
context: unknown;
|
|
35
35
|
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<import("../table/disable-hover-hoc").DisableHoverProps<import("../table/selection-shortcuts-hoc").SelectionShortcutsProps<T, FocusableProps<T>>>>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
|
36
36
|
forceUpdate(callback?: (() => void) | undefined): void;
|
|
37
|
-
readonly props: Readonly<import("../table/disable-hover-hoc").DisableHoverProps<import("../table/selection-shortcuts-hoc").SelectionShortcutsProps<T, FocusableProps<T
|
|
38
|
-
children?: React.ReactNode;
|
|
39
|
-
}>;
|
|
37
|
+
readonly props: Readonly<import("../table/disable-hover-hoc").DisableHoverProps<import("../table/selection-shortcuts-hoc").SelectionShortcutsProps<T, FocusableProps<T>>>>;
|
|
40
38
|
refs: {
|
|
41
39
|
[key: string]: React.ReactInstance;
|
|
42
40
|
};
|
|
@@ -60,12 +58,10 @@ export default class DataListContainer<T extends SelectionItem> extends Componen
|
|
|
60
58
|
onMouseMove: () => void;
|
|
61
59
|
onKeyDown: (e: KeyboardEvent) => void;
|
|
62
60
|
render(): JSX.Element;
|
|
63
|
-
context:
|
|
61
|
+
context: unknown;
|
|
64
62
|
setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<import("../table/disable-hover-hoc").DisableHoverProps<import("../table/selection-shortcuts-hoc").SelectionShortcutsProps<T, FocusableProps<T>>>>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
|
|
65
63
|
forceUpdate(callback?: (() => void) | undefined): void;
|
|
66
|
-
readonly props: Readonly<import("../table/disable-hover-hoc").DisableHoverProps<import("../table/selection-shortcuts-hoc").SelectionShortcutsProps<T, FocusableProps<T
|
|
67
|
-
children?: React.ReactNode;
|
|
68
|
-
}>;
|
|
64
|
+
readonly props: Readonly<import("../table/disable-hover-hoc").DisableHoverProps<import("../table/selection-shortcuts-hoc").SelectionShortcutsProps<T, FocusableProps<T>>>>;
|
|
69
65
|
refs: {
|
|
70
66
|
[key: string]: React.ReactInstance;
|
|
71
67
|
};
|
|
@@ -24,7 +24,7 @@ export default class Dialog extends PureComponent<DialogProps> {
|
|
|
24
24
|
label: PropTypes.Requireable<string>;
|
|
25
25
|
className: PropTypes.Requireable<string>;
|
|
26
26
|
contentClassName: PropTypes.Requireable<string>;
|
|
27
|
-
children: PropTypes.Requireable<string | number | boolean |
|
|
27
|
+
children: PropTypes.Requireable<string | number | boolean | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
|
|
28
28
|
show: PropTypes.Validator<boolean>;
|
|
29
29
|
showCloseButton: PropTypes.Requireable<boolean>;
|
|
30
30
|
closeButtonInside: PropTypes.Requireable<boolean>;
|
|
@@ -6,7 +6,7 @@ export interface AnchorProps {
|
|
|
6
6
|
active: boolean;
|
|
7
7
|
pinned: boolean;
|
|
8
8
|
}
|
|
9
|
-
export interface DropdownProps extends HTMLAttributes<HTMLElement> {
|
|
9
|
+
export interface DropdownProps extends Omit<HTMLAttributes<HTMLElement>, 'children'> {
|
|
10
10
|
anchor: ReactElement | readonly ReactElement[] | string | ((props: AnchorProps) => ReactNode);
|
|
11
11
|
children: ReactElement<PopupAttrs> | ((props: Omit<PopupAttrs, 'children'>) => ReactNode);
|
|
12
12
|
initShown: boolean;
|
|
@@ -32,7 +32,7 @@ export default class Dropdown extends Component<DropdownProps, DropdownState> {
|
|
|
32
32
|
* Can be string, React element, or a function accepting an object with {active, pinned} properties and returning a React element
|
|
33
33
|
* React element should render some interactive HTML element like `button` or `a`
|
|
34
34
|
*/
|
|
35
|
-
anchor: PropTypes.Validator<string | number | boolean |
|
|
35
|
+
anchor: PropTypes.Validator<string | number | boolean | PropTypes.ReactElementLike | PropTypes.ReactNodeArray | ((...args: any[]) => any)>;
|
|
36
36
|
children: PropTypes.Validator<PropTypes.ReactElementLike | ((...args: any[]) => any)>;
|
|
37
37
|
initShown: PropTypes.Requireable<boolean>;
|
|
38
38
|
className: PropTypes.Requireable<string>;
|
|
@@ -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 './react-render-adapter';
|
|
6
6
|
import RingAngularComponent from './ring-angular-component';
|
|
7
7
|
|
|
8
8
|
import DomRenderer from './react-dom-renderer';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export interface PromiseWithTimeoutConfig {
|
|
2
2
|
error?: Error | null | undefined;
|
|
3
|
+
onTimeout?: () => void | undefined;
|
|
3
4
|
}
|
|
4
|
-
export default function promiseWithTimeout<T>(promise: Promise<T>, timeout: number, { error }: PromiseWithTimeoutConfig): Promise<unknown>;
|
|
5
|
+
export default function promiseWithTimeout<T>(promise: Promise<T>, timeout: number, { error, onTimeout }: PromiseWithTimeoutConfig): Promise<unknown>;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
// Useful for using fetch with timeout
|
|
2
2
|
// https://github.com/github/fetch/issues/175#issuecomment-284787564
|
|
3
|
-
export default function promiseWithTimeout(promise, timeout, { error }) {
|
|
3
|
+
export default function promiseWithTimeout(promise, timeout, { error, onTimeout = () => { } }) {
|
|
4
4
|
return new Promise((resolve, reject) => {
|
|
5
|
-
setTimeout(() =>
|
|
5
|
+
setTimeout(() => {
|
|
6
|
+
onTimeout();
|
|
7
|
+
reject(error || new Error('Timeout'));
|
|
8
|
+
}, timeout);
|
|
6
9
|
promise.then(resolve, reject);
|
|
7
10
|
});
|
|
8
11
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ReactChild, ReactElement, ReactNode } from 'react';
|
|
2
|
+
import { unmountComponentAtNode as legacyUnmountComponentAtNode } from 'react-dom';
|
|
3
|
+
export declare let render: (element: ReactElement, container: Element | DocumentFragment) => void;
|
|
4
|
+
export declare let unmountComponentAtNode: typeof legacyUnmountComponentAtNode;
|
|
5
|
+
export declare let hydrate: (element: ReactElement, container: Element | Document) => void;
|
|
6
|
+
interface Root {
|
|
7
|
+
render(children: ReactChild | Iterable<ReactNode>): void;
|
|
8
|
+
unmount(): void;
|
|
9
|
+
}
|
|
10
|
+
interface RootOptions {
|
|
11
|
+
/**
|
|
12
|
+
* Prefix for `useId`.
|
|
13
|
+
*/
|
|
14
|
+
identifierPrefix?: string;
|
|
15
|
+
onRecoverableError?: (error: unknown) => void;
|
|
16
|
+
}
|
|
17
|
+
interface HydrationOptions {
|
|
18
|
+
/**
|
|
19
|
+
* Prefix for `useId`.
|
|
20
|
+
*/
|
|
21
|
+
identifierPrefix?: string;
|
|
22
|
+
onRecoverableError?: (error: unknown) => void;
|
|
23
|
+
}
|
|
24
|
+
interface Client {
|
|
25
|
+
createRoot(container: Element | DocumentFragment, options?: RootOptions): Root;
|
|
26
|
+
hydrateRoot(container: Element | Document, initialChildren: ReactChild | Iterable<ReactNode>, options?: HydrationOptions): Root;
|
|
27
|
+
}
|
|
28
|
+
export declare function setClient({ createRoot, hydrateRoot }: Client): void;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Allows overriding ReactDOM.render when using React 18:
|
|
2
|
+
// import * as client from 'react-dom/client'
|
|
3
|
+
// import {setClient} from '@jetbrains/ring-ui/components/global/react-render-adapter'
|
|
4
|
+
//
|
|
5
|
+
// setClient(client)
|
|
6
|
+
import {
|
|
7
|
+
render as legacyRender,
|
|
8
|
+
unmountComponentAtNode as legacyUnmountComponentAtNode,
|
|
9
|
+
hydrate as legacyHydrate
|
|
10
|
+
} from 'react-dom';
|
|
11
|
+
|
|
12
|
+
/* eslint-disable import/no-mutable-exports */
|
|
13
|
+
export let render = legacyRender;
|
|
14
|
+
export let unmountComponentAtNode = legacyUnmountComponentAtNode;
|
|
15
|
+
export let hydrate = legacyHydrate;
|
|
16
|
+
/* eslint-enable */
|
|
17
|
+
|
|
18
|
+
export function setClient({createRoot, hydrateRoot}) {
|
|
19
|
+
const roots = new WeakMap();
|
|
20
|
+
|
|
21
|
+
render = (element, container) => {
|
|
22
|
+
let root = roots.get(container);
|
|
23
|
+
if (root == null) {
|
|
24
|
+
root = createRoot(container);
|
|
25
|
+
roots.set(container, root);
|
|
26
|
+
}
|
|
27
|
+
root.render(element);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
unmountComponentAtNode = container => roots.get(container)?.unmount();
|
|
31
|
+
|
|
32
|
+
hydrate = (element, container) => {
|
|
33
|
+
const root = hydrateRoot(container, element);
|
|
34
|
+
roots.set(container, root);
|
|
35
|
+
};
|
|
36
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component } from 'react';
|
|
1
|
+
import { Component, RefAttributes } from 'react';
|
|
2
2
|
export interface RerenderableComponent<P, S> extends Component<P, S> {
|
|
3
3
|
node?: HTMLElement | null;
|
|
4
4
|
}
|
|
@@ -13,18 +13,14 @@ export interface RerenderableComponentClass<P, S> {
|
|
|
13
13
|
*/
|
|
14
14
|
export default function rerenderHOC<P, S>(ComposedComponent: RerenderableComponentClass<P, S>): {
|
|
15
15
|
new (props: P): {
|
|
16
|
-
_propsCache:
|
|
17
|
-
|
|
18
|
-
}>;
|
|
19
|
-
rerender(props?: Partial<P>, callback?: (() => void) | undefined): void | Element | Component<P, any, any>;
|
|
16
|
+
_propsCache: P & RefAttributes<unknown>;
|
|
17
|
+
rerender(props?: Partial<P>, callback?: (() => void) | undefined): void;
|
|
20
18
|
node?: HTMLElement | null | undefined;
|
|
21
|
-
context:
|
|
19
|
+
context: unknown;
|
|
22
20
|
setState<K extends keyof S>(state: S | ((prevState: Readonly<S>, props: Readonly<P>) => S | Pick<S, K> | null) | Pick<S, K> | null, callback?: (() => void) | undefined): void;
|
|
23
21
|
forceUpdate(callback?: (() => void) | undefined): void;
|
|
24
22
|
render(): import("react").ReactNode;
|
|
25
|
-
readonly props: Readonly<P
|
|
26
|
-
children?: import("react").ReactNode;
|
|
27
|
-
}>;
|
|
23
|
+
readonly props: Readonly<P>;
|
|
28
24
|
state: Readonly<S>;
|
|
29
25
|
refs: {
|
|
30
26
|
[key: string]: import("react").ReactInstance;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createElement } from 'react';
|
|
2
|
-
import { render } from 'react-
|
|
2
|
+
import { render } from './react-render-adapter';
|
|
3
|
+
import composeRefs from './composeRefs';
|
|
3
4
|
/**
|
|
4
5
|
* Wraps a component to add a "rerender" method
|
|
5
6
|
* @param ComposedComponent
|
|
@@ -20,7 +21,8 @@ export default function rerenderHOC(ComposedComponent) {
|
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
23
|
this._propsCache = Object.assign({}, this.props, this._propsCache, props);
|
|
23
|
-
|
|
24
|
+
this._propsCache.ref = composeRefs(this._propsCache.ref, callback);
|
|
25
|
+
render(createElement(this.constructor, this._propsCache), container);
|
|
24
26
|
}
|
|
25
27
|
};
|
|
26
28
|
}
|
|
@@ -5,6 +5,7 @@ declare enum Theme {
|
|
|
5
5
|
DARK = "dark"
|
|
6
6
|
}
|
|
7
7
|
export declare function useTheme(): Theme.LIGHT | Theme.DARK;
|
|
8
|
+
export declare function applyTheme(theme: Theme.DARK | Theme.LIGHT, container: HTMLElement): void;
|
|
8
9
|
export interface ThemeProviderProps extends HTMLAttributes<HTMLDivElement> {
|
|
9
10
|
theme?: Theme;
|
|
10
11
|
passToPopups?: boolean;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import React, { useMemo, useState, useEffect, forwardRef } from 'react';
|
|
1
|
+
import React, { useMemo, useState, useEffect, forwardRef, useContext } from 'react';
|
|
2
2
|
import classNames from 'classnames';
|
|
3
|
-
import {
|
|
3
|
+
import { createPortal } from 'react-dom';
|
|
4
|
+
import { PopupTarget, PopupTargetContext } from '../popup/popup.target';
|
|
5
|
+
import { getPopupContainer } from '../popup/popup';
|
|
4
6
|
import styles from './variables_dark.css';
|
|
5
7
|
import getUID from './get-uid';
|
|
6
8
|
var Theme;
|
|
@@ -19,13 +21,26 @@ export function useTheme() {
|
|
|
19
21
|
}, []);
|
|
20
22
|
return dark ? Theme.DARK : Theme.LIGHT;
|
|
21
23
|
}
|
|
24
|
+
export function applyTheme(theme, container) {
|
|
25
|
+
if (theme === Theme.DARK) {
|
|
26
|
+
container.classList.add(styles.dark);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
container.classList.remove(styles.dark);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
22
32
|
export const ThemeProvider = forwardRef(function ThemeProvider({ theme = Theme.AUTO, className, passToPopups, children, ...restProps }, ref) {
|
|
23
33
|
const systemTheme = useTheme();
|
|
24
34
|
const resolvedTheme = theme === Theme.AUTO ? systemTheme : theme;
|
|
25
35
|
const id = useMemo(() => getUID('popups-with-theme-'), []);
|
|
26
|
-
|
|
36
|
+
const themeClasses = classNames({ [styles.dark]: resolvedTheme === Theme.DARK });
|
|
37
|
+
const parentTarget = useContext(PopupTargetContext);
|
|
38
|
+
return (<div ref={ref} className={classNames(className, themeClasses)} {...restProps}>{passToPopups
|
|
27
39
|
? (<PopupTarget id={id}>
|
|
28
|
-
{target => <>
|
|
40
|
+
{target => (<>
|
|
41
|
+
{children}
|
|
42
|
+
{createPortal(target, parentTarget && getPopupContainer(parentTarget) || document.body)}
|
|
43
|
+
</>)}
|
|
29
44
|
</PopupTarget>)
|
|
30
45
|
: children}
|
|
31
46
|
</div>);
|
|
@@ -51,7 +51,6 @@
|
|
|
51
51
|
--ring-sidebar-background-color: #f7f9fa;
|
|
52
52
|
--ring-selected-background-color: #d4edff;
|
|
53
53
|
--ring-hover-background-color: #ebf6ff;
|
|
54
|
-
--ring-message-background-color: #111314;
|
|
55
54
|
--ring-navigation-background-color: #fff;
|
|
56
55
|
--ring-tag-background-color: #e6ecf2;
|
|
57
56
|
--ring-tag-hover-background-color: #d3dae0;
|
|
@@ -41,7 +41,6 @@ export interface RingCSSProperties {
|
|
|
41
41
|
'--ring-sidebar-background-color'?: Property.BackgroundColor;
|
|
42
42
|
'--ring-selected-background-color'?: Property.BackgroundColor;
|
|
43
43
|
'--ring-hover-background-color'?: Property.BackgroundColor;
|
|
44
|
-
'--ring-message-background-color'?: Property.BackgroundColor;
|
|
45
44
|
'--ring-navigation-background-color'?: Property.BackgroundColor;
|
|
46
45
|
'--ring-tag-background-color'?: Property.BackgroundColor;
|
|
47
46
|
'--ring-tag-hover-background-color'?: Property.BackgroundColor;
|
|
@@ -40,7 +40,6 @@
|
|
|
40
40
|
--ring-sidebar-background-color: #28343d;
|
|
41
41
|
--ring-selected-background-color: #062640;
|
|
42
42
|
--ring-hover-background-color: #0b1a26;
|
|
43
|
-
--ring-message-background-color: var(--ring-popup-background-color);
|
|
44
43
|
--ring-navigation-background-color: #111314;
|
|
45
44
|
--ring-tag-background-color: #3e4d59;
|
|
46
45
|
--ring-tag-hover-background-color: #333e47;
|
|
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
|
|
|
3
3
|
import { Size } from '../avatar/avatar';
|
|
4
4
|
import { ListDataItem } from '../list/consts';
|
|
5
5
|
import { AuthUser } from '../auth/auth';
|
|
6
|
-
import {
|
|
6
|
+
import { ClickableLinkProps } from '../link/clickableLink';
|
|
7
7
|
export interface ProfileTranslations {
|
|
8
8
|
applyChangedUser?: string | null | undefined;
|
|
9
9
|
login?: string | null | undefined;
|
|
@@ -24,7 +24,7 @@ export interface ProfileProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onSe
|
|
|
24
24
|
onLogout?: (() => void) | null | undefined;
|
|
25
25
|
onSwitchUser?: (() => void) | null | undefined;
|
|
26
26
|
profileUrl?: string | undefined;
|
|
27
|
-
LinkComponent?: ComponentType<
|
|
27
|
+
LinkComponent?: ComponentType<ClickableLinkProps> | null | undefined;
|
|
28
28
|
user?: AuthUser | null | undefined | void;
|
|
29
29
|
round?: boolean | null | undefined;
|
|
30
30
|
showLogIn?: boolean | null | undefined;
|
|
@@ -68,6 +68,6 @@ export default class Profile extends PureComponent<ProfileProps> {
|
|
|
68
68
|
};
|
|
69
69
|
static defaultProps: ProfileProps;
|
|
70
70
|
static Size: typeof Size;
|
|
71
|
-
render(): React.
|
|
71
|
+
render(): string | number | boolean | JSX.Element | React.ReactFragment | null | undefined;
|
|
72
72
|
}
|
|
73
73
|
export declare type ProfileAttrs = JSX.LibraryManagedAttributes<typeof Profile, ProfileProps>;
|
|
@@ -64,6 +64,8 @@ export declare class Input extends PureComponent<InputProps> {
|
|
|
64
64
|
render(): JSX.Element;
|
|
65
65
|
}
|
|
66
66
|
export declare type ContainerProps<P extends InputProps> = JSX.LibraryManagedAttributes<typeof Input, P>;
|
|
67
|
-
export declare type
|
|
67
|
+
export declare type InputSpecificAttrs = ContainerProps<InputSpecificProps>;
|
|
68
|
+
export declare type TextAreaSpecificAttrs = ContainerProps<TextAreaSpecificProps>;
|
|
69
|
+
export declare type InputAttrs = InputSpecificAttrs | TextAreaSpecificAttrs;
|
|
68
70
|
export default Input;
|
|
69
71
|
export { Size };
|