@coreui/react 4.2.2 → 4.3.1

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 (34) hide show
  1. package/README.md +113 -9
  2. package/dist/components/button/CButton.d.ts +1 -1
  3. package/dist/components/dropdown/CDropdownItem.d.ts +1 -1
  4. package/dist/components/form/CFormTextarea.d.ts +2 -2
  5. package/dist/components/link/CLink.d.ts +1 -1
  6. package/dist/components/list-group/CListGroupItem.d.ts +1 -1
  7. package/dist/components/nav/CNavLink.d.ts +1 -1
  8. package/dist/components/table/CTable.d.ts +83 -4
  9. package/dist/components/table/CTableDataCell.d.ts +8 -4
  10. package/dist/components/table/CTableHeaderCell.d.ts +2 -2
  11. package/dist/components/table/CTableResponsiveWrapper.d.ts +9 -0
  12. package/dist/components/table/CTableRow.d.ts +1 -1
  13. package/dist/index.es.js +139 -72
  14. package/dist/index.es.js.map +1 -1
  15. package/dist/index.js +139 -72
  16. package/dist/index.js.map +1 -1
  17. package/package.json +12 -12
  18. package/src/components/alert/__tests__/__snapshots__/CAlert.spec.tsx.snap +1 -0
  19. package/src/components/button/__tests__/__snapshots__/CButtonClose.spec.tsx.snap +2 -0
  20. package/src/components/close-button/__tests__/__snapshots__/CCloseButton.spec.tsx.snap +2 -0
  21. package/src/components/form/CFormTextarea.tsx +2 -2
  22. package/src/components/form/__tests__/CFormTextarea.spec.tsx +1 -0
  23. package/src/components/form/__tests__/__snapshots__/CFormTextarea.spec.tsx.snap +1 -0
  24. package/src/components/modal/__tests__/__snapshots__/CModalHeader.spec.tsx.snap +2 -0
  25. package/src/components/popover/CPopover.tsx +5 -0
  26. package/src/components/table/CTable.tsx +184 -18
  27. package/src/components/table/CTableDataCell.tsx +13 -6
  28. package/src/components/table/CTableHeaderCell.tsx +2 -2
  29. package/src/components/table/CTableResponsiveWrapper.tsx +39 -0
  30. package/src/components/table/CTableRow.tsx +1 -1
  31. package/src/components/table/__tests__/CTable.spec.tsx +45 -0
  32. package/src/components/table/__tests__/__snapshots__/CTable.spec.tsx.snap +86 -2
  33. package/src/components/toast/CToast.tsx +1 -1
  34. package/src/components/toast/__tests__/__snapshots__/CToast.spec.tsx.snap +0 -13
