@coreui/react-pro 4.8.0 → 4.9.0-next.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 (166) hide show
  1. package/README.md +1 -1
  2. package/dist/components/alert/CAlert.d.ts +1 -1
  3. package/dist/components/avatar/CAvatar.d.ts +1 -1
  4. package/dist/components/badge/CBadge.d.ts +1 -1
  5. package/dist/components/button/CButton.d.ts +1 -1
  6. package/dist/components/calendar/index.d.ts +2 -0
  7. package/dist/components/calendar/utils.d.ts +22 -0
  8. package/dist/components/callout/CCallout.d.ts +1 -1
  9. package/dist/components/card/CCard.d.ts +1 -1
  10. package/dist/components/date-picker/CDatePicker.d.ts +1 -1
  11. package/dist/components/date-range-picker/CDateRangePicker.d.ts +3 -3
  12. package/dist/components/date-range-picker/utils.d.ts +1 -0
  13. package/dist/components/dropdown/CDropdown.d.ts +1 -1
  14. package/dist/components/dropdown/CDropdownToggle.d.ts +1 -1
  15. package/dist/components/element-cover/CElementCover.d.ts +0 -4
  16. package/dist/components/element-cover/index.d.ts +2 -0
  17. package/dist/components/form/CFormCheck.d.ts +1 -1
  18. package/dist/components/index.d.ts +1 -0
  19. package/dist/components/list-group/CListGroupItem.d.ts +4 -5
  20. package/dist/components/multi-select/CMultiSelect.d.ts +1 -13
  21. package/dist/components/multi-select/CMultiSelectNativeSelect.d.ts +1 -1
  22. package/dist/components/multi-select/CMultiSelectOptions.d.ts +1 -1
  23. package/dist/components/multi-select/CMultiSelectSelection.d.ts +1 -1
  24. package/dist/components/multi-select/types.d.ts +14 -0
  25. package/dist/components/multi-select/utils.d.ts +6 -0
  26. package/dist/components/navbar/CNavbar.d.ts +1 -1
  27. package/dist/components/offcanvas/COffcanvas.d.ts +7 -1
  28. package/dist/components/picker/CPicker.d.ts +1 -1
  29. package/dist/components/placeholder/CPlaceholder.d.ts +1 -1
  30. package/dist/components/popover/CPopover.d.ts +1 -1
  31. package/dist/components/progress/CProgressBar.d.ts +1 -1
  32. package/dist/components/smart-table/CSmartTableBody.d.ts +6 -5
  33. package/dist/components/smart-table/CSmartTableHead.d.ts +6 -3
  34. package/dist/components/smart-table/CSmartTableInterface.d.ts +38 -59
  35. package/dist/components/smart-table/types.d.ts +53 -0
  36. package/dist/components/smart-table/utils.d.ts +16 -0
  37. package/dist/components/spinner/CSpinner.d.ts +1 -1
  38. package/dist/components/table/CTable.d.ts +2 -18
  39. package/dist/components/table/CTableBody.d.ts +1 -1
  40. package/dist/components/table/CTableDataCell.d.ts +1 -1
  41. package/dist/components/table/CTableFoot.d.ts +1 -1
  42. package/dist/components/table/CTableHead.d.ts +1 -1
  43. package/dist/components/table/CTableHeaderCell.d.ts +1 -1
  44. package/dist/components/table/CTableRow.d.ts +1 -1
  45. package/dist/components/table/types.d.ts +17 -0
  46. package/dist/components/table/utils.d.ts +5 -0
  47. package/dist/components/time-picker/types.d.ts +15 -0
  48. package/dist/components/time-picker/utils.d.ts +23 -0
  49. package/dist/components/toast/CToast.d.ts +1 -1
  50. package/dist/components/toast/CToastClose.d.ts +1 -1
  51. package/dist/components/tooltip/CTooltip.d.ts +1 -1
  52. package/dist/components/virtual-scroller/CVirtualScroller.d.ts +0 -8
  53. package/dist/components/widgets/CWidgetStatsA.d.ts +1 -1
  54. package/dist/components/widgets/CWidgetStatsB.d.ts +1 -1
  55. package/dist/components/widgets/CWidgetStatsC.d.ts +1 -1
  56. package/dist/components/widgets/CWidgetStatsD.d.ts +1 -1
  57. package/dist/components/widgets/CWidgetStatsF.d.ts +1 -1
  58. package/dist/hooks/index.d.ts +3 -0
  59. package/dist/hooks/useForkedRef.d.ts +7 -0
  60. package/dist/hooks/useStateWithCallback.d.ts +2 -0
  61. package/dist/index.es.js +1171 -1109
  62. package/dist/index.es.js.map +1 -1
  63. package/dist/index.js +1171 -1108
  64. package/dist/index.js.map +1 -1
  65. package/dist/props.d.ts +8 -0
  66. package/dist/types.d.ts +7 -0
  67. package/dist/utils/index.d.ts +2 -3
  68. package/dist/utils/isObjectInArray.d.ts +2 -0
  69. package/package.json +11 -11
  70. package/src/components/accordion/CAccordionBody.tsx +1 -0
  71. package/src/components/accordion/CAccordionCollapse.tsx +1 -0
  72. package/src/components/alert/CAlert.tsx +3 -2
  73. package/src/components/avatar/CAvatar.tsx +2 -8
  74. package/src/components/backdrop/CBackdrop.tsx +2 -2
  75. package/src/components/badge/CBadge.tsx +2 -10
  76. package/src/components/button/CButton.tsx +3 -1
  77. package/src/components/calendar/CCalendar.tsx +351 -240
  78. package/src/components/calendar/index.ts +3 -0
  79. package/src/{utils/calendar.ts → components/calendar/utils.ts} +1 -47
  80. package/src/components/callout/CCallout.tsx +2 -1
  81. package/src/components/card/CCard.tsx +2 -1
  82. package/src/components/carousel/CCarousel.tsx +1 -1
  83. package/src/components/carousel/CCarouselItem.tsx +1 -1
  84. package/src/components/collapse/CCollapse.tsx +1 -1
  85. package/src/components/date-picker/CDatePicker.tsx +1 -1
  86. package/src/components/date-range-picker/CDateRangePicker.tsx +4 -4
  87. package/src/components/date-range-picker/utils.ts +49 -0
  88. package/src/components/dropdown/CDropdown.tsx +3 -2
  89. package/src/components/dropdown/CDropdownItem.tsx +1 -2
  90. package/src/components/dropdown/CDropdownMenu.tsx +2 -1
  91. package/src/components/dropdown/CDropdownToggle.tsx +5 -4
  92. package/src/components/element-cover/CElementCover.tsx +16 -22
  93. package/src/components/element-cover/index.ts +3 -0
  94. package/src/components/form/CFormCheck.tsx +3 -3
  95. package/src/components/form/CFormControlValidation.tsx +0 -1
  96. package/src/components/form/CFormControlWrapper.tsx +0 -1
  97. package/src/components/form/CFormInput.tsx +8 -4
  98. package/src/components/form/CFormRange.tsx +1 -2
  99. package/src/components/form/CFormSelect.tsx +1 -2
  100. package/src/components/form/CFormTextarea.tsx +1 -2
  101. package/src/components/index.ts +1 -0
  102. package/src/components/list-group/CListGroupItem.tsx +8 -8
  103. package/src/components/list-group/CListGroupItem.tsx~HEAD +3 -1
  104. package/src/components/modal/CModal.tsx +2 -2
  105. package/src/components/modal/CModalHeader.tsx +3 -2
  106. package/src/components/multi-select/CMultiSelect.tsx +15 -74
  107. package/src/components/multi-select/CMultiSelectNativeSelect.tsx +1 -1
  108. package/src/components/multi-select/CMultiSelectOptions.tsx +2 -2
  109. package/src/components/multi-select/CMultiSelectSelection.tsx +1 -1
  110. package/src/components/multi-select/types.ts +15 -0
  111. package/src/components/multi-select/utils.ts +92 -0
  112. package/src/components/nav/CNavItem.tsx +1 -0
  113. package/src/components/nav/CNavLink.tsx +4 -3
  114. package/src/components/navbar/CNavbar.tsx +2 -1
  115. package/src/components/offcanvas/COffcanvas.tsx +38 -19
  116. package/src/components/picker/CPicker.tsx +1 -1
  117. package/src/components/placeholder/CPlaceholder.tsx +2 -1
  118. package/src/components/popover/CPopover.tsx +2 -1
  119. package/src/components/progress/CProgress.tsx +1 -0
  120. package/src/components/progress/CProgressBar.tsx +2 -1
  121. package/src/components/sidebar/CSidebar.tsx +3 -2
  122. package/src/components/smart-table/CSmartTable.tsx +263 -257
  123. package/src/components/smart-table/CSmartTableBody.tsx +98 -107
  124. package/src/components/smart-table/CSmartTableCleaner.tsx +1 -1
  125. package/src/components/smart-table/CSmartTableFilter.tsx +1 -3
  126. package/src/components/smart-table/CSmartTableHead.tsx +56 -103
  127. package/src/components/smart-table/CSmartTableInterface.tsx +49 -71
  128. package/src/components/smart-table/CSmartTableItemsPerPageSelector.tsx +1 -2
  129. package/src/components/smart-table/types.ts +65 -0
  130. package/src/components/smart-table/utils.ts +199 -0
  131. package/src/components/spinner/CSpinner.tsx +2 -1
  132. package/src/components/table/CTable.tsx +25 -59
  133. package/src/components/table/CTableBody.tsx +2 -1
  134. package/src/components/table/CTableDataCell.tsx +2 -1
  135. package/src/components/table/CTableFoot.tsx +2 -1
  136. package/src/components/table/CTableHead.tsx +2 -1
  137. package/src/components/table/CTableHeaderCell.tsx +2 -1
  138. package/src/components/table/CTableRow.tsx +2 -1
  139. package/src/components/table/types.ts +20 -0
  140. package/src/components/table/utils.ts +29 -0
  141. package/src/components/tabs/CTabPane.tsx +2 -1
  142. package/src/components/time-picker/CTimePicker.tsx +48 -23
  143. package/src/components/time-picker/CTimePickerRollCol.tsx +1 -1
  144. package/src/components/time-picker/types.ts +15 -0
  145. package/src/{utils/time.ts → components/time-picker/utils.ts} +43 -2
  146. package/src/components/toast/CToast.tsx +4 -4
  147. package/src/components/toast/CToastClose.tsx +2 -2
  148. package/src/components/toast/CToaster.tsx +2 -1
  149. package/src/components/tooltip/CTooltip.tsx +3 -2
  150. package/src/components/virtual-scroller/CVirtualScroller.tsx +32 -55
  151. package/src/components/widgets/CWidgetStatsA.tsx +3 -3
  152. package/src/components/widgets/CWidgetStatsB.tsx +4 -4
  153. package/src/components/widgets/CWidgetStatsC.tsx +4 -4
  154. package/src/components/widgets/CWidgetStatsD.tsx +4 -5
  155. package/src/components/widgets/CWidgetStatsE.tsx +1 -2
  156. package/src/components/widgets/CWidgetStatsF.tsx +3 -4
  157. package/src/{components/Types.tsx → props.ts} +1 -68
  158. package/src/types.ts +68 -0
  159. package/src/utils/index.ts +2 -3
  160. package/src/utils/isObjectInArray.ts +14 -0
  161. package/src/components/multi-select/CMultiSelectCleaner.tsx +0 -18
  162. package/src/utils/getNextSibling.ts +0 -18
  163. package/src/utils/getPreviousSibling.ts +0 -18
  164. /package/src/{utils/hooks → hooks}/index.ts +0 -0
  165. /package/src/{utils/hooks → hooks}/useForkedRef.ts +0 -0
  166. /package/src/{utils/hooks → hooks}/useStateWithCallback.ts +0 -0
package/dist/index.es.js CHANGED
@@ -2649,6 +2649,20 @@ CAccordionHeader.propTypes = {
2649
2649
  };
2650
2650
  CAccordionHeader.displayName = 'CAccordionHeader';
2651
2651
 
