@jetbrains/ring-ui 4.1.0-beta.13 → 4.1.0-beta.17
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/README.md +14 -13
- package/components/alert/container.css +1 -1
- package/components/auth/auth.test.js +14 -7
- package/components/auth/auth__core.js +12 -6
- package/components/avatar/avatar.css +4 -1
- package/components/avatar/avatar.examples.js +3 -2
- package/components/avatar/avatar.js +31 -6
- package/components/avatar/fallback-avatar.js +136 -0
- package/components/avatar-editor-ng/avatar-editor-ng.css +2 -2
- package/components/avatar-editor-ng/avatar-editor-ng.js +2 -1
- package/components/avatar-editor-ng/{avatar-editor-ng.html → avatar-editor-ng__template.js} +2 -2
- package/components/button/button.css +2 -2
- package/components/button-group/button-group.js +1 -1
- package/components/button-group/caption.js +1 -1
- package/components/button-ng/button-ng.js +1 -1
- package/components/button-set-ng/button-set-ng.js +3 -1
- package/components/checkbox/checkbox.css +1 -1
- package/components/code/code.js +1 -1
- package/components/content-layout/content-layout.css +1 -1
- package/components/data-list/data-list.css +1 -1
- package/components/date-picker/date-input.js +5 -4
- package/components/date-picker/date-picker.css +10 -6
- package/components/date-picker/date-picker.js +16 -14
- package/components/date-picker/date-popup.js +8 -4
- package/components/date-picker/month-names.js +8 -5
- package/components/date-picker/month.js +6 -2
- package/components/date-picker/weekdays.js +10 -2
- package/components/dialog-ng/dialog-ng.js +6 -7
- package/components/dialog-ng/{dialog-ng.html → dialog-ng__template.js} +2 -2
- package/components/dropdown/dropdown.examples.js +36 -1
- package/components/dropdown-menu/dropdown-menu.examples.js +47 -0
- package/components/dropdown-menu/dropdown-menu.js +117 -0
- package/components/dropdown-menu/dropdown-menu.test.js +76 -0
- package/components/error-bubble/error-bubble-legacy.css +1 -1
- package/components/error-bubble/error-bubble.css +1 -1
- package/components/error-page/error-page.css +2 -2
- package/components/footer-ng/footer-ng.js +13 -3
- package/components/form/form.css +2 -2
- package/components/form-ng/form-ng.js +3 -1
- package/components/global/global.css +1 -1
- package/components/global/variables.css +8 -1
- package/components/grid/grid.css +10 -9
- package/components/header/header.css +1 -1
- package/components/header/header.examples.js +7 -8
- package/components/header/profile.js +10 -11
- package/components/http/http.js +1 -1
- package/components/icon/icon.css +5 -4
- package/components/island/island.css +4 -3
- package/components/island-legacy/island-legacy.css +3 -1
- package/components/list/list.js +6 -1
- package/components/list/list__custom.js +9 -3
- package/components/list/list__item.js +8 -2
- package/components/loader-inline/loader-inline.css +1 -1
- package/components/loader-screen/loader-screen.css +1 -1
- package/components/message/message.css +1 -1
- package/components/pager/pager.js +5 -3
- package/components/permissions/permissions.js +1 -1
- package/components/progress-bar/progress-bar.css +1 -1
- package/components/query-assist/query-assist.css +1 -1
- package/components/save-field-ng/save-field-ng.js +3 -1
- package/components/save-field-ng/{save-field-ng.html → save-field-ng__template.js} +2 -2
- package/components/select/select.css +4 -0
- package/components/select/select.examples.js +13 -0
- package/components/select/select.js +6 -6
- package/components/shortcuts-hint-ng/shortcuts-hint-ng.css +1 -1
- package/components/shortcuts-hint-ng/shortcuts-hint-ng.js +1 -1
- package/components/shortcuts-hint-ng/{shortcuts-hint-ng.html → shortcuts-hint-ng__template.js} +2 -2
- package/components/sidebar/sidebar.css +1 -0
- package/components/sidebar-ng/sidebar-ng.js +6 -2
- package/components/sidebar-ng/{sidebar-ng__button.html → sidebar-ng__button-template.js} +2 -2
- package/components/sidebar-ng/{sidebar-ng.html → sidebar-ng__template.js} +2 -2
- package/components/table/table.css +2 -1
- package/components/table-legacy/table-legacy.css +2 -2
- package/components/table-legacy-ng/table-legacy-ng.js +38 -5
- package/components/table-legacy-ng/table-legacy-ng__pager.js +7 -1
- package/components/tabs-ng/tabs-ng.js +3 -1
- package/components/tabs-ng/{tabs-ng.html → tabs-ng__template.js} +2 -2
- package/components/tag/tag.css +5 -2
- package/components/tags-input/tags-input.js +5 -2
- package/components/template-ng/template-ng.js +1 -1
- package/components/tooltip/tooltip.js +7 -2
- package/components/user-agreement/user-agreement.css +1 -1
- package/dist/_helpers/button-group.js +3 -0
- package/dist/_helpers/button-set.js +3 -0
- package/dist/_helpers/button-toolbar.js +3 -0
- package/dist/_helpers/button__classes.js +1 -1
- package/dist/_helpers/checkbox.js +3 -0
- package/dist/_helpers/date-picker.js +1 -1
- package/dist/_helpers/error-message.js +3 -0
- package/dist/_helpers/footer.js +121 -0
- package/dist/_helpers/grid.js +1 -1
- package/dist/_helpers/group.js +3 -0
- package/dist/_helpers/header.js +1 -1
- package/dist/_helpers/icon.js +3 -0
- package/dist/_helpers/inject-styles.js +1 -1
- package/dist/_helpers/input.js +3 -0
- package/dist/_helpers/island.js +1 -1
- package/dist/_helpers/link.js +3 -0
- package/dist/_helpers/loader-screen.js +3 -0
- package/dist/_helpers/panel.js +3 -0
- package/dist/_helpers/query-assist__suggestions.js +1 -1
- package/dist/_helpers/radio.js +3 -0
- package/dist/_helpers/sidebar.js +1 -1
- package/dist/_helpers/table.js +1 -1
- package/dist/_helpers/tabs.js +1 -1
- package/dist/_helpers/title.js +1 -1
- package/dist/alert/alert.js +3 -3
- package/dist/alert/container.js +2 -2
- package/dist/alert-service/alert-service.js +3 -2
- package/dist/analytics/analytics.js +2 -2
- package/dist/analytics/analytics__custom-plugin.js +1 -1
- package/dist/analytics/analytics__fus-plugin.js +1 -1
- package/dist/analytics/analytics__ga-plugin.js +1 -1
- package/dist/analytics/analytics__plugin-utils.js +1 -1
- package/dist/analytics-ng/analytics-ng.js +94 -0
- package/dist/auth/auth.js +4 -1
- package/dist/auth/auth__core.js +15 -9
- package/dist/auth/background-flow.js +1 -2
- package/dist/auth/down-notification.js +5 -2
- package/dist/auth/iframe-flow.js +5 -2
- package/dist/auth/landing-entry.js +1 -1
- package/dist/auth/landing.js +5 -2
- package/dist/auth/request-builder.js +1 -1
- package/dist/auth/response-parser.js +1 -1
- package/dist/auth/storage.js +3 -2
- package/dist/auth/token-validator.js +1 -1
- package/dist/auth/window-flow.js +1 -1
- package/dist/auth-dialog/auth-dialog.js +4 -3
- package/dist/auth-dialog-service/auth-dialog-service.js +3 -2
- package/dist/auth-ng/auth-ng.js +203 -0
- package/dist/auth-ng/auth-ng.mock.js +33 -0
- package/dist/autofocus-ng/autofocus-ng.js +50 -0
- package/dist/avatar/avatar.js +19 -7
- package/dist/avatar/fallback-avatar.js +141 -0
- package/dist/avatar-editor-ng/avatar-editor-ng.js +164 -0
- package/dist/avatar-editor-ng/avatar-editor-ng__template.js +30 -0
- package/dist/avatar-ng/avatar-ng.js +18 -0
- package/dist/badge/badge.js +1 -1
- package/dist/badge-ng/badge-ng.js +16 -0
- package/dist/breadcrumb-ng/breadcrumb-ng.js +61 -0
- package/dist/button/button.js +3 -2
- package/dist/button-group/button-group.js +3 -3
- package/dist/button-group/caption.js +24 -5
- package/dist/button-group-ng/button-group-ng.js +38 -0
- package/dist/button-ng/button-ng.js +223 -0
- package/dist/button-set/button-set.js +2 -3
- package/dist/button-set-ng/button-set-ng.js +19 -0
- package/dist/button-toolbar/button-toolbar.js +2 -3
- package/dist/button-toolbar-ng/button-toolbar-ng.js +23 -0
- package/dist/caret/caret.js +1 -1
- package/dist/checkbox/checkbox.js +4 -4
- package/dist/checkbox-ng/checkbox-ng.js +55 -0
- package/dist/code/code.js +136 -0
- package/dist/compiler-ng/compiler-ng.js +53 -0
- package/dist/confirm/confirm.js +4 -2
- package/dist/confirm-ng/confirm-ng.js +66 -0
- package/dist/confirm-service/confirm-service.js +4 -3
- package/dist/content-layout/content-layout.js +1 -1
- package/dist/contenteditable/contenteditable.js +1 -1
- package/dist/data-list/data-list.js +6 -3
- package/dist/data-list/data-list.mock.js +2 -2
- package/dist/data-list/item.js +5 -3
- package/dist/data-list/selection.js +1 -1
- package/dist/data-list/title.js +3 -1
- package/dist/data-list-ng/data-list-ng.js +59 -0
- package/dist/date-picker/consts.js +1 -2
- package/dist/date-picker/date-input.js +10 -6
- package/dist/date-picker/date-picker.js +28 -16
- package/dist/date-picker/date-popup.js +20 -9
- package/dist/date-picker/day.js +1 -1
- package/dist/date-picker/formats.js +1 -1
- package/dist/date-picker/month-names.js +14 -7
- package/dist/date-picker/month-slider.js +1 -1
- package/dist/date-picker/month.js +12 -6
- package/dist/date-picker/months.js +1 -1
- package/dist/date-picker/weekdays.js +12 -4
- package/dist/date-picker/years.js +1 -1
- package/dist/dialog/dialog.js +3 -2
- package/dist/dialog-ng/dialog-ng.js +601 -0
- package/dist/dialog-ng/dialog-ng__template.js +71 -0
- package/dist/docked-panel-ng/docked-panel-ng.js +170 -0
- package/dist/dropdown/anchor.js +2 -1
- package/dist/dropdown/dropdown.js +3 -2
- package/dist/dropdown-menu/dropdown-menu.js +175 -0
- package/dist/error-bubble/error-bubble.js +2 -2
- package/dist/error-message/error-message.js +4 -4
- package/dist/error-message-ng/error-message-ng.js +53 -0
- package/dist/footer/footer.js +6 -122
- package/dist/footer-ng/footer-ng.js +75 -0
- package/dist/form-ng/form-ng.js +169 -0
- package/dist/global/angular-component-factory.js +1 -2
- package/dist/global/compose.js +1 -1
- package/dist/global/composeRefs.js +1 -1
- package/dist/global/conic-gradient.js +1 -2
- package/dist/global/create-stateful-context.js +1 -1
- package/dist/global/data-tests.js +1 -1
- package/dist/global/focus-sensor-hoc.js +1 -1
- package/dist/global/fuzzy-highlight.js +1 -1
- package/dist/global/get-event-key.js +1 -1
- package/dist/global/get-uid.js +1 -1
- package/dist/global/linear-function.js +1 -2
- package/dist/global/listeners.js +1 -1
- package/dist/global/memoize.js +1 -1
- package/dist/global/normalize-indent.js +1 -1
- package/dist/global/promise-with-timeout.js +1 -1
- package/dist/global/radial-gradient-mask.js +1 -1
- package/dist/global/react-dom-renderer.js +1 -1
- package/dist/global/rerender-hoc.js +1 -1
- package/dist/global/ring-angular-component.js +1 -1
- package/dist/global/schedule-raf.js +1 -1
- package/dist/global/sniffer.js +1 -1
- package/dist/global/supports-css.js +1 -1
- package/dist/global/theme.js +1 -2
- package/dist/global/trivial-template-tag.js +1 -1
- package/dist/global/variables_dark.js +1 -1
- package/dist/grid/col.js +1 -1
- package/dist/grid/row.js +1 -1
- package/dist/group/group.js +2 -3
- package/dist/group-ng/group-ng.js +11 -0
- package/dist/header/header.js +24 -19
- package/dist/header/logo.js +3 -2
- package/dist/header/profile.js +31 -25
- package/dist/header/services-link.js +1 -0
- package/dist/header/services.js +4 -2
- package/dist/header/smart-profile.js +22 -16
- package/dist/header/smart-services.js +5 -2
- package/dist/header/tray-icon.js +3 -2
- package/dist/header/tray.js +1 -1
- package/dist/heading/heading.js +2 -3
- package/dist/http/http.js +1 -2
- package/dist/http/http.mock.js +1 -1
- package/dist/hub-source/hub-source.js +1 -1
- package/dist/hub-source/hub-source__users-groups.js +1 -1
- package/dist/icon/icon.js +3 -2
- package/dist/icon/icon__svg.js +81 -6
- package/dist/icon/index.js +2 -1
- package/dist/icon-ng/icon-ng.js +89 -0
- package/dist/input/input.js +4 -5
- package/dist/input-ng/input-ng.js +166 -0
- package/dist/island/adaptive-island-hoc.js +1 -2
- package/dist/island/content.js +1 -1
- package/dist/island/header.js +1 -1
- package/dist/island/island.js +1 -2
- package/dist/island-legacy/content-legacy.js +1 -1
- package/dist/island-legacy/header-legacy.js +1 -1
- package/dist/island-legacy/island-legacy.js +1 -1
- package/dist/island-ng/island-content-ng.js +56 -0
- package/dist/island-ng/island-header-ng.js +32 -0
- package/dist/island-ng/island-ng-class-fixer.js +9 -0
- package/dist/island-ng/island-ng.js +31 -0
- package/dist/link/clickableLink.js +1 -1
- package/dist/link/link.js +2 -4
- package/dist/link-ng/link-ng.js +25 -0
- package/dist/list/list.js +13 -5
- package/dist/list/list__custom.js +8 -3
- package/dist/list/list__hint.js +1 -1
- package/dist/list/list__item.js +15 -6
- package/dist/list/list__link.js +2 -1
- package/dist/list/list__separator.js +1 -1
- package/dist/list/list__title.js +1 -1
- package/dist/list/list__users-groups-source.js +6 -2
- package/dist/loader/loader.js +1 -1
- package/dist/loader/loader__core.js +1 -1
- package/dist/loader-inline/loader-inline.js +1 -1
- package/dist/loader-inline-ng/loader-inline-ng.js +42 -0
- package/dist/loader-ng/loader-ng.js +43 -0
- package/dist/loader-screen/loader-screen.js +2 -3
- package/dist/loader-screen-ng/loader-screen-ng.js +99 -0
- package/dist/login-dialog/login-dialog.js +4 -2
- package/dist/login-dialog/service.js +4 -2
- package/dist/markdown/code.js +30 -0
- package/dist/markdown/heading.js +23 -0
- package/dist/markdown/link.js +30 -0
- package/dist/markdown/markdown.js +73 -0
- package/dist/message/message.js +4 -3
- package/dist/message-bundle-ng/message-bundle-ng.js +111 -0
- package/dist/pager/pager.js +16 -7
- package/dist/pager-ng/pager-ng.js +96 -0
- package/dist/panel/panel.js +2 -3
- package/dist/panel-ng/panel-ng.js +16 -0
- package/dist/permissions/permissions.js +1 -1
- package/dist/permissions/permissions__cache.js +1 -1
- package/dist/permissions-ng/permissions-ng.js +274 -0
- package/dist/place-under-ng/place-under-ng.js +157 -0
- package/dist/popup/popup.js +2 -3
- package/dist/popup/position.js +1 -2
- package/dist/popup-menu/popup-menu.js +6 -3
- package/dist/progress-bar/progress-bar.js +2 -2
- package/dist/progress-bar-ng/progress-bar-ng.js +15 -0
- package/dist/promised-click-ng/promised-click-ng.js +126 -0
- package/dist/proxy-attrs/proxy-attrs.js +1 -1
- package/dist/query-assist/query-assist.js +6 -3
- package/dist/query-assist/query-assist__suggestions.js +5 -1
- package/dist/query-assist-ng/query-assist-ng.js +82 -0
- package/dist/radio/radio.js +2 -1
- package/dist/radio/radio__item.js +2 -4
- package/dist/radio-ng/radio-ng.js +63 -0
- package/dist/save-field-ng/save-field-ng.js +335 -0
- package/dist/save-field-ng/save-field-ng__template.js +34 -0
- package/dist/select/select.js +13 -11
- package/dist/select/select__filter.js +6 -1
- package/dist/select/select__popup.js +7 -2
- package/dist/select-ng/select-ng.js +621 -0
- package/dist/select-ng/select-ng__lazy.js +150 -0
- package/dist/select-ng/select-ng__options.js +145 -0
- package/dist/shortcuts/core.js +2 -2
- package/dist/shortcuts/shortcuts-hoc.js +1 -1
- package/dist/shortcuts/shortcuts.js +6 -6
- package/dist/shortcuts-hint-ng/shortcuts-hint-ng.js +120 -0
- package/dist/shortcuts-hint-ng/shortcuts-hint-ng__template.js +50 -0
- package/dist/shortcuts-ng/shortcuts-ng.js +261 -0
- package/dist/sidebar-ng/sidebar-ng.js +111 -0
- package/dist/sidebar-ng/sidebar-ng__button-template.js +20 -0
- package/dist/sidebar-ng/sidebar-ng__template.js +12 -0
- package/dist/storage/storage.js +3 -2
- package/dist/storage/storage__fallback.js +1 -1
- package/dist/storage/storage__local.js +3 -2
- package/dist/style.css +1 -1
- package/dist/tab-trap/tab-trap.js +1 -2
- package/dist/table/cell.js +1 -1
- package/dist/table/disable-hover-hoc.js +1 -1
- package/dist/table/header-cell.js +3 -2
- package/dist/table/header.js +4 -2
- package/dist/table/multitable.js +1 -1
- package/dist/table/row-with-focus-sensor.js +4 -2
- package/dist/table/row.js +4 -2
- package/dist/table/selection-adapter.js +1 -1
- package/dist/table/selection-shortcuts-hoc.js +1 -1
- package/dist/table/selection.js +1 -1
- package/dist/table/smart-table.js +4 -2
- package/dist/table/table.js +4 -3
- package/dist/table-legacy-ng/table-legacy-ng.js +501 -0
- package/dist/table-legacy-ng/table-legacy-ng__pager.js +122 -0
- package/dist/table-legacy-ng/table-legacy-ng__selection-navigate-actions.js +123 -0
- package/dist/table-legacy-ng/table-legacy-ng__selection.js +179 -0
- package/dist/table-legacy-ng/table-legacy-ng__toolbar.js +56 -0
- package/dist/table-ng/smart-table-ng.js +65 -0
- package/dist/table-ng/table-ng.js +64 -0
- package/dist/tabs/collapsible-more.js +5 -1
- package/dist/tabs/collapsible-tab.js +2 -1
- package/dist/tabs/collapsible-tabs.js +6 -3
- package/dist/tabs/dumb-tabs.js +6 -2
- package/dist/tabs/smart-tabs.js +6 -2
- package/dist/tabs/tab-link.js +2 -1
- package/dist/tabs/tab.js +1 -1
- package/dist/tabs/tabs.js +5 -1
- package/dist/tabs-ng/tabs-ng.js +193 -0
- package/dist/tabs-ng/tabs-ng__template.js +40 -0
- package/dist/tag/tag.js +4 -3
- package/dist/tags-input/tags-input.js +12 -8
- package/dist/tags-input-ng/tags-input-ng.js +89 -0
- package/dist/tags-list/tags-list.js +3 -2
- package/dist/template-ng/template-ng.js +70 -0
- package/dist/text/text.js +1 -1
- package/dist/theme-ng/theme-ng.js +44 -0
- package/dist/title-ng/title-ng.js +114 -0
- package/dist/toggle/toggle.js +2 -3
- package/dist/toggle-ng/toggle-ng.js +16 -0
- package/dist/tooltip/tooltip.js +8 -4
- package/dist/tooltip-ng/tooltip-ng.js +98 -0
- package/dist/user-agreement/service.js +409 -0
- package/dist/user-agreement/toolbox.eula.js +162 -0
- package/dist/user-agreement/user-agreement.js +167 -0
- package/dist/user-card/card.js +3 -0
- package/dist/user-card/smart-user-card-tooltip.js +5 -2
- package/dist/user-card/tooltip.js +5 -2
- package/dist/user-card/user-card.js +5 -2
- package/dist/user-card-ng/user-card-ng.js +59 -0
- package/package.json +62 -64
- package/webpack.config.js +10 -8
- package/components/button-set-ng/button-set-ng.html +0 -1
- package/components/footer-ng/footer-ng.html +0 -13
- package/components/form-ng/form-ng__error-bubble.html +0 -3
- package/components/table-legacy-ng/table-legacy-ng.html +0 -4
- package/components/table-legacy-ng/table-legacy-ng__column.html +0 -12
- package/components/table-legacy-ng/table-legacy-ng__header.html +0 -4
- package/components/table-legacy-ng/table-legacy-ng__pager.html +0 -7
- package/components/table-legacy-ng/table-legacy-ng__row.html +0 -12
- package/components/table-legacy-ng/table-legacy-ng__title.html +0 -9
- package/dist/_helpers/caption.js +0 -25
- package/dist/_helpers/icon__svg.js +0 -82
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
## [4.1.0]
|
|
2
|
+
|
|
3
|
+
### Pre-built version
|
|
4
|
+
|
|
5
|
+
Ring UI now comes with pre-built version in `@jetbrains/ring-ui/dist` directory.
|
|
6
|
+
This addresses the following issues:
|
|
7
|
+
|
|
8
|
+
* does not require using specific bundler (WebPack) anymore
|
|
9
|
+
* does not require dealing with Ring UI building configuration
|
|
10
|
+
* decreases your project build time
|
|
11
|
+
|
|
12
|
+
See "README.md" for quick start with pre-built version
|
|
13
|
+
|
|
1
14
|
## [4.0.0]
|
|
2
15
|
|
|
3
16
|
### BREAKING CHANGES
|
package/README.md
CHANGED
|
@@ -7,27 +7,28 @@ This collection of UI components aims to provide all the necessary building bloc
|
|
|
7
7
|
|
|
8
8
|
## Installation
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
`npm install @jetbrains/ring-ui`
|
|
11
11
|
|
|
12
12
|
### Quick start (importing components as ES modules)
|
|
13
13
|
|
|
14
14
|
The easiest way is to import necessary components as ES modules:
|
|
15
|
-
```
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import Input from "@jetbrains/ring-ui/dist/input"
|
|
19
|
-
import Select from "@jetbrains/ring-ui/dist/select"
|
|
20
|
-
import Toggle from "@jetbrains/ring-ui/dist/toggle"
|
|
21
|
-
import { Tabs, Tab } from "@jetbrains/ring-ui/dist/tabs"
|
|
15
|
+
```js
|
|
16
|
+
// You need to import RingUI styles once
|
|
17
|
+
import '@jetbrains/ring-ui/dist/style.css';
|
|
22
18
|
|
|
23
|
-
import
|
|
19
|
+
import alertService from '@jetbrains/ring-ui/dist/alert-service/alert-service';
|
|
20
|
+
import Button from '@jetbrains/ring-ui/dist/button/button';
|
|
24
21
|
|
|
25
22
|
...
|
|
26
23
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
export const Demo = () => {
|
|
25
|
+
return (
|
|
26
|
+
<Button onClick={() => alertService.successMessage('Hello world')}>
|
|
27
|
+
Click me
|
|
28
|
+
</Button>
|
|
29
|
+
);
|
|
30
|
+
};
|
|
31
|
+
|
|
31
32
|
```
|
|
32
33
|
|
|
33
34
|
The bundle size will depend on the amount of components you imported.
|
|
@@ -203,7 +203,8 @@ describe('Auth', () => {
|
|
|
203
203
|
redirectUri: 'http://localhost:8080/hub',
|
|
204
204
|
clientId: '1-1-1-1-1',
|
|
205
205
|
scope: ['0-0-0-0-0', 'youtrack'],
|
|
206
|
-
optionalScopes: ['youtrack']
|
|
206
|
+
optionalScopes: ['youtrack'],
|
|
207
|
+
waitForRedirectTimeout: 0
|
|
207
208
|
});
|
|
208
209
|
try {
|
|
209
210
|
await auth.init();
|
|
@@ -226,7 +227,8 @@ describe('Auth', () => {
|
|
|
226
227
|
auth = new Auth({
|
|
227
228
|
serverUri: '',
|
|
228
229
|
redirect: true,
|
|
229
|
-
cleanHash: true
|
|
230
|
+
cleanHash: true,
|
|
231
|
+
waitForRedirectTimeout: 0
|
|
230
232
|
});
|
|
231
233
|
|
|
232
234
|
try {
|
|
@@ -245,7 +247,8 @@ describe('Auth', () => {
|
|
|
245
247
|
auth = new Auth({
|
|
246
248
|
serverUri: '',
|
|
247
249
|
redirect: true,
|
|
248
|
-
cleanHash: true
|
|
250
|
+
cleanHash: true,
|
|
251
|
+
waitForRedirectTimeout: 0
|
|
249
252
|
});
|
|
250
253
|
|
|
251
254
|
try {
|
|
@@ -265,7 +268,8 @@ describe('Auth', () => {
|
|
|
265
268
|
auth = new Auth({
|
|
266
269
|
serverUri: '',
|
|
267
270
|
redirect: true,
|
|
268
|
-
cleanHash: false
|
|
271
|
+
cleanHash: false,
|
|
272
|
+
waitForRedirectTimeout: 0
|
|
269
273
|
});
|
|
270
274
|
|
|
271
275
|
try {
|
|
@@ -284,7 +288,8 @@ describe('Auth', () => {
|
|
|
284
288
|
serverUri: '',
|
|
285
289
|
redirect: true,
|
|
286
290
|
redirectUri: 'http://localhost:8080/hub',
|
|
287
|
-
requestCredentials: 'skip'
|
|
291
|
+
requestCredentials: 'skip',
|
|
292
|
+
waitForRedirectTimeout: 0
|
|
288
293
|
});
|
|
289
294
|
try {
|
|
290
295
|
await auth.init();
|
|
@@ -313,7 +318,8 @@ describe('Auth', () => {
|
|
|
313
318
|
redirectUri: 'http://localhost:8080/hub',
|
|
314
319
|
clientId: '1-1-1-1-1',
|
|
315
320
|
scope: ['0-0-0-0-0', 'youtrack'],
|
|
316
|
-
optionalScopes: ['youtrack']
|
|
321
|
+
optionalScopes: ['youtrack'],
|
|
322
|
+
waitForRedirectTimeout: 0
|
|
317
323
|
});
|
|
318
324
|
|
|
319
325
|
auth._storage._tokenStorage = auth._storage._stateStorage =
|
|
@@ -330,7 +336,8 @@ describe('Auth', () => {
|
|
|
330
336
|
auth._storage.saveToken({
|
|
331
337
|
accessToken: 'token',
|
|
332
338
|
expires: TokenValidator._epoch() + HOUR,
|
|
333
|
-
scopes: ['0-0-0-0-0']
|
|
339
|
+
scopes: ['0-0-0-0-0'],
|
|
340
|
+
waitForRedirectTimeout: 0
|
|
334
341
|
});
|
|
335
342
|
});
|
|
336
343
|
|
|
@@ -14,6 +14,7 @@ export const DEFAULT_EXPIRES_TIMEOUT = 40 * 60;
|
|
|
14
14
|
export const DEFAULT_BACKGROUND_TIMEOUT = 10 * 1000;
|
|
15
15
|
const DEFAULT_BACKEND_CHECK_TIMEOUT = 10 * 1000;
|
|
16
16
|
const BACKGROUND_REDIRECT_TIMEOUT = 20 * 1000;
|
|
17
|
+
const DEFAULT_WAIT_FOR_REDIRECT_TIMEOUT = 5 * 1000;
|
|
17
18
|
/* eslint-enable no-magic-numbers */
|
|
18
19
|
|
|
19
20
|
export const USER_CHANGED_EVENT = 'userChange';
|
|
@@ -46,6 +47,7 @@ const DEFAULT_CONFIG = {
|
|
|
46
47
|
onBackendDown: () => {},
|
|
47
48
|
|
|
48
49
|
defaultExpiresIn: DEFAULT_EXPIRES_TIMEOUT,
|
|
50
|
+
waitForRedirectTimeout: DEFAULT_WAIT_FOR_REDIRECT_TIMEOUT,
|
|
49
51
|
translations: {
|
|
50
52
|
login: 'Log in',
|
|
51
53
|
loginTo: 'Log in to %serviceName%',
|
|
@@ -311,6 +313,11 @@ export default class Auth {
|
|
|
311
313
|
const authRequest = await this._requestBuilder.prepareAuthRequest();
|
|
312
314
|
this._redirectCurrentPage(authRequest.url);
|
|
313
315
|
|
|
316
|
+
// HUB-10867 Since we already redirecting the page, there is no actual need to throw an error
|
|
317
|
+
// and scare user with flashing error
|
|
318
|
+
// But let's keep it just in case redirect was not successful
|
|
319
|
+
await new Promise(resolve => setTimeout(resolve, this.config.waitForRedirectTimeout));
|
|
320
|
+
|
|
314
321
|
throw error;
|
|
315
322
|
}
|
|
316
323
|
|
|
@@ -615,8 +622,8 @@ export default class Auth {
|
|
|
615
622
|
try {
|
|
616
623
|
// We've got some error from this list
|
|
617
624
|
// https://www.jetbrains.com/help/youtrack/devportal/OAuth-2.0-Errors.html
|
|
618
|
-
if (typeof error.code === 'string') {
|
|
619
|
-
const readableCode = error.code.split('_').join(' ');
|
|
625
|
+
if (error.code && typeof error.code.code === 'string') {
|
|
626
|
+
const readableCode = error.code.code.split('_').join(' ');
|
|
620
627
|
return `Authorization error: ${readableCode}`;
|
|
621
628
|
}
|
|
622
629
|
} catch {
|
|
@@ -736,11 +743,10 @@ export default class Auth {
|
|
|
736
743
|
}
|
|
737
744
|
|
|
738
745
|
async switchUser() {
|
|
739
|
-
if (this.config.embeddedLogin) {
|
|
740
|
-
|
|
746
|
+
if (!this.config.embeddedLogin) {
|
|
747
|
+
throw new Error('Auth: switchUser only supported for "embeddedLogin" mode');
|
|
741
748
|
}
|
|
742
|
-
|
|
743
|
-
throw new Error('Auth: switchUser only supported for "embeddedLogin" mode');
|
|
749
|
+
await this._runEmbeddedLogin();
|
|
744
750
|
}
|
|
745
751
|
|
|
746
752
|
/**
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
@import "../global/variables.css";
|
|
2
2
|
|
|
3
3
|
.avatar {
|
|
4
|
+
display: inline-block;
|
|
4
5
|
object-fit: cover;
|
|
5
6
|
object-position: center;
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
/* This is a "graceful degradation" fallback, while the real value is controlled by JS */
|
|
9
|
+
|
|
10
|
+
border-radius: var(--ring-border-radius);
|
|
8
11
|
}
|
|
9
12
|
|
|
10
13
|
.subavatar {
|
|
@@ -21,7 +21,8 @@ export const avatar = () => {
|
|
|
21
21
|
{Object.keys(Size).map(size => (
|
|
22
22
|
<div className="avatar-demo" key={size}>
|
|
23
23
|
<Avatar size={Size[size]} url={avatarDataUri}/>
|
|
24
|
-
<Avatar size={Size[size]}
|
|
24
|
+
<Avatar size={Size[size]} username="Jet Brains"/>
|
|
25
|
+
<Avatar size={Size[size]} username="Jet Brains" round/>
|
|
25
26
|
<Avatar size={Size[size]}/>
|
|
26
27
|
</div>
|
|
27
28
|
))}
|
|
@@ -38,7 +39,7 @@ avatar.parameters = {
|
|
|
38
39
|
.avatar-demo {
|
|
39
40
|
display: flex;
|
|
40
41
|
justify-content: space-between;
|
|
41
|
-
width:
|
|
42
|
+
width: 240px;
|
|
42
43
|
margin-bottom: 16px;
|
|
43
44
|
}
|
|
44
45
|
</style>`
|
|
@@ -6,6 +6,7 @@ import {encodeURL, isDataURI, parseQueryString} from '../global/url';
|
|
|
6
6
|
import {getPixelRatio} from '../global/dom';
|
|
7
7
|
|
|
8
8
|
import styles from './avatar.css';
|
|
9
|
+
import FallbackAvatar from './fallback-avatar';
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* @name Avatar
|
|
@@ -15,6 +16,7 @@ export const Size = {
|
|
|
15
16
|
Size18: 18,
|
|
16
17
|
Size20: 20,
|
|
17
18
|
Size24: 24,
|
|
19
|
+
Size28: 28,
|
|
18
20
|
Size32: 32,
|
|
19
21
|
Size40: 40,
|
|
20
22
|
Size48: 48,
|
|
@@ -30,7 +32,9 @@ export default class Avatar extends PureComponent {
|
|
|
30
32
|
url: PropTypes.string,
|
|
31
33
|
round: PropTypes.bool,
|
|
32
34
|
subavatar: PropTypes.string,
|
|
33
|
-
subavatarSize: PropTypes.number
|
|
35
|
+
subavatarSize: PropTypes.number,
|
|
36
|
+
username: PropTypes.string,
|
|
37
|
+
skipParams: PropTypes.bool
|
|
34
38
|
};
|
|
35
39
|
|
|
36
40
|
static defaultProps = {
|
|
@@ -53,7 +57,18 @@ export default class Avatar extends PureComponent {
|
|
|
53
57
|
};
|
|
54
58
|
|
|
55
59
|
render() {
|
|
56
|
-
const {
|
|
60
|
+
const {
|
|
61
|
+
size,
|
|
62
|
+
url,
|
|
63
|
+
dpr,
|
|
64
|
+
style,
|
|
65
|
+
round,
|
|
66
|
+
subavatar,
|
|
67
|
+
subavatarSize,
|
|
68
|
+
username,
|
|
69
|
+
skipParams,
|
|
70
|
+
...restProps
|
|
71
|
+
} = this.props;
|
|
57
72
|
const sizeString = `${size}px`;
|
|
58
73
|
const subavatarSizeString = `${subavatarSize}px`;
|
|
59
74
|
const borderRadius = size <= Size.Size18 ? 'var(--ring-border-radius-small)' : 'var(--ring-border-radius)';
|
|
@@ -76,14 +91,24 @@ export default class Avatar extends PureComponent {
|
|
|
76
91
|
<span
|
|
77
92
|
{...restProps}
|
|
78
93
|
data-test="avatar"
|
|
79
|
-
className={
|
|
94
|
+
className={
|
|
95
|
+
classNames(styles.avatar, this.props.className, {[styles.empty]: username == null})
|
|
96
|
+
}
|
|
80
97
|
style={styleObj}
|
|
81
|
-
|
|
98
|
+
>{
|
|
99
|
+
username != null && (
|
|
100
|
+
<FallbackAvatar
|
|
101
|
+
size={size}
|
|
102
|
+
round={round}
|
|
103
|
+
username={username}
|
|
104
|
+
/>
|
|
105
|
+
)
|
|
106
|
+
}</span>
|
|
82
107
|
);
|
|
83
108
|
}
|
|
84
109
|
|
|
85
110
|
let src = url;
|
|
86
|
-
if (!isDataURI(url)) {
|
|
111
|
+
if (!skipParams && !isDataURI(url)) {
|
|
87
112
|
const [urlStart, query] = url.split('?');
|
|
88
113
|
const queryParams = {
|
|
89
114
|
...parseQueryString(query),
|
|
@@ -102,7 +127,7 @@ export default class Avatar extends PureComponent {
|
|
|
102
127
|
subavatarSizeString
|
|
103
128
|
};
|
|
104
129
|
|
|
105
|
-
subavatarSrc = encodeURL(urlStart, queryParams);
|
|
130
|
+
subavatarSrc = skipParams ? subavatar : encodeURL(urlStart, queryParams);
|
|
106
131
|
return (
|
|
107
132
|
<div>
|
|
108
133
|
<img
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import React, {useMemo} from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
|
|
4
|
+
import getUID from '../global/get-uid';
|
|
5
|
+
|
|
6
|
+
const colorPairs = [
|
|
7
|
+
['#60A800', '#D5CA00'],
|
|
8
|
+
['#21D370', '#03E9E1'],
|
|
9
|
+
['#3BA1FF', '#36E97D'],
|
|
10
|
+
['#00C243', '#00FFFF'],
|
|
11
|
+
['#4BE098', '#627FFF'],
|
|
12
|
+
['#168BFA', '#26F7C7'],
|
|
13
|
+
['#9D4CFF', '#39D3C3'],
|
|
14
|
+
['#0A81F6', '#0ACFF6'],
|
|
15
|
+
['#765AF8', '#5A91F8'],
|
|
16
|
+
['#9E54FF', '#0ACFF6'],
|
|
17
|
+
['#B345F1', '#669DFF'],
|
|
18
|
+
['#765AF8', '#C059EE'],
|
|
19
|
+
['#9039D0', '#C239D0'],
|
|
20
|
+
['#9F2AFF', '#FD56FD'],
|
|
21
|
+
['#AB3AF2', '#E40568'],
|
|
22
|
+
['#9F2AFF', '#E9A80B'],
|
|
23
|
+
['#D50F6B', '#E73AE8'],
|
|
24
|
+
['#ED5502', '#E73AE8'],
|
|
25
|
+
['#ED358C', '#DBED18'],
|
|
26
|
+
['#ED358C', '#F9902E'],
|
|
27
|
+
['#FF7500', '#FFCA00']
|
|
28
|
+
];
|
|
29
|
+
|
|
30
|
+
const Sizes = {
|
|
31
|
+
18: {
|
|
32
|
+
radius: 2,
|
|
33
|
+
text: {x: 9, y: 13},
|
|
34
|
+
fontSize: '11px',
|
|
35
|
+
textAnchor: 'middle'
|
|
36
|
+
},
|
|
37
|
+
24: {
|
|
38
|
+
radius: 3,
|
|
39
|
+
text: {x: 2, y: 13},
|
|
40
|
+
fontSize: '11px',
|
|
41
|
+
underscore: {x: 3, y: 17}
|
|
42
|
+
},
|
|
43
|
+
32: {
|
|
44
|
+
radius: 3,
|
|
45
|
+
text: {x: 3, y: 17},
|
|
46
|
+
fontSize: '13px',
|
|
47
|
+
letterSpacing: 1,
|
|
48
|
+
underscore: {x: 4, y: 22}
|
|
49
|
+
},
|
|
50
|
+
40: {
|
|
51
|
+
radius: 3,
|
|
52
|
+
text: {x: 5, y: 19},
|
|
53
|
+
fontSize: '15px',
|
|
54
|
+
letterSpacing: 1,
|
|
55
|
+
underscore: {x: 6, y: 28}
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const sizeKeys = Object.keys(Sizes).map(Number);
|
|
60
|
+
|
|
61
|
+
function extractLetters(name) {
|
|
62
|
+
const names = name.split(/[\s._]+/).filter(Boolean);
|
|
63
|
+
if (names.length >= 2) {
|
|
64
|
+
return names[0][0].toUpperCase() + names[1][0].toUpperCase();
|
|
65
|
+
} else if (names.length === 1) {
|
|
66
|
+
if (names[0].length >= 2) {
|
|
67
|
+
return names[0].slice(0, 2).toUpperCase();
|
|
68
|
+
} else {
|
|
69
|
+
return `${names[0][0].toUpperCase()}X`;
|
|
70
|
+
}
|
|
71
|
+
} else {
|
|
72
|
+
return 'XX';
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// https://gist.github.com/hyamamoto/fd435505d29ebfa3d9716fd2be8d42f0#gistcomment-2775538
|
|
77
|
+
const BASE = 32;
|
|
78
|
+
function hashCode(s) {
|
|
79
|
+
let h = 0;
|
|
80
|
+
for (let i = 0; i < s.length; i++) {
|
|
81
|
+
h = Math.imul(BASE - 1, h) + s.charCodeAt(i) | 0;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return h;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export default function FallbackAvatar({username, size, round}) {
|
|
88
|
+
const hash = Math.abs(hashCode(username.toLowerCase()));
|
|
89
|
+
const [fromColor, toColor] = colorPairs[hash % colorPairs.length];
|
|
90
|
+
const possibleSizeKeys = sizeKeys.filter(key => key >= size);
|
|
91
|
+
const sizeKey = possibleSizeKeys.length > 0
|
|
92
|
+
? Math.min(...possibleSizeKeys)
|
|
93
|
+
: Math.max(...sizeKeys);
|
|
94
|
+
const sizes = Sizes[sizeKey];
|
|
95
|
+
const radius = round ? '50%' : sizes.radius;
|
|
96
|
+
const gradientId = useMemo(() => getUID('gradient-'), []);
|
|
97
|
+
return (
|
|
98
|
+
<svg viewBox={`0 0 ${sizeKey} ${sizeKey}`} xmlns="http://www.w3.org/2000/svg">
|
|
99
|
+
<defs>
|
|
100
|
+
<linearGradient id={gradientId} x1="0" y1="0" x2="0" y2="1">
|
|
101
|
+
<stop stopColor={fromColor} offset="0"/>
|
|
102
|
+
<stop stopColor={toColor} offset="1"/>
|
|
103
|
+
</linearGradient>
|
|
104
|
+
</defs>
|
|
105
|
+
<g>
|
|
106
|
+
<rect
|
|
107
|
+
fill={`url(#${gradientId})`}
|
|
108
|
+
x="0"
|
|
109
|
+
y="0"
|
|
110
|
+
width={sizeKey}
|
|
111
|
+
height={sizeKey}
|
|
112
|
+
rx={radius}
|
|
113
|
+
ry={radius}
|
|
114
|
+
/>
|
|
115
|
+
<text
|
|
116
|
+
x={sizes.text.x}
|
|
117
|
+
y={sizes.text.y}
|
|
118
|
+
fontFamily="Arial, Helvetica, sans-serif"
|
|
119
|
+
fontSize={sizes.fontSize}
|
|
120
|
+
letterSpacing={sizes.letterSpacing}
|
|
121
|
+
fill="#FFFFFF"
|
|
122
|
+
textAnchor={sizes.textAnchor}
|
|
123
|
+
>
|
|
124
|
+
<tspan>{extractLetters(username)}</tspan>
|
|
125
|
+
{sizes.underscore && <tspan x={sizes.underscore.x} y={sizes.underscore.y}>{'_'}</tspan>}
|
|
126
|
+
</text>
|
|
127
|
+
</g>
|
|
128
|
+
</svg>
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
FallbackAvatar.propTypes = {
|
|
133
|
+
username: PropTypes.string.isRequired,
|
|
134
|
+
size: PropTypes.number.isRequired,
|
|
135
|
+
round: PropTypes.bool
|
|
136
|
+
};
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
width: 0;
|
|
20
20
|
height: calc(unit * 5);
|
|
21
21
|
|
|
22
|
-
content:
|
|
22
|
+
content: "";
|
|
23
23
|
vertical-align: middle;
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
width: 100%;
|
|
50
50
|
height: 100%;
|
|
51
51
|
|
|
52
|
-
content:
|
|
52
|
+
content: "";
|
|
53
53
|
|
|
54
54
|
background-color: rgba(0, 0, 0, 0.8);
|
|
55
55
|
}
|
|
@@ -6,6 +6,7 @@ import messageBundleNg from '../message-bundle-ng/message-bundle-ng';
|
|
|
6
6
|
import alertService from '../alert-service/alert-service';
|
|
7
7
|
import IconNG from '../icon-ng/icon-ng';
|
|
8
8
|
|
|
9
|
+
import template from './avatar-editor-ng__template';
|
|
9
10
|
import './avatar-editor-ng.css';
|
|
10
11
|
|
|
11
12
|
const angularModule = angular.module('Ring.avatar-editor', [messageBundleNg, IconNG]);
|
|
@@ -26,7 +27,7 @@ function rgAvatarEditor() {
|
|
|
26
27
|
deleteLabel: '@',
|
|
27
28
|
addMessage: '@'
|
|
28
29
|
},
|
|
29
|
-
template
|
|
30
|
+
template,
|
|
30
31
|
transclude: true,
|
|
31
32
|
controller: [
|
|
32
33
|
'$scope', '$attrs', 'RingMessageBundle',
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
export default `<div>
|
|
2
2
|
<div ng-click="!ngDisabled && controls.select()" class="ring-avatar-editor__frame" ng-class="{
|
|
3
3
|
'ring-avatar-editor_controlled': controlled,
|
|
4
4
|
'ring-avatar-editor': !ngDisabled
|
|
@@ -25,4 +25,4 @@
|
|
|
25
25
|
>
|
|
26
26
|
<span translate>{{ getDeleteLabel() }}</span>
|
|
27
27
|
</rg-button>
|
|
28
|
-
</div
|
|
28
|
+
</div>`;
|
|
@@ -451,7 +451,7 @@
|
|
|
451
451
|
width: calc(100% + loaderWidth);
|
|
452
452
|
height: 100%;
|
|
453
453
|
|
|
454
|
-
content:
|
|
454
|
+
content: "";
|
|
455
455
|
animation: progress 1s linear infinite;
|
|
456
456
|
|
|
457
457
|
background-repeat: repeat;
|
|
@@ -460,7 +460,7 @@
|
|
|
460
460
|
}
|
|
461
461
|
|
|
462
462
|
.delayed .content::after {
|
|
463
|
-
content:
|
|
463
|
+
content: "…";
|
|
464
464
|
}
|
|
465
465
|
|
|
466
466
|
.short {
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import angular from 'angular';
|
|
5
5
|
|
|
6
|
+
import buttonSetStyles from '../button-set/button-set.css';
|
|
7
|
+
|
|
6
8
|
const angularModule = angular.module('Ring.button-set', []);
|
|
7
9
|
|
|
8
10
|
function rgButtonSet() {
|
|
@@ -11,7 +13,7 @@ function rgButtonSet() {
|
|
|
11
13
|
replace: true,
|
|
12
14
|
scope: false,
|
|
13
15
|
transclude: true,
|
|
14
|
-
template:
|
|
16
|
+
template: `<div class="${buttonSetStyles.buttonSet}" ng-transclude></div>`
|
|
15
17
|
};
|
|
16
18
|
}
|
|
17
19
|
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
/* stylelint-disable-next-line selector-max-specificity */
|
|
90
90
|
&:checked + .cell,
|
|
91
91
|
&:indeterminate[checked] + .cell,
|
|
92
|
-
&:indeterminate[data-checked=true] + .cell {
|
|
92
|
+
&:indeterminate[data-checked="true"] + .cell {
|
|
93
93
|
border-color: var(--ring-border-hover-color);
|
|
94
94
|
background-color: var(--ring-selected-background-color);
|
|
95
95
|
}
|
package/components/code/code.js
CHANGED
|
@@ -14,7 +14,7 @@ function noop() {}
|
|
|
14
14
|
|
|
15
15
|
const registerLanguage = memoize(async language => {
|
|
16
16
|
const languageExports = await import(
|
|
17
|
-
/* webpackChunkName: "highlight-[request]"
|
|
17
|
+
/* webpackChunkName: "highlight-[request]" */
|
|
18
18
|
`highlight.js/lib/languages/${language}`
|
|
19
19
|
);
|
|
20
20
|
highlight.registerLanguage(language, languageExports.default);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
@import "../global/variables.css";
|
|
2
2
|
|
|
3
|
-
@value unit, extra-small-screen-media, small-screen-media from
|
|
3
|
+
@value unit, extra-small-screen-media, small-screen-media from "../global/global.css";
|
|
4
4
|
@value sidebarWidth: calc(unit * 30);
|
|
5
5
|
|
|
6
6
|
.contentLayout {
|
|
@@ -25,7 +25,8 @@ export default class DateInput extends React.PureComponent {
|
|
|
25
25
|
onInput: PropTypes.func,
|
|
26
26
|
onActivate: PropTypes.func,
|
|
27
27
|
onConfirm: PropTypes.func,
|
|
28
|
-
onClear: PropTypes.func
|
|
28
|
+
onClear: PropTypes.func,
|
|
29
|
+
locale: PropTypes.object
|
|
29
30
|
};
|
|
30
31
|
|
|
31
32
|
static defaultProps = {
|
|
@@ -78,16 +79,16 @@ export default class DateInput extends React.PureComponent {
|
|
|
78
79
|
time, name, hoverDate,
|
|
79
80
|
date, displayFormat, translations,
|
|
80
81
|
onActivate, onClear,
|
|
81
|
-
fromPlaceholder, toPlaceholder, timePlaceholder
|
|
82
|
+
fromPlaceholder, toPlaceholder, timePlaceholder, locale
|
|
82
83
|
} = this.props;
|
|
83
84
|
|
|
84
85
|
let displayText = '';
|
|
85
86
|
if (active && hoverDate) {
|
|
86
|
-
displayText = displayFormat(hoverDate);
|
|
87
|
+
displayText = displayFormat(hoverDate, locale);
|
|
87
88
|
} else if (active && text != null) {
|
|
88
89
|
displayText = text;
|
|
89
90
|
} else if (date) {
|
|
90
|
-
displayText = displayFormat(date);
|
|
91
|
+
displayText = displayFormat(date, locale);
|
|
91
92
|
} else if (name === 'time') {
|
|
92
93
|
displayText = time || '';
|
|
93
94
|
}
|