@jetbrains/ring-ui-built 7.0.114 → 8.0.0-beta.2

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 (57) hide show
  1. package/components/_helpers/table.js +2 -2
  2. package/components/_helpers/table2.js +3 -0
  3. package/components/data-list/data-list.d.ts +4 -4
  4. package/components/data-list/data-list.js +2 -2
  5. package/components/data-list/data-list.mock.d.ts +1 -1
  6. package/components/data-list/item.d.ts +1 -1
  7. package/components/data-list/selection.d.ts +1 -1
  8. package/components/data-list/selection.js +1 -1
  9. package/components/date-picker/date-picker.js +25 -13
  10. package/components/date-picker/date-popup.js +1 -1
  11. package/components/date-picker/month.d.ts +0 -2
  12. package/components/date-picker/month.js +16 -17
  13. package/components/date-picker/months.js +42 -33
  14. package/components/date-picker/years.js +60 -52
  15. package/components/global/intersection-observer-context.d.ts +26 -0
  16. package/components/global/intersection-observer-context.js +140 -0
  17. package/components/{table → legacy-table}/cell.js +1 -1
  18. package/components/{table → legacy-table}/header-cell.js +3 -3
  19. package/components/{table → legacy-table}/header.js +1 -1
  20. package/components/{table → legacy-table}/row-with-focus-sensor.js +1 -1
  21. package/components/{table → legacy-table}/row.js +1 -1
  22. package/components/{table → legacy-table}/selection.d.ts +2 -2
  23. package/components/{table → legacy-table}/selection.js +1 -1
  24. package/components/{table → legacy-table}/simple-table.js +1 -1
  25. package/components/{table → legacy-table}/smart-table.js +1 -1
  26. package/components/legacy-table/table.d.ts +109 -0
  27. package/components/legacy-table/table.js +369 -0
  28. package/components/old-browsers-message/white-list.js +2 -2
  29. package/components/style.css +1 -1
  30. package/components/table/default-item-renderer.d.ts +25 -0
  31. package/components/table/default-item-renderer.js +241 -0
  32. package/components/table/table-base.d.ts +24 -0
  33. package/components/table/table-base.js +311 -0
  34. package/components/table/table-component.d.ts +53 -0
  35. package/components/table/table-component.js +316 -0
  36. package/components/table/table-const.d.ts +8 -0
  37. package/components/table/table-const.js +11 -0
  38. package/components/table/table-virtualize.d.ts +32 -0
  39. package/components/table/table-virtualize.js +330 -0
  40. package/components/table/table.d.ts +221 -104
  41. package/components/table/table.js +18 -362
  42. package/package.json +1 -1
  43. /package/components/{table → legacy-table}/cell.d.ts +0 -0
  44. /package/components/{table → legacy-table}/disable-hover-hoc.d.ts +0 -0
  45. /package/components/{table → legacy-table}/disable-hover-hoc.js +0 -0
  46. /package/components/{table → legacy-table}/header-cell.d.ts +0 -0
  47. /package/components/{table → legacy-table}/header.d.ts +0 -0
  48. /package/components/{table → legacy-table}/multitable.d.ts +0 -0
  49. /package/components/{table → legacy-table}/multitable.js +0 -0
  50. /package/components/{table → legacy-table}/row-with-focus-sensor.d.ts +0 -0
  51. /package/components/{table → legacy-table}/row.d.ts +0 -0
  52. /package/components/{table → legacy-table}/selection-adapter.d.ts +0 -0
  53. /package/components/{table → legacy-table}/selection-adapter.js +0 -0
  54. /package/components/{table → legacy-table}/selection-shortcuts-hoc.d.ts +0 -0
  55. /package/components/{table → legacy-table}/selection-shortcuts-hoc.js +0 -0
  56. /package/components/{table → legacy-table}/simple-table.d.ts +0 -0
  57. /package/components/{table → legacy-table}/smart-table.d.ts +0 -0