2652
+ var CCloseButton = forwardRef(function (_a, ref) {
2653
+ var className = _a.className, disabled = _a.disabled, white = _a.white, rest = __rest$1(_a, ["className", "disabled", "white"]);
2654
+ var _className = classNames$1('btn', 'btn-close', {
2655
+ 'btn-close-white': white,
2656
+ }, disabled, className);
2657
+ return (React__default$1.createElement("button", __assign$1({ type: "button", className: _className, "aria-label": "Close", disabled: disabled }, rest, { ref: ref })));
2658
+ });
2659
+ CCloseButton.propTypes = {
2660
+ className: propTypesExports.string,
2661
+ disabled: propTypesExports.bool,
2662
+ white: propTypesExports.bool,
2663
+ };
2664
+ CCloseButton.displayName = 'CCloseButton';
2665
+
2652
2666
  var colorPropType = propTypesExports.oneOfType([
2653
2667
  propTypesExports.oneOf([
2654
2668
  'primary',
@@ -2712,20 +2726,6 @@ var textColorsPropType = propTypesExports.oneOfType([
2712
2726
  ]);
2713
2727
  var triggerPropType = propTypesExports.oneOf(['hover', 'focus', 'click']);
2714
2728
 
2715
- var CCloseButton = forwardRef(function (_a, ref) {
2716
- var className = _a.className, disabled = _a.disabled, white = _a.white, rest = __rest$1(_a, ["className", "disabled", "white"]);
2717
- var _className = classNames$1('btn', 'btn-close', {
2718
- 'btn-close-white': white,
2719
- }, disabled, className);
2720
- return (React__default$1.createElement("button", __assign$1({ type: "button", className: _className, "aria-label": "Close", disabled: disabled }, rest, { ref: ref })));
2721
- });
2722
- CCloseButton.propTypes = {
2723
- className: propTypesExports.string,
2724
- disabled: propTypesExports.bool,
2725
- white: propTypesExports.bool,
2726
- };
2727
- CCloseButton.displayName = 'CCloseButton';
2728
-
2729
2729
  var CAlert = forwardRef(function (_a, ref) {
2730
2730
  var children = _a.children, className = _a.className, _b = _a.color, color = _b === void 0 ? 'primary' : _b, dismissible = _a.dismissible, variant = _a.variant, _c = _a.visible, visible = _c === void 0 ? true : _c, onClose = _a.onClose, rest = __rest$1(_a, ["children", "className", "color", "dismissible", "variant", "visible", "onClose"]);
2731
2731
  var alertRef = useRef(null);
@@ -3090,38 +3090,6 @@ CCardTitle.propTypes = {
3090
3090
  };
3091
3091
  CCardTitle.displayName = 'CCardTitle';
3092
3092
 
3093
- var getNextSibling = function (elem, selector) {
3094
- // Get the next sibling element
3095
- var sibling = elem.nextElementSibling;
3096
- // If there's no selector, return the first sibling
3097
- if (!selector)
3098
- return sibling;
3099
- // If the sibling matches our selector, use it
3100
- // If not, jump to the next sibling and continue the loop
3101
- while (sibling) {
3102
- if (sibling.matches(selector))
3103
- return sibling;
3104
- sibling = sibling.nextElementSibling;
3105
- }
3106
- return;
3107
- };
3108
-
3109
- var getPreviousSibling = function (elem, selector) {
3110
- // Get the next sibling element
3111
- var sibling = elem.previousElementSibling;
3112
- // If there's no selector, return the first sibling
3113
- if (!selector)
3114
- return sibling;
3115
- // If the sibling matches our selector, use it
3116
- // If not, jump to the next sibling and continue the loop
3117
- while (sibling) {
3118
- if (sibling.matches(selector))
3119
- return sibling;
3120
- sibling = sibling.previousElementSibling;
3121
- }
3122
- return;
3123
- };
3124
-
3125
3093
  var isInViewport = function (element) {
3126
3094
  var rect = element.getBoundingClientRect();
3127
3095
  return (Math.floor(rect.top) >= 0 &&
@@ -3130,6 +3098,20 @@ var isInViewport = function (element) {
3130
3098
  Math.floor(rect.right) <= (window.innerWidth || document.documentElement.clientWidth));
3131
3099
  };
3132
3100
 
3101
+ var isObjectInArray = function (array, item, ignore) {
3102
+ if (ignore === void 0) { ignore = []; }
3103
+ return array.some(function (_item) {
3104
+ var result = true;
3105
+ for (var key in item) {
3106
+ if (!ignore.includes(key) && item[key] !== _item[key]) {
3107
+ result = false;
3108
+ break;
3109
+ }
3110
+ }
3111
+ return result;
3112
+ });
3113
+ };
3114
+
3133
3115
  var CCarouselContext = createContext({});
3134
3116
  var CCarousel = forwardRef(function (_a, ref) {
3135
3117
  var children = _a.children, _b = _a.activeIndex, activeIndex = _b === void 0 ? 0 : _b, className = _a.className, controls = _a.controls, dark = _a.dark, indicators = _a.indicators, _c = _a.interval, interval = _c === void 0 ? 5000 : _c, onSlid = _a.onSlid, onSlide = _a.onSlide, _d = _a.pause, pause = _d === void 0 ? 'hover' : _d, _e = _a.touch, touch = _e === void 0 ? true : _e, transition = _a.transition, _f = _a.wrap, wrap = _f === void 0 ? true : _f, rest = __rest$1(_a, ["children", "activeIndex", "className", "controls", "dark", "indicators", "interval", "onSlid", "onSlide", "pause", "touch", "transition", "wrap"]);
@@ -5730,12 +5712,12 @@ var uaParser_min = {
5730
5712
  set exports(v){ uaParser_minExports = v; },
5731
5713
  };
5732
5714
 
5733
- /* UAParser.js v1.0.33
5715
+ /* UAParser.js v1.0.34
5734
5716
  Copyright © 2012-2021 Faisal Salman <f@faisalman.com>
5735
5717
  MIT License */
5736
5718
 
5737
5719
  (function (module, exports) {
5738
- (function(window,undefined$1){var LIBVERSION="0.7.33",EMPTY="",UNKNOWN="?",FUNC_TYPE="function",UNDEF_TYPE="undefined",OBJ_TYPE="object",STR_TYPE="string",MAJOR="major",MODEL="model",NAME="name",TYPE="type",VENDOR="vendor",VERSION="version",ARCHITECTURE="architecture",CONSOLE="console",MOBILE="mobile",TABLET="tablet",SMARTTV="smarttv",WEARABLE="wearable",EMBEDDED="embedded",UA_MAX_LENGTH=350;var AMAZON="Amazon",APPLE="Apple",ASUS="ASUS",BLACKBERRY="BlackBerry",BROWSER="Browser",CHROME="Chrome",EDGE="Edge",FIREFOX="Firefox",GOOGLE="Google",HUAWEI="Huawei",LG="LG",MICROSOFT="Microsoft",MOTOROLA="Motorola",OPERA="Opera",SAMSUNG="Samsung",SHARP="Sharp",SONY="Sony",XIAOMI="Xiaomi",ZEBRA="Zebra",FACEBOOK="Facebook";var extend=function(regexes,extensions){var mergedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){mergedRegexes[i]=extensions[i].concat(regexes[i]);}else {mergedRegexes[i]=regexes[i];}}return mergedRegexes},enumerize=function(arr){var enums={};for(var i=0;i<arr.length;i++){enums[arr[i].toUpperCase()]=arr[i];}return enums},has=function(str1,str2){return typeof str1===STR_TYPE?lowerize(str2).indexOf(lowerize(str1))!==-1:false},lowerize=function(str){return str.toLowerCase()},majorize=function(version){return typeof version===STR_TYPE?version.replace(/[^\d\.]/g,EMPTY).split(".")[0]:undefined$1},trim=function(str,len){if(typeof str===STR_TYPE){str=str.replace(/^\s\s*/,EMPTY);return typeof len===UNDEF_TYPE?str:str.substring(0,UA_MAX_LENGTH)}};var rgxMapper=function(ua,arrays){var i=0,j,k,p,q,matches,match;while(i<arrays.length&&!matches){var regex=arrays[i],props=arrays[i+1];j=k=0;while(j<regex.length&&!matches){matches=regex[j++].exec(ua);if(!!matches){for(p=0;p<props.length;p++){match=matches[++k];q=props[p];if(typeof q===OBJ_TYPE&&q.length>0){if(q.length===2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match);}else {this[q[0]]=q[1];}}else if(q.length===3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined$1;}else {this[q[0]]=match?match.replace(q[1],q[2]):undefined$1;}}else if(q.length===4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined$1;}}else {this[q]=match?match:undefined$1;}}}}i+=2;}},strMapper=function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j<map[i].length;j++){if(has(map[i][j],str)){return i===UNKNOWN?undefined$1:i}}}else if(has(map[i],str)){return i===UNKNOWN?undefined$1:i}}return str};var oldSafariMap={"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"},windowsVersionMap={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"};var regexes={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[VERSION,[NAME,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[VERSION,[NAME,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[NAME,VERSION],[/opios[\/ ]+([\w\.]+)/i],[VERSION,[NAME,OPERA+" Mini"]],[/\bopr\/([\w\.]+)/i],[VERSION,[NAME,OPERA]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i,/(ba?idubrowser)[\/ ]?([\w\.]+)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(weibo)__([\d\.]+)/i],[NAME,VERSION],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[VERSION,[NAME,"UC"+BROWSER]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i],[VERSION,[NAME,"WeChat(Win) Desktop"]],[/micromessenger\/([\w\.]+)/i],[VERSION,[NAME,"WeChat"]],[/konqueror\/([\w\.]+)/i],[VERSION,[NAME,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[VERSION,[NAME,"IE"]],[/yabrowser\/([\w\.]+)/i],[VERSION,[NAME,"Yandex"]],[/(avast|avg)\/([\w\.]+)/i],[[NAME,/(.+)/,"$1 Secure "+BROWSER],VERSION],[/\bfocus\/([\w\.]+)/i],[VERSION,[NAME,FIREFOX+" Focus"]],[/\bopt\/([\w\.]+)/i],[VERSION,[NAME,OPERA+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[VERSION,[NAME,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[VERSION,[NAME,"Dolphin"]],[/coast\/([\w\.]+)/i],[VERSION,[NAME,OPERA+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[VERSION,[NAME,"MIUI "+BROWSER]],[/fxios\/([-\w\.]+)/i],[VERSION,[NAME,FIREFOX]],[/\bqihu|(qi?ho?o?|360)browser/i],[[NAME,"360 "+BROWSER]],[/(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i],[[NAME,/(.+)/,"$1 "+BROWSER],VERSION],[/(comodo_dragon)\/([\w\.]+)/i],[[NAME,/_/g," "],VERSION],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i],[NAME,VERSION],[/(metasr)[\/ ]?([\w\.]+)/i,/(lbbrowser)/i,/\[(linkedin)app\]/i],[NAME],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[NAME,FACEBOOK],VERSION],[/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(chromium|instagram)[\/ ]([-\w\.]+)/i],[NAME,VERSION],[/\bgsa\/([\w\.]+) .*safari\//i],[VERSION,[NAME,"GSA"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[VERSION,[NAME,CHROME+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[NAME,CHROME+" WebView"],VERSION],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[VERSION,[NAME,"Android "+BROWSER]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[NAME,VERSION],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[VERSION,[NAME,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[VERSION,NAME],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[NAME,[VERSION,strMapper,oldSafariMap]],[/(webkit|khtml)\/([\w\.]+)/i],[NAME,VERSION],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[NAME,"Netscape"],VERSION],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[VERSION,[NAME,FIREFOX+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i],[NAME,VERSION],[/(cobalt)\/([\w\.]+)/i],[NAME,[VERSION,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[ARCHITECTURE,"amd64"]],[/(ia32(?=;))/i],[[ARCHITECTURE,lowerize]],[/((?:i[346]|x)86)[;\)]/i],[[ARCHITECTURE,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[ARCHITECTURE,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[ARCHITECTURE,"armhf"]],[/windows (ce|mobile); ppc;/i],[[ARCHITECTURE,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[ARCHITECTURE,/ower/,EMPTY,lowerize]],[/(sun4\w)[;\)]/i],[[ARCHITECTURE,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[ARCHITECTURE,lowerize]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,TABLET]],[/\b((?:s[cgp]h|gt|sm)-\w+|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,MOBILE]],[/\((ip(?:hone|od)[\w ]*);/i],[MODEL,[VENDOR,APPLE],[TYPE,MOBILE]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[MODEL,[VENDOR,APPLE],[TYPE,TABLET]],[/(macintosh);/i],[MODEL,[VENDOR,APPLE]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,TABLET]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,MOBILE]],[/\b(poco[\w ]+)(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[MODEL,/_/g," "],[VENDOR,XIAOMI],[TYPE,MOBILE]],[/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[MODEL,/_/g," "],[VENDOR,XIAOMI],[TYPE,TABLET]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[MODEL,[VENDOR,"OPPO"],[TYPE,MOBILE]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[MODEL,[VENDOR,"Vivo"],[TYPE,MOBILE]],[/\b(rmx[12]\d{3})(?: bui|;|\))/i],[MODEL,[VENDOR,"Realme"],[TYPE,MOBILE]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[MODEL,[VENDOR,MOTOROLA],[TYPE,MOBILE]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[MODEL,[VENDOR,MOTOROLA],[TYPE,TABLET]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[MODEL,[VENDOR,LG],[TYPE,TABLET]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[MODEL,[VENDOR,LG],[TYPE,MOBILE]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[MODEL,[VENDOR,"Lenovo"],[TYPE,TABLET]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[MODEL,/_/g," "],[VENDOR,"Nokia"],[TYPE,MOBILE]],[/(pixel c)\b/i],[MODEL,[VENDOR,GOOGLE],[TYPE,TABLET]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[MODEL,[VENDOR,GOOGLE],[TYPE,MOBILE]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[MODEL,[VENDOR,SONY],[TYPE,MOBILE]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[MODEL,"Xperia Tablet"],[VENDOR,SONY],[TYPE,TABLET]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[MODEL,[VENDOR,"OnePlus"],[TYPE,MOBILE]],[/(alexa)webm/i,/(kf[a-z]{2}wi)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[MODEL,[VENDOR,AMAZON],[TYPE,TABLET]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[MODEL,/(.+)/g,"Fire Phone $1"],[VENDOR,AMAZON],[TYPE,MOBILE]],[/(playbook);[-\w\),; ]+(rim)/i],[MODEL,VENDOR,[TYPE,TABLET]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[MODEL,[VENDOR,BLACKBERRY],[TYPE,MOBILE]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[MODEL,[VENDOR,ASUS],[TYPE,TABLET]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[MODEL,[VENDOR,ASUS],[TYPE,MOBILE]],[/(nexus 9)/i],[MODEL,[VENDOR,"HTC"],[TYPE,TABLET]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic|sony(?!-bra))[-_ ]?([-\w]*)/i],[VENDOR,[MODEL,/_/g," "],[TYPE,MOBILE]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[MODEL,[VENDOR,"Acer"],[TYPE,TABLET]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[MODEL,[VENDOR,"Meizu"],[TYPE,MOBILE]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[MODEL,[VENDOR,SHARP],[TYPE,MOBILE]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(surface duo)/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,TABLET]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[MODEL,[VENDOR,"Fairphone"],[TYPE,MOBILE]],[/(u304aa)/i],[MODEL,[VENDOR,"AT&T"],[TYPE,MOBILE]],[/\bsie-(\w*)/i],[MODEL,[VENDOR,"Siemens"],[TYPE,MOBILE]],[/\b(rct\w+) b/i],[MODEL,[VENDOR,"RCA"],[TYPE,TABLET]],[/\b(venue[\d ]{2,7}) b/i],[MODEL,[VENDOR,"Dell"],[TYPE,TABLET]],[/\b(q(?:mv|ta)\w+) b/i],[MODEL,[VENDOR,"Verizon"],[TYPE,TABLET]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[MODEL,[VENDOR,"Barnes & Noble"],[TYPE,TABLET]],[/\b(tm\d{3}\w+) b/i],[MODEL,[VENDOR,"NuVision"],[TYPE,TABLET]],[/\b(k88) b/i],[MODEL,[VENDOR,"ZTE"],[TYPE,TABLET]],[/\b(nx\d{3}j) b/i],[MODEL,[VENDOR,"ZTE"],[TYPE,MOBILE]],[/\b(gen\d{3}) b.+49h/i],[MODEL,[VENDOR,"Swiss"],[TYPE,MOBILE]],[/\b(zur\d{3}) b/i],[MODEL,[VENDOR,"Swiss"],[TYPE,TABLET]],[/\b((zeki)?tb.*\b) b/i],[MODEL,[VENDOR,"Zeki"],[TYPE,TABLET]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[VENDOR,"Dragon Touch"],MODEL,[TYPE,TABLET]],[/\b(ns-?\w{0,9}) b/i],[MODEL,[VENDOR,"Insignia"],[TYPE,TABLET]],[/\b((nxa|next)-?\w{0,9}) b/i],[MODEL,[VENDOR,"NextBook"],[TYPE,TABLET]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[VENDOR,"Voice"],MODEL,[TYPE,MOBILE]],[/\b(lvtel\-)?(v1[12]) b/i],[[VENDOR,"LvTel"],MODEL,[TYPE,MOBILE]],[/\b(ph-1) /i],[MODEL,[VENDOR,"Essential"],[TYPE,MOBILE]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[MODEL,[VENDOR,"Envizen"],[TYPE,TABLET]],[/\b(trio[-\w\. ]+) b/i],[MODEL,[VENDOR,"MachSpeed"],[TYPE,TABLET]],[/\btu_(1491) b/i],[MODEL,[VENDOR,"Rotor"],[TYPE,TABLET]],[/(shield[\w ]+) b/i],[MODEL,[VENDOR,"Nvidia"],[TYPE,TABLET]],[/(sprint) (\w+)/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kin\.[onetw]{3})/i],[[MODEL,/\./g," "],[VENDOR,MICROSOFT],[TYPE,MOBILE]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,TABLET]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,MOBILE]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[VENDOR,MODEL,[TYPE,CONSOLE]],[/droid.+; (shield) bui/i],[MODEL,[VENDOR,"Nvidia"],[TYPE,CONSOLE]],[/(playstation [345portablevi]+)/i],[MODEL,[VENDOR,SONY],[TYPE,CONSOLE]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,CONSOLE]],[/smart-tv.+(samsung)/i],[VENDOR,[TYPE,SMARTTV]],[/hbbtv.+maple;(\d+)/i],[[MODEL,/^/,"SmartTV"],[VENDOR,SAMSUNG],[TYPE,SMARTTV]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[VENDOR,LG],[TYPE,SMARTTV]],[/(apple) ?tv/i],[VENDOR,[MODEL,APPLE+" TV"],[TYPE,SMARTTV]],[/crkey/i],[[MODEL,CHROME+"cast"],[VENDOR,GOOGLE],[TYPE,SMARTTV]],[/droid.+aft(\w)( bui|\))/i],[MODEL,[VENDOR,AMAZON],[TYPE,SMARTTV]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[MODEL,[VENDOR,SHARP],[TYPE,SMARTTV]],[/(bravia[\w ]+)( bui|\))/i],[MODEL,[VENDOR,SONY],[TYPE,SMARTTV]],[/(mitv-\w{5}) bui/i],[MODEL,[VENDOR,XIAOMI],[TYPE,SMARTTV]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w ]*; *(\w[^;]*);([^;]*)/i],[[VENDOR,trim],[MODEL,trim],[TYPE,SMARTTV]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[TYPE,SMARTTV]],[/((pebble))app/i],[VENDOR,MODEL,[TYPE,WEARABLE]],[/droid.+; (glass) \d/i],[MODEL,[VENDOR,GOOGLE],[TYPE,WEARABLE]],[/droid.+; (wt63?0{2,3})\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,WEARABLE]],[/(quest( 2)?)/i],[MODEL,[VENDOR,FACEBOOK],[TYPE,WEARABLE]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[VENDOR,[TYPE,EMBEDDED]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i],[MODEL,[TYPE,MOBILE]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[MODEL,[TYPE,TABLET]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[TYPE,TABLET]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[TYPE,MOBILE]],[/(android[-\w\. ]{0,9});.+buil/i],[MODEL,[VENDOR,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[VERSION,[NAME,EDGE+"HTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[VERSION,[NAME,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i],[NAME,VERSION],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[VERSION,NAME]],os:[[/microsoft (windows) (vista|xp)/i],[NAME,VERSION],[/(windows) nt 6\.2; (arm)/i,/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i,/(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i],[NAME,[VERSION,strMapper,windowsVersionMap]],[/(win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[NAME,"Windows"],[VERSION,strMapper,windowsVersionMap]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/cfnetwork\/.+darwin/i],[[VERSION,/_/g,"."],[NAME,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[NAME,"Mac OS"],[VERSION,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[VERSION,NAME],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[NAME,VERSION],[/\(bb(10);/i],[VERSION,[NAME,BLACKBERRY]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[VERSION,[NAME,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[VERSION,[NAME,FIREFOX+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[VERSION,[NAME,"webOS"]],[/crkey\/([\d\.]+)/i],[VERSION,[NAME,CHROME+"cast"]],[/(cros) [\w]+ ([\w\.]+\w)/i],[[NAME,"Chromium OS"],VERSION],[/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[NAME,VERSION],[/(sunos) ?([\w\.\d]*)/i],[[NAME,"Solaris"],VERSION],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i,/(unix) ?([\w\.]*)/i],[NAME,VERSION]]};var UAParser=function(ua,extensions){if(typeof ua===OBJ_TYPE){extensions=ua;ua=undefined$1;}if(!(this instanceof UAParser)){return new UAParser(ua,extensions).getResult()}var _ua=ua||(typeof window!==UNDEF_TYPE&&window.navigator&&window.navigator.userAgent?window.navigator.userAgent:EMPTY);var _rgxmap=extensions?extend(regexes,extensions):regexes;this.getBrowser=function(){var _browser={};_browser[NAME]=undefined$1;_browser[VERSION]=undefined$1;rgxMapper.call(_browser,_ua,_rgxmap.browser);_browser.major=majorize(_browser.version);return _browser};this.getCPU=function(){var _cpu={};_cpu[ARCHITECTURE]=undefined$1;rgxMapper.call(_cpu,_ua,_rgxmap.cpu);return _cpu};this.getDevice=function(){var _device={};_device[VENDOR]=undefined$1;_device[MODEL]=undefined$1;_device[TYPE]=undefined$1;rgxMapper.call(_device,_ua,_rgxmap.device);return _device};this.getEngine=function(){var _engine={};_engine[NAME]=undefined$1;_engine[VERSION]=undefined$1;rgxMapper.call(_engine,_ua,_rgxmap.engine);return _engine};this.getOS=function(){var _os={};_os[NAME]=undefined$1;_os[VERSION]=undefined$1;rgxMapper.call(_os,_ua,_rgxmap.os);return _os};this.getResult=function(){return {ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return _ua};this.setUA=function(ua){_ua=typeof ua===STR_TYPE&&ua.length>UA_MAX_LENGTH?trim(ua,UA_MAX_LENGTH):ua;return this};this.setUA(_ua);return this};UAParser.VERSION=LIBVERSION;UAParser.BROWSER=enumerize([NAME,VERSION,MAJOR]);UAParser.CPU=enumerize([ARCHITECTURE]);UAParser.DEVICE=enumerize([MODEL,VENDOR,TYPE,CONSOLE,MOBILE,SMARTTV,TABLET,WEARABLE,EMBEDDED]);UAParser.ENGINE=UAParser.OS=enumerize([NAME,VERSION]);{if(module.exports){exports=module.exports=UAParser;}exports.UAParser=UAParser;}var $=typeof window!==UNDEF_TYPE&&(window.jQuery||window.Zepto);if($&&!$.ua){var parser=new UAParser;$.ua=parser.getResult();$.ua.get=function(){return parser.getUA()};$.ua.set=function(ua){parser.setUA(ua);var result=parser.getResult();for(var prop in result){$.ua[prop]=result[prop];}};}})(typeof window==="object"?window:commonjsGlobal);
5720
+ (function(window,undefined$1){var LIBVERSION="1.0.34",EMPTY="",UNKNOWN="?",FUNC_TYPE="function",UNDEF_TYPE="undefined",OBJ_TYPE="object",STR_TYPE="string",MAJOR="major",MODEL="model",NAME="name",TYPE="type",VENDOR="vendor",VERSION="version",ARCHITECTURE="architecture",CONSOLE="console",MOBILE="mobile",TABLET="tablet",SMARTTV="smarttv",WEARABLE="wearable",EMBEDDED="embedded",UA_MAX_LENGTH=350;var AMAZON="Amazon",APPLE="Apple",ASUS="ASUS",BLACKBERRY="BlackBerry",BROWSER="Browser",CHROME="Chrome",EDGE="Edge",FIREFOX="Firefox",GOOGLE="Google",HUAWEI="Huawei",LG="LG",MICROSOFT="Microsoft",MOTOROLA="Motorola",OPERA="Opera",SAMSUNG="Samsung",SHARP="Sharp",SONY="Sony",XIAOMI="Xiaomi",ZEBRA="Zebra",FACEBOOK="Facebook",CHROMIUM_OS="Chromium OS",MAC_OS="Mac OS";var extend=function(regexes,extensions){var mergedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){mergedRegexes[i]=extensions[i].concat(regexes[i]);}else {mergedRegexes[i]=regexes[i];}}return mergedRegexes},enumerize=function(arr){var enums={};for(var i=0;i<arr.length;i++){enums[arr[i].toUpperCase()]=arr[i];}return enums},has=function(str1,str2){return typeof str1===STR_TYPE?lowerize(str2).indexOf(lowerize(str1))!==-1:false},lowerize=function(str){return str.toLowerCase()},majorize=function(version){return typeof version===STR_TYPE?version.replace(/[^\d\.]/g,EMPTY).split(".")[0]:undefined$1},trim=function(str,len){if(typeof str===STR_TYPE){str=str.replace(/^\s\s*/,EMPTY);return typeof len===UNDEF_TYPE?str:str.substring(0,UA_MAX_LENGTH)}};var rgxMapper=function(ua,arrays){var i=0,j,k,p,q,matches,match;while(i<arrays.length&&!matches){var regex=arrays[i],props=arrays[i+1];j=k=0;while(j<regex.length&&!matches){if(!regex[j]){break}matches=regex[j++].exec(ua);if(!!matches){for(p=0;p<props.length;p++){match=matches[++k];q=props[p];if(typeof q===OBJ_TYPE&&q.length>0){if(q.length===2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match);}else {this[q[0]]=q[1];}}else if(q.length===3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined$1;}else {this[q[0]]=match?match.replace(q[1],q[2]):undefined$1;}}else if(q.length===4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined$1;}}else {this[q]=match?match:undefined$1;}}}}i+=2;}},strMapper=function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j<map[i].length;j++){if(has(map[i][j],str)){return i===UNKNOWN?undefined$1:i}}}else if(has(map[i],str)){return i===UNKNOWN?undefined$1:i}}return str};var oldSafariMap={"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"},windowsVersionMap={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"};var regexes={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[VERSION,[NAME,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[VERSION,[NAME,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[NAME,VERSION],[/opios[\/ ]+([\w\.]+)/i],[VERSION,[NAME,OPERA+" Mini"]],[/\bopr\/([\w\.]+)/i],[VERSION,[NAME,OPERA]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i,/(ba?idubrowser)[\/ ]?([\w\.]+)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(weibo)__([\d\.]+)/i],[NAME,VERSION],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[VERSION,[NAME,"UC"+BROWSER]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i],[VERSION,[NAME,"WeChat(Win) Desktop"]],[/micromessenger\/([\w\.]+)/i],[VERSION,[NAME,"WeChat"]],[/konqueror\/([\w\.]+)/i],[VERSION,[NAME,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[VERSION,[NAME,"IE"]],[/yabrowser\/([\w\.]+)/i],[VERSION,[NAME,"Yandex"]],[/(avast|avg)\/([\w\.]+)/i],[[NAME,/(.+)/,"$1 Secure "+BROWSER],VERSION],[/\bfocus\/([\w\.]+)/i],[VERSION,[NAME,FIREFOX+" Focus"]],[/\bopt\/([\w\.]+)/i],[VERSION,[NAME,OPERA+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[VERSION,[NAME,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[VERSION,[NAME,"Dolphin"]],[/coast\/([\w\.]+)/i],[VERSION,[NAME,OPERA+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[VERSION,[NAME,"MIUI "+BROWSER]],[/fxios\/([-\w\.]+)/i],[VERSION,[NAME,FIREFOX]],[/\bqihu|(qi?ho?o?|360)browser/i],[[NAME,"360 "+BROWSER]],[/(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i],[[NAME,/(.+)/,"$1 "+BROWSER],VERSION],[/(comodo_dragon)\/([\w\.]+)/i],[[NAME,/_/g," "],VERSION],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i],[NAME,VERSION],[/(metasr)[\/ ]?([\w\.]+)/i,/(lbbrowser)/i,/\[(linkedin)app\]/i],[NAME],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[NAME,FACEBOOK],VERSION],[/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(chromium|instagram)[\/ ]([-\w\.]+)/i],[NAME,VERSION],[/\bgsa\/([\w\.]+) .*safari\//i],[VERSION,[NAME,"GSA"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[VERSION,[NAME,CHROME+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[NAME,CHROME+" WebView"],VERSION],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[VERSION,[NAME,"Android "+BROWSER]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[NAME,VERSION],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[VERSION,[NAME,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[VERSION,NAME],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[NAME,[VERSION,strMapper,oldSafariMap]],[/(webkit|khtml)\/([\w\.]+)/i],[NAME,VERSION],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[NAME,"Netscape"],VERSION],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[VERSION,[NAME,FIREFOX+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i,/panasonic;(viera)/i],[NAME,VERSION],[/(cobalt)\/([\w\.]+)/i],[NAME,[VERSION,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[ARCHITECTURE,"amd64"]],[/(ia32(?=;))/i],[[ARCHITECTURE,lowerize]],[/((?:i[346]|x)86)[;\)]/i],[[ARCHITECTURE,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[ARCHITECTURE,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[ARCHITECTURE,"armhf"]],[/windows (ce|mobile); ppc;/i],[[ARCHITECTURE,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[ARCHITECTURE,/ower/,EMPTY,lowerize]],[/(sun4\w)[;\)]/i],[[ARCHITECTURE,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[ARCHITECTURE,lowerize]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,TABLET]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,MOBILE]],[/\((ip(?:hone|od)[\w ]*);/i],[MODEL,[VENDOR,APPLE],[TYPE,MOBILE]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[MODEL,[VENDOR,APPLE],[TYPE,TABLET]],[/(macintosh);/i],[MODEL,[VENDOR,APPLE]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[MODEL,[VENDOR,SHARP],[TYPE,MOBILE]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,TABLET]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,MOBILE]],[/\b(poco[\w ]+)(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[MODEL,/_/g," "],[VENDOR,XIAOMI],[TYPE,MOBILE]],[/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[MODEL,/_/g," "],[VENDOR,XIAOMI],[TYPE,TABLET]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[MODEL,[VENDOR,"OPPO"],[TYPE,MOBILE]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[MODEL,[VENDOR,"Vivo"],[TYPE,MOBILE]],[/\b(rmx[12]\d{3})(?: bui|;|\))/i],[MODEL,[VENDOR,"Realme"],[TYPE,MOBILE]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[MODEL,[VENDOR,MOTOROLA],[TYPE,MOBILE]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[MODEL,[VENDOR,MOTOROLA],[TYPE,TABLET]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[MODEL,[VENDOR,LG],[TYPE,TABLET]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[MODEL,[VENDOR,LG],[TYPE,MOBILE]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[MODEL,[VENDOR,"Lenovo"],[TYPE,TABLET]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[MODEL,/_/g," "],[VENDOR,"Nokia"],[TYPE,MOBILE]],[/(pixel c)\b/i],[MODEL,[VENDOR,GOOGLE],[TYPE,TABLET]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[MODEL,[VENDOR,GOOGLE],[TYPE,MOBILE]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[MODEL,[VENDOR,SONY],[TYPE,MOBILE]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[MODEL,"Xperia Tablet"],[VENDOR,SONY],[TYPE,TABLET]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[MODEL,[VENDOR,"OnePlus"],[TYPE,MOBILE]],[/(alexa)webm/i,/(kf[a-z]{2}wi)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[MODEL,[VENDOR,AMAZON],[TYPE,TABLET]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[MODEL,/(.+)/g,"Fire Phone $1"],[VENDOR,AMAZON],[TYPE,MOBILE]],[/(playbook);[-\w\),; ]+(rim)/i],[MODEL,VENDOR,[TYPE,TABLET]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[MODEL,[VENDOR,BLACKBERRY],[TYPE,MOBILE]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[MODEL,[VENDOR,ASUS],[TYPE,TABLET]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[MODEL,[VENDOR,ASUS],[TYPE,MOBILE]],[/(nexus 9)/i],[MODEL,[VENDOR,"HTC"],[TYPE,TABLET]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[VENDOR,[MODEL,/_/g," "],[TYPE,MOBILE]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[MODEL,[VENDOR,"Acer"],[TYPE,TABLET]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[MODEL,[VENDOR,"Meizu"],[TYPE,MOBILE]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(surface duo)/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,TABLET]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[MODEL,[VENDOR,"Fairphone"],[TYPE,MOBILE]],[/(u304aa)/i],[MODEL,[VENDOR,"AT&T"],[TYPE,MOBILE]],[/\bsie-(\w*)/i],[MODEL,[VENDOR,"Siemens"],[TYPE,MOBILE]],[/\b(rct\w+) b/i],[MODEL,[VENDOR,"RCA"],[TYPE,TABLET]],[/\b(venue[\d ]{2,7}) b/i],[MODEL,[VENDOR,"Dell"],[TYPE,TABLET]],[/\b(q(?:mv|ta)\w+) b/i],[MODEL,[VENDOR,"Verizon"],[TYPE,TABLET]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[MODEL,[VENDOR,"Barnes & Noble"],[TYPE,TABLET]],[/\b(tm\d{3}\w+) b/i],[MODEL,[VENDOR,"NuVision"],[TYPE,TABLET]],[/\b(k88) b/i],[MODEL,[VENDOR,"ZTE"],[TYPE,TABLET]],[/\b(nx\d{3}j) b/i],[MODEL,[VENDOR,"ZTE"],[TYPE,MOBILE]],[/\b(gen\d{3}) b.+49h/i],[MODEL,[VENDOR,"Swiss"],[TYPE,MOBILE]],[/\b(zur\d{3}) b/i],[MODEL,[VENDOR,"Swiss"],[TYPE,TABLET]],[/\b((zeki)?tb.*\b) b/i],[MODEL,[VENDOR,"Zeki"],[TYPE,TABLET]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[VENDOR,"Dragon Touch"],MODEL,[TYPE,TABLET]],[/\b(ns-?\w{0,9}) b/i],[MODEL,[VENDOR,"Insignia"],[TYPE,TABLET]],[/\b((nxa|next)-?\w{0,9}) b/i],[MODEL,[VENDOR,"NextBook"],[TYPE,TABLET]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[VENDOR,"Voice"],MODEL,[TYPE,MOBILE]],[/\b(lvtel\-)?(v1[12]) b/i],[[VENDOR,"LvTel"],MODEL,[TYPE,MOBILE]],[/\b(ph-1) /i],[MODEL,[VENDOR,"Essential"],[TYPE,MOBILE]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[MODEL,[VENDOR,"Envizen"],[TYPE,TABLET]],[/\b(trio[-\w\. ]+) b/i],[MODEL,[VENDOR,"MachSpeed"],[TYPE,TABLET]],[/\btu_(1491) b/i],[MODEL,[VENDOR,"Rotor"],[TYPE,TABLET]],[/(shield[\w ]+) b/i],[MODEL,[VENDOR,"Nvidia"],[TYPE,TABLET]],[/(sprint) (\w+)/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kin\.[onetw]{3})/i],[[MODEL,/\./g," "],[VENDOR,MICROSOFT],[TYPE,MOBILE]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,TABLET]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,MOBILE]],[/smart-tv.+(samsung)/i],[VENDOR,[TYPE,SMARTTV]],[/hbbtv.+maple;(\d+)/i],[[MODEL,/^/,"SmartTV"],[VENDOR,SAMSUNG],[TYPE,SMARTTV]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[VENDOR,LG],[TYPE,SMARTTV]],[/(apple) ?tv/i],[VENDOR,[MODEL,APPLE+" TV"],[TYPE,SMARTTV]],[/crkey/i],[[MODEL,CHROME+"cast"],[VENDOR,GOOGLE],[TYPE,SMARTTV]],[/droid.+aft(\w)( bui|\))/i],[MODEL,[VENDOR,AMAZON],[TYPE,SMARTTV]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[MODEL,[VENDOR,SHARP],[TYPE,SMARTTV]],[/(bravia[\w ]+)( bui|\))/i],[MODEL,[VENDOR,SONY],[TYPE,SMARTTV]],[/(mitv-\w{5}) bui/i],[MODEL,[VENDOR,XIAOMI],[TYPE,SMARTTV]],[/Hbbtv.*(technisat) (.*);/i],[VENDOR,MODEL,[TYPE,SMARTTV]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[VENDOR,trim],[MODEL,trim],[TYPE,SMARTTV]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[TYPE,SMARTTV]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[VENDOR,MODEL,[TYPE,CONSOLE]],[/droid.+; (shield) bui/i],[MODEL,[VENDOR,"Nvidia"],[TYPE,CONSOLE]],[/(playstation [345portablevi]+)/i],[MODEL,[VENDOR,SONY],[TYPE,CONSOLE]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,CONSOLE]],[/((pebble))app/i],[VENDOR,MODEL,[TYPE,WEARABLE]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[MODEL,[VENDOR,APPLE],[TYPE,WEARABLE]],[/droid.+; (glass) \d/i],[MODEL,[VENDOR,GOOGLE],[TYPE,WEARABLE]],[/droid.+; (wt63?0{2,3})\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,WEARABLE]],[/(quest( 2| pro)?)/i],[MODEL,[VENDOR,FACEBOOK],[TYPE,WEARABLE]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[VENDOR,[TYPE,EMBEDDED]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i],[MODEL,[TYPE,MOBILE]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[MODEL,[TYPE,TABLET]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[TYPE,TABLET]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[TYPE,MOBILE]],[/(android[-\w\. ]{0,9});.+buil/i],[MODEL,[VENDOR,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[VERSION,[NAME,EDGE+"HTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[VERSION,[NAME,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i],[NAME,VERSION],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[VERSION,NAME]],os:[[/microsoft (windows) (vista|xp)/i],[NAME,VERSION],[/(windows) nt 6\.2; (arm)/i,/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i,/(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i],[NAME,[VERSION,strMapper,windowsVersionMap]],[/(win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[NAME,"Windows"],[VERSION,strMapper,windowsVersionMap]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/cfnetwork\/.+darwin/i],[[VERSION,/_/g,"."],[NAME,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[NAME,MAC_OS],[VERSION,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[VERSION,NAME],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[NAME,VERSION],[/\(bb(10);/i],[VERSION,[NAME,BLACKBERRY]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[VERSION,[NAME,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[VERSION,[NAME,FIREFOX+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[VERSION,[NAME,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[VERSION,[NAME,"watchOS"]],[/crkey\/([\d\.]+)/i],[VERSION,[NAME,CHROME+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[NAME,CHROMIUM_OS],VERSION],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[NAME,VERSION],[/(sunos) ?([\w\.\d]*)/i],[[NAME,"Solaris"],VERSION],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i,/(unix) ?([\w\.]*)/i],[NAME,VERSION]]};var UAParser=function(ua,extensions){if(typeof ua===OBJ_TYPE){extensions=ua;ua=undefined$1;}if(!(this instanceof UAParser)){return new UAParser(ua,extensions).getResult()}var _navigator=typeof window!==UNDEF_TYPE&&window.navigator?window.navigator:undefined$1;var _ua=ua||(_navigator&&_navigator.userAgent?_navigator.userAgent:EMPTY);var _uach=_navigator&&_navigator.userAgentData?_navigator.userAgentData:undefined$1;var _rgxmap=extensions?extend(regexes,extensions):regexes;this.getBrowser=function(){var _browser={};_browser[NAME]=undefined$1;_browser[VERSION]=undefined$1;rgxMapper.call(_browser,_ua,_rgxmap.browser);_browser[MAJOR]=majorize(_browser[VERSION]);if(_navigator&&_navigator.brave&&typeof _navigator.brave.isBrave==FUNC_TYPE){_browser[NAME]="Brave";}return _browser};this.getCPU=function(){var _cpu={};_cpu[ARCHITECTURE]=undefined$1;rgxMapper.call(_cpu,_ua,_rgxmap.cpu);return _cpu};this.getDevice=function(){var _device={};_device[VENDOR]=undefined$1;_device[MODEL]=undefined$1;_device[TYPE]=undefined$1;rgxMapper.call(_device,_ua,_rgxmap.device);if(!_device[TYPE]&&_uach&&_uach.mobile){_device[TYPE]=MOBILE;}if(_device[MODEL]=="Macintosh"&&_navigator&&typeof _navigator.standalone!==UNDEF_TYPE&&_navigator.maxTouchPoints&&_navigator.maxTouchPoints>2){_device[MODEL]="iPad";_device[TYPE]=TABLET;}return _device};this.getEngine=function(){var _engine={};_engine[NAME]=undefined$1;_engine[VERSION]=undefined$1;rgxMapper.call(_engine,_ua,_rgxmap.engine);return _engine};this.getOS=function(){var _os={};_os[NAME]=undefined$1;_os[VERSION]=undefined$1;rgxMapper.call(_os,_ua,_rgxmap.os);if(!_os[NAME]&&_uach&&_uach.platform!="Unknown"){_os[NAME]=_uach.platform.replace(/chrome os/i,CHROMIUM_OS).replace(/macos/i,MAC_OS);}return _os};this.getResult=function(){return {ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return _ua};this.setUA=function(ua){_ua=typeof ua===STR_TYPE&&ua.length>UA_MAX_LENGTH?trim(ua,UA_MAX_LENGTH):ua;return this};this.setUA(_ua);return this};UAParser.VERSION=LIBVERSION;UAParser.BROWSER=enumerize([NAME,VERSION,MAJOR]);UAParser.CPU=enumerize([ARCHITECTURE]);UAParser.DEVICE=enumerize([MODEL,VENDOR,TYPE,CONSOLE,MOBILE,SMARTTV,TABLET,WEARABLE,EMBEDDED]);UAParser.ENGINE=UAParser.OS=enumerize([NAME,VERSION]);{if(module.exports){exports=module.exports=UAParser;}exports.UAParser=UAParser;}var $=typeof window!==UNDEF_TYPE&&(window.jQuery||window.Zepto);if($&&!$.ua){var parser=new UAParser;$.ua=parser.getResult();$.ua.get=function(){return parser.getUA()};$.ua.set=function(ua){parser.setUA(ua);var result=parser.getResult();for(var prop in result){$.ua[prop]=result[prop];}};}})(typeof window==="object"?window:commonjsGlobal);
5739
5721
  } (uaParser_min, uaParser_minExports));
5740
5722
 
5741
5723
  Object.defineProperty(lib, '__esModule', { value: true });
@@ -6828,35 +6810,6 @@ var createGroupsInArray = function (arr, numberOfGroups) {
6828
6810
  .fill('')
6829
6811
  .map(function (_, i) { return arr.slice(i * perGroup, (i + 1) * perGroup); });
6830
6812
  };
6831
- var getLocalDateFromString = function (string, locale, time) {
6832
- var date = new Date(2013, 11, 31, 17, 19, 22);
6833
- var regex = time ? date.toLocaleString(locale) : date.toLocaleDateString(locale);
6834
- regex = regex
6835
- .replace('2013', '(?<year>[0-9]{2,4})')
6836
- .replace('12', '(?<month>[0-9]{1,2})')
6837
- .replace('31', '(?<day>[0-9]{1,2})');
6838
- if (time) {
6839
- regex = regex
6840
- .replace('5', '(?<hour>[0-9]{1,2})')
6841
- .replace('17', '(?<hour>[0-9]{1,2})')
6842
- .replace('19', '(?<minute>[0-9]{1,2})')
6843
- .replace('22', '(?<second>[0-9]{1,2})')
6844
- .replace('PM', '(?<ampm>[A-Z]{2})');
6845
- }
6846
- var rgx = RegExp("".concat(regex));
6847
- var partials = string.match(rgx);
6848
- if (partials === null)
6849
- return;
6850
- var newDate = partials.groups &&
6851
- (time
6852
- ? new Date(Number(partials.groups['year']), Number(partials.groups['month']) - 1, Number(partials.groups['day']), partials.groups['ampm']
6853
- ? partials.groups['ampm'] === 'PM'
6854
- ? Number(partials.groups['hour']) + 12
6855
- : Number(partials.groups['hour'])
6856
- : Number(partials.groups['hour']), Number(partials.groups['minute']), Number(partials.groups['second']))
6857
- : new Date(Number(partials.groups['year']), Number(partials.groups['month']) - 1, Number(partials.groups['day'])));
6858
- return newDate;
6859
- };
6860
6813
  var getMonthsNames = function (locale) {
6861
6814
  var months = [];
6862
6815
  var d = new Date();
@@ -7005,40 +6958,145 @@ var isToday = function (date) {
7005
6958
  date.getFullYear() === today.getFullYear());
7006
6959
  };
7007
6960
 
6961
+ var Calendar = function (props) {
6962
+ var addMonths = props.addMonths, calendarDate = props.calendarDate, dayFormat = props.dayFormat, disabledDates = props.disabledDates, endDate = props.endDate, firstDayOfWeek = props.firstDayOfWeek, hoverDate = props.hoverDate, locale = props.locale, maxDate = props.maxDate, minDate = props.minDate, onCellClick = props.onCellClick, onCellKeyDown = props.onCellKeyDown, onCellMouseEnter = props.onCellMouseEnter, onCellMouseLeave = props.onCellMouseLeave, onMonthClick = props.onMonthClick, onYearClick = props.onYearClick, selectEndDate = props.selectEndDate, startDate = props.startDate, view = props.view, weekdayFormat = props.weekdayFormat;
6963
+ var _a = useState(calendarDate), date = _a[0], setDate = _a[1];
6964
+ var _b = useState([]), listOfMonths = _b[0], setListOfMonths = _b[1];
6965
+ useEffect(function () {
6966
+ if (addMonths !== 0) {
6967
+ setDate(new Date(calendarDate.getFullYear(), calendarDate.getMonth() + addMonths, 1));
6968
+ return;
6969
+ }
6970
+ setDate(calendarDate);
6971
+ }, [calendarDate]);
6972
+ useEffect(function () {
6973
+ setListOfMonths(createGroupsInArray(getMonthsNames(locale), 4));
6974
+ }, []);
6975
+ var monthDetails = getMonthDetails(date.getFullYear(), date.getMonth(), firstDayOfWeek);
6976
+ var listOfYears = createGroupsInArray(getYears(date.getFullYear()), 4);
6977
+ var weekDays = monthDetails[0];
6978
+ return (React__default$1.createElement("table", null,
6979
+ view === 'days' && (React__default$1.createElement("thead", null,
6980
+ React__default$1.createElement("tr", null, weekDays.map(function (_a, idx) {
6981
+ var date = _a.date;
6982
+ return (React__default$1.createElement("th", { key: idx, className: "calendar-cell" },
6983
+ React__default$1.createElement("div", { className: "calendar-header-cell-inner" }, typeof weekdayFormat === 'function'
6984
+ ? weekdayFormat(date)
6985
+ : typeof weekdayFormat === 'string'
6986
+ ? date.toLocaleDateString(locale, { weekday: weekdayFormat })
6987
+ : date.toLocaleDateString(locale, { weekday: 'long' }).slice(0, weekdayFormat))));
6988
+ })))),
6989
+ React__default$1.createElement("tbody", null,
6990
+ view === 'days' &&
6991
+ monthDetails.map(function (week, index) {
6992
+ return (React__default$1.createElement("tr", { key: index }, week.map(function (_a, idx) {
6993
+ var _b;
6994
+ var date = _a.date, month = _a.month;
6995
+ return (React__default$1.createElement("td", __assign$1({ className: classNames$1('calendar-cell', (_b = {
6996
+ today: month === 'current' && isToday(date),
6997
+ disabled: isDateDisabled(date, minDate, maxDate, disabledDates)
6998
+ },
6999
+ _b[month] = true,
7000
+ _b.last = isLastDayOfMonth(date),
7001
+ _b['range-hover'] = month === 'current' &&
7002
+ (hoverDate && selectEndDate
7003
+ ? isDateInRange(date, startDate, hoverDate)
7004
+ : isDateInRange(date, hoverDate, endDate)),
7005
+ _b.range = month === 'current' && isDateInRange(date, startDate, endDate),
7006
+ _b.selected = isDateSelected(date, startDate, endDate),
7007
+ _b.start = isStartDate(date, startDate, endDate),
7008
+ _b.end = isEndDate(date, startDate, endDate),
7009
+ _b)), key: idx, tabIndex: 0, title: date.toLocaleDateString(locale) }, (month === 'current' && {
7010
+ onBlur: function () { return onCellMouseLeave(); },
7011
+ onClick: function () { return onCellClick(date); },
7012
+ onFocus: function () { return onCellMouseEnter(date); },
7013
+ onKeyDown: function (event) { return onCellKeyDown(event, date); },
7014
+ onMouseEnter: function () { return onCellMouseEnter(date); },
7015
+ onMouseLeave: function () { return onCellMouseLeave(); },
7016
+ }), (month !== 'current' && {
7017
+ onMouseEnter: function () { return onCellMouseLeave(); },
7018
+ })),
7019
+ React__default$1.createElement("div", { className: "calendar-cell-inner" }, typeof dayFormat === 'function'
7020
+ ? dayFormat(date)
7021
+ : date.toLocaleDateString(locale, { day: dayFormat }))));
7022
+ })));
7023
+ }),
7024
+ view === 'months' &&
7025
+ listOfMonths.map(function (row, index) {
7026
+ return (React__default$1.createElement("tr", { key: index }, row.map(function (month, idx) {
7027
+ return (React__default$1.createElement("td", { key: idx, className: "calendar-cell month", onClick: function () { return onMonthClick(index * 3 + idx - addMonths, 'days'); } },
7028
+ React__default$1.createElement("div", { className: "calendar-cell-inner" }, month)));
7029
+ })));
7030
+ }),
7031
+ view === 'years' &&
7032
+ listOfYears.map(function (row, index) {
7033
+ return (React__default$1.createElement("tr", { key: index }, row.map(function (year, idx) {
7034
+ return (React__default$1.createElement("td", { key: idx, className: "calendar-cell year", onClick: function () {
7035
+ return onYearClick(new Date(year, date.getMonth() - addMonths, date.getDate()), 'months');
7036
+ } },
7037
+ React__default$1.createElement("div", { className: "calendar-cell-inner" }, new Date(year, 0, 1).toLocaleDateString(locale, { year: 'numeric' }))));
7038
+ })));
7039
+ }))));
7040
+ };
7041
+ var Navigation = function (props) {
7042
+ var addMonths = props.addMonths, calendarDate = props.calendarDate, locale = props.locale, navigation = props.navigation, navNextDoubleIcon = props.navNextDoubleIcon, navNextIcon = props.navNextIcon, navPrevDoubleIcon = props.navPrevDoubleIcon, navPrevIcon = props.navPrevIcon, navYearFirst = props.navYearFirst, onMonthClick = props.onMonthClick, onNavigationClick = props.onNavigationClick, onYearClick = props.onYearClick, view = props.view;
7043
+ var _a = useState(), date = _a[0], setDate = _a[1];
7044
+ useEffect(function () {
7045
+ if (addMonths !== 0) {
7046
+ setDate(new Date(calendarDate.getFullYear(), calendarDate.getMonth() + addMonths, 1));
7047
+ return;
7048
+ }
7049
+ setDate(calendarDate);
7050
+ }, [calendarDate]);
7051
+ return (React__default$1.createElement("div", { className: "calendar-nav" },
7052
+ navigation && (React__default$1.createElement("div", { className: "calendar-nav-prev" },
7053
+ React__default$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return onNavigationClick('prev', true); } }, navPrevDoubleIcon ? (navPrevDoubleIcon) : (React__default$1.createElement("span", { className: "calendar-nav-icon calendar-nav-icon-double-prev" }))),
7054
+ view === 'days' && (React__default$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return onNavigationClick('prev'); } }, navPrevIcon ? (navPrevIcon) : (React__default$1.createElement("span", { className: "calendar-nav-icon calendar-nav-icon-prev" })))))),
7055
+ React__default$1.createElement("div", __assign$1({ className: "calendar-nav-date" }, (navYearFirst && { style: { display: 'flex', justifyContent: 'center' } })),
7056
+ view === 'days' && (React__default$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return navigation && onMonthClick(); } }, date && date.toLocaleDateString(locale, { month: 'long' }))),
7057
+ React__default$1.createElement(CButton, __assign$1({ color: "transparent", size: "sm", onClick: function () { return navigation && onYearClick(); } }, (navYearFirst && { style: { order: '-1' } })), date && date.toLocaleDateString(locale, { year: 'numeric' }))),
7058
+ navigation && (React__default$1.createElement("div", { className: "calendar-nav-next" },
7059
+ view === 'days' && (React__default$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return onNavigationClick('next'); } }, navNextIcon ? (navNextIcon) : (React__default$1.createElement("span", { className: "calendar-nav-icon calendar-nav-icon-next" })))),
7060
+ React__default$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return onNavigationClick('next', true); } }, navNextDoubleIcon ? (navNextDoubleIcon) : (React__default$1.createElement("span", { className: "calendar-nav-icon calendar-nav-icon-double-next" })))))));
7061
+ };
7008
7062
  var CCalendar = forwardRef(function (_a, ref) {
7009
- var calendarDate = _a.calendarDate, _b = _a.calendars, calendars = _b === void 0 ? 1 : _b, className = _a.className, _c = _a.dayFormat, dayFormat = _c === void 0 ? 'numeric' : _c, disabledDates = _a.disabledDates, endDate = _a.endDate, _d = _a.firstDayOfWeek, firstDayOfWeek = _d === void 0 ? 1 : _d, _e = _a.locale, locale = _e === void 0 ? 'default' : _e, maxDate = _a.maxDate, minDate = _a.minDate, _f = _a.navigation, navigation = _f === void 0 ? true : _f, navNextIcon = _a.navNextIcon, navNextDoubleIcon = _a.navNextDoubleIcon, navPrevIcon = _a.navPrevIcon, navPrevDoubleIcon = _a.navPrevDoubleIcon, navYearFirst = _a.navYearFirst, range = _a.range, selectEndDate = _a.selectEndDate, startDate = _a.startDate, _g = _a.weekdayFormat, weekdayFormat = _g === void 0 ? 2 : _g, onCalendarCellHover = _a.onCalendarCellHover, onCalendarDateChange = _a.onCalendarDateChange, onEndDateChange = _a.onEndDateChange, onStartDateChange = _a.onStartDateChange, onSelectEndChange = _a.onSelectEndChange, onViewChanged = _a.onViewChanged;
7063
+ var startDate = _a.startDate, endDate = _a.endDate, _b = _a.calendarDate, calendarDate = _b === void 0 ? startDate || endDate || null : _b, _c = _a.calendars, calendars = _c === void 0 ? 1 : _c, className = _a.className, _d = _a.dayFormat, dayFormat = _d === void 0 ? 'numeric' : _d, disabledDates = _a.disabledDates, _e = _a.firstDayOfWeek, firstDayOfWeek = _e === void 0 ? 1 : _e, _f = _a.locale, locale = _f === void 0 ? 'default' : _f, maxDate = _a.maxDate, minDate = _a.minDate, _g = _a.navigation, navigation = _g === void 0 ? true : _g, navNextIcon = _a.navNextIcon, navNextDoubleIcon = _a.navNextDoubleIcon, navPrevIcon = _a.navPrevIcon, navPrevDoubleIcon = _a.navPrevDoubleIcon, navYearFirst = _a.navYearFirst, range = _a.range, selectEndDate = _a.selectEndDate, _h = _a.weekdayFormat, weekdayFormat = _h === void 0 ? 2 : _h, onCalendarCellHover = _a.onCalendarCellHover, onCalendarDateChange = _a.onCalendarDateChange, onEndDateChange = _a.onEndDateChange, onStartDateChange = _a.onStartDateChange, onSelectEndChange = _a.onSelectEndChange, onViewChanged = _a.onViewChanged;
7010
7064
  var isInitialMount = useRef(true);
7011
- var _h = useState(calendarDate ? new Date(calendarDate) : startDate ? new Date(startDate) : new Date()), _calendarDate = _h[0], setCalendarDate = _h[1];
7065
+ var _j = useState(null), _calendarDate = _j[0], setCalendarDate = _j[1];
7012
7066
  useEffect(function () {
7067
+ if (calendarDate === null) {
7068
+ setCalendarDate(new Date());
7069
+ return;
7070
+ }
7013
7071
  if (calendarDate) {
7014
- var d = new Date(calendarDate);
7015
- !isSameDateAs(_calendarDate, d) && setCalendarDate(d);
7072
+ var date = new Date(calendarDate);
7073
+ !isSameDateAs(_calendarDate, date) && setCalendarDate(date);
7016
7074
  }
7017
7075
  }, [calendarDate]);
7018
- var _j = useStateWithCallback(startDate ? new Date(startDate) : null, onStartDateChange, !isInitialMount.current), _startDate = _j[0], setStartDate = _j[1];
7076
+ var _k = useStateWithCallback(startDate ? new Date(startDate) : null, onStartDateChange, !isInitialMount.current), _startDate = _k[0], setStartDate = _k[1];
7019
7077
  useEffect(function () {
7020
7078
  var date = startDate ? new Date(startDate) : null;
7021
7079
  if (!isSameDateAs(date, _startDate)) {
7022
7080
  setStartDate(date);
7023
7081
  }
7024
7082
  }, [startDate]);
7025
- var _k = useStateWithCallback(endDate ? new Date(endDate) : null, onEndDateChange, !isInitialMount.current), _endDate = _k[0], setEndDate = _k[1];
7083
+ var _l = useStateWithCallback(endDate ? new Date(endDate) : null, onEndDateChange, !isInitialMount.current), _endDate = _l[0], setEndDate = _l[1];
7026
7084
  useEffect(function () {
7027
7085
  var date = endDate ? new Date(endDate) : null;
7028
7086
  if (!isSameDateAs(date, _endDate)) {
7029
7087
  setEndDate(date);
7030
7088
  }
7031
7089
  }, [endDate]);
7032
- var _l = useState(null), _hoverDate = _l[0], setHoverDate = _l[1];
7033
- var _m = useState(maxDate ? new Date(maxDate) : null), _maxDate = _m[0], setMaxDate = _m[1];
7090
+ var _m = useState(null), _hoverDate = _m[0], setHoverDate = _m[1];
7091
+ var _o = useState(maxDate ? new Date(maxDate) : null), _maxDate = _o[0], setMaxDate = _o[1];
7034
7092
  useEffect(function () {
7035
7093
  maxDate && setMaxDate(new Date(maxDate));
7036
7094
  }, [maxDate]);
7037
- var _o = useState(minDate ? new Date(minDate) : null), _minDate = _o[0], setMinDate = _o[1];
7095
+ var _p = useState(minDate ? new Date(minDate) : null), _minDate = _p[0], setMinDate = _p[1];
7038
7096
  useEffect(function () {
7039
7097
  minDate && setMinDate(new Date(minDate));
7040
7098
  }, [minDate]);
7041
- var _p = useStateWithCallback(selectEndDate, onSelectEndChange), _selectEndDate = _p[0], setSelectEndDate = _p[1];
7099
+ var _q = useStateWithCallback(selectEndDate, onSelectEndChange), _selectEndDate = _q[0], setSelectEndDate = _q[1];
7042
7100
  useEffect(function () {
7043
7101
  setSelectEndDate(selectEndDate);
7044
7102
  }, [selectEndDate]);
@@ -7048,12 +7106,15 @@ var CCalendar = forwardRef(function (_a, ref) {
7048
7106
  onSelectEndChange &&
7049
7107
  onSelectEndChange(_selectEndDate);
7050
7108
  }, [_selectEndDate]);
7051
- var _q = useStateWithCallback('days', onViewChanged), view = _q[0], setView = _q[1];
7109
+ var _r = useStateWithCallback('days', onViewChanged), view = _r[0], setView = _r[1];
7052
7110
  useEffect(function () {
7053
7111
  isInitialMount.current = false;
7054
7112
  }, []);
7055
7113
  var setCalendarPage = function (years, months, setMonth) {
7056
7114
  if (months === void 0) { months = 0; }
7115
+ if (_calendarDate === null) {
7116
+ return;
7117
+ }
7057
7118
  var year = _calendarDate.getFullYear();
7058
7119
  var month = _calendarDate.getMonth();
7059
7120
  var d = new Date(year, month, 1);
@@ -7144,105 +7205,16 @@ var CCalendar = forwardRef(function (_a, ref) {
7144
7205
  return;
7145
7206
  }
7146
7207
  };
7147
- var Calendar = function (props) {
7148
- var addMonths = props.addMonths;
7149
- var date = _calendarDate;
7150
- if (addMonths !== 0) {
7151
- date = new Date(_calendarDate.getFullYear(), _calendarDate.getMonth() + addMonths, 1);
7152
- }
7153
- var monthDetails = getMonthDetails(date.getFullYear(), date.getMonth(), firstDayOfWeek);
7154
- var listOfMonths = createGroupsInArray(getMonthsNames(locale), 4);
7155
- var listOfYears = createGroupsInArray(getYears(date.getFullYear()), 4);
7156
- var weekDays = monthDetails[0];
7157
- return (React__default$1.createElement("table", null,
7158
- view === 'days' && (React__default$1.createElement("thead", null,
7159
- React__default$1.createElement("tr", null, weekDays.map(function (_a, idx) {
7160
- var date = _a.date;
7161
- return (React__default$1.createElement("th", { key: idx, className: "calendar-cell" },
7162
- React__default$1.createElement("div", { className: "calendar-header-cell-inner" }, typeof weekdayFormat === 'function'
7163
- ? weekdayFormat(date)
7164
- : typeof weekdayFormat === 'string'
7165
- ? date.toLocaleDateString(locale, { weekday: weekdayFormat })
7166
- : date
7167
- .toLocaleDateString(locale, { weekday: 'long' })
7168
- .slice(0, weekdayFormat))));
7169
- })))),
7170
- React__default$1.createElement("tbody", null,
7171
- view === 'days' &&
7172
- monthDetails.map(function (week, index) {
7173
- return (React__default$1.createElement("tr", { key: index }, week.map(function (_a, idx) {
7174
- var _b;
7175
- var date = _a.date, month = _a.month;
7176
- return (React__default$1.createElement("td", __assign$1({ className: classNames$1('calendar-cell', (_b = {
7177
- today: month === 'current' && isToday(date),
7178
- disabled: isDateDisabled(date, _minDate, _maxDate, disabledDates)
7179
- },
7180
- _b[month] = true,
7181
- _b.last = isLastDayOfMonth(date),
7182
- _b['range-hover'] = month === 'current' &&
7183
- (_hoverDate && _selectEndDate
7184
- ? isDateInRange(date, _startDate, _hoverDate)
7185
- : isDateInRange(date, _hoverDate, _endDate)),
7186
- _b.range = month === 'current' && isDateInRange(date, _startDate, _endDate),
7187
- _b.selected = isDateSelected(date, _startDate, _endDate),
7188
- _b.start = isStartDate(date, _startDate, _endDate),
7189
- _b.end = isEndDate(date, _startDate, _endDate),
7190
- _b)), key: idx, tabIndex: 0, title: date.toLocaleDateString(locale) }, (month === 'current' && {
7191
- onBlur: function () { return handleCellMouseLeave(); },
7192
- onClick: function () { return handleCellOnClick(date); },
7193
- onFocus: function () { return handleCellMouseEnter(date); },
7194
- onKeyDown: function (event) { return handleCellKeyDown(event, date); },
7195
- onMouseEnter: function () { return handleCellMouseEnter(date); },
7196
- onMouseLeave: function () { return handleCellMouseLeave(); },
7197
- }), (month !== 'current' && {
7198
- onMouseEnter: function () { return handleCellMouseLeave(); },
7199
- })),
7200
- React__default$1.createElement("div", { className: "calendar-cell-inner" }, typeof dayFormat === 'function'
7201
- ? dayFormat(date)
7202
- : date.toLocaleDateString(locale, { day: dayFormat }))));
7203
- })));
7204
- }),
7205
- view === 'months' &&
7206
- listOfMonths.map(function (row, index) {
7207
- return (React__default$1.createElement("tr", { key: index }, row.map(function (month, idx) {
7208
- return (React__default$1.createElement("td", { key: idx, className: "calendar-cell month", onClick: function () {
7209
- setCalendarPage(0, 0, index * 3 + idx - addMonths);
7210
- setView('days');
7211
- } },
7212
- React__default$1.createElement("div", { className: "calendar-cell-inner" }, month)));
7213
- })));
7214
- }),
7215
- view === 'years' &&
7216
- listOfYears.map(function (row, index) {
7217
- return (React__default$1.createElement("tr", { key: index }, row.map(function (year, idx) {
7218
- return (React__default$1.createElement("td", { key: idx, className: "calendar-cell year", onClick: function () {
7219
- setCalendarDate(new Date(year, date.getMonth() - addMonths, date.getDate()));
7220
- setView('months');
7221
- } },
7222
- React__default$1.createElement("div", { className: "calendar-cell-inner" }, new Date(year, 0, 1).toLocaleDateString(locale, { year: 'numeric' }))));
7223
- })));
7224
- }))));
7225
- };
7226
- var Navigation = function (props) {
7227
- var addMonths = props.addMonths;
7228
- var date = _calendarDate;
7229
- if (addMonths !== 0) {
7230
- date = new Date(_calendarDate.getFullYear(), _calendarDate.getMonth() + addMonths, 1);
7231
- }
7232
- return (React__default$1.createElement("div", { className: "calendar-nav" },
7233
- navigation && (React__default$1.createElement("div", { className: "calendar-nav-prev" },
7234
- React__default$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return handleNavigationOnClick('prev', true); } }, navPrevDoubleIcon ? (navPrevDoubleIcon) : (React__default$1.createElement("span", { className: "calendar-nav-icon calendar-nav-icon-double-prev" }))),
7235
- view === 'days' && (React__default$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return handleNavigationOnClick('prev'); } }, navPrevIcon ? (navPrevIcon) : (React__default$1.createElement("span", { className: "calendar-nav-icon calendar-nav-icon-prev" })))))),
7236
- React__default$1.createElement("div", __assign$1({ className: "calendar-nav-date" }, (navYearFirst && { style: { display: 'flex', justifyContent: 'center' } })),
7237
- view === 'days' && (React__default$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return navigation && setView('months'); } }, date.toLocaleDateString(locale, { month: 'long' }))),
7238
- React__default$1.createElement(CButton, __assign$1({ color: "transparent", size: "sm", onClick: function () { return navigation && setView('years'); } }, (navYearFirst && { style: { order: '-1' } })), date.toLocaleDateString(locale, { year: 'numeric' }))),
7239
- navigation && (React__default$1.createElement("div", { className: "calendar-nav-next" },
7240
- view === 'days' && (React__default$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return handleNavigationOnClick('next'); } }, navNextIcon ? (navNextIcon) : (React__default$1.createElement("span", { className: "calendar-nav-icon calendar-nav-icon-next" })))),
7241
- React__default$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return handleNavigationOnClick('next', true); } }, navNextDoubleIcon ? (navNextDoubleIcon) : (React__default$1.createElement("span", { className: "calendar-nav-icon calendar-nav-icon-double-next" })))))));
7242
- };
7243
- return (React__default$1.createElement("div", { className: classNames$1('calendars', className) }, Array.from({ length: calendars }, function (_, index) { return (React__default$1.createElement("div", { className: classNames$1('calendar', view), key: index, ref: ref },
7244
- Navigation({ addMonths: index }),
7245
- Calendar({ addMonths: index }))); })));
7208
+ return (React__default$1.createElement("div", { className: classNames$1('calendars', className) }, _calendarDate &&
7209
+ Array.from({ length: calendars }, function (_, index) { return (React__default$1.createElement("div", { className: classNames$1('calendar', view), key: index, ref: ref },
7210
+ React__default$1.createElement(Navigation, { addMonths: index, calendarDate: _calendarDate, locale: locale, navigation: navigation, navNextDoubleIcon: navNextDoubleIcon, navNextIcon: navNextIcon, navPrevDoubleIcon: navPrevDoubleIcon, navPrevIcon: navPrevIcon, navYearFirst: navYearFirst, onMonthClick: function () { return setView('months'); }, onNavigationClick: handleNavigationOnClick, onYearClick: function () { return setView('years'); }, view: view }),
7211
+ React__default$1.createElement(Calendar, { addMonths: index, calendarDate: _calendarDate, dayFormat: dayFormat, disabledDates: disabledDates, endDate: _endDate, firstDayOfWeek: firstDayOfWeek, hoverDate: _hoverDate, locale: locale, maxDate: _maxDate, minDate: _minDate, onCellClick: handleCellOnClick, onCellKeyDown: handleCellKeyDown, onCellMouseEnter: handleCellMouseEnter, onCellMouseLeave: handleCellMouseLeave, onMonthClick: function (month, view) {
7212
+ setCalendarPage(0, 0, month);
7213
+ setView(view);
7214
+ }, onYearClick: function (date, view) {
7215
+ setCalendarDate(date);
7216
+ setView(view);
7217
+ }, selectEndDate: _selectEndDate, startDate: _startDate, view: view, weekdayFormat: weekdayFormat }))); })));
7246
7218
  });
