@jetbrains/ring-ui 4.0.52 → 4.0.56

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.
@@ -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
  }
@@ -198,6 +198,8 @@
198
198
 
199
199
  text-align: left;
200
200
 
201
+ text-transform: capitalize;
202
+
201
203
  font-weight: bold;
202
204
 
203
205
  @supports (flex-basis: 1px) {
@@ -449,6 +451,8 @@
449
451
  height: cellSize;
450
452
  padding-left: calc(unit * 1.5);
451
453
 
454
+ text-transform: capitalize;
455
+
452
456
  line-height: cellSize;
453
457
  }
454
458
 
@@ -90,7 +90,8 @@ export default class DatePicker extends PureComponent {
90
90
  disabled: PropTypes.bool,
91
91
  minDate: dateType,
92
92
  maxDate: dateType,
93
- translations: PropTypes.object
93
+ translations: PropTypes.object,
94
+ locale: PropTypes.object
94
95
  };
95
96
 
96
97
  static defaultProps = {
@@ -101,10 +102,10 @@ export default class DatePicker extends PureComponent {
101
102
  from: null,
102
103
  to: null,
103
104
  clear: false,
104
- displayFormat: date => (date ? formatDate(date, 'd MMM yyyy') : ''),
105
- displayMonthFormat: date => (date ? formatDate(date, 'd MMM') : ''),
106
- displayDayFormat: date => (date ? formatDate(date, 'd') : ''),
107
- displayTimeFormat: date => (date ? formatDate(date, 'HH:mm') : ''),
105
+ displayFormat: (date, locale) => (date ? formatDate(date, 'd MMM yyyy', {locale}) : ''),
106
+ displayMonthFormat: (date, locale) => (date ? formatDate(date, 'd MMM', {locale}) : ''),
107
+ displayDayFormat: (date, locale) => (date ? formatDate(date, 'd', {locale}) : ''),
108
+ displayTimeFormat: (date, locale) => (date ? formatDate(date, 'HH:mm', {locale}) : ''),
108
109
  datePlaceholder: 'Set a date',
109
110
  dateTimePlaceholder: 'Set date and time',
110
111
  rangePlaceholder: 'Set a period',
@@ -194,7 +195,8 @@ export default class DatePicker extends PureComponent {
194
195
  displayFormat,
195
196
  displayMonthFormat,
196
197
  displayDayFormat,
197
- translations
198
+ translations,
199
+ locale
198
200
  } = this.props;
199
201
 
200
202
  const date = this.parse(this.props.date);
@@ -204,27 +206,27 @@ export default class DatePicker extends PureComponent {
204
206
 
205
207
  let text;
206
208
  if (!range && !withTime) {
207
- text = date ? displayFormat(date) : datePlaceholder || translations.setDate;
209
+ text = date ? displayFormat(date, locale) : datePlaceholder || translations.setDate;
208
210
  } else if (!range && withTime) {
209
211
  if (!date && !time) {
210
212
  text = dateTimePlaceholder || translations.setDateTime;
211
213
  } else {
212
- text = `${date && displayFormat(date) || '—'}, ${time || '—'}`;
214
+ text = `${date && displayFormat(date, locale) || '—'}, ${time || '—'}`;
213
215
  }
214
216
  } else if (!from && !to) {
215
217
  text = rangePlaceholder || translations.setPeriod;
216
218
  } else if (!to) {
217
- text = `${displayFormat(from)} —`;
219
+ text = `${displayFormat(from, locale)} —`;
218
220
  } else if (!from) {
219
- text = `— ${displayFormat(to)}`;
221
+ text = `— ${displayFormat(to, locale)}`;
220
222
  } else if (!isSameYear(from, to)) {
221
- text = `${displayFormat(from)} — ${displayFormat(to)}`;
223
+ text = `${displayFormat(from, locale)} — ${displayFormat(to, locale)}`;
222
224
  } else if (!isSameMonth(from, to)) {
223
- text = `${displayMonthFormat(from)} — ${displayFormat(to)}`;
225
+ text = `${displayMonthFormat(from, locale)} — ${displayFormat(to, locale)}`;
224
226
  } else if (!isSameDay(from, to)) {
225
- text = `${displayDayFormat(from)} — ${displayFormat(to)}`;
227
+ text = `${displayDayFormat(from, locale)} — ${displayFormat(to, locale)}`;
226
228
  } else {
227
- text = `${displayFormat(to)}`;
229
+ text = `${displayFormat(to, locale)}`;
228
230
  }
229
231
 
230
232
  return text;
@@ -47,7 +47,8 @@ export default class DatePopup extends Component {
47
47
  hidden: PropTypes.bool,
48
48
  fromPlaceholder: PropTypes.string,
49
49
  toPlaceholder: PropTypes.string,
50
- timePlaceholder: PropTypes.string
50
+ timePlaceholder: PropTypes.string,
51
+ locale: PropTypes.object
51
52
  };
52
53
 
53
54
  static defaultProps = {
@@ -77,7 +78,7 @@ export default class DatePopup extends Component {
77
78
 
78
79
  componentDidMount() {
79
80
  if (this.componentRef.current) {
80
- this.componentRef.current.addEventListener('wheel', this.handleWheel);
81
+ this.componentRef.current.addEventListener('wheel', this.handleWheel, {passive: true});
81
82
  }
82
83
  }
83
84
 
@@ -297,7 +298,7 @@ export default class DatePopup extends Component {
297
298
  };
298
299
 
299
300
  render() {
300
- const {range, hidden, withTime, time} = this.props;
301
+ const {range, hidden, withTime, time, locale} = this.props;
301
302
  const parsedDate = this.parse(this.props.date, 'date');
302
303
  const parsedTo = this.parse(this.props.to, 'to');
303
304
 
@@ -391,6 +392,7 @@ export default class DatePopup extends Component {
391
392
  onInput={this.handleInput}
392
393
  onConfirm={this.handleConfirm(name)}
393
394
  onClear={onClear}
395
+ locale={locale}
394
396
  />
395
397
  );
396
398
  })}
@@ -413,12 +415,13 @@ export default class DatePopup extends Component {
413
415
  onInput={this.handleInput}
414
416
  onConfirm={this.handleConfirm('time')}
415
417
  onClear={clearable && this.onClear || undefined}
418
+ locale={locale}
416
419
  />
417
420
  )
418
421
  : ('')
419
422
  }
420
423
  </div>
421
- <Weekdays/>
424
+ <Weekdays locale={locale}/>
422
425
  <div
423
426
  className={styles.calendar}
424
427
  >
@@ -426,6 +429,7 @@ export default class DatePopup extends Component {
426
429
  {...calendarProps}
427
430
  onHover={this.hoverHandler}
428
431
  onSelect={this.selectHandler}
432
+ locale={locale}
429
433
  />
430
434
  <Years {...calendarProps}/>
431
435
  </div>
@@ -21,7 +21,7 @@ class MonthName extends PureComponent {
21
21
  };
22
22
 
23
23
  render() {
24
- const {month} = this.props;
24
+ const {month, locale} = this.props;
25
25
 
26
26
  return (
27
27
  <button
@@ -34,7 +34,7 @@ class MonthName extends PureComponent {
34
34
  )}
35
35
  onClick={this.handleClick}
36
36
  >
37
- {format(month, 'MMM')}
37
+ {format(month, 'LLL', {locale})}
38
38
  </button>
39
39
  );
40
40
  }
@@ -42,11 +42,12 @@ class MonthName extends PureComponent {
42
42
 
43
43
  MonthName.propTypes = {
44
44
  month: dateType,
45
- onScrollChange: PropTypes.func
45
+ onScrollChange: PropTypes.func,
46
+ locale: PropTypes.string
46
47
  };
47
48
 
48
49
  export default function MonthNames(props) {
49
- const {scrollDate} = props;
50
+ const {scrollDate, locale} = props;
50
51
  const months = [];
51
52
  for (let i = 0; i < YEAR; i++) {
52
53
  const middleDay = set(scrollDate, {month: i, date: MIDDLE_DAY});
@@ -73,6 +74,7 @@ export default function MonthNames(props) {
73
74
  key={+month}
74
75
  month={month}
75
76
  onScrollChange={props.onScrollChange}
77
+ locale={locale}
76
78
  />
77
79
  ))}
78
80
  {props.currentRange &&
@@ -97,5 +99,6 @@ export default function MonthNames(props) {
97
99
  MonthNames.propTypes = {
98
100
  scrollDate: dateType,
99
101
  onScrollChange: PropTypes.func,
100
- currentRange: PropTypes.arrayOf(dateType)
102
+ currentRange: PropTypes.arrayOf(dateType),
103
+ locale: PropTypes.string
101
104
  };
@@ -5,6 +5,8 @@ import format from 'date-fns/format';
5
5
  import getDay from 'date-fns/getDay';
6
6
  import setDay from 'date-fns/setDay';
7
7
 
8
+ import PropTypes from 'prop-types';
9
+
8
10
  import Day from './day';
9
11
  import {dateType, WEEK, weekdays} from './consts';
10
12
  import styles from './date-picker.css';
@@ -12,6 +14,7 @@ import styles from './date-picker.css';
12
14
  export default function Month(props) {
13
15
  const start = props.month;
14
16
  const end = endOfMonth(start);
17
+ const {locale} = props;
15
18
 
16
19
  // pad with empty cells starting from last friday
17
20
  const weekday = getDay(start);
@@ -25,7 +28,7 @@ export default function Month(props) {
25
28
  return (
26
29
  <div className={styles.month}>
27
30
  <span className={styles.monthTitle}>
28
- {format(props.month, 'MMMM')}
31
+ {format(props.month, 'LLLL', {locale})}
29
32
  </span>
30
33
  {days.map(date => (
31
34
  <Day
@@ -40,5 +43,6 @@ export default function Month(props) {
40
43
  }
41
44
 
42
45
  Month.propTypes = {
43
- month: dateType
46
+ month: dateType,
47
+ locale: PropTypes.string
44
48
  };
@@ -5,13 +5,17 @@ import format from 'date-fns/format';
5
5
  import setDay from 'date-fns/setDay';
6
6
  import startOfDay from 'date-fns/startOfDay';
7
7
 
8
+ import PropTypes from 'prop-types';
9
+
8
10
  import {weekdays} from './consts';
9
11
  import styles from './date-picker.css';
10
12
 
11
- export default function Weekdays() {
13
+ export default function Weekdays(props) {
12
14
  const days = Object.keys(weekdays).
13
15
  map(key => startOfDay(setDay(new Date(), weekdays[key])));
14
16
 
17
+ const {locale} = props;
18
+
15
19
  return (
16
20
  <div className={styles.weekdays}>
17
21
  {days.map(day => (
@@ -24,9 +28,13 @@ export default function Weekdays() {
24
28
  )}
25
29
  key={+day}
26
30
  >
27
- {format(day, 'EEEEEE')}
31
+ {format(day, 'EEEEEE', {locale})}
28
32
  </span>
29
33
  ))}
30
34
  </div>
31
35
  );
32
36
  }
37
+
38
+ Weekdays.propTypes = {
39
+ locale: PropTypes.string
40
+ };
@@ -93,6 +93,7 @@ const DropdownMenu = React.forwardRef(function DropdownMenu(
93
93
  id={listId}
94
94
  ariaLabel={ariaLabel || defaultAriaLabel}
95
95
  closeOnSelect
96
+ activateFirstItem
96
97
  data={data}
97
98
  onSelect={onSelect}
98
99
  {...menuProps}
@@ -66,8 +66,7 @@ describe('Dropdown Menu', () => {
66
66
  it('should add accessibility attributes to anchor', async () => {
67
67
  const wrapper = await mountAndWaitForMenuContent({
68
68
  anchor: 'Anchor text',
69
- data: [{key: 'key1'}, {key: 'key2'}],
70
- menuProps: {activateFirstItem: true}
69
+ data: [{key: 'key1'}, {key: 'key2'}]
71
70
  });
72
71
 
73
72
  const anchorProps = wrapper.update().find(Anchor).props();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jetbrains/ring-ui",
3
- "version": "4.0.52",
3
+ "version": "4.0.56",
4
4
  "description": "JetBrains UI library",
5
5
  "author": "JetBrains",
6
6
  "license": "Apache-2.0",
@@ -55,7 +55,7 @@
55
55
  "test-ci": "karma start karma-ci.conf.js",
56
56
  "test-watch": "karma start karma-watch.conf.js",
57
57
  "prerelease-ci": "git pull",
58
- "release-ci": "lerna publish --yes",
58
+ "release-ci": "lerna publish --no-verify-access --yes",
59
59
  "prepublishOnly": "pinst --disable",
60
60
  "postpublish": "pinst --enable"
61
61
  },
@@ -68,26 +68,26 @@
68
68
  "@babel/cli": "^7.15.7",
69
69
  "@babel/eslint-parser": "^7.15.8",
70
70
  "@jetbrains/eslint-config": "^5.3.1",
71
- "@jetbrains/generator-ring-ui": "^4.0.40",
71
+ "@jetbrains/generator-ring-ui": "^4.0.43",
72
72
  "@jetbrains/stylelint-config": "^2.0.1",
73
- "@primer/octicons": "^16.0.0",
74
- "@storybook/addon-a11y": "6.3.11",
75
- "@storybook/addon-docs": "6.3.10",
76
- "@storybook/addon-essentials": "6.3.11",
73
+ "@primer/octicons": "^16.1.1",
74
+ "@storybook/addon-a11y": "6.3.12",
75
+ "@storybook/addon-docs": "6.3.12",
76
+ "@storybook/addon-essentials": "6.3.12",
77
77
  "@storybook/addon-storyshots": "6.3.2",
78
78
  "@storybook/addon-storyshots-puppeteer": "6.3.2",
79
- "@storybook/addon-storysource": "6.3.11",
80
- "@storybook/addons": "6.3.10",
81
- "@storybook/builder-webpack5": "6.3.10",
82
- "@storybook/client-api": "6.3.10",
83
- "@storybook/core": "6.3.11",
84
- "@storybook/html": "6.3.10",
85
- "@storybook/manager-webpack5": "^6.3.10",
86
- "@storybook/source-loader": "6.3.10",
87
- "@storybook/theming": "6.3.10",
79
+ "@storybook/addon-storysource": "6.3.12",
80
+ "@storybook/addons": "6.3.12",
81
+ "@storybook/builder-webpack5": "6.3.12",
82
+ "@storybook/client-api": "6.3.12",
83
+ "@storybook/core": "6.3.12",
84
+ "@storybook/html": "6.3.12",
85
+ "@storybook/manager-webpack5": "^6.3.12",
86
+ "@storybook/source-loader": "6.3.12",
87
+ "@storybook/theming": "6.3.12",
88
88
  "@testing-library/react": "^12.1.2",
89
- "@testing-library/user-event": "^13.3.0",
90
- "@wojtekmaj/enzyme-adapter-react-17": "^0.6.3",
89
+ "@testing-library/user-event": "^13.5.0",
90
+ "@wojtekmaj/enzyme-adapter-react-17": "^0.6.5",
91
91
  "angular": "^1.8.2",
92
92
  "angular-mocks": "^1.8.2",
93
93
  "angular-route": "^1.8.2",
@@ -98,23 +98,23 @@
98
98
  "chai-dom": "^1.10.0",
99
99
  "chai-enzyme": "1.0.0-beta.1",
100
100
  "cheerio": "^0.22.0",
101
- "core-js": "^3.18.2",
101
+ "core-js": "^3.19.0",
102
102
  "enzyme": "^3.11.0",
103
103
  "eslint": "^7.32.0",
104
- "eslint-import-resolver-webpack": "^0.13.1",
104
+ "eslint-import-resolver-webpack": "^0.13.2",
105
105
  "eslint-plugin-angular": "^4.1.0",
106
106
  "eslint-plugin-bdd": "^2.1.1",
107
- "eslint-plugin-import": "^2.25.1",
107
+ "eslint-plugin-import": "^2.25.2",
108
108
  "eslint-plugin-jsx-a11y": "^6.4.1",
109
109
  "eslint-plugin-react": "^7.26.1",
110
110
  "events": "^3.3.0",
111
- "html-webpack-plugin": "^5.3.2",
112
- "husky": "^7.0.2",
111
+ "html-webpack-plugin": "^5.5.0",
112
+ "husky": "^7.0.4",
113
113
  "identity-obj-proxy": "^3.0.0",
114
- "imports-loader": "^3.0.0",
115
- "jest": "~27.2.5",
114
+ "imports-loader": "^3.1.0",
115
+ "jest": "~27.3.1",
116
116
  "jest-teamcity": "^1.10.0",
117
- "karma": "^6.3.4",
117
+ "karma": "^6.3.5",
118
118
  "karma-chrome-launcher": "3.1.0",
119
119
  "karma-mocha": "^2.0.1",
120
120
  "karma-sourcemap-loader": "^0.3.8",
@@ -123,7 +123,7 @@
123
123
  "lerna": "^4.0.0",
124
124
  "lint-staged": "^11.2.3",
125
125
  "merge-options": "^3.0.4",
126
- "mocha": "^9.1.2",
126
+ "mocha": "^9.1.3",
127
127
  "pinst": "^2.1.6",
128
128
  "puppeteer": "^10.4.0",
129
129
  "raw-loader": "^4.0.2",
@@ -139,8 +139,8 @@
139
139
  "teamcity-service-messages": "^0.1.11",
140
140
  "terser-webpack-plugin": "^5.2.4",
141
141
  "wallaby-webpack": "^3.9.16",
142
- "webpack": "^5.58.2",
143
- "webpack-cli": "^4.9.0",
142
+ "webpack": "^5.59.1",
143
+ "webpack-cli": "^4.9.1",
144
144
  "xmlappend": "^1.0.4",
145
145
  "yo": "^4.3.0"
146
146
  },
@@ -148,17 +148,17 @@
148
148
  "core-js": ">=3.0.0",
149
149
  "react": ">=16.8.0",
150
150
  "react-dom": ">=16.8.0",
151
- "webpack": "^5.58.2"
151
+ "webpack": "^5.59.1"
152
152
  },
153
153
  "dependencies": {
154
154
  "@babel/core": "^7.15.8",
155
155
  "@jetbrains/angular-elastic": "^2.5.1",
156
156
  "@jetbrains/babel-preset-jetbrains": "^2.3.1",
157
157
  "@jetbrains/icons": "^3.17.1",
158
- "@jetbrains/logos": "^1.4.24",
158
+ "@jetbrains/logos": "^1.4.25",
159
159
  "@jetbrains/postcss-require-hover": "^0.1.2",
160
160
  "@ungap/url-search-params": "^0.2.2",
161
- "babel-loader": "^8.2.2",
161
+ "babel-loader": "^8.2.3",
162
162
  "babel-plugin-transform-define": "^2.0.1",
163
163
  "browserslist": "^4.16.6",
164
164
  "change-case": "^4.1.1",
@@ -178,15 +178,15 @@
178
178
  "focus-trap": "^6.7.1",
179
179
  "focus-visible": "^5.2.0",
180
180
  "highlight.js": "^10.7.2",
181
- "html-loader": "^1.3.2",
181
+ "html-loader": "^3.0.0",
182
182
  "interpolate-loader": "^2.0.1",
183
- "just-debounce-it": "^1.5.0",
184
- "memoize-one": "^5.2.1",
185
- "postcss": "^8.3.9",
183
+ "just-debounce-it": "^2.0.0",
184
+ "memoize-one": "^6.0.0",
185
+ "postcss": "^8.3.11",
186
186
  "postcss-calc": "^8.0.0",
187
187
  "postcss-flexbugs-fixes": "^5.0.2",
188
188
  "postcss-font-family-system-ui": "^5.0.0",
189
- "postcss-loader": "^6.1.1",
189
+ "postcss-loader": "^6.2.0",
190
190
  "postcss-modules-values-replace": "^3.4.0",
191
191
  "postcss-preset-env": "^6.7.0",
192
192
  "prop-types": "^15.7.2",
@@ -194,12 +194,12 @@
194
194
  "react-movable": "^2.5.4",
195
195
  "react-virtualized": "^9.22.3",
196
196
  "react-waypoint": "^10.1.0",
197
- "remark-breaks": "^3.0.1",
197
+ "remark-breaks": "^3.0.2",
198
198
  "remark-gfm": "^1.0.0",
199
199
  "scrollbar-width": "^3.1.1",
200
200
  "simply-uuid": "^1.0.1",
201
201
  "sniffr": "^1.2.0",
202
- "style-loader": "~3.3.0",
202
+ "style-loader": "~3.3.1",
203
203
  "url-loader": "^4.1.1",
204
204
  "util-deprecate": "^1.0.2"
205
205
  },
@@ -207,5 +207,5 @@
207
207
  "node": ">=7.4",
208
208
  "npm": ">=6.0.0"
209
209
  },
210
- "gitHead": "081813df7cd0a278be5c00c10286f34540409715"
210
+ "gitHead": "47f9adf1d43b1494f1df7af9ea28a00713c11696"
211
211
  }