@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.js CHANGED
@@ -2669,6 +2669,20 @@ CAccordionHeader.propTypes = {
2669
2669
  };
2670
2670
  CAccordionHeader.displayName = 'CAccordionHeader';
2671
2671
 
2672
+ var CCloseButton = React$1.forwardRef(function (_a, ref) {
2673
+ var className = _a.className, disabled = _a.disabled, white = _a.white, rest = __rest$1(_a, ["className", "disabled", "white"]);
2674
+ var _className = classNames$1('btn', 'btn-close', {
2675
+ 'btn-close-white': white,
2676
+ }, disabled, className);
2677
+ return (React$1.createElement("button", __assign$1({ type: "button", className: _className, "aria-label": "Close", disabled: disabled }, rest, { ref: ref })));
2678
+ });
2679
+ CCloseButton.propTypes = {
2680
+ className: propTypesExports.string,
2681
+ disabled: propTypesExports.bool,
2682
+ white: propTypesExports.bool,
2683
+ };
2684
+ CCloseButton.displayName = 'CCloseButton';
2685
+
2672
2686
  var colorPropType = propTypesExports.oneOfType([
2673
2687
  propTypesExports.oneOf([
2674
2688
  'primary',
@@ -2732,20 +2746,6 @@ var textColorsPropType = propTypesExports.oneOfType([
2732
2746
  ]);
2733
2747
  var triggerPropType = propTypesExports.oneOf(['hover', 'focus', 'click']);
2734
2748
 
2735
- var CCloseButton = React$1.forwardRef(function (_a, ref) {
2736
- var className = _a.className, disabled = _a.disabled, white = _a.white, rest = __rest$1(_a, ["className", "disabled", "white"]);
2737
- var _className = classNames$1('btn', 'btn-close', {
2738
- 'btn-close-white': white,
2739
- }, disabled, className);
2740
- return (React$1.createElement("button", __assign$1({ type: "button", className: _className, "aria-label": "Close", disabled: disabled }, rest, { ref: ref })));
2741
- });
2742
- CCloseButton.propTypes = {
2743
- className: propTypesExports.string,
2744
- disabled: propTypesExports.bool,
2745
- white: propTypesExports.bool,
2746
- };
2747
- CCloseButton.displayName = 'CCloseButton';
2748
-
2749
2749
  var CAlert = React$1.forwardRef(function (_a, ref) {
2750
2750
  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"]);
2751
2751
  var alertRef = React$1.useRef(null);
@@ -3110,38 +3110,6 @@ CCardTitle.propTypes = {
3110
3110
  };
3111
3111
  CCardTitle.displayName = 'CCardTitle';
3112
3112
 
3113
- var getNextSibling = function (elem, selector) {
3114
- // Get the next sibling element
3115
- var sibling = elem.nextElementSibling;
3116
- // If there's no selector, return the first sibling
3117
- if (!selector)
3118
- return sibling;
3119
- // If the sibling matches our selector, use it
3120
- // If not, jump to the next sibling and continue the loop
3121
- while (sibling) {
3122
- if (sibling.matches(selector))
3123
- return sibling;
3124
- sibling = sibling.nextElementSibling;
3125
- }
3126
- return;
3127
- };
3128
-
3129
- var getPreviousSibling = function (elem, selector) {
3130
- // Get the next sibling element
3131
- var sibling = elem.previousElementSibling;
3132
- // If there's no selector, return the first sibling
3133
- if (!selector)
3134
- return sibling;
3135
- // If the sibling matches our selector, use it
3136
- // If not, jump to the next sibling and continue the loop
3137
- while (sibling) {
3138
- if (sibling.matches(selector))
3139
- return sibling;
3140
- sibling = sibling.previousElementSibling;
3141
- }
3142
- return;
3143
- };
3144
-
3145
3113
  var isInViewport = function (element) {
3146
3114
  var rect = element.getBoundingClientRect();
3147
3115
  return (Math.floor(rect.top) >= 0 &&
@@ -3150,6 +3118,20 @@ var isInViewport = function (element) {
3150
3118
  Math.floor(rect.right) <= (window.innerWidth || document.documentElement.clientWidth));
3151
3119
  };
3152
3120
 
3121
+ var isObjectInArray = function (array, item, ignore) {
3122
+ if (ignore === void 0) { ignore = []; }
3123
+ return array.some(function (_item) {
3124
+ var result = true;
3125
+ for (var key in item) {
3126
+ if (!ignore.includes(key) && item[key] !== _item[key]) {
3127
+ result = false;
3128
+ break;
3129
+ }
3130
+ }
3131
+ return result;
3132
+ });
3133
+ };
3134
+
3153
3135
  var CCarouselContext = React$1.createContext({});
3154
3136
  var CCarousel = React$1.forwardRef(function (_a, ref) {
3155
3137
  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"]);
@@ -5750,12 +5732,12 @@ var uaParser_min = {
5750
5732
  set exports(v){ uaParser_minExports = v; },
5751
5733
  };
5752
5734
 
5753
- /* UAParser.js v1.0.33
5735
+ /* UAParser.js v1.0.34
5754
5736
  Copyright © 2012-2021 Faisal Salman <f@faisalman.com>
5755
5737
  MIT License */
5756
5738
 
5757
5739
  (function (module, exports) {
5758
- (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);
5740
+ (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);
5759
5741
  } (uaParser_min, uaParser_minExports));
5760
5742
 
5761
5743
  Object.defineProperty(lib, '__esModule', { value: true });
@@ -6848,35 +6830,6 @@ var createGroupsInArray = function (arr, numberOfGroups) {
6848
6830
  .fill('')
6849
6831
  .map(function (_, i) { return arr.slice(i * perGroup, (i + 1) * perGroup); });
6850
6832
  };
6851
- var getLocalDateFromString = function (string, locale, time) {
6852
- var date = new Date(2013, 11, 31, 17, 19, 22);
6853
- var regex = time ? date.toLocaleString(locale) : date.toLocaleDateString(locale);
6854
- regex = regex
6855
- .replace('2013', '(?<year>[0-9]{2,4})')
6856
- .replace('12', '(?<month>[0-9]{1,2})')
6857
- .replace('31', '(?<day>[0-9]{1,2})');
6858
- if (time) {
6859
- regex = regex
6860
- .replace('5', '(?<hour>[0-9]{1,2})')
6861
- .replace('17', '(?<hour>[0-9]{1,2})')
6862
- .replace('19', '(?<minute>[0-9]{1,2})')
6863
- .replace('22', '(?<second>[0-9]{1,2})')
6864
- .replace('PM', '(?<ampm>[A-Z]{2})');
6865
- }
6866
- var rgx = RegExp("".concat(regex));
6867
- var partials = string.match(rgx);
6868
- if (partials === null)
6869
- return;
6870
- var newDate = partials.groups &&
6871
- (time
6872
- ? new Date(Number(partials.groups['year']), Number(partials.groups['month']) - 1, Number(partials.groups['day']), partials.groups['ampm']
6873
- ? partials.groups['ampm'] === 'PM'
6874
- ? Number(partials.groups['hour']) + 12
6875
- : Number(partials.groups['hour'])
6876
- : Number(partials.groups['hour']), Number(partials.groups['minute']), Number(partials.groups['second']))
6877
- : new Date(Number(partials.groups['year']), Number(partials.groups['month']) - 1, Number(partials.groups['day'])));
6878
- return newDate;
6879
- };
6880
6833
  var getMonthsNames = function (locale) {
6881
6834
  var months = [];
6882
6835
  var d = new Date();
@@ -7025,40 +6978,145 @@ var isToday = function (date) {
7025
6978
  date.getFullYear() === today.getFullYear());
7026
6979
  };
7027
6980
 
6981
+ var Calendar = function (props) {
6982
+ 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;
6983
+ var _a = React$1.useState(calendarDate), date = _a[0], setDate = _a[1];
6984
+ var _b = React$1.useState([]), listOfMonths = _b[0], setListOfMonths = _b[1];
6985
+ React$1.useEffect(function () {
6986
+ if (addMonths !== 0) {
6987
+ setDate(new Date(calendarDate.getFullYear(), calendarDate.getMonth() + addMonths, 1));
6988
+ return;
6989
+ }
6990
+ setDate(calendarDate);
6991
+ }, [calendarDate]);
6992
+ React$1.useEffect(function () {
6993
+ setListOfMonths(createGroupsInArray(getMonthsNames(locale), 4));
6994
+ }, []);
6995
+ var monthDetails = getMonthDetails(date.getFullYear(), date.getMonth(), firstDayOfWeek);
6996
+ var listOfYears = createGroupsInArray(getYears(date.getFullYear()), 4);
6997
+ var weekDays = monthDetails[0];
6998
+ return (React$1.createElement("table", null,
6999
+ view === 'days' && (React$1.createElement("thead", null,
7000
+ React$1.createElement("tr", null, weekDays.map(function (_a, idx) {
7001
+ var date = _a.date;
7002
+ return (React$1.createElement("th", { key: idx, className: "calendar-cell" },
7003
+ React$1.createElement("div", { className: "calendar-header-cell-inner" }, typeof weekdayFormat === 'function'
7004
+ ? weekdayFormat(date)
7005
+ : typeof weekdayFormat === 'string'
7006
+ ? date.toLocaleDateString(locale, { weekday: weekdayFormat })
7007
+ : date.toLocaleDateString(locale, { weekday: 'long' }).slice(0, weekdayFormat))));
7008
+ })))),
7009
+ React$1.createElement("tbody", null,
7010
+ view === 'days' &&
7011
+ monthDetails.map(function (week, index) {
7012
+ return (React$1.createElement("tr", { key: index }, week.map(function (_a, idx) {
7013
+ var _b;
7014
+ var date = _a.date, month = _a.month;
7015
+ return (React$1.createElement("td", __assign$1({ className: classNames$1('calendar-cell', (_b = {
7016
+ today: month === 'current' && isToday(date),
7017
+ disabled: isDateDisabled(date, minDate, maxDate, disabledDates)
7018
+ },
7019
+ _b[month] = true,
7020
+ _b.last = isLastDayOfMonth(date),
7021
+ _b['range-hover'] = month === 'current' &&
7022
+ (hoverDate && selectEndDate
7023
+ ? isDateInRange(date, startDate, hoverDate)
7024
+ : isDateInRange(date, hoverDate, endDate)),
7025
+ _b.range = month === 'current' && isDateInRange(date, startDate, endDate),
7026
+ _b.selected = isDateSelected(date, startDate, endDate),
7027
+ _b.start = isStartDate(date, startDate, endDate),
7028
+ _b.end = isEndDate(date, startDate, endDate),
7029
+ _b)), key: idx, tabIndex: 0, title: date.toLocaleDateString(locale) }, (month === 'current' && {
7030
+ onBlur: function () { return onCellMouseLeave(); },
7031
+ onClick: function () { return onCellClick(date); },
7032
+ onFocus: function () { return onCellMouseEnter(date); },
7033
+ onKeyDown: function (event) { return onCellKeyDown(event, date); },
7034
+ onMouseEnter: function () { return onCellMouseEnter(date); },
7035
+ onMouseLeave: function () { return onCellMouseLeave(); },
7036
+ }), (month !== 'current' && {
7037
+ onMouseEnter: function () { return onCellMouseLeave(); },
7038
+ })),
7039
+ React$1.createElement("div", { className: "calendar-cell-inner" }, typeof dayFormat === 'function'
7040
+ ? dayFormat(date)
7041
+ : date.toLocaleDateString(locale, { day: dayFormat }))));
7042
+ })));
7043
+ }),
7044
+ view === 'months' &&
7045
+ listOfMonths.map(function (row, index) {
7046
+ return (React$1.createElement("tr", { key: index }, row.map(function (month, idx) {
7047
+ return (React$1.createElement("td", { key: idx, className: "calendar-cell month", onClick: function () { return onMonthClick(index * 3 + idx - addMonths, 'days'); } },
7048
+ React$1.createElement("div", { className: "calendar-cell-inner" }, month)));
7049
+ })));
7050
+ }),
7051
+ view === 'years' &&
7052
+ listOfYears.map(function (row, index) {
7053
+ return (React$1.createElement("tr", { key: index }, row.map(function (year, idx) {
7054
+ return (React$1.createElement("td", { key: idx, className: "calendar-cell year", onClick: function () {
7055
+ return onYearClick(new Date(year, date.getMonth() - addMonths, date.getDate()), 'months');
7056
+ } },
7057
+ React$1.createElement("div", { className: "calendar-cell-inner" }, new Date(year, 0, 1).toLocaleDateString(locale, { year: 'numeric' }))));
7058
+ })));
7059
+ }))));
7060
+ };
7061
+ var Navigation = function (props) {
7062
+ 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;
7063
+ var _a = React$1.useState(), date = _a[0], setDate = _a[1];
7064
+ React$1.useEffect(function () {
7065
+ if (addMonths !== 0) {
7066
+ setDate(new Date(calendarDate.getFullYear(), calendarDate.getMonth() + addMonths, 1));
7067
+ return;
7068
+ }
7069
+ setDate(calendarDate);
7070
+ }, [calendarDate]);
7071
+ return (React$1.createElement("div", { className: "calendar-nav" },
7072
+ navigation && (React$1.createElement("div", { className: "calendar-nav-prev" },
7073
+ React$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return onNavigationClick('prev', true); } }, navPrevDoubleIcon ? (navPrevDoubleIcon) : (React$1.createElement("span", { className: "calendar-nav-icon calendar-nav-icon-double-prev" }))),
7074
+ view === 'days' && (React$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return onNavigationClick('prev'); } }, navPrevIcon ? (navPrevIcon) : (React$1.createElement("span", { className: "calendar-nav-icon calendar-nav-icon-prev" })))))),
7075
+ React$1.createElement("div", __assign$1({ className: "calendar-nav-date" }, (navYearFirst && { style: { display: 'flex', justifyContent: 'center' } })),
7076
+ view === 'days' && (React$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return navigation && onMonthClick(); } }, date && date.toLocaleDateString(locale, { month: 'long' }))),
7077
+ React$1.createElement(CButton, __assign$1({ color: "transparent", size: "sm", onClick: function () { return navigation && onYearClick(); } }, (navYearFirst && { style: { order: '-1' } })), date && date.toLocaleDateString(locale, { year: 'numeric' }))),
7078
+ navigation && (React$1.createElement("div", { className: "calendar-nav-next" },
7079
+ view === 'days' && (React$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return onNavigationClick('next'); } }, navNextIcon ? (navNextIcon) : (React$1.createElement("span", { className: "calendar-nav-icon calendar-nav-icon-next" })))),
7080
+ React$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return onNavigationClick('next', true); } }, navNextDoubleIcon ? (navNextDoubleIcon) : (React$1.createElement("span", { className: "calendar-nav-icon calendar-nav-icon-double-next" })))))));
7081
+ };
7028
7082
  var CCalendar = React$1.forwardRef(function (_a, ref) {
7029
- 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;
7083
+ 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;
7030
7084
  var isInitialMount = React$1.useRef(true);
7031
- var _h = React$1.useState(calendarDate ? new Date(calendarDate) : startDate ? new Date(startDate) : new Date()), _calendarDate = _h[0], setCalendarDate = _h[1];
7085
+ var _j = React$1.useState(null), _calendarDate = _j[0], setCalendarDate = _j[1];
7032
7086
  React$1.useEffect(function () {
7087
+ if (calendarDate === null) {
7088
+ setCalendarDate(new Date());
7089
+ return;
7090
+ }
7033
7091
  if (calendarDate) {
7034
- var d = new Date(calendarDate);
7035
- !isSameDateAs(_calendarDate, d) && setCalendarDate(d);
7092
+ var date = new Date(calendarDate);
7093
+ !isSameDateAs(_calendarDate, date) && setCalendarDate(date);
7036
7094
  }
7037
7095
  }, [calendarDate]);
7038
- var _j = useStateWithCallback(startDate ? new Date(startDate) : null, onStartDateChange, !isInitialMount.current), _startDate = _j[0], setStartDate = _j[1];
7096
+ var _k = useStateWithCallback(startDate ? new Date(startDate) : null, onStartDateChange, !isInitialMount.current), _startDate = _k[0], setStartDate = _k[1];
7039
7097
  React$1.useEffect(function () {
7040
7098
  var date = startDate ? new Date(startDate) : null;
7041
7099
  if (!isSameDateAs(date, _startDate)) {
7042
7100
  setStartDate(date);
7043
7101
  }
7044
7102
  }, [startDate]);
7045
- var _k = useStateWithCallback(endDate ? new Date(endDate) : null, onEndDateChange, !isInitialMount.current), _endDate = _k[0], setEndDate = _k[1];
7103
+ var _l = useStateWithCallback(endDate ? new Date(endDate) : null, onEndDateChange, !isInitialMount.current), _endDate = _l[0], setEndDate = _l[1];
7046
7104
  React$1.useEffect(function () {
7047
7105
  var date = endDate ? new Date(endDate) : null;
7048
7106
  if (!isSameDateAs(date, _endDate)) {
7049
7107
  setEndDate(date);
7050
7108
  }
7051
7109
  }, [endDate]);
7052
- var _l = React$1.useState(null), _hoverDate = _l[0], setHoverDate = _l[1];
7053
- var _m = React$1.useState(maxDate ? new Date(maxDate) : null), _maxDate = _m[0], setMaxDate = _m[1];
7110
+ var _m = React$1.useState(null), _hoverDate = _m[0], setHoverDate = _m[1];
7111
+ var _o = React$1.useState(maxDate ? new Date(maxDate) : null), _maxDate = _o[0], setMaxDate = _o[1];
7054
7112
  React$1.useEffect(function () {
7055
7113
  maxDate && setMaxDate(new Date(maxDate));
7056
7114
  }, [maxDate]);
7057
- var _o = React$1.useState(minDate ? new Date(minDate) : null), _minDate = _o[0], setMinDate = _o[1];
7115
+ var _p = React$1.useState(minDate ? new Date(minDate) : null), _minDate = _p[0], setMinDate = _p[1];
7058
7116
  React$1.useEffect(function () {
7059
7117
  minDate && setMinDate(new Date(minDate));
7060
7118
  }, [minDate]);
7061
- var _p = useStateWithCallback(selectEndDate, onSelectEndChange), _selectEndDate = _p[0], setSelectEndDate = _p[1];
7119
+ var _q = useStateWithCallback(selectEndDate, onSelectEndChange), _selectEndDate = _q[0], setSelectEndDate = _q[1];
7062
7120
  React$1.useEffect(function () {
7063
7121
  setSelectEndDate(selectEndDate);
7064
7122
  }, [selectEndDate]);
@@ -7068,12 +7126,15 @@ var CCalendar = React$1.forwardRef(function (_a, ref) {
7068
7126
  onSelectEndChange &&
7069
7127
  onSelectEndChange(_selectEndDate);
7070
7128
  }, [_selectEndDate]);
7071
- var _q = useStateWithCallback('days', onViewChanged), view = _q[0], setView = _q[1];
7129
+ var _r = useStateWithCallback('days', onViewChanged), view = _r[0], setView = _r[1];
7072
7130
  React$1.useEffect(function () {
7073
7131
  isInitialMount.current = false;
7074
7132
  }, []);
7075
7133
  var setCalendarPage = function (years, months, setMonth) {
7076
7134
  if (months === void 0) { months = 0; }
7135
+ if (_calendarDate === null) {
7136
+ return;
7137
+ }
7077
7138
  var year = _calendarDate.getFullYear();
7078
7139
  var month = _calendarDate.getMonth();
7079
7140
  var d = new Date(year, month, 1);
@@ -7164,105 +7225,16 @@ var CCalendar = React$1.forwardRef(function (_a, ref) {
7164
7225
  return;
7165
7226
  }
7166
7227
  };
7167
- var Calendar = function (props) {
7168
- var addMonths = props.addMonths;
7169
- var date = _calendarDate;
7170
- if (addMonths !== 0) {
7171
- date = new Date(_calendarDate.getFullYear(), _calendarDate.getMonth() + addMonths, 1);
7172
- }
7173
- var monthDetails = getMonthDetails(date.getFullYear(), date.getMonth(), firstDayOfWeek);
7174
- var listOfMonths = createGroupsInArray(getMonthsNames(locale), 4);
7175
- var listOfYears = createGroupsInArray(getYears(date.getFullYear()), 4);
7176
- var weekDays = monthDetails[0];
7177
- return (React$1.createElement("table", null,
7178
- view === 'days' && (React$1.createElement("thead", null,
7179
- React$1.createElement("tr", null, weekDays.map(function (_a, idx) {
7180
- var date = _a.date;
7181
- return (React$1.createElement("th", { key: idx, className: "calendar-cell" },
7182
- React$1.createElement("div", { className: "calendar-header-cell-inner" }, typeof weekdayFormat === 'function'
7183
- ? weekdayFormat(date)
7184
- : typeof weekdayFormat === 'string'
7185
- ? date.toLocaleDateString(locale, { weekday: weekdayFormat })
7186
- : date
7187
- .toLocaleDateString(locale, { weekday: 'long' })
7188
- .slice(0, weekdayFormat))));
7189
- })))),
7190
- React$1.createElement("tbody", null,
7191
- view === 'days' &&
7192
- monthDetails.map(function (week, index) {
7193
- return (React$1.createElement("tr", { key: index }, week.map(function (_a, idx) {
7194
- var _b;
7195
- var date = _a.date, month = _a.month;
7196
- return (React$1.createElement("td", __assign$1({ className: classNames$1('calendar-cell', (_b = {
7197
- today: month === 'current' && isToday(date),
7198
- disabled: isDateDisabled(date, _minDate, _maxDate, disabledDates)
7199
- },
7200
- _b[month] = true,
7201
- _b.last = isLastDayOfMonth(date),
7202
- _b['range-hover'] = month === 'current' &&
7203
- (_hoverDate && _selectEndDate
7204
- ? isDateInRange(date, _startDate, _hoverDate)
7205
- : isDateInRange(date, _hoverDate, _endDate)),
7206
- _b.range = month === 'current' && isDateInRange(date, _startDate, _endDate),
7207
- _b.selected = isDateSelected(date, _startDate, _endDate),
7208
- _b.start = isStartDate(date, _startDate, _endDate),
7209
- _b.end = isEndDate(date, _startDate, _endDate),
7210
- _b)), key: idx, tabIndex: 0, title: date.toLocaleDateString(locale) }, (month === 'current' && {
7211
- onBlur: function () { return handleCellMouseLeave(); },
7212
- onClick: function () { return handleCellOnClick(date); },
7213
- onFocus: function () { return handleCellMouseEnter(date); },
7214
- onKeyDown: function (event) { return handleCellKeyDown(event, date); },
7215
- onMouseEnter: function () { return handleCellMouseEnter(date); },
7216
- onMouseLeave: function () { return handleCellMouseLeave(); },
7217
- }), (month !== 'current' && {
7218
- onMouseEnter: function () { return handleCellMouseLeave(); },
7219
- })),
7220
- React$1.createElement("div", { className: "calendar-cell-inner" }, typeof dayFormat === 'function'
7221
- ? dayFormat(date)
7222
- : date.toLocaleDateString(locale, { day: dayFormat }))));
7223
- })));
7224
- }),
7225
- view === 'months' &&
7226
- listOfMonths.map(function (row, index) {
7227
- return (React$1.createElement("tr", { key: index }, row.map(function (month, idx) {
7228
- return (React$1.createElement("td", { key: idx, className: "calendar-cell month", onClick: function () {
7229
- setCalendarPage(0, 0, index * 3 + idx - addMonths);
7230
- setView('days');
7231
- } },
7232
- React$1.createElement("div", { className: "calendar-cell-inner" }, month)));
7233
- })));
7234
- }),
7235
- view === 'years' &&
7236
- listOfYears.map(function (row, index) {
7237
- return (React$1.createElement("tr", { key: index }, row.map(function (year, idx) {
7238
- return (React$1.createElement("td", { key: idx, className: "calendar-cell year", onClick: function () {
7239
- setCalendarDate(new Date(year, date.getMonth() - addMonths, date.getDate()));
7240
- setView('months');
7241
- } },
7242
- React$1.createElement("div", { className: "calendar-cell-inner" }, new Date(year, 0, 1).toLocaleDateString(locale, { year: 'numeric' }))));
7243
- })));
7244
- }))));
7245
- };
7246
- var Navigation = function (props) {
7247
- var addMonths = props.addMonths;
7248
- var date = _calendarDate;
7249
- if (addMonths !== 0) {
7250
- date = new Date(_calendarDate.getFullYear(), _calendarDate.getMonth() + addMonths, 1);
7251
- }
7252
- return (React$1.createElement("div", { className: "calendar-nav" },
7253
- navigation && (React$1.createElement("div", { className: "calendar-nav-prev" },
7254
- React$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return handleNavigationOnClick('prev', true); } }, navPrevDoubleIcon ? (navPrevDoubleIcon) : (React$1.createElement("span", { className: "calendar-nav-icon calendar-nav-icon-double-prev" }))),
7255
- view === 'days' && (React$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return handleNavigationOnClick('prev'); } }, navPrevIcon ? (navPrevIcon) : (React$1.createElement("span", { className: "calendar-nav-icon calendar-nav-icon-prev" })))))),
7256
- React$1.createElement("div", __assign$1({ className: "calendar-nav-date" }, (navYearFirst && { style: { display: 'flex', justifyContent: 'center' } })),
7257
- view === 'days' && (React$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return navigation && setView('months'); } }, date.toLocaleDateString(locale, { month: 'long' }))),
7258
- React$1.createElement(CButton, __assign$1({ color: "transparent", size: "sm", onClick: function () { return navigation && setView('years'); } }, (navYearFirst && { style: { order: '-1' } })), date.toLocaleDateString(locale, { year: 'numeric' }))),
7259
- navigation && (React$1.createElement("div", { className: "calendar-nav-next" },
7260
- view === 'days' && (React$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return handleNavigationOnClick('next'); } }, navNextIcon ? (navNextIcon) : (React$1.createElement("span", { className: "calendar-nav-icon calendar-nav-icon-next" })))),
7261
- React$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return handleNavigationOnClick('next', true); } }, navNextDoubleIcon ? (navNextDoubleIcon) : (React$1.createElement("span", { className: "calendar-nav-icon calendar-nav-icon-double-next" })))))));
7262
- };
7263
- return (React$1.createElement("div", { className: classNames$1('calendars', className) }, Array.from({ length: calendars }, function (_, index) { return (React$1.createElement("div", { className: classNames$1('calendar', view), key: index, ref: ref },
7264
- Navigation({ addMonths: index }),
7265
- Calendar({ addMonths: index }))); })));
7228
+ return (React$1.createElement("div", { className: classNames$1('calendars', className) }, _calendarDate &&
7229
+ Array.from({ length: calendars }, function (_, index) { return (React$1.createElement("div", { className: classNames$1('calendar', view), key: index, ref: ref },
7230
+ React$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 }),
7231
+ React$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) {
7232
+ setCalendarPage(0, 0, month);
7233
+ setView(view);
7234
+ }, onYearClick: function (date, view) {
7235
+ setCalendarDate(date);
7236
+ setView(view);
7237
+ }, selectEndDate: _selectEndDate, startDate: _startDate, view: view, weekdayFormat: weekdayFormat }))); })));
7266
7238
  });