7247
7219
  CCalendar.propTypes = {
7248
7220
  className: propTypesExports.string,
@@ -10287,46 +10259,34 @@ var getAmPm = function (date, locale) {
10287
10259
  }
10288
10260
  return date.getHours() >= 12 ? 'pm' : 'am';
10289
10261
  };
10290
- var getListOfHours = function (locale, ampm) {
10262
+ var getLocalizedTimePartials = function (locale, ampm) {
10291
10263
  if (ampm === void 0) { ampm = 'auto'; }
10292
- return Array.from({ length: (ampm === 'auto' && isAmPm(locale)) || ampm === true ? 12 : 24 }, function (_, i) {
10293
- return {
10294
- value: (ampm === 'auto' && isAmPm(locale)) || ampm === true ? i + 1 : i,
10295
- label: ((ampm === 'auto' && isAmPm(locale)) || ampm === true ? i + 1 : i).toLocaleString(locale),
10296
- };
10297
- });
10298
- };
10299
- var getListOfMinutes = function (locale, valueAsString) {
10300
- if (valueAsString === void 0) { valueAsString = false; }
10301
- return Array.from({ length: 60 }, function (_, i) {
10302
- var d = new Date();
10303
- d.setMinutes(i);
10264
+ var date = new Date();
10265
+ var hour12 = ['am', 'AM', 'pm', 'PM'].some(function (el) { return date.toLocaleString(locale).includes(el); });
10266
+ var listOfHours = Array.from({ length: (ampm === 'auto' && hour12) || ampm === true ? 12 : 24 }, function (_, i) {
10304
10267
  return {
10305
- value: valueAsString ? i.toString() : i,
10306
- label: d
10307
- .toLocaleTimeString(locale, {
10308
- minute: '2-digit',
10309
- second: '2-digit',
10310
- })
10311
- .split(/[^A-Za-z0-9]/)[0],
10268
+ value: (ampm === 'auto' && hour12) || ampm === true ? i + 1 : i,
10269
+ label: ((ampm === 'auto' && hour12) || ampm === true ? i + 1 : i).toLocaleString(locale),
10312
10270
  };
10313
10271
  });
10314
- };
10315
- var getListOfSeconds = function (locale, valueAsString) {
10316
- if (valueAsString === void 0) { valueAsString = false; }
10317
- return Array.from({ length: 60 }, function (_, i) {
10318
- var d = new Date();
10319
- d.setSeconds(i);
10272
+ var listOfMinutesSeconds = Array.from({ length: 60 }, function (_, i) {
10273
+ date.setMinutes(i);
10320
10274
  return {
10321
- value: valueAsString ? i.toString() : i,
10322
- label: d
10275
+ value: i,
10276
+ label: date
10323
10277
  .toLocaleTimeString(locale, {
10324
10278
  minute: '2-digit',
10325
10279
  second: '2-digit',
10326
10280
  })
10327
- .split(/[^A-Za-z0-9]/)[1],
10281
+ .split(/[^A-Za-z0-9\u06F0-\u06F90-9]/)[0],
10328
10282
  };
10329
10283
  });
10284
+ return {
10285
+ listOfHours: listOfHours,
10286
+ listOfMinutes: listOfMinutesSeconds,
10287
+ listOfSeconds: listOfMinutesSeconds,
10288
+ hour12: hour12,
10289
+ };
10330
10290
  };
10331
10291
  var getSelectedHour = function (date, locale, ampm) {
10332
10292
  if (ampm === void 0) { ampm = 'auto'; }
@@ -10354,13 +10314,20 @@ var CTimePicker = forwardRef(function (_a, ref) {
10354
10314
  var _o = useState(null), initialDate = _o[0], setInitialDate = _o[1];
10355
10315
  var _p = useState(date ? getAmPm(new Date(date), locale) : 'am'), _ampm = _p[0], setAmPm = _p[1];
10356
10316
  var _q = useState(visible), _visible = _q[0], setVisible = _q[1];
10317
+ var _r = useState({
10318
+ listOfHours: [],
10319
+ listOfMinutes: [],
10320
+ listOfSeconds: [],
10321
+ hour12: false,
10322
+ }), localizedTimePartials = _r[0], setLocalizedTimePartials = _r[1];
10357
10323
  useEffect(function () {
10358
10324
  setDate(convertTimeToDate(time));
10359
10325
  }, [time]);
10360
10326
  useEffect(function () {
10327
+ setLocalizedTimePartials(getLocalizedTimePartials(locale, ampm));
10361
10328
  if (inputRef.current) {
10362
10329
  inputRef.current.value = date
10363
- ? date.toLocaleTimeString(locale, __assign$1({ hour12: (ampm === 'auto' && isAmPm(locale)) || (typeof ampm === 'boolean' && ampm) }, (!seconds && { timeStyle: 'short' })))
10330
+ ? date.toLocaleTimeString(locale, __assign$1({ hour12: localizedTimePartials && localizedTimePartials.hour12 }, (!seconds && { timeStyle: 'short' })))
10364
10331
  : '';
10365
10332
  }
10366
10333
  date && setAmPm(getAmPm(new Date(date), locale));
@@ -10381,7 +10348,7 @@ var CTimePicker = forwardRef(function (_a, ref) {
10381
10348
  }
10382
10349
  }
10383
10350
  if (set === 'hours') {
10384
- if ((ampm === 'auto' && isAmPm(locale)) || ampm === true) {
10351
+ if (localizedTimePartials && localizedTimePartials.hour12) {
10385
10352
  _date.setHours(convert12hTo24h(_ampm, parseInt(value)));
10386
10353
  }
10387
10354
  else {
@@ -10405,30 +10372,40 @@ var CTimePicker = forwardRef(function (_a, ref) {
10405
10372
  indicator && (React__default$1.createElement("span", { className: "picker-input-group-indicator" }, typeof indicator === 'boolean' ? (React__default$1.createElement("span", { className: "picker-input-group-icon time-picker-input-icon" })) : (indicator))),
10406
10373
  cleaner && date && (React__default$1.createElement("span", { className: "picker-input-group-cleaner", role: "button", onClick: function (event) { return handleClear(event); } }, typeof cleaner === 'boolean' ? (React__default$1.createElement("span", { className: "picker-input-group-icon time-picker-cleaner-icon" })) : (cleaner))))))); };
10407
10374
  var TimePickerSelect = function () {
10375
+ var _a;
10408
10376
  return (React__default$1.createElement(React__default$1.Fragment, null,
10409
10377
  React__default$1.createElement("span", { className: "time-picker-inline-icon" }),
10410
- React__default$1.createElement(CFormSelect, { disabled: disabled, options: getListOfHours(locale).map(function (option) {
10411
- return {
10412
- value: option.value.toString(),
10413
- label: option.label,
10414
- };
10415
- }), onChange: function (event) {
10378
+ React__default$1.createElement(CFormSelect, { disabled: disabled, options: localizedTimePartials &&
10379
+ ((_a = localizedTimePartials.listOfHours) === null || _a === void 0 ? void 0 : _a.map(function (option) {
10380
+ return {
10381
+ value: option.value.toString(),
10382
+ label: option.label,
10383
+ };
10384
+ })), onChange: function (event) {
10416
10385
  return handleTimeChange('hours', event.target.value);
10417
10386
  }, value: getSelectedHour(date, locale) }),
10418
10387
  React__default$1.createElement(React__default$1.Fragment, null, ":"),
10419
- React__default$1.createElement(CFormSelect, { disabled: disabled,
10420
- // @ts-expect-error the getListOfMinutes function returns corect type
10421
- options: getListOfMinutes(locale, true), onChange: function (event) {
10388
+ React__default$1.createElement(CFormSelect, { disabled: disabled, options: localizedTimePartials &&
10389
+ localizedTimePartials.listOfMinutes.map(function (option) {
10390
+ return {
10391
+ value: option.value.toString(),
10392
+ label: option.label,
10393
+ };
10394
+ }), onChange: function (event) {
10422
10395
  return handleTimeChange('minutes', event.target.value);
10423
10396
  }, value: getSelectedMinutes(date) }),
10424
10397
  seconds && (React__default$1.createElement(React__default$1.Fragment, null,
10425
10398
  React__default$1.createElement(React__default$1.Fragment, null, ":"),
10426
- React__default$1.createElement(CFormSelect, { disabled: disabled,
10427
- // @ts-expect-error the getListOfSeconds function returns corect type
10428
- options: getListOfSeconds(locale, true), onChange: function (event) {
10399
+ React__default$1.createElement(CFormSelect, { disabled: disabled, options: localizedTimePartials &&
10400
+ localizedTimePartials.listOfSeconds.map(function (option) {
10401
+ return {
10402
+ value: option.value.toString(),
10403
+ label: option.label,
10404
+ };
10405
+ }), onChange: function (event) {
10429
10406
  return handleTimeChange('seconds', event.target.value);
10430
10407
  }, value: getSelectedSeconds(date) }))),
10431
- isAmPm(locale) && (React__default$1.createElement(CFormSelect, { disabled: disabled, options: [
10408
+ localizedTimePartials && localizedTimePartials.hour12 && (React__default$1.createElement(CFormSelect, { disabled: disabled, options: [
10432
10409
  { value: 'am', label: 'AM' },
10433
10410
  { value: 'pm', label: 'PM' },
10434
10411
  ], onChange: function (event) {
@@ -10436,10 +10413,10 @@ var CTimePicker = forwardRef(function (_a, ref) {
10436
10413
  }, value: _ampm }))));
10437
10414
  };
10438
10415
  var TimePickerRoll = function () { return (React__default$1.createElement(React__default$1.Fragment, null,
10439
- React__default$1.createElement(CTimePickerRollCol, { elements: getListOfHours(locale, ampm), onClick: function (index) { return handleTimeChange('hours', index.toString()); }, selected: getSelectedHour(date, locale, ampm) }),
10440
- React__default$1.createElement(CTimePickerRollCol, { elements: getListOfMinutes(locale), onClick: function (index) { return handleTimeChange('minutes', index.toString()); }, selected: getSelectedMinutes(date) }),
10441
- seconds && (React__default$1.createElement(CTimePickerRollCol, { elements: getListOfSeconds(locale), onClick: function (index) { return handleTimeChange('seconds', index.toString()); }, selected: getSelectedSeconds(date) })),
10442
- ((ampm === 'auto' && isAmPm(locale)) || ampm === true) && (React__default$1.createElement(CTimePickerRollCol, { elements: [
10416
+ React__default$1.createElement(CTimePickerRollCol, { elements: localizedTimePartials && localizedTimePartials.listOfHours, onClick: function (index) { return handleTimeChange('hours', index.toString()); }, selected: getSelectedHour(date, locale, ampm) }),
10417
+ React__default$1.createElement(CTimePickerRollCol, { elements: localizedTimePartials && localizedTimePartials.listOfMinutes, onClick: function (index) { return handleTimeChange('minutes', index.toString()); }, selected: getSelectedMinutes(date) }),
10418
+ seconds && (React__default$1.createElement(CTimePickerRollCol, { elements: localizedTimePartials && localizedTimePartials.listOfSeconds, onClick: function (index) { return handleTimeChange('seconds', index.toString()); }, selected: getSelectedSeconds(date) })),
10419
+ localizedTimePartials && localizedTimePartials.hour12 && (React__default$1.createElement(CTimePickerRollCol, { elements: [
10443
10420
  { value: 'am', label: 'AM' },
10444
10421
  { value: 'pm', label: 'PM' },
10445
10422
  ], onClick: function (value) { return handleTimeChange('toggle', value); }, selected: _ampm })))); };
@@ -10466,6 +10443,39 @@ var CTimePicker = forwardRef(function (_a, ref) {
10466
10443
  CTimePicker.propTypes = __assign$1(__assign$1(__assign$1({}, CFormControlWrapper.propTypes), CPicker.propTypes), { ampm: propTypesExports.oneOfType([propTypesExports.oneOf(['auto']), propTypesExports.bool]), className: propTypesExports.string, locale: propTypesExports.string, onTimeChange: propTypesExports.func, seconds: propTypesExports.bool, time: propTypesExports.oneOfType([propTypesExports.instanceOf(Date), propTypesExports.string]), variant: propTypesExports.oneOf(['roll', 'select']) });
10467
10444
  CTimePicker.displayName = 'CTimePicker';
10468
10445
 
10446
+ var getLocalDateFromString = function (string, locale, time) {
10447
+ if (!isNaN(Date.parse(string))) {
10448
+ return new Date(Date.parse(string));
10449
+ }
10450
+ var date = new Date(2013, 11, 31, 17, 19, 22);
10451
+ var regex = time ? date.toLocaleString(locale) : date.toLocaleDateString(locale);
10452
+ regex = regex
10453
+ .replace('2013', '(?<year>[0-9]{2,4})')
10454
+ .replace('12', '(?<month>[0-9]{1,2})')
10455
+ .replace('31', '(?<day>[0-9]{1,2})');
10456
+ if (time) {
10457
+ regex = regex
10458
+ .replace('5', '(?<hour>[0-9]{1,2})')
10459
+ .replace('17', '(?<hour>[0-9]{1,2})')
10460
+ .replace('19', '(?<minute>[0-9]{1,2})')
10461
+ .replace('22', '(?<second>[0-9]{1,2})')
10462
+ .replace('PM', '(?<ampm>[A-Z]{2})');
10463
+ }
10464
+ var rgx = RegExp("".concat(regex));
10465
+ var partials = string.match(rgx);
10466
+ if (partials === null)
10467
+ return;
10468
+ var newDate = partials.groups &&
10469
+ (time
10470
+ ? new Date(Number(partials.groups['year']), Number(partials.groups['month']) - 1, Number(partials.groups['day']), partials.groups['ampm']
10471
+ ? partials.groups['ampm'] === 'PM'
10472
+ ? Number(partials.groups['hour']) + 12
10473
+ : Number(partials.groups['hour'])
10474
+ : Number(partials.groups['hour']), Number(partials.groups['minute']), Number(partials.groups['second']))
10475
+ : new Date(Number(partials.groups['year']), Number(partials.groups['month']) - 1, Number(partials.groups['day'])));
10476
+ return newDate;
10477
+ };
10478
+
10469
10479
  var _a, _b, _c, _d, _e, _f;
10470
10480
  var CDateRangePicker = forwardRef(function (_a, ref) {
10471
10481
  var _b = _a.calendars, calendars = _b === void 0 ? 2 : _b, className = _a.className, _c = _a.cleaner, cleaner = _c === void 0 ? true : _c, calendarDate = _a.calendarDate, _d = _a.closeOnSelect, closeOnSelect = _d === void 0 ? true : _d, _e = _a.indicator, indicator = _e === void 0 ? true : _e, dayFormat = _a.dayFormat, disabled = _a.disabled, disabledDates = _a.disabledDates, endDate = _a.endDate, feedback = _a.feedback, feedbackInvalid = _a.feedbackInvalid, feedbackValid = _a.feedbackValid, firstDayOfWeek = _a.firstDayOfWeek, format = _a.format, footer = _a.footer, id = _a.id, inputReadOnly = _a.inputReadOnly, invalid = _a.invalid, label = _a.label, _f = _a.locale, locale = _f === void 0 ? 'default' : _f, maxDate = _a.maxDate, minDate = _a.minDate, navigation = _a.navigation, navYearFirst = _a.navYearFirst, onEndDateChange = _a.onEndDateChange, onHide = _a.onHide, onStartDateChange = _a.onStartDateChange, onShow = _a.onShow, _g = _a.placeholder, placeholder = _g === void 0 ? ['Start date', 'End date'] : _g, _h = _a.range, range = _h === void 0 ? true : _h, ranges = _a.ranges, _j = _a.rangesButtonsColor, rangesButtonsColor = _j === void 0 ? 'secondary' : _j, rangesButtonsSize = _a.rangesButtonsSize, _k = _a.rangesButtonsVariant, rangesButtonsVariant = _k === void 0 ? 'ghost' : _k, _l = _a.separator, separator = _l === void 0 ? true : _l, size = _a.size, startDate = _a.startDate, text = _a.text, timepicker = _a.timepicker, toggler = _a.toggler, _m = _a.todayButton, todayButton = _m === void 0 ? 'Today' : _m, _o = _a.todayButtonColor, todayButtonColor = _o === void 0 ? 'primary' : _o, _p = _a.todayButtonSize, todayButtonSize = _p === void 0 ? 'sm' : _p, todayButtonVariant = _a.todayButtonVariant, tooltipFeedback = _a.tooltipFeedback, valid = _a.valid, visible = _a.visible, weekdayFormat = _a.weekdayFormat, rest = __rest$1(_a, ["calendars", "className", "cleaner", "calendarDate", "closeOnSelect", "indicator", "dayFormat", "disabled", "disabledDates", "endDate", "feedback", "feedbackInvalid", "feedbackValid", "firstDayOfWeek", "format", "footer", "id", "inputReadOnly", "invalid", "label", "locale", "maxDate", "minDate", "navigation", "navYearFirst", "onEndDateChange", "onHide", "onStartDateChange", "onShow", "placeholder", "range", "ranges", "rangesButtonsColor", "rangesButtonsSize", "rangesButtonsVariant", "separator", "size", "startDate", "text", "timepicker", "toggler", "todayButton", "todayButtonColor", "todayButtonSize", "todayButtonVariant", "tooltipFeedback", "valid", "visible", "weekdayFormat"]);
@@ -10688,6 +10698,73 @@ CDropdownItemPlain.propTypes = {
10688
10698
  };
10689
10699
  CDropdownItemPlain.displayName = 'CDropdownItemPlain';
10690
10700
 
10701
+ var CSpinner = forwardRef(function (_a, ref) {
10702
+ var className = _a.className, color = _a.color, _b = _a.component, Component = _b === void 0 ? 'div' : _b, size = _a.size, _c = _a.variant, variant = _c === void 0 ? 'border' : _c, _d = _a.visuallyHiddenLabel, visuallyHiddenLabel = _d === void 0 ? 'Loading...' : _d, rest = __rest$1(_a, ["className", "color", "component", "size", "variant", "visuallyHiddenLabel"]);
10703
+ var _className = classNames$1("spinner-".concat(variant), "text-".concat(color), size && "spinner-".concat(variant, "-").concat(size), className);
10704
+ return (React__default$1.createElement(Component, __assign$1({ className: _className, role: "status" }, rest, { ref: ref }),
10705
+ React__default$1.createElement("span", { className: "visually-hidden" }, visuallyHiddenLabel)));
10706
+ });
10707
+ CSpinner.propTypes = {
10708
+ className: propTypesExports.string,
10709
+ color: colorPropType,
10710
+ component: propTypesExports.string,
10711
+ size: propTypesExports.oneOf(['sm']),
10712
+ variant: propTypesExports.oneOf(['border', 'grow']),
10713
+ visuallyHiddenLabel: propTypesExports.string,
10714
+ };
10715
+ CSpinner.displayName = 'CSpinner';
10716
+
10717
+ var CElementCover = forwardRef(function (_a, ref) {
10718
+ var children = _a.children, className = _a.className, boundaries = _a.boundaries, _b = _a.opacity, opacity = _b === void 0 ? 0.4 : _b, rest = __rest$1(_a, ["children", "className", "boundaries", "opacity"]);
10719
+ var elementCoverRef = useRef(null);
10720
+ var forkedRef = useForkedRef(ref, elementCoverRef);
10721
+ var _c = useState({}), customBoundaries = _c[0], setCustomBoundaries = _c[1];
10722
+ var getCustomBoundaries = function () {
10723
+ if (!elementCoverRef || !elementCoverRef.current || !boundaries) {
10724
+ return {};
10725
+ }
10726
+ var parent = elementCoverRef.current.parentElement;
10727
+ if (!parent) {
10728
+ return {};
10729
+ }
10730
+ var parentCoords = parent.getBoundingClientRect();
10731
+ var customBoundaries = {};
10732
+ boundaries.forEach(function (_a) {
10733
+ var sides = _a.sides, query = _a.query;
10734
+ var element = parent.querySelector(query);
10735
+ if (!element || !sides) {
10736
+ return;
10737
+ }
10738
+ var coords = element.getBoundingClientRect();
10739
+ sides.forEach(function (side) {
10740
+ var sideMargin = Math.abs(coords[side] - parentCoords[side]);
10741
+ customBoundaries[side] = "".concat(sideMargin, "px");
10742
+ });
10743
+ });
10744
+ return customBoundaries;
10745
+ };
10746
+ useEffect(function () {
10747
+ setCustomBoundaries(getCustomBoundaries());
10748
+ }, [JSON.stringify(getCustomBoundaries())]);
10749
+ var classes = classNames$1(className);
10750
+ var containerCoords = __assign$1({ top: 0, left: 0, right: 0, bottom: 0 }, customBoundaries);
10751
+ var coverStyles = __assign$1(__assign$1({}, containerCoords), { position: 'absolute', backgroundColor: "rgba(255,255,255,".concat(opacity, ")") });
10752
+ return (React__default$1.createElement("div", __assign$1({ className: classes, style: coverStyles }, rest, { ref: forkedRef }),
10753
+ React__default$1.createElement("div", { style: {
10754
+ position: 'absolute',
10755
+ top: '50%',
10756
+ left: '50%',
10757
+ transform: 'translateX(-50%) translateY(-50%)',
10758
+ } }, children || React__default$1.createElement(CSpinner, { variant: "grow", color: "primary" }))));
10759
+ });
10760
+ CElementCover.propTypes = {
10761
+ boundaries: propTypesExports.array,
10762
+ children: propTypesExports.node,
10763
+ className: propTypesExports.string,
10764
+ opacity: propTypesExports.number,
10765
+ };
10766
+ CElementCover.displayName = 'CElementCover';
10767
+
10691
10768
  var CFooter = forwardRef(function (_a, ref) {
10692
10769
  var _b;
10693
10770
  var children = _a.children, className = _a.className, position = _a.position, rest = __rest$1(_a, ["children", "className", "position"]);
@@ -10988,7 +11065,7 @@ CListGroup.displayName = 'CListGroup';
10988
11065
 
10989
11066
  var CListGroupItem = forwardRef(function (_a, ref) {
10990
11067
  var _b;
10991
- var children = _a.children, active = _a.active, className = _a.className, disabled = _a.disabled, href = _a.href, color = _a.color, _c = _a.component, component = _c === void 0 ? 'li' : _c, rest = __rest$1(_a, ["children", "active", "className", "disabled", "href", "color", "component"]);
11068
+ var children = _a.children, active = _a.active, className = _a.className, disabled = _a.disabled, color = _a.color, _c = _a.component, component = _c === void 0 ? 'li' : _c, rest = __rest$1(_a, ["children", "active", "className", "disabled", "color", "component"]);
10992
11069
  var _className = classNames$1('list-group-item', (_b = {},
10993
11070
  _b["list-group-item-".concat(color)] = color,
10994
11071
  _b['list-group-item-action'] = component === 'a' || component === 'button',
@@ -10998,9 +11075,8 @@ var CListGroupItem = forwardRef(function (_a, ref) {
10998
11075
  var Component = component === 'a' || component === 'button' ? CLink : component;
10999
11076
  rest = __assign$1(__assign$1(__assign$1(__assign$1({}, ((component === 'a' || component === 'button') && {
11000
11077
  active: active,
11001
- component: component,
11002
11078
  disabled: disabled,
11003
- href: href,
11079
+ component: component,
11004
11080
  ref: ref,
11005
11081
  })), (active && { 'aria-current': true })), (disabled && { 'aria-disabled': true })), rest);
11006
11082
  return (React__default$1.createElement(Component, __assign$1({ className: _className }, rest), children));
@@ -11015,22 +11091,6 @@ CListGroupItem.propTypes = {
11015
11091
  };
11016
11092
  CListGroupItem.displayName = 'CListGroupItem';
11017
11093
 
11018
- var CSpinner = forwardRef(function (_a, ref) {
11019
- var className = _a.className, color = _a.color, _b = _a.component, Component = _b === void 0 ? 'div' : _b, size = _a.size, _c = _a.variant, variant = _c === void 0 ? 'border' : _c, _d = _a.visuallyHiddenLabel, visuallyHiddenLabel = _d === void 0 ? 'Loading...' : _d, rest = __rest$1(_a, ["className", "color", "component", "size", "variant", "visuallyHiddenLabel"]);
11020
- var _className = classNames$1("spinner-".concat(variant), "text-".concat(color), size && "spinner-".concat(variant, "-").concat(size), className);
11021
- return (React__default$1.createElement(Component, __assign$1({ className: _className, role: "status" }, rest, { ref: ref }),
11022
- React__default$1.createElement("span", { className: "visually-hidden" }, visuallyHiddenLabel)));
11023
- });
11024
- CSpinner.propTypes = {
11025
- className: propTypesExports.string,
11026
- color: colorPropType,
11027
- component: propTypesExports.string,
11028
- size: propTypesExports.oneOf(['sm']),
11029
- variant: propTypesExports.oneOf(['border', 'grow']),
11030
- visuallyHiddenLabel: propTypesExports.string,
11031
- };
11032
- CSpinner.displayName = 'CSpinner';
11033
-
11034
11094
  var CLoadingButton = forwardRef(function (_a, ref) {
11035
11095
  var children = _a.children, className = _a.className, disabledOnLoading = _a.disabledOnLoading, loading = _a.loading, onClick = _a.onClick, _b = _a.spinnerType, spinnerType = _b === void 0 ? 'border' : _b, timeout = _a.timeout, rest = __rest$1(_a, ["children", "className", "disabledOnLoading", "loading", "onClick", "spinnerType", "timeout"]);
11036
11096
  var _c = useState(), _loading = _c[0], setLoading = _c[1];
@@ -11274,12 +11334,6 @@ CModalTitle.propTypes = {
11274
11334
  };
11275
11335
  CModalTitle.displayName = 'CModalTitle';
11276
11336
 
11277
- // TODO: check if component property is necessary.
11278
- var CMultiSelectCleaner = forwardRef(function (props, ref) {
11279
- return (React__default$1.createElement("button", __assign$1({ type: "button", className: "form-multi-select-selection-cleaner" }, props, { ref: ref })));
11280
- });
11281
- CMultiSelectCleaner.displayName = 'CMultiSelectCleaner';
11282
-
11283
11337
  var CMultiSelectNativeSelect = forwardRef(function (_a, ref) {
11284
11338
  var multiple = _a.multiple, options = _a.options, rest = __rest$1(_a, ["multiple", "options"]);
11285
11339
  var createNativeOptions = function (options) {
@@ -11297,19 +11351,17 @@ CMultiSelectNativeSelect.propTypes = {
11297
11351
  CMultiSelectNativeSelect.displayName = 'CMultiSelectNativeSelect';
11298
11352
 
11299
11353
  var CVirtualScroller = forwardRef(function (_a, ref) {
11300
- var children = _a.children, className = _a.className, _b = _a.itemHeight, itemHeight = _b === void 0 ? 'auto' : _b, visibleItems = _a.visibleItems, itemsNumber = _a.itemsNumber, onScroll = _a.onScroll;
11354
+ var children = _a.children, className = _a.className, visibleItems = _a.visibleItems, onScroll = _a.onScroll;
11301
11355
  var virtualScrollRef = useRef(null);
11302
11356
  var virtualScrollContentRef = useRef(null);
11303
11357
  var forkedRef = useForkedRef(ref, virtualScrollRef);
11304
- var _c = useState(0), currentItemIndex = _c[0], setCurrentItemIndex = _c[1];
11305
- var _d = useState(itemHeight === 'auto' ? 0 : itemHeight), _itemHeight = _d[0], setItemHeight = _d[1];
11306
- var _e = useState(itemsNumber || React__default$1.Children.count(children)), _itemsNumber = _e[0], setItemsNumber = _e[1];
11358
+ var _b = useState(Math.floor(visibleItems / 2)), buffer = _b[0], setBuffer = _b[1];
11359
+ var _c = useState(1), currentItemIndex = _c[0], setCurrentItemIndex = _c[1];
11360
+ var _d = useState(0), itemHeight = _d[0], setItemHeight = _d[1];
11361
+ var _e = useState(React__default$1.Children.count(children)), itemsNumber = _e[0], setItemsNumber = _e[1];
11307
11362
  var _f = useState(0), viewportPadding = _f[0], setViewportPadding = _f[1];
11308
- var _g = useState(visibleItems * _itemHeight + 2 * viewportPadding), viewportHeight = _g[0], setViewportHeight = _g[1];
11309
- var _h = useState(_itemsNumber * _itemHeight + 2 * viewportPadding), maxHeight = _h[0], setMaxHeight = _h[1];
11310
- var _j = useState(0), topPadding = _j[0], setTopPadding = _j[1];
11311
- var _k = useState(0), bottomPadding = _k[0], setBottomPadding = _k[1];
11312
- var _l = useState(0), contentHeight = _l[0], setContentHeight = _l[1];
11363
+ var _g = useState(visibleItems * itemHeight + 2 * viewportPadding), viewportHeight = _g[0], setViewportHeight = _g[1];
11364
+ var _h = useState(itemsNumber * itemHeight + 2 * viewportPadding), maxHeight = _h[0], setMaxHeight = _h[1];
11313
11365
  useEffect(function () {
11314
11366
  virtualScrollRef.current && virtualScrollRef.current.scrollTop;
11315
11367
  virtualScrollRef.current &&
@@ -11319,21 +11371,17 @@ var CVirtualScroller = forwardRef(function (_a, ref) {
11319
11371
  setItemsNumber(itemsNumber || React__default$1.Children.count(children));
11320
11372
  }, [children, itemsNumber]);
11321
11373
  useEffect(function () {
11322
- setViewportHeight(visibleItems * _itemHeight + 2 * viewportPadding);
11323
- }, [viewportPadding, visibleItems, _itemHeight]);
11374
+ setViewportHeight(visibleItems * itemHeight + 2 * viewportPadding);
11375
+ }, [viewportPadding, visibleItems, itemHeight]);
11324
11376
  useEffect(function () {
11325
- setMaxHeight(_itemsNumber * _itemHeight + 2 * viewportPadding);
11377
+ setMaxHeight(itemsNumber * itemHeight + 2 * viewportPadding);
11326
11378
  virtualScrollRef.current && virtualScrollRef.current.scrollTop;
11327
- setTopPadding(0);
11328
- }, [_itemsNumber, _itemHeight]);
11379
+ }, [itemsNumber, itemHeight]);
11380
+ useEffect(function () {
11381
+ setBuffer(Math.floor(visibleItems / 2));
11382
+ }, [visibleItems]);
11329
11383
  var handleScroll = function (scrollTop) {
11330
- var _currentItemIndex = Math.min(Math.max(1 +
11331
- Math.max(Math.floor(scrollTop / _itemHeight), 0) -
11332
- Math.min(Math.floor(visibleItems / 2) - (Math.floor(visibleItems / 2) - currentItemIndex) - 1, Math.floor(visibleItems / 2)), 1), _itemsNumber - visibleItems + 1);
11333
- virtualScrollContentRef.current &&
11334
- setContentHeight(virtualScrollContentRef.current.offsetHeight);
11335
- setTopPadding(Math.max(_currentItemIndex * _itemHeight - _itemHeight, 0));
11336
- setBottomPadding(Math.max(maxHeight - topPadding - contentHeight, 0));
11384
+ var _currentItemIndex = itemHeight && Math.max(Math.ceil(scrollTop / itemHeight), 1);
11337
11385
  setCurrentItemIndex(_currentItemIndex);
11338
11386
  onScroll && onScroll(_currentItemIndex);
11339
11387
  };
@@ -11344,20 +11392,22 @@ var CVirtualScroller = forwardRef(function (_a, ref) {
11344
11392
  height: maxHeight > viewportHeight ? viewportHeight : maxHeight,
11345
11393
  overflowY: 'auto',
11346
11394
  } },
11347
- React__default$1.createElement("div", { style: { height: topPadding } }),
11348
- React__default$1.createElement("div", { className: "virtual-scroller-content", ref: virtualScrollContentRef }, React__default$1.Children.map(children, function (child, index) {
11349
- var _index = index + 1;
11395
+ React__default$1.createElement("div", { className: "virtual-scroller-content", style: {
11396
+ height: maxHeight,
11397
+ }, ref: virtualScrollContentRef }, React__default$1.Children.map(children, function (child, index) {
11350
11398
  if (React__default$1.isValidElement(child) &&
11351
- _index >= Math.max(currentItemIndex - Math.floor(visibleItems / 2), 0) &&
11352
- _index <= currentItemIndex + visibleItems + Math.floor(visibleItems / 2)) {
11399
+ index + 1 > Math.max(currentItemIndex - buffer, 0) &&
11400
+ index + 1 <= currentItemIndex + visibleItems + buffer) {
11353
11401
  return React__default$1.cloneElement(child, {
11354
11402
  className: classNames$1(child.props.className, {
11355
- 'virtual-scroller-item-preload': _index > currentItemIndex + visibleItems || _index < currentItemIndex,
11403
+ 'virtual-scroller-item-preload': index + 1 > currentItemIndex + visibleItems || index + 1 < currentItemIndex,
11356
11404
  }),
11357
11405
  key: index,
11406
+ style: __assign$1({}, (currentItemIndex > buffer && {
11407
+ transform: "translateY(".concat((currentItemIndex - buffer) * itemHeight, "px)"),
11408
+ })),
11358
11409
  ref: function (node) {
11359
- return itemHeight === 'auto' &&
11360
- node &&
11410
+ return node &&
11361
11411
  node.offsetHeight &&
11362
11412
  setItemHeight(node.offsetHeight +
11363
11413
  parseFloat(getComputedStyle(node).marginTop) +
@@ -11366,28 +11416,90 @@ var CVirtualScroller = forwardRef(function (_a, ref) {
11366
11416
  });
11367
11417
  }
11368
11418
  return;
11369
- })),
11370
- React__default$1.createElement("div", { style: {
11371
- height: bottomPadding,
11372
- } })));
11419
+ }))));
11373
11420
  });
11374
11421
  CVirtualScroller.propTypes = {
11375
- itemHeight: propTypesExports.number,
11376
- itemsNumber: propTypesExports.number,
11377
11422
  onScroll: propTypesExports.func,
11378
11423
  visibleItems: propTypesExports.number.isRequired,
11379
11424
  };
11380
11425
  CVirtualScroller.displayName = 'CVirtualScroller';
11381
11426
 
11382
- var CMultiSelectOptions = forwardRef(function (_a, ref) {
11383
- var handleOptionOnClick = _a.handleOptionOnClick, options = _a.options, optionsMaxHeight = _a.optionsMaxHeight, optionsStyle = _a.optionsStyle, searchNoResultsLabel = _a.searchNoResultsLabel, selected = _a.selected, virtualScroller = _a.virtualScroller, _b = _a.visibleItems, visibleItems = _b === void 0 ? 10 : _b;
11384
- var handleKeyDown = function (event, option) {
11385
- if (event.code === 'Space' || event.key === 'Enter') {
11386
- event.preventDefault();
11387
- handleOptionOnClick && handleOptionOnClick(option);
11388
- return;
11389
- }
11390
- if (event.key === 'Down' || event.key === 'ArrowDown') {
11427
+ var filterOptionsList = function (search, _options) {
11428
+ return search.length
11429
+ ? _options &&
11430
+ _options.reduce(function (acc, val) {
11431
+ var options = val.options &&
11432
+ val.options.filter(function (element) {
11433
+ return element.text && element.text.toLowerCase().includes(search.toLowerCase());
11434
+ });
11435
+ if ((val.text && val.text.toLowerCase().includes(search.toLowerCase())) ||
11436
+ (options && options.length)) {
11437
+ acc.push(Object.assign({}, val, options && options.length && { options: options }));
11438
+ }
11439
+ return acc;
11440
+ }, [])
11441
+ : _options;
11442
+ };
11443
+ var flattenArray = function (options) {
11444
+ return options.reduce(function (acc, val) {
11445
+ return acc.concat(Array.isArray(val.options) ? flattenArray(val.options) : val);
11446
+ }, []);
11447
+ };
11448
+ var getNextSibling = function (elem, selector) {
11449
+ // Get the next sibling element
11450
+ var sibling = elem.nextElementSibling;
11451
+ // If there's no selector, return the first sibling
11452
+ if (!selector)
11453
+ return sibling;
11454
+ // If the sibling matches our selector, use it
11455
+ // If not, jump to the next sibling and continue the loop
11456
+ while (sibling) {
11457
+ if (sibling.matches(selector))
11458
+ return sibling;
11459
+ sibling = sibling.nextElementSibling;
11460
+ }
11461
+ return;
11462
+ };
11463
+ var getPreviousSibling = function (elem, selector) {
11464
+ // Get the next sibling element
11465
+ var sibling = elem.previousElementSibling;
11466
+ // If there's no selector, return the first sibling
11467
+ if (!selector)
11468
+ return sibling;
11469
+ // If the sibling matches our selector, use it
11470
+ // If not, jump to the next sibling and continue the loop
11471
+ while (sibling) {
11472
+ if (sibling.matches(selector))
11473
+ return sibling;
11474
+ sibling = sibling.previousElementSibling;
11475
+ }
11476
+ return;
11477
+ };
11478
+ var selectOptions = function (options, selected, deselected) {
11479
+ var _selected = __spreadArray(__spreadArray([], selected, true), options, true);
11480
+ if (deselected) {
11481
+ _selected = _selected.filter(function (selectedOption) {
11482
+ return !deselected.some(function (deselectedOption) { return deselectedOption.value === selectedOption.value; });
11483
+ });
11484
+ }
11485
+ var deduplicated = _selected.reduce(function (unique, option) {
11486
+ if (!unique.some(function (obj) { return obj.value === option.value; })) {
11487
+ unique.push(__assign$1({ value: option.value, text: option.text }, (option.disabled && { disabled: option.disabled })));
11488
+ }
11489
+ return unique;
11490
+ }, []);
11491
+ return deduplicated;
11492
+ };
11493
+
11494
+ var CMultiSelectOptions = forwardRef(function (_a, ref) {
11495
+ var handleOptionOnClick = _a.handleOptionOnClick, options = _a.options, optionsMaxHeight = _a.optionsMaxHeight, optionsStyle = _a.optionsStyle, searchNoResultsLabel = _a.searchNoResultsLabel, selected = _a.selected, virtualScroller = _a.virtualScroller, _b = _a.visibleItems, visibleItems = _b === void 0 ? 10 : _b;
11496
+ var handleKeyDown = function (event, option) {
11497
+ if (event.code === 'Space' || event.key === 'Enter') {
11498
+ event.preventDefault();
11499
+ handleOptionOnClick && handleOptionOnClick(option);
11500
+ return;
11501
+ }
11502
+ if (event.key === 'Down' || event.key === 'ArrowDown') {
11391
11503
  event.preventDefault();
11392
11504
  var target = event.target;
11393
11505
  var next = getNextSibling(target, '.form-multi-select-option');
@@ -11461,11 +11573,6 @@ CMultiSelectSelection.propTypes = {
11461
11573
  };
11462
11574
  CMultiSelectSelection.displayName = 'CMultiSelectSelection';
11463
11575
 
11464
- var flattenArray = function (options) {
11465
- return options.reduce(function (acc, val) {
11466
- return acc.concat(Array.isArray(val.options) ? flattenArray(val.options) : val);
11467
- }, []);
11468
- };
11469
11576
  var CMultiSelect = forwardRef(function (_a, ref) {
11470
11577
  var _b;
11471
11578
  var className = _a.className, _c = _a.cleaner, cleaner = _c === void 0 ? true : _c, disabled = _a.disabled, feedback = _a.feedback, feedbackInvalid = _a.feedbackInvalid, feedbackValid = _a.feedbackValid, _d = _a.multiple, multiple = _d === void 0 ? true : _d, id = _a.id, invalid = _a.invalid, label = _a.label, onChange = _a.onChange, onFilterChange = _a.onFilterChange, options = _a.options, _e = _a.optionsMaxHeight, optionsMaxHeight = _e === void 0 ? 'auto' : _e, _f = _a.optionsStyle, optionsStyle = _f === void 0 ? 'checkbox' : _f, _g = _a.placeholder, placeholder = _g === void 0 ? 'Select...' : _g, _h = _a.search, search = _h === void 0 ? true : _h, _j = _a.searchNoResultsLabel, searchNoResultsLabel = _j === void 0 ? 'No results found' : _j, _k = _a.selectAll, selectAll = _k === void 0 ? true : _k, _l = _a.selectAllLabel, selectAllLabel = _l === void 0 ? 'Select all options' : _l, _m = _a.selectionType, selectionType = _m === void 0 ? 'tags' : _m, _o = _a.selectionTypeCounterText, selectionTypeCounterText = _o === void 0 ? 'item(s) selected' : _o, size = _a.size, text = _a.text, tooltipFeedback = _a.tooltipFeedback, valid = _a.valid, virtualScroller = _a.virtualScroller, _p = _a.visible, visible = _p === void 0 ? false : _p, _q = _a.visibleItems, visibleItems = _q === void 0 ? 10 : _q, rest = __rest$1(_a, ["className", "cleaner", "disabled", "feedback", "feedbackInvalid", "feedbackValid", "multiple", "id", "invalid", "label", "onChange", "onFilterChange", "options", "optionsMaxHeight", "optionsStyle", "placeholder", "search", "searchNoResultsLabel", "selectAll", "selectAllLabel", "selectionType", "selectionTypeCounterText", "size", "text", "tooltipFeedback", "valid", "virtualScroller", "visible", "visibleItems"]);
@@ -11476,21 +11583,6 @@ var CMultiSelect = forwardRef(function (_a, ref) {
11476
11583
  var _s = useState(''), _search = _s[0], setSearch = _s[1];
11477
11584
  var _t = useState(visible), _visible = _t[0], setVisible = _t[1];
11478
11585
  var _u = useState([]), selected = _u[0], setSelected = _u[1];
11479
- var selectOptions = function (options, deselected) {
11480
- var _selected = __spreadArray(__spreadArray([], selected, true), options, true);
11481
- if (deselected) {
11482
- _selected = _selected.filter(function (selectedOption) {
11483
- return !deselected.some(function (deselectedOption) { return deselectedOption.value === selectedOption.value; });
11484
- });
11485
- }
11486
- var deduplicated = _selected.reduce(function (unique, option) {
11487
- if (!unique.some(function (obj) { return obj.value === option.value; })) {
11488
- unique.push(__assign$1({ value: option.value, text: option.text }, (option.disabled && { disabled: option.disabled })));
11489
- }
11490
- return unique;
11491
- }, []);
11492
- setSelected(deduplicated);
11493
- };
11494
11586
  useMemo(function () {
11495
11587
  setOptions(options);
11496
11588
  var _selected = options &&
@@ -11507,7 +11599,7 @@ var CMultiSelect = forwardRef(function (_a, ref) {
11507
11599
  }
11508
11600
  return;
11509
11601
  });
11510
- _selected && selectOptions(_selected, deselected);
11602
+ _selected && setSelected(selectOptions(_selected, selected, deselected));
11511
11603
  }, [JSON.stringify(options)]);
11512
11604
  useEffect(function () {
11513
11605
  !isInitialMount.current &&
@@ -11527,22 +11619,6 @@ var CMultiSelect = forwardRef(function (_a, ref) {
11527
11619
  useEffect(function () {
11528
11620
  isInitialMount.current = false;
11529
11621
  }, []);
11530
- var filterOptionsList = function (search, options) {
11531
- return search.length
11532
- ? options &&
11533
- options.reduce(function (acc, val) {
11534
- var options = val.options &&
11535
- val.options.filter(function (element) {
11536
- return element.text && element.text.toLowerCase().includes(search.toLowerCase());
11537
- });
11538
- if ((val.text && val.text.toLowerCase().includes(search.toLowerCase())) ||
11539
- (options && options.length)) {
11540
- acc.push(Object.assign({}, val, options && options.length && { options: options }));
11541
- }
11542
- return acc;
11543
- }, [])
11544
- : _options;
11545
- };
11546
11622
  var handleSearchChange = function (event) {
11547
11623
  var target = event.target;
11548
11624
  if (search !== 'external') {
@@ -11576,7 +11652,7 @@ var CMultiSelect = forwardRef(function (_a, ref) {
11576
11652
  }
11577
11653
  };
11578
11654
  var handleSelectAll = function () {
11579
- selectOptions(flattenArray(options).filter(function (option) { return !option.disabled; }));
11655
+ setSelected(selectOptions(flattenArray(options).filter(function (option) { return !option.disabled; }), selected));
11580
11656
  };
11581
11657
  var handleDeselectAll = function () {
11582
11658
  setSelected(selected.filter(function (option) { return option.disabled; }));
@@ -11590,7 +11666,7 @@ var CMultiSelect = forwardRef(function (_a, ref) {
11590
11666
  setVisible(true);
11591
11667
  }, toggler: React__default$1.createElement("div", null,
11592
11668
  React__default$1.createElement(CMultiSelectSelection, { multiple: multiple, onRemove: function (option) { return !disabled && handleOptionOnClick(option); }, search: search, selected: selected, selectionType: selectionType, selectionTypeCounterText: selectionTypeCounterText }),
11593
- multiple && cleaner && selected.length > 0 && (React__default$1.createElement(CMultiSelectCleaner, { onClick: function () { return handleDeselectAll(); } })),
11669
+ multiple && cleaner && selected.length > 0 && (React__default$1.createElement("button", { type: "button", className: "form-multi-select-selection-cleaner", onClick: function () { return handleDeselectAll(); } })),
11594
11670
  search && (React__default$1.createElement("input", __assign$1({ type: "text", className: "form-multi-select-search", disabled: disabled, onChange: function (event) { return handleSearchChange(event); }, onKeyDown: function (event) { return handleSearchKeyDown(event); } }, (selected.length === 0 && { placeholder: placeholder }), (selected.length &&
11595
11671
  selectionType === 'counter' && {
11596
11672
  placeholder: "".concat(selected.length, " ").concat(selectionTypeCounterText),
@@ -11863,8 +11939,8 @@ CNavbarToggler.displayName = 'CNavbarToggler';
11863
11939
 
11864
11940
  var COffcanvas = forwardRef(function (_a, ref) {
11865
11941
  var _b;
11866
- var children = _a.children, _c = _a.backdrop, backdrop = _c === void 0 ? true : _c, className = _a.className, _d = _a.keyboard, keyboard = _d === void 0 ? true : _d, onHide = _a.onHide, onShow = _a.onShow, placement = _a.placement, _e = _a.portal, portal = _e === void 0 ? true : _e, _f = _a.scroll, scroll = _f === void 0 ? false : _f, _g = _a.visible, visible = _g === void 0 ? false : _g, rest = __rest$1(_a, ["children", "backdrop", "className", "keyboard", "onHide", "onShow", "placement", "portal", "scroll", "visible"]);
11867
- var _h = useState(visible), _visible = _h[0], setVisible = _h[1];
11942
+ var children = _a.children, _c = _a.backdrop, backdrop = _c === void 0 ? true : _c, className = _a.className, _d = _a.keyboard, keyboard = _d === void 0 ? true : _d, onHide = _a.onHide, onShow = _a.onShow, placement = _a.placement, _e = _a.portal, portal = _e === void 0 ? false : _e, _f = _a.responsive, responsive = _f === void 0 ? true : _f, _g = _a.scroll, scroll = _g === void 0 ? false : _g, _h = _a.visible, visible = _h === void 0 ? false : _h, rest = __rest$1(_a, ["children", "backdrop", "className", "keyboard", "onHide", "onShow", "placement", "portal", "responsive", "scroll", "visible"]);
11943
+ var _j = useState(visible), _visible = _j[0], setVisible = _j[1];
11868
11944
  var offcanvasRef = useRef(null);
11869
11945
  var forkedRef = useForkedRef(ref, offcanvasRef);
11870
11946
  useEffect(function () {
@@ -11883,19 +11959,27 @@ var COffcanvas = forwardRef(function (_a, ref) {
11883
11959
  document.body.style.removeProperty('padding-right');
11884
11960
  }
11885
11961
  }, [_visible]);
11886
- var _className = classNames$1('offcanvas', (_b = {},
11962
+ var getTransitionClass = function (state) {
11963
+ return state === 'entering'
11964
+ ? 'showing'
11965
+ : state === 'entered'
11966
+ ? 'show'
11967
+ : state === 'exiting'
11968
+ ? 'show hiding'
11969
+ : '';
11970
+ };
11971
+ var _className = classNames$1((_b = {},
11972
+ _b["offcanvas".concat(typeof responsive !== 'boolean' ? '-' + responsive : '')] = responsive,
11887
11973
  _b["offcanvas-".concat(placement)] = placement,
11888
- _b.show = _visible,
11889
11974
  _b), className);
11890
- var transitionStyles = {
11891
- entering: { visibility: 'visible' },
11892
- entered: { visibility: 'visible' },
11893
- exiting: { visibility: 'visible' },
11894
- exited: { visibility: 'hidden' },
11895
- };
11896
11975
  var handleDismiss = function () {
11897
11976
  setVisible(false);
11898
11977
  };
11978
+ var handleBackdropDismiss = function () {
11979
+ if (backdrop !== 'static') {
11980
+ setVisible(false);
11981
+ }
11982
+ };
11899
11983
  var handleKeyDown = useCallback(function (event) {
11900
11984
  if (event.key === 'Escape' && keyboard) {
11901
11985
  return handleDismiss();
@@ -11903,7 +11987,7 @@ var COffcanvas = forwardRef(function (_a, ref) {
11903
11987
  }, [ref, handleDismiss]);
11904
11988
  var offcanvas = function (ref, state) {
11905
11989
  return (React__default$1.createElement(React__default$1.Fragment, null,
11906
- React__default$1.createElement("div", __assign$1({ className: _className, role: "dialog", style: __assign$1({}, transitionStyles[state]), tabIndex: -1, onKeyDown: handleKeyDown }, rest, { ref: ref }), children)));
11990
+ React__default$1.createElement("div", __assign$1({ className: classNames$1(_className, getTransitionClass(state)), role: "dialog", tabIndex: -1, onKeyDown: handleKeyDown }, rest, { ref: ref }), children)));
11907
11991
  };
11908
11992
  return (React__default$1.createElement(React__default$1.Fragment, null,
11909
11993
  React__default$1.createElement(Transition$1, { in: _visible, nodeRef: offcanvasRef, onEnter: onShow, onEntered: function () { var _a; return (_a = offcanvasRef.current) === null || _a === void 0 ? void 0 : _a.focus(); }, onExit: onHide, timeout: 300 }, function (state) {
@@ -11913,11 +11997,11 @@ var COffcanvas = forwardRef(function (_a, ref) {
11913
11997
  }),
11914
11998
  typeof window !== 'undefined' && portal
11915
11999
  ? backdrop &&
11916
- createPortal(React__default$1.createElement(CBackdrop, { className: "offcanvas-backdrop", onClick: handleDismiss, visible: _visible }), document.body)
11917
- : backdrop && (React__default$1.createElement(CBackdrop, { className: "offcanvas-backdrop", onClick: handleDismiss, visible: _visible }))));
12000
+ createPortal(React__default$1.createElement(CBackdrop, { className: "offcanvas-backdrop", onClick: handleBackdropDismiss, visible: _visible }), document.body)
12001
+ : backdrop && (React__default$1.createElement(CBackdrop, { className: "offcanvas-backdrop", onClick: handleBackdropDismiss, visible: _visible }))));
11918
12002
  });
11919
12003
  COffcanvas.propTypes = {
11920
- backdrop: propTypesExports.bool,
12004
+ backdrop: propTypesExports.oneOfType([propTypesExports.bool, propTypesExports.oneOf(['static'])]),
11921
12005
  children: propTypesExports.node,
11922
12006
  className: propTypesExports.string,
11923
12007
  keyboard: propTypesExports.bool,
@@ -11926,6 +12010,10 @@ COffcanvas.propTypes = {
11926
12010
  placement: propTypesExports.oneOf(['start', 'end', 'top', 'bottom'])
11927
12011
  .isRequired,
11928
12012
  portal: propTypesExports.bool,
12013
+ responsive: propTypesExports.oneOfType([
12014
+ propTypesExports.bool,
12015
+ propTypesExports.oneOf(['sm', 'md', 'lg', 'xl', 'xxl']),
12016
+ ]),
11929
12017
  scroll: propTypesExports.bool,
11930
12018
  visible: propTypesExports.bool,
11931
12019
  };
@@ -12143,440 +12231,53 @@ CPopover.propTypes = {
12143
12231
  };
12144
12232
  CPopover.displayName = 'CPopover';
12145
12233
 
12146
- const cilArrowBottom = ["512 512","<polygon fill='var(--ci-primary-color, currentColor)' points='367.997 338.75 271.999 434.747 271.999 17.503 239.999 17.503 239.999 434.745 144.003 338.75 121.376 361.377 256 496 390.624 361.377 367.997 338.75' class='ci-primary'/>"];
12234
+ var cilArrowBottom = ["512 512", "<polygon fill='var(--ci-primary-color, currentColor)' points='367.997 338.75 271.999 434.747 271.999 17.503 239.999 17.503 239.999 434.745 144.003 338.75 121.376 361.377 256 496 390.624 361.377 367.997 338.75' class='ci-primary'/>"];
12147
12235
 
12148
- const cilArrowTop = ["512 512","<polygon fill='var(--ci-primary-color, currentColor)' points='390.624 150.625 256 16 121.376 150.625 144.004 173.252 240.001 77.254 240.001 495.236 272.001 495.236 272.001 77.257 367.996 173.252 390.624 150.625' class='ci-primary'/>"];
12236
+ var cilArrowTop = ["512 512", "<polygon fill='var(--ci-primary-color, currentColor)' points='390.624 150.625 256 16 121.376 150.625 144.004 173.252 240.001 77.254 240.001 495.236 272.001 495.236 272.001 77.257 367.996 173.252 390.624 150.625' class='ci-primary'/>"];
12149
12237
 
12150
- const cilFilterX = ["512 512","<polygon fill='var(--ci-primary-color, currentColor)' points='40 16 40 53.828 109.024 136 150.815 136 76.896 48 459.51 48 304 242.388 304 401.373 241.373 464 240 464 240 368 208 368 208 496 254.627 496 336 414.627 336 253.612 496 53.612 496 16 40 16' class='ci-primary'/><polygon fill='var(--ci-primary-color, currentColor)' points='166.403 248.225 226.864 187.763 204.237 165.135 143.775 225.597 83.313 165.135 60.687 187.763 121.148 248.225 60.687 308.687 83.313 331.314 143.775 270.852 204.237 331.314 226.864 308.687 166.403 248.225' class='ci-primary'/>"];
12238
+ var cilFilterX = ["512 512", "<polygon fill='var(--ci-primary-color, currentColor)' points='40 16 40 53.828 109.024 136 150.815 136 76.896 48 459.51 48 304 242.388 304 401.373 241.373 464 240 464 240 368 208 368 208 496 254.627 496 336 414.627 336 253.612 496 53.612 496 16 40 16' class='ci-primary'/><polygon fill='var(--ci-primary-color, currentColor)' points='166.403 248.225 226.864 187.763 204.237 165.135 143.775 225.597 83.313 165.135 60.687 187.763 121.148 248.225 60.687 308.687 83.313 331.314 143.775 270.852 204.237 331.314 226.864 308.687 166.403 248.225' class='ci-primary'/>"];
12151
12239
 
12152
- const cilSwapVertical = ["512 512","<polygon fill='var(--ci-primary-color, currentColor)' points='384 433.373 384 160 352 160 352 434.51 282.177 364.687 259.55 387.313 367.432 495.196 475.313 387.313 452.687 364.687 384 433.373' class='ci-primary'/><polygon fill='var(--ci-primary-color, currentColor)' points='159.432 17.372 51.55 125.255 74.177 147.882 144 78.059 144 352 176 352 176 79.195 244.687 147.882 267.313 125.255 159.432 17.372' class='ci-primary'/>"];
12240
+ var cilSwapVertical = ["512 512", "<polygon fill='var(--ci-primary-color, currentColor)' points='384 433.373 384 160 352 160 352 434.51 282.177 364.687 259.55 387.313 367.432 495.196 475.313 387.313 452.687 364.687 384 433.373' class='ci-primary'/><polygon fill='var(--ci-primary-color, currentColor)' points='159.432 17.372 51.55 125.255 74.177 147.882 144 78.059 144 352 176 352 176 79.195 244.687 147.882 267.313 125.255 159.432 17.372' class='ci-primary'/>"];
12153
12241
 
12154
- var CElementCover = forwardRef(function (_a, ref) {
12155
- var children = _a.children, className = _a.className, boundaries = _a.boundaries, _b = _a.opacity, opacity = _b === void 0 ? 0.4 : _b, rest = __rest$1(_a, ["children", "className", "boundaries", "opacity"]);
12156
- var elementCoverRef = useRef(null);
12157
- var forkedRef = useForkedRef(ref, elementCoverRef);
12158
- var _c = useState({}), customBoundaries = _c[0], setCustomBoundaries = _c[1];
12159
- var getCustomBoundaries = function () {
12160
- if (!elementCoverRef || !elementCoverRef.current || !boundaries) {
12161
- return {};
12162
- }
12163
- var parent = elementCoverRef.current.parentElement;
12164
- if (!parent) {
12165
- return {};
12166
- }
12167
- var parentCoords = parent.getBoundingClientRect();
12168
- var customBoundaries = {};
12169
- boundaries.forEach(function (_a) {
12170
- var sides = _a.sides, query = _a.query;
12171
- var element = parent.querySelector(query);
12172
- if (!element || !sides) {
12173
- return;
12174
- }
12175
- var coords = element.getBoundingClientRect();
12176
- sides.forEach(function (side) {
12177
- var sideMargin = Math.abs(coords[side] - parentCoords[side]);
12178
- customBoundaries[side] = "".concat(sideMargin, "px");
12179
- });
12180
- });
12181
- return customBoundaries;
12182
- };
12183
- useEffect(function () {
12184
- setCustomBoundaries(getCustomBoundaries());
12185
- }, [JSON.stringify(getCustomBoundaries())]);
12186
- //render
12187
- var classes = classNames$1(className);
12188
- var containerCoords = __assign$1({ top: 0, left: 0, right: 0, bottom: 0 }, customBoundaries);
12189
- var coverStyles = __assign$1(__assign$1({}, containerCoords), { position: 'absolute', backgroundColor: "rgb(255,255,255,".concat(opacity, ")") });
12190
- return (React__default$1.createElement("div", __assign$1({ className: classes, style: coverStyles }, rest, { ref: forkedRef }), children || (React__default$1.createElement("div", { style: {
12191
- position: 'absolute',
12192
- top: '50%',
12193
- left: '50%',
12194
- transform: 'translateX(-50%) translateY(-50%)',
12195
- } },
12196
- React__default$1.createElement(CSpinner, { variant: "grow", color: "primary" })))));
12197
- });
12198
- CElementCover.propTypes = {
12199
- boundaries: propTypesExports.array,
12200
- children: propTypesExports.node,
12201
- className: propTypesExports.string,
12202
- opacity: propTypesExports.number,
12203
- };
12204
- CElementCover.displayName = 'CElementCover';
12242
+ /******************************************************************************
12243
+ Copyright (c) Microsoft Corporation.
12244
+
12245
+ Permission to use, copy, modify, and/or distribute this software for any
12246
+ purpose with or without fee is hereby granted.
12247
+
12248
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
12249
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
12250
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12251
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
12252
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
12253
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
12254
+ PERFORMANCE OF THIS SOFTWARE.
12255
+ ***************************************************************************** */
12256
+
12257
+ var __assign = function() {
12258
+ __assign = Object.assign || function __assign(t) {
12259
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
12260
+ s = arguments[i];
12261
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
12262
+ }
12263
+ return t;
12264
+ };
12265
+ return __assign.apply(this, arguments);
12266
+ };
12267
+
12268
+ function __rest(s, e) {
12269
+ var t = {};
12270
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
12271
+ t[p] = s[p];
12272
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
12273
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
12274
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
12275
+ t[p[i]] = s[p[i]];
12276
+ }
12277
+ return t;
12278
+ }
12205
12279
 
12206
- var CSmartPagination = forwardRef(function (_a, ref) {
12207
- var className = _a.className, _b = _a.activePage, activePage = _b === void 0 ? 1 : _b, _c = _a.align, align = _c === void 0 ? 'start' : _c, _d = _a.arrows, arrows = _d === void 0 ? true : _d, _e = _a.dots, dots = _e === void 0 ? true : _e, _f = _a.doubleArrows, doubleArrows = _f === void 0 ? true : _f, _g = _a.firstButton, firstButton = _g === void 0 ? React__default$1.createElement(React__default$1.Fragment, null, "\u00AB") : _g, _h = _a.lastButton, lastButton = _h === void 0 ? React__default$1.createElement(React__default$1.Fragment, null, "\u00BB") : _h, _j = _a.limit, limit = _j === void 0 ? 5 : _j, _k = _a.nextButton, nextButton = _k === void 0 ? React__default$1.createElement(React__default$1.Fragment, null, "\u203A") : _k, onActivePageChange = _a.onActivePageChange, pages = _a.pages, _l = _a.previousButton, previousButton = _l === void 0 ? React__default$1.createElement(React__default$1.Fragment, null, "\u2039") : _l, size = _a.size, rest = __rest$1(_a, ["className", "activePage", "align", "arrows", "dots", "doubleArrows", "firstButton", "lastButton", "limit", "nextButton", "onActivePageChange", "pages", "previousButton", "size"]);
12208
- var _classNames = classNames$1("justify-content-".concat(align), className);
12209
- var showDots = (function () {
12210
- return dots && limit > 4 && limit < pages;
12211
- })();
12212
- var maxPrevItems = (function () {
12213
- return Math.floor((limit - 1) / 2);
12214
- })();
12215
- var maxNextItems = (function () {
12216
- return Math.ceil((limit - 1) / 2);
12217
- })();
12218
- var beforeDots = (function () {
12219
- return showDots && activePage > maxPrevItems + 1;
12220
- })();
12221
- var afterDots = (function () {
12222
- return showDots && activePage < pages - maxNextItems;
12223
- })();
12224
- var computedLimit = (function () {
12225
- return limit - (afterDots ? 1 : 0) - (beforeDots ? 1 : 0);
12226
- })();
12227
- var range = (function () {
12228
- return activePage + maxNextItems;
12229
- })();
12230
- var lastItem = (function () {
12231
- return range >= pages ? pages : range - (afterDots ? 1 : 0);
12232
- })();
12233
- var itemsAmount = (function () {
12234
- return pages < computedLimit ? pages : computedLimit;
12235
- })();
12236
- var items = (function () {
12237
- if (activePage - maxPrevItems <= 1) {
12238
- return Array.from({
12239
- length: itemsAmount,
12240
- }, function (_v, i) { return i + 1; });
12241
- }
12242
- else {
12243
- return Array.from({
12244
- length: itemsAmount,
12245
- }, function (_v, i) {
12246
- return lastItem - i;
12247
- }).reverse();
12248
- }
12249
- })();
12250
- var setPage = function (number) {
12251
- if (number !== activePage) {
12252
- onActivePageChange && onActivePageChange(number);
12253
- }
12254
- };
12255
- return (React__default$1.createElement(CPagination, __assign$1({ className: _classNames, "aria-label": "pagination", size: size }, rest, { ref: ref }),
12256
- doubleArrows && (React__default$1.createElement(CPaginationItem, { onClick: function () { return setPage(1); }, "aria-label": "Go to first page", "aria-disabled": activePage === 1, disabled: activePage === 1 }, firstButton)),
12257
- arrows && (React__default$1.createElement(CPaginationItem, { onClick: function () { return setPage(activePage - 1); }, "aria-label": "Go to previous page", "aria-disabled": activePage === 1, disabled: activePage === 1 }, previousButton)),
12258
- beforeDots && (React__default$1.createElement(CPaginationItem, { role: "separator", disabled: true }, "\u2026")),
12259
- items.map(function (i) {
12260
- return (React__default$1.createElement(CPaginationItem, { onClick: function () { return setPage(i); }, "aria-label": activePage === i ? "Current page ".concat(i) : "Go to page ".concat(i), active: activePage === i, key: i }, i));
12261
- }),
12262
- afterDots && (React__default$1.createElement(CPaginationItem, { role: "separator", disabled: true }, "\u2026")),
12263
- arrows && (React__default$1.createElement(CPaginationItem, { onClick: function () { return setPage(activePage + 1); }, "aria-label": "Go to next page", "aria-disabled": activePage === pages, disabled: activePage === pages }, nextButton)),
12264
- doubleArrows && (React__default$1.createElement(CPaginationItem, { onClick: function () { return setPage(pages); }, "aria-label": "Go to last page", "aria-disabled": activePage === pages, disabled: activePage === pages }, lastButton))));
12265
- });
12266
- CSmartPagination.propTypes = {
12267
- className: propTypesExports.oneOfType([propTypesExports.string]),
12268
- activePage: propTypesExports.number,
12269
- dots: propTypesExports.bool,
12270
- arrows: propTypesExports.bool,
12271
- doubleArrows: propTypesExports.bool,
12272
- firstButton: propTypesExports.oneOfType([propTypesExports.node, propTypesExports.string]),
12273
- previousButton: propTypesExports.oneOfType([propTypesExports.node, propTypesExports.string]),
12274
- nextButton: propTypesExports.oneOfType([propTypesExports.node, propTypesExports.string]),
12275
- lastButton: propTypesExports.oneOfType([propTypesExports.node, propTypesExports.string]),
12276
- size: propTypesExports.oneOf(['sm', 'lg']),
12277
- align: propTypesExports.oneOf(['start', 'center', 'end']),
12278
- limit: propTypesExports.number,
12279
- pages: propTypesExports.number.isRequired,
12280
- onActivePageChange: propTypesExports.func,
12281
- };
12282
- CSmartPagination.displayName = 'CSmartPagination';
12283
-
12284
- var CTableHead = forwardRef(function (_a, ref) {
12285
- var _b;
12286
- var children = _a.children, className = _a.className, color = _a.color, rest = __rest$1(_a, ["children", "className", "color"]);
12287
- var _className = classNames$1((_b = {},
12288
- _b["table-".concat(color)] = color,
12289
- _b), className);
12290
- return (React__default$1.createElement("thead", __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
12291
- });
12292
- CTableHead.propTypes = {
12293
- children: propTypesExports.node,
12294
- className: propTypesExports.string,
12295
- color: colorPropType,
12296
- };
12297
- CTableHead.displayName = 'CTableHead';
12298
-
12299
- var CTableHeaderCell = forwardRef(function (_a, ref) {
12300
- var _b;
12301
- var children = _a.children, className = _a.className, color = _a.color, rest = __rest$1(_a, ["children", "className", "color"]);
12302
- var _className = classNames$1((_b = {},
12303
- _b["table-".concat(color)] = color,
12304
- _b), className);
12305
- return (React__default$1.createElement("th", __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
12306
- });
12307
- CTableHeaderCell.propTypes = {
12308
- children: propTypesExports.node,
12309
- className: propTypesExports.string,
12310
- color: colorPropType,
12311
- };
12312
- CTableHeaderCell.displayName = 'CTableHeaderCell';
12313
-
12314
- var CTableBody = forwardRef(function (_a, ref) {
12315
- var _b;
12316
- var children = _a.children, className = _a.className, color = _a.color, rest = __rest$1(_a, ["children", "className", "color"]);
12317
- var _className = classNames$1((_b = {},
12318
- _b["table-".concat(color)] = color,
12319
- _b), className);
12320
- return (React__default$1.createElement("tbody", __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
12321
- });
12322
- CTableBody.propTypes = {
12323
- children: propTypesExports.node,
12324
- className: propTypesExports.string,
12325
- color: colorPropType,
12326
- };
12327
- CTableBody.displayName = 'CTableBody';
12328
-
12329
- var CTableDataCell = forwardRef(function (_a, ref) {
12330
- var _b;
12331
- var children = _a.children, active = _a.active, align = _a.align, className = _a.className, color = _a.color, rest = __rest$1(_a, ["children", "active", "align", "className", "color"]);
12332
- var _className = classNames$1((_b = {},
12333
- _b["align-".concat(align)] = align,
12334
- _b['table-active'] = active,
12335
- _b["table-".concat(color)] = color,
12336
- _b), className);
12337
- var Component = rest.scope ? 'th' : 'td';
12338
- return (React__default$1.createElement(Component, __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
12339
- });
12340
- CTableDataCell.propTypes = {
12341
- active: propTypesExports.bool,
12342
- align: propTypesExports.oneOf(['bottom', 'middle', 'top']),
12343
- children: propTypesExports.node,
12344
- className: propTypesExports.string,
12345
- color: colorPropType,
12346
- };
12347
- CTableDataCell.displayName = 'CTableDataCell';
12348
-
12349
- var CTableRow = forwardRef(function (_a, ref) {
12350
- var _b;
12351
- var children = _a.children, active = _a.active, align = _a.align, className = _a.className, color = _a.color, rest = __rest$1(_a, ["children", "active", "align", "className", "color"]);
12352
- var _className = classNames$1((_b = {},
12353
- _b["align-".concat(align)] = align,
12354
- _b['table-active'] = active,
12355
- _b["table-".concat(color)] = color,
12356
- _b), className);
12357
- return (React__default$1.createElement("tr", __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
12358
- });
12359
- CTableRow.propTypes = {
12360
- active: propTypesExports.bool,
12361
- align: propTypesExports.oneOf(['bottom', 'middle', 'top']),
12362
- children: propTypesExports.node,
12363
- className: propTypesExports.string,
12364
- color: colorPropType,
12365
- };
12366
- CTableRow.displayName = 'CTableRow';
12367
-
12368
- var CTableFoot = forwardRef(function (_a, ref) {
12369
- var _b;
12370
- var children = _a.children, className = _a.className, color = _a.color, rest = __rest$1(_a, ["children", "className", "color"]);
12371
- var _className = classNames$1((_b = {},
12372
- _b["table-".concat(color)] = color,
12373
- _b), className);
12374
- return (React__default$1.createElement("tfoot", __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
12375
- });
12376
- CTableFoot.propTypes = {
12377
- children: propTypesExports.node,
12378
- className: propTypesExports.string,
12379
- color: colorPropType,
12380
- };
12381
- CTableFoot.displayName = 'CTableFoot';
12382
-
12383
- var CTableCaption = forwardRef(function (_a, ref) {
12384
- var children = _a.children, props = __rest$1(_a, ["children"]);
12385
- return (React__default$1.createElement("caption", __assign$1({}, props, { ref: ref }), children));
12386
- });
12387
- CTableCaption.propTypes = {
12388
- children: propTypesExports.node,
12389
- };
12390
- CTableCaption.displayName = 'CTableCaption';
12391
-
12392
- var CTableResponsiveWrapper = function (_a) {
12393
- var children = _a.children, responsive = _a.responsive, rest = __rest$1(_a, ["children", "responsive"]);
12394
- return responsive ? (React__default$1.createElement("div", __assign$1({ className: typeof responsive === 'boolean' ? 'table-responsive' : "table-responsive-".concat(responsive) }, rest), children)) : (children);
12395
- };
12396
- CTableResponsiveWrapper.propTypes = {
12397
- children: propTypesExports.any,
12398
- responsive: propTypesExports.oneOfType([
12399
- propTypesExports.bool,
12400
- propTypesExports.oneOf(['sm', 'md', 'lg', 'xl', 'xxl']),
12401
- ]),
12402
- };
12403
- CTableResponsiveWrapper.displayName = 'CTableResponsiveWrapper';
12404
-
12405
- var CTable = forwardRef(function (_a, ref) {
12406
- var _b;
12407
- 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, items = _a.items, responsive = _a.responsive, small = _a.small, striped = _a.striped, stripedColumns = _a.stripedColumns, tableFootProps = _a.tableFootProps, tableHeadProps = _a.tableHeadProps, rest = __rest$1(_a, ["children", "align", "borderColor", "bordered", "borderless", "caption", "captionTop", "className", "color", "columns", "footer", "hover", "items", "responsive", "small", "striped", "stripedColumns", "tableFootProps", "tableHeadProps"]);
12408
- var _className = classNames$1('table', (_b = {},
12409
- _b["align-".concat(align)] = align,
12410
- _b["border-".concat(borderColor)] = borderColor,
12411
- _b["caption-top"] = captionTop || caption === 'top',
12412
- _b['table-bordered'] = bordered,
12413
- _b['table-borderless'] = borderless,
12414
- _b["table-".concat(color)] = color,
12415
- _b['table-hover'] = hover,
12416
- _b['table-sm'] = small,
12417
- _b['table-striped'] = striped,
12418
- _b['table-striped-columns'] = stripedColumns,
12419
- _b), className);
12420
- var rawColumnNames = columns
12421
- ? columns.map(function (column) {
12422
- if (typeof column === 'object')
12423
- return column.key;
12424
- else
12425
- return column;
12426
- })
12427
- : Object.keys((items && items[0]) || {}).filter(function (el) { return el.charAt(0) !== '_'; });
12428
- var pretifyName = function (name) {
12429
- return name
12430
- .replace(/[-_.]/g, ' ')
12431
- .replace(/ +/g, ' ')
12432
- .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
12433
- .split(' ')
12434
- .map(function (word) { return word.charAt(0).toUpperCase() + word.slice(1); })
12435
- .join(' ');
12436
- };
12437
- var label = function (column) {
12438
- return typeof column === 'object'
12439
- ? column.label !== undefined
12440
- ? column.label
12441
- : pretifyName(column.key)
12442
- : pretifyName(column);
12443
- };
12444
- return (React__default$1.createElement(CTableResponsiveWrapper, { responsive: responsive },
12445
- React__default$1.createElement("table", __assign$1({ className: _className }, rest, { ref: ref }),
12446
- ((caption && caption !== 'top') || captionTop) && (React__default$1.createElement(CTableCaption, null, caption || captionTop)),
12447
- columns && (React__default$1.createElement(CTableHead, __assign$1({}, tableHeadProps),
12448
- React__default$1.createElement(CTableRow, null, columns.map(function (column, index) { return (React__default$1.createElement(CTableHeaderCell, __assign$1({}, (column._props && __assign$1({}, column._props)), (column._style && { style: __assign$1({}, column._style) }), { key: index }), label(column))); })))),
12449
- items && (React__default$1.createElement(CTableBody, null, items.map(function (item, index) { return (React__default$1.createElement(CTableRow, __assign$1({}, (item._props && __assign$1({}, item._props)), { key: index }), rawColumnNames.map(function (colName, index) {
12450
- return item[colName] ? (React__default$1.createElement(CTableDataCell, __assign$1({}, (item._cellProps && __assign$1(__assign$1({}, (item._cellProps['all'] && __assign$1({}, item._cellProps['all']))), (item._cellProps[colName] && __assign$1({}, item._cellProps[colName])))), { key: index }), item[colName])) : null;
12451
- }))); }))),
12452
- children,
12453
- footer && (React__default$1.createElement(CTableFoot, __assign$1({}, tableFootProps),
12454
- React__default$1.createElement(CTableRow, null, footer.map(function (item, index) { return (React__default$1.createElement(CTableDataCell, __assign$1({}, (typeof item === 'object' && item._props && __assign$1({}, item._props)), { key: index }), typeof item === 'object' ? item.label : item)); })))))));
12455
- });
12456
- CTable.propTypes = {
12457
- align: propTypesExports.oneOf(['bottom', 'middle', 'top']),
12458
- borderColor: propTypesExports.string,
12459
- bordered: propTypesExports.bool,
12460
- borderless: propTypesExports.bool,
12461
- caption: propTypesExports.oneOfType([propTypesExports.string, propTypesExports.oneOf(['top'])]),
12462
- captionTop: propTypesExports.string,
12463
- children: propTypesExports.node,
12464
- className: propTypesExports.string,
12465
- color: colorPropType,
12466
- columns: propTypesExports.array,
12467
- footer: propTypesExports.array,
12468
- hover: propTypesExports.bool,
12469
- items: propTypesExports.array,
12470
- responsive: propTypesExports.oneOfType([
12471
- propTypesExports.bool,
12472
- propTypesExports.oneOf(['sm', 'md', 'lg', 'xl', 'xxl']),
12473
- ]),
12474
- small: propTypesExports.bool,
12475
- striped: propTypesExports.bool,
12476
- stripedColumns: propTypesExports.bool,
12477
- tableFootProps: propTypesExports.shape(__assign$1({}, CTableFoot.propTypes)),
12478
- tableHeadProps: propTypesExports.shape(__assign$1({}, CTableHead.propTypes)),
12479
- };
12480
- CTable.displayName = 'CTable';
12481
-
12482
- var CSmartTableBody = forwardRef(function (_a, ref) {
12483
- var clickableRows = _a.clickableRows, currentItems = _a.currentItems, firstItemOnActivePageIndex = _a.firstItemOnActivePageIndex, noItemsLabel = _a.noItemsLabel, onRowChecked = _a.onRowChecked, onRowClick = _a.onRowClick, rawColumnNames = _a.rawColumnNames, scopedColumns = _a.scopedColumns, selectable = _a.selectable, rest = __rest$1(_a, ["clickableRows", "currentItems", "firstItemOnActivePageIndex", "noItemsLabel", "onRowChecked", "onRowClick", "rawColumnNames", "scopedColumns", "selectable"]);
12484
- var tableDataCellProps = function (item, colName) {
12485
- var props = item._cellProps && __assign$1(__assign$1({}, (item._cellProps['all'] && __assign$1({}, item._cellProps['all']))), (item._cellProps[colName] && __assign$1({}, item._cellProps[colName])));
12486
- return props;
12487
- };
12488
- var getColumnName = function (event) {
12489
- var target = event.target;
12490
- var closest = target.closest('tr');
12491
- var children = closest ? Array.from(closest.children) : [];
12492
- var clickedCell = children.filter(function (child) { return child.contains(target); })[0];
12493
- return rawColumnNames[children.indexOf(clickedCell)];
12494
- };
12495
- var colspan = selectable ? rawColumnNames.length + 1 : rawColumnNames.length;
12496
- return (React__default$1.createElement(CTableBody, __assign$1({}, (clickableRows && {
12497
- style: { cursor: 'pointer' },
12498
- }), rest, { ref: ref }),
12499
- currentItems.map(function (item, trIndex) {
12500
- return (React__default$1.createElement(React__default$1.Fragment, { key: trIndex },
12501
- React__default$1.createElement(CTableRow, __assign$1({}, (item._props && __assign$1({}, item._props)), (clickableRows && { tabIndex: 0 }), { onClick: function (event) {
12502
- return onRowClick &&
12503
- onRowClick(item, trIndex + firstItemOnActivePageIndex, getColumnName(event), event);
12504
- } }),
12505
- selectable && (React__default$1.createElement(CTableDataCell, null,
12506
- React__default$1.createElement(CFormCheck, { checked: item._selected ? item._selected : false, onChange: function (event) {
12507
- return onRowChecked && onRowChecked(item._id, event.target.checked);
12508
- } }))),
12509
- rawColumnNames.map(function (colName, index) {
12510
- return ((scopedColumns &&
12511
- scopedColumns[colName] &&
12512
- React__default$1.cloneElement(scopedColumns[colName](item, trIndex + firstItemOnActivePageIndex), {
12513
- key: index,
12514
- })) || (React__default$1.createElement(CTableDataCell, __assign$1({}, tableDataCellProps(item, colName), { key: index }), String(item[colName]))));
12515
- })),
12516
- scopedColumns && scopedColumns.details && (React__default$1.createElement(React__default$1.Fragment, null,
12517
- React__default$1.createElement(CTableRow, null,
12518
- React__default$1.createElement(CTableDataCell, { colSpan: colspan, className: "p-0", style: { borderBottomWidth: 0 }, tabIndex: -1 })),
12519
- React__default$1.createElement(CTableRow, { onClick: function (event) {
12520
- return onRowClick &&
12521
- onRowClick(item, trIndex + firstItemOnActivePageIndex, getColumnName(event), true);
12522
- }, className: "p-0", key: "details".concat(trIndex) },
12523
- React__default$1.createElement(CTableDataCell, { colSpan: colspan, className: "p-0", style: { border: 0 } }, scopedColumns.details(item, trIndex + firstItemOnActivePageIndex)))))));
12524
- }),
12525
- !currentItems.length && (React__default$1.createElement(CTableRow, null,
12526
- React__default$1.createElement(CTableDataCell, { colSpan: colspan }, noItemsLabel)))));
12527
- });
12528
- CSmartTableBody.propTypes = {
12529
- clickableRows: propTypesExports.bool,
12530
- currentItems: propTypesExports.array.isRequired,
12531
- firstItemOnActivePageIndex: propTypesExports.number.isRequired,
12532
- noItemsLabel: propTypesExports.oneOfType([propTypesExports.string, propTypesExports.node]),
12533
- onRowChecked: propTypesExports.func,
12534
- onRowClick: propTypesExports.func,
12535
- rawColumnNames: propTypesExports.array.isRequired,
12536
- scopedColumns: propTypesExports.object,
12537
- selectable: propTypesExports.bool,
12538
- };
12539
- CSmartTableBody.displayName = 'CSmartTableBody';
12540
-
12541
- /******************************************************************************
12542
- Copyright (c) Microsoft Corporation.
12543
-
12544
- Permission to use, copy, modify, and/or distribute this software for any
12545
- purpose with or without fee is hereby granted.
12546
-
12547
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
12548
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
12549
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12550
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
12551
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
12552
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
12553
- PERFORMANCE OF THIS SOFTWARE.
12554
- ***************************************************************************** */
12555
-
12556
- var __assign = function() {
12557
- __assign = Object.assign || function __assign(t) {
12558
- for (var s, i = 1, n = arguments.length; i < n; i++) {
12559
- s = arguments[i];
12560
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
12561
- }
12562
- return t;
12563
- };
12564
- return __assign.apply(this, arguments);
12565
- };
12566
-
12567
- function __rest(s, e) {
12568
- var t = {};
12569
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
12570
- t[p] = s[p];
12571
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
12572
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
12573
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
12574
- t[p[i]] = s[p[i]];
12575
- }
12576
- return t;
12577
- }
12578
-
12579
- var propTypes = {exports: {}};
12280
+ var propTypes = {exports: {}};
12580
12281
 
12581
12282
  var reactIs = {exports: {}};
12582
12283
 
@@ -13902,126 +13603,532 @@ CIcon.propTypes = {
13902
13603
  };
13903
13604
  CIcon.displayName = 'CIcon';
13904
13605
 
13905
- var CSmartTableCleaner = forwardRef(function (_a, ref) {
13906
- var _b = _a.content, content = _b === void 0 ? React__default$1.createElement(CIcon, { width: 18, icon: cilFilterX }) : _b, isFiltered = _a.isFiltered, rest = __rest$1(_a, ["content", "isFiltered"]);
13907
- return (React__default$1.createElement("button", __assign$1({ type: "button", className: "btn btn-transparent" }, (!isFiltered && {
13908
- disabled: true,
13909
- tabIndex: -1,
13910
- }), rest, { ref: ref }), content));
13911
- });
13912
- CSmartTableCleaner.propTypes = {
13913
- content: propTypesExports.oneOfType([propTypesExports.node, propTypesExports.string]),
13914
- isFiltered: propTypesExports.string,
13915
- };
13916
- CSmartTableCleaner.displayName = 'CSmartTableCleaner';
13917
-
13918
- var CSmartTableFilter = forwardRef(function (_a, ref) {
13919
- var filterLabel = _a.filterLabel, filterPlaceholder = _a.filterPlaceholder, value = _a.value, rest = __rest$1(_a, ["filterLabel", "filterPlaceholder", "value"]);
13920
- return (React__default$1.createElement("div", { className: "row mb-2" },
13921
- React__default$1.createElement(CFormLabel, { className: "col-sm-auto col-form-label" }, filterLabel),
13922
- React__default$1.createElement("div", { className: "col-sm-auto" },
13923
- React__default$1.createElement(CFormInput, __assign$1({ placeholder: filterPlaceholder, value: value }, rest, { ref: ref })))));
13924
- });
13925
- CSmartTableFilter.propTypes = {
13926
- filterLabel: propTypesExports.string,
13927
- filterPlaceholder: propTypesExports.string,
13928
- value: propTypesExports.oneOfType([propTypesExports.number, propTypesExports.string]),
13929
- };
13930
- CSmartTableFilter.displayName = 'CSmartTableFilter';
13931
-
13932
- var CSmartTableHead = forwardRef(function (_a, ref) {
13933
- var columnFilter = _a.columnFilter, columnFilterState = _a.columnFilterState, columnSorter = _a.columnSorter, _b = _a.component, Component = _b === void 0 ? CTableHead : _b, columns = _a.columns, handleOnCustomFilterChange = _a.handleOnCustomFilterChange, handleFilterOnChange = _a.handleFilterOnChange, handleFilterOnInput = _a.handleFilterOnInput, handleSelectAllChecked = _a.handleSelectAllChecked, handleSort = _a.handleSort, items = _a.items, selectable = _a.selectable, selectAll = _a.selectAll, sorterState = _a.sorterState, sortingIcon = _a.sortingIcon, sortingIconAscending = _a.sortingIconAscending, sortingIconDescending = _a.sortingIconDescending, rest = __rest$1(_a, ["columnFilter", "columnFilterState", "columnSorter", "component", "columns", "handleOnCustomFilterChange", "handleFilterOnChange", "handleFilterOnInput", "handleSelectAllChecked", "handleSort", "items", "selectable", "selectAll", "sorterState", "sortingIcon", "sortingIconAscending", "sortingIconDescending"]);
13934
- var _c = useState(false), refresh = _c[0], setRefresh = _c[1];
13935
- useEffect(function () {
13936
- if (columnFilterState && Object.keys(columnFilterState).length === 0) {
13937
- setRefresh(true);
13938
- }
13939
- }, [columnFilterState]);
13940
- useEffect(function () {
13941
- setRefresh(true);
13942
- }, [items]);
13943
- useEffect(function () {
13944
- if (setRefresh) {
13945
- setRefresh(false);
13946
- }
13947
- }, [refresh]);
13948
- var tableHeaderCellProps = function (column) {
13949
- if (typeof column === 'object' && column._props) {
13950
- return column._props;
13606
+ var CSmartPagination = forwardRef(function (_a, ref) {
13607
+ var className = _a.className, _b = _a.activePage, activePage = _b === void 0 ? 1 : _b, _c = _a.align, align = _c === void 0 ? 'start' : _c, _d = _a.arrows, arrows = _d === void 0 ? true : _d, _e = _a.dots, dots = _e === void 0 ? true : _e, _f = _a.doubleArrows, doubleArrows = _f === void 0 ? true : _f, _g = _a.firstButton, firstButton = _g === void 0 ? React__default$1.createElement(React__default$1.Fragment, null, "\u00AB") : _g, _h = _a.lastButton, lastButton = _h === void 0 ? React__default$1.createElement(React__default$1.Fragment, null, "\u00BB") : _h, _j = _a.limit, limit = _j === void 0 ? 5 : _j, _k = _a.nextButton, nextButton = _k === void 0 ? React__default$1.createElement(React__default$1.Fragment, null, "\u203A") : _k, onActivePageChange = _a.onActivePageChange, pages = _a.pages, _l = _a.previousButton, previousButton = _l === void 0 ? React__default$1.createElement(React__default$1.Fragment, null, "\u2039") : _l, size = _a.size, rest = __rest$1(_a, ["className", "activePage", "align", "arrows", "dots", "doubleArrows", "firstButton", "lastButton", "limit", "nextButton", "onActivePageChange", "pages", "previousButton", "size"]);
13608
+ var _classNames = classNames$1("justify-content-".concat(align), className);
13609
+ var showDots = (function () {
13610
+ return dots && limit > 4 && limit < pages;
13611
+ })();
13612
+ var maxPrevItems = (function () {
13613
+ return Math.floor((limit - 1) / 2);
13614
+ })();
13615
+ var maxNextItems = (function () {
13616
+ return Math.ceil((limit - 1) / 2);
13617
+ })();
13618
+ var beforeDots = (function () {
13619
+ return showDots && activePage > maxPrevItems + 1;
13620
+ })();
13621
+ var afterDots = (function () {
13622
+ return showDots && activePage < pages - maxNextItems;
13623
+ })();
13624
+ var computedLimit = (function () {
13625
+ return limit - (afterDots ? 1 : 0) - (beforeDots ? 1 : 0);
13626
+ })();
13627
+ var range = (function () {
13628
+ return activePage + maxNextItems;
13629
+ })();
13630
+ var lastItem = (function () {
13631
+ return range >= pages ? pages : range - (afterDots ? 1 : 0);
13632
+ })();
13633
+ var itemsAmount = (function () {
13634
+ return pages < computedLimit ? pages : computedLimit;
13635
+ })();
13636
+ var items = (function () {
13637
+ if (activePage - maxPrevItems <= 1) {
13638
+ return Array.from({
13639
+ length: itemsAmount,
13640
+ }, function (_v, i) { return i + 1; });
13951
13641
  }
13952
- return {};
13953
- };
13954
- var tableHeaderCellStyles = function (column) {
13955
- var style = { verticalAlign: 'middle', overflow: 'hidden', cursor: '' };
13956
- if (columnSorter &&
13957
- (typeof column !== 'object' ||
13958
- (typeof column === 'object' && (typeof column.sorter === 'undefined' || column.sorter)))) {
13959
- style.cursor = 'pointer';
13642
+ else {
13643
+ return Array.from({
13644
+ length: itemsAmount,
13645
+ }, function (_v, i) {
13646
+ return lastItem - i;
13647
+ }).reverse();
13960
13648
  }
13961
- if (typeof column === 'object' && column._style) {
13962
- return __assign$1(__assign$1({}, style), column._style);
13649
+ })();
13650
+ var setPage = function (number) {
13651
+ if (number !== activePage) {
13652
+ onActivePageChange && onActivePageChange(number);
13963
13653
  }
13964
- return style;
13965
13654
  };
13966
- var pretifyName = function (name) {
13967
- return name
13968
- .replace(/[-_.]/g, ' ')
13969
- .replace(/ +/g, ' ')
13970
- .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
13971
- .split(' ')
13972
- .map(function (word) { return word.charAt(0).toUpperCase() + word.slice(1); })
13973
- .join(' ');
13974
- };
13975
- var label = function (column) {
13976
- return typeof column === 'object'
13977
- ? column.label !== undefined
13978
- ? column.label
13979
- : pretifyName(column.key)
13980
- : pretifyName(column);
13981
- };
13982
- var key = function (column) { return (typeof column === 'object' ? column.key : column); };
13983
- var getColumnSorterState = function (key) {
13984
- if (sorterState && sorterState.column === key) {
13985
- if (sorterState.state) {
13986
- return sorterState.state;
13987
- }
13988
- return 0;
13655
+ return (React__default$1.createElement(CPagination, __assign$1({ className: _classNames, "aria-label": "pagination", size: size }, rest, { ref: ref }),
13656
+ doubleArrows && (React__default$1.createElement(CPaginationItem, { onClick: function () { return setPage(1); }, "aria-label": "Go to first page", "aria-disabled": activePage === 1, disabled: activePage === 1 }, firstButton)),
13657
+ arrows && (React__default$1.createElement(CPaginationItem, { onClick: function () { return setPage(activePage - 1); }, "aria-label": "Go to previous page", "aria-disabled": activePage === 1, disabled: activePage === 1 }, previousButton)),
13658
+ beforeDots && (React__default$1.createElement(CPaginationItem, { role: "separator", disabled: true }, "\u2026")),
13659
+ items.map(function (i) {
13660
+ return (React__default$1.createElement(CPaginationItem, { onClick: function () { return setPage(i); }, "aria-label": activePage === i ? "Current page ".concat(i) : "Go to page ".concat(i), active: activePage === i, key: i }, i));
13661
+ }),
13662
+ afterDots && (React__default$1.createElement(CPaginationItem, { role: "separator", disabled: true }, "\u2026")),
13663
+ arrows && (React__default$1.createElement(CPaginationItem, { onClick: function () { return setPage(activePage + 1); }, "aria-label": "Go to next page", "aria-disabled": activePage === pages, disabled: activePage === pages }, nextButton)),
13664
+ doubleArrows && (React__default$1.createElement(CPaginationItem, { onClick: function () { return setPage(pages); }, "aria-label": "Go to last page", "aria-disabled": activePage === pages, disabled: activePage === pages }, lastButton))));
13665
+ });
13666
+ CSmartPagination.propTypes = {
13667
+ className: propTypesExports.oneOfType([propTypesExports.string]),
13668
+ activePage: propTypesExports.number,
13669
+ dots: propTypesExports.bool,
13670
+ arrows: propTypesExports.bool,
13671
+ doubleArrows: propTypesExports.bool,
13672
+ firstButton: propTypesExports.oneOfType([propTypesExports.node, propTypesExports.string]),
13673
+ previousButton: propTypesExports.oneOfType([propTypesExports.node, propTypesExports.string]),
13674
+ nextButton: propTypesExports.oneOfType([propTypesExports.node, propTypesExports.string]),
13675
+ lastButton: propTypesExports.oneOfType([propTypesExports.node, propTypesExports.string]),
13676
+ size: propTypesExports.oneOf(['sm', 'lg']),
13677
+ align: propTypesExports.oneOf(['start', 'center', 'end']),
13678
+ limit: propTypesExports.number,
13679
+ pages: propTypesExports.number.isRequired,
13680
+ onActivePageChange: propTypesExports.func,
13681
+ };
13682
+ CSmartPagination.displayName = 'CSmartPagination';
13683
+
13684
+ var CTableHead = forwardRef(function (_a, ref) {
13685
+ var _b;
13686
+ var children = _a.children, className = _a.className, color = _a.color, rest = __rest$1(_a, ["children", "className", "color"]);
13687
+ var _className = classNames$1((_b = {},
13688
+ _b["table-".concat(color)] = color,
13689
+ _b), className);
13690
+ return (React__default$1.createElement("thead", __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
13691
+ });
13692
+ CTableHead.propTypes = {
13693
+ children: propTypesExports.node,
13694
+ className: propTypesExports.string,
13695
+ color: colorPropType,
13696
+ };
13697
+ CTableHead.displayName = 'CTableHead';
13698
+
13699
+ var CTableHeaderCell = forwardRef(function (_a, ref) {
13700
+ var _b;
13701
+ var children = _a.children, className = _a.className, color = _a.color, rest = __rest$1(_a, ["children", "className", "color"]);
13702
+ var _className = classNames$1((_b = {},
13703
+ _b["table-".concat(color)] = color,
13704
+ _b), className);
13705
+ return (React__default$1.createElement("th", __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
13706
+ });
13707
+ CTableHeaderCell.propTypes = {
13708
+ children: propTypesExports.node,
13709
+ className: propTypesExports.string,
13710
+ color: colorPropType,
13711
+ };
13712
+ CTableHeaderCell.displayName = 'CTableHeaderCell';
13713
+
13714
+ var CTableBody = forwardRef(function (_a, ref) {
13715
+ var _b;
13716
+ var children = _a.children, className = _a.className, color = _a.color, rest = __rest$1(_a, ["children", "className", "color"]);
13717
+ var _className = classNames$1((_b = {},
13718
+ _b["table-".concat(color)] = color,
13719
+ _b), className);
13720
+ return (React__default$1.createElement("tbody", __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
13721
+ });
13722
+ CTableBody.propTypes = {
13723
+ children: propTypesExports.node,
13724
+ className: propTypesExports.string,
13725
+ color: colorPropType,
13726
+ };
13727
+ CTableBody.displayName = 'CTableBody';
13728
+
13729
+ var CTableDataCell = forwardRef(function (_a, ref) {
13730
+ var _b;
13731
+ var children = _a.children, active = _a.active, align = _a.align, className = _a.className, color = _a.color, rest = __rest$1(_a, ["children", "active", "align", "className", "color"]);
13732
+ var _className = classNames$1((_b = {},
13733
+ _b["align-".concat(align)] = align,
13734
+ _b['table-active'] = active,
13735
+ _b["table-".concat(color)] = color,
13736
+ _b), className);
13737
+ var Component = rest.scope ? 'th' : 'td';
13738
+ return (React__default$1.createElement(Component, __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
13739
+ });
13740
+ CTableDataCell.propTypes = {
13741
+ active: propTypesExports.bool,
13742
+ align: propTypesExports.oneOf(['bottom', 'middle', 'top']),
13743
+ children: propTypesExports.node,
13744
+ className: propTypesExports.string,
13745
+ color: colorPropType,
13746
+ };
13747
+ CTableDataCell.displayName = 'CTableDataCell';
13748
+
13749
+ var CTableRow = forwardRef(function (_a, ref) {
13750
+ var _b;
13751
+ var children = _a.children, active = _a.active, align = _a.align, className = _a.className, color = _a.color, rest = __rest$1(_a, ["children", "active", "align", "className", "color"]);
13752
+ var _className = classNames$1((_b = {},
13753
+ _b["align-".concat(align)] = align,
13754
+ _b['table-active'] = active,
13755
+ _b["table-".concat(color)] = color,
13756
+ _b), className);
13757
+ return (React__default$1.createElement("tr", __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
13758
+ });
13759
+ CTableRow.propTypes = {
13760
+ active: propTypesExports.bool,
13761
+ align: propTypesExports.oneOf(['bottom', 'middle', 'top']),
13762
+ children: propTypesExports.node,
13763
+ className: propTypesExports.string,
13764
+ color: colorPropType,
13765
+ };
13766
+ CTableRow.displayName = 'CTableRow';
13767
+
13768
+ var CTableFoot = forwardRef(function (_a, ref) {
13769
+ var _b;
13770
+ var children = _a.children, className = _a.className, color = _a.color, rest = __rest$1(_a, ["children", "className", "color"]);
13771
+ var _className = classNames$1((_b = {},
13772
+ _b["table-".concat(color)] = color,
13773
+ _b), className);
13774
+ return (React__default$1.createElement("tfoot", __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
13775
+ });
13776
+ CTableFoot.propTypes = {
13777
+ children: propTypesExports.node,
13778
+ className: propTypesExports.string,
13779
+ color: colorPropType,
13780
+ };
13781
+ CTableFoot.displayName = 'CTableFoot';
13782
+
13783
+ var CTableCaption = forwardRef(function (_a, ref) {
13784
+ var children = _a.children, props = __rest$1(_a, ["children"]);
13785
+ return (React__default$1.createElement("caption", __assign$1({}, props, { ref: ref }), children));
13786
+ });
13787
+ CTableCaption.propTypes = {
13788
+ children: propTypesExports.node,
13789
+ };
13790
+ CTableCaption.displayName = 'CTableCaption';
13791
+
13792
+ var CTableResponsiveWrapper = function (_a) {
13793
+ var children = _a.children, responsive = _a.responsive, rest = __rest$1(_a, ["children", "responsive"]);
13794
+ return responsive ? (React__default$1.createElement("div", __assign$1({ className: typeof responsive === 'boolean' ? 'table-responsive' : "table-responsive-".concat(responsive) }, rest), children)) : (children);
13795
+ };
13796
+ CTableResponsiveWrapper.propTypes = {
13797
+ children: propTypesExports.any,
13798
+ responsive: propTypesExports.oneOfType([
13799
+ propTypesExports.bool,
13800
+ propTypesExports.oneOf(['sm', 'md', 'lg', 'xl', 'xxl']),
13801
+ ]),
13802
+ };
13803
+ CTableResponsiveWrapper.displayName = 'CTableResponsiveWrapper';
13804
+
13805
+ var pretifyName$1 = function (name) {
13806
+ return name
13807
+ .replace(/[-_.]/g, ' ')
13808
+ .replace(/ +/g, ' ')
13809
+ .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
13810
+ .split(' ')
13811
+ .map(function (word) { return word.charAt(0).toUpperCase() + word.slice(1); })
13812
+ .join(' ');
13813
+ };
13814
+ var getColumnLabel$1 = function (column) {
13815
+ return typeof column === 'object'
13816
+ ? column.label !== undefined
13817
+ ? column.label
13818
+ : pretifyName$1(column.key)
13819
+ : pretifyName$1(column);
13820
+ };
13821
+ var getColumnNames$1 = function (columns, items) {
13822
+ return columns
13823
+ ? columns.map(function (column) {
13824
+ if (typeof column === 'object')
13825
+ return column.key;
13826
+ else
13827
+ return column;
13828
+ })
13829
+ : items && getColumnNamesFromItems$1(items);
13830
+ };
13831
+ var getColumnNamesFromItems$1 = function (items) {
13832
+ return Object.keys(items[0] || {}).filter(function (el) { return el.charAt(0) !== '_'; });
13833
+ };
13834
+
13835
+ var CTable = forwardRef(function (_a, ref) {
13836
+ var _b;
13837
+ 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, items = _a.items, responsive = _a.responsive, small = _a.small, striped = _a.striped, stripedColumns = _a.stripedColumns, tableFootProps = _a.tableFootProps, tableHeadProps = _a.tableHeadProps, rest = __rest$1(_a, ["children", "align", "borderColor", "bordered", "borderless", "caption", "captionTop", "className", "color", "columns", "footer", "hover", "items", "responsive", "small", "striped", "stripedColumns", "tableFootProps", "tableHeadProps"]);
13838
+ var _className = classNames$1('table', (_b = {},
13839
+ _b["align-".concat(align)] = align,
13840
+ _b["border-".concat(borderColor)] = borderColor,
13841
+ _b["caption-top"] = captionTop || caption === 'top',
13842
+ _b['table-bordered'] = bordered,
13843
+ _b['table-borderless'] = borderless,
13844
+ _b["table-".concat(color)] = color,
13845
+ _b['table-hover'] = hover,
13846
+ _b['table-sm'] = small,
13847
+ _b['table-striped'] = striped,
13848
+ _b['table-striped-columns'] = stripedColumns,
13849
+ _b), className);
13850
+ var columnNames = useMemo(function () { return getColumnNames$1(columns, items); }, [columns, items]);
13851
+ return (React__default$1.createElement(CTableResponsiveWrapper, { responsive: responsive },
13852
+ React__default$1.createElement("table", __assign$1({ className: _className }, rest, { ref: ref }),
13853
+ ((caption && caption !== 'top') || captionTop) && (React__default$1.createElement(CTableCaption, null, caption || captionTop)),
13854
+ columns && (React__default$1.createElement(CTableHead, __assign$1({}, tableHeadProps),
13855
+ React__default$1.createElement(CTableRow, null, columns.map(function (column, index) { return (React__default$1.createElement(CTableHeaderCell, __assign$1({}, (column._props && __assign$1({}, column._props)), (column._style && { style: __assign$1({}, column._style) }), { key: index }), getColumnLabel$1(column))); })))),
13856
+ items && (React__default$1.createElement(CTableBody, null, items.map(function (item, index) { return (React__default$1.createElement(CTableRow, __assign$1({}, (item._props && __assign$1({}, item._props)), { key: index }), columnNames &&
13857
+ columnNames.map(function (colName, index) {
13858
+ return item[colName] ? (React__default$1.createElement(CTableDataCell, __assign$1({}, (item._cellProps && __assign$1(__assign$1({}, (item._cellProps['all'] && __assign$1({}, item._cellProps['all']))), (item._cellProps[colName] && __assign$1({}, item._cellProps[colName])))), { key: index }), item[colName])) : null;
13859
+ }))); }))),
13860
+ children,
13861
+ footer && (React__default$1.createElement(CTableFoot, __assign$1({}, tableFootProps),
13862
+ React__default$1.createElement(CTableRow, null, footer.map(function (item, index) { return (React__default$1.createElement(CTableDataCell, __assign$1({}, (typeof item === 'object' && item._props && __assign$1({}, item._props)), { key: index }), typeof item === 'object' ? item.label : item)); })))))));
13863
+ });
13864
+ CTable.propTypes = {
13865
+ align: propTypesExports.oneOf(['bottom', 'middle', 'top']),
13866
+ borderColor: propTypesExports.string,
13867
+ bordered: propTypesExports.bool,
13868
+ borderless: propTypesExports.bool,
13869
+ caption: propTypesExports.oneOfType([propTypesExports.string, propTypesExports.oneOf(['top'])]),
13870
+ captionTop: propTypesExports.string,
13871
+ children: propTypesExports.node,
13872
+ className: propTypesExports.string,
13873
+ color: colorPropType,
13874
+ columns: propTypesExports.array,
13875
+ footer: propTypesExports.array,
13876
+ hover: propTypesExports.bool,
13877
+ items: propTypesExports.array,
13878
+ responsive: propTypesExports.oneOfType([
13879
+ propTypesExports.bool,
13880
+ propTypesExports.oneOf(['sm', 'md', 'lg', 'xl', 'xxl']),
13881
+ ]),
13882
+ small: propTypesExports.bool,
13883
+ striped: propTypesExports.bool,
13884
+ stripedColumns: propTypesExports.bool,
13885
+ tableFootProps: propTypesExports.shape(__assign$1({}, CTableFoot.propTypes)),
13886
+ tableHeadProps: propTypesExports.shape(__assign$1({}, CTableHead.propTypes)),
13887
+ };
13888
+ CTable.displayName = 'CTable';
13889
+
13890
+ var filterColumns = function (items, columnFilter, columnFilterState, itemsDataColumns) {
13891
+ if (columnFilter && typeof columnFilter === 'object' && columnFilter.external) {
13892
+ return items;
13893
+ }
13894
+ Object.entries(columnFilterState).forEach(function (_a) {
13895
+ var key = _a[0], value = _a[1];
13896
+ if (value instanceof Function) {
13897
+ items = items.filter(function (item) { return value(item[key]); });
13898
+ return;
13899
+ }
13900
+ var columnFilter = String(value).toLowerCase();
13901
+ if (columnFilter && itemsDataColumns.includes(key)) {
13902
+ items = items.filter(function (item) {
13903
+ return String(item[key]).toLowerCase().includes(columnFilter);
13904
+ });
13905
+ }
13906
+ });
13907
+ return items;
13908
+ };
13909
+ var filterTable = function (items, tableFilter, tableFilterState, itemsDataColumns) {
13910
+ if (!tableFilterState ||
13911
+ (tableFilter && typeof tableFilter === 'object' && tableFilter.external)) {
13912
+ return items;
13913
+ }
13914
+ var filter = tableFilterState.toLowerCase();
13915
+ var valueContainFilter = function (val) { return String(val).toLowerCase().includes(filter); };
13916
+ items = items.filter(function (item) {
13917
+ return !!itemsDataColumns.find(function (key) { return valueContainFilter(item[key]); });
13918
+ });
13919
+ return items;
13920
+ };
13921
+ var getClickedColumnName = function (target, columnNames) {
13922
+ var closest = target.closest('tr');
13923
+ var children = closest ? Array.from(closest.children) : [];
13924
+ var clickedCell = children.filter(function (child) { return child.contains(target); })[0];
13925
+ return columnNames[children.indexOf(clickedCell)];
13926
+ };
13927
+ var getColumnKey = function (column) {
13928
+ return typeof column === 'object' ? column.key : column;
13929
+ };
13930
+ var getColumnLabel = function (column) {
13931
+ return typeof column === 'object'
13932
+ ? column.label !== undefined
13933
+ ? column.label
13934
+ : pretifyName(column.key)
13935
+ : pretifyName(column);
13936
+ };
13937
+ var getColumnNames = function (columns, items) {
13938
+ return columns
13939
+ ? columns.map(function (column) {
13940
+ if (typeof column === 'object')
13941
+ return column.key;
13942
+ else
13943
+ return column;
13944
+ })
13945
+ : getColumnNamesFromItems(items);
13946
+ };
13947
+ var getColumnNamesFromItems = function (items) {
13948
+ return Object.keys(items[0] || {}).filter(function (el) { return el.charAt(0) !== '_'; });
13949
+ };
13950
+ var getColumnSorterState = function (key, sorterState) {
13951
+ if (sorterState && sorterState.column === key) {
13952
+ if (sorterState.state) {
13953
+ return sorterState.state;
13989
13954
  }
13990
13955
  return 0;
13991
- };
13992
- var getValues = function (items, key) {
13993
- return items.map(function (a) { return a[key]; });
13994
- };
13956
+ }
13957
+ return 0;
13958
+ };
13959
+ var getColumnValues = function (items, key) {
13960
+ return items.map(function (item) { return item[key]; });
13961
+ };
13962
+ var getTableDataCellProps = function (item, colName) {
13963
+ var props = item._cellProps && __assign$1(__assign$1({}, (item._cellProps['all'] && __assign$1({}, item._cellProps['all']))), (item._cellProps[colName] && __assign$1({}, item._cellProps[colName])));
13964
+ return props;
13965
+ };
13966
+ var getTableHeaderCellProps = function (column) {
13967
+ if (typeof column === 'object' && column._props) {
13968
+ return column._props;
13969
+ }
13970
+ return {};
13971
+ };
13972
+ var getTableHeaderCellStyles = function (column, columnSorter) {
13973
+ var style = {};
13974
+ if (columnSorter &&
13975
+ (typeof column !== 'object' ||
13976
+ (typeof column === 'object' && (typeof column.sorter === 'undefined' || column.sorter)))) {
13977
+ style['cursor'] = 'pointer';
13978
+ }
13979
+ if (typeof column === 'object' && column._style) {
13980
+ return __assign$1(__assign$1({}, style), column._style);
13981
+ }
13982
+ return style;
13983
+ };
13984
+ var isSortable = function (i, columns, columnSorter, itemsDataColumns, columnNames) {
13985
+ var isDataColumn = itemsDataColumns.includes(columnNames[i]);
13986
+ var column;
13987
+ if (columns)
13988
+ column = columns[i];
13989
+ return (columnSorter &&
13990
+ (!columns ||
13991
+ typeof column !== 'object' ||
13992
+ (typeof column === 'object' && (typeof column.sorter === 'undefined' || column.sorter))) &&
13993
+ isDataColumn);
13994
+ };
13995
+ var pretifyName = function (name) {
13996
+ return name
13997
+ .replace(/[-_.]/g, ' ')
13998
+ .replace(/ +/g, ' ')
13999
+ .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
14000
+ .split(' ')
14001
+ .map(function (word) { return word.charAt(0).toUpperCase() + word.slice(1); })
14002
+ .join(' ');
14003
+ };
14004
+ var sortItems = function (columnSorter, items, itemsDataColumns, sorterState) {
14005
+ var column = sorterState.column;
14006
+ if (!column ||
14007
+ !itemsDataColumns.includes(column) ||
14008
+ (columnSorter && typeof columnSorter === 'object' && columnSorter.external)) {
14009
+ return items;
14010
+ }
14011
+ var flip = sorterState.state === 'asc' ? 1 : sorterState.state === 'desc' ? -1 : 0;
14012
+ var sorted = items.slice().sort(function (item, item2) {
14013
+ var value = item[column];
14014
+ var value2 = item2[column];
14015
+ var a = typeof value === 'number' ? value : String(value).toLowerCase();
14016
+ var b = typeof value2 === 'number' ? value2 : String(value2).toLowerCase();
14017
+ return a > b ? 1 * flip : b > a ? -1 * flip : 0;
14018
+ });
14019
+ return sorted;
14020
+ };
14021
+
14022
+ var CSmartTableBody = forwardRef(function (_a, ref) {
14023
+ var clickableRows = _a.clickableRows, columnNames = _a.columnNames, currentItems = _a.currentItems, firstItemOnActivePageIndex = _a.firstItemOnActivePageIndex, noItemsLabel = _a.noItemsLabel, onRowChecked = _a.onRowChecked, onRowClick = _a.onRowClick, scopedColumns = _a.scopedColumns, selectable = _a.selectable, selected = _a.selected, rest = __rest$1(_a, ["clickableRows", "columnNames", "currentItems", "firstItemOnActivePageIndex", "noItemsLabel", "onRowChecked", "onRowClick", "scopedColumns", "selectable", "selected"]);
14024
+ var colspan = selectable ? columnNames.length + 1 : columnNames.length;
14025
+ return (React__default$1.createElement(CTableBody, __assign$1({}, (clickableRows && {
14026
+ style: { cursor: 'pointer' },
14027
+ }), rest, { ref: ref }), currentItems.length ? (currentItems.map(function (item, trIndex) {
14028
+ return (React__default$1.createElement(React__default$1.Fragment, { key: trIndex },
14029
+ React__default$1.createElement(CTableRow, __assign$1({}, (item._props && __assign$1({}, item._props)), (clickableRows && { tabIndex: 0 }), { onClick: function (event) {
14030
+ return onRowClick &&
14031
+ onRowClick(item, trIndex + firstItemOnActivePageIndex, getClickedColumnName(event.target, columnNames), event);
14032
+ } }),
14033
+ selectable && (React__default$1.createElement(CTableDataCell, null,
14034
+ React__default$1.createElement(CFormCheck, { checked: selected &&
14035
+ isObjectInArray(selected, item, ['_cellProps', '_props', '_selected']), onChange: function (event) {
14036
+ var _item = __assign$1({}, item);
14037
+ delete _item['_cellProps'];
14038
+ delete _item['_props'];
14039
+ delete _item['_selected'];
14040
+ onRowChecked && onRowChecked(_item, event.target.checked);
14041
+ } }))),
14042
+ columnNames.map(function (colName, index) {
14043
+ return ((scopedColumns &&
14044
+ scopedColumns[colName] &&
14045
+ React__default$1.cloneElement(scopedColumns[colName](item, trIndex + firstItemOnActivePageIndex), {
14046
+ key: index,
14047
+ })) || (React__default$1.createElement(CTableDataCell, __assign$1({}, getTableDataCellProps(item, colName), { key: index }), String(item[colName]))));
14048
+ })),
14049
+ scopedColumns && scopedColumns.details && (React__default$1.createElement(React__default$1.Fragment, null,
14050
+ React__default$1.createElement(CTableRow, null,
14051
+ React__default$1.createElement(CTableDataCell, { colSpan: colspan, className: "p-0", style: { borderBottomWidth: 0 }, tabIndex: -1 })),
14052
+ React__default$1.createElement(CTableRow, { onClick: function (event) {
14053
+ return onRowClick &&
14054
+ onRowClick(item, trIndex + firstItemOnActivePageIndex, getClickedColumnName(event.target, columnNames), true);
14055
+ }, className: "p-0", key: "details".concat(trIndex) },
14056
+ React__default$1.createElement(CTableDataCell, { colSpan: colspan, className: "p-0", style: { border: 0 } }, scopedColumns.details(item, trIndex + firstItemOnActivePageIndex)))))));
14057
+ })) : (React__default$1.createElement(CTableRow, null,
14058
+ React__default$1.createElement(CTableDataCell, { colSpan: colspan }, noItemsLabel)))));
14059
+ });
14060
+ CSmartTableBody.propTypes = {
14061
+ clickableRows: propTypesExports.bool,
14062
+ currentItems: propTypesExports.array.isRequired,
14063
+ firstItemOnActivePageIndex: propTypesExports.number.isRequired,
14064
+ noItemsLabel: propTypesExports.oneOfType([propTypesExports.string, propTypesExports.node]),
14065
+ onRowChecked: propTypesExports.func,
14066
+ onRowClick: propTypesExports.func,
14067
+ columnNames: propTypesExports.array.isRequired,
14068
+ scopedColumns: propTypesExports.object,
14069
+ selectable: propTypesExports.bool,
14070
+ selected: propTypesExports.array,
14071
+ };
14072
+ CSmartTableBody.displayName = 'CSmartTableBody';
14073
+
14074
+ var CSmartTableCleaner = forwardRef(function (_a, ref) {
14075
+ var _b = _a.content, content = _b === void 0 ? React__default$1.createElement(CIcon, { width: 18, icon: cilFilterX }) : _b, isFiltered = _a.isFiltered, rest = __rest$1(_a, ["content", "isFiltered"]);
14076
+ return (React__default$1.createElement("button", __assign$1({ type: "button", className: "btn btn-transparent" }, (!isFiltered && {
14077
+ disabled: true,
14078
+ tabIndex: -1,
14079
+ }), rest, { ref: ref }), content));
14080
+ });
14081
+ CSmartTableCleaner.propTypes = {
14082
+ content: propTypesExports.oneOfType([propTypesExports.node, propTypesExports.string]),
14083
+ isFiltered: propTypesExports.string,
14084
+ };
14085
+ CSmartTableCleaner.displayName = 'CSmartTableCleaner';
14086
+
14087
+ var CSmartTableHead = forwardRef(function (_a, ref) {
14088
+ var columnFilter = _a.columnFilter, columnFilterState = _a.columnFilterState, columnSorter = _a.columnSorter, _b = _a.component, Component = _b === void 0 ? CTableHead : _b, columns = _a.columns, handleOnCustomFilterChange = _a.handleOnCustomFilterChange, handleFilterOnChange = _a.handleFilterOnChange, handleFilterOnInput = _a.handleFilterOnInput, handleSelectAllChecked = _a.handleSelectAllChecked, handleSort = _a.handleSort, items = _a.items, selectable = _a.selectable, selectAll = _a.selectAll, selectedAll = _a.selectedAll, sorterState = _a.sorterState, sortingIcon = _a.sortingIcon, sortingIconAscending = _a.sortingIconAscending, sortingIconDescending = _a.sortingIconDescending, rest = __rest$1(_a, ["columnFilter", "columnFilterState", "columnSorter", "component", "columns", "handleOnCustomFilterChange", "handleFilterOnChange", "handleFilterOnInput", "handleSelectAllChecked", "handleSort", "items", "selectable", "selectAll", "selectedAll", "sorterState", "sortingIcon", "sortingIconAscending", "sortingIconDescending"]);
14089
+ var selectAllcheckboxRef = useRef(null);
14090
+ var _c = useState(false), refresh = _c[0], setRefresh = _c[1];
14091
+ useEffect(function () {
14092
+ if (selectedAll === 'indeterminate') {
14093
+ if (selectAllcheckboxRef.current)
14094
+ selectAllcheckboxRef.current.indeterminate = true;
14095
+ }
14096
+ else {
14097
+ if (selectAllcheckboxRef.current)
14098
+ selectAllcheckboxRef.current.indeterminate = false;
14099
+ }
14100
+ }, [selectedAll]);
14101
+ useEffect(function () {
14102
+ if (columnFilterState && Object.keys(columnFilterState).length === 0) {
14103
+ setRefresh(true);
14104
+ }
14105
+ }, [columnFilterState]);
14106
+ useEffect(function () {
14107
+ setRefresh(true);
14108
+ }, [items]);
14109
+ useEffect(function () {
14110
+ if (setRefresh) {
14111
+ setRefresh(false);
14112
+ }
14113
+ }, [refresh]);
13995
14114
  var columnSorterIcon = function (column) {
13996
- if (getColumnSorterState(key(column)) === 0) {
14115
+ if (getColumnSorterState(getColumnKey(column), sorterState) === 0) {
13997
14116
  return React__default$1.createElement("span", { className: "opacity-25 float-end me-1" }, sortingIcon);
13998
14117
  }
13999
- if (getColumnSorterState(key(column)) === 'asc') {
14118
+ if (getColumnSorterState(getColumnKey(column), sorterState) === 'asc') {
14000
14119
  return React__default$1.createElement("span", { className: "float-end me-1" }, sortingIconAscending);
14001
14120
  }
14002
- if (getColumnSorterState(key(column)) === 'desc') {
14121
+ if (getColumnSorterState(getColumnKey(column), sorterState) === 'desc') {
14003
14122
  return React__default$1.createElement("span", { className: "float-end me-1" }, sortingIconDescending);
14004
14123
  }
14005
14124
  return;
14006
14125
  };
14007
- var checkboxRef = useRef(null);
14008
- useEffect(function () {
14009
- if (selectAll === 'indeterminate') {
14010
- if (checkboxRef.current)
14011
- checkboxRef.current.indeterminate = true;
14012
- }
14013
- else {
14014
- if (checkboxRef.current)
14015
- checkboxRef.current.indeterminate = false;
14016
- }
14017
- }, [selectAll]);
14018
14126
  return (React__default$1.createElement(Component, __assign$1({}, rest, { ref: ref }),
14019
14127
  React__default$1.createElement(CTableRow, null,
14020
- selectable && (React__default$1.createElement(CTableHeaderCell, null,
14021
- React__default$1.createElement(CFormCheck, { checked: typeof selectAll === 'boolean' ? selectAll : false, onChange: function () { return handleSelectAllChecked && handleSelectAllChecked(); }, ref: checkboxRef }))),
14128
+ selectable && (React__default$1.createElement(CTableHeaderCell, null, selectAll && (React__default$1.createElement(CFormCheck, { checked: typeof selectedAll === 'boolean' ? selectedAll : false, onChange: function () { return handleSelectAllChecked && handleSelectAllChecked(); }, ref: selectAllcheckboxRef })))),
14022
14129
  columns.map(function (column, index) {
14023
- return (React__default$1.createElement(CTableHeaderCell, __assign$1({}, tableHeaderCellProps(column), { onClick: function () { return handleSort && handleSort(key(column), index); }, style: tableHeaderCellStyles(column), key: index }),
14024
- React__default$1.createElement("div", { className: "d-inline" }, label(column)),
14130
+ return (React__default$1.createElement(CTableHeaderCell, __assign$1({}, getTableHeaderCellProps(column), { onClick: function () { return handleSort && handleSort(getColumnKey(column), index); }, style: getTableHeaderCellStyles(column, columnSorter), key: index }),
14131
+ React__default$1.createElement("div", { className: "d-inline" }, getColumnLabel(column)),
14025
14132
  columnSorter &&
14026
14133
  (typeof column !== 'object'
14027
14134
  ? true
@@ -14033,23 +14140,23 @@ var CSmartTableHead = forwardRef(function (_a, ref) {
14033
14140
  columnFilter && (React__default$1.createElement(CTableRow, null,
14034
14141
  selectable && React__default$1.createElement(CTableHeaderCell, null),
14035
14142
  columns.map(function (column, index) {
14036
- return (React__default$1.createElement(CTableHeaderCell, __assign$1({}, tableHeaderCellProps(column), { key: index }), (typeof column !== 'object'
14143
+ return (React__default$1.createElement(CTableHeaderCell, __assign$1({}, getTableHeaderCellProps(column), { key: index }), (typeof column !== 'object'
14037
14144
  ? true
14038
14145
  : typeof column.filter === 'undefined'
14039
14146
  ? true
14040
14147
  : column.filter) ? (typeof column !== 'string' && typeof column.filter === 'function' ? (!refresh &&
14041
- column.filter(getValues(items, key(column)), function (value) {
14148
+ column.filter(getColumnValues(items, getColumnKey(column)), function (value) {
14042
14149
  return handleOnCustomFilterChange &&
14043
- handleOnCustomFilterChange(key(column), value);
14150
+ handleOnCustomFilterChange(getColumnKey(column), value);
14044
14151
  })) : (React__default$1.createElement(CFormInput, { size: "sm", onInput: function (event) {
14045
14152
  return handleFilterOnInput &&
14046
- handleFilterOnInput(key(column), event.target.value);
14153
+ handleFilterOnInput(getColumnKey(column), event.target.value);
14047
14154
  }, onChange: function (event) {
14048
14155
  return handleFilterOnChange &&
14049
- handleFilterOnChange(key(column), event.target.value);
14050
- }, value: columnFilterState && columnFilterState[key(column)]
14051
- ? columnFilterState[key(column)]
14052
- : '', "aria-label": "column name: '".concat(label(column), "' filter input") }))) : ('')));
14156
+ handleFilterOnChange(getColumnKey(column), event.target.value);
14157
+ }, value: columnFilterState && columnFilterState[getColumnKey(column)]
14158
+ ? columnFilterState[getColumnKey(column)]
14159
+ : '', "aria-label": "column name: '".concat(getColumnLabel(column), "' filter input") }))) : ('')));
14053
14160
  })))));
14054
14161
  });
14055
14162
  CSmartTableHead.propTypes = {
@@ -14064,7 +14171,8 @@ CSmartTableHead.propTypes = {
14064
14171
  handleSelectAllChecked: propTypesExports.func,
14065
14172
  handleSort: propTypesExports.func,
14066
14173
  selectable: propTypesExports.bool,
14067
- selectAll: propTypesExports.oneOfType([propTypesExports.bool, propTypesExports.string]),
14174
+ selectAll: propTypesExports.oneOfType([propTypesExports.bool, propTypesExports.object]),
14175
+ selectedAll: propTypesExports.oneOfType([propTypesExports.bool, propTypesExports.string]),
14068
14176
  sorterState: propTypesExports.object,
14069
14177
  sortingIcon: propTypesExports.node,
14070
14178
  sortingIconAscending: propTypesExports.node,
@@ -14072,72 +14180,152 @@ CSmartTableHead.propTypes = {
14072
14180
  };
14073
14181
  CSmartTableHead.displayName = 'CSmartTableHead';
14074
14182
 
14075
- var CSmartTableItemsPerPageSelector = forwardRef(function (_a, ref) {
14076
- var itemsPerPage = _a.itemsPerPage, itemsPerPageLabel = _a.itemsPerPageLabel, itemsPerPageOptions = _a.itemsPerPageOptions, rest = __rest$1(_a, ["itemsPerPage", "itemsPerPageLabel", "itemsPerPageOptions"]);
14077
- return (React__default$1.createElement("div", { className: "row" },
14078
- React__default$1.createElement(CFormLabel, { className: "col-auto col-form-label" }, itemsPerPageLabel),
14079
- React__default$1.createElement("div", { className: "col-auto" },
14080
- React__default$1.createElement(CFormSelect, __assign$1({ defaultValue: itemsPerPage }, rest, { ref: ref }), itemsPerPageOptions &&
14081
- itemsPerPageOptions.map(function (number, index) {
14082
- return (React__default$1.createElement("option", { value: number, key: index }, number));
14083
- })))));
14084
- });
14085
- CSmartTableItemsPerPageSelector.propTypes = {
14086
- itemsPerPage: propTypesExports.number,
14087
- itemsPerPageLabel: propTypesExports.string,
14088
- itemsPerPageOptions: propTypesExports.array,
14089
- };
14090
- CSmartTableItemsPerPageSelector.displayName = 'CSmartTableItemsPerPageSelector';
14091
-
14092
14183
  var CSmartTable = forwardRef(function (_a, ref) {
14093
14184
  var _b = _a.activePage, activePage = _b === void 0 ? 1 : _b, cleaner = _a.cleaner, clickableRows = _a.clickableRows, columnFilter = _a.columnFilter, columnFilterValue = _a.columnFilterValue, // TODO: consider to use only columnFilter prop
14094
- columns = _a.columns, columnSorter = _a.columnSorter, footer = _a.footer, _c = _a.header, header = _c === void 0 ? true : _c, items = _a.items, _d = _a.itemsPerPage, itemsPerPage = _d === void 0 ? 10 : _d, _e = _a.itemsPerPageLabel, itemsPerPageLabel = _e === void 0 ? 'Items per page:' : _e, _f = _a.itemsPerPageOptions, itemsPerPageOptions = _f === void 0 ? [5, 10, 20, 50] : _f, itemsPerPageSelect = _a.itemsPerPageSelect, loading = _a.loading, _g = _a.noItemsLabel, noItemsLabel = _g === void 0 ? 'No items found' : _g, onActivePageChange = _a.onActivePageChange, onColumnFilterChange = _a.onColumnFilterChange, onFilteredItemsChange = _a.onFilteredItemsChange, onItemsPerPageChange = _a.onItemsPerPageChange, onRowClick = _a.onRowClick, onSelectedItemsChange = _a.onSelectedItemsChange, onSorterChange = _a.onSorterChange, onTableFilterChange = _a.onTableFilterChange, pagination = _a.pagination, paginationProps = _a.paginationProps, scopedColumns = _a.scopedColumns, selectable = _a.selectable, sorterValue = _a.sorterValue, _h = _a.sortingIcon, sortingIcon = _h === void 0 ? React__default$1.createElement(CIcon, { width: 18, icon: cilSwapVertical, key: "csv" }) : _h, _j = _a.sortingIconAscending, sortingIconAscending = _j === void 0 ? React__default$1.createElement(CIcon, { width: 18, icon: cilArrowTop, key: "cat" }) : _j, _k = _a.sortingIconDescending, sortingIconDescending = _k === void 0 ? React__default$1.createElement(CIcon, { width: 18, icon: cilArrowBottom, key: "cab" }) : _k, tableBodyProps = _a.tableBodyProps, tableFootProps = _a.tableFootProps, tableFilter = _a.tableFilter, _l = _a.tableFilterLabel, tableFilterLabel = _l === void 0 ? 'Filter:' : _l, _m = _a.tableFilterPlaceholder, tableFilterPlaceholder = _m === void 0 ? 'type string...' : _m, tableFilterValue = _a.tableFilterValue, // TODO: consider to use only tableFilter prop
14095
- tableHeadProps = _a.tableHeadProps, tableProps = _a.tableProps, rest = __rest$1(_a, ["activePage", "cleaner", "clickableRows", "columnFilter", "columnFilterValue", "columns", "columnSorter", "footer", "header", "items", "itemsPerPage", "itemsPerPageLabel", "itemsPerPageOptions", "itemsPerPageSelect", "loading", "noItemsLabel", "onActivePageChange", "onColumnFilterChange", "onFilteredItemsChange", "onItemsPerPageChange", "onRowClick", "onSelectedItemsChange", "onSorterChange", "onTableFilterChange", "pagination", "paginationProps", "scopedColumns", "selectable", "sorterValue", "sortingIcon", "sortingIconAscending", "sortingIconDescending", "tableBodyProps", "tableFootProps", "tableFilter", "tableFilterLabel", "tableFilterPlaceholder", "tableFilterValue", "tableHeadProps", "tableProps"]);
14096
- // instance data
14185
+ columns = _a.columns, columnSorter = _a.columnSorter, elementCover = _a.elementCover, footer = _a.footer, _c = _a.header, header = _c === void 0 ? true : _c, items = _a.items, itemsNumber = _a.itemsNumber, _d = _a.itemsPerPage, itemsPerPage = _d === void 0 ? 10 : _d, _e = _a.itemsPerPageLabel, itemsPerPageLabel = _e === void 0 ? 'Items per page:' : _e, _f = _a.itemsPerPageOptions, itemsPerPageOptions = _f === void 0 ? [5, 10, 20, 50] : _f, itemsPerPageSelect = _a.itemsPerPageSelect, loading = _a.loading, _g = _a.noItemsLabel, noItemsLabel = _g === void 0 ? 'No items found' : _g, onActivePageChange = _a.onActivePageChange, onColumnFilterChange = _a.onColumnFilterChange, onFilteredItemsChange = _a.onFilteredItemsChange, onItemsPerPageChange = _a.onItemsPerPageChange, onRowClick = _a.onRowClick, onSelectAll = _a.onSelectAll, onSelectedItemsChange = _a.onSelectedItemsChange, onSorterChange = _a.onSorterChange, onTableFilterChange = _a.onTableFilterChange, pagination = _a.pagination, paginationProps = _a.paginationProps, scopedColumns = _a.scopedColumns, selected = _a.selected, selectable = _a.selectable, _h = _a.selectAll, selectAll = _h === void 0 ? true : _h, sorterValue = _a.sorterValue, _j = _a.sortingIcon, sortingIcon = _j === void 0 ? React__default$1.createElement(CIcon, { width: 18, icon: cilSwapVertical, key: "csv" }) : _j, _k = _a.sortingIconAscending, sortingIconAscending = _k === void 0 ? React__default$1.createElement(CIcon, { width: 18, icon: cilArrowTop, key: "cat" }) : _k, _l = _a.sortingIconDescending, sortingIconDescending = _l === void 0 ? React__default$1.createElement(CIcon, { width: 18, icon: cilArrowBottom, key: "cab" }) : _l, tableBodyProps = _a.tableBodyProps, tableFootProps = _a.tableFootProps, tableFilter = _a.tableFilter, _m = _a.tableFilterLabel, tableFilterLabel = _m === void 0 ? 'Filter:' : _m, _o = _a.tableFilterPlaceholder, tableFilterPlaceholder = _o === void 0 ? 'type string...' : _o, tableFilterValue = _a.tableFilterValue, // TODO: consider to use only tableFilter prop
14186
+ tableHeadProps = _a.tableHeadProps, tableProps = _a.tableProps, rest = __rest$1(_a, ["activePage", "cleaner", "clickableRows", "columnFilter", "columnFilterValue", "columns", "columnSorter", "elementCover", "footer", "header", "items", "itemsNumber", "itemsPerPage", "itemsPerPageLabel", "itemsPerPageOptions", "itemsPerPageSelect", "loading", "noItemsLabel", "onActivePageChange", "onColumnFilterChange", "onFilteredItemsChange", "onItemsPerPageChange", "onRowClick", "onSelectAll", "onSelectedItemsChange", "onSorterChange", "onTableFilterChange", "pagination", "paginationProps", "scopedColumns", "selected", "selectable", "selectAll", "sorterValue", "sortingIcon", "sortingIconAscending", "sortingIconDescending", "tableBodyProps", "tableFootProps", "tableFilter", "tableFilterLabel", "tableFilterPlaceholder", "tableFilterValue", "tableHeadProps", "tableProps"]);
14097
14187
  var mountedRef = useRef(false);
14098
- var _o = useState(activePage), _activePage = _o[0], setActivePage = _o[1];
14099
- var _p = useState([]), _items = _p[0], setItems = _p[1];
14100
- var _q = useState(itemsPerPage), _itemsPerPage = _q[0], setItemsPerPage = _q[1];
14101
- var _r = useState({}), columnFilterState = _r[0], setColumnFilterState = _r[1];
14102
- var _s = useState(), selectedAll = _s[0], setSelectedAll = _s[1];
14103
- var _t = useState({}), sorterState = _t[0], setSorterState = _t[1];
14104
- var _u = useState(tableFilterValue ? tableFilterValue : ''), tableFilterState = _u[0], setTableFilterState = _u[1];
14188
+ var _p = useState(activePage), _activePage = _p[0], setActivePage = _p[1];
14189
+ var _q = useState([]), _items = _q[0], setItems = _q[1];
14190
+ var _r = useState(itemsNumber), _itemsNumber = _r[0], setItemsNumber = _r[1];
14191
+ var _s = useState(itemsPerPage), _itemsPerPage = _s[0], setItemsPerPage = _s[1];
14192
+ var _t = useState([]), _selected = _t[0], setSelected = _t[1];
14193
+ var _u = useState({}), columnFilterState = _u[0], setColumnFilterState = _u[1];
14194
+ var _v = useState(), selectedAll = _v[0], setSelectedAll = _v[1];
14195
+ var _w = useState({}), sorterState = _w[0], setSorterState = _w[1];
14196
+ var _x = useState(tableFilterValue ? tableFilterValue : ''), tableFilterState = _x[0], setTableFilterState = _x[1];
14105
14197
  useEffect(function () {
14106
14198
  setActivePage(activePage);
14107
14199
  }, [activePage]);
14108
- // watch
14109
- useMemo(function () {
14200
+ useEffect(function () {
14110
14201
  if (items && items.length < _itemsPerPage * _activePage - _itemsPerPage) {
14111
14202
  setActivePage(1);
14112
14203
  }
14113
- // Create the internal array of items
14114
- Array.isArray(items) &&
14115
- setItems(items === null || items === void 0 ? void 0 : items.map(function (item, index) {
14116
- return __assign$1(__assign$1({}, item), { _id: index });
14117
- }));
14204
+ items &&
14205
+ items.forEach(function (item) {
14206
+ if (item._selected) {
14207
+ var _item = __assign$1({}, item);
14208
+ delete _item['_cellProps'];
14209
+ delete _item['_props'];
14210
+ delete _item['_selected'];
14211
+ setSelected(__spreadArray(__spreadArray([], _selected, true), [_item], false));
14212
+ }
14213
+ });
14214
+ if (Array.isArray(items)) {
14215
+ setItems(items);
14216
+ setItemsNumber(itemsNumber || items.length);
14217
+ }
14118
14218
  }, [JSON.stringify(items)]);
14119
- useMemo(function () {
14219
+ useEffect(function () {
14220
+ Array.isArray(selected) && setSelected(selected);
14221
+ }, [JSON.stringify(selected)]);
14222
+ useEffect(function () {
14223
+ itemsNumber && setItemsNumber(itemsNumber);
14224
+ }, [itemsNumber]);
14225
+ useEffect(function () {
14120
14226
  columnFilterValue && setColumnFilterState(columnFilterValue);
14121
14227
  }, [JSON.stringify(columnFilterValue)]);
14122
- useMemo(function () {
14228
+ useEffect(function () {
14123
14229
  setSorterState(__assign$1({}, sorterValue));
14124
14230
  }, [JSON.stringify(sorterValue)]);
14125
- useMemo(function () { return setItemsPerPage(itemsPerPage); }, [itemsPerPage]);
14126
- // functions
14127
- var isSortable = function (i) {
14128
- var isDataColumn = itemsDataColumns.includes(rawColumnNames[i]);
14129
- var column;
14130
- if (columns)
14131
- column = columns[i];
14132
- return (columnSorter &&
14133
- (!columns ||
14134
- typeof column !== 'object' ||
14135
- (typeof column === 'object' &&
14136
- (typeof column.sorter === 'undefined' || column.sorter))) &&
14137
- isDataColumn);
14231
+ useEffect(function () { return setItemsPerPage(itemsPerPage); }, [itemsPerPage]);
14232
+ useEffect(function () {
14233
+ mountedRef.current && onActivePageChange && onActivePageChange(_activePage);
14234
+ }, [_activePage]);
14235
+ useEffect(function () {
14236
+ mountedRef.current && onItemsPerPageChange && onItemsPerPageChange(_itemsPerPage);
14237
+ itemsPerPage !== _itemsPerPage && setActivePage(1); // TODO: set proper page after _itemsPerPage update
14238
+ }, [_itemsPerPage]);
14239
+ useEffect(function () {
14240
+ mountedRef.current && sorterState && onSorterChange && onSorterChange(sorterState);
14241
+ }, [JSON.stringify(sorterState)]);
14242
+ useEffect(function () {
14243
+ mountedRef.current && onColumnFilterChange && onColumnFilterChange(columnFilterState);
14244
+ }, [columnFilterState]);
14245
+ useEffect(function () {
14246
+ mountedRef.current && onTableFilterChange && onTableFilterChange(tableFilterState);
14247
+ }, [tableFilterState]);
14248
+ useEffect(function () {
14249
+ if (selectable) {
14250
+ onSelectedItemsChange && onSelectedItemsChange(_selected);
14251
+ if (_selected.length === _itemsNumber) {
14252
+ setSelectedAll(true);
14253
+ return;
14254
+ }
14255
+ if (_selected.length === 0) {
14256
+ setSelectedAll(false);
14257
+ return;
14258
+ }
14259
+ if (_selected.length !== 0 && _selected.length !== _itemsNumber) {
14260
+ setSelectedAll('indeterminate');
14261
+ }
14262
+ }
14263
+ }, [JSON.stringify(_selected), _itemsNumber]);
14264
+ var columnNames = useMemo(function () { return getColumnNames(columns, _items); }, [columns, _items]);
14265
+ var itemsDataColumns = useMemo(function () { return columnNames.filter(function (name) { return getColumnNamesFromItems(_items).includes(name); }); }, [columnNames, _items]);
14266
+ var filteredColumns = useMemo(function () { return filterColumns(_items, columnFilter, columnFilterState, itemsDataColumns); }, [columnFilterState, JSON.stringify(_items)]);
14267
+ var filteredTable = useMemo(function () { return filterTable(filteredColumns, tableFilter, tableFilterState, itemsDataColumns); }, [tableFilterState, JSON.stringify(tableFilterValue), JSON.stringify(filteredColumns)]);
14268
+ var sortedItems = useMemo(function () { return sortItems(columnSorter, filteredTable, itemsDataColumns, sorterState); }, [
14269
+ JSON.stringify(filteredTable),
14270
+ JSON.stringify(sorterState),
14271
+ JSON.stringify(columnSorter),
14272
+ JSON.stringify(filteredColumns),
14273
+ JSON.stringify(_items),
14274
+ ]);
14275
+ var numberOfPages = _itemsPerPage ? Math.ceil(sortedItems.length / _itemsPerPage) : 1;
14276
+ var firstItemOnActivePageIndex = _activePage ? (_activePage - 1) * _itemsPerPage : 0;
14277
+ var currentItems = _activePage
14278
+ ? sortedItems.slice(firstItemOnActivePageIndex, firstItemOnActivePageIndex + _itemsPerPage)
14279
+ : sortedItems;
14280
+ useEffect(function () {
14281
+ mountedRef.current && onFilteredItemsChange && onFilteredItemsChange(sortedItems);
14282
+ }, [JSON.stringify(sortedItems)]);
14283
+ var handleClean = function () {
14284
+ setTableFilterState('');
14285
+ setColumnFilterState({});
14286
+ setSorterState({});
14138
14287
  };
14139
- var sorterChange = function (column, index) {
14140
- if (!isSortable(index)) {
14288
+ var handleColumnFilterChange = function (colName, value, type) {
14289
+ var _a;
14290
+ var isLazy = columnFilter && typeof columnFilter === 'object' && columnFilter.lazy === true;
14291
+ if ((isLazy && type === 'input') || (!isLazy && type === 'change')) {
14292
+ return;
14293
+ }
14294
+ var newState = __assign$1(__assign$1({}, columnFilterState), (_a = {}, _a["".concat(colName)] = value, _a));
14295
+ setActivePage(1);
14296
+ setColumnFilterState(newState);
14297
+ };
14298
+ var handleItemsPerPageChange = function (event) {
14299
+ if (typeof itemsPerPageSelect !== 'object' ||
14300
+ (typeof itemsPerPageSelect === 'object' && !itemsPerPageSelect.external)) {
14301
+ setItemsPerPage(Number(event.target.value));
14302
+ }
14303
+ };
14304
+ var handleRowChecked = function (item, value) {
14305
+ if (value && !isObjectInArray(_selected, item, ['_cellProps', '_props', '_selected'])) {
14306
+ setSelected(__spreadArray(__spreadArray([], _selected, true), [item], false));
14307
+ return;
14308
+ }
14309
+ setSelected(_selected.filter(function (_item) { return !isObjectInArray([_item], item, ['_cellProps', '_props', '_selected']); }));
14310
+ };
14311
+ var handleSelectAllChecked = function () {
14312
+ if (selectedAll === true) {
14313
+ setSelected([]);
14314
+ return;
14315
+ }
14316
+ onSelectAll && onSelectAll();
14317
+ if (selectAll && typeof selectAll === 'object' && selectAll.external) {
14318
+ return;
14319
+ }
14320
+ setSelected(_items.map(function (item) {
14321
+ delete item['_cellProps'];
14322
+ delete item['_props'];
14323
+ delete item['_selected'];
14324
+ return item;
14325
+ }));
14326
+ };
14327
+ var handleSorterChange = function (column, index) {
14328
+ if (!isSortable(index, columns, columnSorter, itemsDataColumns, columnNames)) {
14141
14329
  return;
14142
14330
  }
14143
14331
  //if column changed or sort was descending change asc to true
@@ -14164,22 +14352,7 @@ var CSmartTable = forwardRef(function (_a, ref) {
14164
14352
  }
14165
14353
  setSorterState(__assign$1({}, state));
14166
14354
  };
14167
- var itemsPerPageChange = function (event) {
14168
- if (typeof itemsPerPageSelect !== 'object' ||
14169
- (typeof itemsPerPageSelect === 'object' && !itemsPerPageSelect.external))
14170
- setItemsPerPage(Number(event.target.value));
14171
- };
14172
- var columnFilterChange = function (colName, value, type) {
14173
- var _a;
14174
- var isLazy = columnFilter && typeof columnFilter === 'object' && columnFilter.lazy === true;
14175
- if ((isLazy && type === 'input') || (!isLazy && type === 'change')) {
14176
- return;
14177
- }
14178
- var newState = __assign$1(__assign$1({}, columnFilterState), (_a = {}, _a["".concat(colName)] = value, _a));
14179
- setActivePage(1);
14180
- setColumnFilterState(newState);
14181
- };
14182
- var tableFilterChange = function (value, type) {
14355
+ var handleTableFilterChange = function (value, type) {
14183
14356
  var isLazy = tableFilter && typeof tableFilter === 'object' && tableFilter.lazy === true;
14184
14357
  if ((isLazy && type === 'input') || (!isLazy && type === 'change')) {
14185
14358
  return;
@@ -14187,171 +14360,55 @@ var CSmartTable = forwardRef(function (_a, ref) {
14187
14360
  setActivePage(1);
14188
14361
  setTableFilterState(value);
14189
14362
  };
14190
- var clean = function () {
14191
- setTableFilterState('');
14192
- setColumnFilterState({});
14193
- setSorterState({});
14194
- };
14195
- // computed
14196
- var genCols = Object.keys(_items[0] || {}).filter(function (el) { return el.charAt(0) !== '_'; });
14197
- var rawColumnNames = columns
14198
- ? columns.map(function (column) {
14199
- if (typeof column === 'object')
14200
- return column.key;
14201
- else
14202
- return column;
14203
- })
14204
- : genCols; //! || el
14205
- var itemsDataColumns = rawColumnNames.filter(function (name) { return genCols.includes(name); });
14206
- // variables
14207
- var filteredColumns = useMemo(function () {
14208
- var items = _items;
14209
- if (columnFilter && typeof columnFilter === 'object' && columnFilter.external) {
14210
- return items;
14211
- }
14212
- Object.entries(columnFilterState).forEach(function (_a) {
14213
- var key = _a[0], value = _a[1];
14214
- if (value instanceof Function) {
14215
- items = items.filter(function (item) { return value(item[key]); });
14216
- return;
14217
- }
14218
- var columnFilter = String(value).toLowerCase();
14219
- if (columnFilter && itemsDataColumns.includes(key)) {
14220
- items = items.filter(function (item) {
14221
- return String(item[key]).toLowerCase().includes(columnFilter);
14222
- });
14223
- }
14224
- });
14225
- return items;
14226
- }, [columnFilterState, JSON.stringify(_items)]);
14227
- var filteredTable = useMemo(function () {
14228
- var items = filteredColumns;
14229
- if (!tableFilterState ||
14230
- (tableFilter && typeof tableFilter === 'object' && tableFilter.external)) {
14231
- return items;
14232
- }
14233
- var filter = tableFilterState.toLowerCase();
14234
- var valueContainFilter = function (val) { return String(val).toLowerCase().includes(filter); };
14235
- items = items.filter(function (item) {
14236
- return !!itemsDataColumns.find(function (key) { return valueContainFilter(item[key]); });
14237
- });
14238
- return items;
14239
- }, [tableFilterState, JSON.stringify(tableFilterValue), JSON.stringify(filteredColumns)]);
14240
- var sortedItems = useMemo(function () {
14241
- var col = sorterState === null || sorterState === void 0 ? void 0 : sorterState.column;
14242
- if (!col ||
14243
- !itemsDataColumns.includes(col) ||
14244
- (columnSorter && typeof columnSorter === 'object' && columnSorter.external)) {
14245
- return filteredTable;
14246
- }
14247
- var flip = sorterState.state === 'asc' ? 1 : sorterState.state === 'desc' ? -1 : 0;
14248
- var sorted = filteredTable.slice().sort(function (item, item2) {
14249
- var value = item[col];
14250
- var value2 = item2[col];
14251
- var a = typeof value === 'number' ? value : String(value).toLowerCase();
14252
- var b = typeof value2 === 'number' ? value2 : String(value2).toLowerCase();
14253
- return a > b ? 1 * flip : b > a ? -1 * flip : 0;
14254
- });
14255
- return sorted;
14256
- }, [
14257
- JSON.stringify(filteredTable),
14258
- JSON.stringify(sorterState),
14259
- JSON.stringify(columnSorter),
14260
- JSON.stringify(filteredColumns),
14261
- JSON.stringify(_items),
14262
- ]);
14263
- var numberOfPages = _itemsPerPage ? Math.ceil(sortedItems.length / _itemsPerPage) : 1;
14264
- var firstItemOnActivePageIndex = _activePage ? (_activePage - 1) * _itemsPerPage : 0;
14265
- var itemsOnActivePage = sortedItems.slice(firstItemOnActivePageIndex, firstItemOnActivePageIndex + _itemsPerPage);
14266
- var currentItems = _activePage ? itemsOnActivePage : sortedItems;
14267
- var isFiltered = tableFilterState || (sorterState === null || sorterState === void 0 ? void 0 : sorterState.column) || Object.values(columnFilterState).join('');
14268
- // effects
14269
- useEffect(function () {
14270
- mountedRef.current && onActivePageChange && onActivePageChange(_activePage);
14271
- }, [_activePage]);
14272
- useEffect(function () {
14273
- mountedRef.current && onItemsPerPageChange && onItemsPerPageChange(_itemsPerPage);
14274
- itemsPerPage !== _itemsPerPage && setActivePage(1); // TODO: set proper page after _itemsPerPage update
14275
- }, [_itemsPerPage]);
14276
- useEffect(function () {
14277
- mountedRef.current && sorterState && onSorterChange && onSorterChange(sorterState);
14278
- }, [JSON.stringify(sorterState)]);
14279
- useEffect(function () {
14280
- mountedRef.current && onColumnFilterChange && onColumnFilterChange(columnFilterState);
14281
- }, [columnFilterState]);
14282
- useEffect(function () {
14283
- mountedRef.current && onTableFilterChange && onTableFilterChange(tableFilterState);
14284
- }, [tableFilterState]);
14285
- useEffect(function () {
14286
- mountedRef.current && onFilteredItemsChange && onFilteredItemsChange(sortedItems);
14287
- }, [JSON.stringify(sortedItems)]);
14288
- var handleRowChecked = function (id, value) {
14289
- var newArr = __spreadArray([], _items, true);
14290
- newArr[id]._selected = value;
14291
- setItems(newArr);
14292
- };
14293
- var handleSelectAllChecked = function () {
14294
- if (selectedAll === true) {
14295
- setItems(_items.map(function (item) {
14296
- return __assign$1(__assign$1({}, item), { _selected: false });
14297
- }));
14298
- return;
14299
- }
14300
- setItems(_items.map(function (item) {
14301
- return __assign$1(__assign$1({}, item), { _selected: true });
14302
- }));
14303
- };
14304
- useEffect(function () {
14305
- if (selectable) {
14306
- var selected = _items.filter(function (item) { return item._selected === true; });
14307
- onSelectedItemsChange && onSelectedItemsChange(selected);
14308
- if (selected.length === _items.length) {
14309
- setSelectedAll(true);
14310
- return;
14311
- }
14312
- if (selected.length === 0) {
14313
- setSelectedAll(false);
14314
- return;
14315
- }
14316
- if (selected.length !== 0 && selected.length !== _items.length) {
14317
- setSelectedAll('indeterminate');
14318
- }
14319
- }
14320
- }, [_items]);
14321
14363
  useEffect(function () {
14322
14364
  mountedRef.current = true;
14323
14365
  }, []);
14324
14366
  return (React__default$1.createElement(React__default$1.Fragment, null,
14325
14367
  React__default$1.createElement("div", __assign$1({}, rest, { ref: ref }), (itemsPerPageSelect || tableFilter || cleaner) && (React__default$1.createElement("div", { className: "row my-2 mx-0" }, (tableFilter || cleaner) && (React__default$1.createElement(React__default$1.Fragment, null,
14326
- React__default$1.createElement("div", { className: "col-auto p-0" }, tableFilter && (React__default$1.createElement(CSmartTableFilter, { filterLabel: tableFilterLabel, filterPlaceholder: tableFilterPlaceholder, onInput: function (e) {
14327
- tableFilterChange(e.target.value, 'input');
14328
- }, onChange: function (e) {
14329
- tableFilterChange(e.target.value, 'change');
14330
- }, value: tableFilterState || '' }))),
14331
- React__default$1.createElement("div", { className: "col-auto p-0" }, cleaner && (React__default$1.createElement(CSmartTableCleaner, { isFiltered: isFiltered, onClick: function () { return clean(); }, onKeyUp: function (event) {
14368
+ React__default$1.createElement("div", { className: "col-auto p-0" }, tableFilter && (React__default$1.createElement("div", { className: "row mb-2" },
14369
+ React__default$1.createElement(CFormLabel, { className: "col-sm-auto col-form-label" }, tableFilterLabel),
14370
+ React__default$1.createElement("div", { className: "col-sm-auto" },
14371
+ React__default$1.createElement(CFormInput, { onInput: function (e) {
14372
+ handleTableFilterChange(e.target.value, 'input');
14373
+ }, onChange: function (e) {
14374
+ handleTableFilterChange(e.target.value, 'change');
14375
+ }, placeholder: tableFilterPlaceholder, value: tableFilterState || '' }))))),
14376
+ React__default$1.createElement("div", { className: "col-auto p-0" }, cleaner && (React__default$1.createElement(CSmartTableCleaner, { isFiltered: tableFilterState ||
14377
+ (sorterState === null || sorterState === void 0 ? void 0 : sorterState.column) ||
14378
+ Object.values(columnFilterState).join(''), onClick: function () { return handleClean(); }, onKeyDown: function (event) {
14332
14379
  if (event.key === 'Enter')
14333
- clean();
14380
+ handleClean();
14334
14381
  } })))))))),
14335
14382
  React__default$1.createElement("div", { className: "position-relative" },
14336
14383
  React__default$1.createElement(CTable, __assign$1({}, tableProps),
14337
- header && (React__default$1.createElement(CSmartTableHead, __assign$1({}, tableHeadProps, { columnFilter: columnFilter, columnFilterState: columnFilterState, columns: columns ? columns : rawColumnNames, columnSorter: columnSorter, items: _items, selectable: selectable, selectAll: selectedAll, sorterState: sorterState, sortingIcon: sortingIcon, sortingIconAscending: sortingIconAscending, sortingIconDescending: sortingIconDescending, handleFilterOnChange: function (key, event) { return columnFilterChange(key, event, 'change'); }, handleFilterOnInput: function (key, event) { return columnFilterChange(key, event, 'input'); }, handleOnCustomFilterChange: function (key, event) { return columnFilterChange(key, event); }, handleSelectAllChecked: function () { return handleSelectAllChecked(); }, handleSort: function (key, index) { return sorterChange(key, index); } }))),
14384
+ header && (React__default$1.createElement(CSmartTableHead, __assign$1({}, tableHeadProps, { columnFilter: columnFilter, columnFilterState: columnFilterState, columns: columns ? columns : columnNames, columnSorter: columnSorter, items: _items, selectable: selectable, selectAll: selectAll, selectedAll: selectedAll, sorterState: sorterState, sortingIcon: sortingIcon, sortingIconAscending: sortingIconAscending, sortingIconDescending: sortingIconDescending, handleFilterOnChange: function (key, event) {
14385
+ return handleColumnFilterChange(key, event, 'change');
14386
+ }, handleFilterOnInput: function (key, event) { return handleColumnFilterChange(key, event, 'input'); }, handleOnCustomFilterChange: function (key, event) { return handleColumnFilterChange(key, event); }, handleSelectAllChecked: function () { return handleSelectAllChecked(); }, handleSort: function (key, index) { return handleSorterChange(key, index); } }))),
14338
14387
  React__default$1.createElement(CSmartTableBody, __assign$1({ clickableRows: clickableRows, currentItems: currentItems, firstItemOnActivePageIndex: firstItemOnActivePageIndex, noItemsLabel: noItemsLabel, onRowClick: function (item, index, columnName, event) {
14339
14388
  return clickableRows && onRowClick && onRowClick(item, index, columnName, event);
14340
- }, onRowChecked: function (id, value) { return handleRowChecked(id, value); }, rawColumnNames: rawColumnNames, scopedColumns: scopedColumns, selectable: selectable }, tableBodyProps)),
14341
- typeof footer === 'boolean' && footer && (React__default$1.createElement(CSmartTableHead, __assign$1({ component: CTableFoot }, tableFootProps, { columnFilter: false, columnSorter: false, columns: columns ? columns : rawColumnNames, items: _items, handleSelectAllChecked: function () { return handleSelectAllChecked(); }, selectable: selectable, selectAll: selectedAll }))),
14389
+ }, onRowChecked: function (item, value) { return handleRowChecked(item, value); }, columnNames: columnNames, scopedColumns: scopedColumns, selectable: selectable, selected: _selected }, tableBodyProps)),
14390
+ typeof footer === 'boolean' && footer && (React__default$1.createElement(CSmartTableHead, __assign$1({ component: CTableFoot }, tableFootProps, { columnFilter: false, columnSorter: false, columns: columns ? columns : columnNames, items: _items, handleSelectAllChecked: function () { return handleSelectAllChecked(); }, selectable: selectable, selectAll: selectAll, selectedAll: selectedAll }))),
14342
14391
  Array.isArray(footer) && (React__default$1.createElement(CTableFoot, __assign$1({}, tableFootProps),
14343
14392
  React__default$1.createElement(CTableRow, null, footer.map(function (item, index) { return (React__default$1.createElement(CTableDataCell, __assign$1({}, (typeof item === 'object' && item._props && __assign$1({}, item._props)), { key: index }), typeof item === 'object' ? item.label : item)); }))))),
14344
14393
  loading && (React__default$1.createElement(CElementCover, { boundaries: [
14345
- { sides: ['top'], query: 'td' },
14394
+ { sides: ['top'], query: 'tbody' },
14346
14395
  { sides: ['bottom'], query: 'tbody' },
14347
- ] }))),
14396
+ ] }, elementCover))),
14348
14397
  (pagination || itemsPerPageSelect) && (React__default$1.createElement("div", { className: "row" },
14349
14398
  React__default$1.createElement("div", { className: "col" }, ((pagination && numberOfPages > 1) || paginationProps) && (React__default$1.createElement(CSmartPagination, __assign$1({ activePage: _activePage, onActivePageChange: function (page) {
14350
14399
  pagination && typeof pagination === 'object' && pagination.external
14351
14400
  ? onActivePageChange && onActivePageChange(page)
14352
14401
  : setActivePage(page);
14353
14402
  }, pages: numberOfPages }, paginationProps)))),
14354
- React__default$1.createElement("div", { className: "col-auto ms-auto" }, itemsPerPageSelect && (React__default$1.createElement(CSmartTableItemsPerPageSelector, { itemsPerPage: _itemsPerPage, itemsPerPageLabel: itemsPerPageLabel, itemsPerPageOptions: itemsPerPageOptions, onChange: function (event) { return itemsPerPageChange(event); } })))))));
14403
+ React__default$1.createElement("div", { className: "col-auto ms-auto" }, itemsPerPageSelect && (React__default$1.createElement("div", { className: "row" },
14404
+ React__default$1.createElement(CFormLabel, { className: "col-auto col-form-label" }, itemsPerPageLabel),
14405
+ React__default$1.createElement("div", { className: "col-auto" },
14406
+ React__default$1.createElement(CFormSelect, { defaultValue: _itemsPerPage, onChange: function (event) {
14407
+ return handleItemsPerPageChange(event);
14408
+ } }, itemsPerPageOptions &&
14409
+ itemsPerPageOptions.map(function (number, index) {
14410
+ return (React__default$1.createElement("option", { value: number, key: index }, number));
14411
+ }))))))))));
14355
14412
  });
14356
14413
  CSmartTable.propTypes = {
14357
14414
  activePage: propTypesExports.number,
@@ -14361,9 +14418,11 @@ CSmartTable.propTypes = {
14361
14418
  columnFilterValue: propTypesExports.object,
14362
14419
  columns: propTypesExports.array,
14363
14420
  columnSorter: propTypesExports.oneOfType([propTypesExports.bool, propTypesExports.object]),
14421
+ elementCover: propTypesExports.node,
14364
14422
  footer: propTypesExports.oneOfType([propTypesExports.bool, propTypesExports.array]),
14365
14423
  header: propTypesExports.bool,
14366
14424
  items: propTypesExports.array,
14425
+ itemsNumber: propTypesExports.number,
14367
14426
  itemsPerPage: propTypesExports.number,
14368
14427
  itemsPerPageLabel: propTypesExports.string,
14369
14428
  itemsPerPageOptions: propTypesExports.array,
@@ -14375,6 +14434,7 @@ CSmartTable.propTypes = {
14375
14434
  onFilteredItemsChange: propTypesExports.func,
14376
14435
  onItemsPerPageChange: propTypesExports.func,
14377
14436
  onRowClick: propTypesExports.func,
14437
+ onSelectAll: propTypesExports.func,
14378
14438
  onSelectedItemsChange: propTypesExports.func,
14379
14439
  onSorterChange: propTypesExports.func,
14380
14440
  onTableFilterChange: propTypesExports.func,
@@ -14382,6 +14442,8 @@ CSmartTable.propTypes = {
14382
14442
  paginationProps: propTypesExports.any,
14383
14443
  scopedColumns: propTypesExports.object,
14384
14444
  selectable: propTypesExports.bool,
14445
+ selectAll: propTypesExports.oneOfType([propTypesExports.bool, propTypesExports.object]),
14446
+ selected: propTypesExports.array,
14385
14447
  sorterValue: propTypesExports.object,
14386
14448
  sortingIcon: propTypesExports.node,
14387
14449
  sortingIconAscending: propTypesExports.node,
@@ -14934,5 +14996,5 @@ CWidgetStatsF.propTypes = {
14934
14996
  };
14935
14997
  CWidgetStatsF.displayName = 'CWidgetStatsF';
14936
14998
 
14937
- export { CAccordion, CAccordionBody, CAccordionButton, CAccordionCollapse, CAccordionHeader, CAccordionItem, CAlert, CAlertHeading, CAlertLink, CAvatar, CBackdrop, CBadge, CBreadcrumb, CBreadcrumbItem, CButton, CButtonGroup, CButtonToolbar, CCallout, CCard, CCardBody, CCardFooter, CCardGroup, CCardHeader, CCardImage, CCardImageOverlay, CCardLink, CCardSubtitle, CCardText, CCardTitle, CCarousel, CCarouselCaption, CCarouselItem, CCloseButton, CCol, CCollapse, CContainer, CDatePicker, CDateRangePicker, CDropdown, CDropdownDivider, CDropdownHeader, CDropdownItem, CDropdownItemPlain, CDropdownMenu, CDropdownToggle, CFooter, CForm, CFormCheck, CFormControlValidation, CFormControlWrapper, CFormFeedback, CFormFloating, CFormInput, CFormLabel, CFormRange, CFormSelect, CFormSwitch, CFormText, CFormTextarea, CHeader, CHeaderBrand, CHeaderDivider, CHeaderNav, CHeaderText, CHeaderToggler, CImage, CInputGroup, CInputGroupText, CLink, CListGroup, CListGroupItem, CLoadingButton, CModal, CModalBody, CModalContent, CModalDialog, CModalFooter, CModalHeader, CModalTitle, CMultiSelect, CNav, CNavGroup, CNavGroupItems, CNavItem, CNavLink, CNavTitle, CNavbar, CNavbarBrand, CNavbarNav, CNavbarText, CNavbarToggler, COffcanvas, COffcanvasBody, COffcanvasHeader, COffcanvasTitle, CPagination, CPaginationItem, CPlaceholder, CPopover, CProgress, CProgressBar, CRow, CSidebar, CSidebarBrand, CSidebarFooter, CSidebarHeader, CSidebarNav, CSidebarToggler, CSmartPagination, CSmartTable, CSpinner, CTabContent, CTabPane, CTable, CTableBody, CTableCaption, CTableDataCell, CTableFoot, CTableHead, CTableHeaderCell, CTableRow, CTimePicker, CToast, CToastBody, CToastClose, CToastHeader, CToaster, CTooltip, CVirtualScroller, CWidgetStatsA, CWidgetStatsB, CWidgetStatsC, CWidgetStatsD, CWidgetStatsE, CWidgetStatsF };
14999
+ export { CAccordion, CAccordionBody, CAccordionButton, CAccordionCollapse, CAccordionHeader, CAccordionItem, CAlert, CAlertHeading, CAlertLink, CAvatar, CBackdrop, CBadge, CBreadcrumb, CBreadcrumbItem, CButton, CButtonGroup, CButtonToolbar, CCallout, CCard, CCardBody, CCardFooter, CCardGroup, CCardHeader, CCardImage, CCardImageOverlay, CCardLink, CCardSubtitle, CCardText, CCardTitle, CCarousel, CCarouselCaption, CCarouselItem, CCloseButton, CCol, CCollapse, CContainer, CDatePicker, CDateRangePicker, CDropdown, CDropdownDivider, CDropdownHeader, CDropdownItem, CDropdownItemPlain, CDropdownMenu, CDropdownToggle, CElementCover, CFooter, CForm, CFormCheck, CFormControlValidation, CFormControlWrapper, CFormFeedback, CFormFloating, CFormInput, CFormLabel, CFormRange, CFormSelect, CFormSwitch, CFormText, CFormTextarea, CHeader, CHeaderBrand, CHeaderDivider, CHeaderNav, CHeaderText, CHeaderToggler, CImage, CInputGroup, CInputGroupText, CLink, CListGroup, CListGroupItem, CLoadingButton, CModal, CModalBody, CModalContent, CModalDialog, CModalFooter, CModalHeader, CModalTitle, CMultiSelect, CNav, CNavGroup, CNavGroupItems, CNavItem, CNavLink, CNavTitle, CNavbar, CNavbarBrand, CNavbarNav, CNavbarText, CNavbarToggler, COffcanvas, COffcanvasBody, COffcanvasHeader, COffcanvasTitle, CPagination, CPaginationItem, CPlaceholder, CPopover, CProgress, CProgressBar, CRow, CSidebar, CSidebarBrand, CSidebarFooter, CSidebarHeader, CSidebarNav, CSidebarToggler, CSmartPagination, CSmartTable, CSpinner, CTabContent, CTabPane, CTable, CTableBody, CTableCaption, CTableDataCell, CTableFoot, CTableHead, CTableHeaderCell, CTableRow, CTimePicker, CToast, CToastBody, CToastClose, CToastHeader, CToaster, CTooltip, CVirtualScroller, CWidgetStatsA, CWidgetStatsB, CWidgetStatsC, CWidgetStatsD, CWidgetStatsE, CWidgetStatsF };
14938
15000
  //# sourceMappingURL=index.es.js.map