@carbon/ibm-products 2.43.2-canary.31 → 2.43.2-canary.33
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/css/index-full-carbon.css +5 -0
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +1 -1
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon.css +5 -0
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +1 -1
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +5 -0
- package/css/index.css.map +1 -1
- package/css/index.min.css +1 -1
- package/css/index.min.css.map +1 -1
- package/es/components/DataSpreadsheet/DataSpreadsheet.d.ts +12 -0
- package/es/components/DataSpreadsheet/DataSpreadsheet.js +22 -3
- package/es/components/DataSpreadsheet/DataSpreadsheetBody.d.ts +12 -0
- package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +22 -6
- package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +3 -0
- package/es/components/EditTearsheet/EditTearsheet.d.ts +5 -1
- package/es/components/EditTearsheet/EditTearsheet.js +0 -1
- package/es/components/EditTearsheet/EditTearsheetForm.d.ts +45 -2
- package/es/components/EditTearsheet/EditTearsheetForm.js +3 -0
- package/lib/components/DataSpreadsheet/DataSpreadsheet.d.ts +12 -0
- package/lib/components/DataSpreadsheet/DataSpreadsheet.js +22 -3
- package/lib/components/DataSpreadsheet/DataSpreadsheetBody.d.ts +12 -0
- package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +22 -6
- package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +3 -0
- package/lib/components/EditTearsheet/EditTearsheet.d.ts +5 -1
- package/lib/components/EditTearsheet/EditTearsheet.js +0 -1
- package/lib/components/EditTearsheet/EditTearsheetForm.d.ts +45 -2
- package/lib/components/EditTearsheet/EditTearsheetForm.js +3 -0
- package/package.json +2 -2
- package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +7 -0
@@ -32,7 +32,7 @@ import { useSpreadsheetOutsideClick } from './hooks/useSpreadsheetOutsideClick.j
|
|
32
32
|
import { useMoveActiveCell } from './hooks/useMoveActiveCell.js';
|
33
33
|
import { useSpreadsheetEdit } from './hooks/useSpreadsheetEdit.js';
|
34
34
|
|
35
|
-
var _excluded = ["cellSize", "className", "columns", "data", "defaultEmptyRowCount", "onDataUpdate", "id", "onActiveCellChange", "onSelectionAreaChange", "selectAllAriaLabel", "spreadsheetAriaLabel", "theme", "totalVisibleColumns"];
|
35
|
+
var _excluded = ["cellSize", "className", "columns", "data", "defaultEmptyRowCount", "onDataUpdate", "id", "onActiveCellChange", "onSelectionAreaChange", "renderRowHeader", "renderRowHeaderDirection", "selectAllAriaLabel", "spreadsheetAriaLabel", "theme", "totalVisibleColumns"];
|
36
36
|
// The block part of our conventional BEM class names (blockClass__E--M).
|
37
37
|
var blockClass = "".concat(pkg.prefix, "--data-spreadsheet");
|
38
38
|
var componentName = 'DataSpreadsheet';
|
@@ -67,6 +67,8 @@ var DataSpreadsheet = /*#__PURE__*/React__default.forwardRef(function (_ref, ref
|
|
67
67
|
onActiveCellChange = _ref$onActiveCellChan === void 0 ? defaults.onActiveCellChange : _ref$onActiveCellChan,
|
68
68
|
_ref$onSelectionAreaC = _ref.onSelectionAreaChange,
|
69
69
|
onSelectionAreaChange = _ref$onSelectionAreaC === void 0 ? defaults.onSelectionAreaChange : _ref$onSelectionAreaC,
|
70
|
+
renderRowHeader = _ref.renderRowHeader,
|
71
|
+
renderRowHeaderDirection = _ref.renderRowHeaderDirection,
|
70
72
|
selectAllAriaLabel = _ref.selectAllAriaLabel,
|
71
73
|
spreadsheetAriaLabel = _ref.spreadsheetAriaLabel,
|
72
74
|
theme = _ref.theme,
|
@@ -138,13 +140,15 @@ var DataSpreadsheet = /*#__PURE__*/React__default.forwardRef(function (_ref, ref
|
|
138
140
|
setActiveCellContent = _useState26[1];
|
139
141
|
var activeCellRef = useRef();
|
140
142
|
var cellEditorRulerRef = useRef();
|
143
|
+
var hasCustomRowHeader = typeof renderRowHeader === 'function';
|
144
|
+
var maxNumRowsCount = data.length.toString().length;
|
141
145
|
var defaultColumn = useMemo(function () {
|
142
146
|
return {
|
143
147
|
width: 150,
|
144
|
-
rowHeaderWidth: 64,
|
148
|
+
rowHeaderWidth: hasCustomRowHeader ? 40 + maxNumRowsCount * 8.56 : 64,
|
145
149
|
rowHeight: cellSizeValue
|
146
150
|
};
|
147
|
-
}, [cellSizeValue]);
|
151
|
+
}, [cellSizeValue, hasCustomRowHeader, maxNumRowsCount]);
|
148
152
|
var _useMultipleKeyTracki = useMultipleKeyTracking({
|
149
153
|
ref: multiKeyTrackingRef,
|
150
154
|
containerHasFocus: containerHasFocus,
|
@@ -654,7 +658,10 @@ var DataSpreadsheet = /*#__PURE__*/React__default.forwardRef(function (_ref, ref
|
|
654
658
|
headerGroups: headerGroups,
|
655
659
|
defaultColumn: defaultColumn,
|
656
660
|
getTableBodyProps: getTableBodyProps,
|
661
|
+
hasCustomRowHeader: hasCustomRowHeader,
|
657
662
|
onDataUpdate: onDataUpdate,
|
663
|
+
renderRowHeaderDirection: renderRowHeaderDirection,
|
664
|
+
renderRowHeader: renderRowHeader,
|
658
665
|
onActiveCellChange: onActiveCellChange,
|
659
666
|
onSelectionAreaChange: onSelectionAreaChange,
|
660
667
|
prepareRow: prepareRow,
|
@@ -753,6 +760,10 @@ DataSpreadsheet.propTypes = {
|
|
753
760
|
* Sets the number of empty rows to be created when there is no data provided
|
754
761
|
*/
|
755
762
|
defaultEmptyRowCount: PropTypes.number,
|
763
|
+
/**
|
764
|
+
* Check if spreadsheet is using custom row header component attached
|
765
|
+
*/
|
766
|
+
hasCustomRowHeader: PropTypes.bool,
|
756
767
|
/**
|
757
768
|
* The spreadsheet id
|
758
769
|
*/
|
@@ -769,6 +780,14 @@ DataSpreadsheet.propTypes = {
|
|
769
780
|
* The event handler that is called when the selection area values change
|
770
781
|
*/
|
771
782
|
onSelectionAreaChange: PropTypes.func,
|
783
|
+
/**
|
784
|
+
* Component next to numbering rows
|
785
|
+
*/
|
786
|
+
renderRowHeader: PropTypes.func,
|
787
|
+
/**
|
788
|
+
* Component next to numbering rows
|
789
|
+
*/
|
790
|
+
renderRowHeaderDirection: PropTypes.oneOf(['left', 'right']),
|
772
791
|
/**
|
773
792
|
* The aria label applied to the Select all button
|
774
793
|
*/
|
@@ -52,6 +52,18 @@ interface DataSpreadsheetBodyProps {
|
|
52
52
|
* The event handler that is called when the active cell changes
|
53
53
|
*/
|
54
54
|
onActiveCellChange?: () => void;
|
55
|
+
/**
|
56
|
+
* Check if user is using custom component
|
57
|
+
*/
|
58
|
+
hasCustomRowHeader?: boolean;
|
59
|
+
/**
|
60
|
+
* Component next to numbering rows
|
61
|
+
*/
|
62
|
+
renderRowHeader?: (index: number) => any[];
|
63
|
+
/**
|
64
|
+
* Component next to numbering rows
|
65
|
+
*/
|
66
|
+
renderRowHeaderDirection?: string;
|
55
67
|
/**
|
56
68
|
* The event handler that is called to set the rows for the empty spreadsheet
|
57
69
|
*/
|
@@ -35,6 +35,9 @@ var DataSpreadsheetBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
35
35
|
headerGroups = _ref.headerGroups,
|
36
36
|
id = _ref.id,
|
37
37
|
onDataUpdate = _ref.onDataUpdate,
|
38
|
+
renderRowHeader = _ref.renderRowHeader,
|
39
|
+
renderRowHeaderDirection = _ref.renderRowHeaderDirection,
|
40
|
+
hasCustomRowHeader = _ref.hasCustomRowHeader,
|
38
41
|
prepareRow = _ref.prepareRow,
|
39
42
|
rows = _ref.rows,
|
40
43
|
selectionAreaData = _ref.selectionAreaData,
|
@@ -138,7 +141,7 @@ var DataSpreadsheetBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
138
141
|
return;
|
139
142
|
});
|
140
143
|
}
|
141
|
-
}, [selectionAreas, setSelectionAreas, defaultColumn, onSelectionAreaChange, setSelectionAreaData, ref, activeCellCoordinates, setActiveCellInsideSelectionArea, visibleColumns]);
|
144
|
+
}, [selectionAreas, setSelectionAreas, defaultColumn, onSelectionAreaChange, setSelectionAreaData, ref, activeCellCoordinates, setActiveCellInsideSelectionArea, visibleColumns, hasCustomRowHeader]);
|
142
145
|
var populateSelectionAreaCellData = function populateSelectionAreaCellData(_ref2) {
|
143
146
|
var rowStart = _ref2.rowStart,
|
144
147
|
rowEnd = _ref2.rowEnd,
|
@@ -212,7 +215,7 @@ var DataSpreadsheetBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
212
215
|
});
|
213
216
|
}
|
214
217
|
}
|
215
|
-
}, [defaultColumn, ref, activeCellCoordinates, previousState === null || previousState === void 0 ? void 0 : previousState.rowHeight, selectionAreas, setActiveCellInsideSelectionArea, setSelectionAreas, visibleColumns]);
|
218
|
+
}, [defaultColumn, ref, activeCellCoordinates, previousState === null || previousState === void 0 ? void 0 : previousState.rowHeight, selectionAreas, setActiveCellInsideSelectionArea, setSelectionAreas, visibleColumns, hasCustomRowHeader]);
|
216
219
|
|
217
220
|
//this method will check for any duplicate selection area and remove.
|
218
221
|
//same selections are those have the same height, width, top, left styles. These inline styles are being set in createCellSelection util.
|
@@ -338,11 +341,12 @@ var DataSpreadsheetBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
338
341
|
"data-column-index": "header",
|
339
342
|
type: "button",
|
340
343
|
onClick: handleRowHeaderClickEvent(index),
|
341
|
-
className: cx("".concat(blockClass, "__td"), "".concat(blockClass, "__td-th"), "".concat(blockClass, "--interactive-cell-element"), _defineProperty(_defineProperty({}, "".concat(blockClass, "__td-th--active-header"), (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row) === index || checkActiveHeaderCell(index, selectionAreas, 'row')), "".concat(blockClass, "__td-th--selected-header"), checkSelectedHeaderCell(index, selectionAreas, 'row', columns))),
|
344
|
+
className: cx("".concat(blockClass, "__td"), "".concat(blockClass, "__td-th"), "".concat(blockClass, "--interactive-cell-element"), _defineProperty(_defineProperty(_defineProperty({}, "".concat(blockClass, "__td_custom"), hasCustomRowHeader ? true : false), "".concat(blockClass, "__td-th--active-header"), !hasCustomRowHeader && ((activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row) === index || checkActiveHeaderCell(index, selectionAreas, 'row'))), "".concat(blockClass, "__td-th--selected-header"), !hasCustomRowHeader && checkSelectedHeaderCell(index, selectionAreas, 'row', columns))),
|
342
345
|
style: {
|
343
|
-
width: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth
|
346
|
+
width: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth,
|
347
|
+
flexDirection: hasCustomRowHeader ? renderRowHeaderDirection === 'Left' ? 'row-reverse' : row : undefined
|
344
348
|
}
|
345
|
-
}, index + 1)), row.cells.map(function (cell, index) {
|
349
|
+
}, index + 1, hasCustomRowHeader && typeof renderRowHeader === 'function' && renderRowHeader(index))), row.cells.map(function (cell, index) {
|
346
350
|
var _cell$column;
|
347
351
|
var cellProps = prepareProps(cell.getCellProps(), 'key');
|
348
352
|
return /*#__PURE__*/React__default.createElement("div", _extends({
|
@@ -367,7 +371,7 @@ var DataSpreadsheetBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
367
371
|
}, cell.render('Cell')));
|
368
372
|
}));
|
369
373
|
}
|
370
|
-
}, [prepareRow, rows, activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row, selectionAreas, handleRowHeaderClickEvent, handleBodyCellClickEvent, handleBodyCellHoverEvent, defaultColumn, columns]);
|
374
|
+
}, [prepareRow, renderRowHeader, renderRowHeaderDirection, rows, hasCustomRowHeader, activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row, selectionAreas, handleRowHeaderClickEvent, handleBodyCellClickEvent, handleBodyCellHoverEvent, defaultColumn, columns]);
|
371
375
|
var spreadsheetBodyRef = useRef();
|
372
376
|
return /*#__PURE__*/React__default.createElement("div", _extends({
|
373
377
|
ref: spreadsheetBodyRef,
|
@@ -433,6 +437,10 @@ DataSpreadsheetBody.propTypes = {
|
|
433
437
|
*/
|
434
438
|
/**@ts-ignore */
|
435
439
|
getTableBodyProps: PropTypes.func,
|
440
|
+
/**
|
441
|
+
* Check if spreadsheet is using custom row header component attached
|
442
|
+
*/
|
443
|
+
hasCustomRowHeader: PropTypes.bool,
|
436
444
|
/**
|
437
445
|
* Headers provided from useTable hook
|
438
446
|
*/
|
@@ -457,6 +465,14 @@ DataSpreadsheetBody.propTypes = {
|
|
457
465
|
* Prepare row function from react-table
|
458
466
|
*/
|
459
467
|
prepareRow: PropTypes.func,
|
468
|
+
/**
|
469
|
+
* Component next to numbering rows
|
470
|
+
*/
|
471
|
+
renderRowHeader: PropTypes.func,
|
472
|
+
/**
|
473
|
+
* Component next to numbering rows
|
474
|
+
*/
|
475
|
+
renderRowHeaderDirection: PropTypes.string,
|
460
476
|
/**
|
461
477
|
* All of the spreadsheet row data
|
462
478
|
*/
|
@@ -175,6 +175,9 @@ var DataSpreadsheetHeader = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
175
175
|
"data-row-index": "header",
|
176
176
|
"data-column-index": "header",
|
177
177
|
type: "button",
|
178
|
+
style: {
|
179
|
+
width: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth
|
180
|
+
},
|
178
181
|
tabIndex: -1,
|
179
182
|
"aria-label": selectAllAriaLabel,
|
180
183
|
onClick: handleSelectAllClick,
|
@@ -5,7 +5,11 @@
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
6
6
|
*/
|
7
7
|
import React, { ReactNode, PropsWithChildren } from 'react';
|
8
|
-
export
|
8
|
+
export type FormContextType = {
|
9
|
+
currentForm: number;
|
10
|
+
setFormTitle: () => void;
|
11
|
+
};
|
12
|
+
export declare const FormContext: React.Context<FormContextType | null>;
|
9
13
|
export declare const FormNumberContext: React.Context<number>;
|
10
14
|
interface EditTearsheetProps extends PropsWithChildren {
|
11
15
|
/**
|
@@ -18,7 +18,6 @@ import { prepareProps } from '../../global/js/utils/props-helper.js';
|
|
18
18
|
var _excluded = ["cancelButtonText", "children", "className", "description", "influencerWidth", "label", "onClose", "open", "submitButtonText", "title", "verticalPosition", "onRequestSubmit", "onFormChange", "sideNavAriaLabel"];
|
19
19
|
var componentName = 'EditTearsheet';
|
20
20
|
var blockClass = "".concat(pkg.prefix, "--tearsheet-edit");
|
21
|
-
|
22
21
|
// This is a general context for the forms container
|
23
22
|
// containing information about the state of the container
|
24
23
|
// and providing some callback methods for forms to use
|
@@ -1,2 +1,45 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
/**
|
2
|
+
* Copyright IBM Corp. 2022, 2022
|
3
|
+
*
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
6
|
+
*/
|
7
|
+
import React, { ReactNode } from 'react';
|
8
|
+
interface EditTearsheetFormBaseProps {
|
9
|
+
/**
|
10
|
+
* Content that shows in the tearsheet form
|
11
|
+
*/
|
12
|
+
children?: ReactNode;
|
13
|
+
/**
|
14
|
+
* Sets an optional className to be added to the tearsheet form
|
15
|
+
*/
|
16
|
+
className?: string;
|
17
|
+
/**
|
18
|
+
* Sets an optional description on the form component
|
19
|
+
*/
|
20
|
+
description?: string;
|
21
|
+
/**
|
22
|
+
* This optional prop will render your form content inside of a fieldset html element
|
23
|
+
* and is defaulted to true.
|
24
|
+
* You can set this prop to `false` if you have multiple fieldset elements or want to control the children of your Full Page's form content.
|
25
|
+
*/
|
26
|
+
hasFieldset?: boolean;
|
27
|
+
/**
|
28
|
+
* Sets an optional subtitle on the form component
|
29
|
+
*/
|
30
|
+
subtitle?: string;
|
31
|
+
/**
|
32
|
+
* Sets the title text for a tearsheet form
|
33
|
+
*/
|
34
|
+
title: ReactNode;
|
35
|
+
}
|
36
|
+
type EditTearsheetFormFieldsetTypes = {
|
37
|
+
hasFieldset?: false;
|
38
|
+
fieldsetLegendText: string;
|
39
|
+
} | {
|
40
|
+
hasFieldset: true;
|
41
|
+
fieldsetLegendText: string;
|
42
|
+
};
|
43
|
+
type EditTearsheetFormProps = EditTearsheetFormBaseProps & EditTearsheetFormFieldsetTypes;
|
44
|
+
export declare let EditTearsheetForm: React.ForwardRefExoticComponent<EditTearsheetFormProps & React.RefAttributes<HTMLDivElement>>;
|
45
|
+
export {};
|
@@ -82,6 +82,7 @@ EditTearsheetForm.propTypes = {
|
|
82
82
|
* You can set the `hasFieldset` prop to false if you have multiple fieldset elements or want to control the children of your Full Page's form content.
|
83
83
|
* Otherwise, use CSS to hide/remove this label text.
|
84
84
|
*/
|
85
|
+
/**@ts-ignore */
|
85
86
|
fieldsetLegendText: PropTypes.string.isRequired.if(function (_ref2) {
|
86
87
|
var hasFieldset = _ref2.hasFieldset;
|
87
88
|
return !!hasFieldset;
|
@@ -91,10 +92,12 @@ EditTearsheetForm.propTypes = {
|
|
91
92
|
* and is defaulted to true.
|
92
93
|
* You can set this prop to `false` if you have multiple fieldset elements or want to control the children of your Full Page's form content.
|
93
94
|
*/
|
95
|
+
/**@ts-ignore*/
|
94
96
|
hasFieldset: PropTypes.bool,
|
95
97
|
/**
|
96
98
|
* Sets an optional subtitle on the form component
|
97
99
|
*/
|
100
|
+
/**@ts-ignore*/
|
98
101
|
subtitle: PropTypes.string,
|
99
102
|
/**
|
100
103
|
* Sets the title text for a tearsheet form
|
@@ -28,6 +28,10 @@ interface DataSpreadsheetProps {
|
|
28
28
|
* Sets the number of empty rows to be created when there is no data provided
|
29
29
|
*/
|
30
30
|
defaultEmptyRowCount?: number;
|
31
|
+
/**
|
32
|
+
* Check if has custom row header component attached
|
33
|
+
*/
|
34
|
+
hasCustomRowHeader?: boolean;
|
31
35
|
/**
|
32
36
|
* The spreadsheet id
|
33
37
|
*/
|
@@ -46,6 +50,14 @@ interface DataSpreadsheetProps {
|
|
46
50
|
* The event handler that is called when the selection area values change
|
47
51
|
*/
|
48
52
|
onSelectionAreaChange?: () => void;
|
53
|
+
/**
|
54
|
+
* Position of the custom row numbering component
|
55
|
+
*/
|
56
|
+
renderRowHeaderDirection?: 'left' | 'right';
|
57
|
+
/**
|
58
|
+
* Component next to numbering rows
|
59
|
+
*/
|
60
|
+
renderRowHeader?: (index: number) => any[];
|
49
61
|
/**
|
50
62
|
* The aria label applied to the Select all button
|
51
63
|
*/
|
@@ -41,7 +41,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
41
41
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
42
42
|
var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
|
43
43
|
|
44
|
-
var _excluded = ["cellSize", "className", "columns", "data", "defaultEmptyRowCount", "onDataUpdate", "id", "onActiveCellChange", "onSelectionAreaChange", "selectAllAriaLabel", "spreadsheetAriaLabel", "theme", "totalVisibleColumns"];
|
44
|
+
var _excluded = ["cellSize", "className", "columns", "data", "defaultEmptyRowCount", "onDataUpdate", "id", "onActiveCellChange", "onSelectionAreaChange", "renderRowHeader", "renderRowHeaderDirection", "selectAllAriaLabel", "spreadsheetAriaLabel", "theme", "totalVisibleColumns"];
|
45
45
|
// The block part of our conventional BEM class names (blockClass__E--M).
|
46
46
|
var blockClass = "".concat(settings.pkg.prefix, "--data-spreadsheet");
|
47
47
|
var componentName = 'DataSpreadsheet';
|
@@ -76,6 +76,8 @@ exports.DataSpreadsheet = /*#__PURE__*/React__default["default"].forwardRef(func
|
|
76
76
|
onActiveCellChange = _ref$onActiveCellChan === void 0 ? defaults.onActiveCellChange : _ref$onActiveCellChan,
|
77
77
|
_ref$onSelectionAreaC = _ref.onSelectionAreaChange,
|
78
78
|
onSelectionAreaChange = _ref$onSelectionAreaC === void 0 ? defaults.onSelectionAreaChange : _ref$onSelectionAreaC,
|
79
|
+
renderRowHeader = _ref.renderRowHeader,
|
80
|
+
renderRowHeaderDirection = _ref.renderRowHeaderDirection,
|
79
81
|
selectAllAriaLabel = _ref.selectAllAriaLabel,
|
80
82
|
spreadsheetAriaLabel = _ref.spreadsheetAriaLabel,
|
81
83
|
theme = _ref.theme,
|
@@ -147,13 +149,15 @@ exports.DataSpreadsheet = /*#__PURE__*/React__default["default"].forwardRef(func
|
|
147
149
|
setActiveCellContent = _useState26[1];
|
148
150
|
var activeCellRef = React.useRef();
|
149
151
|
var cellEditorRulerRef = React.useRef();
|
152
|
+
var hasCustomRowHeader = typeof renderRowHeader === 'function';
|
153
|
+
var maxNumRowsCount = data.length.toString().length;
|
150
154
|
var defaultColumn = React.useMemo(function () {
|
151
155
|
return {
|
152
156
|
width: 150,
|
153
|
-
rowHeaderWidth: 64,
|
157
|
+
rowHeaderWidth: hasCustomRowHeader ? 40 + maxNumRowsCount * 8.56 : 64,
|
154
158
|
rowHeight: cellSizeValue
|
155
159
|
};
|
156
|
-
}, [cellSizeValue]);
|
160
|
+
}, [cellSizeValue, hasCustomRowHeader, maxNumRowsCount]);
|
157
161
|
var _useMultipleKeyTracki = useMultipleKeyTracking.useMultipleKeyTracking({
|
158
162
|
ref: multiKeyTrackingRef,
|
159
163
|
containerHasFocus: containerHasFocus,
|
@@ -663,7 +667,10 @@ exports.DataSpreadsheet = /*#__PURE__*/React__default["default"].forwardRef(func
|
|
663
667
|
headerGroups: headerGroups,
|
664
668
|
defaultColumn: defaultColumn,
|
665
669
|
getTableBodyProps: getTableBodyProps,
|
670
|
+
hasCustomRowHeader: hasCustomRowHeader,
|
666
671
|
onDataUpdate: onDataUpdate,
|
672
|
+
renderRowHeaderDirection: renderRowHeaderDirection,
|
673
|
+
renderRowHeader: renderRowHeader,
|
667
674
|
onActiveCellChange: onActiveCellChange,
|
668
675
|
onSelectionAreaChange: onSelectionAreaChange,
|
669
676
|
prepareRow: prepareRow,
|
@@ -762,6 +769,10 @@ exports.DataSpreadsheet.propTypes = {
|
|
762
769
|
* Sets the number of empty rows to be created when there is no data provided
|
763
770
|
*/
|
764
771
|
defaultEmptyRowCount: index["default"].number,
|
772
|
+
/**
|
773
|
+
* Check if spreadsheet is using custom row header component attached
|
774
|
+
*/
|
775
|
+
hasCustomRowHeader: index["default"].bool,
|
765
776
|
/**
|
766
777
|
* The spreadsheet id
|
767
778
|
*/
|
@@ -778,6 +789,14 @@ exports.DataSpreadsheet.propTypes = {
|
|
778
789
|
* The event handler that is called when the selection area values change
|
779
790
|
*/
|
780
791
|
onSelectionAreaChange: index["default"].func,
|
792
|
+
/**
|
793
|
+
* Component next to numbering rows
|
794
|
+
*/
|
795
|
+
renderRowHeader: index["default"].func,
|
796
|
+
/**
|
797
|
+
* Component next to numbering rows
|
798
|
+
*/
|
799
|
+
renderRowHeaderDirection: index["default"].oneOf(['left', 'right']),
|
781
800
|
/**
|
782
801
|
* The aria label applied to the Select all button
|
783
802
|
*/
|
@@ -52,6 +52,18 @@ interface DataSpreadsheetBodyProps {
|
|
52
52
|
* The event handler that is called when the active cell changes
|
53
53
|
*/
|
54
54
|
onActiveCellChange?: () => void;
|
55
|
+
/**
|
56
|
+
* Check if user is using custom component
|
57
|
+
*/
|
58
|
+
hasCustomRowHeader?: boolean;
|
59
|
+
/**
|
60
|
+
* Component next to numbering rows
|
61
|
+
*/
|
62
|
+
renderRowHeader?: (index: number) => any[];
|
63
|
+
/**
|
64
|
+
* Component next to numbering rows
|
65
|
+
*/
|
66
|
+
renderRowHeaderDirection?: string;
|
55
67
|
/**
|
56
68
|
* The event handler that is called to set the rows for the empty spreadsheet
|
57
69
|
*/
|
@@ -44,6 +44,9 @@ var DataSpreadsheetBody = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
44
44
|
headerGroups = _ref.headerGroups,
|
45
45
|
id = _ref.id,
|
46
46
|
onDataUpdate = _ref.onDataUpdate,
|
47
|
+
renderRowHeader = _ref.renderRowHeader,
|
48
|
+
renderRowHeaderDirection = _ref.renderRowHeaderDirection,
|
49
|
+
hasCustomRowHeader = _ref.hasCustomRowHeader,
|
47
50
|
prepareRow = _ref.prepareRow,
|
48
51
|
rows = _ref.rows,
|
49
52
|
selectionAreaData = _ref.selectionAreaData,
|
@@ -147,7 +150,7 @@ var DataSpreadsheetBody = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
147
150
|
return;
|
148
151
|
});
|
149
152
|
}
|
150
|
-
}, [selectionAreas, setSelectionAreas, defaultColumn, onSelectionAreaChange, setSelectionAreaData, ref, activeCellCoordinates, setActiveCellInsideSelectionArea, visibleColumns]);
|
153
|
+
}, [selectionAreas, setSelectionAreas, defaultColumn, onSelectionAreaChange, setSelectionAreaData, ref, activeCellCoordinates, setActiveCellInsideSelectionArea, visibleColumns, hasCustomRowHeader]);
|
151
154
|
var populateSelectionAreaCellData = function populateSelectionAreaCellData(_ref2) {
|
152
155
|
var rowStart = _ref2.rowStart,
|
153
156
|
rowEnd = _ref2.rowEnd,
|
@@ -221,7 +224,7 @@ var DataSpreadsheetBody = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
221
224
|
});
|
222
225
|
}
|
223
226
|
}
|
224
|
-
}, [defaultColumn, ref, activeCellCoordinates, previousState === null || previousState === void 0 ? void 0 : previousState.rowHeight, selectionAreas, setActiveCellInsideSelectionArea, setSelectionAreas, visibleColumns]);
|
227
|
+
}, [defaultColumn, ref, activeCellCoordinates, previousState === null || previousState === void 0 ? void 0 : previousState.rowHeight, selectionAreas, setActiveCellInsideSelectionArea, setSelectionAreas, visibleColumns, hasCustomRowHeader]);
|
225
228
|
|
226
229
|
//this method will check for any duplicate selection area and remove.
|
227
230
|
//same selections are those have the same height, width, top, left styles. These inline styles are being set in createCellSelection util.
|
@@ -347,11 +350,12 @@ var DataSpreadsheetBody = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
347
350
|
"data-column-index": "header",
|
348
351
|
type: "button",
|
349
352
|
onClick: handleRowHeaderClickEvent(index),
|
350
|
-
className: cx__default["default"]("".concat(blockClass, "__td"), "".concat(blockClass, "__td-th"), "".concat(blockClass, "--interactive-cell-element"), _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "".concat(blockClass, "__td-th--active-header"), (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row) === index || checkActiveHeaderCell.checkActiveHeaderCell(index, selectionAreas, 'row')), "".concat(blockClass, "__td-th--selected-header"), checkSelectedHeaderCell.checkSelectedHeaderCell(index, selectionAreas, 'row', columns))),
|
353
|
+
className: cx__default["default"]("".concat(blockClass, "__td"), "".concat(blockClass, "__td-th"), "".concat(blockClass, "--interactive-cell-element"), _rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty(_rollupPluginBabelHelpers.defineProperty({}, "".concat(blockClass, "__td_custom"), hasCustomRowHeader ? true : false), "".concat(blockClass, "__td-th--active-header"), !hasCustomRowHeader && ((activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row) === index || checkActiveHeaderCell.checkActiveHeaderCell(index, selectionAreas, 'row'))), "".concat(blockClass, "__td-th--selected-header"), !hasCustomRowHeader && checkSelectedHeaderCell.checkSelectedHeaderCell(index, selectionAreas, 'row', columns))),
|
351
354
|
style: {
|
352
|
-
width: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth
|
355
|
+
width: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth,
|
356
|
+
flexDirection: hasCustomRowHeader ? renderRowHeaderDirection === 'Left' ? 'row-reverse' : row : undefined
|
353
357
|
}
|
354
|
-
}, index + 1)), row.cells.map(function (cell, index) {
|
358
|
+
}, index + 1, hasCustomRowHeader && typeof renderRowHeader === 'function' && renderRowHeader(index))), row.cells.map(function (cell, index) {
|
355
359
|
var _cell$column;
|
356
360
|
var cellProps = propsHelper.prepareProps(cell.getCellProps(), 'key');
|
357
361
|
return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
|
@@ -376,7 +380,7 @@ var DataSpreadsheetBody = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
376
380
|
}, cell.render('Cell')));
|
377
381
|
}));
|
378
382
|
}
|
379
|
-
}, [prepareRow, rows, activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row, selectionAreas, handleRowHeaderClickEvent, handleBodyCellClickEvent, handleBodyCellHoverEvent, defaultColumn, columns]);
|
383
|
+
}, [prepareRow, renderRowHeader, renderRowHeaderDirection, rows, hasCustomRowHeader, activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row, selectionAreas, handleRowHeaderClickEvent, handleBodyCellClickEvent, handleBodyCellHoverEvent, defaultColumn, columns]);
|
380
384
|
var spreadsheetBodyRef = React.useRef();
|
381
385
|
return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
|
382
386
|
ref: spreadsheetBodyRef,
|
@@ -442,6 +446,10 @@ DataSpreadsheetBody.propTypes = {
|
|
442
446
|
*/
|
443
447
|
/**@ts-ignore */
|
444
448
|
getTableBodyProps: index["default"].func,
|
449
|
+
/**
|
450
|
+
* Check if spreadsheet is using custom row header component attached
|
451
|
+
*/
|
452
|
+
hasCustomRowHeader: index["default"].bool,
|
445
453
|
/**
|
446
454
|
* Headers provided from useTable hook
|
447
455
|
*/
|
@@ -466,6 +474,14 @@ DataSpreadsheetBody.propTypes = {
|
|
466
474
|
* Prepare row function from react-table
|
467
475
|
*/
|
468
476
|
prepareRow: index["default"].func,
|
477
|
+
/**
|
478
|
+
* Component next to numbering rows
|
479
|
+
*/
|
480
|
+
renderRowHeader: index["default"].func,
|
481
|
+
/**
|
482
|
+
* Component next to numbering rows
|
483
|
+
*/
|
484
|
+
renderRowHeaderDirection: index["default"].string,
|
469
485
|
/**
|
470
486
|
* All of the spreadsheet row data
|
471
487
|
*/
|
@@ -184,6 +184,9 @@ var DataSpreadsheetHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
184
184
|
"data-row-index": "header",
|
185
185
|
"data-column-index": "header",
|
186
186
|
type: "button",
|
187
|
+
style: {
|
188
|
+
width: defaultColumn === null || defaultColumn === void 0 ? void 0 : defaultColumn.rowHeaderWidth
|
189
|
+
},
|
187
190
|
tabIndex: -1,
|
188
191
|
"aria-label": selectAllAriaLabel,
|
189
192
|
onClick: handleSelectAllClick,
|
@@ -5,7 +5,11 @@
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
6
6
|
*/
|
7
7
|
import React, { ReactNode, PropsWithChildren } from 'react';
|
8
|
-
export
|
8
|
+
export type FormContextType = {
|
9
|
+
currentForm: number;
|
10
|
+
setFormTitle: () => void;
|
11
|
+
};
|
12
|
+
export declare const FormContext: React.Context<FormContextType | null>;
|
9
13
|
export declare const FormNumberContext: React.Context<number>;
|
10
14
|
interface EditTearsheetProps extends PropsWithChildren {
|
11
15
|
/**
|
@@ -27,7 +27,6 @@ var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
|
|
27
27
|
var _excluded = ["cancelButtonText", "children", "className", "description", "influencerWidth", "label", "onClose", "open", "submitButtonText", "title", "verticalPosition", "onRequestSubmit", "onFormChange", "sideNavAriaLabel"];
|
28
28
|
var componentName = 'EditTearsheet';
|
29
29
|
var blockClass = "".concat(settings.pkg.prefix, "--tearsheet-edit");
|
30
|
-
|
31
30
|
// This is a general context for the forms container
|
32
31
|
// containing information about the state of the container
|
33
32
|
// and providing some callback methods for forms to use
|
@@ -1,2 +1,45 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
/**
|
2
|
+
* Copyright IBM Corp. 2022, 2022
|
3
|
+
*
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
6
|
+
*/
|
7
|
+
import React, { ReactNode } from 'react';
|
8
|
+
interface EditTearsheetFormBaseProps {
|
9
|
+
/**
|
10
|
+
* Content that shows in the tearsheet form
|
11
|
+
*/
|
12
|
+
children?: ReactNode;
|
13
|
+
/**
|
14
|
+
* Sets an optional className to be added to the tearsheet form
|
15
|
+
*/
|
16
|
+
className?: string;
|
17
|
+
/**
|
18
|
+
* Sets an optional description on the form component
|
19
|
+
*/
|
20
|
+
description?: string;
|
21
|
+
/**
|
22
|
+
* This optional prop will render your form content inside of a fieldset html element
|
23
|
+
* and is defaulted to true.
|
24
|
+
* You can set this prop to `false` if you have multiple fieldset elements or want to control the children of your Full Page's form content.
|
25
|
+
*/
|
26
|
+
hasFieldset?: boolean;
|
27
|
+
/**
|
28
|
+
* Sets an optional subtitle on the form component
|
29
|
+
*/
|
30
|
+
subtitle?: string;
|
31
|
+
/**
|
32
|
+
* Sets the title text for a tearsheet form
|
33
|
+
*/
|
34
|
+
title: ReactNode;
|
35
|
+
}
|
36
|
+
type EditTearsheetFormFieldsetTypes = {
|
37
|
+
hasFieldset?: false;
|
38
|
+
fieldsetLegendText: string;
|
39
|
+
} | {
|
40
|
+
hasFieldset: true;
|
41
|
+
fieldsetLegendText: string;
|
42
|
+
};
|
43
|
+
type EditTearsheetFormProps = EditTearsheetFormBaseProps & EditTearsheetFormFieldsetTypes;
|
44
|
+
export declare let EditTearsheetForm: React.ForwardRefExoticComponent<EditTearsheetFormProps & React.RefAttributes<HTMLDivElement>>;
|
45
|
+
export {};
|
@@ -91,6 +91,7 @@ exports.EditTearsheetForm.propTypes = {
|
|
91
91
|
* You can set the `hasFieldset` prop to false if you have multiple fieldset elements or want to control the children of your Full Page's form content.
|
92
92
|
* Otherwise, use CSS to hide/remove this label text.
|
93
93
|
*/
|
94
|
+
/**@ts-ignore */
|
94
95
|
fieldsetLegendText: index["default"].string.isRequired.if(function (_ref2) {
|
95
96
|
var hasFieldset = _ref2.hasFieldset;
|
96
97
|
return !!hasFieldset;
|
@@ -100,10 +101,12 @@ exports.EditTearsheetForm.propTypes = {
|
|
100
101
|
* and is defaulted to true.
|
101
102
|
* You can set this prop to `false` if you have multiple fieldset elements or want to control the children of your Full Page's form content.
|
102
103
|
*/
|
104
|
+
/**@ts-ignore*/
|
103
105
|
hasFieldset: index["default"].bool,
|
104
106
|
/**
|
105
107
|
* Sets an optional subtitle on the form component
|
106
108
|
*/
|
109
|
+
/**@ts-ignore*/
|
107
110
|
subtitle: index["default"].string,
|
108
111
|
/**
|
109
112
|
* Sets the title text for a tearsheet form
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@carbon/ibm-products",
|
3
3
|
"description": "Carbon for IBM Products",
|
4
|
-
"version": "2.43.2-canary.
|
4
|
+
"version": "2.43.2-canary.33+a1c231d05",
|
5
5
|
"license": "Apache-2.0",
|
6
6
|
"main": "lib/index.js",
|
7
7
|
"module": "es/index.js",
|
@@ -119,5 +119,5 @@
|
|
119
119
|
"react": "^16.8.6 || ^17.0.1 || ^18.2.0",
|
120
120
|
"react-dom": "^16.8.6 || ^17.0.1 || ^18.2.0"
|
121
121
|
},
|
122
|
-
"gitHead": "
|
122
|
+
"gitHead": "a1c231d0579e7fcd7cd3941b075dddfbe19acbc9"
|
123
123
|
}
|
@@ -201,6 +201,13 @@ $header-cell-background: $layer-accent-01;
|
|
201
201
|
outline: 0;
|
202
202
|
}
|
203
203
|
}
|
204
|
+
|
205
|
+
.#{$block-class}__td-th.#{$block-class}__td_custom {
|
206
|
+
align-items: center;
|
207
|
+
justify-content: center;
|
208
|
+
gap: $spacing-03;
|
209
|
+
}
|
210
|
+
|
204
211
|
.#{$block-class}__selection-area--element {
|
205
212
|
position: absolute;
|
206
213
|
z-index: 2;
|