7267
7239
  CCalendar.propTypes = {
7268
7240
  className: propTypesExports.string,
@@ -10307,46 +10279,34 @@ var getAmPm = function (date, locale) {
10307
10279
  }
10308
10280
  return date.getHours() >= 12 ? 'pm' : 'am';
10309
10281
  };
10310
- var getListOfHours = function (locale, ampm) {
10282
+ var getLocalizedTimePartials = function (locale, ampm) {
10311
10283
  if (ampm === void 0) { ampm = 'auto'; }
10312
- return Array.from({ length: (ampm === 'auto' && isAmPm(locale)) || ampm === true ? 12 : 24 }, function (_, i) {
10313
- return {
10314
- value: (ampm === 'auto' && isAmPm(locale)) || ampm === true ? i + 1 : i,
10315
- label: ((ampm === 'auto' && isAmPm(locale)) || ampm === true ? i + 1 : i).toLocaleString(locale),
10316
- };
10317
- });
10318
- };
10319
- var getListOfMinutes = function (locale, valueAsString) {
10320
- if (valueAsString === void 0) { valueAsString = false; }
10321
- return Array.from({ length: 60 }, function (_, i) {
10322
- var d = new Date();
10323
- d.setMinutes(i);
10284
+ var date = new Date();
10285
+ var hour12 = ['am', 'AM', 'pm', 'PM'].some(function (el) { return date.toLocaleString(locale).includes(el); });
10286
+ var listOfHours = Array.from({ length: (ampm === 'auto' && hour12) || ampm === true ? 12 : 24 }, function (_, i) {
10324
10287
  return {
10325
- value: valueAsString ? i.toString() : i,
10326
- label: d
10327
- .toLocaleTimeString(locale, {
10328
- minute: '2-digit',
10329
- second: '2-digit',
10330
- })
10331
- .split(/[^A-Za-z0-9]/)[0],
10288
+ value: (ampm === 'auto' && hour12) || ampm === true ? i + 1 : i,
10289
+ label: ((ampm === 'auto' && hour12) || ampm === true ? i + 1 : i).toLocaleString(locale),
10332
10290
  };
10333
10291
  });
10334
- };
10335
- var getListOfSeconds = function (locale, valueAsString) {
10336
- if (valueAsString === void 0) { valueAsString = false; }
10337
- return Array.from({ length: 60 }, function (_, i) {
10338
- var d = new Date();
10339
- d.setSeconds(i);
10292
+ var listOfMinutesSeconds = Array.from({ length: 60 }, function (_, i) {
10293
+ date.setMinutes(i);
10340
10294
  return {
10341
- value: valueAsString ? i.toString() : i,
10342
- label: d
10295
+ value: i,
10296
+ label: date
10343
10297
  .toLocaleTimeString(locale, {
10344
10298
  minute: '2-digit',
10345
10299
  second: '2-digit',
10346
10300
  })
10347
- .split(/[^A-Za-z0-9]/)[1],
10301
+ .split(/[^A-Za-z0-9\u06F0-\u06F90-9]/)[0],
10348
10302
  };
10349
10303
  });
10304
+ return {
10305
+ listOfHours: listOfHours,
10306
+ listOfMinutes: listOfMinutesSeconds,
10307
+ listOfSeconds: listOfMinutesSeconds,
10308
+ hour12: hour12,
10309
+ };
10350
10310
  };
10351
10311
  var getSelectedHour = function (date, locale, ampm) {
10352
10312
  if (ampm === void 0) { ampm = 'auto'; }
@@ -10374,13 +10334,20 @@ var CTimePicker = React$1.forwardRef(function (_a, ref) {
10374
10334
  var _o = React$1.useState(null), initialDate = _o[0], setInitialDate = _o[1];
10375
10335
  var _p = React$1.useState(date ? getAmPm(new Date(date), locale) : 'am'), _ampm = _p[0], setAmPm = _p[1];
10376
10336
  var _q = React$1.useState(visible), _visible = _q[0], setVisible = _q[1];
10337
+ var _r = React$1.useState({
10338
+ listOfHours: [],
10339
+ listOfMinutes: [],
10340
+ listOfSeconds: [],
10341
+ hour12: false,
10342
+ }), localizedTimePartials = _r[0], setLocalizedTimePartials = _r[1];
10377
10343
  React$1.useEffect(function () {
10378
10344
  setDate(convertTimeToDate(time));
10379
10345
  }, [time]);
10380
10346
  React$1.useEffect(function () {
10347
+ setLocalizedTimePartials(getLocalizedTimePartials(locale, ampm));
10381
10348
  if (inputRef.current) {
10382
10349
  inputRef.current.value = date
10383
- ? date.toLocaleTimeString(locale, __assign$1({ hour12: (ampm === 'auto' && isAmPm(locale)) || (typeof ampm === 'boolean' && ampm) }, (!seconds && { timeStyle: 'short' })))
10350
+ ? date.toLocaleTimeString(locale, __assign$1({ hour12: localizedTimePartials && localizedTimePartials.hour12 }, (!seconds && { timeStyle: 'short' })))
10384
10351
  : '';
10385
10352
  }
10386
10353
  date && setAmPm(getAmPm(new Date(date), locale));
@@ -10401,7 +10368,7 @@ var CTimePicker = React$1.forwardRef(function (_a, ref) {
10401
10368
  }
10402
10369
  }
10403
10370
  if (set === 'hours') {
10404
- if ((ampm === 'auto' && isAmPm(locale)) || ampm === true) {
10371
+ if (localizedTimePartials && localizedTimePartials.hour12) {
10405
10372
  _date.setHours(convert12hTo24h(_ampm, parseInt(value)));
10406
10373
  }
10407
10374
  else {
@@ -10425,30 +10392,40 @@ var CTimePicker = React$1.forwardRef(function (_a, ref) {
10425
10392
  indicator && (React$1.createElement("span", { className: "picker-input-group-indicator" }, typeof indicator === 'boolean' ? (React$1.createElement("span", { className: "picker-input-group-icon time-picker-input-icon" })) : (indicator))),
10426
10393
  cleaner && date && (React$1.createElement("span", { className: "picker-input-group-cleaner", role: "button", onClick: function (event) { return handleClear(event); } }, typeof cleaner === 'boolean' ? (React$1.createElement("span", { className: "picker-input-group-icon time-picker-cleaner-icon" })) : (cleaner))))))); };
10427
10394
  var TimePickerSelect = function () {
10395
+ var _a;
10428
10396
  return (React$1.createElement(React$1.Fragment, null,
10429
10397
  React$1.createElement("span", { className: "time-picker-inline-icon" }),
10430
- React$1.createElement(CFormSelect, { disabled: disabled, options: getListOfHours(locale).map(function (option) {
10431
- return {
10432
- value: option.value.toString(),
10433
- label: option.label,
10434
- };
10435
- }), onChange: function (event) {
10398
+ React$1.createElement(CFormSelect, { disabled: disabled, options: localizedTimePartials &&
10399
+ ((_a = localizedTimePartials.listOfHours) === null || _a === void 0 ? void 0 : _a.map(function (option) {
10400
+ return {
10401
+ value: option.value.toString(),
10402
+ label: option.label,
10403
+ };
10404
+ })), onChange: function (event) {
10436
10405
  return handleTimeChange('hours', event.target.value);
10437
10406
  }, value: getSelectedHour(date, locale) }),
10438
10407
  React$1.createElement(React$1.Fragment, null, ":"),
10439
- React$1.createElement(CFormSelect, { disabled: disabled,
10440
- // @ts-expect-error the getListOfMinutes function returns corect type
10441
- options: getListOfMinutes(locale, true), onChange: function (event) {
10408
+ React$1.createElement(CFormSelect, { disabled: disabled, options: localizedTimePartials &&
10409
+ localizedTimePartials.listOfMinutes.map(function (option) {
10410
+ return {
10411
+ value: option.value.toString(),
10412
+ label: option.label,
10413
+ };
10414
+ }), onChange: function (event) {
10442
10415
  return handleTimeChange('minutes', event.target.value);
10443
10416
  }, value: getSelectedMinutes(date) }),
10444
10417
  seconds && (React$1.createElement(React$1.Fragment, null,
10445
10418
  React$1.createElement(React$1.Fragment, null, ":"),
10446
- React$1.createElement(CFormSelect, { disabled: disabled,
10447
- // @ts-expect-error the getListOfSeconds function returns corect type
10448
- options: getListOfSeconds(locale, true), onChange: function (event) {
10419
+ React$1.createElement(CFormSelect, { disabled: disabled, options: localizedTimePartials &&
10420
+ localizedTimePartials.listOfSeconds.map(function (option) {
10421
+ return {
10422
+ value: option.value.toString(),
10423
+ label: option.label,
10424
+ };
10425
+ }), onChange: function (event) {
10449
10426
  return handleTimeChange('seconds', event.target.value);
10450
10427
  }, value: getSelectedSeconds(date) }))),
10451
- isAmPm(locale) && (React$1.createElement(CFormSelect, { disabled: disabled, options: [
10428
+ localizedTimePartials && localizedTimePartials.hour12 && (React$1.createElement(CFormSelect, { disabled: disabled, options: [
10452
10429
  { value: 'am', label: 'AM' },
10453
10430
  { value: 'pm', label: 'PM' },
10454
10431
  ], onChange: function (event) {
@@ -10456,10 +10433,10 @@ var CTimePicker = React$1.forwardRef(function (_a, ref) {
10456
10433
  }, value: _ampm }))));
10457
10434
  };
10458
10435
  var TimePickerRoll = function () { return (React$1.createElement(React$1.Fragment, null,
10459
- React$1.createElement(CTimePickerRollCol, { elements: getListOfHours(locale, ampm), onClick: function (index) { return handleTimeChange('hours', index.toString()); }, selected: getSelectedHour(date, locale, ampm) }),
10460
- React$1.createElement(CTimePickerRollCol, { elements: getListOfMinutes(locale), onClick: function (index) { return handleTimeChange('minutes', index.toString()); }, selected: getSelectedMinutes(date) }),
10461
- seconds && (React$1.createElement(CTimePickerRollCol, { elements: getListOfSeconds(locale), onClick: function (index) { return handleTimeChange('seconds', index.toString()); }, selected: getSelectedSeconds(date) })),
10462
- ((ampm === 'auto' && isAmPm(locale)) || ampm === true) && (React$1.createElement(CTimePickerRollCol, { elements: [
10436
+ React$1.createElement(CTimePickerRollCol, { elements: localizedTimePartials && localizedTimePartials.listOfHours, onClick: function (index) { return handleTimeChange('hours', index.toString()); }, selected: getSelectedHour(date, locale, ampm) }),
10437
+ React$1.createElement(CTimePickerRollCol, { elements: localizedTimePartials && localizedTimePartials.listOfMinutes, onClick: function (index) { return handleTimeChange('minutes', index.toString()); }, selected: getSelectedMinutes(date) }),
10438
+ seconds && (React$1.createElement(CTimePickerRollCol, { elements: localizedTimePartials && localizedTimePartials.listOfSeconds, onClick: function (index) { return handleTimeChange('seconds', index.toString()); }, selected: getSelectedSeconds(date) })),
10439
+ localizedTimePartials && localizedTimePartials.hour12 && (React$1.createElement(CTimePickerRollCol, { elements: [
10463
10440
  { value: 'am', label: 'AM' },
10464
10441
  { value: 'pm', label: 'PM' },
10465
10442
  ], onClick: function (value) { return handleTimeChange('toggle', value); }, selected: _ampm })))); };
@@ -10486,6 +10463,39 @@ var CTimePicker = React$1.forwardRef(function (_a, ref) {
10486
10463
  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']) });
10487
10464
  CTimePicker.displayName = 'CTimePicker';
10488
10465
 
10466
+ var getLocalDateFromString = function (string, locale, time) {
10467
+ if (!isNaN(Date.parse(string))) {
10468
+ return new Date(Date.parse(string));
10469
+ }
10470
+ var date = new Date(2013, 11, 31, 17, 19, 22);
10471
+ var regex = time ? date.toLocaleString(locale) : date.toLocaleDateString(locale);
10472
+ regex = regex
10473
+ .replace('2013', '(?<year>[0-9]{2,4})')
10474
+ .replace('12', '(?<month>[0-9]{1,2})')
10475
+ .replace('31', '(?<day>[0-9]{1,2})');
10476
+ if (time) {
10477
+ regex = regex
10478
+ .replace('5', '(?<hour>[0-9]{1,2})')
10479
+ .replace('17', '(?<hour>[0-9]{1,2})')
10480
+ .replace('19', '(?<minute>[0-9]{1,2})')
10481
+ .replace('22', '(?<second>[0-9]{1,2})')
10482
+ .replace('PM', '(?<ampm>[A-Z]{2})');
10483
+ }
10484
+ var rgx = RegExp("".concat(regex));
10485
+ var partials = string.match(rgx);
10486
+ if (partials === null)
10487
+ return;
10488
+ var newDate = partials.groups &&
10489
+ (time
10490
+ ? new Date(Number(partials.groups['year']), Number(partials.groups['month']) - 1, Number(partials.groups['day']), partials.groups['ampm']
10491
+ ? partials.groups['ampm'] === 'PM'
10492
+ ? Number(partials.groups['hour']) + 12
10493
+ : Number(partials.groups['hour'])
10494
+ : Number(partials.groups['hour']), Number(partials.groups['minute']), Number(partials.groups['second']))
10495
+ : new Date(Number(partials.groups['year']), Number(partials.groups['month']) - 1, Number(partials.groups['day'])));
10496
+ return newDate;
10497
+ };
10498
+
10489
10499
  var _a, _b, _c, _d, _e, _f;
10490
10500
  var CDateRangePicker = React$1.forwardRef(function (_a, ref) {
10491
10501
  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"]);
@@ -10708,6 +10718,73 @@ CDropdownItemPlain.propTypes = {
10708
10718
  };
10709
10719
  CDropdownItemPlain.displayName = 'CDropdownItemPlain';
10710
10720
 
10721
+ var CSpinner = React$1.forwardRef(function (_a, ref) {
10722
+ 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"]);
10723
+ var _className = classNames$1("spinner-".concat(variant), "text-".concat(color), size && "spinner-".concat(variant, "-").concat(size), className);
10724
+ return (React$1.createElement(Component, __assign$1({ className: _className, role: "status" }, rest, { ref: ref }),
10725
+ React$1.createElement("span", { className: "visually-hidden" }, visuallyHiddenLabel)));
10726
+ });
10727
+ CSpinner.propTypes = {
10728
+ className: propTypesExports.string,
10729
+ color: colorPropType,
10730
+ component: propTypesExports.string,
10731
+ size: propTypesExports.oneOf(['sm']),
10732
+ variant: propTypesExports.oneOf(['border', 'grow']),
10733
+ visuallyHiddenLabel: propTypesExports.string,
10734
+ };
10735
+ CSpinner.displayName = 'CSpinner';
10736
+
10737
+ var CElementCover = React$1.forwardRef(function (_a, ref) {
10738
+ 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"]);
10739
+ var elementCoverRef = React$1.useRef(null);
10740
+ var forkedRef = useForkedRef(ref, elementCoverRef);
10741
+ var _c = React$1.useState({}), customBoundaries = _c[0], setCustomBoundaries = _c[1];
10742
+ var getCustomBoundaries = function () {
10743
+ if (!elementCoverRef || !elementCoverRef.current || !boundaries) {
10744
+ return {};
10745
+ }
10746
+ var parent = elementCoverRef.current.parentElement;
10747
+ if (!parent) {
10748
+ return {};
10749
+ }
10750
+ var parentCoords = parent.getBoundingClientRect();
10751
+ var customBoundaries = {};
10752
+ boundaries.forEach(function (_a) {
10753
+ var sides = _a.sides, query = _a.query;
10754
+ var element = parent.querySelector(query);
10755
+ if (!element || !sides) {
10756
+ return;
10757
+ }
10758
+ var coords = element.getBoundingClientRect();
10759
+ sides.forEach(function (side) {
10760
+ var sideMargin = Math.abs(coords[side] - parentCoords[side]);
10761
+ customBoundaries[side] = "".concat(sideMargin, "px");
10762
+ });
10763
+ });
10764
+ return customBoundaries;
10765
+ };
10766
+ React$1.useEffect(function () {
10767
+ setCustomBoundaries(getCustomBoundaries());
10768
+ }, [JSON.stringify(getCustomBoundaries())]);
10769
+ var classes = classNames$1(className);
10770
+ var containerCoords = __assign$1({ top: 0, left: 0, right: 0, bottom: 0 }, customBoundaries);
10771
+ var coverStyles = __assign$1(__assign$1({}, containerCoords), { position: 'absolute', backgroundColor: "rgba(255,255,255,".concat(opacity, ")") });
10772
+ return (React$1.createElement("div", __assign$1({ className: classes, style: coverStyles }, rest, { ref: forkedRef }),
10773
+ React$1.createElement("div", { style: {
10774
+ position: 'absolute',
10775
+ top: '50%',
10776
+ left: '50%',
10777
+ transform: 'translateX(-50%) translateY(-50%)',
10778
+ } }, children || React$1.createElement(CSpinner, { variant: "grow", color: "primary" }))));
10779
+ });
10780
+ CElementCover.propTypes = {
10781
+ boundaries: propTypesExports.array,
10782
+ children: propTypesExports.node,
10783
+ className: propTypesExports.string,
10784
+ opacity: propTypesExports.number,
10785
+ };
10786
+ CElementCover.displayName = 'CElementCover';
10787
+
10711
10788
  var CFooter = React$1.forwardRef(function (_a, ref) {
10712
10789
  var _b;
10713
10790
  var children = _a.children, className = _a.className, position = _a.position, rest = __rest$1(_a, ["children", "className", "position"]);
@@ -11008,7 +11085,7 @@ CListGroup.displayName = 'CListGroup';
11008
11085
 
11009
11086
  var CListGroupItem = React$1.forwardRef(function (_a, ref) {
11010
11087
  var _b;
11011
- 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"]);
11088
+ 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"]);
11012
11089
  var _className = classNames$1('list-group-item', (_b = {},
11013
11090
  _b["list-group-item-".concat(color)] = color,
11014
11091
  _b['list-group-item-action'] = component === 'a' || component === 'button',
@@ -11018,9 +11095,8 @@ var CListGroupItem = React$1.forwardRef(function (_a, ref) {
11018
11095
  var Component = component === 'a' || component === 'button' ? CLink : component;
11019
11096
  rest = __assign$1(__assign$1(__assign$1(__assign$1({}, ((component === 'a' || component === 'button') && {
11020
11097
  active: active,
11021
- component: component,
11022
11098
  disabled: disabled,
11023
- href: href,
11099
+ component: component,
11024
11100
  ref: ref,
11025
11101
  })), (active && { 'aria-current': true })), (disabled && { 'aria-disabled': true })), rest);
11026
11102
  return (React$1.createElement(Component, __assign$1({ className: _className }, rest), children));
@@ -11035,22 +11111,6 @@ CListGroupItem.propTypes = {
11035
11111
  };
11036
11112
  CListGroupItem.displayName = 'CListGroupItem';
11037
11113
 
11038
- var CSpinner = React$1.forwardRef(function (_a, ref) {
11039
- 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"]);
11040
- var _className = classNames$1("spinner-".concat(variant), "text-".concat(color), size && "spinner-".concat(variant, "-").concat(size), className);
11041
- return (React$1.createElement(Component, __assign$1({ className: _className, role: "status" }, rest, { ref: ref }),
11042
- React$1.createElement("span", { className: "visually-hidden" }, visuallyHiddenLabel)));
11043
- });
11044
- CSpinner.propTypes = {
11045
- className: propTypesExports.string,
11046
- color: colorPropType,
11047
- component: propTypesExports.string,
11048
- size: propTypesExports.oneOf(['sm']),
11049
- variant: propTypesExports.oneOf(['border', 'grow']),
11050
- visuallyHiddenLabel: propTypesExports.string,
11051
- };
11052
- CSpinner.displayName = 'CSpinner';
11053
-
11054
11114
  var CLoadingButton = React$1.forwardRef(function (_a, ref) {
11055
11115
  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"]);
11056
11116
  var _c = React$1.useState(), _loading = _c[0], setLoading = _c[1];
@@ -11294,12 +11354,6 @@ CModalTitle.propTypes = {
11294
11354
  };
11295
11355
  CModalTitle.displayName = 'CModalTitle';
11296
11356
 
11297
- // TODO: check if component property is necessary.
11298
- var CMultiSelectCleaner = React$1.forwardRef(function (props, ref) {
11299
- return (React$1.createElement("button", __assign$1({ type: "button", className: "form-multi-select-selection-cleaner" }, props, { ref: ref })));
11300
- });
11301
- CMultiSelectCleaner.displayName = 'CMultiSelectCleaner';
11302
-
11303
11357
  var CMultiSelectNativeSelect = React$1.forwardRef(function (_a, ref) {
11304
11358
  var multiple = _a.multiple, options = _a.options, rest = __rest$1(_a, ["multiple", "options"]);
11305
11359
  var createNativeOptions = function (options) {
@@ -11317,19 +11371,17 @@ CMultiSelectNativeSelect.propTypes = {
11317
11371
  CMultiSelectNativeSelect.displayName = 'CMultiSelectNativeSelect';
11318
11372
 
11319
11373
  var CVirtualScroller = React$1.forwardRef(function (_a, ref) {
11320
- 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;
11374
+ var children = _a.children, className = _a.className, visibleItems = _a.visibleItems, onScroll = _a.onScroll;
11321
11375
  var virtualScrollRef = React$1.useRef(null);
11322
11376
  var virtualScrollContentRef = React$1.useRef(null);
11323
11377
  var forkedRef = useForkedRef(ref, virtualScrollRef);
11324
- var _c = React$1.useState(0), currentItemIndex = _c[0], setCurrentItemIndex = _c[1];
11325
- var _d = React$1.useState(itemHeight === 'auto' ? 0 : itemHeight), _itemHeight = _d[0], setItemHeight = _d[1];
11326
- var _e = React$1.useState(itemsNumber || React$1.Children.count(children)), _itemsNumber = _e[0], setItemsNumber = _e[1];
11378
+ var _b = React$1.useState(Math.floor(visibleItems / 2)), buffer = _b[0], setBuffer = _b[1];
11379
+ var _c = React$1.useState(1), currentItemIndex = _c[0], setCurrentItemIndex = _c[1];
11380
+ var _d = React$1.useState(0), itemHeight = _d[0], setItemHeight = _d[1];
11381
+ var _e = React$1.useState(React$1.Children.count(children)), itemsNumber = _e[0], setItemsNumber = _e[1];
11327
11382
  var _f = React$1.useState(0), viewportPadding = _f[0], setViewportPadding = _f[1];
11328
- var _g = React$1.useState(visibleItems * _itemHeight + 2 * viewportPadding), viewportHeight = _g[0], setViewportHeight = _g[1];
11329
- var _h = React$1.useState(_itemsNumber * _itemHeight + 2 * viewportPadding), maxHeight = _h[0], setMaxHeight = _h[1];
11330
- var _j = React$1.useState(0), topPadding = _j[0], setTopPadding = _j[1];
11331
- var _k = React$1.useState(0), bottomPadding = _k[0], setBottomPadding = _k[1];
11332
- var _l = React$1.useState(0), contentHeight = _l[0], setContentHeight = _l[1];
11383
+ var _g = React$1.useState(visibleItems * itemHeight + 2 * viewportPadding), viewportHeight = _g[0], setViewportHeight = _g[1];
11384
+ var _h = React$1.useState(itemsNumber * itemHeight + 2 * viewportPadding), maxHeight = _h[0], setMaxHeight = _h[1];
11333
11385
  React$1.useEffect(function () {
11334
11386
  virtualScrollRef.current && virtualScrollRef.current.scrollTop;
11335
11387
  virtualScrollRef.current &&
@@ -11339,21 +11391,17 @@ var CVirtualScroller = React$1.forwardRef(function (_a, ref) {
11339
11391
  setItemsNumber(itemsNumber || React$1.Children.count(children));
11340
11392
  }, [children, itemsNumber]);
11341
11393
  React$1.useEffect(function () {
11342
- setViewportHeight(visibleItems * _itemHeight + 2 * viewportPadding);
11343
- }, [viewportPadding, visibleItems, _itemHeight]);
11394
+ setViewportHeight(visibleItems * itemHeight + 2 * viewportPadding);
11395
+ }, [viewportPadding, visibleItems, itemHeight]);
11344
11396
  React$1.useEffect(function () {
11345
- setMaxHeight(_itemsNumber * _itemHeight + 2 * viewportPadding);
11397
+ setMaxHeight(itemsNumber * itemHeight + 2 * viewportPadding);
11346
11398
  virtualScrollRef.current && virtualScrollRef.current.scrollTop;
11347
- setTopPadding(0);
11348
- }, [_itemsNumber, _itemHeight]);
11399
+ }, [itemsNumber, itemHeight]);
11400
+ React$1.useEffect(function () {
11401
+ setBuffer(Math.floor(visibleItems / 2));
11402
+ }, [visibleItems]);
11349
11403
  var handleScroll = function (scrollTop) {
11350
- var _currentItemIndex = Math.min(Math.max(1 +
11351
- Math.max(Math.floor(scrollTop / _itemHeight), 0) -
11352
- Math.min(Math.floor(visibleItems / 2) - (Math.floor(visibleItems / 2) - currentItemIndex) - 1, Math.floor(visibleItems / 2)), 1), _itemsNumber - visibleItems + 1);
11353
- virtualScrollContentRef.current &&
11354
- setContentHeight(virtualScrollContentRef.current.offsetHeight);
11355
- setTopPadding(Math.max(_currentItemIndex * _itemHeight - _itemHeight, 0));
11356
- setBottomPadding(Math.max(maxHeight - topPadding - contentHeight, 0));
11404
+ var _currentItemIndex = itemHeight && Math.max(Math.ceil(scrollTop / itemHeight), 1);
11357
11405
  setCurrentItemIndex(_currentItemIndex);
11358
11406
  onScroll && onScroll(_currentItemIndex);
11359
11407
  };
@@ -11364,20 +11412,22 @@ var CVirtualScroller = React$1.forwardRef(function (_a, ref) {
11364
11412
  height: maxHeight > viewportHeight ? viewportHeight : maxHeight,
11365
11413
  overflowY: 'auto',
11366
11414
  } },
11367
- React$1.createElement("div", { style: { height: topPadding } }),
11368
- React$1.createElement("div", { className: "virtual-scroller-content", ref: virtualScrollContentRef }, React$1.Children.map(children, function (child, index) {
11369
- var _index = index + 1;
11415
+ React$1.createElement("div", { className: "virtual-scroller-content", style: {
11416
+ height: maxHeight,
11417
+ }, ref: virtualScrollContentRef }, React$1.Children.map(children, function (child, index) {
11370
11418
  if (React$1.isValidElement(child) &&
11371
- _index >= Math.max(currentItemIndex - Math.floor(visibleItems / 2), 0) &&
11372
- _index <= currentItemIndex + visibleItems + Math.floor(visibleItems / 2)) {
11419
+ index + 1 > Math.max(currentItemIndex - buffer, 0) &&
11420
+ index + 1 <= currentItemIndex + visibleItems + buffer) {
11373
11421
  return React$1.cloneElement(child, {
11374
11422
  className: classNames$1(child.props.className, {
11375
- 'virtual-scroller-item-preload': _index > currentItemIndex + visibleItems || _index < currentItemIndex,
11423
+ 'virtual-scroller-item-preload': index + 1 > currentItemIndex + visibleItems || index + 1 < currentItemIndex,
11376
11424
  }),
11377
11425
  key: index,
11426
+ style: __assign$1({}, (currentItemIndex > buffer && {
11427
+ transform: "translateY(".concat((currentItemIndex - buffer) * itemHeight, "px)"),
11428
+ })),
11378
11429
  ref: function (node) {
11379
- return itemHeight === 'auto' &&
11380
- node &&
11430
+ return node &&
11381
11431
  node.offsetHeight &&
11382
11432
  setItemHeight(node.offsetHeight +
11383
11433
  parseFloat(getComputedStyle(node).marginTop) +
@@ -11386,28 +11436,90 @@ var CVirtualScroller = React$1.forwardRef(function (_a, ref) {
11386
11436
  });
11387
11437
  }
11388
11438
  return;
11389
- })),
11390
- React$1.createElement("div", { style: {
11391
- height: bottomPadding,
11392
- } })));
11439
+ }))));
11393
11440
  });
11394
11441
  CVirtualScroller.propTypes = {
11395
- itemHeight: propTypesExports.number,
11396
- itemsNumber: propTypesExports.number,
11397
11442
  onScroll: propTypesExports.func,
11398
11443
  visibleItems: propTypesExports.number.isRequired,
11399
11444
  };
11400
11445
  CVirtualScroller.displayName = 'CVirtualScroller';
11401
11446
 
11402
- var CMultiSelectOptions = React$1.forwardRef(function (_a, ref) {
11403
- 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;
11404
- var handleKeyDown = function (event, option) {
11405
- if (event.code === 'Space' || event.key === 'Enter') {
11406
- event.preventDefault();
11407
- handleOptionOnClick && handleOptionOnClick(option);
11408
- return;
11409
- }
11410
- if (event.key === 'Down' || event.key === 'ArrowDown') {
11447
+ var filterOptionsList = function (search, _options) {
11448
+ return search.length
11449
+ ? _options &&
11450
+ _options.reduce(function (acc, val) {
11451
+ var options = val.options &&
11452
+ val.options.filter(function (element) {
11453
+ return element.text && element.text.toLowerCase().includes(search.toLowerCase());
11454
+ });
11455
+ if ((val.text && val.text.toLowerCase().includes(search.toLowerCase())) ||
11456
+ (options && options.length)) {
11457
+ acc.push(Object.assign({}, val, options && options.length && { options: options }));
11458
+ }
11459
+ return acc;
11460
+ }, [])
11461
+ : _options;
11462
+ };
11463
+ var flattenArray = function (options) {
11464
+ return options.reduce(function (acc, val) {
11465
+ return acc.concat(Array.isArray(val.options) ? flattenArray(val.options) : val);
11466
+ }, []);
11467
+ };
11468
+ var getNextSibling = function (elem, selector) {
11469
+ // Get the next sibling element
11470
+ var sibling = elem.nextElementSibling;
11471
+ // If there's no selector, return the first sibling
11472
+ if (!selector)
11473
+ return sibling;
11474
+ // If the sibling matches our selector, use it
11475
+ // If not, jump to the next sibling and continue the loop
11476
+ while (sibling) {
11477
+ if (sibling.matches(selector))
11478
+ return sibling;
11479
+ sibling = sibling.nextElementSibling;
11480
+ }
11481
+ return;
11482
+ };
11483
+ var getPreviousSibling = function (elem, selector) {
11484
+ // Get the next sibling element
11485
+ var sibling = elem.previousElementSibling;
11486
+ // If there's no selector, return the first sibling
11487
+ if (!selector)
11488
+ return sibling;
11489
+ // If the sibling matches our selector, use it
11490
+ // If not, jump to the next sibling and continue the loop
11491
+ while (sibling) {
11492
+ if (sibling.matches(selector))
11493
+ return sibling;
11494
+ sibling = sibling.previousElementSibling;
11495
+ }
11496
+ return;
11497
+ };
11498
+ var selectOptions = function (options, selected, deselected) {
11499
+ var _selected = __spreadArray(__spreadArray([], selected, true), options, true);
11500
+ if (deselected) {
11501
+ _selected = _selected.filter(function (selectedOption) {
11502
+ return !deselected.some(function (deselectedOption) { return deselectedOption.value === selectedOption.value; });
11503
+ });
11504
+ }
11505
+ var deduplicated = _selected.reduce(function (unique, option) {
11506
+ if (!unique.some(function (obj) { return obj.value === option.value; })) {
11507
+ unique.push(__assign$1({ value: option.value, text: option.text }, (option.disabled && { disabled: option.disabled })));
11508
+ }
11509
+ return unique;
11510
+ }, []);
11511
+ return deduplicated;
11512
+ };
11513
+
11514
+ var CMultiSelectOptions = React$1.forwardRef(function (_a, ref) {
11515
+ 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;
11516
+ var handleKeyDown = function (event, option) {
11517
+ if (event.code === 'Space' || event.key === 'Enter') {
11518
+ event.preventDefault();
11519
+ handleOptionOnClick && handleOptionOnClick(option);
11520
+ return;
11521
+ }
11522
+ if (event.key === 'Down' || event.key === 'ArrowDown') {
11411
11523
  event.preventDefault();
11412
11524
  var target = event.target;
11413
11525
  var next = getNextSibling(target, '.form-multi-select-option');
@@ -11481,11 +11593,6 @@ CMultiSelectSelection.propTypes = {
11481
11593
  };
11482
11594
  CMultiSelectSelection.displayName = 'CMultiSelectSelection';
11483
11595
 
11484
- var flattenArray = function (options) {
11485
- return options.reduce(function (acc, val) {
11486
- return acc.concat(Array.isArray(val.options) ? flattenArray(val.options) : val);
11487
- }, []);
11488
- };
11489
11596
  var CMultiSelect = React$1.forwardRef(function (_a, ref) {
11490
11597
  var _b;
11491
11598
  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"]);
@@ -11496,21 +11603,6 @@ var CMultiSelect = React$1.forwardRef(function (_a, ref) {
11496
11603
  var _s = React$1.useState(''), _search = _s[0], setSearch = _s[1];
11497
11604
  var _t = React$1.useState(visible), _visible = _t[0], setVisible = _t[1];
11498
11605
  var _u = React$1.useState([]), selected = _u[0], setSelected = _u[1];
11499
- var selectOptions = function (options, deselected) {
11500
- var _selected = __spreadArray(__spreadArray([], selected, true), options, true);
11501
- if (deselected) {
11502
- _selected = _selected.filter(function (selectedOption) {
11503
- return !deselected.some(function (deselectedOption) { return deselectedOption.value === selectedOption.value; });
11504
- });
11505
- }
11506
- var deduplicated = _selected.reduce(function (unique, option) {
11507
- if (!unique.some(function (obj) { return obj.value === option.value; })) {
11508
- unique.push(__assign$1({ value: option.value, text: option.text }, (option.disabled && { disabled: option.disabled })));
11509
- }
11510
- return unique;
11511
- }, []);
11512
- setSelected(deduplicated);
11513
- };
11514
11606
  React$1.useMemo(function () {
11515
11607
  setOptions(options);
11516
11608
  var _selected = options &&
@@ -11527,7 +11619,7 @@ var CMultiSelect = React$1.forwardRef(function (_a, ref) {
11527
11619
  }
11528
11620
  return;
11529
11621
  });
11530
- _selected && selectOptions(_selected, deselected);
11622
+ _selected && setSelected(selectOptions(_selected, selected, deselected));
11531
11623
  }, [JSON.stringify(options)]);
11532
11624
  React$1.useEffect(function () {
11533
11625
  !isInitialMount.current &&
@@ -11547,22 +11639,6 @@ var CMultiSelect = React$1.forwardRef(function (_a, ref) {
11547
11639
  React$1.useEffect(function () {
11548
11640
  isInitialMount.current = false;
11549
11641
  }, []);
11550
- var filterOptionsList = function (search, options) {
11551
- return search.length
11552
- ? options &&
11553
- options.reduce(function (acc, val) {
11554
- var options = val.options &&
11555
- val.options.filter(function (element) {
11556
- return element.text && element.text.toLowerCase().includes(search.toLowerCase());
11557
- });
11558
- if ((val.text && val.text.toLowerCase().includes(search.toLowerCase())) ||
11559
- (options && options.length)) {
11560
- acc.push(Object.assign({}, val, options && options.length && { options: options }));
11561
- }
11562
- return acc;
11563
- }, [])
11564
- : _options;
11565
- };
11566
11642
  var handleSearchChange = function (event) {
11567
11643
  var target = event.target;
11568
11644
  if (search !== 'external') {
@@ -11596,7 +11672,7 @@ var CMultiSelect = React$1.forwardRef(function (_a, ref) {
11596
11672
  }
11597
11673
  };
11598
11674
  var handleSelectAll = function () {
11599
- selectOptions(flattenArray(options).filter(function (option) { return !option.disabled; }));
11675
+ setSelected(selectOptions(flattenArray(options).filter(function (option) { return !option.disabled; }), selected));
11600
11676
  };
11601
11677
  var handleDeselectAll = function () {
11602
11678
  setSelected(selected.filter(function (option) { return option.disabled; }));
@@ -11610,7 +11686,7 @@ var CMultiSelect = React$1.forwardRef(function (_a, ref) {
11610
11686
  setVisible(true);
11611
11687
  }, toggler: React$1.createElement("div", null,
11612
11688
  React$1.createElement(CMultiSelectSelection, { multiple: multiple, onRemove: function (option) { return !disabled && handleOptionOnClick(option); }, search: search, selected: selected, selectionType: selectionType, selectionTypeCounterText: selectionTypeCounterText }),
11613
- multiple && cleaner && selected.length > 0 && (React$1.createElement(CMultiSelectCleaner, { onClick: function () { return handleDeselectAll(); } })),
11689
+ multiple && cleaner && selected.length > 0 && (React$1.createElement("button", { type: "button", className: "form-multi-select-selection-cleaner", onClick: function () { return handleDeselectAll(); } })),
11614
11690
  search && (React$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 &&
11615
11691
  selectionType === 'counter' && {
11616
11692
  placeholder: "".concat(selected.length, " ").concat(selectionTypeCounterText),
@@ -11883,8 +11959,8 @@ CNavbarToggler.displayName = 'CNavbarToggler';
11883
11959
 
11884
11960
  var COffcanvas = React$1.forwardRef(function (_a, ref) {
11885
11961
  var _b;
11886
- 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"]);
11887
- var _h = React$1.useState(visible), _visible = _h[0], setVisible = _h[1];
11962
+ 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"]);
11963
+ var _j = React$1.useState(visible), _visible = _j[0], setVisible = _j[1];
11888
11964
  var offcanvasRef = React$1.useRef(null);
11889
11965
  var forkedRef = useForkedRef(ref, offcanvasRef);
11890
11966
  React$1.useEffect(function () {
@@ -11903,19 +11979,27 @@ var COffcanvas = React$1.forwardRef(function (_a, ref) {
11903
11979
  document.body.style.removeProperty('padding-right');
11904
11980
  }
11905
11981
  }, [_visible]);
11906
- var _className = classNames$1('offcanvas', (_b = {},
11982
+ var getTransitionClass = function (state) {
11983
+ return state === 'entering'
11984
+ ? 'showing'
11985
+ : state === 'entered'
11986
+ ? 'show'
11987
+ : state === 'exiting'
11988
+ ? 'show hiding'
11989
+ : '';
11990
+ };
11991
+ var _className = classNames$1((_b = {},
11992
+ _b["offcanvas".concat(typeof responsive !== 'boolean' ? '-' + responsive : '')] = responsive,
11907
11993
  _b["offcanvas-".concat(placement)] = placement,
11908
- _b.show = _visible,
11909
11994
  _b), className);
11910
- var transitionStyles = {
11911
- entering: { visibility: 'visible' },
11912
- entered: { visibility: 'visible' },
11913
- exiting: { visibility: 'visible' },
11914
- exited: { visibility: 'hidden' },
11915
- };
11916
11995
  var handleDismiss = function () {
11917
11996
  setVisible(false);
11918
11997
  };
11998
+ var handleBackdropDismiss = function () {
11999
+ if (backdrop !== 'static') {
12000
+ setVisible(false);
12001
+ }
12002
+ };
11919
12003
  var handleKeyDown = React$1.useCallback(function (event) {
11920
12004
  if (event.key === 'Escape' && keyboard) {
11921
12005
  return handleDismiss();
@@ -11923,7 +12007,7 @@ var COffcanvas = React$1.forwardRef(function (_a, ref) {
11923
12007
  }, [ref, handleDismiss]);
11924
12008
  var offcanvas = function (ref, state) {
11925
12009
  return (React$1.createElement(React$1.Fragment, null,
11926
- React$1.createElement("div", __assign$1({ className: _className, role: "dialog", style: __assign$1({}, transitionStyles[state]), tabIndex: -1, onKeyDown: handleKeyDown }, rest, { ref: ref }), children)));
12010
+ React$1.createElement("div", __assign$1({ className: classNames$1(_className, getTransitionClass(state)), role: "dialog", tabIndex: -1, onKeyDown: handleKeyDown }, rest, { ref: ref }), children)));
11927
12011
  };
11928
12012
  return (React$1.createElement(React$1.Fragment, null,
11929
12013
  React$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) {
@@ -11933,11 +12017,11 @@ var COffcanvas = React$1.forwardRef(function (_a, ref) {
11933
12017
  }),
11934
12018
  typeof window !== 'undefined' && portal
11935
12019
  ? backdrop &&
11936
- ReactDOM.createPortal(React$1.createElement(CBackdrop, { className: "offcanvas-backdrop", onClick: handleDismiss, visible: _visible }), document.body)
11937
- : backdrop && (React$1.createElement(CBackdrop, { className: "offcanvas-backdrop", onClick: handleDismiss, visible: _visible }))));
12020
+ ReactDOM.createPortal(React$1.createElement(CBackdrop, { className: "offcanvas-backdrop", onClick: handleBackdropDismiss, visible: _visible }), document.body)
12021
+ : backdrop && (React$1.createElement(CBackdrop, { className: "offcanvas-backdrop", onClick: handleBackdropDismiss, visible: _visible }))));
11938
12022
  });
11939
12023
  COffcanvas.propTypes = {
11940
- backdrop: propTypesExports.bool,
12024
+ backdrop: propTypesExports.oneOfType([propTypesExports.bool, propTypesExports.oneOf(['static'])]),
11941
12025
  children: propTypesExports.node,
11942
12026
  className: propTypesExports.string,
11943
12027
  keyboard: propTypesExports.bool,
@@ -11946,6 +12030,10 @@ COffcanvas.propTypes = {
11946
12030
  placement: propTypesExports.oneOf(['start', 'end', 'top', 'bottom'])
11947
12031
  .isRequired,
11948
12032
  portal: propTypesExports.bool,
12033
+ responsive: propTypesExports.oneOfType([
12034
+ propTypesExports.bool,
12035
+ propTypesExports.oneOf(['sm', 'md', 'lg', 'xl', 'xxl']),
12036
+ ]),
11949
12037
  scroll: propTypesExports.bool,
11950
12038
  visible: propTypesExports.bool,
11951
12039
  };
@@ -12163,440 +12251,53 @@ CPopover.propTypes = {
12163
12251
  };
12164
12252
  CPopover.displayName = 'CPopover';
12165
12253
 
12166
- 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'/>"];
12254
+ 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'/>"];
12167
12255
 
12168
- 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'/>"];
12256
+ 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'/>"];
12169
12257
 
12170
- 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'/>"];
12258
+ 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'/>"];
12171
12259
 
12172
- 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'/>"];
12260
+ 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'/>"];
12173
12261
 
12174
- var CElementCover = React$1.forwardRef(function (_a, ref) {
12175
- 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"]);
12176
- var elementCoverRef = React$1.useRef(null);
12177
- var forkedRef = useForkedRef(ref, elementCoverRef);
12178
- var _c = React$1.useState({}), customBoundaries = _c[0], setCustomBoundaries = _c[1];
12179
- var getCustomBoundaries = function () {
12180
- if (!elementCoverRef || !elementCoverRef.current || !boundaries) {
12181
- return {};
12182
- }
12183
- var parent = elementCoverRef.current.parentElement;
12184
- if (!parent) {
12185
- return {};
12186
- }
12187
- var parentCoords = parent.getBoundingClientRect();
12188
- var customBoundaries = {};
12189
- boundaries.forEach(function (_a) {
12190
- var sides = _a.sides, query = _a.query;
12191
- var element = parent.querySelector(query);
12192
- if (!element || !sides) {
12193
- return;
12194
- }
12195
- var coords = element.getBoundingClientRect();
12196
- sides.forEach(function (side) {
12197
- var sideMargin = Math.abs(coords[side] - parentCoords[side]);
12198
- customBoundaries[side] = "".concat(sideMargin, "px");
12199
- });
12200
- });
12201
- return customBoundaries;
12202
- };
12203
- React$1.useEffect(function () {
12204
- setCustomBoundaries(getCustomBoundaries());
12205
- }, [JSON.stringify(getCustomBoundaries())]);
12206
- //render
12207
- var classes = classNames$1(className);
12208
- var containerCoords = __assign$1({ top: 0, left: 0, right: 0, bottom: 0 }, customBoundaries);
12209
- var coverStyles = __assign$1(__assign$1({}, containerCoords), { position: 'absolute', backgroundColor: "rgb(255,255,255,".concat(opacity, ")") });
12210
- return (React$1.createElement("div", __assign$1({ className: classes, style: coverStyles }, rest, { ref: forkedRef }), children || (React$1.createElement("div", { style: {
12211
- position: 'absolute',
12212
- top: '50%',
12213
- left: '50%',
12214
- transform: 'translateX(-50%) translateY(-50%)',
12215
- } },
12216
- React$1.createElement(CSpinner, { variant: "grow", color: "primary" })))));
12217
- });
12218
- CElementCover.propTypes = {
12219
- boundaries: propTypesExports.array,
12220
- children: propTypesExports.node,
12221
- className: propTypesExports.string,
12222
- opacity: propTypesExports.number,
12223
- };
12224
- CElementCover.displayName = 'CElementCover';
12262
+ /******************************************************************************
12263
+ Copyright (c) Microsoft Corporation.
12264
+
12265
+ Permission to use, copy, modify, and/or distribute this software for any
12266
+ purpose with or without fee is hereby granted.
12267
+
12268
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
12269
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
12270
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12271
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
12272
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
12273
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
12274
+ PERFORMANCE OF THIS SOFTWARE.
12275
+ ***************************************************************************** */
12276
+
12277
+ var __assign = function() {
12278
+ __assign = Object.assign || function __assign(t) {
12279
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
12280
+ s = arguments[i];
12281
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
12282
+ }
12283
+ return t;
12284
+ };
12285
+ return __assign.apply(this, arguments);
12286
+ };
12287
+
12288
+ function __rest(s, e) {
12289
+ var t = {};
12290
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
12291
+ t[p] = s[p];
12292
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
12293
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
12294
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
12295
+ t[p[i]] = s[p[i]];
12296
+ }
12297
+ return t;
12298
+ }
12225
12299
 
12226
- var CSmartPagination = React$1.forwardRef(function (_a, ref) {
12227
- 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$1.createElement(React$1.Fragment, null, "\u00AB") : _g, _h = _a.lastButton, lastButton = _h === void 0 ? React$1.createElement(React$1.Fragment, null, "\u00BB") : _h, _j = _a.limit, limit = _j === void 0 ? 5 : _j, _k = _a.nextButton, nextButton = _k === void 0 ? React$1.createElement(React$1.Fragment, null, "\u203A") : _k, onActivePageChange = _a.onActivePageChange, pages = _a.pages, _l = _a.previousButton, previousButton = _l === void 0 ? React$1.createElement(React$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"]);
12228
- var _classNames = classNames$1("justify-content-".concat(align), className);
12229
- var showDots = (function () {
12230
- return dots && limit > 4 && limit < pages;
12231
- })();
12232
- var maxPrevItems = (function () {
12233
- return Math.floor((limit - 1) / 2);
12234
- })();
12235
- var maxNextItems = (function () {
12236
- return Math.ceil((limit - 1) / 2);
12237
- })();
12238
- var beforeDots = (function () {
12239
- return showDots && activePage > maxPrevItems + 1;
12240
- })();
12241
- var afterDots = (function () {
12242
- return showDots && activePage < pages - maxNextItems;
12243
- })();
12244
- var computedLimit = (function () {
12245
- return limit - (afterDots ? 1 : 0) - (beforeDots ? 1 : 0);
12246
- })();
12247
- var range = (function () {
12248
- return activePage + maxNextItems;
12249
- })();
12250
- var lastItem = (function () {
12251
- return range >= pages ? pages : range - (afterDots ? 1 : 0);
12252
- })();
12253
- var itemsAmount = (function () {
12254
- return pages < computedLimit ? pages : computedLimit;
12255
- })();
12256
- var items = (function () {
12257
- if (activePage - maxPrevItems <= 1) {
12258
- return Array.from({
12259
- length: itemsAmount,
12260
- }, function (_v, i) { return i + 1; });
12261
- }
12262
- else {
12263
- return Array.from({
12264
- length: itemsAmount,
12265
- }, function (_v, i) {
12266
- return lastItem - i;
12267
- }).reverse();
12268
- }
12269
- })();
12270
- var setPage = function (number) {
12271
- if (number !== activePage) {
12272
- onActivePageChange && onActivePageChange(number);
12273
- }
12274
- };
12275
- return (React$1.createElement(CPagination, __assign$1({ className: _classNames, "aria-label": "pagination", size: size }, rest, { ref: ref }),
12276
- doubleArrows && (React$1.createElement(CPaginationItem, { onClick: function () { return setPage(1); }, "aria-label": "Go to first page", "aria-disabled": activePage === 1, disabled: activePage === 1 }, firstButton)),
12277
- arrows && (React$1.createElement(CPaginationItem, { onClick: function () { return setPage(activePage - 1); }, "aria-label": "Go to previous page", "aria-disabled": activePage === 1, disabled: activePage === 1 }, previousButton)),
12278
- beforeDots && (React$1.createElement(CPaginationItem, { role: "separator", disabled: true }, "\u2026")),
12279
- items.map(function (i) {
12280
- return (React$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));
12281
- }),
12282
- afterDots && (React$1.createElement(CPaginationItem, { role: "separator", disabled: true }, "\u2026")),
12283
- arrows && (React$1.createElement(CPaginationItem, { onClick: function () { return setPage(activePage + 1); }, "aria-label": "Go to next page", "aria-disabled": activePage === pages, disabled: activePage === pages }, nextButton)),
12284
- doubleArrows && (React$1.createElement(CPaginationItem, { onClick: function () { return setPage(pages); }, "aria-label": "Go to last page", "aria-disabled": activePage === pages, disabled: activePage === pages }, lastButton))));
12285
- });
12286
- CSmartPagination.propTypes = {
12287
- className: propTypesExports.oneOfType([propTypesExports.string]),
12288
- activePage: propTypesExports.number,
12289
- dots: propTypesExports.bool,
12290
- arrows: propTypesExports.bool,
12291
- doubleArrows: propTypesExports.bool,
12292
- firstButton: propTypesExports.oneOfType([propTypesExports.node, propTypesExports.string]),
12293
- previousButton: propTypesExports.oneOfType([propTypesExports.node, propTypesExports.string]),
12294
- nextButton: propTypesExports.oneOfType([propTypesExports.node, propTypesExports.string]),
12295
- lastButton: propTypesExports.oneOfType([propTypesExports.node, propTypesExports.string]),
12296
- size: propTypesExports.oneOf(['sm', 'lg']),
12297
- align: propTypesExports.oneOf(['start', 'center', 'end']),
12298
- limit: propTypesExports.number,
12299
- pages: propTypesExports.number.isRequired,
12300
- onActivePageChange: propTypesExports.func,
12301
- };
12302
- CSmartPagination.displayName = 'CSmartPagination';
12303
-
12304
- var CTableHead = React$1.forwardRef(function (_a, ref) {
12305
- var _b;
12306
- var children = _a.children, className = _a.className, color = _a.color, rest = __rest$1(_a, ["children", "className", "color"]);
12307
- var _className = classNames$1((_b = {},
12308
- _b["table-".concat(color)] = color,
12309
- _b), className);
12310
- return (React$1.createElement("thead", __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
12311
- });
12312
- CTableHead.propTypes = {
12313
- children: propTypesExports.node,
12314
- className: propTypesExports.string,
12315
- color: colorPropType,
12316
- };
12317
- CTableHead.displayName = 'CTableHead';
12318
-
12319
- var CTableHeaderCell = React$1.forwardRef(function (_a, ref) {
12320
- var _b;
12321
- var children = _a.children, className = _a.className, color = _a.color, rest = __rest$1(_a, ["children", "className", "color"]);
12322
- var _className = classNames$1((_b = {},
12323
- _b["table-".concat(color)] = color,
12324
- _b), className);
12325
- return (React$1.createElement("th", __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
12326
- });
12327
- CTableHeaderCell.propTypes = {
12328
- children: propTypesExports.node,
12329
- className: propTypesExports.string,
12330
- color: colorPropType,
12331
- };
12332
- CTableHeaderCell.displayName = 'CTableHeaderCell';
12333
-
12334
- var CTableBody = React$1.forwardRef(function (_a, ref) {
12335
- var _b;
12336
- var children = _a.children, className = _a.className, color = _a.color, rest = __rest$1(_a, ["children", "className", "color"]);
12337
- var _className = classNames$1((_b = {},
12338
- _b["table-".concat(color)] = color,
12339
- _b), className);
12340
- return (React$1.createElement("tbody", __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
12341
- });
12342
- CTableBody.propTypes = {
12343
- children: propTypesExports.node,
12344
- className: propTypesExports.string,
12345
- color: colorPropType,
12346
- };
12347
- CTableBody.displayName = 'CTableBody';
12348
-
12349
- var CTableDataCell = React$1.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
- var Component = rest.scope ? 'th' : 'td';
12358
- return (React$1.createElement(Component, __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
12359
- });
12360
- CTableDataCell.propTypes = {
12361
- active: propTypesExports.bool,
12362
- align: propTypesExports.oneOf(['bottom', 'middle', 'top']),
12363
- children: propTypesExports.node,
12364
- className: propTypesExports.string,
12365
- color: colorPropType,
12366
- };
12367
- CTableDataCell.displayName = 'CTableDataCell';
12368
-
12369
- var CTableRow = React$1.forwardRef(function (_a, ref) {
12370
- var _b;
12371
- 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"]);
12372
- var _className = classNames$1((_b = {},
12373
- _b["align-".concat(align)] = align,
12374
- _b['table-active'] = active,
12375
- _b["table-".concat(color)] = color,
12376
- _b), className);
12377
- return (React$1.createElement("tr", __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
12378
- });
12379
- CTableRow.propTypes = {
12380
- active: propTypesExports.bool,
12381
- align: propTypesExports.oneOf(['bottom', 'middle', 'top']),
12382
- children: propTypesExports.node,
12383
- className: propTypesExports.string,
12384
- color: colorPropType,
12385
- };
12386
- CTableRow.displayName = 'CTableRow';
12387
-
12388
- var CTableFoot = React$1.forwardRef(function (_a, ref) {
12389
- var _b;
12390
- var children = _a.children, className = _a.className, color = _a.color, rest = __rest$1(_a, ["children", "className", "color"]);
12391
- var _className = classNames$1((_b = {},
12392
- _b["table-".concat(color)] = color,
12393
- _b), className);
12394
- return (React$1.createElement("tfoot", __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
12395
- });
12396
- CTableFoot.propTypes = {
12397
- children: propTypesExports.node,
12398
- className: propTypesExports.string,
12399
- color: colorPropType,
12400
- };
12401
- CTableFoot.displayName = 'CTableFoot';
12402
-
12403
- var CTableCaption = React$1.forwardRef(function (_a, ref) {
12404
- var children = _a.children, props = __rest$1(_a, ["children"]);
12405
- return (React$1.createElement("caption", __assign$1({}, props, { ref: ref }), children));
12406
- });
12407
- CTableCaption.propTypes = {
12408
- children: propTypesExports.node,
12409
- };
12410
- CTableCaption.displayName = 'CTableCaption';
12411
-
12412
- var CTableResponsiveWrapper = function (_a) {
12413
- var children = _a.children, responsive = _a.responsive, rest = __rest$1(_a, ["children", "responsive"]);
12414
- return responsive ? (React$1.createElement("div", __assign$1({ className: typeof responsive === 'boolean' ? 'table-responsive' : "table-responsive-".concat(responsive) }, rest), children)) : (children);
12415
- };
12416
- CTableResponsiveWrapper.propTypes = {
12417
- children: propTypesExports.any,
12418
- responsive: propTypesExports.oneOfType([
12419
- propTypesExports.bool,
12420
- propTypesExports.oneOf(['sm', 'md', 'lg', 'xl', 'xxl']),
12421
- ]),
12422
- };
12423
- CTableResponsiveWrapper.displayName = 'CTableResponsiveWrapper';
12424
-
12425
- var CTable = React$1.forwardRef(function (_a, ref) {
12426
- var _b;
12427
- 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"]);
12428
- var _className = classNames$1('table', (_b = {},
12429
- _b["align-".concat(align)] = align,
12430
- _b["border-".concat(borderColor)] = borderColor,
12431
- _b["caption-top"] = captionTop || caption === 'top',
12432
- _b['table-bordered'] = bordered,
12433
- _b['table-borderless'] = borderless,
12434
- _b["table-".concat(color)] = color,
12435
- _b['table-hover'] = hover,
12436
- _b['table-sm'] = small,
12437
- _b['table-striped'] = striped,
12438
- _b['table-striped-columns'] = stripedColumns,
12439
- _b), className);
12440
- var rawColumnNames = columns
12441
- ? columns.map(function (column) {
12442
- if (typeof column === 'object')
12443
- return column.key;
12444
- else
12445
- return column;
12446
- })
12447
- : Object.keys((items && items[0]) || {}).filter(function (el) { return el.charAt(0) !== '_'; });
12448
- var pretifyName = function (name) {
12449
- return name
12450
- .replace(/[-_.]/g, ' ')
12451
- .replace(/ +/g, ' ')
12452
- .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
12453
- .split(' ')
12454
- .map(function (word) { return word.charAt(0).toUpperCase() + word.slice(1); })
12455
- .join(' ');
12456
- };
12457
- var label = function (column) {
12458
- return typeof column === 'object'
12459
- ? column.label !== undefined
12460
- ? column.label
12461
- : pretifyName(column.key)
12462
- : pretifyName(column);
12463
- };
12464
- return (React$1.createElement(CTableResponsiveWrapper, { responsive: responsive },
12465
- React$1.createElement("table", __assign$1({ className: _className }, rest, { ref: ref }),
12466
- ((caption && caption !== 'top') || captionTop) && (React$1.createElement(CTableCaption, null, caption || captionTop)),
12467
- columns && (React$1.createElement(CTableHead, __assign$1({}, tableHeadProps),
12468
- React$1.createElement(CTableRow, null, columns.map(function (column, index) { return (React$1.createElement(CTableHeaderCell, __assign$1({}, (column._props && __assign$1({}, column._props)), (column._style && { style: __assign$1({}, column._style) }), { key: index }), label(column))); })))),
12469
- items && (React$1.createElement(CTableBody, null, items.map(function (item, index) { return (React$1.createElement(CTableRow, __assign$1({}, (item._props && __assign$1({}, item._props)), { key: index }), rawColumnNames.map(function (colName, index) {
12470
- return item[colName] ? (React$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;
12471
- }))); }))),
12472
- children,
12473
- footer && (React$1.createElement(CTableFoot, __assign$1({}, tableFootProps),
12474
- React$1.createElement(CTableRow, null, footer.map(function (item, index) { return (React$1.createElement(CTableDataCell, __assign$1({}, (typeof item === 'object' && item._props && __assign$1({}, item._props)), { key: index }), typeof item === 'object' ? item.label : item)); })))))));
12475
- });
12476
- CTable.propTypes = {
12477
- align: propTypesExports.oneOf(['bottom', 'middle', 'top']),
12478
- borderColor: propTypesExports.string,
12479
- bordered: propTypesExports.bool,
12480
- borderless: propTypesExports.bool,
12481
- caption: propTypesExports.oneOfType([propTypesExports.string, propTypesExports.oneOf(['top'])]),
12482
- captionTop: propTypesExports.string,
12483
- children: propTypesExports.node,
12484
- className: propTypesExports.string,
12485
- color: colorPropType,
12486
- columns: propTypesExports.array,
12487
- footer: propTypesExports.array,
12488
- hover: propTypesExports.bool,
12489
- items: propTypesExports.array,
12490
- responsive: propTypesExports.oneOfType([
12491
- propTypesExports.bool,
12492
- propTypesExports.oneOf(['sm', 'md', 'lg', 'xl', 'xxl']),
12493
- ]),
12494
- small: propTypesExports.bool,
12495
- striped: propTypesExports.bool,
12496
- stripedColumns: propTypesExports.bool,
12497
- tableFootProps: propTypesExports.shape(__assign$1({}, CTableFoot.propTypes)),
12498
- tableHeadProps: propTypesExports.shape(__assign$1({}, CTableHead.propTypes)),
12499
- };
12500
- CTable.displayName = 'CTable';
12501
-
12502
- var CSmartTableBody = React$1.forwardRef(function (_a, ref) {
12503
- 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"]);
12504
- var tableDataCellProps = function (item, colName) {
12505
- var props = item._cellProps && __assign$1(__assign$1({}, (item._cellProps['all'] && __assign$1({}, item._cellProps['all']))), (item._cellProps[colName] && __assign$1({}, item._cellProps[colName])));
12506
- return props;
12507
- };
12508
- var getColumnName = function (event) {
12509
- var target = event.target;
12510
- var closest = target.closest('tr');
12511
- var children = closest ? Array.from(closest.children) : [];
12512
- var clickedCell = children.filter(function (child) { return child.contains(target); })[0];
12513
- return rawColumnNames[children.indexOf(clickedCell)];
12514
- };
12515
- var colspan = selectable ? rawColumnNames.length + 1 : rawColumnNames.length;
12516
- return (React$1.createElement(CTableBody, __assign$1({}, (clickableRows && {
12517
- style: { cursor: 'pointer' },
12518
- }), rest, { ref: ref }),
12519
- currentItems.map(function (item, trIndex) {
12520
- return (React$1.createElement(React$1.Fragment, { key: trIndex },
12521
- React$1.createElement(CTableRow, __assign$1({}, (item._props && __assign$1({}, item._props)), (clickableRows && { tabIndex: 0 }), { onClick: function (event) {
12522
- return onRowClick &&
12523
- onRowClick(item, trIndex + firstItemOnActivePageIndex, getColumnName(event), event);
12524
- } }),
12525
- selectable && (React$1.createElement(CTableDataCell, null,
12526
- React$1.createElement(CFormCheck, { checked: item._selected ? item._selected : false, onChange: function (event) {
12527
- return onRowChecked && onRowChecked(item._id, event.target.checked);
12528
- } }))),
12529
- rawColumnNames.map(function (colName, index) {
12530
- return ((scopedColumns &&
12531
- scopedColumns[colName] &&
12532
- React$1.cloneElement(scopedColumns[colName](item, trIndex + firstItemOnActivePageIndex), {
12533
- key: index,
12534
- })) || (React$1.createElement(CTableDataCell, __assign$1({}, tableDataCellProps(item, colName), { key: index }), String(item[colName]))));
12535
- })),
12536
- scopedColumns && scopedColumns.details && (React$1.createElement(React$1.Fragment, null,
12537
- React$1.createElement(CTableRow, null,
12538
- React$1.createElement(CTableDataCell, { colSpan: colspan, className: "p-0", style: { borderBottomWidth: 0 }, tabIndex: -1 })),
12539
- React$1.createElement(CTableRow, { onClick: function (event) {
12540
- return onRowClick &&
12541
- onRowClick(item, trIndex + firstItemOnActivePageIndex, getColumnName(event), true);
12542
- }, className: "p-0", key: "details".concat(trIndex) },
12543
- React$1.createElement(CTableDataCell, { colSpan: colspan, className: "p-0", style: { border: 0 } }, scopedColumns.details(item, trIndex + firstItemOnActivePageIndex)))))));
12544
- }),
12545
- !currentItems.length && (React$1.createElement(CTableRow, null,
12546
- React$1.createElement(CTableDataCell, { colSpan: colspan }, noItemsLabel)))));
12547
- });
12548
- CSmartTableBody.propTypes = {
12549
- clickableRows: propTypesExports.bool,
12550
- currentItems: propTypesExports.array.isRequired,
12551
- firstItemOnActivePageIndex: propTypesExports.number.isRequired,
12552
- noItemsLabel: propTypesExports.oneOfType([propTypesExports.string, propTypesExports.node]),
12553
- onRowChecked: propTypesExports.func,
12554
- onRowClick: propTypesExports.func,
12555
- rawColumnNames: propTypesExports.array.isRequired,
12556
- scopedColumns: propTypesExports.object,
12557
- selectable: propTypesExports.bool,
12558
- };
12559
- CSmartTableBody.displayName = 'CSmartTableBody';
12560
-
12561
- /******************************************************************************
12562
- Copyright (c) Microsoft Corporation.
12563
-
12564
- Permission to use, copy, modify, and/or distribute this software for any
12565
- purpose with or without fee is hereby granted.
12566
-
12567
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
12568
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
12569
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12570
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
12571
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
12572
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
12573
- PERFORMANCE OF THIS SOFTWARE.
12574
- ***************************************************************************** */
12575
-
12576
- var __assign = function() {
12577
- __assign = Object.assign || function __assign(t) {
12578
- for (var s, i = 1, n = arguments.length; i < n; i++) {
12579
- s = arguments[i];
12580
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
12581
- }
12582
- return t;
12583
- };
12584
- return __assign.apply(this, arguments);
12585
- };
12586
-
12587
- function __rest(s, e) {
12588
- var t = {};
12589
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
12590
- t[p] = s[p];
12591
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
12592
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
12593
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
12594
- t[p[i]] = s[p[i]];
12595
- }
12596
- return t;
12597
- }
12598
-
12599
- var propTypes = {exports: {}};
12300
+ var propTypes = {exports: {}};
12600
12301
 
12601
12302
  var reactIs = {exports: {}};
12602
12303
 
@@ -13922,126 +13623,532 @@ CIcon.propTypes = {
13922
13623
  };
13923
13624
  CIcon.displayName = 'CIcon';
13924
13625
 
13925
- var CSmartTableCleaner = React$1.forwardRef(function (_a, ref) {
13926
- var _b = _a.content, content = _b === void 0 ? React$1.createElement(CIcon, { width: 18, icon: cilFilterX }) : _b, isFiltered = _a.isFiltered, rest = __rest$1(_a, ["content", "isFiltered"]);
13927
- return (React$1.createElement("button", __assign$1({ type: "button", className: "btn btn-transparent" }, (!isFiltered && {
13928
- disabled: true,
13929
- tabIndex: -1,
13930
- }), rest, { ref: ref }), content));
13931
- });
13932
- CSmartTableCleaner.propTypes = {
13933
- content: propTypesExports.oneOfType([propTypesExports.node, propTypesExports.string]),
13934
- isFiltered: propTypesExports.string,
13935
- };
13936
- CSmartTableCleaner.displayName = 'CSmartTableCleaner';
13937
-
13938
- var CSmartTableFilter = React$1.forwardRef(function (_a, ref) {
13939
- var filterLabel = _a.filterLabel, filterPlaceholder = _a.filterPlaceholder, value = _a.value, rest = __rest$1(_a, ["filterLabel", "filterPlaceholder", "value"]);
13940
- return (React$1.createElement("div", { className: "row mb-2" },
13941
- React$1.createElement(CFormLabel, { className: "col-sm-auto col-form-label" }, filterLabel),
13942
- React$1.createElement("div", { className: "col-sm-auto" },
13943
- React$1.createElement(CFormInput, __assign$1({ placeholder: filterPlaceholder, value: value }, rest, { ref: ref })))));
13944
- });
13945
- CSmartTableFilter.propTypes = {
13946
- filterLabel: propTypesExports.string,
13947
- filterPlaceholder: propTypesExports.string,
13948
- value: propTypesExports.oneOfType([propTypesExports.number, propTypesExports.string]),
13949
- };
13950
- CSmartTableFilter.displayName = 'CSmartTableFilter';
13951
-
13952
- var CSmartTableHead = React$1.forwardRef(function (_a, ref) {
13953
- 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"]);
13954
- var _c = React$1.useState(false), refresh = _c[0], setRefresh = _c[1];
13955
- React$1.useEffect(function () {
13956
- if (columnFilterState && Object.keys(columnFilterState).length === 0) {
13957
- setRefresh(true);
13958
- }
13959
- }, [columnFilterState]);
13960
- React$1.useEffect(function () {
13961
- setRefresh(true);
13962
- }, [items]);
13963
- React$1.useEffect(function () {
13964
- if (setRefresh) {
13965
- setRefresh(false);
13966
- }
13967
- }, [refresh]);
13968
- var tableHeaderCellProps = function (column) {
13969
- if (typeof column === 'object' && column._props) {
13970
- return column._props;
13626
+ var CSmartPagination = React$1.forwardRef(function (_a, ref) {
13627
+ 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$1.createElement(React$1.Fragment, null, "\u00AB") : _g, _h = _a.lastButton, lastButton = _h === void 0 ? React$1.createElement(React$1.Fragment, null, "\u00BB") : _h, _j = _a.limit, limit = _j === void 0 ? 5 : _j, _k = _a.nextButton, nextButton = _k === void 0 ? React$1.createElement(React$1.Fragment, null, "\u203A") : _k, onActivePageChange = _a.onActivePageChange, pages = _a.pages, _l = _a.previousButton, previousButton = _l === void 0 ? React$1.createElement(React$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"]);
13628
+ var _classNames = classNames$1("justify-content-".concat(align), className);
13629
+ var showDots = (function () {
13630
+ return dots && limit > 4 && limit < pages;
13631
+ })();
13632
+ var maxPrevItems = (function () {
13633
+ return Math.floor((limit - 1) / 2);
13634
+ })();
13635
+ var maxNextItems = (function () {
13636
+ return Math.ceil((limit - 1) / 2);
13637
+ })();
13638
+ var beforeDots = (function () {
13639
+ return showDots && activePage > maxPrevItems + 1;
13640
+ })();
13641
+ var afterDots = (function () {
13642
+ return showDots && activePage < pages - maxNextItems;
13643
+ })();
13644
+ var computedLimit = (function () {
13645
+ return limit - (afterDots ? 1 : 0) - (beforeDots ? 1 : 0);
13646
+ })();
13647
+ var range = (function () {
13648
+ return activePage + maxNextItems;
13649
+ })();
13650
+ var lastItem = (function () {
13651
+ return range >= pages ? pages : range - (afterDots ? 1 : 0);
13652
+ })();
13653
+ var itemsAmount = (function () {
13654
+ return pages < computedLimit ? pages : computedLimit;
13655
+ })();
13656
+ var items = (function () {
13657
+ if (activePage - maxPrevItems <= 1) {
13658
+ return Array.from({
13659
+ length: itemsAmount,
13660
+ }, function (_v, i) { return i + 1; });
13971
13661
  }
13972
- return {};
13973
- };
13974
- var tableHeaderCellStyles = function (column) {
13975
- var style = { verticalAlign: 'middle', overflow: 'hidden', cursor: '' };
13976
- if (columnSorter &&
13977
- (typeof column !== 'object' ||
13978
- (typeof column === 'object' && (typeof column.sorter === 'undefined' || column.sorter)))) {
13979
- style.cursor = 'pointer';
13662
+ else {
13663
+ return Array.from({
13664
+ length: itemsAmount,
13665
+ }, function (_v, i) {
13666
+ return lastItem - i;
13667
+ }).reverse();
13980
13668
  }
13981
- if (typeof column === 'object' && column._style) {
13982
- return __assign$1(__assign$1({}, style), column._style);
13669
+ })();
13670
+ var setPage = function (number) {
13671
+ if (number !== activePage) {
13672
+ onActivePageChange && onActivePageChange(number);
13983
13673
  }
13984
- return style;
13985
13674
  };
13986
- var pretifyName = function (name) {
13987
- return name
13988
- .replace(/[-_.]/g, ' ')
13989
- .replace(/ +/g, ' ')
13990
- .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
13991
- .split(' ')
13992
- .map(function (word) { return word.charAt(0).toUpperCase() + word.slice(1); })
13993
- .join(' ');
13994
- };
13995
- var label = function (column) {
13996
- return typeof column === 'object'
13997
- ? column.label !== undefined
13998
- ? column.label
13999
- : pretifyName(column.key)
14000
- : pretifyName(column);
14001
- };
14002
- var key = function (column) { return (typeof column === 'object' ? column.key : column); };
14003
- var getColumnSorterState = function (key) {
14004
- if (sorterState && sorterState.column === key) {
14005
- if (sorterState.state) {
14006
- return sorterState.state;
14007
- }
14008
- return 0;
13675
+ return (React$1.createElement(CPagination, __assign$1({ className: _classNames, "aria-label": "pagination", size: size }, rest, { ref: ref }),
13676
+ doubleArrows && (React$1.createElement(CPaginationItem, { onClick: function () { return setPage(1); }, "aria-label": "Go to first page", "aria-disabled": activePage === 1, disabled: activePage === 1 }, firstButton)),
13677
+ arrows && (React$1.createElement(CPaginationItem, { onClick: function () { return setPage(activePage - 1); }, "aria-label": "Go to previous page", "aria-disabled": activePage === 1, disabled: activePage === 1 }, previousButton)),
13678
+ beforeDots && (React$1.createElement(CPaginationItem, { role: "separator", disabled: true }, "\u2026")),
13679
+ items.map(function (i) {
13680
+ return (React$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));
13681
+ }),
13682
+ afterDots && (React$1.createElement(CPaginationItem, { role: "separator", disabled: true }, "\u2026")),
13683
+ arrows && (React$1.createElement(CPaginationItem, { onClick: function () { return setPage(activePage + 1); }, "aria-label": "Go to next page", "aria-disabled": activePage === pages, disabled: activePage === pages }, nextButton)),
13684
+ doubleArrows && (React$1.createElement(CPaginationItem, { onClick: function () { return setPage(pages); }, "aria-label": "Go to last page", "aria-disabled": activePage === pages, disabled: activePage === pages }, lastButton))));
13685
+ });
13686
+ CSmartPagination.propTypes = {
13687
+ className: propTypesExports.oneOfType([propTypesExports.string]),
13688
+ activePage: propTypesExports.number,
13689
+ dots: propTypesExports.bool,
13690
+ arrows: propTypesExports.bool,
13691
+ doubleArrows: propTypesExports.bool,
13692
+ firstButton: propTypesExports.oneOfType([propTypesExports.node, propTypesExports.string]),
13693
+ previousButton: propTypesExports.oneOfType([propTypesExports.node, propTypesExports.string]),
13694
+ nextButton: propTypesExports.oneOfType([propTypesExports.node, propTypesExports.string]),
13695
+ lastButton: propTypesExports.oneOfType([propTypesExports.node, propTypesExports.string]),
13696
+ size: propTypesExports.oneOf(['sm', 'lg']),
13697
+ align: propTypesExports.oneOf(['start', 'center', 'end']),
13698
+ limit: propTypesExports.number,
13699
+ pages: propTypesExports.number.isRequired,
13700
+ onActivePageChange: propTypesExports.func,
13701
+ };
13702
+ CSmartPagination.displayName = 'CSmartPagination';
13703
+
13704
+ var CTableHead = React$1.forwardRef(function (_a, ref) {
13705
+ var _b;
13706
+ var children = _a.children, className = _a.className, color = _a.color, rest = __rest$1(_a, ["children", "className", "color"]);
13707
+ var _className = classNames$1((_b = {},
13708
+ _b["table-".concat(color)] = color,
13709
+ _b), className);
13710
+ return (React$1.createElement("thead", __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
13711
+ });
13712
+ CTableHead.propTypes = {
13713
+ children: propTypesExports.node,
13714
+ className: propTypesExports.string,
13715
+ color: colorPropType,
13716
+ };
13717
+ CTableHead.displayName = 'CTableHead';
13718
+
13719
+ var CTableHeaderCell = React$1.forwardRef(function (_a, ref) {
13720
+ var _b;
13721
+ var children = _a.children, className = _a.className, color = _a.color, rest = __rest$1(_a, ["children", "className", "color"]);
13722
+ var _className = classNames$1((_b = {},
13723
+ _b["table-".concat(color)] = color,
13724
+ _b), className);
13725
+ return (React$1.createElement("th", __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
13726
+ });
13727
+ CTableHeaderCell.propTypes = {
13728
+ children: propTypesExports.node,
13729
+ className: propTypesExports.string,
13730
+ color: colorPropType,
13731
+ };
13732
+ CTableHeaderCell.displayName = 'CTableHeaderCell';
13733
+
13734
+ var CTableBody = React$1.forwardRef(function (_a, ref) {
13735
+ var _b;
13736
+ var children = _a.children, className = _a.className, color = _a.color, rest = __rest$1(_a, ["children", "className", "color"]);
13737
+ var _className = classNames$1((_b = {},
13738
+ _b["table-".concat(color)] = color,
13739
+ _b), className);
13740
+ return (React$1.createElement("tbody", __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
13741
+ });
13742
+ CTableBody.propTypes = {
13743
+ children: propTypesExports.node,
13744
+ className: propTypesExports.string,
13745
+ color: colorPropType,
13746
+ };
13747
+ CTableBody.displayName = 'CTableBody';
13748
+
13749
+ var CTableDataCell = React$1.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
+ var Component = rest.scope ? 'th' : 'td';
13758
+ return (React$1.createElement(Component, __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
13759
+ });
13760
+ CTableDataCell.propTypes = {
13761
+ active: propTypesExports.bool,
13762
+ align: propTypesExports.oneOf(['bottom', 'middle', 'top']),
13763
+ children: propTypesExports.node,
13764
+ className: propTypesExports.string,
13765
+ color: colorPropType,
13766
+ };
13767
+ CTableDataCell.displayName = 'CTableDataCell';
13768
+
13769
+ var CTableRow = React$1.forwardRef(function (_a, ref) {
13770
+ var _b;
13771
+ 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"]);
13772
+ var _className = classNames$1((_b = {},
13773
+ _b["align-".concat(align)] = align,
13774
+ _b['table-active'] = active,
13775
+ _b["table-".concat(color)] = color,
13776
+ _b), className);
13777
+ return (React$1.createElement("tr", __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
13778
+ });
13779
+ CTableRow.propTypes = {
13780
+ active: propTypesExports.bool,
13781
+ align: propTypesExports.oneOf(['bottom', 'middle', 'top']),
13782
+ children: propTypesExports.node,
13783
+ className: propTypesExports.string,
13784
+ color: colorPropType,
13785
+ };
13786
+ CTableRow.displayName = 'CTableRow';
13787
+
13788
+ var CTableFoot = React$1.forwardRef(function (_a, ref) {
13789
+ var _b;
13790
+ var children = _a.children, className = _a.className, color = _a.color, rest = __rest$1(_a, ["children", "className", "color"]);
13791
+ var _className = classNames$1((_b = {},
13792
+ _b["table-".concat(color)] = color,
13793
+ _b), className);
13794
+ return (React$1.createElement("tfoot", __assign$1({ className: _className ? _className : undefined }, rest, { ref: ref }), children));
13795
+ });
13796
+ CTableFoot.propTypes = {
13797
+ children: propTypesExports.node,
13798
+ className: propTypesExports.string,
13799
+ color: colorPropType,
13800
+ };
13801
+ CTableFoot.displayName = 'CTableFoot';
13802
+
13803
+ var CTableCaption = React$1.forwardRef(function (_a, ref) {
13804
+ var children = _a.children, props = __rest$1(_a, ["children"]);
13805
+ return (React$1.createElement("caption", __assign$1({}, props, { ref: ref }), children));
13806
+ });
13807
+ CTableCaption.propTypes = {
13808
+ children: propTypesExports.node,
13809
+ };
13810
+ CTableCaption.displayName = 'CTableCaption';
13811
+
13812
+ var CTableResponsiveWrapper = function (_a) {
13813
+ var children = _a.children, responsive = _a.responsive, rest = __rest$1(_a, ["children", "responsive"]);
13814
+ return responsive ? (React$1.createElement("div", __assign$1({ className: typeof responsive === 'boolean' ? 'table-responsive' : "table-responsive-".concat(responsive) }, rest), children)) : (children);
13815
+ };
13816
+ CTableResponsiveWrapper.propTypes = {
13817
+ children: propTypesExports.any,
13818
+ responsive: propTypesExports.oneOfType([
13819
+ propTypesExports.bool,
13820
+ propTypesExports.oneOf(['sm', 'md', 'lg', 'xl', 'xxl']),
13821
+ ]),
13822
+ };
13823
+ CTableResponsiveWrapper.displayName = 'CTableResponsiveWrapper';
13824
+
13825
+ var pretifyName$1 = function (name) {
13826
+ return name
13827
+ .replace(/[-_.]/g, ' ')
13828
+ .replace(/ +/g, ' ')
13829
+ .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
13830
+ .split(' ')
13831
+ .map(function (word) { return word.charAt(0).toUpperCase() + word.slice(1); })
13832
+ .join(' ');
13833
+ };
13834
+ var getColumnLabel$1 = function (column) {
13835
+ return typeof column === 'object'
13836
+ ? column.label !== undefined
13837
+ ? column.label
13838
+ : pretifyName$1(column.key)
13839
+ : pretifyName$1(column);
13840
+ };
13841
+ var getColumnNames$1 = function (columns, items) {
13842
+ return columns
13843
+ ? columns.map(function (column) {
13844
+ if (typeof column === 'object')
13845
+ return column.key;
13846
+ else
13847
+ return column;
13848
+ })
13849
+ : items && getColumnNamesFromItems$1(items);
13850
+ };
13851
+ var getColumnNamesFromItems$1 = function (items) {
13852
+ return Object.keys(items[0] || {}).filter(function (el) { return el.charAt(0) !== '_'; });
13853
+ };
13854
+
13855
+ var CTable = React$1.forwardRef(function (_a, ref) {
13856
+ var _b;
13857
+ 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"]);
13858
+ var _className = classNames$1('table', (_b = {},
13859
+ _b["align-".concat(align)] = align,
13860
+ _b["border-".concat(borderColor)] = borderColor,
13861
+ _b["caption-top"] = captionTop || caption === 'top',
13862
+ _b['table-bordered'] = bordered,
13863
+ _b['table-borderless'] = borderless,
13864
+ _b["table-".concat(color)] = color,
13865
+ _b['table-hover'] = hover,
13866
+ _b['table-sm'] = small,
13867
+ _b['table-striped'] = striped,
13868
+ _b['table-striped-columns'] = stripedColumns,
13869
+ _b), className);
13870
+ var columnNames = React$1.useMemo(function () { return getColumnNames$1(columns, items); }, [columns, items]);
13871
+ return (React$1.createElement(CTableResponsiveWrapper, { responsive: responsive },
13872
+ React$1.createElement("table", __assign$1({ className: _className }, rest, { ref: ref }),
13873
+ ((caption && caption !== 'top') || captionTop) && (React$1.createElement(CTableCaption, null, caption || captionTop)),
13874
+ columns && (React$1.createElement(CTableHead, __assign$1({}, tableHeadProps),
13875
+ React$1.createElement(CTableRow, null, columns.map(function (column, index) { return (React$1.createElement(CTableHeaderCell, __assign$1({}, (column._props && __assign$1({}, column._props)), (column._style && { style: __assign$1({}, column._style) }), { key: index }), getColumnLabel$1(column))); })))),
13876
+ items && (React$1.createElement(CTableBody, null, items.map(function (item, index) { return (React$1.createElement(CTableRow, __assign$1({}, (item._props && __assign$1({}, item._props)), { key: index }), columnNames &&
13877
+ columnNames.map(function (colName, index) {
13878
+ return item[colName] ? (React$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;
13879
+ }))); }))),
13880
+ children,
13881
+ footer && (React$1.createElement(CTableFoot, __assign$1({}, tableFootProps),
13882
+ React$1.createElement(CTableRow, null, footer.map(function (item, index) { return (React$1.createElement(CTableDataCell, __assign$1({}, (typeof item === 'object' && item._props && __assign$1({}, item._props)), { key: index }), typeof item === 'object' ? item.label : item)); })))))));
13883
+ });
13884
+ CTable.propTypes = {
13885
+ align: propTypesExports.oneOf(['bottom', 'middle', 'top']),
13886
+ borderColor: propTypesExports.string,
13887
+ bordered: propTypesExports.bool,
13888
+ borderless: propTypesExports.bool,
13889
+ caption: propTypesExports.oneOfType([propTypesExports.string, propTypesExports.oneOf(['top'])]),
13890
+ captionTop: propTypesExports.string,
13891
+ children: propTypesExports.node,
13892
+ className: propTypesExports.string,
13893
+ color: colorPropType,
13894
+ columns: propTypesExports.array,
13895
+ footer: propTypesExports.array,
13896
+ hover: propTypesExports.bool,
13897
+ items: propTypesExports.array,
13898
+ responsive: propTypesExports.oneOfType([
13899
+ propTypesExports.bool,
13900
+ propTypesExports.oneOf(['sm', 'md', 'lg', 'xl', 'xxl']),
13901
+ ]),
13902
+ small: propTypesExports.bool,
13903
+ striped: propTypesExports.bool,
13904
+ stripedColumns: propTypesExports.bool,
13905
+ tableFootProps: propTypesExports.shape(__assign$1({}, CTableFoot.propTypes)),
13906
+ tableHeadProps: propTypesExports.shape(__assign$1({}, CTableHead.propTypes)),
13907
+ };
13908
+ CTable.displayName = 'CTable';
13909
+
13910
+ var filterColumns = function (items, columnFilter, columnFilterState, itemsDataColumns) {
13911
+ if (columnFilter && typeof columnFilter === 'object' && columnFilter.external) {
13912
+ return items;
13913
+ }
13914
+ Object.entries(columnFilterState).forEach(function (_a) {
13915
+ var key = _a[0], value = _a[1];
13916
+ if (value instanceof Function) {
13917
+ items = items.filter(function (item) { return value(item[key]); });
13918
+ return;
13919
+ }
13920
+ var columnFilter = String(value).toLowerCase();
13921
+ if (columnFilter && itemsDataColumns.includes(key)) {
13922
+ items = items.filter(function (item) {
13923
+ return String(item[key]).toLowerCase().includes(columnFilter);
13924
+ });
13925
+ }
13926
+ });
13927
+ return items;
13928
+ };
13929
+ var filterTable = function (items, tableFilter, tableFilterState, itemsDataColumns) {
13930
+ if (!tableFilterState ||
13931
+ (tableFilter && typeof tableFilter === 'object' && tableFilter.external)) {
13932
+ return items;
13933
+ }
13934
+ var filter = tableFilterState.toLowerCase();
13935
+ var valueContainFilter = function (val) { return String(val).toLowerCase().includes(filter); };
13936
+ items = items.filter(function (item) {
13937
+ return !!itemsDataColumns.find(function (key) { return valueContainFilter(item[key]); });
13938
+ });
13939
+ return items;
13940
+ };
13941
+ var getClickedColumnName = function (target, columnNames) {
13942
+ var closest = target.closest('tr');
13943
+ var children = closest ? Array.from(closest.children) : [];
13944
+ var clickedCell = children.filter(function (child) { return child.contains(target); })[0];
13945
+ return columnNames[children.indexOf(clickedCell)];
13946
+ };
13947
+ var getColumnKey = function (column) {
13948
+ return typeof column === 'object' ? column.key : column;
13949
+ };
13950
+ var getColumnLabel = function (column) {
13951
+ return typeof column === 'object'
13952
+ ? column.label !== undefined
13953
+ ? column.label
13954
+ : pretifyName(column.key)
13955
+ : pretifyName(column);
13956
+ };
13957
+ var getColumnNames = function (columns, items) {
13958
+ return columns
13959
+ ? columns.map(function (column) {
13960
+ if (typeof column === 'object')
13961
+ return column.key;
13962
+ else
13963
+ return column;
13964
+ })
13965
+ : getColumnNamesFromItems(items);
13966
+ };
13967
+ var getColumnNamesFromItems = function (items) {
13968
+ return Object.keys(items[0] || {}).filter(function (el) { return el.charAt(0) !== '_'; });
13969
+ };
13970
+ var getColumnSorterState = function (key, sorterState) {
13971
+ if (sorterState && sorterState.column === key) {
13972
+ if (sorterState.state) {
13973
+ return sorterState.state;
14009
13974
  }
14010
13975
  return 0;
14011
- };
14012
- var getValues = function (items, key) {
14013
- return items.map(function (a) { return a[key]; });
14014
- };
13976
+ }
13977
+ return 0;
13978
+ };
13979
+ var getColumnValues = function (items, key) {
13980
+ return items.map(function (item) { return item[key]; });
13981
+ };
13982
+ var getTableDataCellProps = function (item, colName) {
13983
+ var props = item._cellProps && __assign$1(__assign$1({}, (item._cellProps['all'] && __assign$1({}, item._cellProps['all']))), (item._cellProps[colName] && __assign$1({}, item._cellProps[colName])));
13984
+ return props;
13985
+ };
13986
+ var getTableHeaderCellProps = function (column) {
13987
+ if (typeof column === 'object' && column._props) {
13988
+ return column._props;
13989
+ }
13990
+ return {};
13991
+ };
13992
+ var getTableHeaderCellStyles = function (column, columnSorter) {
13993
+ var style = {};
13994
+ if (columnSorter &&
13995
+ (typeof column !== 'object' ||
13996
+ (typeof column === 'object' && (typeof column.sorter === 'undefined' || column.sorter)))) {
13997
+ style['cursor'] = 'pointer';
13998
+ }
13999
+ if (typeof column === 'object' && column._style) {
14000
+ return __assign$1(__assign$1({}, style), column._style);
14001
+ }
14002
+ return style;
14003
+ };
14004
+ var isSortable = function (i, columns, columnSorter, itemsDataColumns, columnNames) {
14005
+ var isDataColumn = itemsDataColumns.includes(columnNames[i]);
14006
+ var column;
14007
+ if (columns)
14008
+ column = columns[i];
14009
+ return (columnSorter &&
14010
+ (!columns ||
14011
+ typeof column !== 'object' ||
14012
+ (typeof column === 'object' && (typeof column.sorter === 'undefined' || column.sorter))) &&
14013
+ isDataColumn);
14014
+ };
14015
+ var pretifyName = function (name) {
14016
+ return name
14017
+ .replace(/[-_.]/g, ' ')
14018
+ .replace(/ +/g, ' ')
14019
+ .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
14020
+ .split(' ')
14021
+ .map(function (word) { return word.charAt(0).toUpperCase() + word.slice(1); })
14022
+ .join(' ');
14023
+ };
14024
+ var sortItems = function (columnSorter, items, itemsDataColumns, sorterState) {
14025
+ var column = sorterState.column;
14026
+ if (!column ||
14027
+ !itemsDataColumns.includes(column) ||
14028
+ (columnSorter && typeof columnSorter === 'object' && columnSorter.external)) {
14029
+ return items;
14030
+ }
14031
+ var flip = sorterState.state === 'asc' ? 1 : sorterState.state === 'desc' ? -1 : 0;
14032
+ var sorted = items.slice().sort(function (item, item2) {
14033
+ var value = item[column];
14034
+ var value2 = item2[column];
14035
+ var a = typeof value === 'number' ? value : String(value).toLowerCase();
14036
+ var b = typeof value2 === 'number' ? value2 : String(value2).toLowerCase();
14037
+ return a > b ? 1 * flip : b > a ? -1 * flip : 0;
14038
+ });
14039
+ return sorted;
14040
+ };
14041
+
14042
+ var CSmartTableBody = React$1.forwardRef(function (_a, ref) {
14043
+ 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"]);
14044
+ var colspan = selectable ? columnNames.length + 1 : columnNames.length;
14045
+ return (React$1.createElement(CTableBody, __assign$1({}, (clickableRows && {
14046
+ style: { cursor: 'pointer' },
14047
+ }), rest, { ref: ref }), currentItems.length ? (currentItems.map(function (item, trIndex) {
14048
+ return (React$1.createElement(React$1.Fragment, { key: trIndex },
14049
+ React$1.createElement(CTableRow, __assign$1({}, (item._props && __assign$1({}, item._props)), (clickableRows && { tabIndex: 0 }), { onClick: function (event) {
14050
+ return onRowClick &&
14051
+ onRowClick(item, trIndex + firstItemOnActivePageIndex, getClickedColumnName(event.target, columnNames), event);
14052
+ } }),
14053
+ selectable && (React$1.createElement(CTableDataCell, null,
14054
+ React$1.createElement(CFormCheck, { checked: selected &&
14055
+ isObjectInArray(selected, item, ['_cellProps', '_props', '_selected']), onChange: function (event) {
14056
+ var _item = __assign$1({}, item);
14057
+ delete _item['_cellProps'];
14058
+ delete _item['_props'];
14059
+ delete _item['_selected'];
14060
+ onRowChecked && onRowChecked(_item, event.target.checked);
14061
+ } }))),
14062
+ columnNames.map(function (colName, index) {
14063
+ return ((scopedColumns &&
14064
+ scopedColumns[colName] &&
14065
+ React$1.cloneElement(scopedColumns[colName](item, trIndex + firstItemOnActivePageIndex), {
14066
+ key: index,
14067
+ })) || (React$1.createElement(CTableDataCell, __assign$1({}, getTableDataCellProps(item, colName), { key: index }), String(item[colName]))));
14068
+ })),
14069
+ scopedColumns && scopedColumns.details && (React$1.createElement(React$1.Fragment, null,
14070
+ React$1.createElement(CTableRow, null,
14071
+ React$1.createElement(CTableDataCell, { colSpan: colspan, className: "p-0", style: { borderBottomWidth: 0 }, tabIndex: -1 })),
14072
+ React$1.createElement(CTableRow, { onClick: function (event) {
14073
+ return onRowClick &&
14074
+ onRowClick(item, trIndex + firstItemOnActivePageIndex, getClickedColumnName(event.target, columnNames), true);
14075
+ }, className: "p-0", key: "details".concat(trIndex) },
14076
+ React$1.createElement(CTableDataCell, { colSpan: colspan, className: "p-0", style: { border: 0 } }, scopedColumns.details(item, trIndex + firstItemOnActivePageIndex)))))));
14077
+ })) : (React$1.createElement(CTableRow, null,
14078
+ React$1.createElement(CTableDataCell, { colSpan: colspan }, noItemsLabel)))));
14079
+ });
14080
+ CSmartTableBody.propTypes = {
14081
+ clickableRows: propTypesExports.bool,
14082
+ currentItems: propTypesExports.array.isRequired,
14083
+ firstItemOnActivePageIndex: propTypesExports.number.isRequired,
14084
+ noItemsLabel: propTypesExports.oneOfType([propTypesExports.string, propTypesExports.node]),
14085
+ onRowChecked: propTypesExports.func,
14086
+ onRowClick: propTypesExports.func,
14087
+ columnNames: propTypesExports.array.isRequired,
14088
+ scopedColumns: propTypesExports.object,
14089
+ selectable: propTypesExports.bool,
14090
+ selected: propTypesExports.array,
14091
+ };
14092
+ CSmartTableBody.displayName = 'CSmartTableBody';
14093
+
14094
+ var CSmartTableCleaner = React$1.forwardRef(function (_a, ref) {
14095
+ var _b = _a.content, content = _b === void 0 ? React$1.createElement(CIcon, { width: 18, icon: cilFilterX }) : _b, isFiltered = _a.isFiltered, rest = __rest$1(_a, ["content", "isFiltered"]);
14096
+ return (React$1.createElement("button", __assign$1({ type: "button", className: "btn btn-transparent" }, (!isFiltered && {
14097
+ disabled: true,
14098
+ tabIndex: -1,
14099
+ }), rest, { ref: ref }), content));
14100
+ });
14101
+ CSmartTableCleaner.propTypes = {
14102
+ content: propTypesExports.oneOfType([propTypesExports.node, propTypesExports.string]),
14103
+ isFiltered: propTypesExports.string,
14104
+ };
14105
+ CSmartTableCleaner.displayName = 'CSmartTableCleaner';
14106
+
14107
+ var CSmartTableHead = React$1.forwardRef(function (_a, ref) {
14108
+ 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"]);
14109
+ var selectAllcheckboxRef = React$1.useRef(null);
14110
+ var _c = React$1.useState(false), refresh = _c[0], setRefresh = _c[1];
14111
+ React$1.useEffect(function () {
14112
+ if (selectedAll === 'indeterminate') {
14113
+ if (selectAllcheckboxRef.current)
14114
+ selectAllcheckboxRef.current.indeterminate = true;
14115
+ }
14116
+ else {
14117
+ if (selectAllcheckboxRef.current)
14118
+ selectAllcheckboxRef.current.indeterminate = false;
14119
+ }
14120
+ }, [selectedAll]);
14121
+ React$1.useEffect(function () {
14122
+ if (columnFilterState && Object.keys(columnFilterState).length === 0) {
14123
+ setRefresh(true);
14124
+ }
14125
+ }, [columnFilterState]);
14126
+ React$1.useEffect(function () {
14127
+ setRefresh(true);
14128
+ }, [items]);
14129
+ React$1.useEffect(function () {
14130
+ if (setRefresh) {
14131
+ setRefresh(false);
14132
+ }
14133
+ }, [refresh]);
14015
14134
  var columnSorterIcon = function (column) {
14016
- if (getColumnSorterState(key(column)) === 0) {
14135
+ if (getColumnSorterState(getColumnKey(column), sorterState) === 0) {
14017
14136
  return React$1.createElement("span", { className: "opacity-25 float-end me-1" }, sortingIcon);
14018
14137
  }
14019
- if (getColumnSorterState(key(column)) === 'asc') {
14138
+ if (getColumnSorterState(getColumnKey(column), sorterState) === 'asc') {
14020
14139
  return React$1.createElement("span", { className: "float-end me-1" }, sortingIconAscending);
14021
14140
  }
14022
- if (getColumnSorterState(key(column)) === 'desc') {
14141
+ if (getColumnSorterState(getColumnKey(column), sorterState) === 'desc') {
14023
14142
  return React$1.createElement("span", { className: "float-end me-1" }, sortingIconDescending);
14024
14143
  }
14025
14144
  return;
14026
14145
  };
14027
- var checkboxRef = React$1.useRef(null);
14028
- React$1.useEffect(function () {
14029
- if (selectAll === 'indeterminate') {
14030
- if (checkboxRef.current)
14031
- checkboxRef.current.indeterminate = true;
14032
- }
14033
- else {
14034
- if (checkboxRef.current)
14035
- checkboxRef.current.indeterminate = false;
14036
- }
14037
- }, [selectAll]);
14038
14146
  return (React$1.createElement(Component, __assign$1({}, rest, { ref: ref }),
14039
14147
  React$1.createElement(CTableRow, null,
14040
- selectable && (React$1.createElement(CTableHeaderCell, null,
14041
- React$1.createElement(CFormCheck, { checked: typeof selectAll === 'boolean' ? selectAll : false, onChange: function () { return handleSelectAllChecked && handleSelectAllChecked(); }, ref: checkboxRef }))),
14148
+ selectable && (React$1.createElement(CTableHeaderCell, null, selectAll && (React$1.createElement(CFormCheck, { checked: typeof selectedAll === 'boolean' ? selectedAll : false, onChange: function () { return handleSelectAllChecked && handleSelectAllChecked(); }, ref: selectAllcheckboxRef })))),
14042
14149
  columns.map(function (column, index) {
14043
- return (React$1.createElement(CTableHeaderCell, __assign$1({}, tableHeaderCellProps(column), { onClick: function () { return handleSort && handleSort(key(column), index); }, style: tableHeaderCellStyles(column), key: index }),
14044
- React$1.createElement("div", { className: "d-inline" }, label(column)),
14150
+ return (React$1.createElement(CTableHeaderCell, __assign$1({}, getTableHeaderCellProps(column), { onClick: function () { return handleSort && handleSort(getColumnKey(column), index); }, style: getTableHeaderCellStyles(column, columnSorter), key: index }),
14151
+ React$1.createElement("div", { className: "d-inline" }, getColumnLabel(column)),
14045
14152
  columnSorter &&
14046
14153
  (typeof column !== 'object'
14047
14154
  ? true
@@ -14053,23 +14160,23 @@ var CSmartTableHead = React$1.forwardRef(function (_a, ref) {
14053
14160
  columnFilter && (React$1.createElement(CTableRow, null,
14054
14161
  selectable && React$1.createElement(CTableHeaderCell, null),
14055
14162
  columns.map(function (column, index) {
14056
- return (React$1.createElement(CTableHeaderCell, __assign$1({}, tableHeaderCellProps(column), { key: index }), (typeof column !== 'object'
14163
+ return (React$1.createElement(CTableHeaderCell, __assign$1({}, getTableHeaderCellProps(column), { key: index }), (typeof column !== 'object'
14057
14164
  ? true
14058
14165
  : typeof column.filter === 'undefined'
14059
14166
  ? true
14060
14167
  : column.filter) ? (typeof column !== 'string' && typeof column.filter === 'function' ? (!refresh &&
14061
- column.filter(getValues(items, key(column)), function (value) {
14168
+ column.filter(getColumnValues(items, getColumnKey(column)), function (value) {
14062
14169
  return handleOnCustomFilterChange &&
14063
- handleOnCustomFilterChange(key(column), value);
14170
+ handleOnCustomFilterChange(getColumnKey(column), value);
14064
14171
  })) : (React$1.createElement(CFormInput, { size: "sm", onInput: function (event) {
14065
14172
  return handleFilterOnInput &&
14066
- handleFilterOnInput(key(column), event.target.value);
14173
+ handleFilterOnInput(getColumnKey(column), event.target.value);
14067
14174
  }, onChange: function (event) {
14068
14175
  return handleFilterOnChange &&
14069
- handleFilterOnChange(key(column), event.target.value);
14070
- }, value: columnFilterState && columnFilterState[key(column)]
14071
- ? columnFilterState[key(column)]
14072
- : '', "aria-label": "column name: '".concat(label(column), "' filter input") }))) : ('')));
14176
+ handleFilterOnChange(getColumnKey(column), event.target.value);
14177
+ }, value: columnFilterState && columnFilterState[getColumnKey(column)]
14178
+ ? columnFilterState[getColumnKey(column)]
14179
+ : '', "aria-label": "column name: '".concat(getColumnLabel(column), "' filter input") }))) : ('')));
14073
14180
  })))));
14074
14181
  });
14075
14182
  CSmartTableHead.propTypes = {
@@ -14084,7 +14191,8 @@ CSmartTableHead.propTypes = {
14084
14191
  handleSelectAllChecked: propTypesExports.func,
14085
14192
  handleSort: propTypesExports.func,
14086
14193
  selectable: propTypesExports.bool,
14087
- selectAll: propTypesExports.oneOfType([propTypesExports.bool, propTypesExports.string]),
14194
+ selectAll: propTypesExports.oneOfType([propTypesExports.bool, propTypesExports.object]),
14195
+ selectedAll: propTypesExports.oneOfType([propTypesExports.bool, propTypesExports.string]),
14088
14196
  sorterState: propTypesExports.object,
14089
14197
  sortingIcon: propTypesExports.node,
14090
14198
  sortingIconAscending: propTypesExports.node,
@@ -14092,72 +14200,152 @@ CSmartTableHead.propTypes = {
14092
14200
  };
14093
14201
  CSmartTableHead.displayName = 'CSmartTableHead';
14094
14202
 
14095
- var CSmartTableItemsPerPageSelector = React$1.forwardRef(function (_a, ref) {
14096
- var itemsPerPage = _a.itemsPerPage, itemsPerPageLabel = _a.itemsPerPageLabel, itemsPerPageOptions = _a.itemsPerPageOptions, rest = __rest$1(_a, ["itemsPerPage", "itemsPerPageLabel", "itemsPerPageOptions"]);
14097
- return (React$1.createElement("div", { className: "row" },
14098
- React$1.createElement(CFormLabel, { className: "col-auto col-form-label" }, itemsPerPageLabel),
14099
- React$1.createElement("div", { className: "col-auto" },
14100
- React$1.createElement(CFormSelect, __assign$1({ defaultValue: itemsPerPage }, rest, { ref: ref }), itemsPerPageOptions &&
14101
- itemsPerPageOptions.map(function (number, index) {
14102
- return (React$1.createElement("option", { value: number, key: index }, number));
14103
- })))));
14104
- });
14105
- CSmartTableItemsPerPageSelector.propTypes = {
14106
- itemsPerPage: propTypesExports.number,
14107
- itemsPerPageLabel: propTypesExports.string,
14108
- itemsPerPageOptions: propTypesExports.array,
14109
- };
14110
- CSmartTableItemsPerPageSelector.displayName = 'CSmartTableItemsPerPageSelector';
14111
-
14112
14203
  var CSmartTable = React$1.forwardRef(function (_a, ref) {
14113
14204
  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
14114
- 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$1.createElement(CIcon, { width: 18, icon: cilSwapVertical, key: "csv" }) : _h, _j = _a.sortingIconAscending, sortingIconAscending = _j === void 0 ? React$1.createElement(CIcon, { width: 18, icon: cilArrowTop, key: "cat" }) : _j, _k = _a.sortingIconDescending, sortingIconDescending = _k === void 0 ? React$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
14115
- 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"]);
14116
- // instance data
14205
+ 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$1.createElement(CIcon, { width: 18, icon: cilSwapVertical, key: "csv" }) : _j, _k = _a.sortingIconAscending, sortingIconAscending = _k === void 0 ? React$1.createElement(CIcon, { width: 18, icon: cilArrowTop, key: "cat" }) : _k, _l = _a.sortingIconDescending, sortingIconDescending = _l === void 0 ? React$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
14206
+ 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"]);
14117
14207
  var mountedRef = React$1.useRef(false);
14118
- var _o = React$1.useState(activePage), _activePage = _o[0], setActivePage = _o[1];
14119
- var _p = React$1.useState([]), _items = _p[0], setItems = _p[1];
14120
- var _q = React$1.useState(itemsPerPage), _itemsPerPage = _q[0], setItemsPerPage = _q[1];
14121
- var _r = React$1.useState({}), columnFilterState = _r[0], setColumnFilterState = _r[1];
14122
- var _s = React$1.useState(), selectedAll = _s[0], setSelectedAll = _s[1];
14123
- var _t = React$1.useState({}), sorterState = _t[0], setSorterState = _t[1];
14124
- var _u = React$1.useState(tableFilterValue ? tableFilterValue : ''), tableFilterState = _u[0], setTableFilterState = _u[1];
14208
+ var _p = React$1.useState(activePage), _activePage = _p[0], setActivePage = _p[1];
14209
+ var _q = React$1.useState([]), _items = _q[0], setItems = _q[1];
14210
+ var _r = React$1.useState(itemsNumber), _itemsNumber = _r[0], setItemsNumber = _r[1];
14211
+ var _s = React$1.useState(itemsPerPage), _itemsPerPage = _s[0], setItemsPerPage = _s[1];
14212
+ var _t = React$1.useState([]), _selected = _t[0], setSelected = _t[1];
14213
+ var _u = React$1.useState({}), columnFilterState = _u[0], setColumnFilterState = _u[1];
14214
+ var _v = React$1.useState(), selectedAll = _v[0], setSelectedAll = _v[1];
14215
+ var _w = React$1.useState({}), sorterState = _w[0], setSorterState = _w[1];
14216
+ var _x = React$1.useState(tableFilterValue ? tableFilterValue : ''), tableFilterState = _x[0], setTableFilterState = _x[1];
14125
14217
  React$1.useEffect(function () {
14126
14218
  setActivePage(activePage);
14127
14219
  }, [activePage]);
14128
- // watch
14129
- React$1.useMemo(function () {
14220
+ React$1.useEffect(function () {
14130
14221
  if (items && items.length < _itemsPerPage * _activePage - _itemsPerPage) {
14131
14222
  setActivePage(1);
14132
14223
  }
14133
- // Create the internal array of items
14134
- Array.isArray(items) &&
14135
- setItems(items === null || items === void 0 ? void 0 : items.map(function (item, index) {
14136
- return __assign$1(__assign$1({}, item), { _id: index });
14137
- }));
14224
+ items &&
14225
+ items.forEach(function (item) {
14226
+ if (item._selected) {
14227
+ var _item = __assign$1({}, item);
14228
+ delete _item['_cellProps'];
14229
+ delete _item['_props'];
14230
+ delete _item['_selected'];
14231
+ setSelected(__spreadArray(__spreadArray([], _selected, true), [_item], false));
14232
+ }
14233
+ });
14234
+ if (Array.isArray(items)) {
14235
+ setItems(items);
14236
+ setItemsNumber(itemsNumber || items.length);
14237
+ }
14138
14238
  }, [JSON.stringify(items)]);
14139
- React$1.useMemo(function () {
14239
+ React$1.useEffect(function () {
14240
+ Array.isArray(selected) && setSelected(selected);
14241
+ }, [JSON.stringify(selected)]);
14242
+ React$1.useEffect(function () {
14243
+ itemsNumber && setItemsNumber(itemsNumber);
14244
+ }, [itemsNumber]);
14245
+ React$1.useEffect(function () {
14140
14246
  columnFilterValue && setColumnFilterState(columnFilterValue);
14141
14247
  }, [JSON.stringify(columnFilterValue)]);
14142
- React$1.useMemo(function () {
14248
+ React$1.useEffect(function () {
14143
14249
  setSorterState(__assign$1({}, sorterValue));
14144
14250
  }, [JSON.stringify(sorterValue)]);
14145
- React$1.useMemo(function () { return setItemsPerPage(itemsPerPage); }, [itemsPerPage]);
14146
- // functions
14147
- var isSortable = function (i) {
14148
- var isDataColumn = itemsDataColumns.includes(rawColumnNames[i]);
14149
- var column;
14150
- if (columns)
14151
- column = columns[i];
14152
- return (columnSorter &&
14153
- (!columns ||
14154
- typeof column !== 'object' ||
14155
- (typeof column === 'object' &&
14156
- (typeof column.sorter === 'undefined' || column.sorter))) &&
14157
- isDataColumn);
14251
+ React$1.useEffect(function () { return setItemsPerPage(itemsPerPage); }, [itemsPerPage]);
14252
+ React$1.useEffect(function () {
14253
+ mountedRef.current && onActivePageChange && onActivePageChange(_activePage);
14254
+ }, [_activePage]);
14255
+ React$1.useEffect(function () {
14256
+ mountedRef.current && onItemsPerPageChange && onItemsPerPageChange(_itemsPerPage);
14257
+ itemsPerPage !== _itemsPerPage && setActivePage(1); // TODO: set proper page after _itemsPerPage update
14258
+ }, [_itemsPerPage]);
14259
+ React$1.useEffect(function () {
14260
+ mountedRef.current && sorterState && onSorterChange && onSorterChange(sorterState);
14261
+ }, [JSON.stringify(sorterState)]);
14262
+ React$1.useEffect(function () {
14263
+ mountedRef.current && onColumnFilterChange && onColumnFilterChange(columnFilterState);
14264
+ }, [columnFilterState]);
14265
+ React$1.useEffect(function () {
14266
+ mountedRef.current && onTableFilterChange && onTableFilterChange(tableFilterState);
14267
+ }, [tableFilterState]);
14268
+ React$1.useEffect(function () {
14269
+ if (selectable) {
14270
+ onSelectedItemsChange && onSelectedItemsChange(_selected);
14271
+ if (_selected.length === _itemsNumber) {
14272
+ setSelectedAll(true);
14273
+ return;
14274
+ }
14275
+ if (_selected.length === 0) {
14276
+ setSelectedAll(false);
14277
+ return;
14278
+ }
14279
+ if (_selected.length !== 0 && _selected.length !== _itemsNumber) {
14280
+ setSelectedAll('indeterminate');
14281
+ }
14282
+ }
14283
+ }, [JSON.stringify(_selected), _itemsNumber]);
14284
+ var columnNames = React$1.useMemo(function () { return getColumnNames(columns, _items); }, [columns, _items]);
14285
+ var itemsDataColumns = React$1.useMemo(function () { return columnNames.filter(function (name) { return getColumnNamesFromItems(_items).includes(name); }); }, [columnNames, _items]);
14286
+ var filteredColumns = React$1.useMemo(function () { return filterColumns(_items, columnFilter, columnFilterState, itemsDataColumns); }, [columnFilterState, JSON.stringify(_items)]);
14287
+ var filteredTable = React$1.useMemo(function () { return filterTable(filteredColumns, tableFilter, tableFilterState, itemsDataColumns); }, [tableFilterState, JSON.stringify(tableFilterValue), JSON.stringify(filteredColumns)]);
14288
+ var sortedItems = React$1.useMemo(function () { return sortItems(columnSorter, filteredTable, itemsDataColumns, sorterState); }, [
14289
+ JSON.stringify(filteredTable),
14290
+ JSON.stringify(sorterState),
14291
+ JSON.stringify(columnSorter),
14292
+ JSON.stringify(filteredColumns),
14293
+ JSON.stringify(_items),
14294
+ ]);
14295
+ var numberOfPages = _itemsPerPage ? Math.ceil(sortedItems.length / _itemsPerPage) : 1;
14296
+ var firstItemOnActivePageIndex = _activePage ? (_activePage - 1) * _itemsPerPage : 0;
14297
+ var currentItems = _activePage
14298
+ ? sortedItems.slice(firstItemOnActivePageIndex, firstItemOnActivePageIndex + _itemsPerPage)
14299
+ : sortedItems;
14300
+ React$1.useEffect(function () {
14301
+ mountedRef.current && onFilteredItemsChange && onFilteredItemsChange(sortedItems);
14302
+ }, [JSON.stringify(sortedItems)]);
14303
+ var handleClean = function () {
14304
+ setTableFilterState('');
14305
+ setColumnFilterState({});
14306
+ setSorterState({});
14158
14307
  };
14159
- var sorterChange = function (column, index) {
14160
- if (!isSortable(index)) {
14308
+ var handleColumnFilterChange = function (colName, value, type) {
14309
+ var _a;
14310
+ var isLazy = columnFilter && typeof columnFilter === 'object' && columnFilter.lazy === true;
14311
+ if ((isLazy && type === 'input') || (!isLazy && type === 'change')) {
14312
+ return;
14313
+ }
14314
+ var newState = __assign$1(__assign$1({}, columnFilterState), (_a = {}, _a["".concat(colName)] = value, _a));
14315
+ setActivePage(1);
14316
+ setColumnFilterState(newState);
14317
+ };
14318
+ var handleItemsPerPageChange = function (event) {
14319
+ if (typeof itemsPerPageSelect !== 'object' ||
14320
+ (typeof itemsPerPageSelect === 'object' && !itemsPerPageSelect.external)) {
14321
+ setItemsPerPage(Number(event.target.value));
14322
+ }
14323
+ };
14324
+ var handleRowChecked = function (item, value) {
14325
+ if (value && !isObjectInArray(_selected, item, ['_cellProps', '_props', '_selected'])) {
14326
+ setSelected(__spreadArray(__spreadArray([], _selected, true), [item], false));
14327
+ return;
14328
+ }
14329
+ setSelected(_selected.filter(function (_item) { return !isObjectInArray([_item], item, ['_cellProps', '_props', '_selected']); }));
14330
+ };
14331
+ var handleSelectAllChecked = function () {
14332
+ if (selectedAll === true) {
14333
+ setSelected([]);
14334
+ return;
14335
+ }
14336
+ onSelectAll && onSelectAll();
14337
+ if (selectAll && typeof selectAll === 'object' && selectAll.external) {
14338
+ return;
14339
+ }
14340
+ setSelected(_items.map(function (item) {
14341
+ delete item['_cellProps'];
14342
+ delete item['_props'];
14343
+ delete item['_selected'];
14344
+ return item;
14345
+ }));
14346
+ };
14347
+ var handleSorterChange = function (column, index) {
14348
+ if (!isSortable(index, columns, columnSorter, itemsDataColumns, columnNames)) {
14161
14349
  return;
14162
14350
  }
14163
14351
  //if column changed or sort was descending change asc to true
@@ -14184,22 +14372,7 @@ var CSmartTable = React$1.forwardRef(function (_a, ref) {
14184
14372
  }
14185
14373
  setSorterState(__assign$1({}, state));
14186
14374
  };
14187
- var itemsPerPageChange = function (event) {
14188
- if (typeof itemsPerPageSelect !== 'object' ||
14189
- (typeof itemsPerPageSelect === 'object' && !itemsPerPageSelect.external))
14190
- setItemsPerPage(Number(event.target.value));
14191
- };
14192
- var columnFilterChange = function (colName, value, type) {
14193
- var _a;
14194
- var isLazy = columnFilter && typeof columnFilter === 'object' && columnFilter.lazy === true;
14195
- if ((isLazy && type === 'input') || (!isLazy && type === 'change')) {
14196
- return;
14197
- }
14198
- var newState = __assign$1(__assign$1({}, columnFilterState), (_a = {}, _a["".concat(colName)] = value, _a));
14199
- setActivePage(1);
14200
- setColumnFilterState(newState);
14201
- };
14202
- var tableFilterChange = function (value, type) {
14375
+ var handleTableFilterChange = function (value, type) {
14203
14376
  var isLazy = tableFilter && typeof tableFilter === 'object' && tableFilter.lazy === true;
14204
14377
  if ((isLazy && type === 'input') || (!isLazy && type === 'change')) {
14205
14378
  return;
@@ -14207,171 +14380,55 @@ var CSmartTable = React$1.forwardRef(function (_a, ref) {
14207
14380
  setActivePage(1);
14208
14381
  setTableFilterState(value);
14209
14382
  };
14210
- var clean = function () {
14211
- setTableFilterState('');
14212
- setColumnFilterState({});
14213
- setSorterState({});
14214
- };
14215
- // computed
14216
- var genCols = Object.keys(_items[0] || {}).filter(function (el) { return el.charAt(0) !== '_'; });
14217
- var rawColumnNames = columns
14218
- ? columns.map(function (column) {
14219
- if (typeof column === 'object')
14220
- return column.key;
14221
- else
14222
- return column;
14223
- })
14224
- : genCols; //! || el
14225
- var itemsDataColumns = rawColumnNames.filter(function (name) { return genCols.includes(name); });
14226
- // variables
14227
- var filteredColumns = React$1.useMemo(function () {
14228
- var items = _items;
14229
- if (columnFilter && typeof columnFilter === 'object' && columnFilter.external) {
14230
- return items;
14231
- }
14232
- Object.entries(columnFilterState).forEach(function (_a) {
14233
- var key = _a[0], value = _a[1];
14234
- if (value instanceof Function) {
14235
- items = items.filter(function (item) { return value(item[key]); });
14236
- return;
14237
- }
14238
- var columnFilter = String(value).toLowerCase();
14239
- if (columnFilter && itemsDataColumns.includes(key)) {
14240
- items = items.filter(function (item) {
14241
- return String(item[key]).toLowerCase().includes(columnFilter);
14242
- });
14243
- }
14244
- });
14245
- return items;
14246
- }, [columnFilterState, JSON.stringify(_items)]);
14247
- var filteredTable = React$1.useMemo(function () {
14248
- var items = filteredColumns;
14249
- if (!tableFilterState ||
14250
- (tableFilter && typeof tableFilter === 'object' && tableFilter.external)) {
14251
- return items;
14252
- }
14253
- var filter = tableFilterState.toLowerCase();
14254
- var valueContainFilter = function (val) { return String(val).toLowerCase().includes(filter); };
14255
- items = items.filter(function (item) {
14256
- return !!itemsDataColumns.find(function (key) { return valueContainFilter(item[key]); });
14257
- });
14258
- return items;
14259
- }, [tableFilterState, JSON.stringify(tableFilterValue), JSON.stringify(filteredColumns)]);
14260
- var sortedItems = React$1.useMemo(function () {
14261
- var col = sorterState === null || sorterState === void 0 ? void 0 : sorterState.column;
14262
- if (!col ||
14263
- !itemsDataColumns.includes(col) ||
14264
- (columnSorter && typeof columnSorter === 'object' && columnSorter.external)) {
14265
- return filteredTable;
14266
- }
14267
- var flip = sorterState.state === 'asc' ? 1 : sorterState.state === 'desc' ? -1 : 0;
14268
- var sorted = filteredTable.slice().sort(function (item, item2) {
14269
- var value = item[col];
14270
- var value2 = item2[col];
14271
- var a = typeof value === 'number' ? value : String(value).toLowerCase();
14272
- var b = typeof value2 === 'number' ? value2 : String(value2).toLowerCase();
14273
- return a > b ? 1 * flip : b > a ? -1 * flip : 0;
14274
- });
14275
- return sorted;
14276
- }, [
14277
- JSON.stringify(filteredTable),
14278
- JSON.stringify(sorterState),
14279
- JSON.stringify(columnSorter),
14280
- JSON.stringify(filteredColumns),
14281
- JSON.stringify(_items),
14282
- ]);
14283
- var numberOfPages = _itemsPerPage ? Math.ceil(sortedItems.length / _itemsPerPage) : 1;
14284
- var firstItemOnActivePageIndex = _activePage ? (_activePage - 1) * _itemsPerPage : 0;
14285
- var itemsOnActivePage = sortedItems.slice(firstItemOnActivePageIndex, firstItemOnActivePageIndex + _itemsPerPage);
14286
- var currentItems = _activePage ? itemsOnActivePage : sortedItems;
14287
- var isFiltered = tableFilterState || (sorterState === null || sorterState === void 0 ? void 0 : sorterState.column) || Object.values(columnFilterState).join('');
14288
- // effects
14289
- React$1.useEffect(function () {
14290
- mountedRef.current && onActivePageChange && onActivePageChange(_activePage);
14291
- }, [_activePage]);
14292
- React$1.useEffect(function () {
14293
- mountedRef.current && onItemsPerPageChange && onItemsPerPageChange(_itemsPerPage);
14294
- itemsPerPage !== _itemsPerPage && setActivePage(1); // TODO: set proper page after _itemsPerPage update
14295
- }, [_itemsPerPage]);
14296
- React$1.useEffect(function () {
14297
- mountedRef.current && sorterState && onSorterChange && onSorterChange(sorterState);
14298
- }, [JSON.stringify(sorterState)]);
14299
- React$1.useEffect(function () {
14300
- mountedRef.current && onColumnFilterChange && onColumnFilterChange(columnFilterState);
14301
- }, [columnFilterState]);
14302
- React$1.useEffect(function () {
14303
- mountedRef.current && onTableFilterChange && onTableFilterChange(tableFilterState);
14304
- }, [tableFilterState]);
14305
- React$1.useEffect(function () {
14306
- mountedRef.current && onFilteredItemsChange && onFilteredItemsChange(sortedItems);
14307
- }, [JSON.stringify(sortedItems)]);
14308
- var handleRowChecked = function (id, value) {
14309
- var newArr = __spreadArray([], _items, true);
14310
- newArr[id]._selected = value;
14311
- setItems(newArr);
14312
- };
14313
- var handleSelectAllChecked = function () {
14314
- if (selectedAll === true) {
14315
- setItems(_items.map(function (item) {
14316
- return __assign$1(__assign$1({}, item), { _selected: false });
14317
- }));
14318
- return;
14319
- }
14320
- setItems(_items.map(function (item) {
14321
- return __assign$1(__assign$1({}, item), { _selected: true });
14322
- }));
14323
- };
14324
- React$1.useEffect(function () {
14325
- if (selectable) {
14326
- var selected = _items.filter(function (item) { return item._selected === true; });
14327
- onSelectedItemsChange && onSelectedItemsChange(selected);
14328
- if (selected.length === _items.length) {
14329
- setSelectedAll(true);
14330
- return;
14331
- }
14332
- if (selected.length === 0) {
14333
- setSelectedAll(false);
14334
- return;
14335
- }
14336
- if (selected.length !== 0 && selected.length !== _items.length) {
14337
- setSelectedAll('indeterminate');
14338
- }
14339
- }
14340
- }, [_items]);
14341
14383
  React$1.useEffect(function () {
14342
14384
  mountedRef.current = true;
14343
14385
  }, []);
14344
14386
  return (React$1.createElement(React$1.Fragment, null,
14345
14387
  React$1.createElement("div", __assign$1({}, rest, { ref: ref }), (itemsPerPageSelect || tableFilter || cleaner) && (React$1.createElement("div", { className: "row my-2 mx-0" }, (tableFilter || cleaner) && (React$1.createElement(React$1.Fragment, null,
14346
- React$1.createElement("div", { className: "col-auto p-0" }, tableFilter && (React$1.createElement(CSmartTableFilter, { filterLabel: tableFilterLabel, filterPlaceholder: tableFilterPlaceholder, onInput: function (e) {
14347
- tableFilterChange(e.target.value, 'input');
14348
- }, onChange: function (e) {
14349
- tableFilterChange(e.target.value, 'change');
14350
- }, value: tableFilterState || '' }))),
14351
- React$1.createElement("div", { className: "col-auto p-0" }, cleaner && (React$1.createElement(CSmartTableCleaner, { isFiltered: isFiltered, onClick: function () { return clean(); }, onKeyUp: function (event) {
14388
+ React$1.createElement("div", { className: "col-auto p-0" }, tableFilter && (React$1.createElement("div", { className: "row mb-2" },
14389
+ React$1.createElement(CFormLabel, { className: "col-sm-auto col-form-label" }, tableFilterLabel),
14390
+ React$1.createElement("div", { className: "col-sm-auto" },
14391
+ React$1.createElement(CFormInput, { onInput: function (e) {
14392
+ handleTableFilterChange(e.target.value, 'input');
14393
+ }, onChange: function (e) {
14394
+ handleTableFilterChange(e.target.value, 'change');
14395
+ }, placeholder: tableFilterPlaceholder, value: tableFilterState || '' }))))),
14396
+ React$1.createElement("div", { className: "col-auto p-0" }, cleaner && (React$1.createElement(CSmartTableCleaner, { isFiltered: tableFilterState ||
14397
+ (sorterState === null || sorterState === void 0 ? void 0 : sorterState.column) ||
14398
+ Object.values(columnFilterState).join(''), onClick: function () { return handleClean(); }, onKeyDown: function (event) {
14352
14399
  if (event.key === 'Enter')
14353
- clean();
14400
+ handleClean();
14354
14401
  } })))))))),
14355
14402
  React$1.createElement("div", { className: "position-relative" },
14356
14403
  React$1.createElement(CTable, __assign$1({}, tableProps),
14357
- header && (React$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); } }))),
14404
+ header && (React$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) {
14405
+ return handleColumnFilterChange(key, event, 'change');
14406
+ }, 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); } }))),
14358
14407
  React$1.createElement(CSmartTableBody, __assign$1({ clickableRows: clickableRows, currentItems: currentItems, firstItemOnActivePageIndex: firstItemOnActivePageIndex, noItemsLabel: noItemsLabel, onRowClick: function (item, index, columnName, event) {
14359
14408
  return clickableRows && onRowClick && onRowClick(item, index, columnName, event);
14360
- }, onRowChecked: function (id, value) { return handleRowChecked(id, value); }, rawColumnNames: rawColumnNames, scopedColumns: scopedColumns, selectable: selectable }, tableBodyProps)),
14361
- typeof footer === 'boolean' && footer && (React$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 }))),
14409
+ }, onRowChecked: function (item, value) { return handleRowChecked(item, value); }, columnNames: columnNames, scopedColumns: scopedColumns, selectable: selectable, selected: _selected }, tableBodyProps)),
14410
+ typeof footer === 'boolean' && footer && (React$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 }))),
14362
14411
  Array.isArray(footer) && (React$1.createElement(CTableFoot, __assign$1({}, tableFootProps),
14363
14412
  React$1.createElement(CTableRow, null, footer.map(function (item, index) { return (React$1.createElement(CTableDataCell, __assign$1({}, (typeof item === 'object' && item._props && __assign$1({}, item._props)), { key: index }), typeof item === 'object' ? item.label : item)); }))))),
14364
14413
  loading && (React$1.createElement(CElementCover, { boundaries: [
14365
- { sides: ['top'], query: 'td' },
14414
+ { sides: ['top'], query: 'tbody' },
14366
14415
  { sides: ['bottom'], query: 'tbody' },
14367
- ] }))),
14416
+ ] }, elementCover))),
14368
14417
  (pagination || itemsPerPageSelect) && (React$1.createElement("div", { className: "row" },
14369
14418
  React$1.createElement("div", { className: "col" }, ((pagination && numberOfPages > 1) || paginationProps) && (React$1.createElement(CSmartPagination, __assign$1({ activePage: _activePage, onActivePageChange: function (page) {
14370
14419
  pagination && typeof pagination === 'object' && pagination.external
14371
14420
  ? onActivePageChange && onActivePageChange(page)
14372
14421
  : setActivePage(page);
14373
14422
  }, pages: numberOfPages }, paginationProps)))),
14374
- React$1.createElement("div", { className: "col-auto ms-auto" }, itemsPerPageSelect && (React$1.createElement(CSmartTableItemsPerPageSelector, { itemsPerPage: _itemsPerPage, itemsPerPageLabel: itemsPerPageLabel, itemsPerPageOptions: itemsPerPageOptions, onChange: function (event) { return itemsPerPageChange(event); } })))))));
14423
+ React$1.createElement("div", { className: "col-auto ms-auto" }, itemsPerPageSelect && (React$1.createElement("div", { className: "row" },
14424
+ React$1.createElement(CFormLabel, { className: "col-auto col-form-label" }, itemsPerPageLabel),
14425
+ React$1.createElement("div", { className: "col-auto" },
14426
+ React$1.createElement(CFormSelect, { defaultValue: _itemsPerPage, onChange: function (event) {
14427
+ return handleItemsPerPageChange(event);
14428
+ } }, itemsPerPageOptions &&
14429
+ itemsPerPageOptions.map(function (number, index) {
14430
+ return (React$1.createElement("option", { value: number, key: index }, number));
14431
+ }))))))))));
14375
14432
  });
14376
14433
  CSmartTable.propTypes = {
14377
14434
  activePage: propTypesExports.number,
@@ -14381,9 +14438,11 @@ CSmartTable.propTypes = {
14381
14438
  columnFilterValue: propTypesExports.object,
14382
14439
  columns: propTypesExports.array,
14383
14440
  columnSorter: propTypesExports.oneOfType([propTypesExports.bool, propTypesExports.object]),
14441
+ elementCover: propTypesExports.node,
14384
14442
  footer: propTypesExports.oneOfType([propTypesExports.bool, propTypesExports.array]),
14385
14443
  header: propTypesExports.bool,
14386
14444
  items: propTypesExports.array,
14445
+ itemsNumber: propTypesExports.number,
14387
14446
  itemsPerPage: propTypesExports.number,
14388
14447
  itemsPerPageLabel: propTypesExports.string,
14389
14448
  itemsPerPageOptions: propTypesExports.array,
@@ -14395,6 +14454,7 @@ CSmartTable.propTypes = {
14395
14454
  onFilteredItemsChange: propTypesExports.func,
14396
14455
  onItemsPerPageChange: propTypesExports.func,
14397
14456
  onRowClick: propTypesExports.func,
14457
+ onSelectAll: propTypesExports.func,
14398
14458
  onSelectedItemsChange: propTypesExports.func,
14399
14459
  onSorterChange: propTypesExports.func,
14400
14460
  onTableFilterChange: propTypesExports.func,
@@ -14402,6 +14462,8 @@ CSmartTable.propTypes = {
14402
14462
  paginationProps: propTypesExports.any,
14403
14463
  scopedColumns: propTypesExports.object,
14404
14464
  selectable: propTypesExports.bool,
14465
+ selectAll: propTypesExports.oneOfType([propTypesExports.bool, propTypesExports.object]),
14466
+ selected: propTypesExports.array,
14405
14467
  sorterValue: propTypesExports.object,
14406
14468
  sortingIcon: propTypesExports.node,
14407
14469
  sortingIconAscending: propTypesExports.node,
@@ -14999,6 +15061,7 @@ exports.CDropdownItem = CDropdownItem;
14999
15061
  exports.CDropdownItemPlain = CDropdownItemPlain;
15000
15062
  exports.CDropdownMenu = CDropdownMenu;
15001
15063
  exports.CDropdownToggle = CDropdownToggle;
15064
+ exports.CElementCover = CElementCover;
15002
15065
  exports.CFooter = CFooter;
15003
15066
  exports.CForm = CForm;
15004
15067
  exports.CFormCheck = CFormCheck;