package/dist/index.es.js CHANGED
@@ -1334,7 +1334,7 @@ CAccordionItem.propTypes = {
1334
1334
  CAccordionItem.displayName = 'CAccordionItem';
1335
1335
 
1336
1336
  function _extends() {
1337
- _extends = Object.assign || function (target) {
1337
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
1338
1338
  for (var i = 1; i < arguments.length; i++) {
1339
1339
  var source = arguments[i];
1340
1340
 
@@ -1347,7 +1347,6 @@ function _extends() {
1347
1347
 
1348
1348
  return target;
1349
1349
  };
1350
-
1351
1350
  return _extends.apply(this, arguments);
1352
1351
  }
1353
1352
 
@@ -1367,11 +1366,10 @@ function _objectWithoutPropertiesLoose(source, excluded) {
1367
1366
  }
1368
1367
 
1369
1368
  function _setPrototypeOf(o, p) {
1370
- _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
1369
+ _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
1371
1370
  o.__proto__ = p;
1372
1371
  return o;
1373
1372
  };
1374
-
1375
1373
  return _setPrototypeOf(o, p);
1376
1374
  }
1377
1375
 
@@ -1448,6 +1446,10 @@ var classNamesShape = process.env.NODE_ENV !== 'production' ? propTypes.exports.
1448
1446
 
1449
1447
  var TransitionGroupContext = React__default.createContext(null);
1450
1448
 
1449
+ var forceReflow = function forceReflow(node) {
1450
+ return node.scrollTop;
1451
+ };
1452
+
1451
1453
  var UNMOUNTED = 'unmounted';
1452
1454
  var EXITED = 'exited';
1453
1455
  var ENTERING = 'entering';
@@ -1667,6 +1669,14 @@ var Transition = /*#__PURE__*/function (_React$Component) {
1667
1669
  this.cancelNextCallback();
1668
1670
 
1669
1671
  if (nextStatus === ENTERING) {
1672
+ if (this.props.unmountOnExit || this.props.mountOnEnter) {
1673
+ var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM__default.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749
1674
+ // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.
1675
+ // To make the animation happen, we have to separate each rendering and avoid being processed as batched.
1676
+
1677
+ if (node) forceReflow(node);
1678
+ }
1679
+
1670
1680
  this.performEnter(mounting);
1671
1681
  } else {
1672
1682
  this.performExit();
@@ -2275,8 +2285,7 @@ var CSSTransition = /*#__PURE__*/function (_React$Component) {
2275
2285
 
2276
2286
 
2277
2287
  if (phase === 'active') {
2278
- /* eslint-disable no-unused-expressions */
2279
- node && node.scrollTop;
2288
+ if (node) forceReflow(node);
2280
2289
  }
2281
2290
 
2282
2291
  if (className) {
@@ -7917,6 +7926,9 @@ var CPopover = function (_a) {
7917
7926
  ],
7918
7927
  placement: placement,
7919
7928
  }), styles = _j.styles, attributes = _j.attributes;
7929
+ useEffect(function () {
7930
+ setVisible(visible);
7931
+ }, [visible]);
7920
7932
  var getTransitionClass = function (state) {
7921
7933
  return state === 'entering'
7922
7934
  ? 'fade'
@@ -8133,65 +8145,50 @@ CSpinner.propTypes = {
8133
8145
  };
8134
8146
  CSpinner.displayName = 'CSpinner';
8135
8147
 
8136
- var CTable = forwardRef(function (_a, ref) {
8148
+ var CTableHead = forwardRef(function (_a, ref) {
8137
8149
  var _b;
8138
- var children = _a.children, align = _a.align, borderColor = _a.borderColor, bordered = _a.bordered, borderless = _a.borderless, caption = _a.caption, className = _a.className, color = _a.color, hover = _a.hover, responsive = _a.responsive, small = _a.small, striped = _a.striped, rest = __rest(_a, ["children", "align", "borderColor", "bordered", "borderless", "caption", "className", "color", "hover", "responsive", "small", "striped"]);
8139
- var _className = classNames('table', (_b = {},
8140
- _b["align-".concat(align)] = align,
8141
- _b["caption-".concat(caption)] = caption,
8142
- _b["border-".concat(borderColor)] = borderColor,
8143
- _b['table-bordered'] = bordered,
8144
- _b['table-borderless'] = borderless,
8150
+ var children = _a.children, className = _a.className, color = _a.color, rest = __rest(_a, ["children", "className", "color"]);
8151
+ var _className = classNames((_b = {},
8145
8152
  _b["table-".concat(color)] = color,
8146
- _b['table-hover'] = hover,
8147
- _b['table-sm'] = small,
8148
- _b['table-striped'] = striped,
8149
8153
  _b), className);
8150
- return responsive ? (React__default.createElement("div", { className: typeof responsive === 'boolean' ? 'table-responsive' : "table-responsive-".concat(responsive) },
8151
- React__default.createElement("table", __assign({ className: _className ? _className : undefined }, rest, { ref: ref }), children))) : (React__default.createElement("table", __assign({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
8154
+ return (React__default.createElement("thead", __assign({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
8152
8155
  });
8153
- CTable.propTypes = {
8154
- align: propTypes.exports.oneOf(['bottom', 'middle', 'top']),
8155
- borderColor: propTypes.exports.string,
8156
- bordered: propTypes.exports.bool,
8157
- borderless: propTypes.exports.bool,
8158
- caption: propTypes.exports.oneOf(['top']),
8156
+ CTableHead.propTypes = {
8159
8157
  children: propTypes.exports.node,
8160
8158
  className: propTypes.exports.string,
8161
8159
  color: colorPropType,
8162
- hover: propTypes.exports.bool,
8163
- responsive: propTypes.exports.oneOfType([
8164
- propTypes.exports.bool,
8165
- propTypes.exports.oneOf(['sm', 'md', 'lg', 'xl', 'xxl']),
8166
- ]),
8167
- small: propTypes.exports.bool,
8168
- striped: propTypes.exports.bool,
8169
8160
  };
8170
- CTable.displayName = 'CTable';
8161
+ CTableHead.displayName = 'CTableHead';
8171
8162
 
8172
- var CTableBody = forwardRef(function (_a, ref) {
8163
+ var CTableHeaderCell = forwardRef(function (_a, ref) {
8173
8164
  var _b;
8174
8165
  var children = _a.children, className = _a.className, color = _a.color, rest = __rest(_a, ["children", "className", "color"]);
8175
8166
  var _className = classNames((_b = {},
8176
8167
  _b["table-".concat(color)] = color,
8177
8168
  _b), className);
8178
- return (React__default.createElement("tbody", __assign({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
8169
+ return (React__default.createElement("th", __assign({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
8179
8170
  });
8180
- CTableBody.propTypes = {
8171
+ CTableHeaderCell.propTypes = {
8181
8172
  children: propTypes.exports.node,
8182
8173
  className: propTypes.exports.string,
8183
8174
  color: colorPropType,
8184
8175
  };
8185
- CTableBody.displayName = 'CTableBody';
8176
+ CTableHeaderCell.displayName = 'CTableHeaderCell';
8186
8177
 
8187
- var CTableCaption = forwardRef(function (_a, ref) {
8188
- var children = _a.children, props = __rest(_a, ["children"]);
8189
- return (React__default.createElement("caption", __assign({}, props, { ref: ref }), children));
8178
+ var CTableBody = forwardRef(function (_a, ref) {
8179
+ var _b;
8180
+ var children = _a.children, className = _a.className, color = _a.color, rest = __rest(_a, ["children", "className", "color"]);
8181
+ var _className = classNames((_b = {},
8182
+ _b["table-".concat(color)] = color,
8183
+ _b), className);
8184
+ return (React__default.createElement("tbody", __assign({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
8190
8185
  });
8191
- CTableCaption.propTypes = {
8186
+ CTableBody.propTypes = {
8192
8187
  children: propTypes.exports.node,
8188
+ className: propTypes.exports.string,
8189
+ color: colorPropType,
8193
8190
  };
8194
- CTableCaption.displayName = 'CTableCaption';
8191
+ CTableBody.displayName = 'CTableBody';
8195
8192
 
8196
8193
  var CTableDataCell = forwardRef(function (_a, ref) {
8197
8194
  var _b;
@@ -8201,7 +8198,8 @@ var CTableDataCell = forwardRef(function (_a, ref) {
8201
8198
  _b['table-active'] = active,
8202
8199
  _b["table-".concat(color)] = color,
8203
8200
  _b), className);
8204
- return (React__default.createElement("td", __assign({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
8201
+ var Component = rest.scope ? 'th' : 'td';
8202
+ return (React__default.createElement(Component, __assign({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
8205
8203
  });
8206
8204
  CTableDataCell.propTypes = {
8207
8205
  active: propTypes.exports.bool,
@@ -8212,69 +8210,138 @@ CTableDataCell.propTypes = {
8212
8210
  };
8213
8211
  CTableDataCell.displayName = 'CTableDataCell';
8214
8212
 
8215
- var CTableFoot = forwardRef(function (_a, ref) {
8213
+ var CTableRow = forwardRef(function (_a, ref) {
8216
8214
  var _b;
8217
- var children = _a.children, className = _a.className, color = _a.color, rest = __rest(_a, ["children", "className", "color"]);
8215
+ var children = _a.children, active = _a.active, align = _a.align, className = _a.className, color = _a.color, rest = __rest(_a, ["children", "active", "align", "className", "color"]);
8218
8216
  var _className = classNames((_b = {},
8217
+ _b["align-".concat(align)] = align,
8218
+ _b['table-active'] = active,
8219
8219
  _b["table-".concat(color)] = color,
8220
8220
  _b), className);
8221
- return (React__default.createElement("tfoot", __assign({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
8221
+ return (React__default.createElement("tr", __assign({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
8222
8222
  });
8223
- CTableFoot.propTypes = {
8223
+ CTableRow.propTypes = {
8224
+ active: propTypes.exports.bool,
8225
+ align: propTypes.exports.oneOf(['bottom', 'middle', 'top']),
8224
8226
  children: propTypes.exports.node,
8225
8227
  className: propTypes.exports.string,
8226
8228
  color: colorPropType,
8227
8229
  };
8228
- CTableFoot.displayName = 'CTableFoot';
8230
+ CTableRow.displayName = 'CTableRow';
8229
8231
 
8230
- var CTableHead = forwardRef(function (_a, ref) {
8232
+ var CTableFoot = forwardRef(function (_a, ref) {
8231
8233
  var _b;
8232
8234
  var children = _a.children, className = _a.className, color = _a.color, rest = __rest(_a, ["children", "className", "color"]);
8233
8235
  var _className = classNames((_b = {},
8234
8236
  _b["table-".concat(color)] = color,
8235
8237
  _b), className);
8236
- return (React__default.createElement("thead", __assign({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
8238
+ return (React__default.createElement("tfoot", __assign({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
8237
8239
  });
8238
- CTableHead.propTypes = {
8240
+ CTableFoot.propTypes = {
8239
8241
  children: propTypes.exports.node,
8240
8242
  className: propTypes.exports.string,
8241
8243
  color: colorPropType,
8242
8244
  };
8243
- CTableHead.displayName = 'CTableHead';
8245
+ CTableFoot.displayName = 'CTableFoot';
8244
8246
 
8245
- var CTableHeaderCell = forwardRef(function (_a, ref) {
8246
- var _b;
8247
- var children = _a.children, className = _a.className, color = _a.color, rest = __rest(_a, ["children", "className", "color"]);
8248
- var _className = classNames((_b = {},
8249
- _b["table-".concat(color)] = color,
8250
- _b), className);
8251
- return (React__default.createElement("th", __assign({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
8247
+ var CTableCaption = forwardRef(function (_a, ref) {
8248
+ var children = _a.children, props = __rest(_a, ["children"]);
8249
+ return (React__default.createElement("caption", __assign({}, props, { ref: ref }), children));
8252
8250
  });
8253
- CTableHeaderCell.propTypes = {
8251
+ CTableCaption.propTypes = {
8254
8252
  children: propTypes.exports.node,
8255
- className: propTypes.exports.string,
8256
- color: colorPropType,
8257
8253
  };
8258
- CTableHeaderCell.displayName = 'CTableHeaderCell';
8254
+ CTableCaption.displayName = 'CTableCaption';
8259
8255
 
8260
- var CTableRow = forwardRef(function (_a, ref) {
8256
+ var CTableResponsiveWrapper = function (_a) {
8257
+ var children = _a.children, responsive = _a.responsive, rest = __rest(_a, ["children", "responsive"]);
8258
+ return responsive ? (React__default.createElement("div", __assign({ className: typeof responsive === 'boolean' ? 'table-responsive' : "table-responsive-".concat(responsive) }, rest), children)) : (children);
8259
+ };
8260
+ CTableResponsiveWrapper.propTypes = {
8261
+ children: propTypes.exports.any,
8262
+ responsive: propTypes.exports.oneOfType([
8263
+ propTypes.exports.bool,
8264
+ propTypes.exports.oneOf(['sm', 'md', 'lg', 'xl', 'xxl']),
8265
+ ]),
8266
+ };
8267
+ CTableResponsiveWrapper.displayName = 'CTableResponsiveWrapper';
8268
+
8269
+ var CTable = forwardRef(function (_a, ref) {
8261
8270
  var _b;
8262
- var children = _a.children, active = _a.active, align = _a.align, className = _a.className, color = _a.color, rest = __rest(_a, ["children", "active", "align", "className", "color"]);
8263
- var _className = classNames((_b = {},
8271
+ var children = _a.children, align = _a.align, borderColor = _a.borderColor, bordered = _a.bordered, borderless = _a.borderless, caption = _a.caption, captionTop = _a.captionTop, className = _a.className, color = _a.color, columns = _a.columns, footer = _a.footer, hover = _a.hover, _c = _a.items, items = _c === void 0 ? [] : _c, responsive = _a.responsive, small = _a.small, striped = _a.striped, stripedColumns = _a.stripedColumns, tableFootProps = _a.tableFootProps, tableHeadProps = _a.tableHeadProps, rest = __rest(_a, ["children", "align", "borderColor", "bordered", "borderless", "caption", "captionTop", "className", "color", "columns", "footer", "hover", "items", "responsive", "small", "striped", "stripedColumns", "tableFootProps", "tableHeadProps"]);
8272
+ var _className = classNames('table', (_b = {},
8264
8273
  _b["align-".concat(align)] = align,
8265
- _b['table-active'] = active,
8274
+ _b["border-".concat(borderColor)] = borderColor,
8275
+ _b["caption-top"] = captionTop || caption === 'top',
8276
+ _b['table-bordered'] = bordered,
8277
+ _b['table-borderless'] = borderless,
8266
8278
  _b["table-".concat(color)] = color,
8279
+ _b['table-hover'] = hover,
8280
+ _b['table-sm'] = small,
8281
+ _b['table-striped'] = striped,
8282
+ _b['table-striped-columns'] = stripedColumns,
8267
8283
  _b), className);
8268
- return (React__default.createElement("tr", __assign({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
8284
+ var rawColumnNames = columns
8285
+ ? columns.map(function (column) {
8286
+ if (typeof column === 'object')
8287
+ return column.key;
8288
+ else
8289
+ return column;
8290
+ })
8291
+ : Object.keys(items[0] || {}).filter(function (el) { return el.charAt(0) !== '_'; });
8292
+ var pretifyName = function (name) {
8293
+ return name
8294
+ .replace(/[-_.]/g, ' ')
8295
+ .replace(/ +/g, ' ')
8296
+ .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
8297
+ .split(' ')
8298
+ .map(function (word) { return word.charAt(0).toUpperCase() + word.slice(1); })
8299
+ .join(' ');
8300
+ };
8301
+ var label = function (column) {
8302
+ return typeof column === 'object'
8303
+ ? column.label !== undefined
8304
+ ? column.label
8305
+ : pretifyName(column.key)
8306
+ : pretifyName(column);
8307
+ };
8308
+ return (React__default.createElement(CTableResponsiveWrapper, { responsive: responsive },
8309
+ React__default.createElement("table", __assign({ className: _className }, rest, { ref: ref }),
8310
+ ((caption && caption !== 'top') || captionTop) && (React__default.createElement(CTableCaption, null, caption || captionTop)),
8311
+ columns && (React__default.createElement(CTableHead, __assign({}, tableHeadProps),
8312
+ React__default.createElement(CTableRow, null, columns.map(function (column, index) { return (React__default.createElement(CTableHeaderCell, __assign({}, (column._props && __assign({}, column._props)), (column._style && { style: __assign({}, column._style) }), { key: index }), label(column))); })))),
8313
+ items && (React__default.createElement(CTableBody, null, items.map(function (item, index) { return (React__default.createElement(CTableRow, __assign({}, (item._props && __assign({}, item._props)), { key: index }), rawColumnNames.map(function (colName, index) {
8314
+ return item[colName] ? (React__default.createElement(CTableDataCell, __assign({}, (item._cellProps && __assign(__assign({}, (item._cellProps['all'] && __assign({}, item._cellProps['all']))), (item._cellProps[colName] && __assign({}, item._cellProps[colName])))), { key: index }), item[colName])) : null;
8315
+ }))); }))),
8316
+ children,
8317
+ footer && (React__default.createElement(CTableFoot, __assign({}, tableFootProps),
8318
+ React__default.createElement(CTableRow, null, footer.map(function (item, index) { return (React__default.createElement(CTableDataCell, __assign({}, (item._props && __assign({}, item._props)), { key: index }), typeof item === 'object' ? item.label : item)); })))))));
8269
8319
  });
8270
- CTableRow.propTypes = {
8271
- active: propTypes.exports.bool,
8320
+ CTable.propTypes = {
8272
8321
  align: propTypes.exports.oneOf(['bottom', 'middle', 'top']),
8322
+ borderColor: propTypes.exports.string,
8323
+ bordered: propTypes.exports.bool,
8324
+ borderless: propTypes.exports.bool,
8325
+ caption: propTypes.exports.oneOfType([propTypes.exports.string, propTypes.exports.oneOf(['top'])]),
8326
+ captionTop: propTypes.exports.string,
8273
8327
  children: propTypes.exports.node,
8274
8328
  className: propTypes.exports.string,
8275
8329
  color: colorPropType,
8330
+ columns: propTypes.exports.array,
8331
+ footer: propTypes.exports.array,
8332
+ hover: propTypes.exports.bool,
8333
+ items: propTypes.exports.array,
8334
+ responsive: propTypes.exports.oneOfType([
8335
+ propTypes.exports.bool,
8336
+ propTypes.exports.oneOf(['sm', 'md', 'lg', 'xl', 'xxl']),
8337
+ ]),
8338
+ small: propTypes.exports.bool,
8339
+ striped: propTypes.exports.bool,
8340
+ stripedColumns: propTypes.exports.bool,
8341
+ tableFootProps: propTypes.exports.shape(__assign({}, CTableFoot.propTypes)),
8342
+ tableHeadProps: propTypes.exports.shape(__assign({}, CTableHead.propTypes)),
8276
8343
  };
8277
- CTableRow.displayName = 'CTableRow';
8344
+ CTable.displayName = 'CTable';
8278
8345
 
8279
8346
  var CTabContent = forwardRef(function (_a, ref) {
8280
8347
  var children = _a.children, className = _a.className, rest = __rest(_a, ["children", "className"]);
@@ -8357,7 +8424,7 @@ var CToast = forwardRef(function (_a, ref) {
8357
8424
  return (React__default.createElement(Transition, { in: _visible, nodeRef: toastRef, onEnter: function () { return onShow && onShow(index ? index : null); }, onExited: function () { return onClose && onClose(index ? index : null); }, timeout: 250, unmountOnExit: true }, function (state) {
8358
8425
  var transitionClass = getTransitionClass(state);
8359
8426
  return (React__default.createElement(CToastContext.Provider, { value: contextValues },
8360
- React__default.createElement("div", __assign({ className: classNames(_className, transitionClass), "aria-live": "assertive", "aria-atomic": "true", role: "alert", onMouseEnter: function () { return clearTimeout(timeout.current); }, onMouseLeave: function () { return _autohide; } }, rest, { key: key, ref: forkedRef }), children)));
8427
+ React__default.createElement("div", __assign({ className: classNames(_className, transitionClass), "aria-live": "assertive", "aria-atomic": "true", role: "alert", onMouseEnter: function () { return clearTimeout(timeout.current); }, onMouseLeave: function () { return _autohide(); } }, rest, { key: key, ref: forkedRef }), children)));
8361
8428
  }));
8362
8429
  });
8363
8430
  CToast.propTypes = {