@consta/uikit 4.2.2 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/__internal__/src/components/Collapse/Collapse.d.ts +4 -45
- package/__internal__/src/components/Collapse/Collapse.js +1 -1
- package/__internal__/src/components/Collapse/Collapse.js.map +1 -1
- package/__internal__/src/components/Collapse/CollapseIcon/CollapseIcon.d.ts +1 -13
- package/__internal__/src/components/Collapse/CollapseIcon/CollapseIcon.js +1 -1
- package/__internal__/src/components/Collapse/CollapseIcon/CollapseIcon.js.map +1 -1
- package/__internal__/src/components/Collapse/types.d.ts +53 -0
- package/__internal__/src/components/Collapse/types.js +2 -0
- package/__internal__/src/components/Collapse/types.js.map +1 -0
- package/__internal__/src/components/CollapseGroup/helpers.d.ts +5 -6
- package/__internal__/src/components/CollapseGroup/helpers.js.map +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeDateTime/DateTimeTypeDateTime.css +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeTime/DateTimeTypeTime.css +1 -1
- package/__internal__/src/components/SnackBar/SnackBar.js +1 -1
- package/__internal__/src/components/SnackBar/SnackBar.js.map +1 -1
- package/__internal__/src/components/SnackBar/SnackBarItem/SnackBarItem.css +1 -1
- package/__internal__/src/components/SnackBar/SnackBarItem/SnackBarItem.js +1 -1
- package/__internal__/src/components/SnackBar/SnackBarItem/SnackBarItem.js.map +1 -1
- package/__internal__/src/components/SnackBar/helper.d.ts +1 -0
- package/__internal__/src/components/SnackBar/types.d.ts +5 -0
- package/__internal__/src/components/SnackBar/types.js +1 -1
- package/__internal__/src/components/SnackBar/types.js.map +1 -1
- package/__internal__/src/components/Table/Table.d.ts +3 -2
- package/__internal__/src/components/Table/Table.js +1 -1
- package/__internal__/src/components/Table/Table.js.map +1 -1
- package/__internal__/src/components/Table/helpers.js +1 -1
- package/__internal__/src/components/Table/helpers.js.map +1 -1
- package/__internal__/src/hooks/useChoiceGroup/useChoiceGroup.js +1 -1
- package/__internal__/src/hooks/useChoiceGroup/useChoiceGroup.js.map +1 -1
- package/package.json +1 -1
- package/__internal__/src/docs/aboutConsta/aboutConsta.stand.d.ts +0 -2
- package/__internal__/src/docs/aboutConsta/aboutConsta.stand.js +0 -2
- package/__internal__/src/docs/aboutConsta/aboutConsta.stand.js.map +0 -1
- package/__internal__/src/docs/aboutConsta/components/AboutData/AboutData.css +0 -1
- package/__internal__/src/docs/aboutConsta/components/AboutData/AboutData.d.ts +0 -2
- package/__internal__/src/docs/aboutConsta/components/AboutData/AboutData.js +0 -2
- package/__internal__/src/docs/aboutConsta/components/AboutData/AboutData.js.map +0 -1
- package/__internal__/src/docs/addComponent/addComponent.stand.d.ts +0 -2
- package/__internal__/src/docs/addComponent/addComponent.stand.js +0 -2
- package/__internal__/src/docs/addComponent/addComponent.stand.js.map +0 -1
- package/__internal__/src/docs/addComponent/components/addComponentData/AddComponentData.css +0 -1
- package/__internal__/src/docs/addComponent/components/addComponentData/AddComponentData.d.ts +0 -5
- package/__internal__/src/docs/addComponent/components/addComponentData/AddComponentData.js +0 -2
- package/__internal__/src/docs/addComponent/components/addComponentData/AddComponentData.js.map +0 -1
- package/__internal__/src/docs/code/code.stand.d.ts +0 -2
- package/__internal__/src/docs/code/code.stand.js +0 -2
- package/__internal__/src/docs/code/code.stand.js.map +0 -1
- package/__internal__/src/docs/commits/commits.stand.d.ts +0 -2
- package/__internal__/src/docs/commits/commits.stand.js +0 -2
- package/__internal__/src/docs/commits/commits.stand.js.map +0 -1
- package/__internal__/src/docs/connectTheme/connectTheme.stand.d.ts +0 -2
- package/__internal__/src/docs/connectTheme/connectTheme.stand.js +0 -2
- package/__internal__/src/docs/connectTheme/connectTheme.stand.js.map +0 -1
- package/__internal__/src/docs/createPreset/createPreset.stand.d.ts +0 -2
- package/__internal__/src/docs/createPreset/createPreset.stand.js +0 -2
- package/__internal__/src/docs/createPreset/createPreset.stand.js.map +0 -1
- package/__internal__/src/docs/docs/docs.stand.d.ts +0 -2
- package/__internal__/src/docs/docs/docs.stand.js +0 -2
- package/__internal__/src/docs/docs/docs.stand.js.map +0 -1
- package/__internal__/src/docs/fileStructure/fileStructure.stand.d.ts +0 -2
- package/__internal__/src/docs/fileStructure/fileStructure.stand.js +0 -2
- package/__internal__/src/docs/fileStructure/fileStructure.stand.js.map +0 -1
- package/__internal__/src/docs/howToGo/howToGo.stand.d.ts +0 -2
- package/__internal__/src/docs/howToGo/howToGo.stand.js +0 -2
- package/__internal__/src/docs/howToGo/howToGo.stand.js.map +0 -1
- package/__internal__/src/docs/issue/issue.stand.d.ts +0 -2
- package/__internal__/src/docs/issue/issue.stand.js +0 -2
- package/__internal__/src/docs/issue/issue.stand.js.map +0 -1
- package/__internal__/src/docs/principle/principles.stand.d.ts +0 -2
- package/__internal__/src/docs/principle/principles.stand.js +0 -2
- package/__internal__/src/docs/principle/principles.stand.js.map +0 -1
- package/__internal__/src/docs/prototype/prototype.stand.d.ts +0 -2
- package/__internal__/src/docs/prototype/prototype.stand.js +0 -2
- package/__internal__/src/docs/prototype/prototype.stand.js.map +0 -1
- package/__internal__/src/docs/review/review.stand.d.ts +0 -2
- package/__internal__/src/docs/review/review.stand.js +0 -2
- package/__internal__/src/docs/review/review.stand.js.map +0 -1
- package/__internal__/src/docs/sla/components/SlaPictures/SlaPictures.d.ts +0 -1
- package/__internal__/src/docs/sla/components/SlaPictures/SlaPictures.js +0 -2
- package/__internal__/src/docs/sla/components/SlaPictures/SlaPictures.js.map +0 -1
- package/__internal__/src/docs/sla/sla.stand.d.ts +0 -2
- package/__internal__/src/docs/sla/sla.stand.js +0 -2
- package/__internal__/src/docs/sla/sla.stand.js.map +0 -1
- package/__internal__/src/docs/tableComparison/components/AboutData/AboutData.css +0 -1
- package/__internal__/src/docs/tableComparison/components/AboutData/AboutData.d.ts +0 -2
- package/__internal__/src/docs/tableComparison/components/AboutData/AboutData.js +0 -2
- package/__internal__/src/docs/tableComparison/components/AboutData/AboutData.js.map +0 -1
- package/__internal__/src/docs/tableComparison/tableComparison.stand.d.ts +0 -2
- package/__internal__/src/docs/tableComparison/tableComparison.stand.js +0 -2
- package/__internal__/src/docs/tableComparison/tableComparison.stand.js.map +0 -1
- package/__internal__/src/docs/themeAbout/themeAbout.stand.d.ts +0 -2
- package/__internal__/src/docs/themeAbout/themeAbout.stand.js +0 -2
- package/__internal__/src/docs/themeAbout/themeAbout.stand.js.map +0 -1
- package/__internal__/src/docs/units/units.stand.d.ts +0 -2
- package/__internal__/src/docs/units/units.stand.js +0 -2
- package/__internal__/src/docs/units/units.stand.js.map +0 -1
- package/__internal__/src/docs/workflow/workflow.stand.d.ts +0 -2
- package/__internal__/src/docs/workflow/workflow.stand.js +0 -2
- package/__internal__/src/docs/workflow/workflow.stand.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _defineProperty from"@babel/runtime/helpers/defineProperty";var _excluded=["columns","rows","size","filters","isResizable","stickyHeader","stickyColumns","minColumnWidth","activeRow","verticalAlign","headerVerticalAlign","zebraStriped","borderBetweenRows","borderBetweenColumns","emptyRowsPlaceholder","defaultExpandAll","className","onRowHover","onRowClick","onRowCreate","onCellClick","getAdditionalClassName","rowCreateText","lazyLoad","onSortBy","onFiltersUpdated","getTagLabel","getCellWrap","isExpandedRowsByDefault"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import"./Table.css";import React,{useEffect,useMemo}from"react";import{useComponentSize}from"../../hooks/useComponentSize/useComponentSize";import{useForkRef}from"../../hooks/useForkRef/useForkRef";import{IconSortDown}from"../../icons/IconSortDown/IconSortDown";import{IconSortUp}from"../../icons/IconSortUp/IconSortUp";import{IconUnsort}from"../../icons/IconUnsort/IconUnsort";import{sortBy as sortByDefault,updateAt}from"../../utils/array";import{cn}from"../../utils/bem";import{setRef}from"../../utils/setRef";import{isNotNil,isString}from"../../utils/type-guards";import{Button}from"../Button/Button";import{Text}from"../Text/Text";import{TableCell}from"./Cell/TableCell";import{fieldFiltersPresent,filterTableData,getSelectedFiltersList,isSelectedFiltersPresent,useSelectedFilters}from"./filtering";import{TableHeader}from"./Header/TableHeader";import{createSortingState,getColumnLeftOffset,getColumnsSize,getMergedArray,getNewSorting,Order,transformRows,useHeaderData,useLazyLoadData}from"./helpers";import{TableResizer}from"./Resizer/TableResizer";import{TableRowsCollapse}from"./RowsCollapse/TableRowsCollapse";import{TableSelectedOptionsList}from"./SelectedOptionsList/TableSelectedOptionsList";export{TableTextFilter}from"./TextFilter/TableTextFilter";export{TableFilterContainer}from"./FilterContainer/TableFilterContainer";export{TableNumberFilter}from"./NumberFilter/TableNumberFilter";export{TableChoiceGroupFilter}from"./ChoiceGroupFilter/TableChoiceGroupFilter";var cnTable=cn("Table");export var sizes=["s","m","l"];export var zebraStriped=["odd","even"];export var headerVerticalAligns=["center","bottom"];var createButtonSizeMap={s:"xs",m:"s",l:"m"},getColumnSortByField=function(a){return a.sortable&&a.sortByField||a.accessor},sortingData=function(a,b,c){if(c)return a;if(!b)return a;var d=sortByDefault(a,b.by,b.order,b.sortFn);return d.some(function(a){var b;return null===(b=a.rows)||void 0===b?void 0:b.length})?d.map(function(a){return a.rows?_objectSpread(_objectSpread({},a),{},{rows:sortingData(a.rows,b,c)}):a}):d},defaultEmptyRowsPlaceholder=React.createElement(Text,{as:"span",view:"primary",size:"s",lineHeight:"s"},"\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445"),InternalTable=function(a,b){var c,d,e,f,g=a.columns,h=a.rows,i=a.size,j=void 0===i?"l":i,k=a.filters,l=a.isResizable,m=void 0!==l&&l,n=a.stickyHeader,o=a.stickyColumns,p=void 0===o?0:o,q=a.minColumnWidth,r=void 0===q?150:q,s=a.activeRow,t=a.verticalAlign,u=void 0===t?"top":t,v=a.headerVerticalAlign,w=void 0===v?"center":v,x=a.zebraStriped,y=a.borderBetweenRows,z=a.borderBetweenColumns,A=void 0!==z&&z,B=a.emptyRowsPlaceholder,C=void 0===B?defaultEmptyRowsPlaceholder:B,D=a.defaultExpandAll,E=a.className,F=a.onRowHover,G=a.onRowClick,H=a.onRowCreate,I=a.onCellClick,J=a.getAdditionalClassName,K=a.rowCreateText,L=void 0===K?"+ \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443":K,M=a.lazyLoad,N=a.onSortBy,O=a.onFiltersUpdated,P=a.getTagLabel,Q=a.getCellWrap,R=a.isExpandedRowsByDefault,S=void 0!==R&&R,T=_objectWithoutProperties(a,_excluded),U=useHeaderData(g),V=U.headers,W=U.flattenedHeaders,X=U.lowHeaders,Y=U.headerRowsRefs,Z=U.headerRowsHeights,$=U.resizerTopOffsets,_=(null===(c=V[0][p-1])||void 0===c?void 0:c.position.gridIndex)+((null===(d=V[0][p-1])||void 0===d?void 0:d.position.colSpan)||1),aa=function(){return X.map(function(a){return a.width})},ba=React.useState(aa()),ca=_slicedToArray(ba,2),da=ca[0],ea=ca[1],fa=React.useMemo(function(){return k&&k.filter(function(a){return a.id&&a.field})},[k]);React.useEffect(function(){ea(aa())},[X.length]);var ga=React.useState([]),ha=_slicedToArray(ga,2),ia=ha[0],ja=ha[1],ka=React.useState(null),la=_slicedToArray(ka,2),ma=la[0],na=la[1],oa=React.useState(null),pa=_slicedToArray(oa,2),qa=pa[0],ra=pa[1],sa=React.useState({top:0,left:0}),ta=_slicedToArray(sa,2),ua=ta[0],va=ta[1],wa=React.useRef(null),xa=React.useRef({}),ya=React.useRef({}),za=useSelectedFilters(fa,O),Aa=za.selectedFilters,Ba=za.updateSelectedFilters,Ca=za.removeOneSelectedFilter,Da=za.removeAllSelectedFilters,Ea=React.useState([]),Fa=_slicedToArray(Ea,2),Ga=Fa[0],Ha=Fa[1];React.useEffect(function(){var a=g.find(function(a){return isString(a.order)&&Object.prototype.hasOwnProperty.call(Order,a.order)});if(a){var b=createSortingState(getColumnSortByField(a),a.order,a.sortFn);na(b)}},[g]),useComponentSize(wa);var Ia=(null===(e=wa.current)||void 0===e?void 0:e.clientHeight)||0,Ja=(null===(f=wa.current)||void 0===f?void 0:f.clientWidth)||0,Ka=0<ua.left,La=0<ua.top,Ma=s&&s.onChange,Na=function(a,b){ea(updateAt(da,a,b))},Oa=useMemo(function(){var a=Object.values(xa.current).filter(isNotNil),b=a.map(function(a){return a.getBoundingClientRect().width}),c=getMergedArray(b,da);return c.reduce(function(c,a){return(null!==c&&void 0!==c?c:0)+(null!==a&&void 0!==a?a:0)})},[da,m]);React.useLayoutEffect(function(){var a=Object.values(xa.current).filter(isNotNil);if(0!==a.length){var b=a.map(function(a){return a.getBoundingClientRect().width});if(ja(b),a[0].getBoundingClientRect().left!==a[a.length-1].getBoundingClientRect().left){var c=getMergedArray(b,da);return(null!==Oa&&void 0!==Oa?Oa:Ja)<Ja&&(c[c.length-1]=void 0),ea(c)}return 0<Ja&&!m?ea(aa()):void 0}},[Ja,Oa]);var Pa=function(a){return getColumnSortByField(a)===(null===ma||void 0===ma?void 0:ma.by)},Qa=function(a,b){return b>=p?void 0:getColumnLeftOffset({columnIndex:a,resizedColumnWidths:da,initialColumnWidths:ia})},Ra=function(a){var b=a.id,c=a.e;s&&s.onChange&&s.onChange({id:s.id===b?void 0:b,e:c})},Sa=function(a){return function(b){return F&&F({id:a,e:b})}},Ta=function(a,b){return function(c){return H&&H({e:c,id:b,index:a})}},Ua=function(a,b){var c=Math.min(r,ia[a]),d=da[a]||ia[a],e=Math.max(c,d+b);Na(a,e);var f=wa.current;a===da.length-1&&0<b&&f&&f.scrollBy(b,0)},Va=getColumnLeftOffset({columnIndex:p,resizedColumnWidths:da,initialColumnWidths:ia}),Wa=function(a){return a.map(function(a){var b,c=a.position.gridIndex,d=da[c],e=ia[c],f=d||e,g=getColumnLeftOffset({columnIndex:c,resizedColumnWidths:da,initialColumnWidths:ia}),h=p>a.position.topHeaderGridIndex,i=p>c||Va+ua.left<g+f,j=0<((null===(b=Aa[a.accessor])||void 0===b?void 0:b.selected)||[]).length;return _objectSpread(_objectSpread({},a),{},{filterable:!!(fa&&fieldFiltersPresent(fa,a.accessor)),isSortingActive:Pa(a),isFilterActive:j,isResized:!!f&&f!==e,isSticky:h,showResizer:i,columnWidth:f,columnLeftOffset:g})})},Xa=Wa(W),Ya=React.useMemo(function(){return h.some(function(a){var b;return!(!(null!==(b=a.rows)&&void 0!==b)||!b.length)})},[h]),Za=sortingData(h,ma,N),$a=fa&&isSelectedFiltersPresent(Aa)?filterTableData({data:Za,filters:fa||[],selectedFilters:Aa}):Za,_a=M||{},ab=_a.maxVisibleRows,bb=void 0===ab?210:ab,cb=_a.scrollableEl,db=void 0===cb?wa.current:cb,eb=useLazyLoadData(bb,db,!!M),fb=eb.getSlicedRows,gb=eb.setBoundaryRef,hb=transformRows($a,Ga,S),ib=fb(hb),jb={"--table-grid-template-columns":getColumnsSize(da),"--table-width":"".concat(Ja,"px")},kb=Wa(X).some(function(a){return a.mergeCells}),lb=function(a){return function(){return Ga.includes(a)?void Ha(function(b){return b.filter(function(b){return b!==a})}):void Ha(function(b){return[].concat(_toConsumableArray(b),[a])})}},mb=function(a,b){var c,d=!(!(null!==(c=a.rows)&&void 0!==c)||!c.length)&&0===b,e={level:a.level,isExpandedByDefault:S};if(!d||S)return e;var f=Ga.includes(a.id),g=lb(a.id);return _objectSpread(_objectSpread({},e),{},{withCollapseButton:d,isExpanded:f,toggleCollapse:g})},nb=function(a,b){var c=[];return a.forEach(function(a){var d,e;if((a.defaultExpand||0<(null!==(d=null===(e=a.rows)||void 0===e?void 0:e.length)&&void 0!==d?d:0)&&b)&&c.push(a.id),a.rows){var f=nb(a.rows,b);c=[].concat(_toConsumableArray(c),_toConsumableArray(f)),0<f.length&&-1===c.indexOf(a.id)&&c.push(a.id)}}),c};useEffect(function(){h&&Ha(nb(h,D))},[h,D]);var ob=function(a,b,c){var d=a.renderCell?a.renderCell(b):b[a.accessor];if(!Ya||0!==c)return d;var e=mb(b,c);return React.createElement(TableRowsCollapse,e,d)},pb=useMemo(function(){var a,b=ib.length,c=null!==(a=ib.slice(-1).pop())&&void 0!==a?a:{},d=c.id;return H?React.createElement("div",{className:cnTable(b?"CreatRowCell":"RowWithoutCells")},React.createElement(Button,{size:createButtonSizeMap[j],form:"brick",label:L,view:"clear",className:cnTable("CreateRowButton"),onClick:Ta(b,d),width:"full"})):null},[L,ib.length,H]),qb=function(a,b,c,d){var e=c.mergeCells,f=c.accessor,g=c.position,h=c.getComparisonValue,j=void 0===h?function(a){return a}:h,k=ib[b-1]&&j(ib[b-1][f]),l=j(a[f]),m={rowSpan:1,show:!1,style:{left:Qa(d,g.topHeaderGridIndex)}};if(e&&(ib[b-1]&&k!==l||0===b)){for(var n,o=b;o<ib.length&&ib[o+1]&&(n=j(ib[o+1][f]),l===n);o++)m.rowSpan++;1<m.rowSpan&&(m.style["--row-span"]="span ".concat(m.rowSpan)),m.show=!0}return e||(m.show=!0),m},rb=function(a){null===I||void 0===I?void 0:I(a)};return React.createElement("div",Object.assign({},T,{ref:useForkRef([wa,b]),className:cnTable({size:j,isResizable:m,zebraStriped:x,withBorderBottom:!$a.length},[E]),style:jb,onScroll:function handleScroll(a){a.target instanceof HTMLElement&&a.target===wa.current&&va({top:a.target.scrollTop,left:a.target.scrollLeft})}}),Wa(X).map(function(a,b){return React.createElement(TableCell,{type:"resizer",key:b,ref:function(a){xa.current[b]=a},style:{left:Qa(b,b)},onContextMenu:function onContextMenu(a){return rb({e:a,type:"contextMenu",columnIdx:b,ref:{current:xa.current[b]}})},onClick:function onClick(a){return rb({e:a,type:"click",columnIdx:b,ref:{current:xa.current[b]}})},column:a,showVerticalShadow:Ka},m&&React.createElement(TableResizer,{height:Ia-$[b],top:$[b],isVisible:a.showResizer,onResize:function onResize(a){return Ua(b,a)},onDoubleClick:function onDoubleClick(){return Na(b,ia[b])}}))}),React.createElement(TableHeader,{isStickyHeader:void 0!==n&&n,headersWithMetaData:Xa,headerRowsHeights:Z,headerRowsRefs:Y,getStickyLeftOffset:Qa,stickyColumnsGrid:_,showVerticalCellShadow:Ka,headerVerticalAlign:w,getSortIcon:function getSortIcon(a){return Pa(a)&&("desc"===(null===ma||void 0===ma?void 0:ma.order)?IconSortDown:IconSortUp)||IconUnsort},handleSortClick:function handleSortClick(a){var b=getNewSorting(ma,getColumnSortByField(a),a.sortable&&(null===a||void 0===a?void 0:a.sortFn)||void 0),c=b?{sortingBy:b.by,sortOrder:b.order}:null;N&&N(c),na(b)},handleFilterTogglerClick:function handleFilterTogglerClick(a){return function(){ra(qa===a?null:a)}},handleCellClick:rb,handleTooltipSave:function handleTooltipSave(a,b,c){Ba(a,b,c)},filters:fa,visibleFilter:qa,selectedFilters:Aa,showHorizontalCellShadow:La,borderBetweenColumns:A}),fa&&isSelectedFiltersPresent(Aa)&&React.createElement("div",{className:cnTable("RowWithoutCells")},React.createElement(TableSelectedOptionsList,{values:getSelectedFiltersList({filters:fa,selectedFilters:Aa,columns:X}),getTagLabel:P,onRemove:function removeSelectedFilter(a){return function(b){Ca(a,b)}}(fa),onReset:function resetSelectedFilters(){fa&&fa.length&&Da(fa)}})),0<ib.length?ib.map(function(a,b){var c=0==(b+1)%2?"even":"odd";return React.createElement("div",{key:a.id,role:"presentation",className:cnTable("CellsRow",{nth:c,withMergedCells:kb}),onMouseEnter:Sa(a.id),onMouseLeave:Sa(void 0),onClick:function onClick(b){return G&&G({id:a.id,e:b})}},Wa(X).map(function(c,d){var e=qb(a,b,c,d),f=e.show,g=e.style,h=e.rowSpan;return f?React.createElement(TableCell,{type:"content",key:c.accessor,ref:function(c){ya.current["".concat(d,"-").concat(a.id)]=c,setRef(gb(d,b),c)},style:g,wrapperClassName:cnTable("ContentCell",{isActive:!!s&&s.id===a.id,isDarkned:!!s&&void 0!==s.id&&s.id!==a.id,isMerged:c.mergeCells&&1<h}),className:null===J||void 0===J?void 0:J({column:c,row:a,isActive:!!s&&s.id===a.id}),wrap:null===Q||void 0===Q?void 0:Q(a),onContextMenu:function onContextMenu(b){return rb({e:b,type:"contextMenu",columnIdx:d,rowId:a.id,ref:{current:ya.current["".concat(d,"-").concat(a.id)]}})},onClick:function onClick(b){Ra({id:a.id,e:b}),rb({e:b,type:"click",columnIdx:d,rowId:a.id,ref:{current:ya.current["".concat(d,"-").concat(a.id)]}})},column:c,verticalAlign:u,isClickable:!!Ma,showVerticalShadow:Ka&&(null===c||void 0===c?void 0:c.position.gridIndex)+((null===c||void 0===c?void 0:c.position.colSpan)||1)===_,isBorderTop:0<b&&void 0!==y&&y,isBorderLeft:0<d&&A},ob(c,a,d)):null}))}):React.createElement("div",{className:cnTable("RowWithoutCells")},React.createElement("div",{className:cnTable("EmptyCell")},function renderEmptyRowsPlaceholder(a){return"string"==typeof a?React.createElement(Text,{size:"s"},a):a}(C))),pb)};export var Table=React.forwardRef(InternalTable);
|
|
1
|
+
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";import _defineProperty from"@babel/runtime/helpers/defineProperty";var _excluded=["columns","rows","size","filters","isResizable","stickyHeader","stickyColumns","minColumnWidth","activeRow","verticalAlign","headerVerticalAlign","zebraStriped","borderBetweenRows","borderBetweenColumns","emptyRowsPlaceholder","defaultExpandAll","className","onRowHover","onRowClick","onRowCreate","onCellClick","getAdditionalClassName","rowCreateText","lazyLoad","onSortBy","onFiltersUpdated","getTagLabel","getCellWrap","isExpandedRowsByDefault"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import"./Table.css";import React,{useEffect,useMemo}from"react";import{useComponentSize}from"../../hooks/useComponentSize/useComponentSize";import{useForkRef}from"../../hooks/useForkRef/useForkRef";import{IconSortDown}from"../../icons/IconSortDown/IconSortDown";import{IconSortUp}from"../../icons/IconSortUp/IconSortUp";import{IconUnsort}from"../../icons/IconUnsort/IconUnsort";import{sortBy as sortByDefault,updateAt}from"../../utils/array";import{cn}from"../../utils/bem";import{setRef}from"../../utils/setRef";import{isNotNil,isString}from"../../utils/type-guards";import{Button}from"../Button/Button";import{Text}from"../Text/Text";import{TableCell}from"./Cell/TableCell";import{fieldFiltersPresent,filterTableData,getSelectedFiltersList,isSelectedFiltersPresent,useSelectedFilters}from"./filtering";import{TableHeader}from"./Header/TableHeader";import{createSortingState,getColumnLeftOffset,getColumnsSize,getMergedArray,getNewSorting,Order,transformRows,useHeaderData,useLazyLoadData}from"./helpers";import{TableResizer}from"./Resizer/TableResizer";import{TableRowsCollapse}from"./RowsCollapse/TableRowsCollapse";import{TableSelectedOptionsList}from"./SelectedOptionsList/TableSelectedOptionsList";export{TableTextFilter}from"./TextFilter/TableTextFilter";export{TableFilterContainer}from"./FilterContainer/TableFilterContainer";export{TableNumberFilter}from"./NumberFilter/TableNumberFilter";export{TableChoiceGroupFilter}from"./ChoiceGroupFilter/TableChoiceGroupFilter";var cnTable=cn("Table");export var sizes=["s","m","l"];export var zebraStriped=["odd","even"];export var headerVerticalAligns=["center","bottom"];var createButtonSizeMap={s:"xs",m:"s",l:"m"},getColumnSortByField=function(a){return a.sortable&&a.sortByField||a.accessor},sortingData=function(a,b,c){if(c)return a;if(!b)return a;var d=sortByDefault(a,b.by,b.order,b.sortFn);return d.some(function(a){var b;return null===(b=a.rows)||void 0===b?void 0:b.length})?d.map(function(a){return a.rows?_objectSpread(_objectSpread({},a),{},{rows:sortingData(a.rows,b,c)}):a}):d},defaultEmptyRowsPlaceholder=React.createElement(Text,{as:"span",view:"primary",size:"s",lineHeight:"s"},"\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445"),InternalTable=function(a,b){var c,d,e,f,g=a.columns,h=a.rows,i=a.size,j=void 0===i?"l":i,k=a.filters,l=a.isResizable,m=void 0!==l&&l,n=a.stickyHeader,o=a.stickyColumns,p=void 0===o?0:o,q=a.minColumnWidth,r=void 0===q?150:q,s=a.activeRow,t=a.verticalAlign,u=void 0===t?"top":t,v=a.headerVerticalAlign,w=void 0===v?"center":v,x=a.zebraStriped,y=a.borderBetweenRows,z=a.borderBetweenColumns,A=void 0!==z&&z,B=a.emptyRowsPlaceholder,C=void 0===B?defaultEmptyRowsPlaceholder:B,D=a.defaultExpandAll,E=a.className,F=a.onRowHover,G=a.onRowClick,H=a.onRowCreate,I=a.onCellClick,J=a.getAdditionalClassName,K=a.rowCreateText,L=void 0===K?"+ \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443":K,M=a.lazyLoad,N=a.onSortBy,O=a.onFiltersUpdated,P=a.getTagLabel,Q=a.getCellWrap,R=a.isExpandedRowsByDefault,S=void 0!==R&&R,T=_objectWithoutProperties(a,_excluded),U=useHeaderData(g),V=U.headers,W=U.flattenedHeaders,X=U.lowHeaders,Y=U.headerRowsRefs,Z=U.headerRowsHeights,$=U.resizerTopOffsets,_=(null===(c=V[0][p-1])||void 0===c?void 0:c.position.gridIndex)+((null===(d=V[0][p-1])||void 0===d?void 0:d.position.colSpan)||1),aa=function(){return X.map(function(a){return a.width})},ba=React.useState(aa()),ca=_slicedToArray(ba,2),da=ca[0],ea=ca[1],fa=React.useMemo(function(){return k&&k.filter(function(a){return a.id&&a.field})},[k]);React.useEffect(function(){ea(aa())},[X.length]);var ga=React.useState([]),ha=_slicedToArray(ga,2),ia=ha[0],ja=ha[1],ka=React.useState(null),la=_slicedToArray(ka,2),ma=la[0],na=la[1],oa=React.useState(null),pa=_slicedToArray(oa,2),qa=pa[0],ra=pa[1],sa=React.useState({top:0,left:0}),ta=_slicedToArray(sa,2),ua=ta[0],va=ta[1],wa=React.useRef(null),xa=React.useRef({}),ya=React.useRef({}),za=useSelectedFilters(fa,O),Aa=za.selectedFilters,Ba=za.updateSelectedFilters,Ca=za.removeOneSelectedFilter,Da=za.removeAllSelectedFilters,Ea=React.useState([]),Fa=_slicedToArray(Ea,2),Ga=Fa[0],Ha=Fa[1];React.useEffect(function(){var a=g.find(function(a){return isString(a.order)&&Object.prototype.hasOwnProperty.call(Order,a.order)});if(a){var b=createSortingState(getColumnSortByField(a),a.order,a.sortFn);na(b)}},[g]),useComponentSize(wa);var Ia=(null===(e=wa.current)||void 0===e?void 0:e.clientHeight)||0,Ja=(null===(f=wa.current)||void 0===f?void 0:f.clientWidth)||0,Ka=0<ua.left,La=0<ua.top,Ma=s&&s.onChange,Na=function(a,b){ea(updateAt(da,a,b))},Oa=useMemo(function(){var a=Object.values(xa.current).filter(isNotNil),b=a.map(function(a){return a.getBoundingClientRect().width}),c=getMergedArray(b,da);return c.reduce(function(c,a){return(null!==c&&void 0!==c?c:0)+(null!==a&&void 0!==a?a:0)})},[da,m]);React.useLayoutEffect(function(){var a=Object.values(xa.current).filter(isNotNil);if(0!==a.length){var b=a.map(function(a){return a.getBoundingClientRect().width});if(ja(b),a[0].getBoundingClientRect().left!==a[a.length-1].getBoundingClientRect().left){var c=getMergedArray(b,da);return(null!==Oa&&void 0!==Oa?Oa:Ja)<Ja&&(c[c.length-1]=void 0),ea(c)}return 0<Ja&&!m?ea(aa()):void 0}},[Ja,Oa]);var Pa=function(a){return getColumnSortByField(a)===(null===ma||void 0===ma?void 0:ma.by)},Qa=function(a,b){return b>=p?void 0:getColumnLeftOffset({columnIndex:a,resizedColumnWidths:da,initialColumnWidths:ia})},Ra=function(a){var b=a.id,c=a.e;s&&s.onChange&&s.onChange({id:s.id===b?void 0:b,e:c})},Sa=function(a){return function(b){return F&&F({id:a,e:b})}},Ta=function(a,b){return function(c){return H&&H({e:c,id:b,index:a})}},Ua=function(a,b){var c=Math.min(r,ia[a]),d=da[a]||ia[a],e=Math.max(c,d+b);Na(a,e);var f=wa.current;a===da.length-1&&0<b&&f&&f.scrollBy(b,0)},Va=getColumnLeftOffset({columnIndex:p,resizedColumnWidths:da,initialColumnWidths:ia}),Wa=function(a){return a.map(function(a){var b,c=a.position.gridIndex,d=da[c],e=ia[c],f=d||e,g=getColumnLeftOffset({columnIndex:c,resizedColumnWidths:da,initialColumnWidths:ia}),h=p>a.position.topHeaderGridIndex,i=p>c||Va+ua.left<g+f,j=0<((null===(b=Aa[a.accessor])||void 0===b?void 0:b.selected)||[]).length;return _objectSpread(_objectSpread({},a),{},{filterable:!!(fa&&fieldFiltersPresent(fa,a.accessor)),isSortingActive:Pa(a),isFilterActive:j,isResized:!!f&&f!==e,isSticky:h,showResizer:i,columnWidth:f,columnLeftOffset:g})})},Xa=Wa(W),Ya=React.useMemo(function(){return h.some(function(a){var b;return!(!(null!==(b=a.rows)&&void 0!==b)||!b.length)})},[h]),Za=sortingData(h,ma,N),$a=fa&&isSelectedFiltersPresent(Aa)?filterTableData({data:Za,filters:fa||[],selectedFilters:Aa}):Za,_a=M||{},ab=_a.maxVisibleRows,bb=void 0===ab?210:ab,cb=_a.scrollableEl,db=void 0===cb?wa.current:cb,eb=useLazyLoadData(bb,db,!!M),fb=eb.getSlicedRows,gb=eb.setBoundaryRef,hb=transformRows($a,Ga,S),ib=fb(hb),jb={"--table-grid-template-columns":getColumnsSize(da),"--table-width":"".concat(Ja,"px")},kb=Wa(X).some(function(a){return a.mergeCells}),lb=function(a){return function(){return Ga.includes(a)?void Ha(function(b){return b.filter(function(b){return b!==a})}):void Ha(function(b){return[].concat(_toConsumableArray(b),[a])})}},mb=function(a,b){var c,d=!(!(null!==(c=a.rows)&&void 0!==c)||!c.length)&&0===b,e={level:a.options.level,isExpandedByDefault:S};if(!d||S)return e;var f=Ga.includes(a.id),g=lb(a.id);return _objectSpread(_objectSpread({},e),{},{withCollapseButton:d,isExpanded:f,toggleCollapse:g})},nb=function(a,b){var c=[];return a.forEach(function(a){var d,e;if((a.defaultExpand||0<(null!==(d=null===(e=a.rows)||void 0===e?void 0:e.length)&&void 0!==d?d:0)&&b)&&c.push(a.id),a.rows){var f=nb(a.rows,b);c=[].concat(_toConsumableArray(c),_toConsumableArray(f)),0<f.length&&-1===c.indexOf(a.id)&&c.push(a.id)}}),c};useEffect(function(){h&&Ha(nb(h,D))},[h,D]);var ob=function(a,b,c){var d=a.renderCell?a.renderCell(b):b[a.accessor];if(!Ya||0!==c)return d;var e=mb(b,c);return React.createElement(TableRowsCollapse,e,d)},pb=useMemo(function(){var a,b=ib.length,c=null!==(a=ib.slice(-1).pop())&&void 0!==a?a:{},d=c.id;return H?React.createElement("div",{className:cnTable(b?"CreatRowCell":"RowWithoutCells")},React.createElement(Button,{size:createButtonSizeMap[j],form:"brick",label:L,view:"clear",className:cnTable("CreateRowButton"),onClick:Ta(b,d),width:"full"})):null},[L,ib.length,H]),qb=function(a,b,c,d){var e=c.mergeCells,f=c.accessor,g=c.position,h=c.getComparisonValue,j=void 0===h?function(a){return a}:h,k=ib[b-1]&&j(ib[b-1][f]),l=j(a[f]),m={rowSpan:1,show:!1,style:{left:Qa(d,g.topHeaderGridIndex)}};if(e&&(ib[b-1]&&k!==l||0===b)){for(var n,o=b;o<ib.length&&ib[o+1]&&(n=j(ib[o+1][f]),l===n);o++)m.rowSpan++;1<m.rowSpan&&(m.style["--row-span"]="span ".concat(m.rowSpan)),m.show=!0}return e||(m.show=!0),m},rb=function(a){null===I||void 0===I?void 0:I(a)};return React.createElement("div",Object.assign({},T,{ref:useForkRef([wa,b]),className:cnTable({size:j,isResizable:m,zebraStriped:x,withBorderBottom:!$a.length},[E]),style:jb,onScroll:function handleScroll(a){a.target instanceof HTMLElement&&a.target===wa.current&&va({top:a.target.scrollTop,left:a.target.scrollLeft})}}),Wa(X).map(function(a,b){return React.createElement(TableCell,{type:"resizer",key:b,ref:function(a){xa.current[b]=a},style:{left:Qa(b,b)},onContextMenu:function onContextMenu(a){return rb({e:a,type:"contextMenu",columnIdx:b,ref:{current:xa.current[b]}})},onClick:function onClick(a){return rb({e:a,type:"click",columnIdx:b,ref:{current:xa.current[b]}})},column:a,showVerticalShadow:Ka},m&&React.createElement(TableResizer,{height:Ia-$[b],top:$[b],isVisible:a.showResizer,onResize:function onResize(a){return Ua(b,a)},onDoubleClick:function onDoubleClick(){return Na(b,ia[b])}}))}),React.createElement(TableHeader,{isStickyHeader:void 0!==n&&n,headersWithMetaData:Xa,headerRowsHeights:Z,headerRowsRefs:Y,getStickyLeftOffset:Qa,stickyColumnsGrid:_,showVerticalCellShadow:Ka,headerVerticalAlign:w,getSortIcon:function getSortIcon(a){return Pa(a)&&("desc"===(null===ma||void 0===ma?void 0:ma.order)?IconSortDown:IconSortUp)||IconUnsort},handleSortClick:function handleSortClick(a){var b=getNewSorting(ma,getColumnSortByField(a),a.sortable&&(null===a||void 0===a?void 0:a.sortFn)||void 0),c=b?{sortingBy:b.by,sortOrder:b.order}:null;N&&N(c),na(b)},handleFilterTogglerClick:function handleFilterTogglerClick(a){return function(){ra(qa===a?null:a)}},handleCellClick:rb,handleTooltipSave:function handleTooltipSave(a,b,c){Ba(a,b,c)},filters:fa,visibleFilter:qa,selectedFilters:Aa,showHorizontalCellShadow:La,borderBetweenColumns:A}),fa&&isSelectedFiltersPresent(Aa)&&React.createElement("div",{className:cnTable("RowWithoutCells")},React.createElement(TableSelectedOptionsList,{values:getSelectedFiltersList({filters:fa,selectedFilters:Aa,columns:X}),getTagLabel:P,onRemove:function removeSelectedFilter(a){return function(b){Ca(a,b)}}(fa),onReset:function resetSelectedFilters(){fa&&fa.length&&Da(fa)}})),0<ib.length?ib.map(function(a,b){var c=0==(b+1)%2?"even":"odd";return React.createElement("div",{key:a.id,role:"presentation",className:cnTable("CellsRow",{nth:c,withMergedCells:kb}),onMouseEnter:Sa(a.id),onMouseLeave:Sa(void 0),onClick:function onClick(b){return G&&G({id:a.id,e:b})}},Wa(X).map(function(c,d){var e=qb(a,b,c,d),f=e.show,g=e.style,h=e.rowSpan;return f?React.createElement(TableCell,{type:"content",key:c.accessor,ref:function(c){ya.current["".concat(d,"-").concat(a.id)]=c,setRef(gb(d,b),c)},style:g,wrapperClassName:cnTable("ContentCell",{isActive:!!s&&s.id===a.id,isDarkned:!!s&&void 0!==s.id&&s.id!==a.id,isMerged:c.mergeCells&&1<h}),className:null===J||void 0===J?void 0:J({column:c,row:a,isActive:!!s&&s.id===a.id}),wrap:null===Q||void 0===Q?void 0:Q(a),onContextMenu:function onContextMenu(b){return rb({e:b,type:"contextMenu",columnIdx:d,rowId:a.id,ref:{current:ya.current["".concat(d,"-").concat(a.id)]}})},onClick:function onClick(b){Ra({id:a.id,e:b}),rb({e:b,type:"click",columnIdx:d,rowId:a.id,ref:{current:ya.current["".concat(d,"-").concat(a.id)]}})},column:c,verticalAlign:u,isClickable:!!Ma,showVerticalShadow:Ka&&(null===c||void 0===c?void 0:c.position.gridIndex)+((null===c||void 0===c?void 0:c.position.colSpan)||1)===_,isBorderTop:0<b&&void 0!==y&&y,isBorderLeft:0<d&&A},ob(c,a,d)):null}))}):React.createElement("div",{className:cnTable("RowWithoutCells")},React.createElement("div",{className:cnTable("EmptyCell")},function renderEmptyRowsPlaceholder(a){return"string"==typeof a?React.createElement(Text,{size:"s"},a):a}(C))),pb)};export var Table=React.forwardRef(InternalTable);
|
|
2
2
|
//# sourceMappingURL=Table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","names":["React","useEffect","useMemo","useComponentSize","useForkRef","IconSortDown","IconSortUp","IconUnsort","sortBy","sortByDefault","updateAt","cn","setRef","isNotNil","isString","Button","Text","TableCell","fieldFiltersPresent","filterTableData","getSelectedFiltersList","isSelectedFiltersPresent","useSelectedFilters","TableHeader","createSortingState","getColumnLeftOffset","getColumnsSize","getMergedArray","getNewSorting","Order","transformRows","useHeaderData","useLazyLoadData","TableResizer","TableRowsCollapse","TableSelectedOptionsList","TableTextFilter","TableFilterContainer","TableNumberFilter","TableChoiceGroupFilter","cnTable","sizes","zebraStriped","headerVerticalAligns","createButtonSizeMap","s","m","l","getColumnSortByField","column","sortable","sortByField","accessor","sortingData","rows","sorting","onSortBy","sortedRows","by","order","sortFn","some","row","length","map","defaultEmptyRowsPlaceholder","InternalTable","props","ref","columns","size","rawFilters","filters","isResizable","stickyHeader","stickyColumns","minColumnWidth","activeRow","verticalAlign","headerVerticalAlign","borderBetweenRows","borderBetweenColumns","emptyRowsPlaceholder","defaultExpandAll","className","onRowHover","onRowClick","onRowCreate","onCellClick","getAdditionalClassName","rowCreateText","lazyLoad","onFiltersUpdated","getTagLabel","getCellWrap","isExpandedRowsByDefault","otherProps","headers","flattenedHeaders","lowHeaders","headerRowsRefs","headerRowsHeights","resizerTopOffsets","stickyColumnsGrid","position","gridIndex","colSpan","getColumnsWidth","width","useState","resizedColumnWidths","setResizedColumnWidths","filter","id","field","initialColumnWidths","setInitialColumnWidths","setSorting","visibleFilter","setVisibleFilter","top","left","tableScroll","setTableScroll","tableRef","useRef","columnsRefs","cellsRefs","selectedFilters","updateSelectedFilters","removeOneSelectedFilter","removeAllSelectedFilters","expandedRowIds","setExpandedRowIds","sortingColumn","find","col","Object","prototype","hasOwnProperty","call","sortingState","tableHeight","current","clientHeight","tableWidth","clientWidth","showVerticalCellShadow","showHorizontalCellShadow","isRowsClickable","onChange","updateColumnWidth","idx","newWidth","overallColumnsWidth","columnsElements","values","columnsElementsWidths","el","getBoundingClientRect","resultArr","reduce","a","b","useLayoutEffect","isSortedByColumn","getStickyLeftOffset","columnIndex","topHeaderGridIndex","handleSelectRow","e","handleRowHover","handleRowCreate","index","handleColumnResize","delta","columnMinWidth","Math","min","prevColumnWidth","newColumnWidth","max","containerEl","scrollBy","stickyColumnsWidth","columnsWithMetaData","resizedColumnWidth","initialColumnWidth","columnWidth","columnLeftOffset","isSticky","showResizer","isFilterActive","selected","filterable","isSortingActive","isResized","headersWithMetaData","hasNestedRows","sortedTableData","filteredData","data","maxVisibleRows","scrollableEl","getSlicedRows","setBoundaryRef","flatRowsData","rowsData","tableStyle","hasMergedCells","header","mergeCells","handleExpandRow","includes","prevState","rowId","getCollapseRollProps","columnIdx","withCollapseButton","baseProps","level","isExpandedByDefault","isExpanded","toggleCollapse","getExpandedRows","expandedIds","forEach","defaultExpand","push","ids","indexOf","renderCell","cellContent","collapseRollProps","bottomCreateRowButton","rowsLength","slice","pop","lastRowId","getTableCellProps","rowIdx","getComparisonValue","previousCell","currentCell","result","rowSpan","show","style","nextCell","i","handleCellClick","params","withBorderBottom","handleScroll","target","HTMLElement","scrollTop","scrollLeft","type","getSortIcon","handleSortClick","newSorting","sortProps","sortingBy","sortOrder","handleFilterTogglerClick","handleTooltipSave","tooltipSelectedFilters","value","removeSelectedFilter","tableFilters","resetSelectedFilters","nth","withMergedCells","isActive","isDarkned","isMerged","renderEmptyRowsPlaceholder","placeholder","Table","forwardRef"],"sources":["../../../../../src/components/Table/Table.tsx"],"sourcesContent":["import './Table.css';\n\nimport React, { useEffect, useMemo } from 'react';\n\nimport { useComponentSize } from '../../hooks/useComponentSize/useComponentSize';\nimport { useForkRef } from '../../hooks/useForkRef/useForkRef';\nimport { IconSortDown } from '../../icons/IconSortDown/IconSortDown';\nimport { IconSortUp } from '../../icons/IconSortUp/IconSortUp';\nimport { IconUnsort } from '../../icons/IconUnsort/IconUnsort';\nimport { sortBy as sortByDefault, updateAt } from '../../utils/array';\nimport { cn } from '../../utils/bem';\nimport { setRef } from '../../utils/setRef';\nimport { isNotNil, isString } from '../../utils/type-guards';\nimport { Button, ButtonPropSize } from '../Button/Button';\nimport { Text } from '../Text/Text';\nimport { HorizontalAlign, TableCell, VerticalAlign } from './Cell/TableCell';\nimport {\n fieldFiltersPresent,\n FieldSelectedValues,\n Filters,\n filterTableData,\n getSelectedFiltersList,\n isSelectedFiltersPresent,\n onSortBy,\n SelectedFilters,\n useSelectedFilters,\n} from './filtering';\nimport { TableHeader } from './Header/TableHeader';\nimport {\n createSortingState,\n getColumnLeftOffset,\n getColumnsSize,\n getMergedArray,\n getNewSorting,\n Header,\n Order,\n OrderType,\n Position,\n transformRows,\n useHeaderData,\n useLazyLoadData,\n} from './helpers';\nimport { TableResizer } from './Resizer/TableResizer';\nimport {\n Props as TableRowsCollapseProps,\n TableRowsCollapse,\n} from './RowsCollapse/TableRowsCollapse';\nimport {\n GetTagLabel,\n TableSelectedOptionsList,\n} from './SelectedOptionsList/TableSelectedOptionsList';\n\nexport { TableTextFilter } from './TextFilter/TableTextFilter';\nexport { TableFilterContainer } from './FilterContainer/TableFilterContainer';\nexport { TableNumberFilter } from './NumberFilter/TableNumberFilter';\nexport { TableChoiceGroupFilter } from './ChoiceGroupFilter/TableChoiceGroupFilter';\n\nconst cnTable = cn('Table');\n\nexport const sizes = ['s', 'm', 'l'] as const;\ntype Size = typeof sizes[number];\n\nexport const zebraStriped = ['odd', 'even'] as const;\ntype ZebraStriped = typeof zebraStriped[number];\n\nexport const headerVerticalAligns = ['center', 'bottom'] as const;\nexport type HeaderVerticalAlign = typeof headerVerticalAligns[number];\n\nconst createButtonSizeMap: Record<Size, ButtonPropSize> = {\n s: 'xs',\n m: 's',\n l: 'm',\n};\n\ntype TableCSSCustomProperty = {\n '--table-width': string;\n '--table-grid-template-columns': string;\n};\n\nexport type LazyLoad =\n | {\n maxVisibleRows?: number;\n scrollableEl?: HTMLDivElement | Window;\n }\n | undefined;\n\ntype ActiveRow = {\n id: string | undefined;\n onChange: ({\n id,\n e,\n }: {\n id: string | undefined;\n e?: React.SyntheticEvent;\n }) => void;\n};\n\ntype onRowHover = ({\n id,\n e,\n}: {\n id: string | undefined;\n e: React.MouseEvent;\n}) => void;\n\ntype onRowClick = ({ id, e }: { id: string; e: React.MouseEvent }) => void;\n\ntype onRowCreate = ({\n id,\n index,\n e,\n}: {\n id?: string;\n index: number;\n e: React.MouseEvent;\n}) => void;\n\nexport type CellClickType = 'click' | 'contextMenu';\n\nexport type onCellClick = ({\n e,\n type,\n rowId,\n columnIdx,\n ref,\n}: {\n e: React.SyntheticEvent;\n type: CellClickType;\n columnIdx: number;\n ref: React.RefObject<HTMLDivElement>;\n rowId?: string;\n}) => void;\n\nexport type TableRow = {\n id: string;\n defaultExpand?: boolean;\n rows?: TableRow[];\n};\n\nexport type TableTreeRow<T extends TableRow> = {\n level: number;\n parentId?: string;\n} & T;\n\nexport type TableFilters<T extends TableRow> = Filters<T>;\n\nexport type RowField<T extends TableRow> = Exclude<keyof T, symbol | number>;\n\nexport type ColumnWidth = number | undefined;\n\nexport type ValueOf<T> = T[keyof T];\n\ntype ColumnBase<T extends TableRow> = ValueOf<{\n [K in keyof T]: {\n accessor: K extends string ? K : never;\n sortable?: boolean;\n sortByField?: keyof T;\n order?: OrderType;\n sortFn?(a: T[K], b: T[K]): number;\n renderCell?: (row: T) => React.ReactNode;\n getComparisonValue?: (cell: T[K]) => number | string;\n };\n}>;\ntype SingleColumnAddition<T extends TableRow> = ColumnBase<T> & {\n columns?: never;\n};\ntype GroupColumnAddition<T extends TableRow> = {\n columns: TableColumn<T>[];\n} & {\n // eslint-disable-next-line no-unused-vars\n [K in keyof ColumnBase<T>]?: never;\n};\nexport interface TableControl<T extends TableRow> {\n column: Header<T> & ColumnMetaData;\n}\n\nexport type SortByProps<T extends TableRow> = {\n sortingBy: keyof T;\n sortOrder: 'asc' | 'desc';\n};\n\nexport type TableColumn<T extends TableRow> = {\n title: React.ReactNode;\n align?: HorizontalAlign;\n withoutPadding?: boolean;\n width?: ColumnWidth;\n mergeCells?: boolean;\n position?: Position;\n hidden?: boolean;\n control?: ({ column }: TableControl<T>) => React.ReactNode;\n} & (GroupColumnAddition<T> | SingleColumnAddition<T>);\n\nexport type TableProps<T extends TableRow> = {\n columns: TableColumn<T>[];\n rows: T[];\n isResizable?: boolean;\n filters?: Filters<T>;\n onSortBy?: onSortBy<T>;\n size?: Size;\n stickyHeader?: boolean;\n stickyColumns?: number;\n minColumnWidth?: number;\n activeRow?: ActiveRow;\n verticalAlign?: VerticalAlign;\n headerVerticalAlign?: HeaderVerticalAlign;\n zebraStriped?: ZebraStriped;\n borderBetweenRows?: boolean;\n defaultExpandAll?: boolean;\n borderBetweenColumns?: boolean;\n emptyRowsPlaceholder?: React.ReactNode;\n className?: string;\n onRowHover?: onRowHover;\n onRowClick?: onRowClick;\n onRowCreate?: onRowCreate;\n onCellClick?: onCellClick;\n getAdditionalClassName?: (props: {\n column: TableColumn<T>;\n row: T;\n isActive: boolean;\n }) => string;\n rowCreateText?: string;\n lazyLoad?: LazyLoad;\n onFiltersUpdated?: (filters: SelectedFilters) => void;\n getTagLabel?: GetTagLabel;\n isExpandedRowsByDefault?: boolean;\n getCellWrap?: (row: T) => 'truncate' | 'break';\n};\n\ntype Table = <T extends TableRow>(\n props: TableProps<T> & { ref?: React.Ref<HTMLDivElement> },\n) => React.ReactElement | null;\n\nexport type ColumnMetaData = {\n filterable: boolean;\n isSortingActive: boolean;\n isFilterActive: boolean;\n isResized: boolean;\n isSticky: boolean;\n showResizer: boolean;\n columnWidth: number;\n columnLeftOffset: number;\n};\n\nexport type SortingState<T extends TableRow> = {\n by: keyof T;\n order: 'asc' | 'desc';\n sortFn?: (a: T[keyof T], b: T[keyof T]) => number;\n} | null;\n\ntype GetTableCellProps = {\n show: boolean;\n rowSpan: number;\n style: {\n 'left'?: number;\n '--row-span'?: string;\n };\n};\n\nconst getColumnSortByField = <T extends TableRow>(\n column: TableColumn<T>,\n): keyof T => (column.sortable && column.sortByField) || column.accessor!;\n\nconst sortingData = <T extends TableRow>(\n rows: T[],\n sorting: SortingState<T>,\n onSortBy?: onSortBy<T>,\n): T[] => {\n if (onSortBy) {\n return rows;\n }\n\n if (!sorting) {\n return rows;\n }\n const sortedRows = sortByDefault(\n rows,\n sorting.by,\n sorting.order,\n sorting.sortFn,\n );\n\n if (sortedRows.some((row) => row.rows?.length)) {\n return sortedRows.map((row) => {\n return row.rows\n ? { ...row, rows: sortingData(row.rows as T[], sorting, onSortBy) }\n : row;\n });\n }\n\n return sortedRows;\n};\n\nconst defaultEmptyRowsPlaceholder = (\n <Text as=\"span\" view=\"primary\" size=\"s\" lineHeight=\"s\">\n Нет данных\n </Text>\n);\n\nconst InternalTable = <T extends TableRow>(\n props: TableProps<T>,\n ref?: React.Ref<HTMLDivElement>,\n) => {\n const {\n columns,\n rows,\n size = 'l',\n filters: rawFilters,\n isResizable = false,\n stickyHeader = false,\n stickyColumns = 0,\n minColumnWidth = 150,\n activeRow,\n verticalAlign = 'top',\n headerVerticalAlign = 'center',\n zebraStriped,\n borderBetweenRows = false,\n borderBetweenColumns = false,\n emptyRowsPlaceholder = defaultEmptyRowsPlaceholder,\n defaultExpandAll,\n className,\n onRowHover,\n onRowClick,\n onRowCreate,\n onCellClick,\n getAdditionalClassName,\n rowCreateText = '+ Добавить строку',\n lazyLoad,\n onSortBy,\n onFiltersUpdated,\n getTagLabel,\n getCellWrap,\n isExpandedRowsByDefault = false,\n ...otherProps\n } = props;\n const {\n headers,\n flattenedHeaders,\n lowHeaders,\n headerRowsRefs,\n headerRowsHeights,\n resizerTopOffsets,\n } = useHeaderData(columns);\n const stickyColumnsGrid =\n // eslint-disable-next-line no-unsafe-optional-chaining\n headers[0][stickyColumns - 1]?.position.gridIndex! +\n (headers[0][stickyColumns - 1]?.position.colSpan || 1);\n\n const getColumnsWidth = () =>\n lowHeaders.map((column: TableColumn<T>) => column.width);\n const [resizedColumnWidths, setResizedColumnWidths] = React.useState<\n ColumnWidth[]\n >(getColumnsWidth());\n\n const filters = React.useMemo(() => {\n return (\n rawFilters && rawFilters.filter((filter) => filter.id && filter.field)\n );\n }, [rawFilters]);\n\n React.useEffect(() => {\n setResizedColumnWidths(getColumnsWidth());\n }, [lowHeaders.length]);\n\n const [initialColumnWidths, setInitialColumnWidths] = React.useState<\n number[]\n >([]);\n const [sorting, setSorting] = React.useState<SortingState<T>>(null);\n const [visibleFilter, setVisibleFilter] = React.useState<string | null>(null);\n const [tableScroll, setTableScroll] = React.useState({ top: 0, left: 0 });\n\n const tableRef = React.useRef<HTMLDivElement>(null);\n const columnsRefs = React.useRef<Record<number, HTMLDivElement | null>>({});\n const cellsRefs = React.useRef<Record<string, HTMLDivElement | null>>({});\n const {\n selectedFilters,\n updateSelectedFilters,\n removeOneSelectedFilter,\n removeAllSelectedFilters,\n } = useSelectedFilters(filters, onFiltersUpdated);\n const [expandedRowIds, setExpandedRowIds] = React.useState<string[]>([]);\n\n // установка сортировки по умолчанию\n\n React.useEffect(() => {\n const sortingColumn = columns.find(\n (col) =>\n isString(col.order) &&\n Object.prototype.hasOwnProperty.call(Order, col.order),\n );\n if (sortingColumn) {\n const sortingState = createSortingState(\n getColumnSortByField(sortingColumn),\n sortingColumn.order,\n sortingColumn.sortFn,\n );\n setSorting(sortingState);\n }\n }, [columns]);\n\n /*\n Подписываемся на изменения размеров таблицы, но не используем значения из\n хука так как нам нужна ширина и высота таблицы без размера скролла. Этот хук\n использует значения `offsetWidth` и `offsetHeight` которые включают размер\n скролл бара.\n */\n useComponentSize(tableRef);\n const tableHeight = tableRef.current?.clientHeight || 0;\n const tableWidth = tableRef.current?.clientWidth || 0;\n\n const showVerticalCellShadow = tableScroll.left > 0;\n const showHorizontalCellShadow = tableScroll.top > 0;\n const isRowsClickable = activeRow && activeRow.onChange;\n\n const updateColumnWidth = (idx: number, newWidth: number): void => {\n setResizedColumnWidths(updateAt(resizedColumnWidths, idx, newWidth));\n };\n\n const overallColumnsWidth = useMemo(() => {\n const columnsElements = Object.values(columnsRefs.current).filter(isNotNil);\n const columnsElementsWidths = columnsElements.map(\n (el) => el.getBoundingClientRect().width,\n );\n const resultArr = getMergedArray(\n columnsElementsWidths,\n resizedColumnWidths,\n );\n return resultArr.reduce((a, b) => (a ?? 0) + (b ?? 0));\n }, [resizedColumnWidths, isResizable]);\n\n React.useLayoutEffect(() => {\n const columnsElements = Object.values(columnsRefs.current).filter(isNotNil);\n if (columnsElements.length === 0) return;\n\n const columnsElementsWidths = columnsElements.map(\n (el) => el.getBoundingClientRect().width,\n );\n setInitialColumnWidths(columnsElementsWidths);\n\n // Проверяем, что таблица отрисовалась корректно, и устанавливаем значения ширин колонок после 1го и последующих рендера\n if (\n columnsElements[0].getBoundingClientRect().left !==\n columnsElements[columnsElements.length - 1].getBoundingClientRect().left\n ) {\n const resultArr = getMergedArray(\n columnsElementsWidths,\n resizedColumnWidths,\n );\n // Выставляю в undefined так как если вычеслять значение для последней колонки так,\n // чтобы заполнялось все свободное пространство, при изменении ширины таблицы в меньшую сторону\n // ширина последней колонки изменяться не будет, а так она будет css'ом проставляться в auto\n if ((overallColumnsWidth ?? tableWidth) < tableWidth) {\n resultArr[resultArr.length - 1] = undefined;\n }\n return setResizedColumnWidths(resultArr);\n }\n\n // условие изменения ширины колонок при изменении ширины экрана (контейнера таблицы)\n if (tableWidth > 0 && !isResizable) {\n return setResizedColumnWidths(getColumnsWidth());\n }\n }, [tableWidth, overallColumnsWidth]);\n\n const isSortedByColumn = (column: TableColumn<T>): boolean =>\n getColumnSortByField(column) === sorting?.by;\n\n const getSortIcon = (column: TableColumn<T>) => {\n return (\n (isSortedByColumn(column) &&\n (sorting?.order === 'desc' ? IconSortDown : IconSortUp)) ||\n IconUnsort\n );\n };\n\n const handleSortClick = (column: TableColumn<T>): void => {\n const newSorting = getNewSorting(\n sorting,\n getColumnSortByField(column),\n (column.sortable && column?.sortFn) || undefined,\n );\n\n const sortProps = newSorting\n ? {\n sortingBy: newSorting.by,\n sortOrder: newSorting.order,\n }\n : null;\n onSortBy && onSortBy(sortProps);\n setSorting(newSorting);\n };\n\n const handleFilterTogglerClick = (id: string) => (): void => {\n setVisibleFilter(visibleFilter === id ? null : id);\n };\n\n const handleTooltipSave = (\n field: string,\n tooltipSelectedFilters: FieldSelectedValues,\n value?: unknown,\n ): void => {\n updateSelectedFilters(field, tooltipSelectedFilters, value);\n };\n\n const removeSelectedFilter =\n (tableFilters: Filters<T>) =>\n (filter: string): void => {\n removeOneSelectedFilter(tableFilters, filter);\n };\n\n const resetSelectedFilters = (): void => {\n if (filters && filters.length) {\n removeAllSelectedFilters(filters);\n }\n };\n\n const getStickyLeftOffset = (\n columnIndex: number,\n topHeaderGridIndex: number,\n ): number | undefined => {\n if (topHeaderGridIndex >= stickyColumns) {\n return;\n }\n\n return getColumnLeftOffset({\n columnIndex,\n resizedColumnWidths,\n initialColumnWidths,\n });\n };\n\n const handleScroll: React.UIEventHandler = (e) => {\n if (!(e.target instanceof HTMLElement) || e.target !== tableRef.current) {\n return;\n }\n\n setTableScroll({\n top: e.target.scrollTop,\n left: e.target.scrollLeft,\n });\n };\n\n const handleSelectRow = ({\n id,\n e,\n }: {\n id: string;\n e: React.SyntheticEvent;\n }): void | undefined => {\n if (!activeRow || !activeRow.onChange) {\n return;\n }\n\n activeRow.onChange({ id: activeRow.id === id ? undefined : id, e });\n };\n\n const handleRowHover = (id?: string) => (e: React.MouseEvent) =>\n onRowHover && onRowHover({ id, e });\n\n const handleRowCreate =\n (index: number, id?: string) => (e: React.MouseEvent) =>\n onRowCreate && onRowCreate({ e, id, index });\n\n const handleColumnResize = (idx: number, delta: number): void => {\n const columnMinWidth = Math.min(minColumnWidth, initialColumnWidths[idx]);\n const prevColumnWidth =\n resizedColumnWidths[idx] || initialColumnWidths[idx];\n const newColumnWidth = Math.max(columnMinWidth, prevColumnWidth + delta);\n\n updateColumnWidth(idx, newColumnWidth);\n\n // При расширении последней колонки скроллим таблицу вправо\n const containerEl = tableRef.current;\n if (idx === resizedColumnWidths.length - 1 && delta > 0 && containerEl) {\n containerEl.scrollBy(delta, 0);\n }\n };\n\n const stickyColumnsWidth = getColumnLeftOffset({\n columnIndex: stickyColumns,\n resizedColumnWidths,\n initialColumnWidths,\n });\n\n const columnsWithMetaData = (columns: Array<Header<T>>) => {\n return columns.map((column: Header<T>) => {\n const columnIndex = column.position.gridIndex;\n const resizedColumnWidth = resizedColumnWidths[columnIndex];\n const initialColumnWidth = initialColumnWidths[columnIndex];\n const columnWidth = resizedColumnWidth || initialColumnWidth;\n const columnLeftOffset = getColumnLeftOffset({\n columnIndex,\n resizedColumnWidths,\n initialColumnWidths,\n });\n const isResized = !!columnWidth && columnWidth !== initialColumnWidth;\n const isSticky = stickyColumns > column.position!.topHeaderGridIndex;\n const showResizer =\n stickyColumns > columnIndex ||\n stickyColumnsWidth + tableScroll.left < columnLeftOffset + columnWidth;\n const isFilterActive =\n (selectedFilters[column.accessor!]?.selected || []).length > 0;\n\n return {\n ...column,\n filterable: Boolean(\n filters && fieldFiltersPresent(filters, column.accessor!),\n ),\n isSortingActive: isSortedByColumn(column),\n isFilterActive,\n isResized,\n isSticky,\n showResizer,\n columnWidth,\n columnLeftOffset,\n };\n });\n };\n\n const headersWithMetaData: Array<Header<T> & ColumnMetaData> =\n columnsWithMetaData(flattenedHeaders);\n\n const hasNestedRows = React.useMemo(\n () => rows.some((row) => Boolean(row.rows?.length)),\n [rows],\n );\n\n const sortedTableData = sortingData(rows, sorting, onSortBy);\n\n const filteredData =\n filters && isSelectedFiltersPresent(selectedFilters)\n ? filterTableData({\n data: sortedTableData,\n filters: filters || [],\n selectedFilters,\n })\n : sortedTableData;\n\n const { maxVisibleRows = 210, scrollableEl = tableRef.current } =\n lazyLoad || {};\n\n const { getSlicedRows, setBoundaryRef } = useLazyLoadData(\n maxVisibleRows,\n scrollableEl,\n !!lazyLoad,\n );\n\n const flatRowsData = transformRows(\n filteredData,\n expandedRowIds,\n isExpandedRowsByDefault,\n );\n const rowsData = getSlicedRows(flatRowsData);\n\n const tableStyle: React.CSSProperties & TableCSSCustomProperty = {\n '--table-grid-template-columns': getColumnsSize(resizedColumnWidths),\n '--table-width': `${tableWidth}px`,\n };\n\n const hasMergedCells: boolean = columnsWithMetaData(lowHeaders).some(\n (header) => header.mergeCells,\n );\n\n const handleExpandRow = (id: string): (() => void) => {\n return (): void => {\n if (expandedRowIds.includes(id)) {\n setExpandedRowIds((prevState) =>\n prevState.filter((rowId) => rowId !== id),\n );\n return;\n }\n setExpandedRowIds((prevState) => [...prevState, id]);\n };\n };\n\n const getCollapseRollProps = (\n row: TableTreeRow<T>,\n columnIdx: number,\n ): TableRowsCollapseProps => {\n const withCollapseButton = Boolean(row.rows?.length) && columnIdx === 0;\n\n const baseProps = {\n level: row.level,\n isExpandedByDefault: isExpandedRowsByDefault,\n };\n\n if (!withCollapseButton || isExpandedRowsByDefault) {\n return baseProps;\n }\n\n const isExpanded = expandedRowIds.includes(row.id);\n const toggleCollapse = handleExpandRow(row.id);\n\n return {\n ...baseProps,\n withCollapseButton,\n isExpanded,\n toggleCollapse,\n };\n };\n\n const getExpandedRows = (rows: T[], defaultExpandAll?: boolean): string[] => {\n let expandedIds: string[] = [];\n rows.forEach((row) => {\n if (\n row.defaultExpand ||\n ((row.rows?.length ?? 0) > 0 && defaultExpandAll)\n ) {\n expandedIds.push(row.id);\n }\n if (row.rows) {\n const ids = getExpandedRows(row.rows as T[], defaultExpandAll);\n expandedIds = [...expandedIds, ...ids];\n if (ids.length > 0 && expandedIds.indexOf(row.id) === -1) {\n expandedIds.push(row.id);\n }\n }\n });\n return expandedIds;\n };\n\n useEffect(() => {\n if (rows) {\n setExpandedRowIds(getExpandedRows(rows, defaultExpandAll));\n }\n }, [rows, defaultExpandAll]);\n\n const renderCell = (\n column: TableColumn<T>,\n row: T,\n columnIdx: number,\n ): React.ReactNode => {\n const cellContent = column.renderCell\n ? column.renderCell(row)\n : row[column.accessor!];\n\n if (!hasNestedRows || columnIdx !== 0) {\n return cellContent as React.ReactNode;\n }\n\n const collapseRollProps = getCollapseRollProps(\n row as TableTreeRow<T>,\n columnIdx,\n );\n\n return (\n <TableRowsCollapse {...collapseRollProps}>\n {cellContent as React.ReactNode}\n </TableRowsCollapse>\n );\n };\n\n const renderEmptyRowsPlaceholder = (\n placeholder: React.ReactNode,\n ): React.ReactNode => {\n return typeof placeholder === 'string' ? (\n <Text size=\"s\">{placeholder}</Text>\n ) : (\n placeholder\n );\n };\n\n const bottomCreateRowButton = useMemo(() => {\n const rowsLength = rowsData.length;\n /* Можно и rowsData[rowsLength - 1], но в таком случае TS не подскажет,\n что мы будем искать id в undefined это может привести к ошибке */\n const { id: lastRowId } = rowsData.slice(-1).pop() ?? {};\n\n if (!onRowCreate) {\n return null;\n }\n\n return (\n <div className={cnTable(rowsLength ? 'CreatRowCell' : 'RowWithoutCells')}>\n <Button\n size={createButtonSizeMap[size]}\n form=\"brick\"\n label={rowCreateText}\n view=\"clear\"\n className={cnTable('CreateRowButton')}\n onClick={handleRowCreate(rowsLength, lastRowId)}\n width=\"full\"\n />\n </div>\n );\n }, [rowCreateText, rowsData.length, onRowCreate]);\n\n const getTableCellProps = (\n row: TableTreeRow<T>,\n rowIdx: number,\n column: TableColumn<T>,\n columnIdx: number,\n ): GetTableCellProps => {\n const {\n mergeCells,\n accessor,\n position,\n getComparisonValue = (e) => e,\n } = column;\n\n const previousCell =\n rowsData[rowIdx - 1] &&\n getComparisonValue(rowsData[rowIdx - 1][accessor!]);\n const currentCell = getComparisonValue(row[accessor!]);\n\n const result: GetTableCellProps = {\n rowSpan: 1,\n show: false,\n style: {\n left: getStickyLeftOffset(columnIdx, position!.topHeaderGridIndex),\n },\n };\n\n if (\n mergeCells &&\n ((rowsData[rowIdx - 1] && previousCell !== currentCell) || rowIdx === 0)\n ) {\n for (let i = rowIdx; i < rowsData.length; i++) {\n if (rowsData[i + 1]) {\n const nextCell = getComparisonValue(rowsData[i + 1][accessor!]);\n\n if (currentCell === nextCell) {\n result.rowSpan++;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n\n if (result.rowSpan > 1) {\n result.style['--row-span'] = `span ${result.rowSpan}`;\n }\n\n result.show = true;\n }\n\n if (!mergeCells) {\n result.show = true;\n }\n\n return result;\n };\n\n const handleCellClick: onCellClick = (params) => {\n onCellClick?.(params);\n };\n\n return (\n <div\n {...otherProps}\n ref={useForkRef([tableRef, ref])}\n className={cnTable(\n {\n size,\n isResizable,\n zebraStriped,\n withBorderBottom: !filteredData.length,\n },\n [className],\n )}\n style={tableStyle}\n onScroll={handleScroll}\n >\n {/*\n Элементы Resizer рендерятся в отдельных ячейках нулевой высоты с шириной\n равной ширине колонки сетки, при этом у ячейки самый большой z-index в\n таблице чтобы элементы Resizer могли перекрывать ячейки заголовка и\n контента. Кроме того это позволяет зафиксировать вертикальное и\n горизонтальное положение Resizer, а также его высоту.\n\n Получение высоты Resizer элементов через свойство элемента таблицы\n scrollHeight не подходило, так как в таком случае Resizer растягивал\n таблицу по высоте, поэтому от этого способа отказались.\n */}\n {columnsWithMetaData(lowHeaders).map(\n (\n column: TableColumn<T> & { showResizer: boolean },\n columnIdx: number,\n ) => (\n <TableCell\n type=\"resizer\"\n key={columnIdx}\n ref={(ref: HTMLDivElement | null): void => {\n columnsRefs.current[columnIdx] = ref;\n }}\n style={{\n left: getStickyLeftOffset(columnIdx, columnIdx),\n }}\n onContextMenu={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'contextMenu',\n columnIdx,\n ref: { current: columnsRefs.current[columnIdx] },\n })\n }\n onClick={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'click',\n columnIdx,\n ref: { current: columnsRefs.current[columnIdx] },\n })\n }\n column={column}\n showVerticalShadow={showVerticalCellShadow}\n >\n {isResizable && (\n <TableResizer\n height={tableHeight - resizerTopOffsets[columnIdx]}\n top={resizerTopOffsets[columnIdx]}\n isVisible={column.showResizer}\n onResize={(delta): void => handleColumnResize(columnIdx, delta)}\n onDoubleClick={(): void =>\n updateColumnWidth(columnIdx, initialColumnWidths[columnIdx])\n }\n />\n )}\n </TableCell>\n ),\n )}\n <TableHeader\n isStickyHeader={stickyHeader}\n headersWithMetaData={headersWithMetaData}\n headerRowsHeights={headerRowsHeights}\n headerRowsRefs={headerRowsRefs}\n getStickyLeftOffset={getStickyLeftOffset}\n stickyColumnsGrid={stickyColumnsGrid}\n showVerticalCellShadow={showVerticalCellShadow}\n headerVerticalAlign={headerVerticalAlign}\n getSortIcon={getSortIcon}\n handleSortClick={handleSortClick}\n handleFilterTogglerClick={handleFilterTogglerClick}\n handleCellClick={handleCellClick}\n handleTooltipSave={handleTooltipSave}\n filters={filters}\n visibleFilter={visibleFilter}\n selectedFilters={selectedFilters}\n showHorizontalCellShadow={showHorizontalCellShadow}\n borderBetweenColumns={borderBetweenColumns}\n />\n {filters && isSelectedFiltersPresent(selectedFilters) && (\n <div className={cnTable('RowWithoutCells')}>\n <TableSelectedOptionsList\n values={getSelectedFiltersList({\n filters,\n selectedFilters,\n columns: lowHeaders,\n })}\n getTagLabel={getTagLabel}\n onRemove={removeSelectedFilter(filters)}\n onReset={resetSelectedFilters}\n />\n </div>\n )}\n {rowsData.length > 0 ? (\n rowsData.map((row, rowIdx) => {\n const nth = (rowIdx + 1) % 2 === 0 ? 'even' : 'odd';\n return (\n <div\n key={row.id}\n role=\"presentation\"\n className={cnTable('CellsRow', {\n nth,\n withMergedCells: hasMergedCells,\n })}\n onMouseEnter={handleRowHover(row.id)}\n onMouseLeave={handleRowHover(undefined)}\n onClick={(e) => onRowClick && onRowClick({ id: row.id, e })}\n >\n {columnsWithMetaData(lowHeaders).map(\n (column: TableColumn<T>, columnIdx: number) => {\n const { show, style, rowSpan } = getTableCellProps(\n row,\n rowIdx,\n column,\n columnIdx,\n );\n if (show) {\n return (\n <TableCell\n type=\"content\"\n key={column.accessor}\n ref={(ref: HTMLDivElement | null) => {\n cellsRefs.current[`${columnIdx}-${row.id}`] = ref;\n setRef(setBoundaryRef(columnIdx, rowIdx), ref);\n }}\n style={style}\n wrapperClassName={cnTable('ContentCell', {\n isActive: activeRow ? activeRow.id === row.id : false,\n isDarkned: activeRow\n ? activeRow.id !== undefined &&\n activeRow.id !== row.id\n : false,\n isMerged: column.mergeCells && rowSpan > 1,\n })}\n className={getAdditionalClassName?.({\n column,\n row,\n isActive: activeRow ? activeRow.id === row.id : false,\n })}\n wrap={getCellWrap?.(row)}\n onContextMenu={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'contextMenu',\n columnIdx,\n rowId: row.id,\n ref: {\n current:\n cellsRefs.current[`${columnIdx}-${row.id}`],\n },\n })\n }\n onClick={(e: React.SyntheticEvent): void => {\n handleSelectRow({ id: row.id, e });\n\n handleCellClick({\n e,\n type: 'click',\n columnIdx,\n rowId: row.id,\n ref: {\n current:\n cellsRefs.current[`${columnIdx}-${row.id}`],\n },\n });\n }}\n column={column}\n verticalAlign={verticalAlign}\n isClickable={!!isRowsClickable}\n showVerticalShadow={\n showVerticalCellShadow &&\n // eslint-disable-next-line no-unsafe-optional-chaining\n column?.position!.gridIndex! +\n (column?.position!.colSpan || 1) ===\n stickyColumnsGrid\n }\n isBorderTop={rowIdx > 0 && borderBetweenRows}\n isBorderLeft={columnIdx > 0 && borderBetweenColumns}\n >\n {renderCell(column, row, columnIdx)}\n </TableCell>\n );\n }\n return null;\n },\n )}\n </div>\n );\n })\n ) : (\n <div className={cnTable('RowWithoutCells')}>\n <div className={cnTable('EmptyCell')}>\n {renderEmptyRowsPlaceholder(emptyRowsPlaceholder)}\n </div>\n </div>\n )}\n {bottomCreateRowButton}\n </div>\n );\n};\n\nexport const Table = React.forwardRef(InternalTable) as Table;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Table.js","names":["React","useEffect","useMemo","useComponentSize","useForkRef","IconSortDown","IconSortUp","IconUnsort","sortBy","sortByDefault","updateAt","cn","setRef","isNotNil","isString","Button","Text","TableCell","fieldFiltersPresent","filterTableData","getSelectedFiltersList","isSelectedFiltersPresent","useSelectedFilters","TableHeader","createSortingState","getColumnLeftOffset","getColumnsSize","getMergedArray","getNewSorting","Order","transformRows","useHeaderData","useLazyLoadData","TableResizer","TableRowsCollapse","TableSelectedOptionsList","TableTextFilter","TableFilterContainer","TableNumberFilter","TableChoiceGroupFilter","cnTable","sizes","zebraStriped","headerVerticalAligns","createButtonSizeMap","s","m","l","getColumnSortByField","column","sortable","sortByField","accessor","sortingData","rows","sorting","onSortBy","sortedRows","by","order","sortFn","some","row","length","map","defaultEmptyRowsPlaceholder","InternalTable","props","ref","columns","size","rawFilters","filters","isResizable","stickyHeader","stickyColumns","minColumnWidth","activeRow","verticalAlign","headerVerticalAlign","borderBetweenRows","borderBetweenColumns","emptyRowsPlaceholder","defaultExpandAll","className","onRowHover","onRowClick","onRowCreate","onCellClick","getAdditionalClassName","rowCreateText","lazyLoad","onFiltersUpdated","getTagLabel","getCellWrap","isExpandedRowsByDefault","otherProps","headers","flattenedHeaders","lowHeaders","headerRowsRefs","headerRowsHeights","resizerTopOffsets","stickyColumnsGrid","position","gridIndex","colSpan","getColumnsWidth","width","useState","resizedColumnWidths","setResizedColumnWidths","filter","id","field","initialColumnWidths","setInitialColumnWidths","setSorting","visibleFilter","setVisibleFilter","top","left","tableScroll","setTableScroll","tableRef","useRef","columnsRefs","cellsRefs","selectedFilters","updateSelectedFilters","removeOneSelectedFilter","removeAllSelectedFilters","expandedRowIds","setExpandedRowIds","sortingColumn","find","col","Object","prototype","hasOwnProperty","call","sortingState","tableHeight","current","clientHeight","tableWidth","clientWidth","showVerticalCellShadow","showHorizontalCellShadow","isRowsClickable","onChange","updateColumnWidth","idx","newWidth","overallColumnsWidth","columnsElements","values","columnsElementsWidths","el","getBoundingClientRect","resultArr","reduce","a","b","useLayoutEffect","isSortedByColumn","getStickyLeftOffset","columnIndex","topHeaderGridIndex","handleSelectRow","e","handleRowHover","handleRowCreate","index","handleColumnResize","delta","columnMinWidth","Math","min","prevColumnWidth","newColumnWidth","max","containerEl","scrollBy","stickyColumnsWidth","columnsWithMetaData","resizedColumnWidth","initialColumnWidth","columnWidth","columnLeftOffset","isSticky","showResizer","isFilterActive","selected","filterable","isSortingActive","isResized","headersWithMetaData","hasNestedRows","sortedTableData","filteredData","data","maxVisibleRows","scrollableEl","getSlicedRows","setBoundaryRef","flatRowsData","rowsData","tableStyle","hasMergedCells","header","mergeCells","handleExpandRow","includes","prevState","rowId","getCollapseRollProps","columnIdx","withCollapseButton","baseProps","level","options","isExpandedByDefault","isExpanded","toggleCollapse","getExpandedRows","expandedIds","forEach","defaultExpand","push","ids","indexOf","renderCell","cellContent","collapseRollProps","bottomCreateRowButton","rowsLength","slice","pop","lastRowId","getTableCellProps","rowIdx","getComparisonValue","previousCell","currentCell","result","rowSpan","show","style","nextCell","i","handleCellClick","params","withBorderBottom","handleScroll","target","HTMLElement","scrollTop","scrollLeft","type","getSortIcon","handleSortClick","newSorting","sortProps","sortingBy","sortOrder","handleFilterTogglerClick","handleTooltipSave","tooltipSelectedFilters","value","removeSelectedFilter","tableFilters","resetSelectedFilters","nth","withMergedCells","isActive","isDarkned","isMerged","renderEmptyRowsPlaceholder","placeholder","Table","forwardRef"],"sources":["../../../../../src/components/Table/Table.tsx"],"sourcesContent":["import './Table.css';\n\nimport React, { useEffect, useMemo } from 'react';\n\nimport { useComponentSize } from '../../hooks/useComponentSize/useComponentSize';\nimport { useForkRef } from '../../hooks/useForkRef/useForkRef';\nimport { IconSortDown } from '../../icons/IconSortDown/IconSortDown';\nimport { IconSortUp } from '../../icons/IconSortUp/IconSortUp';\nimport { IconUnsort } from '../../icons/IconUnsort/IconUnsort';\nimport { sortBy as sortByDefault, updateAt } from '../../utils/array';\nimport { cn } from '../../utils/bem';\nimport { setRef } from '../../utils/setRef';\nimport { isNotNil, isString } from '../../utils/type-guards';\nimport { Button, ButtonPropSize } from '../Button/Button';\nimport { Text } from '../Text/Text';\nimport { HorizontalAlign, TableCell, VerticalAlign } from './Cell/TableCell';\nimport {\n fieldFiltersPresent,\n FieldSelectedValues,\n Filters,\n filterTableData,\n getSelectedFiltersList,\n isSelectedFiltersPresent,\n onSortBy,\n SelectedFilters,\n useSelectedFilters,\n} from './filtering';\nimport { TableHeader } from './Header/TableHeader';\nimport {\n createSortingState,\n getColumnLeftOffset,\n getColumnsSize,\n getMergedArray,\n getNewSorting,\n Header,\n Order,\n OrderType,\n Position,\n transformRows,\n useHeaderData,\n useLazyLoadData,\n} from './helpers';\nimport { TableResizer } from './Resizer/TableResizer';\nimport {\n Props as TableRowsCollapseProps,\n TableRowsCollapse,\n} from './RowsCollapse/TableRowsCollapse';\nimport {\n GetTagLabel,\n TableSelectedOptionsList,\n} from './SelectedOptionsList/TableSelectedOptionsList';\n\nexport { TableTextFilter } from './TextFilter/TableTextFilter';\nexport { TableFilterContainer } from './FilterContainer/TableFilterContainer';\nexport { TableNumberFilter } from './NumberFilter/TableNumberFilter';\nexport { TableChoiceGroupFilter } from './ChoiceGroupFilter/TableChoiceGroupFilter';\n\nconst cnTable = cn('Table');\n\nexport const sizes = ['s', 'm', 'l'] as const;\ntype Size = typeof sizes[number];\n\nexport const zebraStriped = ['odd', 'even'] as const;\ntype ZebraStriped = typeof zebraStriped[number];\n\nexport const headerVerticalAligns = ['center', 'bottom'] as const;\nexport type HeaderVerticalAlign = typeof headerVerticalAligns[number];\n\nconst createButtonSizeMap: Record<Size, ButtonPropSize> = {\n s: 'xs',\n m: 's',\n l: 'm',\n};\n\ntype TableCSSCustomProperty = {\n '--table-width': string;\n '--table-grid-template-columns': string;\n};\n\nexport type LazyLoad =\n | {\n maxVisibleRows?: number;\n scrollableEl?: HTMLDivElement | Window;\n }\n | undefined;\n\ntype ActiveRow = {\n id: string | undefined;\n onChange: ({\n id,\n e,\n }: {\n id: string | undefined;\n e?: React.SyntheticEvent;\n }) => void;\n};\n\ntype onRowHover = ({\n id,\n e,\n}: {\n id: string | undefined;\n e: React.MouseEvent;\n}) => void;\n\ntype onRowClick = ({ id, e }: { id: string; e: React.MouseEvent }) => void;\n\ntype onRowCreate = ({\n id,\n index,\n e,\n}: {\n id?: string;\n index: number;\n e: React.MouseEvent;\n}) => void;\n\nexport type CellClickType = 'click' | 'contextMenu';\n\nexport type onCellClick = ({\n e,\n type,\n rowId,\n columnIdx,\n ref,\n}: {\n e: React.SyntheticEvent;\n type: CellClickType;\n columnIdx: number;\n ref: React.RefObject<HTMLDivElement>;\n rowId?: string;\n}) => void;\n\nexport type TableRow = {\n id: string;\n defaultExpand?: boolean;\n rows?: TableRow[];\n};\n\nexport type TableTreeRow<T extends TableRow> = {\n options: {\n level: number;\n };\n} & T;\n\nexport type TableFilters<T extends TableRow> = Filters<T>;\n\nexport type RowField<T extends TableRow> = Exclude<keyof T, symbol | number>;\n\nexport type ColumnWidth = number | undefined;\n\nexport type ValueOf<T> = T[keyof T];\n\ntype ColumnBase<T extends TableRow> = ValueOf<{\n [K in keyof T]: {\n accessor: K extends string ? K : never;\n sortable?: boolean;\n sortByField?: keyof T;\n order?: OrderType;\n sortFn?(a: T[K], b: T[K]): number;\n renderCell?: (row: T) => React.ReactNode;\n getComparisonValue?: (cell: T[K]) => number | string;\n };\n}>;\ntype SingleColumnAddition<T extends TableRow> = ColumnBase<T> & {\n columns?: never;\n};\ntype GroupColumnAddition<T extends TableRow> = {\n columns: TableColumn<T>[];\n} & {\n // eslint-disable-next-line no-unused-vars\n [K in keyof ColumnBase<T>]?: never;\n};\nexport interface TableControl<T extends TableRow> {\n column: Header<T> & ColumnMetaData;\n}\n\nexport type SortByProps<T extends TableRow> = {\n sortingBy: keyof T;\n sortOrder: 'asc' | 'desc';\n};\n\nexport type TableColumn<T extends TableRow> = {\n title: React.ReactNode;\n align?: HorizontalAlign;\n withoutPadding?: boolean;\n width?: ColumnWidth;\n mergeCells?: boolean;\n position?: Position;\n hidden?: boolean;\n control?: ({ column }: TableControl<T>) => React.ReactNode;\n} & (GroupColumnAddition<T> | SingleColumnAddition<T>);\n\nexport type TableProps<T extends TableRow> = {\n columns: TableColumn<T>[];\n rows: T[];\n isResizable?: boolean;\n filters?: Filters<T>;\n onSortBy?: onSortBy<T>;\n size?: Size;\n stickyHeader?: boolean;\n stickyColumns?: number;\n minColumnWidth?: number;\n activeRow?: ActiveRow;\n verticalAlign?: VerticalAlign;\n headerVerticalAlign?: HeaderVerticalAlign;\n zebraStriped?: ZebraStriped;\n borderBetweenRows?: boolean;\n defaultExpandAll?: boolean;\n borderBetweenColumns?: boolean;\n emptyRowsPlaceholder?: React.ReactNode;\n className?: string;\n onRowHover?: onRowHover;\n onRowClick?: onRowClick;\n onRowCreate?: onRowCreate;\n onCellClick?: onCellClick;\n getAdditionalClassName?: (props: {\n column: TableColumn<T>;\n row: T;\n isActive: boolean;\n }) => string;\n rowCreateText?: string;\n lazyLoad?: LazyLoad;\n onFiltersUpdated?: (filters: SelectedFilters) => void;\n getTagLabel?: GetTagLabel;\n isExpandedRowsByDefault?: boolean;\n getCellWrap?: (row: T) => 'truncate' | 'break';\n};\n\ntype Table = <T extends TableRow>(\n props: TableProps<T> & { ref?: React.Ref<HTMLDivElement> },\n) => React.ReactElement | null;\n\nexport type ColumnMetaData = {\n filterable: boolean;\n isSortingActive: boolean;\n isFilterActive: boolean;\n isResized: boolean;\n isSticky: boolean;\n showResizer: boolean;\n columnWidth: number;\n columnLeftOffset: number;\n};\n\nexport type SortingState<T extends TableRow> = {\n by: keyof T;\n order: 'asc' | 'desc';\n sortFn?: (a: T[keyof T], b: T[keyof T]) => number;\n} | null;\n\ntype GetTableCellProps = {\n show: boolean;\n rowSpan: number;\n style: {\n 'left'?: number;\n '--row-span'?: string;\n };\n};\n\nconst getColumnSortByField = <T extends TableRow>(\n column: TableColumn<T>,\n): keyof T => (column.sortable && column.sortByField) || column.accessor!;\n\nconst sortingData = <T extends TableRow>(\n rows: T[],\n sorting: SortingState<T>,\n onSortBy?: onSortBy<T>,\n): T[] => {\n if (onSortBy) {\n return rows;\n }\n\n if (!sorting) {\n return rows;\n }\n const sortedRows = sortByDefault(\n rows,\n sorting.by,\n sorting.order,\n sorting.sortFn,\n );\n\n if (sortedRows.some((row) => row.rows?.length)) {\n return sortedRows.map((row) => {\n return row.rows\n ? { ...row, rows: sortingData(row.rows as T[], sorting, onSortBy) }\n : row;\n });\n }\n\n return sortedRows;\n};\n\nconst defaultEmptyRowsPlaceholder = (\n <Text as=\"span\" view=\"primary\" size=\"s\" lineHeight=\"s\">\n Нет данных\n </Text>\n);\n\nconst InternalTable = <T extends TableRow>(\n props: TableProps<T>,\n ref?: React.Ref<HTMLDivElement>,\n) => {\n const {\n columns,\n rows,\n size = 'l',\n filters: rawFilters,\n isResizable = false,\n stickyHeader = false,\n stickyColumns = 0,\n minColumnWidth = 150,\n activeRow,\n verticalAlign = 'top',\n headerVerticalAlign = 'center',\n zebraStriped,\n borderBetweenRows = false,\n borderBetweenColumns = false,\n emptyRowsPlaceholder = defaultEmptyRowsPlaceholder,\n defaultExpandAll,\n className,\n onRowHover,\n onRowClick,\n onRowCreate,\n onCellClick,\n getAdditionalClassName,\n rowCreateText = '+ Добавить строку',\n lazyLoad,\n onSortBy,\n onFiltersUpdated,\n getTagLabel,\n getCellWrap,\n isExpandedRowsByDefault = false,\n ...otherProps\n } = props;\n const {\n headers,\n flattenedHeaders,\n lowHeaders,\n headerRowsRefs,\n headerRowsHeights,\n resizerTopOffsets,\n } = useHeaderData(columns);\n const stickyColumnsGrid =\n // eslint-disable-next-line no-unsafe-optional-chaining\n headers[0][stickyColumns - 1]?.position.gridIndex! +\n (headers[0][stickyColumns - 1]?.position.colSpan || 1);\n\n const getColumnsWidth = () =>\n lowHeaders.map((column: TableColumn<T>) => column.width);\n const [resizedColumnWidths, setResizedColumnWidths] = React.useState<\n ColumnWidth[]\n >(getColumnsWidth());\n\n const filters = React.useMemo(() => {\n return (\n rawFilters && rawFilters.filter((filter) => filter.id && filter.field)\n );\n }, [rawFilters]);\n\n React.useEffect(() => {\n setResizedColumnWidths(getColumnsWidth());\n }, [lowHeaders.length]);\n\n const [initialColumnWidths, setInitialColumnWidths] = React.useState<\n number[]\n >([]);\n const [sorting, setSorting] = React.useState<SortingState<T>>(null);\n const [visibleFilter, setVisibleFilter] = React.useState<string | null>(null);\n const [tableScroll, setTableScroll] = React.useState({ top: 0, left: 0 });\n\n const tableRef = React.useRef<HTMLDivElement>(null);\n const columnsRefs = React.useRef<Record<number, HTMLDivElement | null>>({});\n const cellsRefs = React.useRef<Record<string, HTMLDivElement | null>>({});\n const {\n selectedFilters,\n updateSelectedFilters,\n removeOneSelectedFilter,\n removeAllSelectedFilters,\n } = useSelectedFilters(filters, onFiltersUpdated);\n const [expandedRowIds, setExpandedRowIds] = React.useState<string[]>([]);\n\n // установка сортировки по умолчанию\n\n React.useEffect(() => {\n const sortingColumn = columns.find(\n (col) =>\n isString(col.order) &&\n Object.prototype.hasOwnProperty.call(Order, col.order),\n );\n if (sortingColumn) {\n const sortingState = createSortingState(\n getColumnSortByField(sortingColumn),\n sortingColumn.order,\n sortingColumn.sortFn,\n );\n setSorting(sortingState);\n }\n }, [columns]);\n\n /*\n Подписываемся на изменения размеров таблицы, но не используем значения из\n хука так как нам нужна ширина и высота таблицы без размера скролла. Этот хук\n использует значения `offsetWidth` и `offsetHeight` которые включают размер\n скролл бара.\n */\n useComponentSize(tableRef);\n const tableHeight = tableRef.current?.clientHeight || 0;\n const tableWidth = tableRef.current?.clientWidth || 0;\n\n const showVerticalCellShadow = tableScroll.left > 0;\n const showHorizontalCellShadow = tableScroll.top > 0;\n const isRowsClickable = activeRow && activeRow.onChange;\n\n const updateColumnWidth = (idx: number, newWidth: number): void => {\n setResizedColumnWidths(updateAt(resizedColumnWidths, idx, newWidth));\n };\n\n const overallColumnsWidth = useMemo(() => {\n const columnsElements = Object.values(columnsRefs.current).filter(isNotNil);\n const columnsElementsWidths = columnsElements.map(\n (el) => el.getBoundingClientRect().width,\n );\n const resultArr = getMergedArray(\n columnsElementsWidths,\n resizedColumnWidths,\n );\n return resultArr.reduce((a, b) => (a ?? 0) + (b ?? 0));\n }, [resizedColumnWidths, isResizable]);\n\n React.useLayoutEffect(() => {\n const columnsElements = Object.values(columnsRefs.current).filter(isNotNil);\n if (columnsElements.length === 0) return;\n\n const columnsElementsWidths = columnsElements.map(\n (el) => el.getBoundingClientRect().width,\n );\n setInitialColumnWidths(columnsElementsWidths);\n\n // Проверяем, что таблица отрисовалась корректно, и устанавливаем значения ширин колонок после 1го и последующих рендера\n if (\n columnsElements[0].getBoundingClientRect().left !==\n columnsElements[columnsElements.length - 1].getBoundingClientRect().left\n ) {\n const resultArr = getMergedArray(\n columnsElementsWidths,\n resizedColumnWidths,\n );\n // Выставляю в undefined так как если вычеслять значение для последней колонки так,\n // чтобы заполнялось все свободное пространство, при изменении ширины таблицы в меньшую сторону\n // ширина последней колонки изменяться не будет, а так она будет css'ом проставляться в auto\n if ((overallColumnsWidth ?? tableWidth) < tableWidth) {\n resultArr[resultArr.length - 1] = undefined;\n }\n return setResizedColumnWidths(resultArr);\n }\n\n // условие изменения ширины колонок при изменении ширины экрана (контейнера таблицы)\n if (tableWidth > 0 && !isResizable) {\n return setResizedColumnWidths(getColumnsWidth());\n }\n }, [tableWidth, overallColumnsWidth]);\n\n const isSortedByColumn = (column: TableColumn<T>): boolean =>\n getColumnSortByField(column) === sorting?.by;\n\n const getSortIcon = (column: TableColumn<T>) => {\n return (\n (isSortedByColumn(column) &&\n (sorting?.order === 'desc' ? IconSortDown : IconSortUp)) ||\n IconUnsort\n );\n };\n\n const handleSortClick = (column: TableColumn<T>): void => {\n const newSorting = getNewSorting(\n sorting,\n getColumnSortByField(column),\n (column.sortable && column?.sortFn) || undefined,\n );\n\n const sortProps = newSorting\n ? {\n sortingBy: newSorting.by,\n sortOrder: newSorting.order,\n }\n : null;\n onSortBy && onSortBy(sortProps);\n setSorting(newSorting);\n };\n\n const handleFilterTogglerClick = (id: string) => (): void => {\n setVisibleFilter(visibleFilter === id ? null : id);\n };\n\n const handleTooltipSave = (\n field: string,\n tooltipSelectedFilters: FieldSelectedValues,\n value?: unknown,\n ): void => {\n updateSelectedFilters(field, tooltipSelectedFilters, value);\n };\n\n const removeSelectedFilter =\n (tableFilters: Filters<T>) =>\n (filter: string): void => {\n removeOneSelectedFilter(tableFilters, filter);\n };\n\n const resetSelectedFilters = (): void => {\n if (filters && filters.length) {\n removeAllSelectedFilters(filters);\n }\n };\n\n const getStickyLeftOffset = (\n columnIndex: number,\n topHeaderGridIndex: number,\n ): number | undefined => {\n if (topHeaderGridIndex >= stickyColumns) {\n return;\n }\n\n return getColumnLeftOffset({\n columnIndex,\n resizedColumnWidths,\n initialColumnWidths,\n });\n };\n\n const handleScroll: React.UIEventHandler = (e) => {\n if (!(e.target instanceof HTMLElement) || e.target !== tableRef.current) {\n return;\n }\n\n setTableScroll({\n top: e.target.scrollTop,\n left: e.target.scrollLeft,\n });\n };\n\n const handleSelectRow = ({\n id,\n e,\n }: {\n id: string;\n e: React.SyntheticEvent;\n }): void | undefined => {\n if (!activeRow || !activeRow.onChange) {\n return;\n }\n\n activeRow.onChange({ id: activeRow.id === id ? undefined : id, e });\n };\n\n const handleRowHover = (id?: string) => (e: React.MouseEvent) =>\n onRowHover && onRowHover({ id, e });\n\n const handleRowCreate =\n (index: number, id?: string) => (e: React.MouseEvent) =>\n onRowCreate && onRowCreate({ e, id, index });\n\n const handleColumnResize = (idx: number, delta: number): void => {\n const columnMinWidth = Math.min(minColumnWidth, initialColumnWidths[idx]);\n const prevColumnWidth =\n resizedColumnWidths[idx] || initialColumnWidths[idx];\n const newColumnWidth = Math.max(columnMinWidth, prevColumnWidth + delta);\n\n updateColumnWidth(idx, newColumnWidth);\n\n // При расширении последней колонки скроллим таблицу вправо\n const containerEl = tableRef.current;\n if (idx === resizedColumnWidths.length - 1 && delta > 0 && containerEl) {\n containerEl.scrollBy(delta, 0);\n }\n };\n\n const stickyColumnsWidth = getColumnLeftOffset({\n columnIndex: stickyColumns,\n resizedColumnWidths,\n initialColumnWidths,\n });\n\n const columnsWithMetaData = (columns: Array<Header<T>>) => {\n return columns.map((column: Header<T>) => {\n const columnIndex = column.position.gridIndex;\n const resizedColumnWidth = resizedColumnWidths[columnIndex];\n const initialColumnWidth = initialColumnWidths[columnIndex];\n const columnWidth = resizedColumnWidth || initialColumnWidth;\n const columnLeftOffset = getColumnLeftOffset({\n columnIndex,\n resizedColumnWidths,\n initialColumnWidths,\n });\n const isResized = !!columnWidth && columnWidth !== initialColumnWidth;\n const isSticky = stickyColumns > column.position!.topHeaderGridIndex;\n const showResizer =\n stickyColumns > columnIndex ||\n stickyColumnsWidth + tableScroll.left < columnLeftOffset + columnWidth;\n const isFilterActive =\n (selectedFilters[column.accessor!]?.selected || []).length > 0;\n\n return {\n ...column,\n filterable: Boolean(\n filters && fieldFiltersPresent(filters, column.accessor!),\n ),\n isSortingActive: isSortedByColumn(column),\n isFilterActive,\n isResized,\n isSticky,\n showResizer,\n columnWidth,\n columnLeftOffset,\n };\n });\n };\n\n const headersWithMetaData: Array<Header<T> & ColumnMetaData> =\n columnsWithMetaData(flattenedHeaders);\n\n const hasNestedRows = React.useMemo(\n () => rows.some((row) => Boolean(row.rows?.length)),\n [rows],\n );\n\n const sortedTableData = sortingData(rows, sorting, onSortBy);\n\n const filteredData =\n filters && isSelectedFiltersPresent(selectedFilters)\n ? filterTableData({\n data: sortedTableData,\n filters: filters || [],\n selectedFilters,\n })\n : sortedTableData;\n\n const { maxVisibleRows = 210, scrollableEl = tableRef.current } =\n lazyLoad || {};\n\n const { getSlicedRows, setBoundaryRef } = useLazyLoadData(\n maxVisibleRows,\n scrollableEl,\n !!lazyLoad,\n );\n\n const flatRowsData = transformRows(\n filteredData,\n expandedRowIds,\n isExpandedRowsByDefault,\n );\n const rowsData = getSlicedRows(flatRowsData);\n\n const tableStyle: React.CSSProperties & TableCSSCustomProperty = {\n '--table-grid-template-columns': getColumnsSize(resizedColumnWidths),\n '--table-width': `${tableWidth}px`,\n };\n\n const hasMergedCells: boolean = columnsWithMetaData(lowHeaders).some(\n (header) => header.mergeCells,\n );\n\n const handleExpandRow = (id: string): (() => void) => {\n return (): void => {\n if (expandedRowIds.includes(id)) {\n setExpandedRowIds((prevState) =>\n prevState.filter((rowId) => rowId !== id),\n );\n return;\n }\n setExpandedRowIds((prevState) => [...prevState, id]);\n };\n };\n\n const getCollapseRollProps = (\n row: TableTreeRow<T>,\n columnIdx: number,\n ): TableRowsCollapseProps => {\n const withCollapseButton = Boolean(row.rows?.length) && columnIdx === 0;\n\n const baseProps = {\n level: row.options.level,\n isExpandedByDefault: isExpandedRowsByDefault,\n };\n\n if (!withCollapseButton || isExpandedRowsByDefault) {\n return baseProps;\n }\n\n const isExpanded = expandedRowIds.includes(row.id);\n const toggleCollapse = handleExpandRow(row.id);\n\n return {\n ...baseProps,\n withCollapseButton,\n isExpanded,\n toggleCollapse,\n };\n };\n\n const getExpandedRows = (rows: T[], defaultExpandAll?: boolean): string[] => {\n let expandedIds: string[] = [];\n rows.forEach((row) => {\n if (\n row.defaultExpand ||\n ((row.rows?.length ?? 0) > 0 && defaultExpandAll)\n ) {\n expandedIds.push(row.id);\n }\n if (row.rows) {\n const ids = getExpandedRows(row.rows as T[], defaultExpandAll);\n expandedIds = [...expandedIds, ...ids];\n if (ids.length > 0 && expandedIds.indexOf(row.id) === -1) {\n expandedIds.push(row.id);\n }\n }\n });\n return expandedIds;\n };\n\n useEffect(() => {\n if (rows) {\n setExpandedRowIds(getExpandedRows(rows, defaultExpandAll));\n }\n }, [rows, defaultExpandAll]);\n\n const renderCell = (\n column: TableColumn<T>,\n row: T,\n columnIdx: number,\n ): React.ReactNode => {\n const cellContent = column.renderCell\n ? column.renderCell(row)\n : row[column.accessor!];\n\n if (!hasNestedRows || columnIdx !== 0) {\n return cellContent as React.ReactNode;\n }\n\n const collapseRollProps = getCollapseRollProps(\n row as TableTreeRow<T>,\n columnIdx,\n );\n\n return (\n <TableRowsCollapse {...collapseRollProps}>\n {cellContent as React.ReactNode}\n </TableRowsCollapse>\n );\n };\n\n const renderEmptyRowsPlaceholder = (\n placeholder: React.ReactNode,\n ): React.ReactNode => {\n return typeof placeholder === 'string' ? (\n <Text size=\"s\">{placeholder}</Text>\n ) : (\n placeholder\n );\n };\n\n const bottomCreateRowButton = useMemo(() => {\n const rowsLength = rowsData.length;\n /* Можно и rowsData[rowsLength - 1], но в таком случае TS не подскажет,\n что мы будем искать id в undefined это может привести к ошибке */\n const { id: lastRowId } = rowsData.slice(-1).pop() ?? {};\n\n if (!onRowCreate) {\n return null;\n }\n\n return (\n <div className={cnTable(rowsLength ? 'CreatRowCell' : 'RowWithoutCells')}>\n <Button\n size={createButtonSizeMap[size]}\n form=\"brick\"\n label={rowCreateText}\n view=\"clear\"\n className={cnTable('CreateRowButton')}\n onClick={handleRowCreate(rowsLength, lastRowId)}\n width=\"full\"\n />\n </div>\n );\n }, [rowCreateText, rowsData.length, onRowCreate]);\n\n const getTableCellProps = (\n row: TableTreeRow<T>,\n rowIdx: number,\n column: TableColumn<T>,\n columnIdx: number,\n ): GetTableCellProps => {\n const {\n mergeCells,\n accessor,\n position,\n getComparisonValue = (e) => e,\n } = column;\n\n const previousCell =\n rowsData[rowIdx - 1] &&\n getComparisonValue(rowsData[rowIdx - 1][accessor!]);\n const currentCell = getComparisonValue(row[accessor!]);\n\n const result: GetTableCellProps = {\n rowSpan: 1,\n show: false,\n style: {\n left: getStickyLeftOffset(columnIdx, position!.topHeaderGridIndex),\n },\n };\n\n if (\n mergeCells &&\n ((rowsData[rowIdx - 1] && previousCell !== currentCell) || rowIdx === 0)\n ) {\n for (let i = rowIdx; i < rowsData.length; i++) {\n if (rowsData[i + 1]) {\n const nextCell = getComparisonValue(rowsData[i + 1][accessor!]);\n\n if (currentCell === nextCell) {\n result.rowSpan++;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n\n if (result.rowSpan > 1) {\n result.style['--row-span'] = `span ${result.rowSpan}`;\n }\n\n result.show = true;\n }\n\n if (!mergeCells) {\n result.show = true;\n }\n\n return result;\n };\n\n const handleCellClick: onCellClick = (params) => {\n onCellClick?.(params);\n };\n\n return (\n <div\n {...otherProps}\n ref={useForkRef([tableRef, ref])}\n className={cnTable(\n {\n size,\n isResizable,\n zebraStriped,\n withBorderBottom: !filteredData.length,\n },\n [className],\n )}\n style={tableStyle}\n onScroll={handleScroll}\n >\n {/*\n Элементы Resizer рендерятся в отдельных ячейках нулевой высоты с шириной\n равной ширине колонки сетки, при этом у ячейки самый большой z-index в\n таблице чтобы элементы Resizer могли перекрывать ячейки заголовка и\n контента. Кроме того это позволяет зафиксировать вертикальное и\n горизонтальное положение Resizer, а также его высоту.\n\n Получение высоты Resizer элементов через свойство элемента таблицы\n scrollHeight не подходило, так как в таком случае Resizer растягивал\n таблицу по высоте, поэтому от этого способа отказались.\n */}\n {columnsWithMetaData(lowHeaders).map(\n (\n column: TableColumn<T> & { showResizer: boolean },\n columnIdx: number,\n ) => (\n <TableCell\n type=\"resizer\"\n key={columnIdx}\n ref={(ref: HTMLDivElement | null): void => {\n columnsRefs.current[columnIdx] = ref;\n }}\n style={{\n left: getStickyLeftOffset(columnIdx, columnIdx),\n }}\n onContextMenu={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'contextMenu',\n columnIdx,\n ref: { current: columnsRefs.current[columnIdx] },\n })\n }\n onClick={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'click',\n columnIdx,\n ref: { current: columnsRefs.current[columnIdx] },\n })\n }\n column={column}\n showVerticalShadow={showVerticalCellShadow}\n >\n {isResizable && (\n <TableResizer\n height={tableHeight - resizerTopOffsets[columnIdx]}\n top={resizerTopOffsets[columnIdx]}\n isVisible={column.showResizer}\n onResize={(delta): void => handleColumnResize(columnIdx, delta)}\n onDoubleClick={(): void =>\n updateColumnWidth(columnIdx, initialColumnWidths[columnIdx])\n }\n />\n )}\n </TableCell>\n ),\n )}\n <TableHeader\n isStickyHeader={stickyHeader}\n headersWithMetaData={headersWithMetaData}\n headerRowsHeights={headerRowsHeights}\n headerRowsRefs={headerRowsRefs}\n getStickyLeftOffset={getStickyLeftOffset}\n stickyColumnsGrid={stickyColumnsGrid}\n showVerticalCellShadow={showVerticalCellShadow}\n headerVerticalAlign={headerVerticalAlign}\n getSortIcon={getSortIcon}\n handleSortClick={handleSortClick}\n handleFilterTogglerClick={handleFilterTogglerClick}\n handleCellClick={handleCellClick}\n handleTooltipSave={handleTooltipSave}\n filters={filters}\n visibleFilter={visibleFilter}\n selectedFilters={selectedFilters}\n showHorizontalCellShadow={showHorizontalCellShadow}\n borderBetweenColumns={borderBetweenColumns}\n />\n {filters && isSelectedFiltersPresent(selectedFilters) && (\n <div className={cnTable('RowWithoutCells')}>\n <TableSelectedOptionsList\n values={getSelectedFiltersList({\n filters,\n selectedFilters,\n columns: lowHeaders,\n })}\n getTagLabel={getTagLabel}\n onRemove={removeSelectedFilter(filters)}\n onReset={resetSelectedFilters}\n />\n </div>\n )}\n {rowsData.length > 0 ? (\n rowsData.map((row, rowIdx) => {\n const nth = (rowIdx + 1) % 2 === 0 ? 'even' : 'odd';\n return (\n <div\n key={row.id}\n role=\"presentation\"\n className={cnTable('CellsRow', {\n nth,\n withMergedCells: hasMergedCells,\n })}\n onMouseEnter={handleRowHover(row.id)}\n onMouseLeave={handleRowHover(undefined)}\n onClick={(e) => onRowClick && onRowClick({ id: row.id, e })}\n >\n {columnsWithMetaData(lowHeaders).map(\n (column: TableColumn<T>, columnIdx: number) => {\n const { show, style, rowSpan } = getTableCellProps(\n row,\n rowIdx,\n column,\n columnIdx,\n );\n if (show) {\n return (\n <TableCell\n type=\"content\"\n key={column.accessor}\n ref={(ref: HTMLDivElement | null) => {\n cellsRefs.current[`${columnIdx}-${row.id}`] = ref;\n setRef(setBoundaryRef(columnIdx, rowIdx), ref);\n }}\n style={style}\n wrapperClassName={cnTable('ContentCell', {\n isActive: activeRow ? activeRow.id === row.id : false,\n isDarkned: activeRow\n ? activeRow.id !== undefined &&\n activeRow.id !== row.id\n : false,\n isMerged: column.mergeCells && rowSpan > 1,\n })}\n className={getAdditionalClassName?.({\n column,\n row,\n isActive: activeRow ? activeRow.id === row.id : false,\n })}\n wrap={getCellWrap?.(row)}\n onContextMenu={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'contextMenu',\n columnIdx,\n rowId: row.id,\n ref: {\n current:\n cellsRefs.current[`${columnIdx}-${row.id}`],\n },\n })\n }\n onClick={(e: React.SyntheticEvent): void => {\n handleSelectRow({ id: row.id, e });\n\n handleCellClick({\n e,\n type: 'click',\n columnIdx,\n rowId: row.id,\n ref: {\n current:\n cellsRefs.current[`${columnIdx}-${row.id}`],\n },\n });\n }}\n column={column}\n verticalAlign={verticalAlign}\n isClickable={!!isRowsClickable}\n showVerticalShadow={\n showVerticalCellShadow &&\n // eslint-disable-next-line no-unsafe-optional-chaining\n column?.position!.gridIndex! +\n (column?.position!.colSpan || 1) ===\n stickyColumnsGrid\n }\n isBorderTop={rowIdx > 0 && borderBetweenRows}\n isBorderLeft={columnIdx > 0 && borderBetweenColumns}\n >\n {renderCell(column, row, columnIdx)}\n </TableCell>\n );\n }\n return null;\n },\n )}\n </div>\n );\n })\n ) : (\n <div className={cnTable('RowWithoutCells')}>\n <div className={cnTable('EmptyCell')}>\n {renderEmptyRowsPlaceholder(emptyRowsPlaceholder)}\n </div>\n </div>\n )}\n {bottomCreateRowButton}\n </div>\n );\n};\n\nexport const Table = React.forwardRef(InternalTable) as Table;\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _defineProperty from"@babel/runtime/helpers/defineProperty";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import React from"react";import{isNotNil,isNumber,isString}from"../../utils/type-guards";export var Order={ASC:"ASC",asc:"asc",DESC:"DESC",desc:"desc"};export var getColumnsSize=function(a){return a.map(function(a){return isNumber(a)?"".concat(a,"px"):"auto"}).join(" ")};export var getColumnLeftOffset=function(a){var b=a.columnIndex,c=a.resizedColumnWidths,d=a.initialColumnWidths,e=d.slice(0,b).map(function(a,b){return c[b]||a});return e.reduce(function(a,b){return a+b},0)};export var createSortingState=function(a,b,c){return isString(b)?{by:a,order:b.toLowerCase(),sortFn:c}:null};export var getNewSorting=function(a,b,c){return a&&a.by===b?"asc"===a.order?{by:b,order:"desc",sortFn:c}:null:{by:b,order:"asc",sortFn:c}};export var getMaxLevel=function(a){var b=0,c=function(a){var d=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1;d>b&&(b=d),a.forEach(function(a){a.columns&&c(a.columns,d+1)})};return c(a),b};var getLastChildrenCount=function(a){var b=0,c=function(a){a.forEach(function(a){a.columns?c(a.columns):b++})};return c(a),b};export var transformColumns=function(a,b){for(var c=[{columns:a,index:0}],d=[];c.length;){var e=c.length-1,f=c[e],g=f.columns[f.index];if(g){d[e]||(d[e]=[]);var h=c[0].index,i=d[e][d[e].length-1],j=i?i.position.gridIndex+(i.position.colSpan||1):0,k=_objectSpread(_objectSpread({},g),{},{position:{topHeaderGridIndex:h,gridIndex:j,level:e}});k.columns?(k.position.colSpan=getLastChildrenCount(k.columns),d[e].push(k),c.push({columns:k.columns,index:0})):(k.position.rowSpan=b-e,d[e].push(k),f.index++)}else c.pop(),c[c.length-1]&&c[c.length-1].index++}return d};export var useHeaderData=function(a){var b=React.useRef({}),c=transformColumns(a,getMaxLevel(a)),d=Object.values(b.current).filter(isNotNil).map(function(a){return a.getBoundingClientRect().height}),e=c.flat().filter(function(a){return!a.hidden}).map(function(a,b){return _objectSpread(_objectSpread({},a),{},{position:_objectSpread(_objectSpread({},a.position),{},{smallTextSize:1<c.length&&a.position.level===c.length-1,height:d[b]||0})})}),f=c.map(function(a,b){return Math.min.apply(null,e.filter(function(a){return a.position.level===b}).map(function(a){return a.position.height}))}),g=e.filter(function(a){var b=a.position.colSpan;return!b}).sort(function(c,a){return c.position.topHeaderGridIndex===a.position.topHeaderGridIndex?c.position.gridIndex>a.position.gridIndex?1:-1:c.position.topHeaderGridIndex>a.position.topHeaderGridIndex?1:-1}),h=g.map(function(a,b){var c,d,e=f.reduce(function(c,a){return c+a},0);return(a.position.rowSpan||0)>=((null===(c=g[b+1])||void 0===c?void 0:c.position.rowSpan)||0)?e-(a.position.height||0):e-(null===(d=g[b+1])||void 0===d?void 0:d.position.height)||0});return{headers:c,flattenedHeaders:e,lowHeaders:g,headerRowsRefs:b,headerRowsHeights:f,headerColumnsHeights:d,resizerTopOffsets:h}};export var useLazyLoadData=function(a,b,c){var d=React.useState(0),e=_slicedToArray(d,2),f=e[0],g=e[1],h=React.useRef(null),i=React.useRef(null),j=Math.floor(a/3);React.useEffect(function(){if(c){var a=0;b&&"offsetHeight"in b?a=b.offsetHeight:b&&"outerHeight"in b&&(a=b.outerHeight);var d=function(){i.current&&a/2>i.current.getBoundingClientRect().top?g(function(a){return a+j}):h.current&&h.current.getBoundingClientRect().top>a/2&&g(function(a){return 0>a-j?0:a-j})};return null===b||void 0===b?void 0:b.addEventListener("scroll",d),function(){return null===b||void 0===b?void 0:b.removeEventListener("scroll",d)}}},[f,b]);return{getSlicedRows:function getSlicedRows(b){return!c||b.length<a?b:b.slice(f,f+a)},setBoundaryRef:function setBoundaryRef(b,d){return c&&0===b&&d===j&&0<f?h:c&&0===b&&d===a-j?i:void 0}}};export var transformRows=function(a,b,c){for(var d=[{rows:a,index:0}],e=[];d.length;){var f=d.length-1,g=d[f],h=g.rows[g.index];if(h){var i=_objectSpread(_objectSpread({},h),{},{level:f,rows:h.rows&&_toConsumableArray(h.rows)}),j=!!i.rows&&(c||b.includes(i.id));j?d.push({rows:i.rows,index:0}):g.index++,e.push(i)}else d.pop(),d[d.length-1]&&d[d.length-1].index++}return e};export function getMergedArray(a,b){for(var c=Math.max(a.length,b.length),d=[],e=0;e<c;e++){var f;d.push(null!==(f=b[e])&&void 0!==f?f:a[e])}return d}
|
|
1
|
+
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _defineProperty from"@babel/runtime/helpers/defineProperty";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import React from"react";import{isNotNil,isNumber,isString}from"../../utils/type-guards";export var Order={ASC:"ASC",asc:"asc",DESC:"DESC",desc:"desc"};export var getColumnsSize=function(a){return a.map(function(a){return isNumber(a)?"".concat(a,"px"):"auto"}).join(" ")};export var getColumnLeftOffset=function(a){var b=a.columnIndex,c=a.resizedColumnWidths,d=a.initialColumnWidths,e=d.slice(0,b).map(function(a,b){return c[b]||a});return e.reduce(function(a,b){return a+b},0)};export var createSortingState=function(a,b,c){return isString(b)?{by:a,order:b.toLowerCase(),sortFn:c}:null};export var getNewSorting=function(a,b,c){return a&&a.by===b?"asc"===a.order?{by:b,order:"desc",sortFn:c}:null:{by:b,order:"asc",sortFn:c}};export var getMaxLevel=function(a){var b=0,c=function(a){var d=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1;d>b&&(b=d),a.forEach(function(a){a.columns&&c(a.columns,d+1)})};return c(a),b};var getLastChildrenCount=function(a){var b=0,c=function(a){a.forEach(function(a){a.columns?c(a.columns):b++})};return c(a),b};export var transformColumns=function(a,b){for(var c=[{columns:a,index:0}],d=[];c.length;){var e=c.length-1,f=c[e],g=f.columns[f.index];if(g){d[e]||(d[e]=[]);var h=c[0].index,i=d[e][d[e].length-1],j=i?i.position.gridIndex+(i.position.colSpan||1):0,k=_objectSpread(_objectSpread({},g),{},{position:{topHeaderGridIndex:h,gridIndex:j,level:e}});k.columns?(k.position.colSpan=getLastChildrenCount(k.columns),d[e].push(k),c.push({columns:k.columns,index:0})):(k.position.rowSpan=b-e,d[e].push(k),f.index++)}else c.pop(),c[c.length-1]&&c[c.length-1].index++}return d};export var useHeaderData=function(a){var b=React.useRef({}),c=transformColumns(a,getMaxLevel(a)),d=Object.values(b.current).filter(isNotNil).map(function(a){return a.getBoundingClientRect().height}),e=c.flat().filter(function(a){return!a.hidden}).map(function(a,b){return _objectSpread(_objectSpread({},a),{},{position:_objectSpread(_objectSpread({},a.position),{},{smallTextSize:1<c.length&&a.position.level===c.length-1,height:d[b]||0})})}),f=c.map(function(a,b){return Math.min.apply(null,e.filter(function(a){return a.position.level===b}).map(function(a){return a.position.height}))}),g=e.filter(function(a){var b=a.position.colSpan;return!b}).sort(function(c,a){return c.position.topHeaderGridIndex===a.position.topHeaderGridIndex?c.position.gridIndex>a.position.gridIndex?1:-1:c.position.topHeaderGridIndex>a.position.topHeaderGridIndex?1:-1}),h=g.map(function(a,b){var c,d,e=f.reduce(function(c,a){return c+a},0);return(a.position.rowSpan||0)>=((null===(c=g[b+1])||void 0===c?void 0:c.position.rowSpan)||0)?e-(a.position.height||0):e-(null===(d=g[b+1])||void 0===d?void 0:d.position.height)||0});return{headers:c,flattenedHeaders:e,lowHeaders:g,headerRowsRefs:b,headerRowsHeights:f,headerColumnsHeights:d,resizerTopOffsets:h}};export var useLazyLoadData=function(a,b,c){var d=React.useState(0),e=_slicedToArray(d,2),f=e[0],g=e[1],h=React.useRef(null),i=React.useRef(null),j=Math.floor(a/3);React.useEffect(function(){if(c){var a=0;b&&"offsetHeight"in b?a=b.offsetHeight:b&&"outerHeight"in b&&(a=b.outerHeight);var d=function(){i.current&&a/2>i.current.getBoundingClientRect().top?g(function(a){return a+j}):h.current&&h.current.getBoundingClientRect().top>a/2&&g(function(a){return 0>a-j?0:a-j})};return null===b||void 0===b?void 0:b.addEventListener("scroll",d),function(){return null===b||void 0===b?void 0:b.removeEventListener("scroll",d)}}},[f,b]);return{getSlicedRows:function getSlicedRows(b){return!c||b.length<a?b:b.slice(f,f+a)},setBoundaryRef:function setBoundaryRef(b,d){return c&&0===b&&d===j&&0<f?h:c&&0===b&&d===a-j?i:void 0}}};export var transformRows=function(a,b,c){for(var d=[{rows:a,index:0}],e=[];d.length;){var f=d.length-1,g=d[f],h=g.rows[g.index];if(h){var i=_objectSpread(_objectSpread({},h),{},{options:{level:f},rows:h.rows&&_toConsumableArray(h.rows)}),j=!!i.rows&&(c||b.includes(i.id));j?d.push({rows:i.rows,index:0}):g.index++,e.push(i)}else d.pop(),d[d.length-1]&&d[d.length-1].index++}return e};export function getMergedArray(a,b){for(var c=Math.max(a.length,b.length),d=[],e=0;e<c;e++){var f;d.push(null!==(f=b[e])&&void 0!==f?f:a[e])}return d}
|
|
2
2
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["React","isNotNil","isNumber","isString","Order","ASC","asc","DESC","desc","getColumnsSize","sizes","map","s","join","getColumnLeftOffset","columnIndex","resizedColumnWidths","initialColumnWidths","selectedColumns","slice","size","index","reduce","acc","column","createSortingState","by","order","sortFn","toLowerCase","getNewSorting","currentSorting","newField","getMaxLevel","columns","count","traverse","cols","level","forEach","item","getLastChildrenCount","transformColumns","maxLevel","stack","headersArr","length","node","topHeaderGridIndex","prevItem","gridIndex","position","colSpan","handledItem","push","rowSpan","pop","useHeaderData","headerRowsRefs","useRef","headers","headerColumnsHeights","Object","values","current","filter","ref","getBoundingClientRect","height","flattenedHeaders","flat","hidden","smallTextSize","headerRowsHeights","arr","Math","min","apply","col","lowHeaders","sort","a","b","resizerTopOffsets","header","headerHeight","useLazyLoadData","maxVisibleRows","scrollableEl","enabled","useState","visibleStartIndex","setVisibleStartIndex","cellsRefStart","cellsRefEnd","additionalRowsCount","floor","useEffect","elHeight","offsetHeight","outerHeight","onScrollListener","top","prevIndex","addEventListener","removeEventListener","getSlicedRows","rows","setBoundaryRef","columnIdx","rowIdx","transformRows","expandedRowIds","isTableExpanded","rowsArr","needGoDeeper","includes","id","getMergedArray","mainArr","mergeArr","max","resultArr","i"],"sources":["../../../../../src/components/Table/helpers.ts"],"sourcesContent":["import React from 'react';\n\nimport { isNotNil, isNumber, isString } from '../../utils/type-guards';\nimport {\n ColumnWidth,\n SortingState,\n TableColumn,\n TableRow,\n TableTreeRow,\n} from './Table';\n\nexport const Order = {\n ASC: 'ASC',\n asc: 'asc',\n DESC: 'DESC',\n desc: 'desc',\n} as const;\n\nexport type OrderType = typeof Order[keyof typeof Order];\n\nexport type Position = {\n colSpan?: number;\n rowSpan?: number;\n level: number;\n gridIndex: number;\n topHeaderGridIndex: number;\n smallTextSize?: boolean;\n height?: number;\n};\n\nexport type Header<T extends TableRow> = TableColumn<T> & {\n position: Position;\n};\n\nexport type HeaderData<T extends TableRow> = {\n headers: Array<Header<T>>[];\n flattenedHeaders: Array<Header<T>>;\n lowHeaders: Array<Header<T>>;\n headerRowsRefs: React.MutableRefObject<Record<number, HTMLDivElement | null>>;\n headerRowsHeights: Array<number>;\n headerColumnsHeights: Array<number>;\n resizerTopOffsets: Array<number>;\n};\n\nexport const getColumnsSize = (sizes: ColumnWidth[]): string => {\n return sizes.map((s) => (isNumber(s) ? `${s}px` : `auto`)).join(' ');\n};\n\nexport const getColumnLeftOffset = ({\n columnIndex,\n resizedColumnWidths,\n initialColumnWidths,\n}: {\n columnIndex: number;\n resizedColumnWidths: Array<number | undefined>;\n initialColumnWidths: number[];\n}): number => {\n const selectedColumns = initialColumnWidths\n .slice(0, columnIndex)\n .map((size, index) => resizedColumnWidths[index] || size);\n\n return selectedColumns.reduce((acc, column) => acc + column, 0);\n};\n\nexport const createSortingState = <T extends TableRow>(\n by: keyof T,\n order?: OrderType,\n sortFn?: (a: T[keyof T], b: T[keyof T]) => number,\n): SortingState<T> => {\n if (!isString(order)) {\n return null;\n }\n\n return { by, order: order.toLowerCase(), sortFn } as SortingState<T>;\n};\n\nexport const getNewSorting = <T extends TableRow>(\n currentSorting: SortingState<T>,\n newField: keyof T,\n sortFn?: (a: T[keyof T], b: T[keyof T]) => number,\n): SortingState<T> => {\n if (!currentSorting || currentSorting.by !== newField) {\n return {\n by: newField,\n order: 'asc',\n sortFn,\n };\n }\n\n if (currentSorting.order === 'asc') {\n return {\n by: newField,\n order: 'desc',\n sortFn,\n };\n }\n\n return null;\n};\n\nexport const getMaxLevel = <T extends TableRow>(\n columns: Array<TableColumn<T>>,\n) => {\n let count = 0;\n\n const traverse = (cols: Array<TableColumn<T>>, level = 1) => {\n if (level > count) count = level;\n cols.forEach((item: TableColumn<T>) => {\n if (item.columns) {\n traverse(item.columns, level + 1);\n }\n });\n };\n\n traverse(columns);\n\n return count;\n};\n\nconst getLastChildrenCount = <T extends TableRow>(\n columns: Array<TableColumn<T>>,\n) => {\n let count = 0;\n\n const traverse = (cols: Array<TableColumn<T>>) => {\n cols.forEach((item: TableColumn<T>) => {\n if (item.columns) {\n traverse(item.columns);\n } else {\n count++;\n }\n });\n };\n\n traverse(columns);\n\n return count;\n};\n\nexport const transformColumns = <T extends TableRow>(\n columns: Array<TableColumn<T>>,\n maxLevel: number,\n): Array<TableColumn<T> & { position: Position }>[] => {\n const stack = [{ columns, index: 0 }];\n const headersArr: Array<TableColumn<T> & { position: Position }>[] = [];\n\n while (stack.length) {\n const level = stack.length - 1;\n const node = stack[level];\n const item: TableColumn<T> = node.columns[node.index];\n\n if (item) {\n if (!headersArr[level]) headersArr[level] = [];\n const topHeaderGridIndex = stack[0].index;\n const prevItem = headersArr[level][headersArr[level].length - 1];\n const gridIndex = prevItem\n ? prevItem.position.gridIndex + (prevItem.position.colSpan || 1)\n : 0;\n\n const handledItem: TableColumn<T> & { position: Position } = {\n ...item,\n position: {\n topHeaderGridIndex,\n gridIndex,\n level,\n },\n };\n\n if (!handledItem.columns) {\n handledItem.position.rowSpan = maxLevel - level;\n headersArr[level].push(handledItem);\n node.index++;\n } else {\n handledItem.position.colSpan = getLastChildrenCount(\n handledItem.columns,\n );\n headersArr[level].push(handledItem);\n stack.push({ columns: handledItem.columns, index: 0 });\n }\n } else {\n stack.pop();\n if (stack[stack.length - 1]) stack[stack.length - 1].index++;\n }\n }\n\n return headersArr;\n};\n\n/**\n * Возвращает данные, необходимые для построения хидера таблицы\n *\n * @param columns - массив колонок\n *\n * @return {\n * {Array<Header<T>>[]} headers: двумерный массив заголовков, выстроенный по вертикали;\n * {Array<Header<T>>} flattenedHeaders: плоский массив заголовков;\n * {Array<Header<T>>} lowHeaders: самые нижние заголовки (по ним строятся колонки);\n * {Record<number, HTMLDivElement | null>} headerRowsRefs: содержит рефы на заголовки;\n * {Array<number>} headerRowsHeights: массив высот строк заголовков;\n * {Array<number>} headerColumnsHeights: массив высот колонок заголовков;\n * {Array<number>} resizerTopOffsets: массив отступов для компонентов Resizer;\n * }\n */\nexport const useHeaderData = <T extends TableRow>(\n columns: Array<TableColumn<T>>,\n): HeaderData<T> => {\n const headerRowsRefs = React.useRef<Record<number, HTMLDivElement | null>>(\n {},\n );\n const headers = transformColumns(columns, getMaxLevel(columns));\n const headerColumnsHeights: Array<number> = Object.values(\n headerRowsRefs.current,\n )\n .filter(isNotNil)\n .map((ref) => ref.getBoundingClientRect().height);\n const flattenedHeaders = headers\n .flat()\n .filter((column: TableColumn<T>) => !column.hidden)\n .map((column, index) => ({\n ...column,\n position: {\n ...column.position,\n smallTextSize:\n headers.length > 1 && column.position.level === headers.length - 1,\n height: headerColumnsHeights[index] || 0,\n },\n }));\n const headerRowsHeights = headers.map((arr, index) => {\n return Math.min.apply(\n null,\n flattenedHeaders\n .filter(\n (col: TableColumn<T> & { position: Position }) =>\n col.position.level === index,\n )\n .map((item) => item.position.height),\n );\n });\n const lowHeaders = flattenedHeaders\n .filter(\n ({ position: { colSpan } }: TableColumn<T> & { position: Position }) =>\n !colSpan,\n )\n .sort((a, b) => {\n if (a.position.topHeaderGridIndex !== b.position.topHeaderGridIndex) {\n return a.position.topHeaderGridIndex > b.position.topHeaderGridIndex\n ? 1\n : -1;\n }\n return a.position.gridIndex > b.position.gridIndex ? 1 : -1;\n });\n\n const resizerTopOffsets = lowHeaders.map(\n (header: TableColumn<T> & { position: Position }, index: number) => {\n const headerHeight = headerRowsHeights.reduce(\n (a: number, b: number) => a + b,\n 0,\n );\n if (\n (header.position.rowSpan || 0) >=\n (lowHeaders[index + 1]?.position.rowSpan || 0)\n ) {\n return headerHeight - (header.position.height || 0);\n }\n // eslint-disable-next-line no-unsafe-optional-chaining\n return headerHeight - lowHeaders[index + 1]?.position.height! || 0;\n },\n );\n\n return {\n headers,\n flattenedHeaders,\n lowHeaders,\n headerRowsRefs,\n headerRowsHeights,\n headerColumnsHeights,\n resizerTopOffsets,\n };\n};\n\n/**\n * Возвращает 2 функции, необходимые для отображения большого количества строк в таблице\n *\n * @param maxVisibleRows - максимальное количество отображаемых строк в один момент времени\n * @param scrollableEl - элемент, на который вешается scroll listener\n * @param enabled - флаг включения данной функциональность\n *\n * @return {\n * getSlicedRows: функция, обрезающая исходный массив данных\n * setBoundaryRef: функция, проставляющая рефы необходимым ячейкам для вычисления границ отображения строк\n * }\n */\nexport const useLazyLoadData = (\n maxVisibleRows: number,\n scrollableEl: HTMLDivElement | Window | null,\n enabled: boolean,\n) => {\n const [visibleStartIndex, setVisibleStartIndex] = React.useState<number>(0);\n const cellsRefStart = React.useRef<HTMLDivElement>(null);\n const cellsRefEnd = React.useRef<HTMLDivElement>(null);\n const additionalRowsCount = Math.floor(maxVisibleRows / 3);\n\n React.useEffect(() => {\n if (!enabled) return;\n let elHeight = 0;\n if (scrollableEl && 'offsetHeight' in scrollableEl) {\n elHeight = scrollableEl.offsetHeight;\n } else if (scrollableEl && 'outerHeight' in scrollableEl) {\n elHeight = scrollableEl.outerHeight;\n }\n const onScrollListener = () => {\n if (\n cellsRefEnd.current &&\n elHeight / 2 > cellsRefEnd.current.getBoundingClientRect().top\n ) {\n setVisibleStartIndex((prevIndex) => prevIndex + additionalRowsCount);\n } else if (\n cellsRefStart.current &&\n cellsRefStart.current.getBoundingClientRect().top > elHeight / 2\n ) {\n setVisibleStartIndex((prevIndex) =>\n prevIndex - additionalRowsCount < 0\n ? 0\n : prevIndex - additionalRowsCount,\n );\n }\n };\n\n scrollableEl?.addEventListener('scroll', onScrollListener);\n\n return () => scrollableEl?.removeEventListener('scroll', onScrollListener);\n }, [visibleStartIndex, scrollableEl]);\n\n const setBoundaryRef = (columnIdx: number, rowIdx: number) => {\n if (\n enabled &&\n columnIdx === 0 &&\n rowIdx === additionalRowsCount &&\n visibleStartIndex > 0\n ) {\n return cellsRefStart;\n }\n if (\n enabled &&\n columnIdx === 0 &&\n rowIdx === maxVisibleRows - additionalRowsCount\n ) {\n return cellsRefEnd;\n }\n return undefined;\n };\n\n const getSlicedRows = <T extends TableRow>(rows: T[]) =>\n !enabled || rows.length < maxVisibleRows\n ? rows\n : rows.slice(visibleStartIndex, visibleStartIndex + maxVisibleRows);\n\n return {\n getSlicedRows,\n setBoundaryRef,\n };\n};\n\nexport const transformRows = <T extends TableRow>(\n rows: T[],\n expandedRowIds: string[],\n isTableExpanded?: boolean,\n): TableTreeRow<T>[] => {\n const stack = [{ rows, index: 0 }];\n const rowsArr: TableTreeRow<T>[] = [];\n\n while (stack.length) {\n const level = stack.length - 1;\n const node = stack[level];\n const item: T = node.rows[node.index];\n\n if (item) {\n const handledItem: TableTreeRow<T> = {\n ...item,\n level,\n rows: item.rows && [...item.rows],\n };\n\n const needGoDeeper =\n Boolean(handledItem.rows) &&\n (isTableExpanded || expandedRowIds.includes(handledItem.id));\n\n if (needGoDeeper) {\n stack.push({ rows: handledItem.rows as T[], index: 0 });\n } else {\n node.index++;\n }\n\n rowsArr.push(handledItem);\n } else {\n stack.pop();\n if (stack[stack.length - 1]) {\n stack[stack.length - 1].index++;\n }\n }\n }\n return rowsArr;\n};\n\nexport function getMergedArray<TYPE>(mainArr: TYPE[], mergeArr: TYPE[]) {\n const length = Math.max(mainArr.length, mergeArr.length);\n const resultArr: TYPE[] = [];\n for (let i = 0; i < length; i++) {\n resultArr.push(mergeArr[i] ?? mainArr[i]);\n }\n return resultArr;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["React","isNotNil","isNumber","isString","Order","ASC","asc","DESC","desc","getColumnsSize","sizes","map","s","join","getColumnLeftOffset","columnIndex","resizedColumnWidths","initialColumnWidths","selectedColumns","slice","size","index","reduce","acc","column","createSortingState","by","order","sortFn","toLowerCase","getNewSorting","currentSorting","newField","getMaxLevel","columns","count","traverse","cols","level","forEach","item","getLastChildrenCount","transformColumns","maxLevel","stack","headersArr","length","node","topHeaderGridIndex","prevItem","gridIndex","position","colSpan","handledItem","push","rowSpan","pop","useHeaderData","headerRowsRefs","useRef","headers","headerColumnsHeights","Object","values","current","filter","ref","getBoundingClientRect","height","flattenedHeaders","flat","hidden","smallTextSize","headerRowsHeights","arr","Math","min","apply","col","lowHeaders","sort","a","b","resizerTopOffsets","header","headerHeight","useLazyLoadData","maxVisibleRows","scrollableEl","enabled","useState","visibleStartIndex","setVisibleStartIndex","cellsRefStart","cellsRefEnd","additionalRowsCount","floor","useEffect","elHeight","offsetHeight","outerHeight","onScrollListener","top","prevIndex","addEventListener","removeEventListener","getSlicedRows","rows","setBoundaryRef","columnIdx","rowIdx","transformRows","expandedRowIds","isTableExpanded","rowsArr","options","needGoDeeper","includes","id","getMergedArray","mainArr","mergeArr","max","resultArr","i"],"sources":["../../../../../src/components/Table/helpers.ts"],"sourcesContent":["import React from 'react';\n\nimport { isNotNil, isNumber, isString } from '../../utils/type-guards';\nimport {\n ColumnWidth,\n SortingState,\n TableColumn,\n TableRow,\n TableTreeRow,\n} from './Table';\n\nexport const Order = {\n ASC: 'ASC',\n asc: 'asc',\n DESC: 'DESC',\n desc: 'desc',\n} as const;\n\nexport type OrderType = typeof Order[keyof typeof Order];\n\nexport type Position = {\n colSpan?: number;\n rowSpan?: number;\n level: number;\n gridIndex: number;\n topHeaderGridIndex: number;\n smallTextSize?: boolean;\n height?: number;\n};\n\nexport type Header<T extends TableRow> = TableColumn<T> & {\n position: Position;\n};\n\nexport type HeaderData<T extends TableRow> = {\n headers: Array<Header<T>>[];\n flattenedHeaders: Array<Header<T>>;\n lowHeaders: Array<Header<T>>;\n headerRowsRefs: React.MutableRefObject<Record<number, HTMLDivElement | null>>;\n headerRowsHeights: Array<number>;\n headerColumnsHeights: Array<number>;\n resizerTopOffsets: Array<number>;\n};\n\nexport const getColumnsSize = (sizes: ColumnWidth[]): string => {\n return sizes.map((s) => (isNumber(s) ? `${s}px` : `auto`)).join(' ');\n};\n\nexport const getColumnLeftOffset = ({\n columnIndex,\n resizedColumnWidths,\n initialColumnWidths,\n}: {\n columnIndex: number;\n resizedColumnWidths: Array<number | undefined>;\n initialColumnWidths: number[];\n}): number => {\n const selectedColumns = initialColumnWidths\n .slice(0, columnIndex)\n .map((size, index) => resizedColumnWidths[index] || size);\n\n return selectedColumns.reduce((acc, column) => acc + column, 0);\n};\n\nexport const createSortingState = <T extends TableRow>(\n by: keyof T,\n order?: OrderType,\n sortFn?: (a: T[keyof T], b: T[keyof T]) => number,\n): SortingState<T> => {\n if (!isString(order)) {\n return null;\n }\n\n return { by, order: order.toLowerCase(), sortFn } as SortingState<T>;\n};\n\nexport const getNewSorting = <T extends TableRow>(\n currentSorting: SortingState<T>,\n newField: keyof T,\n sortFn?: (a: T[keyof T], b: T[keyof T]) => number,\n): SortingState<T> => {\n if (!currentSorting || currentSorting.by !== newField) {\n return {\n by: newField,\n order: 'asc',\n sortFn,\n };\n }\n\n if (currentSorting.order === 'asc') {\n return {\n by: newField,\n order: 'desc',\n sortFn,\n };\n }\n\n return null;\n};\n\nexport const getMaxLevel = <T extends TableRow>(\n columns: Array<TableColumn<T>>,\n) => {\n let count = 0;\n\n const traverse = (cols: Array<TableColumn<T>>, level = 1) => {\n if (level > count) count = level;\n cols.forEach((item: TableColumn<T>) => {\n if (item.columns) {\n traverse(item.columns, level + 1);\n }\n });\n };\n\n traverse(columns);\n\n return count;\n};\n\nconst getLastChildrenCount = <T extends TableRow>(\n columns: Array<TableColumn<T>>,\n) => {\n let count = 0;\n\n const traverse = (cols: Array<TableColumn<T>>) => {\n cols.forEach((item: TableColumn<T>) => {\n if (item.columns) {\n traverse(item.columns);\n } else {\n count++;\n }\n });\n };\n\n traverse(columns);\n\n return count;\n};\n\nexport const transformColumns = <T extends TableRow>(\n columns: Array<TableColumn<T>>,\n maxLevel: number,\n): Array<TableColumn<T> & { position: Position }>[] => {\n const stack = [{ columns, index: 0 }];\n const headersArr: Array<TableColumn<T> & { position: Position }>[] = [];\n\n while (stack.length) {\n const level = stack.length - 1;\n const node = stack[level];\n const item: TableColumn<T> = node.columns[node.index];\n\n if (item) {\n if (!headersArr[level]) headersArr[level] = [];\n const topHeaderGridIndex = stack[0].index;\n const prevItem = headersArr[level][headersArr[level].length - 1];\n const gridIndex = prevItem\n ? prevItem.position.gridIndex + (prevItem.position.colSpan || 1)\n : 0;\n\n const handledItem: TableColumn<T> & { position: Position } = {\n ...item,\n position: {\n topHeaderGridIndex,\n gridIndex,\n level,\n },\n };\n\n if (!handledItem.columns) {\n handledItem.position.rowSpan = maxLevel - level;\n headersArr[level].push(handledItem);\n node.index++;\n } else {\n handledItem.position.colSpan = getLastChildrenCount(\n handledItem.columns,\n );\n headersArr[level].push(handledItem);\n stack.push({ columns: handledItem.columns, index: 0 });\n }\n } else {\n stack.pop();\n if (stack[stack.length - 1]) stack[stack.length - 1].index++;\n }\n }\n\n return headersArr;\n};\n\n/**\n * Возвращает данные, необходимые для построения хидера таблицы\n *\n * @param columns - массив колонок\n *\n * @return {\n * {Array<Header<T>>[]} headers: двумерный массив заголовков, выстроенный по вертикали;\n * {Array<Header<T>>} flattenedHeaders: плоский массив заголовков;\n * {Array<Header<T>>} lowHeaders: самые нижние заголовки (по ним строятся колонки);\n * {Record<number, HTMLDivElement | null>} headerRowsRefs: содержит рефы на заголовки;\n * {Array<number>} headerRowsHeights: массив высот строк заголовков;\n * {Array<number>} headerColumnsHeights: массив высот колонок заголовков;\n * {Array<number>} resizerTopOffsets: массив отступов для компонентов Resizer;\n * }\n */\nexport const useHeaderData = <T extends TableRow>(\n columns: Array<TableColumn<T>>,\n): HeaderData<T> => {\n const headerRowsRefs = React.useRef<Record<number, HTMLDivElement | null>>(\n {},\n );\n const headers = transformColumns(columns, getMaxLevel(columns));\n const headerColumnsHeights: Array<number> = Object.values(\n headerRowsRefs.current,\n )\n .filter(isNotNil)\n .map((ref) => ref.getBoundingClientRect().height);\n const flattenedHeaders = headers\n .flat()\n .filter((column: TableColumn<T>) => !column.hidden)\n .map((column, index) => ({\n ...column,\n position: {\n ...column.position,\n smallTextSize:\n headers.length > 1 && column.position.level === headers.length - 1,\n height: headerColumnsHeights[index] || 0,\n },\n }));\n const headerRowsHeights = headers.map((arr, index) => {\n return Math.min.apply(\n null,\n flattenedHeaders\n .filter(\n (col: TableColumn<T> & { position: Position }) =>\n col.position.level === index,\n )\n .map((item) => item.position.height),\n );\n });\n const lowHeaders = flattenedHeaders\n .filter(\n ({ position: { colSpan } }: TableColumn<T> & { position: Position }) =>\n !colSpan,\n )\n .sort((a, b) => {\n if (a.position.topHeaderGridIndex !== b.position.topHeaderGridIndex) {\n return a.position.topHeaderGridIndex > b.position.topHeaderGridIndex\n ? 1\n : -1;\n }\n return a.position.gridIndex > b.position.gridIndex ? 1 : -1;\n });\n\n const resizerTopOffsets = lowHeaders.map(\n (header: TableColumn<T> & { position: Position }, index: number) => {\n const headerHeight = headerRowsHeights.reduce(\n (a: number, b: number) => a + b,\n 0,\n );\n if (\n (header.position.rowSpan || 0) >=\n (lowHeaders[index + 1]?.position.rowSpan || 0)\n ) {\n return headerHeight - (header.position.height || 0);\n }\n // eslint-disable-next-line no-unsafe-optional-chaining\n return headerHeight - lowHeaders[index + 1]?.position.height! || 0;\n },\n );\n\n return {\n headers,\n flattenedHeaders,\n lowHeaders,\n headerRowsRefs,\n headerRowsHeights,\n headerColumnsHeights,\n resizerTopOffsets,\n };\n};\n\n/**\n * Возвращает 2 функции, необходимые для отображения большого количества строк в таблице\n *\n * @param maxVisibleRows - максимальное количество отображаемых строк в один момент времени\n * @param scrollableEl - элемент, на который вешается scroll listener\n * @param enabled - флаг включения данной функциональность\n *\n * @return {\n * getSlicedRows: функция, обрезающая исходный массив данных\n * setBoundaryRef: функция, проставляющая рефы необходимым ячейкам для вычисления границ отображения строк\n * }\n */\nexport const useLazyLoadData = (\n maxVisibleRows: number,\n scrollableEl: HTMLDivElement | Window | null,\n enabled: boolean,\n) => {\n const [visibleStartIndex, setVisibleStartIndex] = React.useState<number>(0);\n const cellsRefStart = React.useRef<HTMLDivElement>(null);\n const cellsRefEnd = React.useRef<HTMLDivElement>(null);\n const additionalRowsCount = Math.floor(maxVisibleRows / 3);\n\n React.useEffect(() => {\n if (!enabled) return;\n let elHeight = 0;\n if (scrollableEl && 'offsetHeight' in scrollableEl) {\n elHeight = scrollableEl.offsetHeight;\n } else if (scrollableEl && 'outerHeight' in scrollableEl) {\n elHeight = scrollableEl.outerHeight;\n }\n const onScrollListener = () => {\n if (\n cellsRefEnd.current &&\n elHeight / 2 > cellsRefEnd.current.getBoundingClientRect().top\n ) {\n setVisibleStartIndex((prevIndex) => prevIndex + additionalRowsCount);\n } else if (\n cellsRefStart.current &&\n cellsRefStart.current.getBoundingClientRect().top > elHeight / 2\n ) {\n setVisibleStartIndex((prevIndex) =>\n prevIndex - additionalRowsCount < 0\n ? 0\n : prevIndex - additionalRowsCount,\n );\n }\n };\n\n scrollableEl?.addEventListener('scroll', onScrollListener);\n\n return () => scrollableEl?.removeEventListener('scroll', onScrollListener);\n }, [visibleStartIndex, scrollableEl]);\n\n const setBoundaryRef = (columnIdx: number, rowIdx: number) => {\n if (\n enabled &&\n columnIdx === 0 &&\n rowIdx === additionalRowsCount &&\n visibleStartIndex > 0\n ) {\n return cellsRefStart;\n }\n if (\n enabled &&\n columnIdx === 0 &&\n rowIdx === maxVisibleRows - additionalRowsCount\n ) {\n return cellsRefEnd;\n }\n return undefined;\n };\n\n const getSlicedRows = <T extends TableRow>(rows: T[]) =>\n !enabled || rows.length < maxVisibleRows\n ? rows\n : rows.slice(visibleStartIndex, visibleStartIndex + maxVisibleRows);\n\n return {\n getSlicedRows,\n setBoundaryRef,\n };\n};\n\nexport const transformRows = <T extends TableRow>(\n rows: T[],\n expandedRowIds: string[],\n isTableExpanded?: boolean,\n): TableTreeRow<T>[] => {\n const stack = [{ rows, index: 0 }];\n const rowsArr: TableTreeRow<T>[] = [];\n while (stack.length) {\n const level = stack.length - 1;\n const node = stack[level];\n const item: T = node.rows[node.index];\n\n if (item) {\n const handledItem: TableTreeRow<T> = {\n ...item,\n options: { level },\n rows: item.rows && [...item.rows],\n };\n\n const needGoDeeper =\n Boolean(handledItem.rows) &&\n (isTableExpanded || expandedRowIds.includes(handledItem.id));\n\n if (needGoDeeper) {\n stack.push({ rows: handledItem.rows as T[], index: 0 });\n } else {\n node.index++;\n }\n\n rowsArr.push(handledItem);\n } else {\n stack.pop();\n if (stack[stack.length - 1]) {\n stack[stack.length - 1].index++;\n }\n }\n }\n return rowsArr;\n};\n\nexport function getMergedArray<TYPE>(mainArr: TYPE[], mergeArr: TYPE[]) {\n const length = Math.max(mainArr.length, mergeArr.length);\n const resultArr: TYPE[] = [];\n for (let i = 0; i < length; i++) {\n resultArr.push(mergeArr[i] ?? mainArr[i]);\n }\n return resultArr;\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){throw a}),f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){h=!0,f=a}),f:function f(){try{g||null==c["return"]||c["return"]()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function isMultiple(a){return a.multiple}function isNotMultiple(a){return!a.multiple}function formatValue(a,b,c){var d={};if(!a)return d;var e=c?a:[a];if(e&&0<e.length){var f,g=_createForOfIteratorHelper(e);try{for(g.s();!(f=g.n()).done;){var h=f.value;d[b(h)]=h}}catch(a){g.e(a)}finally{g.f()}}return d}export function useChoiceGroup(a){var b=formatValue(a.value,a.getKey,a.multiple),c=function(c){return Object.prototype.hasOwnProperty.call(b,a.getKey(c))};return{getOnChange:function getOnChange(b){return function(d){if(isMultiple(a)){var e;if(c(b)){var f=a.value||[];e=f.filter(function(c){return a.getKey(c)!==a.getKey(b)}),0===e.length&&(e=null)}else e=a.value?_toConsumableArray(a.value):[],e.push(b);a.callBack({e:d,value:e})}isNotMultiple(a)&&a.callBack({e:d,value:b})}},getChecked:c}}
|
|
1
|
+
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){throw a}),f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){h=!0,f=a}),f:function f(){try{g||null==c["return"]||c["return"]()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}import{isNotNil}from"../../utils/type-guards";function isMultiple(a){return a.multiple}function isNotMultiple(a){return!a.multiple}function formatValue(a,b,c){var d={};if(!isNotNil(a)&&!Array.isArray(a))return d;var e=c?a:[a];if(e&&0<e.length){var f,g=_createForOfIteratorHelper(e);try{for(g.s();!(f=g.n()).done;){var h=f.value;d[b(h)]=h}}catch(a){g.e(a)}finally{g.f()}}return d}export function useChoiceGroup(a){var b=formatValue(a.value,a.getKey,a.multiple),c=function(c){return Object.prototype.hasOwnProperty.call(b,a.getKey(c))};return{getOnChange:function getOnChange(b){return function(d){if(isMultiple(a)){var e;if(c(b)){var f=a.value||[];e=f.filter(function(c){return a.getKey(c)!==a.getKey(b)}),0===e.length&&(e=null)}else e=a.value?_toConsumableArray(a.value):[],e.push(b);a.callBack({e:d,value:e})}isNotMultiple(a)&&a.callBack({e:d,value:b})}},getChecked:c}}
|
|
2
2
|
//# sourceMappingURL=useChoiceGroup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChoiceGroup.js","names":["isMultiple","params","multiple","isNotMultiple","formatValue","valueProp","getKey","valueByKey","value","length","item","useChoiceGroup","props","formatedValue","getChecked","Object","prototype","hasOwnProperty","call","getOnChange","selectedItem","e","newValue","filter","push","callBack"],"sources":["../../../../../src/hooks/useChoiceGroup/useChoiceGroup.tsx"],"sourcesContent":["type GetKey<ITEM> = (item: ITEM) => string | number;\n\ntype GetOnChange<ITEM, EVENT> = (item: ITEM) => (e: EVENT) => void;\n\ntype GetChecked<ITEM> = (item: ITEM) => boolean;\n\ntype UseChoiceGroupValues<ITEM, EVENT> = {\n getOnChange: GetOnChange<ITEM, EVENT>;\n getChecked: GetChecked<ITEM>;\n};\n\ntype CallbackWithMultiple<ITEM, EVENT> = (props: {\n e: EVENT;\n value: ITEM[] | null;\n}) => void;\n\ntype CallbackWithoutMultiple<ITEM, EVENT> = (props: {\n e: EVENT;\n value: ITEM;\n}) => void;\n\ntype PropsWithMultiple<ITEM, EVENT> = {\n multiple: true;\n value: ITEM[] | null;\n callBack: CallbackWithMultiple<ITEM, EVENT>;\n};\n\ntype PropsWithoutMultiple<ITEM, EVENT> = {\n multiple: false;\n value: ITEM | null;\n callBack: CallbackWithoutMultiple<ITEM, EVENT>;\n};\n\ntype CommonProps<ITEM> = {\n getKey: GetKey<ITEM>;\n};\n\ntype UseChoiceGroupProps<ITEM, EVENT> = CommonProps<ITEM> &\n (PropsWithMultiple<ITEM, EVENT> | PropsWithoutMultiple<ITEM, EVENT>);\n\ntype FormatedItems<ITEM> = { [value: string]: ITEM };\n\nfunction isMultiple<ITEM, EVENT>(\n params: UseChoiceGroupProps<ITEM, EVENT>,\n): params is CommonProps<ITEM> & PropsWithMultiple<ITEM, EVENT> {\n return params.multiple;\n}\n\nfunction isNotMultiple<ITEM, EVENT>(\n params: UseChoiceGroupProps<ITEM, EVENT>,\n): params is CommonProps<ITEM> & PropsWithoutMultiple<ITEM, EVENT> {\n return !params.multiple;\n}\n\nfunction formatValue<ITEM>(\n valueProp: ITEM | ITEM[] | null,\n getKey: GetKey<ITEM>,\n multiple?: boolean,\n) {\n const valueByKey: FormatedItems<ITEM> = {};\n if (!valueProp) {\n return valueByKey;\n }\n const value = multiple ? (valueProp as ITEM[]) : [valueProp as ITEM];\n if (value && value.length > 0) {\n for (const item of value) {\n valueByKey[getKey(item)] = item;\n }\n }\n return valueByKey;\n}\n\nexport function useChoiceGroup<ITEM, EVENT>(\n props: UseChoiceGroupProps<ITEM, EVENT>,\n): UseChoiceGroupValues<ITEM, EVENT> {\n const formatedValue = formatValue(props.value, props.getKey, props.multiple);\n\n const getChecked: GetChecked<ITEM> = (item) =>\n Object.prototype.hasOwnProperty.call(formatedValue, props.getKey(item));\n\n const getOnChange: GetOnChange<ITEM, EVENT> = (selectedItem) => (e) => {\n if (isMultiple(props)) {\n let newValue: ITEM[] | null;\n\n if (getChecked(selectedItem)) {\n const value = props.value || [];\n newValue = value.filter(\n (item) => props.getKey(item) !== props.getKey(selectedItem),\n );\n if (newValue.length === 0) {\n newValue = null;\n }\n } else {\n newValue = props.value ? [...props.value] : [];\n newValue.push(selectedItem);\n }\n props.callBack({ e, value: newValue });\n }\n\n if (isNotMultiple(props)) {\n props.callBack({ e, value: selectedItem });\n }\n };\n\n return {\n getOnChange,\n getChecked,\n };\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useChoiceGroup.js","names":["isNotNil","isMultiple","params","multiple","isNotMultiple","formatValue","valueProp","getKey","valueByKey","Array","isArray","value","length","item","useChoiceGroup","props","formatedValue","getChecked","Object","prototype","hasOwnProperty","call","getOnChange","selectedItem","e","newValue","filter","push","callBack"],"sources":["../../../../../src/hooks/useChoiceGroup/useChoiceGroup.tsx"],"sourcesContent":["import { isNotNil } from '##/utils/type-guards';\n\ntype GetKey<ITEM> = (item: ITEM) => string | number;\n\ntype GetOnChange<ITEM, EVENT> = (item: ITEM) => (e: EVENT) => void;\n\ntype GetChecked<ITEM> = (item: ITEM) => boolean;\n\ntype UseChoiceGroupValues<ITEM, EVENT> = {\n getOnChange: GetOnChange<ITEM, EVENT>;\n getChecked: GetChecked<ITEM>;\n};\n\ntype CallbackWithMultiple<ITEM, EVENT> = (props: {\n e: EVENT;\n value: ITEM[] | null;\n}) => void;\n\ntype CallbackWithoutMultiple<ITEM, EVENT> = (props: {\n e: EVENT;\n value: ITEM;\n}) => void;\n\ntype PropsWithMultiple<ITEM, EVENT> = {\n multiple: true;\n value: ITEM[] | null;\n callBack: CallbackWithMultiple<ITEM, EVENT>;\n};\n\ntype PropsWithoutMultiple<ITEM, EVENT> = {\n multiple: false;\n value: ITEM | null;\n callBack: CallbackWithoutMultiple<ITEM, EVENT>;\n};\n\ntype CommonProps<ITEM> = {\n getKey: GetKey<ITEM>;\n};\n\ntype UseChoiceGroupProps<ITEM, EVENT> = CommonProps<ITEM> &\n (PropsWithMultiple<ITEM, EVENT> | PropsWithoutMultiple<ITEM, EVENT>);\n\ntype FormatedItems<ITEM> = { [value: string]: ITEM };\n\nfunction isMultiple<ITEM, EVENT>(\n params: UseChoiceGroupProps<ITEM, EVENT>,\n): params is CommonProps<ITEM> & PropsWithMultiple<ITEM, EVENT> {\n return params.multiple;\n}\n\nfunction isNotMultiple<ITEM, EVENT>(\n params: UseChoiceGroupProps<ITEM, EVENT>,\n): params is CommonProps<ITEM> & PropsWithoutMultiple<ITEM, EVENT> {\n return !params.multiple;\n}\n\nfunction formatValue<ITEM>(\n valueProp: ITEM | ITEM[] | null,\n getKey: GetKey<ITEM>,\n multiple?: boolean,\n) {\n const valueByKey: FormatedItems<ITEM> = {};\n if (!isNotNil(valueProp) && !Array.isArray(valueProp)) {\n return valueByKey;\n }\n const value = multiple ? (valueProp as ITEM[]) : [valueProp as ITEM];\n if (value && value.length > 0) {\n for (const item of value) {\n valueByKey[getKey(item)] = item;\n }\n }\n return valueByKey;\n}\n\nexport function useChoiceGroup<ITEM, EVENT>(\n props: UseChoiceGroupProps<ITEM, EVENT>,\n): UseChoiceGroupValues<ITEM, EVENT> {\n const formatedValue = formatValue(props.value, props.getKey, props.multiple);\n\n const getChecked: GetChecked<ITEM> = (item) =>\n Object.prototype.hasOwnProperty.call(formatedValue, props.getKey(item));\n\n const getOnChange: GetOnChange<ITEM, EVENT> = (selectedItem) => (e) => {\n if (isMultiple(props)) {\n let newValue: ITEM[] | null;\n\n if (getChecked(selectedItem)) {\n const value = props.value || [];\n newValue = value.filter(\n (item) => props.getKey(item) !== props.getKey(selectedItem),\n );\n if (newValue.length === 0) {\n newValue = null;\n }\n } else {\n newValue = props.value ? [...props.value] : [];\n newValue.push(selectedItem);\n }\n props.callBack({ e, value: newValue });\n }\n\n if (isNotMultiple(props)) {\n props.callBack({ e, value: selectedItem });\n }\n };\n\n return {\n getOnChange,\n getChecked,\n };\n}\n"],"mappings":"s7CAAA,OAASA,QAAT,+BA4CA,QAASC,WAAT,CACEC,CADF,CAEgE,CAC9D,MAAOA,EAAM,CAACC,QACf,CAED,QAASC,cAAT,CACEF,CADF,CAEmE,CACjE,MAAO,CAACA,CAAM,CAACC,QAChB,CAED,QAASE,YAAT,CACEC,CADF,CAEEC,CAFF,CAGEJ,CAHF,CAIE,CACA,GAAMK,EAA+B,CAAG,EAAxC,CACA,GAAI,CAACR,QAAQ,CAACM,CAAD,CAAT,EAAwB,CAACG,KAAK,CAACC,OAAN,CAAcJ,CAAd,CAA7B,CACE,MAAOE,EAAP,CAEF,GAAMG,EAAK,CAAGR,CAAQ,CAAIG,CAAJ,CAA2B,CAACA,CAAD,CAAjD,CACA,GAAIK,CAAK,EAAmB,CAAf,CAAAA,CAAK,CAACC,MAAnB,CAA+B,oCACVD,CADU,MAC7B,2BAA0B,IAAfE,EAAe,SACxBL,CAAU,CAACD,CAAM,CAACM,CAAD,CAAP,CAAV,CAA2BA,CAC5B,CAH4B,+BAI9B,CACD,MAAOL,EACR,CAED,MAAO,SAASM,eAAT,CACLC,CADK,CAE8B,IAC7BC,EAAa,CAAGX,WAAW,CAACU,CAAK,CAACJ,KAAP,CAAcI,CAAK,CAACR,MAApB,CAA4BQ,CAAK,CAACZ,QAAlC,CADE,CAG7Bc,CAA4B,CAAG,SAACJ,CAAD,QACnCK,OAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCL,CAArC,CAAoDD,CAAK,CAACR,MAAN,CAAaM,CAAb,CAApD,CADmC,CAHF,CA8BnC,MAAO,CACLS,WAAW,CAzBiC,QAAxCA,YAAwC,CAACC,CAAD,QAAkB,UAACC,CAAD,CAAO,CACrE,GAAIvB,UAAU,CAACc,CAAD,CAAd,CAAuB,CACrB,GAAIU,EAAJ,CAEA,GAAIR,CAAU,CAACM,CAAD,CAAd,CAA8B,CAC5B,GAAMZ,EAAK,CAAGI,CAAK,CAACJ,KAAN,EAAe,EAA7B,CACAc,CAAQ,CAAGd,CAAK,CAACe,MAAN,CACT,SAACb,CAAD,QAAUE,EAAK,CAACR,MAAN,CAAaM,CAAb,IAAuBE,CAAK,CAACR,MAAN,CAAagB,CAAb,CAAjC,CADS,CAFiB,CAKJ,CAApB,GAAAE,CAAQ,CAACb,MALe,GAM1Ba,CAAQ,CAAG,IANe,CAQ7B,CARD,IASEA,EAAQ,CAAGV,CAAK,CAACJ,KAAN,oBAAkBI,CAAK,CAACJ,KAAxB,EAAiC,EAT9C,CAUEc,CAAQ,CAACE,IAAT,CAAcJ,CAAd,CAVF,CAYAR,CAAK,CAACa,QAAN,CAAe,CAAEJ,CAAC,CAADA,CAAF,CAAKb,KAAK,CAAEc,CAAZ,CAAf,CACD,CAEGrB,aAAa,CAACW,CAAD,CAnBoD,EAoBnEA,CAAK,CAACa,QAAN,CAAe,CAAEJ,CAAC,CAADA,CAAF,CAAKb,KAAK,CAAEY,CAAZ,CAAf,CAEH,CAtB6C,CAwBvC,CAELN,UAAU,CAAVA,CAFK,CAIR"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"aboutConsta.stand.js","names":["createStand","title","id","group","order"],"sources":["../../../../../src/docs/aboutConsta/aboutConsta.stand.tsx"],"sourcesContent":["import { createStand } from '##/stand/standConfig';\n\nexport default createStand({\n title: 'Дизайн-система Consta',\n id: 'aboutConsta',\n group: 'about',\n order: 10,\n});\n"],"mappings":"AAAA,OAASA,WAAT,+BAEA,cAAeA,YAAW,CAAC,CACzBC,KAAK,CAAE,wFADkB,CAEzBC,EAAE,CAAE,aAFqB,CAGzBC,KAAK,CAAE,OAHkB,CAIzBC,KAAK,CAAE,EAJkB,CAAD,CAA1B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.AboutData{margin-bottom:var(--space-s);margin-top:var(--space-s)}.AboutData-Link{color:var(--color-typo-link);transition:.3s ease}.AboutData-Link :hover{color:var(--color-typo-link-hover)}
|