@@ -1,369 +1,25 @@
1
- import { Component, PureComponent, createElement } from 'react';
2
- import classNames from 'classnames';
3
- import { arrayMove, List } from 'react-movable';
4
- import focusSensorHOC from '../global/focus-sensor-hoc.js';
5
- import getUID from '../global/get-uid.js';
6
- import Shortcuts from '../shortcuts/shortcuts.js';
7
- import Loader from '../loader/loader.js';
8
- import Header from './header.js';
9
- import selectionShortcutsHOC from './selection-shortcuts-hoc.js';
10
- import disableHoverHOC from './disable-hover-hoc.js';
11
- import RowWithFocusSensorCallbacks from './row-with-focus-sensor.js';
12
- import { s as style } from '../_helpers/table.js';
13
- import { jsx, jsxs } from 'react/jsx-runtime';
14
- import '../global/compose-refs.js';
15
- import 'memoize-one';
16
- import '../shortcuts/core.js';
17
- import 'core-js/modules/es.array.includes.js';
18
- import 'combokeys';
19
- import '../global/sniffer.js';
20
- import 'sniffr';
21
- import '../_helpers/loader-core.js';
22
- import '../global/dom.js';
23
- import '../checkbox/checkbox.js';
24
- import '@jetbrains/icons/checkmark-12px';
25
- import '@jetbrains/icons/remove-12px';
1
+ import Table from './table-component.js';
2
+ import 'react-compiler-runtime';
3
+ import 'react';
4
+ import 'classnames';
5
+ import '../global/intersection-observer-context.js';
6
+ import './table-virtualize.js';
7
+ import '../global/use-event-callback.js';
8
+ import '../_helpers/table.js';
9
+ import 'react/jsx-runtime';
10
+ import './default-item-renderer.js';
11
+ import './table-const.js';
12
+ import './table-base.js';
13
+ import '@jetbrains/icons/unsorted-12px';
14
+ import '@jetbrains/icons/arrow-12px-down';
15
+ import '@jetbrains/icons/arrow-12px-up';
16
+ import '@jetbrains/icons/trash-12px';
26
17
  import '../icon/icon.js';
27
18
  import 'util-deprecate';
28
19
  import '../icon/icon.constants.js';
29
20
  import '../_helpers/icon-svg.js';
30
- import 'react-compiler-runtime';
31
21
  import '../global/memoize.js';
32
- import '../control-help/control-help.js';
33
- import '../global/data-tests.js';
34
- import './header-cell.js';
35
- import '@jetbrains/icons/unsorted-12px';
36
- import '@jetbrains/icons/chevron-12px-down';
37
- import './row.js';
38
- import '@jetbrains/icons/chevron-right';
39
- import '@jetbrains/icons/chevron-down';
40
- import '@jetbrains/icons/drag';
41
- import '../button/button.js';
42
- import '../link/clickable-link.js';
43
- import '../global/controls-height.js';
44
- import '../global/configuration.js';
45
- import '../_helpers/button.classes.js';
46
- import '../tooltip/tooltip.js';
47
- import '../popup/popup.js';
48
- import 'react-dom';
49
- import '../global/schedule-raf.js';
50
- import '../tab-trap/tab-trap.js';
51
- import '../popup/position.js';
52
- import '../popup/popup.consts.js';
53
- import '../popup/popup.target.js';
54
- import '../popup/position-css.js';
55
- import '../_helpers/theme.js';
56
- import './cell.js';
57
22
 
