@jetbrains/ring-ui 4.2.7 → 4.2.10

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.
Files changed (318) hide show
  1. package/components/auth/auth__core.js +5 -0
  2. package/components/auth/token-validator.js +4 -1
  3. package/components/pager/pager.js +14 -14
  4. package/dist/_helpers/_rollupPluginBabelHelpers.js +34 -0
  5. package/dist/_helpers/anchor.js +33 -0
  6. package/dist/_helpers/badge.js +3 -0
  7. package/dist/_helpers/button-group.js +3 -0
  8. package/dist/_helpers/button-set.js +3 -0
  9. package/dist/_helpers/button-toolbar.js +3 -0
  10. package/dist/_helpers/button__classes.js +39 -0
  11. package/dist/_helpers/card.js +75 -0
  12. package/dist/_helpers/checkbox.js +3 -0
  13. package/dist/_helpers/date-picker.js +3 -0
  14. package/dist/_helpers/dialog__body-scroll-preventer.js +58 -0
  15. package/dist/_helpers/error-message.js +3 -0
  16. package/dist/_helpers/footer.js +121 -0
  17. package/dist/_helpers/grid.js +3 -0
  18. package/dist/_helpers/group.js +3 -0
  19. package/dist/_helpers/header.js +3 -0
  20. package/dist/_helpers/icon.js +3 -0
  21. package/dist/_helpers/inject-styles.js +22 -0
  22. package/dist/_helpers/input.js +3 -0
  23. package/dist/_helpers/island.js +3 -0
  24. package/dist/_helpers/link.js +3 -0
  25. package/dist/_helpers/list.js +3 -0
  26. package/dist/_helpers/loader-screen.js +3 -0
  27. package/dist/_helpers/panel.js +3 -0
  28. package/dist/_helpers/query-assist__suggestions.js +95 -0
  29. package/dist/_helpers/radio.js +3 -0
  30. package/dist/_helpers/select__filter.js +77 -0
  31. package/dist/_helpers/services-link.js +40 -0
  32. package/dist/_helpers/sidebar.js +126 -0
  33. package/dist/_helpers/table.js +3 -0
  34. package/dist/_helpers/tabs.js +3 -0
  35. package/dist/_helpers/title.js +100 -0
  36. package/dist/alert/alert.js +262 -0
  37. package/dist/alert/container.js +48 -0
  38. package/dist/alert-service/alert-service.js +173 -0
  39. package/dist/analytics/analytics.js +118 -0
  40. package/dist/analytics/analytics__custom-plugin.js +128 -0
  41. package/dist/analytics/analytics__fus-plugin.js +102 -0
  42. package/dist/analytics/analytics__ga-plugin.js +75 -0
  43. package/dist/analytics/analytics__plugin-utils.js +80 -0
  44. package/dist/analytics-ng/analytics-ng.js +95 -0
  45. package/dist/auth/auth.js +96 -0
  46. package/dist/auth/auth__core.js +1065 -0
  47. package/dist/auth/background-flow.js +123 -0
  48. package/dist/auth/down-notification.js +117 -0
  49. package/dist/auth/iframe-flow.js +153 -0
  50. package/dist/auth/landing-entry.js +5 -0
  51. package/dist/auth/landing.js +90 -0
  52. package/dist/auth/request-builder.js +76 -0
  53. package/dist/auth/response-parser.js +118 -0
  54. package/dist/auth/storage.js +283 -0
  55. package/dist/auth/token-validator.js +180 -0
  56. package/dist/auth/window-flow.js +134 -0
  57. package/dist/auth-dialog/auth-dialog.js +180 -0
  58. package/dist/auth-dialog-service/auth-dialog-service.js +71 -0
  59. package/dist/auth-ng/auth-ng.js +206 -0
  60. package/dist/auth-ng/auth-ng.mock.js +33 -0
  61. package/dist/autofocus-ng/autofocus-ng.js +51 -0
  62. package/dist/avatar/avatar-example-datauri.js +4 -0
  63. package/dist/avatar/avatar.js +163 -0
  64. package/dist/avatar/fallback-avatar.js +142 -0
  65. package/dist/avatar-editor-ng/avatar-editor-ng.js +167 -0
  66. package/dist/avatar-editor-ng/avatar-editor-ng__template.js +3 -0
  67. package/dist/avatar-ng/avatar-ng.js +21 -0
  68. package/dist/badge/badge.js +51 -0
  69. package/dist/badge-ng/badge-ng.js +18 -0
  70. package/dist/breadcrumb-ng/breadcrumb-ng.js +37 -0
  71. package/dist/button/button.js +125 -0
  72. package/dist/button/button__classes.js +5 -0
  73. package/dist/button-group/button-group.js +30 -0
  74. package/dist/button-group/caption.js +24 -0
  75. package/dist/button-group-ng/button-group-ng.js +39 -0
  76. package/dist/button-ng/button-ng.js +217 -0
  77. package/dist/button-set/button-set.js +26 -0
  78. package/dist/button-set-ng/button-set-ng.js +19 -0
  79. package/dist/button-toolbar/button-toolbar.js +29 -0
  80. package/dist/button-toolbar-ng/button-toolbar-ng.js +24 -0
  81. package/dist/caret/caret.js +266 -0
  82. package/dist/checkbox/checkbox.js +110 -0
  83. package/dist/checkbox-ng/checkbox-ng.js +38 -0
  84. package/dist/code/code.js +137 -0
  85. package/dist/compiler-ng/compiler-ng.js +53 -0
  86. package/dist/confirm/confirm.js +127 -0
  87. package/dist/confirm-ng/confirm-ng.js +69 -0
  88. package/dist/confirm-service/confirm-service.js +117 -0
  89. package/dist/content-layout/content-layout.js +66 -0
  90. package/dist/content-layout/sidebar.js +7 -0
  91. package/dist/contenteditable/contenteditable.js +78 -0
  92. package/dist/data-list/data-list.js +208 -0
  93. package/dist/data-list/data-list.mock.js +191 -0
  94. package/dist/data-list/item.js +229 -0
  95. package/dist/data-list/selection.js +102 -0
  96. package/dist/data-list/title.js +20 -0
  97. package/dist/data-list-ng/data-list-ng.js +62 -0
  98. package/dist/date-picker/consts.js +69 -0
  99. package/dist/date-picker/date-input.js +175 -0
  100. package/dist/date-picker/date-picker.js +367 -0
  101. package/dist/date-picker/date-popup.js +483 -0
  102. package/dist/date-picker/day.js +120 -0
  103. package/dist/date-picker/formats.js +3 -0
  104. package/dist/date-picker/month-names.js +100 -0
  105. package/dist/date-picker/month-slider.js +84 -0
  106. package/dist/date-picker/month.js +55 -0
  107. package/dist/date-picker/months.js +122 -0
  108. package/dist/date-picker/weekdays.js +32 -0
  109. package/dist/date-picker/years.js +110 -0
  110. package/dist/dialog/dialog.js +205 -0
  111. package/dist/dialog/dialog__body-scroll-preventer.js +3 -0
  112. package/dist/dialog-ng/dialog-ng.js +604 -0
  113. package/dist/dialog-ng/dialog-ng__template.js +3 -0
  114. package/dist/docked-panel-ng/docked-panel-ng.js +171 -0
  115. package/dist/dropdown/anchor.js +19 -0
  116. package/dist/dropdown/dropdown.js +236 -0
  117. package/dist/dropdown-menu/dropdown-menu.js +177 -0
  118. package/dist/error-bubble/error-bubble.js +59 -0
  119. package/dist/error-message/error-message.js +57 -0
  120. package/dist/error-message-ng/error-message-ng.js +35 -0
  121. package/dist/footer/footer.js +12 -0
  122. package/dist/footer-ng/footer-ng.js +64 -0
  123. package/dist/form-ng/form-ng.js +167 -0
  124. package/dist/global/angular-component-factory.js +84 -0
  125. package/dist/global/compose.js +9 -0
  126. package/dist/global/composeRefs.js +15 -0
  127. package/dist/global/conic-gradient.js +35 -0
  128. package/dist/global/create-stateful-context.js +55 -0
  129. package/dist/global/data-tests.js +24 -0
  130. package/dist/global/dom.js +125 -0
  131. package/dist/global/focus-sensor-hoc.js +146 -0
  132. package/dist/global/fuzzy-highlight.js +67 -0
  133. package/dist/global/get-event-key.js +111 -0
  134. package/dist/global/get-uid.js +15 -0
  135. package/dist/global/inject-styles.js +15 -0
  136. package/dist/global/linear-function.js +17 -0
  137. package/dist/global/listeners.js +44 -0
  138. package/dist/global/memoize.js +20 -0
  139. package/dist/global/normalize-indent.js +30 -0
  140. package/dist/global/promise-with-timeout.js +17 -0
  141. package/dist/global/radial-gradient-mask.js +38 -0
  142. package/dist/global/react-dom-renderer.js +46 -0
  143. package/dist/global/react-render-adapter.js +41 -0
  144. package/dist/global/rerender-hoc.js +55 -0
  145. package/dist/global/ring-angular-component.js +24 -0
  146. package/dist/global/schedule-raf.js +31 -0
  147. package/dist/global/sniffer.js +6 -0
  148. package/dist/global/supports-css.js +22 -0
  149. package/dist/global/theme.js +54 -0
  150. package/dist/global/trivial-template-tag.js +17 -0
  151. package/dist/global/url.js +165 -0
  152. package/dist/global/variables_dark.js +57 -0
  153. package/dist/grid/col.js +60 -0
  154. package/dist/grid/grid.js +33 -0
  155. package/dist/grid/row.js +64 -0
  156. package/dist/group/group.js +31 -0
  157. package/dist/group-ng/group-ng.js +11 -0
  158. package/dist/header/header.js +150 -0
  159. package/dist/header/logo.js +40 -0
  160. package/dist/header/profile.js +219 -0
  161. package/dist/header/services-link.js +12 -0
  162. package/dist/header/services.js +138 -0
  163. package/dist/header/smart-profile.js +233 -0
  164. package/dist/header/smart-services.js +163 -0
  165. package/dist/header/tray-icon.js +47 -0
  166. package/dist/header/tray.js +31 -0
  167. package/dist/heading/heading.js +73 -0
  168. package/dist/http/http.js +218 -0
  169. package/dist/http/http.mock.js +67 -0
  170. package/dist/hub-source/hub-source.js +130 -0
  171. package/dist/hub-source/hub-source__user.js +30 -0
  172. package/dist/hub-source/hub-source__users-groups.js +63 -0
  173. package/dist/icon/icon.js +105 -0
  174. package/dist/icon/icon__constants.js +33 -0
  175. package/dist/icon/icon__svg.js +83 -0
  176. package/dist/icon/index.js +12 -0
  177. package/dist/icon-ng/icon-ng.js +91 -0
  178. package/dist/input/input.js +230 -0
  179. package/dist/input-ng/input-ng.js +111 -0
  180. package/dist/island/adaptive-island-hoc.js +48 -0
  181. package/dist/island/content.js +160 -0
  182. package/dist/island/header.js +84 -0
  183. package/dist/island/island.js +51 -0
  184. package/dist/island-legacy/content-legacy.js +26 -0
  185. package/dist/island-legacy/header-legacy.js +28 -0
  186. package/dist/island-legacy/island-legacy.js +28 -0
  187. package/dist/island-ng/island-content-ng.js +42 -0
  188. package/dist/island-ng/island-header-ng.js +26 -0
  189. package/dist/island-ng/island-ng-class-fixer.js +11 -0
  190. package/dist/island-ng/island-ng.js +25 -0
  191. package/dist/link/clickableLink.js +64 -0
  192. package/dist/link/link.js +115 -0
  193. package/dist/link-ng/link-ng.js +22 -0
  194. package/dist/list/consts.js +26 -0
  195. package/dist/list/list.js +822 -0
  196. package/dist/list/list__custom.js +86 -0
  197. package/dist/list/list__hint.js +26 -0
  198. package/dist/list/list__item.js +206 -0
  199. package/dist/list/list__link.js +65 -0
  200. package/dist/list/list__separator.js +30 -0
  201. package/dist/list/list__title.js +39 -0
  202. package/dist/list/list__users-groups-source.js +130 -0
  203. package/dist/loader/loader.js +71 -0
  204. package/dist/loader/loader__core.js +273 -0
  205. package/dist/loader-inline/inject-styles.js +13 -0
  206. package/dist/loader-inline/loader-inline.js +58 -0
  207. package/dist/loader-inline-ng/loader-inline-ng.js +44 -0
  208. package/dist/loader-ng/loader-ng.js +44 -0
  209. package/dist/loader-screen/loader-screen.js +44 -0
  210. package/dist/loader-screen-ng/loader-screen-ng.js +95 -0
  211. package/dist/login-dialog/login-dialog.js +188 -0
  212. package/dist/login-dialog/service.js +72 -0
  213. package/dist/markdown/code.js +31 -0
  214. package/dist/markdown/heading.js +23 -0
  215. package/dist/markdown/link.js +31 -0
  216. package/dist/markdown/markdown.js +74 -0
  217. package/dist/message/message.js +235 -0
  218. package/dist/message-bundle-ng/message-bundle-ng.js +111 -0
  219. package/dist/old-browsers-message/old-browsers-message.js +101 -0
  220. package/dist/old-browsers-message/old-browsers-message__stop.js +5 -0
  221. package/dist/old-browsers-message/white-list.js +34 -0
  222. package/dist/pager/pager.js +365 -0
  223. package/dist/pager-ng/pager-ng.js +100 -0
  224. package/dist/panel/panel.js +31 -0
  225. package/dist/panel-ng/panel-ng.js +17 -0
  226. package/dist/permissions/permissions.js +200 -0
  227. package/dist/permissions/permissions__cache.js +272 -0
  228. package/dist/permissions-ng/permissions-ng.js +277 -0
  229. package/dist/place-under-ng/place-under-ng.js +158 -0
  230. package/dist/popup/popup.consts.js +41 -0
  231. package/dist/popup/popup.js +396 -0
  232. package/dist/popup/popup.target.js +26 -0
  233. package/dist/popup/position.js +280 -0
  234. package/dist/popup-menu/popup-menu.js +117 -0
  235. package/dist/progress-bar/progress-bar.js +114 -0
  236. package/dist/progress-bar-ng/progress-bar-ng.js +17 -0
  237. package/dist/promised-click-ng/promised-click-ng.js +128 -0
  238. package/dist/proxy-attrs/proxy-attrs.js +21 -0
  239. package/dist/query-assist/query-assist.js +1096 -0
  240. package/dist/query-assist/query-assist__suggestions.js +49 -0
  241. package/dist/query-assist-ng/query-assist-ng.js +86 -0
  242. package/dist/radio/radio.js +42 -0
  243. package/dist/radio/radio__item.js +78 -0
  244. package/dist/radio-ng/radio-ng.js +47 -0
  245. package/dist/save-field-ng/save-field-ng.js +337 -0
  246. package/dist/save-field-ng/save-field-ng__template.js +3 -0
  247. package/dist/select/select.js +1357 -0
  248. package/dist/select/select__filter.js +56 -0
  249. package/dist/select/select__popup.js +553 -0
  250. package/dist/select-ng/select-ng.js +637 -0
  251. package/dist/select-ng/select-ng__lazy.js +169 -0
  252. package/dist/select-ng/select-ng__options.js +145 -0
  253. package/dist/shortcuts/core.js +245 -0
  254. package/dist/shortcuts/shortcut-title.js +51 -0
  255. package/dist/shortcuts/shortcuts-hoc.js +42 -0
  256. package/dist/shortcuts/shortcuts.js +72 -0
  257. package/dist/shortcuts-hint-ng/shortcuts-hint-ng.js +123 -0
  258. package/dist/shortcuts-hint-ng/shortcuts-hint-ng__template.js +3 -0
  259. package/dist/shortcuts-ng/shortcuts-ng.js +262 -0
  260. package/dist/sidebar-ng/sidebar-ng.js +113 -0
  261. package/dist/sidebar-ng/sidebar-ng__button-template.js +3 -0
  262. package/dist/sidebar-ng/sidebar-ng__template.js +3 -0
  263. package/dist/storage/storage.js +59 -0
  264. package/dist/storage/storage__fallback.js +215 -0
  265. package/dist/storage/storage__local.js +154 -0
  266. package/dist/style.css +1 -0
  267. package/dist/tab-trap/tab-trap.js +177 -0
  268. package/dist/table/cell.js +26 -0
  269. package/dist/table/disable-hover-hoc.js +54 -0
  270. package/dist/table/header-cell.js +92 -0
  271. package/dist/table/header.js +193 -0
  272. package/dist/table/multitable.js +141 -0
  273. package/dist/table/row-with-focus-sensor.js +83 -0
  274. package/dist/table/row.js +278 -0
  275. package/dist/table/selection-adapter.js +16 -0
  276. package/dist/table/selection-shortcuts-hoc.js +215 -0
  277. package/dist/table/selection.js +223 -0
  278. package/dist/table/smart-table.js +125 -0
  279. package/dist/table/table.js +409 -0
  280. package/dist/table-legacy-ng/table-legacy-ng.js +468 -0
  281. package/dist/table-legacy-ng/table-legacy-ng__pager.js +120 -0
  282. package/dist/table-legacy-ng/table-legacy-ng__selection-navigate-actions.js +123 -0
  283. package/dist/table-legacy-ng/table-legacy-ng__selection.js +179 -0
  284. package/dist/table-legacy-ng/table-legacy-ng__toolbar.js +57 -0
  285. package/dist/table-ng/smart-table-ng.js +68 -0
  286. package/dist/table-ng/table-ng.js +67 -0
  287. package/dist/tabs/collapsible-more.js +198 -0
  288. package/dist/tabs/collapsible-tab.js +91 -0
  289. package/dist/tabs/collapsible-tabs.js +362 -0
  290. package/dist/tabs/custom-item.js +13 -0
  291. package/dist/tabs/dumb-tabs.js +164 -0
  292. package/dist/tabs/smart-tabs.js +106 -0
  293. package/dist/tabs/tab-link.js +42 -0
  294. package/dist/tabs/tab.js +33 -0
  295. package/dist/tabs/tabs.js +71 -0
  296. package/dist/tabs-ng/tabs-ng.js +194 -0
  297. package/dist/tabs-ng/tabs-ng__template.js +3 -0
  298. package/dist/tag/tag.js +197 -0
  299. package/dist/tags-input/tags-input.js +482 -0
  300. package/dist/tags-input-ng/tags-input-ng.js +93 -0
  301. package/dist/tags-list/tags-list.js +95 -0
  302. package/dist/template-ng/template-ng.js +71 -0
  303. package/dist/text/text.js +36 -0
  304. package/dist/theme-ng/theme-ng.js +45 -0
  305. package/dist/title-ng/title-ng.js +114 -0
  306. package/dist/toggle/toggle.js +78 -0
  307. package/dist/toggle-ng/toggle-ng.js +18 -0
  308. package/dist/tooltip/tooltip.js +209 -0
  309. package/dist/tooltip-ng/tooltip-ng.js +104 -0
  310. package/dist/user-agreement/service.js +412 -0
  311. package/dist/user-agreement/toolbox.eula.js +3 -0
  312. package/dist/user-agreement/user-agreement.js +169 -0
  313. package/dist/user-card/card.js +19 -0
  314. package/dist/user-card/smart-user-card-tooltip.js +114 -0
  315. package/dist/user-card/tooltip.js +95 -0
  316. package/dist/user-card/user-card.js +51 -0
  317. package/dist/user-card-ng/user-card-ng.js +62 -0
  318. package/package.json +2 -2
