@consta/uikit 4.0.1 → 4.1.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/__internal__/src/components/Table/RowsCollapse/TableRowsCollapse.js +1 -1
- package/__internal__/src/components/Table/RowsCollapse/TableRowsCollapse.js.map +1 -1
- package/__internal__/src/components/Table/Table.d.ts +2 -0
- package/__internal__/src/components/Table/Table.js +1 -1
- package/__internal__/src/components/Table/Table.js.map +1 -1
- package/package.json +1 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"./TableRowsCollapse.css";import React from"react";import{IconArrowDown}from"../../../icons/IconArrowDown/IconArrowDown";import{IconArrowUp}from"../../../icons/IconArrowUp/IconArrowUp";import{cn}from"../../../utils/bem";import{Button}from"../../Button/Button";export var cnTableRowsCollapse=cn("TableRowsCollapse");export var TableRowsCollapse=function(a){var b=a.level,c=a.children,d=a.isExpanded,e=a.toggleCollapse,f=a.withCollapseButton,g=a.isExpandedByDefault;return React.createElement("div",{style:{"--nesting-level":b},className:cnTableRowsCollapse(),onClick:e
|
|
1
|
+
import"./TableRowsCollapse.css";import React from"react";import{IconArrowDown}from"../../../icons/IconArrowDown/IconArrowDown";import{IconArrowUp}from"../../../icons/IconArrowUp/IconArrowUp";import{cn}from"../../../utils/bem";import{Button}from"../../Button/Button";export var cnTableRowsCollapse=cn("TableRowsCollapse");export var TableRowsCollapse=function(a){var b=a.level,c=a.children,d=a.isExpanded,e=a.toggleCollapse,f=a.withCollapseButton,g=a.isExpandedByDefault;return React.createElement("div",{style:{"--nesting-level":b},className:cnTableRowsCollapse(),onClick:e},!g&&f&&React.createElement("div",{className:cnTableRowsCollapse("buttonContainer")},React.createElement(Button,{"aria-expanded":d,iconLeft:d?IconArrowUp:IconArrowDown,iconSize:"s",size:"xs",onlyIcon:!0,view:"clear"})),React.createElement("div",{className:cnTableRowsCollapse("cellContainer",{withExpanderPadding:!g})},c))};
|
|
2
2
|
//# sourceMappingURL=TableRowsCollapse.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableRowsCollapse.js","names":["React","IconArrowDown","IconArrowUp","cn","Button","cnTableRowsCollapse","TableRowsCollapse","props","level","children","isExpanded","toggleCollapse","withCollapseButton","isExpandedByDefault","withExpanderPadding"],"sources":["../../../../../../src/components/Table/RowsCollapse/TableRowsCollapse.tsx"],"sourcesContent":["import './TableRowsCollapse.css';\n\nimport React from 'react';\n\nimport { IconArrowDown } from '../../../icons/IconArrowDown/IconArrowDown';\nimport { IconArrowUp } from '../../../icons/IconArrowUp/IconArrowUp';\nimport { cn } from '../../../utils/bem';\nimport { Button } from '../../Button/Button';\n\nexport type Props = {\n level: number;\n isExpandedByDefault?: boolean;\n toggleCollapse?: (e: React.SyntheticEvent) => void;\n isExpanded?: boolean;\n withCollapseButton?: boolean;\n children?: React.ReactNode;\n};\n\nexport const cnTableRowsCollapse = cn('TableRowsCollapse');\n\nexport const TableRowsCollapse: React.FC<Props> = (props) => {\n const {\n level,\n children,\n isExpanded,\n toggleCollapse,\n withCollapseButton,\n isExpandedByDefault,\n } = props;\n\n const style: React.CSSProperties & {\n '--nesting-level': number;\n } = { '--nesting-level': level };\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n style={style}\n className={cnTableRowsCollapse()}\n onClick={toggleCollapse}\n
|
|
1
|
+
{"version":3,"file":"TableRowsCollapse.js","names":["React","IconArrowDown","IconArrowUp","cn","Button","cnTableRowsCollapse","TableRowsCollapse","props","level","children","isExpanded","toggleCollapse","withCollapseButton","isExpandedByDefault","withExpanderPadding"],"sources":["../../../../../../src/components/Table/RowsCollapse/TableRowsCollapse.tsx"],"sourcesContent":["import './TableRowsCollapse.css';\n\nimport React from 'react';\n\nimport { IconArrowDown } from '../../../icons/IconArrowDown/IconArrowDown';\nimport { IconArrowUp } from '../../../icons/IconArrowUp/IconArrowUp';\nimport { cn } from '../../../utils/bem';\nimport { Button } from '../../Button/Button';\n\nexport type Props = {\n level: number;\n isExpandedByDefault?: boolean;\n toggleCollapse?: (e: React.SyntheticEvent) => void;\n isExpanded?: boolean;\n withCollapseButton?: boolean;\n children?: React.ReactNode;\n};\n\nexport const cnTableRowsCollapse = cn('TableRowsCollapse');\n\nexport const TableRowsCollapse: React.FC<Props> = (props) => {\n const {\n level,\n children,\n isExpanded,\n toggleCollapse,\n withCollapseButton,\n isExpandedByDefault,\n } = props;\n\n const style: React.CSSProperties & {\n '--nesting-level': number;\n } = { '--nesting-level': level };\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events\n <div\n style={style}\n className={cnTableRowsCollapse()}\n onClick={toggleCollapse}\n >\n {!isExpandedByDefault && withCollapseButton && (\n <div className={cnTableRowsCollapse('buttonContainer')}>\n <Button\n aria-expanded={isExpanded}\n iconLeft={isExpanded ? IconArrowUp : IconArrowDown}\n iconSize=\"s\"\n size=\"xs\"\n onlyIcon\n view=\"clear\"\n />\n </div>\n )}\n <div\n className={cnTableRowsCollapse('cellContainer', {\n withExpanderPadding: !isExpandedByDefault,\n })}\n >\n {children}\n </div>\n </div>\n );\n};\n"],"mappings":"AAAA,gCAEA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,aAAT,kDACA,OAASC,WAAT,8CACA,OAASC,EAAT,0BACA,OAASC,MAAT,2BAWA,MAAO,IAAMC,oBAAmB,CAAGF,EAAE,CAAC,mBAAD,CAA9B,CAEP,MAAO,IAAMG,kBAAkC,CAAG,SAACC,CAAD,CAAW,IAEzDC,EAFyD,CAQvDD,CARuD,CAEzDC,KAFyD,CAGzDC,CAHyD,CAQvDF,CARuD,CAGzDE,QAHyD,CAIzDC,CAJyD,CAQvDH,CARuD,CAIzDG,UAJyD,CAKzDC,CALyD,CAQvDJ,CARuD,CAKzDI,cALyD,CAMzDC,CANyD,CAQvDL,CARuD,CAMzDK,kBANyD,CAOzDC,CAPyD,CAQvDN,CARuD,CAOzDM,mBAPyD,CAc3D,MAEE,4BACE,KAAK,CALL,CAAE,kBAAmBL,CAArB,CAIF,CAEE,SAAS,CAAEH,mBAAmB,EAFhC,CAGE,OAAO,CAAEM,CAHX,EAKG,CAACE,CAAD,EAAwBD,CAAxB,EACC,2BAAK,SAAS,CAAEP,mBAAmB,CAAC,iBAAD,CAAnC,EACE,oBAAC,MAAD,EACE,gBAAeK,CADjB,CAEE,QAAQ,CAAEA,CAAU,CAAGR,WAAH,CAAiBD,aAFvC,CAGE,QAAQ,CAAC,GAHX,CAIE,IAAI,CAAC,IAJP,CAKE,QAAQ,GALV,CAME,IAAI,CAAC,OANP,EADF,CANJ,CAiBE,2BACE,SAAS,CAAEI,mBAAmB,CAAC,eAAD,CAAkB,CAC9CS,mBAAmB,CAAE,CAACD,CADwB,CAAlB,CADhC,EAKGJ,CALH,CAjBF,CA0BH,CA1CM"}
|
|
@@ -48,6 +48,7 @@ export declare type onCellClick = ({ e, type, rowId, columnIdx, ref, }: {
|
|
|
48
48
|
}) => void;
|
|
49
49
|
export declare type TableRow = {
|
|
50
50
|
id: string;
|
|
51
|
+
defaultExpand?: boolean;
|
|
51
52
|
rows?: TableRow[];
|
|
52
53
|
};
|
|
53
54
|
export declare type TableTreeRow<T extends TableRow> = {
|
|
@@ -109,6 +110,7 @@ export declare type TableProps<T extends TableRow> = {
|
|
|
109
110
|
headerVerticalAlign?: HeaderVerticalAlign;
|
|
110
111
|
zebraStriped?: ZebraStriped;
|
|
111
112
|
borderBetweenRows?: boolean;
|
|
113
|
+
defaultExpandAll?: boolean;
|
|
112
114
|
borderBetweenColumns?: boolean;
|
|
113
115
|
emptyRowsPlaceholder?: React.ReactNode;
|
|
114
116
|
className?: string;
|
|
@@ -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","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,{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.className,E=a.onRowHover,F=a.onRowClick,G=a.onRowCreate,H=a.onCellClick,I=a.getAdditionalClassName,J=a.rowCreateText,K=void 0===J?"+ \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443":J,L=a.lazyLoad,M=a.onSortBy,N=a.onFiltersUpdated,O=a.getTagLabel,P=a.getCellWrap,Q=a.isExpandedRowsByDefault,R=void 0!==Q&&Q,S=_objectWithoutProperties(a,_excluded),T=useHeaderData(g),U=T.headers,V=T.flattenedHeaders,W=T.lowHeaders,X=T.headerRowsRefs,Y=T.headerRowsHeights,Z=T.resizerTopOffsets,$=(null===(c=U[0][p-1])||void 0===c?void 0:c.position.gridIndex)+((null===(d=U[0][p-1])||void 0===d?void 0:d.position.colSpan)||1),_=function(){return W.map(function(a){return a.width})},aa=React.useState(_()),ba=_slicedToArray(aa,2),ca=ba[0],da=ba[1],ea=React.useMemo(function(){return k&&k.filter(function(a){return a.id&&a.field})},[k]);React.useEffect(function(){da(_())},[W.length]);var fa=React.useState([]),ga=_slicedToArray(fa,2),ha=ga[0],ia=ga[1],ja=React.useState(null),ka=_slicedToArray(ja,2),la=ka[0],ma=ka[1],na=React.useState(null),oa=_slicedToArray(na,2),pa=oa[0],qa=oa[1],ra=React.useState({top:0,left:0}),sa=_slicedToArray(ra,2),ta=sa[0],ua=sa[1],va=React.useRef(null),wa=React.useRef({}),xa=React.useRef({}),ya=useSelectedFilters(ea,N),za=ya.selectedFilters,Aa=ya.updateSelectedFilters,Ba=ya.removeOneSelectedFilter,Ca=ya.removeAllSelectedFilters,Da=React.useState([]),Ea=_slicedToArray(Da,2),Fa=Ea[0],Ga=Ea[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);ma(b)}},[g]),useComponentSize(va);var Ha=(null===(e=va.current)||void 0===e?void 0:e.clientHeight)||0,Ia=(null===(f=va.current)||void 0===f?void 0:f.clientWidth)||0,Ja=0<ta.left,Ka=0<ta.top,La=s&&s.onChange,Ma=function(a,b){da(updateAt(ca,a,b))},Na=useMemo(function(){var a=Object.values(wa.current).filter(isNotNil),b=a.map(function(a){return a.getBoundingClientRect().width}),c=getMergedArray(b,ca);return c.reduce(function(c,a){return(null!==c&&void 0!==c?c:0)+(null!==a&&void 0!==a?a:0)})},[ca,m]);React.useLayoutEffect(function(){var a=Object.values(wa.current).filter(isNotNil);if(0!==a.length){var b=a.map(function(a){return a.getBoundingClientRect().width});if(ia(b),a[0].getBoundingClientRect().left!==a[a.length-1].getBoundingClientRect().left){var c=getMergedArray(b,ca);return(null!==Na&&void 0!==Na?Na:Ia)<Ia&&(c[c.length-1]=void 0),da(c)}return 0<Ia&&!m?da(_()):void 0}},[Ia,Na]);var Oa=function(a){return getColumnSortByField(a)===(null===la||void 0===la?void 0:la.by)},Pa=function(a,b){return b>=p?void 0:getColumnLeftOffset({columnIndex:a,resizedColumnWidths:ca,initialColumnWidths:ha})},Qa=function(a){var b=a.id,c=a.e;s&&s.onChange&&s.onChange({id:s.id===b?void 0:b,e:c})},Ra=function(a){return function(b){return E&&E({id:a,e:b})}},Sa=function(a,b){return function(c){return G&&G({e:c,id:b,index:a})}},Ta=function(a,b){var c=Math.min(r,ha[a]),d=ca[a]||ha[a],e=Math.max(c,d+b);Ma(a,e);var f=va.current;a===ca.length-1&&0<b&&f&&f.scrollBy(b,0)},Ua=getColumnLeftOffset({columnIndex:p,resizedColumnWidths:ca,initialColumnWidths:ha}),Va=function(a){return a.map(function(a){var b,c=a.position.gridIndex,d=ca[c],e=ha[c],f=d||e,g=getColumnLeftOffset({columnIndex:c,resizedColumnWidths:ca,initialColumnWidths:ha}),h=p>a.position.topHeaderGridIndex,i=p>c||Ua+ta.left<g+f,j=0<((null===(b=za[a.accessor])||void 0===b?void 0:b.selected)||[]).length;return _objectSpread(_objectSpread({},a),{},{filterable:!!(ea&&fieldFiltersPresent(ea,a.accessor)),isSortingActive:Oa(a),isFilterActive:j,isResized:!!f&&f!==e,isSticky:h,showResizer:i,columnWidth:f,columnLeftOffset:g})})},Wa=Va(V),Xa=React.useMemo(function(){return h.some(function(a){var b;return!(!(null!==(b=a.rows)&&void 0!==b)||!b.length)})},[h]),Ya=sortingData(h,la,M),Za=ea&&isSelectedFiltersPresent(za)?filterTableData({data:Ya,filters:ea||[],selectedFilters:za}):Ya,$a=L||{},_a=$a.maxVisibleRows,ab=void 0===_a?210:_a,bb=$a.scrollableEl,cb=void 0===bb?va.current:bb,db=useLazyLoadData(ab,cb,!!L),eb=db.getSlicedRows,fb=db.setBoundaryRef,gb=transformRows(Za,Fa,R),hb=eb(gb),ib={"--table-grid-template-columns":getColumnsSize(ca),"--table-width":"".concat(Ia,"px")},jb=Va(W).some(function(a){return a.mergeCells}),kb=function(a){return function(){return Fa.includes(a)?void Ga(function(b){return b.filter(function(b){return b!==a})}):void Ga(function(b){return[].concat(_toConsumableArray(b),[a])})}},lb=function(a,b){var c,d=!(!(null!==(c=a.rows)&&void 0!==c)||!c.length)&&0===b,e={level:a.level,isExpandedByDefault:R};if(!d||R)return e;var f=Fa.includes(a.id),g=kb(a.id);return _objectSpread(_objectSpread({},e),{},{withCollapseButton:d,isExpanded:f,toggleCollapse:g})},mb=function(a,b,c){var d=a.renderCell?a.renderCell(b):b[a.accessor];if(!Xa||0!==c)return d;var e=lb(b,c);return React.createElement(TableRowsCollapse,e,d)},nb=useMemo(function(){var a,b=hb.length,c=null!==(a=hb.slice(-1).pop())&&void 0!==a?a:{},d=c.id;return G?React.createElement("div",{className:cnTable(b?"CreatRowCell":"RowWithoutCells")},React.createElement(Button,{size:createButtonSizeMap[j],form:"brick",label:K,view:"clear",className:cnTable("CreateRowButton"),onClick:Sa(b,d),width:"full"})):null},[K,hb.length,G]),ob=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=hb[b-1]&&j(hb[b-1][f]),l=j(a[f]),m={rowSpan:1,show:!1,style:{left:Pa(d,g.topHeaderGridIndex)}};if(e&&(hb[b-1]&&k!==l||0===b)){for(var n,o=b;o<hb.length&&hb[o+1]&&(n=j(hb[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},pb=function(a){null===H||void 0===H?void 0:H(a)};return React.createElement("div",Object.assign({},S,{ref:useForkRef([va,b]),className:cnTable({size:j,isResizable:m,zebraStriped:x,withBorderBottom:!Za.length},[D]),style:ib,onScroll:function handleScroll(a){a.target instanceof HTMLElement&&a.target===va.current&&ua({top:a.target.scrollTop,left:a.target.scrollLeft})}}),Va(W).map(function(a,b){return React.createElement(TableCell,{type:"resizer",key:b,ref:function(a){wa.current[b]=a},style:{left:Pa(b,b)},onContextMenu:function onContextMenu(a){return pb({e:a,type:"contextMenu",columnIdx:b,ref:{current:wa.current[b]}})},onClick:function onClick(a){return pb({e:a,type:"click",columnIdx:b,ref:{current:wa.current[b]}})},column:a,showVerticalShadow:Ja},m&&React.createElement(TableResizer,{height:Ha-Z[b],top:Z[b],isVisible:a.showResizer,onResize:function onResize(a){return Ta(b,a)},onDoubleClick:function onDoubleClick(){return Ma(b,ha[b])}}))}),React.createElement(TableHeader,{isStickyHeader:void 0!==n&&n,headersWithMetaData:Wa,headerRowsHeights:Y,headerRowsRefs:X,getStickyLeftOffset:Pa,stickyColumnsGrid:$,showVerticalCellShadow:Ja,headerVerticalAlign:w,getSortIcon:function getSortIcon(a){return Oa(a)&&("desc"===(null===la||void 0===la?void 0:la.order)?IconSortDown:IconSortUp)||IconUnsort},handleSortClick:function handleSortClick(a){var b=getNewSorting(la,getColumnSortByField(a),a.sortable&&(null===a||void 0===a?void 0:a.sortFn)||void 0),c=b?{sortingBy:b.by,sortOrder:b.order}:null;M&&M(c),ma(b)},handleFilterTogglerClick:function handleFilterTogglerClick(a){return function(){qa(pa===a?null:a)}},handleCellClick:pb,handleTooltipSave:function handleTooltipSave(a,b,c){Aa(a,b,c)},filters:ea,visibleFilter:pa,selectedFilters:za,showHorizontalCellShadow:Ka,borderBetweenColumns:A}),ea&&isSelectedFiltersPresent(za)&&React.createElement("div",{className:cnTable("RowWithoutCells")},React.createElement(TableSelectedOptionsList,{values:getSelectedFiltersList({filters:ea,selectedFilters:za,columns:W}),getTagLabel:O,onRemove:function removeSelectedFilter(a){return function(b){Ba(a,b)}}(ea),onReset:function resetSelectedFilters(){ea&&ea.length&&Ca(ea)}})),0<hb.length?hb.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:jb}),onMouseEnter:Ra(a.id),onMouseLeave:Ra(void 0),onClick:function onClick(b){return F&&F({id:a.id,e:b})}},Va(W).map(function(c,d){var e=ob(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){xa.current["".concat(d,"-").concat(a.id)]=c,setRef(fb(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===I||void 0===I?void 0:I({column:c,row:a,isActive:!!s&&s.id===a.id}),wrap:null===P||void 0===P?void 0:P(a),onContextMenu:function onContextMenu(b){return pb({e:b,type:"contextMenu",columnIdx:d,rowId:a.id,ref:{current:xa.current["".concat(d,"-").concat(a.id)]}})},onClick:function onClick(b){Qa({id:a.id,e:b}),pb({e:b,type:"click",columnIdx:d,rowId:a.id,ref:{current:xa.current["".concat(d,"-").concat(a.id)]}})},column:c,verticalAlign:u,isClickable:!!La,showVerticalShadow:Ja&&(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},mb(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))),nb)};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.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","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","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","useEffect","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","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, { 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 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 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 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 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","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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@consta/uikit",
|
|
3
|
-
"version": "4.0
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"ui-kit",
|
|
6
6
|
"design-system",
|
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
"date-fns": "^2.29.1",
|
|
21
21
|
"focus-trap-react": "8.7.0",
|
|
22
22
|
"imask": "^6.4.2",
|
|
23
|
-
"mdx-loader": "^3.0.2",
|
|
24
23
|
"react-dropzone": "11.3.4",
|
|
25
24
|
"react-textarea-autosize": "^8.3.4",
|
|
26
25
|
"react-transition-group": "^4.4.5"
|