58
- class Table extends PureComponent {
59
- static defaultProps = {
60
- isItemSelectable: () => true,
61
- loading: false,
62
- onSort: () => {},
63
- onReorder: () => {},
64
- getItemKey: item => {
65
- // Default behavior stays backward compatible: use item's "id" if present
66
- if ('id' in item) {
67
- return item.id;
68
- }
69
- // If there's no id provided on item and no getKey supplied, fail fast with a clear message
70
- throw new Error('Table: getItemKey is required when items have no "id" property');
71
- },
72
- sortKey: 'id',
73
- sortOrder: true,
74
- draggable: false,
75
- alwaysShowDragHandle: false,
76
- stickyHeader: true,
77
- getItemLevel: () => 0,
78
- getItemClassName: () => null,
79
- getMetaColumnClassName: () => null,
80
- getItemDataTest: () => null,
81
- isItemCollapsible: () => false,
82
- isParentCollapsible: () => false,
83
- isItemCollapsed: () => false,
84
- onItemCollapse: () => {},
85
- onItemExpand: () => {},
86
- onItemDoubleClick: () => {},
87
- onItemClick: () => {},
88
- remoteSelection: false,
89
- isDisabledSelectionVisible: () => false,
90
- getCheckboxTooltip: () => undefined,
91
- RowComponent: RowWithFocusSensorCallbacks,
92
- wideFirstColumn: false
93
- };
94
- state = {
95
- shortcutsScope: getUID('ring-table-'),
96
- userSelectNone: false
97
- };
98
- componentDidMount() {
99
- document.addEventListener('mouseup', this.onMouseUp);
100
- }
101
- componentDidUpdate({
102
- data,
103
- selection,
104
- onSelect,
105
- selectable,
106
- remoteSelection
107
- }) {
108
- if (data !== this.props.data && remoteSelection) {
109
- onSelect(selection.cloneWith({
110
- data: this.props.data
111
- }));
112
- }
113
- if (!this.props.selectable && this.props.selectable !== selectable) {
114
- onSelect(selection.resetSelection());
115
- }
116
- }
117
- componentWillUnmount() {
118
- document.removeEventListener('mouseup', this.onMouseUp);
119
- }
120
- onMouseDown = e => {
121
- if (e.shiftKey) {
122
- this.setState({
123
- userSelectNone: true
124
- });
125
- }
126
- };
127
- onMouseUp = () => {
128
- if (this.state.userSelectNone) {
129
- this.setState({
130
- userSelectNone: false
131
- });
132
- }
133
- };
134
- onRowFocus = row => {
135
- const {
136
- selection,
137
- onSelect
138
- } = this.props;
139
- onSelect(selection.focus(row));
140
- };
141
- onRowSelect = (row, selected) => {
142
- const {
143
- selection,
144
- onSelect
145
- } = this.props;
146
- if (selected) {
147
- onSelect(selection.select(row));
148
- } else {
149
- onSelect(selection.deselect(row));
150
- }
151
- };
152
- onSortEnd = ({
153
- oldIndex,
154
- newIndex
155
- }) => {
156
- const data = arrayMove(this.props.data, oldIndex, newIndex);
157
- this.props.onReorder({
158
- data,
159
- oldIndex,
160
- newIndex
161
- });
162
- };
163
- onCheckboxChange = e => {
164
- const {
165
- checked
166
- } = e.currentTarget;
167
- const {
168
- selection,
169
- onSelect
170
- } = this.props;
171
- if (checked) {
172
- onSelect(selection.selectAll());
173
- } else {
174
- onSelect(selection.reset());
175
- }
176
- this.restoreFocusWithoutScroll();
177
- };
178
- restoreFocusWithoutScroll = () => {
179
- const {
180
- scrollX,
181
- scrollY
182
- } = window;
183
- this.props.onFocusRestore();
184
- window.scrollTo(scrollX, scrollY);
185
- };
186
- render() {
187
- const {
188
- data,
189
- selection,
190
- columns,
191
- caption,
192
- getItemKey,
193
- selectable,
194
- focused,
195
- isItemSelectable,
196
- getItemLevel,
197
- getItemClassName,
198
- getMetaColumnClassName,
199
- getItemDataTest,
200
- draggable,
201
- alwaysShowDragHandle,
202
- dragHandleTitle,
203
- loading,
204
- onSort,
205
- sortKey,
206
- sortOrder,
207
- loaderClassName,
208
- stickyHeader,
209
- stickyHeaderOffset,
210
- isItemCollapsible,
211
- isParentCollapsible,
212
- isItemCollapsed,
213
- onItemCollapse,
214
- onItemExpand,
215
- isDisabledSelectionVisible,
216
- getCheckboxTooltip,
217
- onItemDoubleClick,
218
- onItemClick,
219
- renderEmpty,
220
- RowComponent,
221
- renderLoader
222
- } = this.props;
223
- // NOTE: Do not construct new object per render because it causes all rows rerendering
224
- const columnsArray = typeof columns === 'function' ? columns(null) : columns;
225
- const headerProps = {
226
- caption,
227
- selectable,
228
- draggable,
229
- columns: columnsArray,
230
- onSort,
231
- sortKey,
232
- sortOrder,
233
- sticky: stickyHeader,
234
- topStickOffset: stickyHeaderOffset,
235
- className: this.props.headerClassName
236
- };
237
- const selectedSize = selection.getSelected().size;
238
- const allSelectedSize = selection.selectAll().getSelected().size;
239
- headerProps.checked = selectedSize > 0 && selectedSize === allSelectedSize;
240
- headerProps.onCheckboxChange = this.onCheckboxChange;
241
- headerProps.checkboxDisabled = this.props.data.length === 0;
242
- const wrapperClasses = classNames(style.tableWrapper, this.props.wrapperClassName);
243
- const classes = classNames(this.props.className, {
244
- [style.table]: true,
245
- [style.wideFirstColumn]: this.props.wideFirstColumn,
246
- [style.userSelectNone]: this.state.userSelectNone,
247
- [style.disabledHover]: this.props.disabledHover
248
- });
249
- const renderList = ({
250
- children,
251
- props
252
- }) => {
253
- const empty = /*#__PURE__*/jsx("tr", {
254
- children: /*#__PURE__*/jsx("td", {
255
- colSpan: columnsArray.length || 1,
256
- className: style.tableMessage,
257
- children: renderEmpty ? renderEmpty() : null
258
- })
259
- });
260
- const tbody = Array.isArray(children) && children.length > 0 ? children : empty;
261
- return /*#__PURE__*/jsxs("table", {
262
- className: classes,
263
- "data-test": "ring-table",
264
- children: [/*#__PURE__*/jsx(Header, {
265
- ...headerProps
266
- }), /*#__PURE__*/jsx("tbody", {
267
- ...props,
268
- "data-test": "ring-table-body",
269
- children: tbody
270
- })]
271
- });
272
- };
273
- const renderItem = ({
274
- value,
275
- props = {},
276
- isDragged
277
- }) => {
278
- var _restProps$key;
279
- if (value === null || value === undefined) {
280
- return null;
281
- }
282
- const {
283
- ref,
284
- ...restProps
285
- } = props;
286
- const row = /*#__PURE__*/createElement(RowComponent, {
287
- innerRef: ref,
288
- level: getItemLevel(value),
289
- item: value,
290
- showFocus: selection.isFocused(value),
291
- autofocus: selection.isFocused(value),
292
- focused: focused && selection.isFocused(value),
293
- selectable: selectable && isItemSelectable(value),
294
- selected: selectable && selection.isSelected(value),
295
- onFocus: this.onRowFocus,
296
- onSelect: this.onRowSelect,
297
- onDoubleClick: onItemDoubleClick,
298
- onClick: onItemClick,
299
- collapsible: isItemCollapsible(value),
300
- parentCollapsible: isParentCollapsible(value),
301
- collapsed: isItemCollapsed(value),
302
- onCollapse: onItemCollapse,
303
- onExpand: onItemExpand,
304
- showDisabledSelection: isDisabledSelectionVisible(value),
305
- checkboxTooltip: getCheckboxTooltip(value),
306
- className: classNames(getItemClassName(value), {
307
- [style.draggingRow]: isDragged
308
- }),
309
- metaColumnClassName: getMetaColumnClassName(value),
310
- draggable: draggable,
311
- alwaysShowDragHandle: alwaysShowDragHandle,
312
- dragHandleTitle: dragHandleTitle,
313
- columns: columns,
314
- "data-test": getItemDataTest(value),
315
- cellClassName: this.props.cellClassName,
316
- ...restProps,
317
- key: (_restProps$key = restProps.key) !== null && _restProps$key !== void 0 ? _restProps$key : getItemKey(value)
318
- });
319
- return isDragged ? /*#__PURE__*/jsx("table", {
320
- style: {
321
- ...props.style
322
- },
323
- className: style.draggingTable,
324
- children: /*#__PURE__*/jsx("tbody", {
325
- children: row
326
- })
327
- }) : row;
328
- };
329
- return /*#__PURE__*/jsxs("div", {
330
- className: wrapperClasses,
331
- "data-test": "ring-table-wrapper",
332
- ref: this.props.innerRef,
333
- children: [focused && /*#__PURE__*/jsx(Shortcuts, {
334
- map: this.props.shortcutsMap,
335
- scope: this.state.shortcutsScope
336
- }), /*#__PURE__*/jsx("div", {
337
- role: "presentation",
338
- onMouseDown: this.onMouseDown,
339
- children: draggable ? /*#__PURE__*/jsx(List, {
340
- values: data,
341
- renderList: renderList,
342
- renderItem: renderItem,
343
- onChange: this.onSortEnd
344
- }) : renderList({
345
- children: data.map((value, index) => renderItem({
346
- value}))
347
- })
348
- }), loading && /*#__PURE__*/jsx("div", {
349
- className: style.loadingOverlay,
350
- children: renderLoader ? renderLoader(loaderClassName) : /*#__PURE__*/jsx(Loader, {
351
- className: loaderClassName
352
- })
353
- })]
354
- });
355
- }
356
- }
357
- const getContainer = () => disableHoverHOC(selectionShortcutsHOC(focusSensorHOC(Table)));
358
- // eslint-disable-next-line react/no-multi-comp
359
- class TableContainer extends Component {
360
- // https://stackoverflow.com/a/53882322/6304152
361
- Table = getContainer();
362
- render() {
363
- return /*#__PURE__*/jsx(this.Table, {
364
- ...this.props
365
- });
366
- }
367
- }
368
23
 
369
- export { Table, TableContainer as default };
24
+
25
+ export { Table as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jetbrains/ring-ui-built",
3
- "version": "7.0.114",
3
+ "version": "8.0.0-beta.2",
4
4
  "description": "JetBrains UI library",
5
5
  "author": {
6
6
  "name": "JetBrains"
File without changes
File without changes
File without changes