@@ -0,0 +1,100 @@
1
+ import { a as _extends, _ as _defineProperty } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+ import 'core-js/modules/web.dom-collections.iterator.js';
3
+ import React, { PureComponent } from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import classNames from 'classnames';
6
+ import endOfMonth from 'date-fns/endOfMonth';
7
+ import format from 'date-fns/format';
8
+ import isThisMonth from 'date-fns/isThisMonth';
9
+ import set from 'date-fns/set';
10
+ import startOfDay from 'date-fns/startOfDay';
11
+ import startOfYear from 'date-fns/startOfYear';
12
+ import linearFunction from '../global/linear-function.js';
13
+ import MonthSlider from './month-slider.js';
14
+ import { dateType, YEAR, MIDDLE_DAY, yearScrollSpeed, HALF } from './consts.js';
15
+ import { m as modules_0c7b7d96 } from '../_helpers/date-picker.js';
16
+ import 'date-fns/addYears';
17
+ import 'date-fns/subYears';
18
+ import 'date-fns/add';
19
+
20
+ class MonthName extends PureComponent {
21
+ constructor() {
22
+ super(...arguments);
23
+
24
+ _defineProperty(this, "handleClick", () => {
25
+ const end = endOfMonth(this.props.month);
26
+ this.props.onScrollChange((+this.props.month + +end) * HALF);
27
+ });
28
+ }
29
+
30
+ render() {
31
+ const {
32
+ month,
33
+ locale
34
+ } = this.props;
35
+ return /*#__PURE__*/React.createElement("button", {
36
+ type: "button",
37
+ className: classNames(modules_0c7b7d96.monthName, {
38
+ [modules_0c7b7d96.today]: isThisMonth(month)
39
+ }),
40
+ onClick: this.handleClick
41
+ }, format(month, 'LLL', {
42
+ locale
43
+ }));
44
+ }
45
+
46
+ }
47
+
48
+ MonthName.propTypes = {
49
+ month: dateType,
50
+ onScrollChange: PropTypes.func,
51
+ locale: PropTypes.string
52
+ };
53
+ function MonthNames(props) {
54
+ const {
55
+ scrollDate,
56
+ locale
57
+ } = props;
58
+ const months = [];
59
+
60
+ for (let i = 0; i < YEAR; i++) {
61
+ const middleDay = set(scrollDate, {
62
+ month: i,
63
+ date: MIDDLE_DAY
64
+ });
65
+ months.push(startOfDay(middleDay));
66
+ }
67
+
68
+ const pxToDate = linearFunction(0, startOfYear(scrollDate), yearScrollSpeed);
69
+ let top = 0;
70
+ let bottom = 0;
71
+
72
+ if (props.currentRange) {
73
+ [top, bottom] = props.currentRange.map(date => Math.floor(pxToDate.x(date)));
74
+ }
75
+
76
+ return /*#__PURE__*/React.createElement("div", {
77
+ className: modules_0c7b7d96.monthNames
78
+ }, months.map(month => /*#__PURE__*/React.createElement(MonthName, {
79
+ key: +month,
80
+ month: month,
81
+ onScrollChange: props.onScrollChange,
82
+ locale: locale
83
+ })), props.currentRange && /*#__PURE__*/React.createElement("div", {
84
+ className: modules_0c7b7d96.range,
85
+ style: {
86
+ top: top - 1,
87
+ height: bottom + 1 - (top - 1)
88
+ }
89
+ }), /*#__PURE__*/React.createElement(MonthSlider, _extends({}, props, {
90
+ pxToDate: pxToDate
91
+ })));
92
+ }
93
+ MonthNames.propTypes = {
94
+ scrollDate: dateType,
95
+ onScrollChange: PropTypes.func,
96
+ currentRange: PropTypes.arrayOf(dateType),
97
+ locale: PropTypes.string
98
+ };
99
+
100
+ export { MonthNames as default };
@@ -0,0 +1,84 @@
1
+ import { _ as _defineProperty } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+ import 'core-js/modules/web.dom-collections.iterator.js';
3
+ import React, { PureComponent } from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import classNames from 'classnames';
6
+ import addYears from 'date-fns/addYears';
7
+ import startOfDay from 'date-fns/startOfDay';
8
+ import subYears from 'date-fns/subYears';
9
+ import linearFunction from '../global/linear-function.js';
10
+ import units, { dateType, yearScrollSpeed } from './consts.js';
11
+ import { m as modules_0c7b7d96 } from '../_helpers/date-picker.js';
12
+ import 'date-fns/add';
13
+
14
+ const COVERYEARS = 3;
15
+ class MonthSlider extends PureComponent {
16
+ constructor() {
17
+ super(...arguments);
18
+
19
+ _defineProperty(this, "state", {
20
+ dragging: false
21
+ });
22
+
23
+ _defineProperty(this, "onMouseDown", () => {
24
+ this.setState({
25
+ dragging: true
26
+ });
27
+ });
28
+
29
+ _defineProperty(this, "onMouseUp", () => {
30
+ this.setState({
31
+ dragging: false
32
+ });
33
+ });
34
+
35
+ _defineProperty(this, "onMouseMove", e => {
36
+ this.props.onScroll(linearFunction(0, this.props.scrollDate, yearScrollSpeed).y(e.movementY));
37
+ });
38
+ }
39
+
40
+ componentDidUpdate(prevProps, prevState) {
41
+ if (this.state.dragging && !prevState.dragging) {
42
+ window.addEventListener('mousemove', this.onMouseMove);
43
+ window.addEventListener('mouseup', this.onMouseUp);
44
+ } else if (!this.state.dragging && prevState.dragging) {
45
+ window.removeEventListener('mousemove', this.onMouseMove);
46
+ window.removeEventListener('mouseup', this.onMouseUp);
47
+ }
48
+ }
49
+
50
+ render() {
51
+ let year = subYears(startOfDay(this.props.scrollDate), 1);
52
+ const years = [year];
53
+
54
+ for (let i = 0; i <= COVERYEARS; i++) {
55
+ year = addYears(year, 1);
56
+ years.push(year);
57
+ }
58
+
59
+ const classes = classNames(modules_0c7b7d96.monthSlider, {
60
+ [modules_0c7b7d96.dragging]: this.state.dragging
61
+ });
62
+ return /*#__PURE__*/React.createElement("div", null, years.map(date => /*#__PURE__*/React.createElement("button", {
63
+ type: "button",
64
+ key: +date,
65
+ className: classes,
66
+ style: {
67
+ top: Math.floor(this.props.pxToDate.x(date) - units.cellSize)
68
+ },
69
+ onMouseDown: this.onMouseDown
70
+ })));
71
+ }
72
+
73
+ }
74
+
75
+ _defineProperty(MonthSlider, "propTypes", {
76
+ scrollDate: dateType,
77
+ onScroll: PropTypes.func,
78
+ pxToDate: PropTypes.shape({
79
+ x: PropTypes.func,
80
+ y: PropTypes.func
81
+ })
82
+ });
83
+
84
+ export { MonthSlider as default };
@@ -0,0 +1,55 @@
1
+ import { a as _extends } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+ import React from 'react';
3
+ import addDays from 'date-fns/addDays';
4
+ import endOfMonth from 'date-fns/endOfMonth';
5
+ import format from 'date-fns/format';
6
+ import getDay from 'date-fns/getDay';
7
+ import setDay from 'date-fns/setDay';
8
+ import PropTypes from 'prop-types';
9
+ import Day from './day.js';
10
+ import { dateType, weekdays, WEEK } from './consts.js';
11
+ import { m as modules_0c7b7d96 } from '../_helpers/date-picker.js';
12
+ import 'core-js/modules/web.dom-collections.iterator.js';
13
+ import 'classnames';
14
+ import 'date-fns/getDate';
15
+ import 'date-fns/isAfter';
16
+ import 'date-fns/isBefore';
17
+ import 'date-fns/isSameDay';
18
+ import 'date-fns/isToday';
19
+ import 'date-fns/startOfDay';
20
+ import 'date-fns/add';
21
+
22
+ function Month(props) {
23
+ const start = props.month;
24
+ const end = endOfMonth(start);
25
+ const {
26
+ locale
27
+ } = props; // pad with empty cells starting from last friday
28
+
29
+ const weekday = getDay(start);
30
+ let day = setDay(start, weekday >= weekdays.FR ? weekdays.FR : weekdays.FR - WEEK);
31
+ const days = [];
32
+
33
+ while (day < end) {
34
+ days.push(day);
35
+ day = addDays(day, 1);
36
+ }
37
+
38
+ return /*#__PURE__*/React.createElement("div", {
39
+ className: modules_0c7b7d96.month
40
+ }, /*#__PURE__*/React.createElement("span", {
41
+ className: modules_0c7b7d96.monthTitle
42
+ }, format(props.month, 'LLLL', {
43
+ locale
44
+ })), days.map(date => /*#__PURE__*/React.createElement(Day, _extends({}, props, {
45
+ day: date,
46
+ empty: date < start,
47
+ key: +date
48
+ }))));
49
+ }
50
+ Month.propTypes = {
51
+ month: dateType,
52
+ locale: PropTypes.string
53
+ };
54
+
55
+ export { Month as default };
@@ -0,0 +1,122 @@
1
+ import { a as _extends } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import addMonths from 'date-fns/addMonths';
5
+ import getDay from 'date-fns/getDay';
6
+ import getDaysInMonth from 'date-fns/getDaysInMonth';
7
+ import set from 'date-fns/set';
8
+ import startOfHour from 'date-fns/startOfHour';
9
+ import startOfMonth from 'date-fns/startOfMonth';
10
+ import subMonths from 'date-fns/subMonths';
11
+ import endOfMonth from 'date-fns/endOfMonth';
12
+ import scheduleRAF from '../global/schedule-raf.js';
13
+ import linearFunction from '../global/linear-function.js';
14
+ import Month from './month.js';
15
+ import MonthNames from './month-names.js';
16
+ import { m as modules_0c7b7d96 } from '../_helpers/date-picker.js';
17
+ import units, { dateType, DOUBLE, HALF, WEEK, weekdays } from './consts.js';
18
+ import 'date-fns/addDays';
19
+ import 'date-fns/format';
20
+ import 'date-fns/setDay';
21
+ import './day.js';
22
+ import 'core-js/modules/web.dom-collections.iterator.js';
23
+ import 'classnames';
24
+ import 'date-fns/getDate';
25
+ import 'date-fns/isAfter';
26
+ import 'date-fns/isBefore';
27
+ import 'date-fns/isSameDay';
28
+ import 'date-fns/isToday';
29
+ import 'date-fns/startOfDay';
30
+ import 'date-fns/isThisMonth';
31
+ import 'date-fns/startOfYear';
32
+ import './month-slider.js';
33
+ import 'date-fns/addYears';
34
+ import 'date-fns/subYears';
35
+ import 'date-fns/add';
36
+
37
+ const {
38
+ unit,
39
+ cellSize,
40
+ calHeight
41
+ } = units;
42
+ const FridayToSunday = WEEK + weekdays.SU - weekdays.FR;
43
+ const FIVELINES = 31;
44
+ const TALLMONTH = 6;
45
+ const SHORTMONTH = 5;
46
+ const PADDING = 2;
47
+ const MONTHSBACK = 2;
48
+
49
+ function monthHeight(date) {
50
+ const monthStart = startOfMonth(date);
51
+ const daysSinceLastFriday = (getDay(monthStart) + FridayToSunday) % WEEK;
52
+ const monthLines = daysSinceLastFriday + getDaysInMonth(monthStart) > FIVELINES ? TALLMONTH : SHORTMONTH;
53
+ return monthLines * cellSize + unit * PADDING;
54
+ } // in milliseconds per pixel
55
+
56
+
57
+ function scrollSpeed(date) {
58
+ const monthStart = startOfMonth(date);
59
+ const monthEnd = endOfMonth(date);
60
+ return (monthEnd - monthStart) / monthHeight(monthStart);
61
+ }
62
+
63
+ const scrollSchedule = scheduleRAF();
64
+ let dy = 0;
65
+ function Months(props) {
66
+ const {
67
+ scrollDate
68
+ } = props; // prevent switching from april to march because of daylight saving time
69
+
70
+ const monthStart = startOfHour(set(scrollDate, {
71
+ date: 1,
72
+ hours: 1
73
+ }));
74
+ let month = subMonths(monthStart, MONTHSBACK);
75
+ const months = [month];
76
+
77
+ for (let i = 0; i < MONTHSBACK * DOUBLE; i++) {
78
+ month = addMonths(month, 1);
79
+ months.push(month);
80
+ }
81
+
82
+ const currentSpeed = scrollSpeed(scrollDate);
83
+ const pxToDate = linearFunction(0, scrollDate, currentSpeed);
84
+ const offset = pxToDate.x(monthStart); // is a negative number
85
+
86
+ const bottomOffset = monthHeight(scrollDate) + offset;
87
+ return /*#__PURE__*/React.createElement("div", {
88
+ className: modules_0c7b7d96.months,
89
+ onWheel: function handleWheel(e) {
90
+ e.preventDefault();
91
+ dy += e.deltaY;
92
+ scrollSchedule(() => {
93
+ let date; // adjust scroll speed to prevent glitches
94
+
95
+ if (dy < offset) {
96
+ date = pxToDate.y(offset) + (dy - offset) * scrollSpeed(months[1]);
97
+ } else if (dy > bottomOffset) {
98
+ date = pxToDate.y(bottomOffset) + (dy - bottomOffset) * scrollSpeed(months[MONTHSBACK + 1]);
99
+ } else {
100
+ date = pxToDate.y(dy);
101
+ }
102
+
103
+ props.onScroll(date);
104
+ dy = 0;
105
+ });
106
+ }
107
+ }, /*#__PURE__*/React.createElement("div", {
108
+ style: {
109
+ top: Math.floor(calHeight * HALF - monthHeight(months[0]) - monthHeight(months[1]) + offset)
110
+ },
111
+ className: modules_0c7b7d96.days
112
+ }, months.map(date => /*#__PURE__*/React.createElement(Month, _extends({}, props, {
113
+ month: date,
114
+ key: +date
115
+ })))), /*#__PURE__*/React.createElement(MonthNames, props));
116
+ }
117
+ Months.propTypes = {
118
+ onScroll: PropTypes.func,
119
+ scrollDate: dateType
120
+ };
121
+
122
+ export { Months as default };
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import classNames from 'classnames';
3
+ import getDay from 'date-fns/getDay';
4
+ import format from 'date-fns/format';
5
+ import setDay from 'date-fns/setDay';
6
+ import startOfDay from 'date-fns/startOfDay';
7
+ import PropTypes from 'prop-types';
8
+ import { weekdays } from './consts.js';
9
+ import { m as modules_0c7b7d96 } from '../_helpers/date-picker.js';
10
+ import 'date-fns/add';
11
+
12
+ function Weekdays(props) {
13
+ const days = Object.keys(weekdays).map(key => startOfDay(setDay(new Date(), weekdays[key])));
14
+ const {
15
+ locale
16
+ } = props;
17
+ return /*#__PURE__*/React.createElement("div", {
18
+ className: modules_0c7b7d96.weekdays
19
+ }, days.map(day => /*#__PURE__*/React.createElement("span", {
20
+ className: classNames(modules_0c7b7d96.weekday, {
21
+ [modules_0c7b7d96.weekend]: [weekdays.SA, weekdays.SU].includes(getDay(day))
22
+ }),
23
+ key: +day
24
+ }, format(day, 'EEEEEE', {
25
+ locale
26
+ }))));
27
+ }
28
+ Weekdays.propTypes = {
29
+ locale: PropTypes.string
30
+ };
31
+
32
+ export { Weekdays as default };
@@ -0,0 +1,110 @@
1
+ import { _ as _defineProperty } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+ import 'core-js/modules/web.dom-collections.iterator.js';
3
+ import React, { PureComponent } from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import classNames from 'classnames';
6
+ import addYears from 'date-fns/addYears';
7
+ import getYear from 'date-fns/getYear';
8
+ import format from 'date-fns/format';
9
+ import isSameYear from 'date-fns/isSameYear';
10
+ import isThisYear from 'date-fns/isThisYear';
11
+ import setYear from 'date-fns/setYear';
12
+ import startOfYear from 'date-fns/startOfYear';
13
+ import subYears from 'date-fns/subYears';
14
+ import linearFunction from '../global/linear-function.js';
15
+ import { m as modules_0c7b7d96 } from '../_helpers/date-picker.js';
16
+ import units, { dateType, DOUBLE, HALF, yearDuration } from './consts.js';
17
+ import 'date-fns/add';
18
+
19
+ const {
20
+ yearHeight,
21
+ calHeight
22
+ } = units;
23
+ let scrollTO;
24
+ const YEARSBACK = 5;
25
+ const scrollDelay = 100;
26
+ class Years extends PureComponent {
27
+ constructor() {
28
+ super(...arguments);
29
+
30
+ _defineProperty(this, "state", {
31
+ scrollDate: null
32
+ });
33
+ }
34
+
35
+ componentDidUpdate(prevProps, prevState) {
36
+ this.stoppedScrolling = prevState.scrollDate && !this.state.scrollDate;
37
+ }
38
+
39
+ setYear(date) {
40
+ if (scrollTO) {
41
+ window.clearTimeout(scrollTO);
42
+ scrollTO = null;
43
+ }
44
+
45
+ this.setState({
46
+ scrollDate: null
47
+ });
48
+ this.props.onScroll(setYear(this.props.scrollDate, getYear(date)));
49
+ }
50
+
51
+ render() {
52
+ const {
53
+ onScrollChange,
54
+ scrollDate
55
+ } = this.props;
56
+ const date = this.state.scrollDate || scrollDate;
57
+ const yearStart = startOfYear(date);
58
+ let year = subYears(yearStart, YEARSBACK);
59
+ const years = [year];
60
+
61
+ for (let i = 0; i < YEARSBACK * DOUBLE; i++) {
62
+ year = addYears(year, 1);
63
+ years.push(year);
64
+ }
65
+
66
+ const pxToDate = linearFunction(0, years[0], yearDuration / yearHeight);
67
+
68
+ const handleWheel = e => {
69
+ e.preventDefault();
70
+ const newScrollDate = linearFunction(0, date, yearDuration / yearHeight).y(e.deltaY);
71
+ this.setState({
72
+ scrollDate: newScrollDate
73
+ });
74
+
75
+ if (scrollTO) {
76
+ window.clearTimeout(scrollTO);
77
+ }
78
+
79
+ scrollTO = window.setTimeout(() => this.setYear(newScrollDate), scrollDelay);
80
+ };
81
+
82
+ return /*#__PURE__*/React.createElement("div", {
83
+ className: modules_0c7b7d96.years,
84
+ onWheel: handleWheel,
85
+ style: {
86
+ transition: this.stoppedScrolling ? 'top .2s ease-out 0s' : 'none',
87
+ top: Math.floor(calHeight * HALF - pxToDate.x(date))
88
+ }
89
+ }, years.map(item => /*#__PURE__*/React.createElement("button", {
90
+ type: "button",
91
+ key: +item,
92
+ className: classNames(modules_0c7b7d96.year, {
93
+ [modules_0c7b7d96.currentYear]: isSameYear(item, date),
94
+ [modules_0c7b7d96.today]: isThisYear(item)
95
+ }),
96
+ onClick: function handleClick() {
97
+ onScrollChange(setYear(scrollDate, getYear(item)));
98
+ }
99
+ }, format(item, 'yyyy'))));
100
+ }
101
+
102
+ }
103
+
104
+ _defineProperty(Years, "propTypes", {
105
+ scrollDate: dateType,
106
+ onScroll: PropTypes.func,
107
+ onScrollChange: PropTypes.func
108
+ });
109
+
110
+ export { Years as default };