@stenajs-webui/grid 17.5.0 → 17.8.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.
Files changed (113) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/components/GridHooksTable.d.ts +26 -26
  3. package/dist/config/TableConfig.d.ts +11 -11
  4. package/dist/features/grid-cell/hooks/UseEditableCell.d.ts +59 -59
  5. package/dist/features/grid-cell/hooks/UseGridCell.d.ts +64 -64
  6. package/dist/features/grid-cell/hooks/UseGridNavigation.d.ts +82 -82
  7. package/dist/features/grid-cell/hooks/UseGridNavigationOptionsFromContext.d.ts +2 -2
  8. package/dist/features/grid-cell/hooks/UseRevertableValue.d.ts +9 -9
  9. package/dist/features/{standard-table/features/sorting/__tests__/MultitypeComparator.test.d.ts → grid-cell/hooks/__tests__/TextInput.test.d.ts} +1 -1
  10. package/dist/features/standard-table/components/ColGroups.d.ts +5 -5
  11. package/dist/features/standard-table/components/StandardTable.d.ts +82 -82
  12. package/dist/features/standard-table/components/StandardTableCell.d.ts +11 -11
  13. package/dist/features/standard-table/components/StandardTableCellUi.d.ts +17 -17
  14. package/dist/features/standard-table/components/StandardTableContent.d.ts +7 -7
  15. package/dist/features/standard-table/components/StandardTableHeadItem.d.ts +9 -9
  16. package/dist/features/standard-table/components/StandardTableHeadRow.d.ts +7 -7
  17. package/dist/features/standard-table/components/StandardTableRow.d.ts +12 -12
  18. package/dist/features/standard-table/components/StandardTableRowExpansion.d.ts +6 -6
  19. package/dist/features/standard-table/components/StandardTableRowList.d.ts +10 -10
  20. package/dist/features/standard-table/components/TextCell.d.ts +6 -6
  21. package/dist/features/standard-table/components/TrWithHoverBackground.d.ts +11 -11
  22. package/dist/features/standard-table/config/StandardTableColumnConfig.d.ts +154 -154
  23. package/dist/features/standard-table/config/StandardTableColumnGroupConfig.d.ts +11 -11
  24. package/dist/features/standard-table/config/StandardTableConfig.d.ts +152 -152
  25. package/dist/features/standard-table/config/StandardTableInfiniteConfig.d.ts +2 -2
  26. package/dist/features/standard-table/context/GroupConfigsAndIdsForRowsContext.d.ts +5 -5
  27. package/dist/features/standard-table/context/OnKeyDownContext.d.ts +4 -4
  28. package/dist/features/standard-table/context/StandardTableColumnOrderContext.d.ts +4 -4
  29. package/dist/features/standard-table/context/StandardTableStateContext.d.ts +21 -21
  30. package/dist/features/standard-table/context/StandardTableVariantContext.d.ts +4 -4
  31. package/dist/features/standard-table/context/StickyPropsPerColumnContext.d.ts +4 -4
  32. package/dist/features/standard-table/context/TotalNumColumnsContext.d.ts +3 -3
  33. package/dist/features/standard-table/features/checkboxes/StandardTableRowCheckbox.d.ts +13 -13
  34. package/dist/features/standard-table/features/checkboxes/UseRowCheckbox.d.ts +5 -5
  35. package/dist/features/standard-table/features/checkboxes/UseTableHeadCheckbox.d.ts +5 -5
  36. package/dist/features/standard-table/features/column-groups/ColumnGroupFactory.d.ts +7 -7
  37. package/dist/features/standard-table/features/column-groups/ColumnGroupRow.d.ts +6 -6
  38. package/dist/features/standard-table/features/column-groups/ColumnInGroup.d.ts +12 -12
  39. package/dist/features/standard-table/features/column-groups/StickyHeaderPropsFactory.d.ts +2 -2
  40. package/dist/features/standard-table/features/column-index-per-column-id/ColumnIndexCalculator.d.ts +7 -7
  41. package/dist/features/standard-table/features/column-index-per-column-id/ColumnIndexPerColumnIdContext.d.ts +4 -4
  42. package/dist/features/standard-table/features/expand-collapse/StandardTableRowExpandButton.d.ts +9 -9
  43. package/dist/features/standard-table/features/expand-collapse/UseExpandCollapseActions.d.ts +4 -4
  44. package/dist/features/standard-table/features/expand-collapse/UseTableHeadExpandCollapse.d.ts +4 -4
  45. package/dist/features/standard-table/features/sorting/MultitypeComparator.d.ts +3 -3
  46. package/dist/features/standard-table/features/sorting/UseTableSortHeader.d.ts +9 -9
  47. package/dist/features/standard-table/features/sticky-columns/StickyColumnGroupOffsetCalculator.d.ts +10 -10
  48. package/dist/features/standard-table/features/sticky-columns/StickyColumnGroupValidator.d.ts +4 -4
  49. package/dist/features/standard-table/features/sticky-columns/StickyPropsPerColumnCalculator.d.ts +5 -5
  50. package/dist/features/standard-table/features/sticky-columns/types.d.ts +11 -11
  51. package/dist/features/standard-table/features/summary-row/SummaryCellColSpanCalculator.d.ts +7 -7
  52. package/dist/features/standard-table/features/summary-row/SummaryRowVisibilityCalculator.d.ts +3 -3
  53. package/dist/features/standard-table/features/summary-row/components/StandardTableSummaryRow.d.ts +6 -6
  54. package/dist/features/standard-table/features/summary-row/components/SummaryCell.d.ts +10 -10
  55. package/dist/features/standard-table/features/summary-row/components/SummaryRowSwitcher.d.ts +6 -6
  56. package/dist/features/standard-table/helpers/cell-renderers/editable-text-cell/EditableTextCell.d.ts +2 -2
  57. package/dist/features/standard-table/helpers/cell-renderers/editable-text-cell/EditableTextCellWithStatus.d.ts +3 -3
  58. package/dist/features/standard-table/hooks/UseCellBackground.d.ts +3 -3
  59. package/dist/features/standard-table/hooks/UseColumnConfigById.d.ts +4 -4
  60. package/dist/features/standard-table/hooks/UseColumnValueResolver.d.ts +1 -1
  61. package/dist/features/standard-table/hooks/UseLocalStateTableContext.d.ts +5 -5
  62. package/dist/features/standard-table/hooks/UseStandardTableConfig.d.ts +7 -7
  63. package/dist/features/standard-table/redux/ReducerIdFactory.d.ts +3 -3
  64. package/dist/features/standard-table/redux/StandardTableActionsAndSelectors.d.ts +19 -19
  65. package/dist/features/standard-table/redux/StandardTableReducer.d.ts +15 -15
  66. package/dist/features/standard-table/stories/StandardTableStoryHelper.d.ts +18 -18
  67. package/dist/features/standard-table/types/StandardTableOnKeyDown.d.ts +3 -3
  68. package/dist/features/standard-table/util/ActionsFactory.d.ts +14 -14
  69. package/dist/features/standard-table/util/CellBorderCalculator.d.ts +2 -2
  70. package/dist/features/standard-table/util/ColumnCounter.d.ts +2 -2
  71. package/dist/features/standard-table/util/FilterItemsOnEnabledCheckboxes.d.ts +2 -2
  72. package/dist/features/standard-table/util/IdListPartial.d.ts +1 -1
  73. package/dist/features/standard-table/util/LabelFormatter.d.ts +2 -2
  74. package/dist/features/table-ui/components/CrudStatusIndicator.d.ts +8 -8
  75. package/dist/features/table-ui/components/ModifiedField.d.ts +11 -11
  76. package/dist/features/table-ui/components/cells/EditableTextCellWithCrudAndModified.d.ts +19 -19
  77. package/dist/features/table-ui/components/table/SmallTableCell.d.ts +6 -6
  78. package/dist/features/table-ui/components/table/SmallTableHead.d.ts +6 -6
  79. package/dist/features/table-ui/components/table/SortOrderIcon.d.ts +11 -11
  80. package/dist/features/table-ui/components/table/TableCell.d.ts +5 -5
  81. package/dist/features/table-ui/components/table/TableColumnGroupHead.d.ts +10 -10
  82. package/dist/features/table-ui/components/table/TableHeadItem.d.ts +16 -16
  83. package/dist/features/table-ui/components/table/TableHeadRow.d.ts +7 -7
  84. package/dist/features/table-ui/components/table/TableRow.d.ts +7 -7
  85. package/dist/features/table-ui/hooks/UseSortOrderColumnHead.d.ts +11 -11
  86. package/dist/index.d.ts +49 -49
  87. package/dist/index.es.js +2722 -2236
  88. package/dist/index.es.js.map +1 -1
  89. package/dist/index.js +9 -2348
  90. package/dist/index.js.map +1 -1
  91. package/dist/storybook-helpers/storybook-controls.d.ts +46 -46
  92. package/dist/util/DirectionCalculator.d.ts +8 -8
  93. package/dist/util/DomIdValidator.d.ts +1 -1
  94. package/dist/util/GridHookOptionsValidator.d.ts +3 -3
  95. package/dist/util/NumberBoundsWrapper.d.ts +3 -3
  96. package/dist/util/bounds/NumberBoundsWrapper.d.ts +9 -9
  97. package/package.json +12 -13
  98. package/dist/features/standard-table/features/sticky-columns/__tests__/StickyColumnGroupOffsetCalculator.test.d.ts +0 -1
  99. package/dist/features/standard-table/features/sticky-columns/__tests__/StickyColumnGroupValidator.test.d.ts +0 -1
  100. package/dist/features/standard-table/features/summary-row/__tests__/SummaryCellColSpanCalculator.test.d.ts +0 -1
  101. package/dist/features/standard-table/stories/ExpandableRows.stories.d.ts +0 -8
  102. package/dist/features/standard-table/stories/FewColumns.stories.d.ts +0 -8
  103. package/dist/features/standard-table/stories/Fields.stories.d.ts +0 -9
  104. package/dist/features/standard-table/stories/GroupedColumns.stories.d.ts +0 -8
  105. package/dist/features/standard-table/stories/Sorting.stories.d.ts +0 -8
  106. package/dist/features/standard-table/stories/StandardTable.stories.d.ts +0 -13
  107. package/dist/features/standard-table/stories/StandardTableHorror.stories.d.ts +0 -35
  108. package/dist/features/standard-table/stories/States.stories.d.ts +0 -10
  109. package/dist/features/standard-table/stories/Sticky.stories.d.ts +0 -11
  110. package/dist/features/standard-table/stories/Waitlist.stories.d.ts +0 -6
  111. package/dist/features/standard-table/util/__tests__/IdListPartial.test.d.ts +0 -1
  112. package/dist/features/table-ui/stories/TableUi.stories.d.ts +0 -7
  113. package/dist/util/bounds/__tests__/NumberBoundsWrapper.test.d.ts +0 -1
package/dist/index.js CHANGED
@@ -1,2350 +1,11 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var React = require('react');
6
- var faExclamationTriangle = require('@fortawesome/free-solid-svg-icons/faExclamationTriangle');
7
- var elements = require('@stenajs-webui/elements');
8
- var theme = require('@stenajs-webui/theme');
9
- var tooltip = require('@stenajs-webui/tooltip');
10
- var core = require('@stenajs-webui/core');
11
- var faEllipsisV = require('@fortawesome/free-solid-svg-icons/faEllipsisV');
12
- var faInfoCircle = require('@fortawesome/free-solid-svg-icons/faInfoCircle');
13
- var faSortAlphaDown = require('@fortawesome/free-solid-svg-icons/faSortAlphaDown');
14
- var faSortAlphaUp = require('@fortawesome/free-solid-svg-icons/faSortAlphaUp');
15
- var faSortAmountDownAlt = require('@fortawesome/free-solid-svg-icons/faSortAmountDownAlt');
16
- var faSortAmountUpAlt = require('@fortawesome/free-solid-svg-icons/faSortAmountUpAlt');
17
- var faSortNumericDown = require('@fortawesome/free-solid-svg-icons/faSortNumericDown');
18
- var faSortNumericUp = require('@fortawesome/free-solid-svg-icons/faSortNumericUp');
19
- var cx = require('classnames');
20
- var faArrowRight = require('@fortawesome/free-solid-svg-icons/faArrowRight');
21
- var forms = require('@stenajs-webui/forms');
22
- var reactRedux = require('react-redux');
23
- var redux = require('@stenajs-webui/redux');
24
- var redux$1 = require('redux');
25
- var panels = require('@stenajs-webui/panels');
26
- var lodash = require('lodash');
27
- var faChevronDown = require('@fortawesome/free-solid-svg-icons/faChevronDown');
28
- var faChevronRight = require('@fortawesome/free-solid-svg-icons/faChevronRight');
29
- var styled = require('@emotion/styled');
30
-
31
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
32
-
33
- function _interopNamespace(e) {
34
- if (e && e.__esModule) return e;
35
- var n = Object.create(null);
36
- if (e) {
37
- Object.keys(e).forEach(function (k) {
38
- if (k !== 'default') {
39
- var d = Object.getOwnPropertyDescriptor(e, k);
40
- Object.defineProperty(n, k, d.get ? d : {
41
- enumerable: true,
42
- get: function () { return e[k]; }
43
- });
44
- }
45
- });
1
+ (function(){ try {var elementStyle = document.createElement('style'); elementStyle.appendChild(document.createTextNode("._tableRow_1cphw_1:focus-within{background:var(--focus-within-background, var(--lhds-color-blue-50))}._standardTable_1iok0_1{--swui-standard-table-height: 40px;--swui-sticky-header-shadow: 2px 4px 4px 0 rgba(0, 0, 0, .05);--swui-sticky-header-shadow-and-right: var(--swui-sticky-header-shadow), var(--swui-sticky-column-shadow-right);--swui-sticky-header-shadow-and-left: var(--swui-sticky-header-shadow), var(--swui-sticky-column-shadow-left);--swui-sticky-column-shadow-right: 4px 2px 4px 0 rgba(0, 0, 0, .05);--swui-sticky-column-shadow-left: -4px 2px 4px 0 rgba(0, 0, 0, .05);--swui-sticky-header-z-index: 10;--swui-sticky-column-z-index: 20;--swui-sticky-group-group-z-index: 25;--swui-sticky-group-header-z-index: 26;--swui-sticky-header-column-group-z-index: 30;--swui-sticky-column-group-label-z-index: 40;--swui-sticky-header-in-sticky-column-z-index: 50;--swui-sticky-popover-z-index: 60;--swui-expand-cell-width: 45px;--swui-checkbox-cell-width: 45px;--swui-expand-highlight-border-width: 2px;--current-row-height: var(--swui-standard-table-height);--current-left-offset: 0px;border-spacing:0}._standardTable_1iok0_1 td{border-top:1px solid var(--lhds-color-ui-300);padding:0}._standardTable_1iok0_1 th{padding:0}._standardTable_1iok0_1._relaxed_1iok0_37{--current-row-height: 48px}._standardTable_1iok0_1._condensed_1iok0_41{--current-row-height: 32px}._standardTable_1iok0_1._compact_1iok0_45{--current-row-height: 24px}._standardTableCell_1xzcm_1{outline:none}._textCell_1yv6v_1{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._summaryRow_12x8k_1 td{border-top:1px solid var(--lhds-color-ui-400)}")); document.head.appendChild(elementStyle);} catch(e) {console.error('vite-plugin-css-injected-by-js', e);} })();"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var i=require("react"),r=require("react/jsx-runtime"),oe=require("@fortawesome/free-solid-svg-icons/faExclamationTriangle"),R=require("@stenajs-webui/elements"),H=require("@stenajs-webui/theme"),W=require("@stenajs-webui/tooltip"),h=require("@stenajs-webui/core"),Lt=require("@fortawesome/free-solid-svg-icons/faEllipsisV"),Dt=require("@fortawesome/free-solid-svg-icons/faSortAlphaDown"),Ht=require("@fortawesome/free-solid-svg-icons/faSortAlphaUp"),Nt=require("@fortawesome/free-solid-svg-icons/faSortAmountDownAlt"),qt=require("@fortawesome/free-solid-svg-icons/faSortAmountUpAlt"),zt=require("@fortawesome/free-solid-svg-icons/faSortNumericDown"),Ft=require("@fortawesome/free-solid-svg-icons/faSortNumericUp"),_t=require("classnames"),$t=require("@fortawesome/free-solid-svg-icons/faArrowRight"),X=require("@stenajs-webui/forms"),he=require("react-redux"),I=require("@stenajs-webui/redux"),Kt=require("redux"),qe=require("@stenajs-webui/panels"),pe=require("lodash"),ze=require("@fortawesome/free-solid-svg-icons/faChevronDown"),Fe=require("@fortawesome/free-solid-svg-icons/faChevronRight"),Vt=require("@emotion/styled");function _e(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}function Wt(e){if(e&&e.__esModule)return e;var t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});return e&&Object.keys(e).forEach(function(o){if(o!=="default"){var n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,n.get?n:{enumerable:!0,get:function(){return e[o]}})}}),t.default=e,Object.freeze(t)}var T=Wt(i),$e=_e(_t),Ut=_e(Vt);const fe=T.createContext({}),Zt=({children:e,numCols:t,numRows:o,tableId:n,wrap:s})=>{const l=i.useMemo(()=>({numCols:t,numRows:o,tableId:n,wrap:s}),[t,o,n,s]);return r.jsx(fe.Provider,{value:l,children:e})},re=e=>{const{loading:t,creating:o,deleting:n,updating:s,hasError:l}=e;return Boolean(t||o||n||s||l)},we=({crudStatus:e})=>{if(!e||!re(e))return null;const{errorMessage:t,hasError:o,loading:n,creating:s,deleting:l,updating:c}=e;if(n||s||l||c)return r.jsx(R.InputSpinner,{color:H.cssColor("--lhds-color-ui-500")});if(o){const a=r.jsx(R.Icon,{icon:oe.faExclamationTriangle,color:H.cssColor("--lhds-color-orange-600"),size:14});return r.jsx(r.Fragment,{children:t?r.jsx(W.Tooltip,{label:t,zIndex:100,children:a}):a})}return null},Ke=({isEditable:e,warningOnEmpty:t,value:o,modifiedField:n,crudStatus:s})=>{const l=t&&(n==null?void 0:n.modified)&&(n==null?void 0:n.newValue)==="",c=s&&re(s),a=l||c;return r.jsxs(r.Fragment,{children:[r.jsx(h.Text,{color:e?"var(--swui-primary-action-color)":void 0,variant:n!=null&&n.modified?"bold":void 0,children:o}),(n==null?void 0:n.newValue)!==void 0&&r.jsxs(r.Fragment,{children:[r.jsx(h.Indent,{children:r.jsx(R.Icon,{icon:R.stenaArrowRight,size:12})}),r.jsx(h.Text,{color:"var(--swui-primary-action-color)",variant:"bold",children:n.newValue})]}),a&&r.jsx(h.Space,{}),l?r.jsx(W.Tooltip,{label:t,zIndex:100,children:r.jsx(R.Icon,{icon:oe.faExclamationTriangle,color:H.cssColor("--lhds-color-orange-600"),size:14})}):r.jsx(we,{crudStatus:s})]})},Ve=({alignItems:e="center",justifyContent:t="flex-start",overflow:o="hidden",indent:n=1,...s})=>r.jsx(h.Row,{height:"100%",alignItems:e,justifyContent:t,overflow:o,indent:n,...s}),We="var(--lhds-color-ui-300)",Ue="var(--lhds-color-blue-500)",ve="var(--lhds-color-blue-50)",Ze="var(--lhds-color-blue-100)",U=`1px solid ${We}`,Je="1px solid transparent",ne="var(--swui-expand-highlight-border-width) solid transparent",be=`var(--swui-expand-highlight-border-width) solid ${Ue}`,se="40px",le="40px",ge="40px",Jt=e=>r.jsx(Ve,{width:ge,justifyContent:"center",...e}),Be=({iconVariant:e="amount",direction:t})=>r.jsx(h.Box,{width:"14px",children:r.jsx(R.Icon,{size:14,color:H.cssColor("--lhds-color-ui-500"),icon:Xt(t,e)})}),Xt=(e,t)=>{switch(t){case"alpha":return e==="up"?Ht.faSortAlphaUp:Dt.faSortAlphaDown;case"numeric":return e==="up"?Ft.faSortNumericUp:zt.faSortNumericDown;case"amount":return e==="up"?qt.faSortAmountUpAlt:Nt.faSortAmountDownAlt;default:return h.exhaustSwitchCaseElseThrow(t)}},ce=T.memo(({label:e,arrow:t,onClick:o,children:n,selected:s,popoverContent:l,loading:c,infoIconTooltipText:a,overflow:u="hidden",alignRight:x,sortOrderIconVariant:d,...p})=>{const f=i.useRef(null),C=o?{cursor:"pointer",userSelect:"none"}:void 0,w=!e&&!t&&!a;return r.jsxs(h.Row,{height:"100%",alignItems:"center",ref:f,overflow:u,justifyContent:x?"flex-end":"flex-start",...p,children:[r.jsxs(h.Row,{alignItems:"center",indent:!0,children:[!t&&x&&r.jsxs(r.Fragment,{children:[r.jsx(h.Space,{}),r.jsx(h.Box,{width:"14px"}),r.jsx(h.Space,{num:.5})]}),(n||e)&&r.jsxs(h.Row,{onClick:o,style:C,alignItems:"center",children:[n&&r.jsxs(r.Fragment,{children:[n,!w&&r.jsx(h.Space,{num:.5})]}),t&&x&&r.jsxs(r.Fragment,{children:[r.jsx(h.Space,{}),r.jsx(Be,{direction:t,iconVariant:d}),r.jsx(h.Space,{num:.5})]}),e&&r.jsx(h.Heading,{variant:"h6",children:e}),t&&!x&&r.jsxs(r.Fragment,{children:[r.jsx(h.Space,{num:.5}),r.jsx(Be,{direction:t,iconVariant:d}),r.jsx(h.Space,{})]})]}),a&&r.jsxs(r.Fragment,{children:[r.jsx(h.Space,{}),r.jsxs(h.Row,{onClick:m=>m.stopPropagation(),children:[r.jsx(W.Tooltip,{label:a,zIndex:"var(--swui-sticky-popover-z-index)",children:r.jsx(R.Icon,{icon:R.stenaInfoCircle,size:14,color:H.cssColor("--lhds-color-blue-400")})}),r.jsx(h.Space,{})]})]})]}),r.jsx(h.Row,{children:c?r.jsx(R.InputSpinner,{}):l?r.jsx(W.Popover,{content:l,trigger:"click",zIndex:1e3,disablePadding:!0,variant:"outlined",arrow:!1,children:r.jsx(R.FlatButton,{leftIcon:Lt.faEllipsisV,size:"small"})}):null}),!t&&!x&&r.jsxs(r.Fragment,{children:[r.jsx(h.Space,{}),r.jsx(h.Box,{width:"14px"}),r.jsx(h.Space,{num:.5})]})]})}),Yt=e=>r.jsx(ce,{width:ge,justifyContent:"center",...e}),Qt=({label:e,flex:t,width:o,indent:n=1,height:s=le})=>r.jsx(ce,{width:o,flex:t,height:s,children:r.jsx(h.Box,{indent:n,spacing:!0,children:r.jsx(h.Text,{variant:"bold",children:e})})}),eo=T.memo(({style:e,height:t=le,...o})=>r.jsx(h.Row,{style:e,height:t,...o})),to="_tableRow_1cphw_1";var oo={tableRow:to};const ro=({hideBorderTop:e,height:t=le,className:o,...n})=>r.jsx(h.Row,{borderTop:e?Je:U,height:t,className:$e.default(oo.tableRow,o),...n}),Xe=e=>{const[t,o]=i.useState(e),n=i.useRef(e),s=i.useRef(e),l=i.useCallback(d=>{o(d),s.current=d},[o,s]);i.useEffect(()=>{l(e)},[l,e]);const c=i.useCallback(()=>{n&&l(n.current)},[l,n]),a=i.useCallback(d=>{n.current=t,d&&l(d)},[t,l]),u=i.useCallback(d=>n.current=d,[n]),x=i.useCallback(()=>s.current,[s]);return{value:t,setValue:l,setRevertValue:u,revert:c,commit:a,getValue:x}},no=e=>({altKey:e.altKey,charCode:e.charCode,ctrlKey:e.ctrlKey,key:e.key,keyCode:e.keyCode,locale:e.locale,location:e.location,metaKey:e.metaKey,repeat:e.repeat,shiftKey:e.shiftKey,which:e.which}),so=e=>e,Ye=(e,{isEditable:t=!1,allowedInputType:o="all",onChange:n,onStartEditing:s,onStopEditing:l,transformEnteredValue:c=so})=>{const[a,u]=i.useState(!1),[x,d]=i.useState(void 0),p=Xe(e),{getValue:f,revert:C,setValue:w,setRevertValue:m}=p,v=i.useCallback(b=>{t&&(w(e),m(e),u(!0),s&&s(b))},[t,s,m,w,e]),g=i.useCallback(()=>{t&&(u(!1),l&&l(),n&&n(f()))},[t,n,l,f,u]),y=i.useCallback(()=>{t&&(u(!1),l&&l(),C())},[t,l,C,u]);return{onKeyDown:i.useMemo(()=>ho(a,t,v,d,o,c,p),[a,t,v,d,o,c,p]),isEditing:a,lastKeyEvent:x,revertableValue:p,startEditing:v,stopEditing:g,stopEditingAndRevert:y,onDoubleClick:v}},lo=e=>e==="all"||e==="numeric"||e==="alphanumeric",co=e=>e==="all"||e==="alphanumeric"||e==="letters",ao=e=>!!e.match(/^[-+*<>]$/),io=e=>!!e.match(/^[a-zA-Z0-9]$/),uo=e=>!isNaN(parseInt(e,10)),ho=(e,t,o,n,s,l,c)=>a=>{if(!(a.ctrlKey||a.metaKey||a.shiftKey)){if(a.key==="Enter"&&t)n(void 0),o(),c.commit(),a.preventDefault(),a.stopPropagation();else if(t){const u=no(a);(uo(a.key)&&lo(s)||io(a.key)&&co(s)||ao(a.key))&&(o(u),n(u),c.commit(),c.setValue(l(u.key)),a.preventDefault(),a.stopPropagation())}}},xo=(e,t,o,n)=>{let s=e,l=t;return t>n&&(l=0),t<0&&(l=n),e>o&&(s=0),e<0&&(s=o),{realX:s,realY:l}},Le=(e,t,o)=>Math.max(Math.min(e,o),t),po=(e,t,o)=>({rowIndex:Le(e.rowIndex,0,t),colIndex:Le(e.colIndex,0,o)}),mo=(e,t,o)=>{const n=xo(e.colIndex,e.rowIndex,o,t);return{rowIndex:n.realY,colIndex:n.realX}},Co=(e,t,o,n,s,l="clamped")=>{const c=fo(e,t,s);return l==="clamped"?po(c,o-1,n-1):l==="wrapped"?mo(c,o-1,n-1):c},fo=(e,t,o)=>o==="up"?{rowIndex:e-1,colIndex:t}:o==="down"?{rowIndex:e+1,colIndex:t}:o==="left"?{rowIndex:e,colIndex:t-1}:o==="right"?{rowIndex:e,colIndex:t+1}:{rowIndex:e,colIndex:t},wo=e=>e.replace(/^[^a-z]+|[^\w:.-]+/gi,""),vo=e=>{if(!e.tableId)throw new Error("tableId is required.");if(e.numRows==null)throw new Error("numRows is required.");if(e.numCols==null)throw new Error("numCols is required.");return e},ye=e=>{const t=i.useContext(fe);return i.useMemo(()=>vo({...t,...e}),[t,e])},Qe=e=>{const{rowIndex:t,colIndex:o,numRows:n,numCols:s,tableId:l,edgeMode:c,onCellMove:a,onCellNavigation:u}=ye(e),x=i.useMemo(()=>bo(l,t,o,n,s,c,a,u),[l,t,o,n,s,c,a,u]),d=i.useMemo(()=>go(x),[x]),p=i.useMemo(()=>me(l,t,o),[l,t,o]),f=i.useMemo(()=>({tabIndex:0,onKeyDown:d,id:p}),[d,p]);return{focusOnCell:je,moveHandler:x,requiredProps:f}},bo=(e,t,o,n,s,l,c,a)=>u=>{const x=Co(t,o,n,s,u,l),d=o!==x.colIndex,p=t!==x.rowIndex;(d||p)&&(c&&c({direction:u,fromRowIndex:t,fromColIndex:o,rowIndex:x.rowIndex,colIndex:x.colIndex,colDidChange:d,rowDidChange:p}),je(e,x)),a&&a({direction:u,fromRowIndex:t,fromColIndex:o,rowIndex:x.rowIndex,colIndex:x.colIndex,colDidChange:d,rowDidChange:p,cellDidChange:d||p})},me=(e,t,o)=>wo(`table-${e}-${t}-${o}`),go=e=>t=>t.key==="ArrowLeft"?(e("left"),t.preventDefault(),t.stopPropagation(),!0):t.key==="ArrowUp"?(e("up"),t.preventDefault(),t.stopPropagation(),!0):t.key==="ArrowRight"?(e("right"),t.preventDefault(),t.stopPropagation(),!0):t.key==="ArrowDown"?(e("down"),t.preventDefault(),t.stopPropagation(),!0):!1,je=(e,t)=>{const o=document.querySelector(`#${me(e,t.rowIndex,t.colIndex)}`)||document.querySelector(`#${me(e,t.rowIndex,t.colIndex)}`);o&&o.focus()},Y=(e,t)=>{const{tableId:o}=ye(t),n=Qe(t),s=Ye(e,t),l=i.useMemo(()=>({rowIndex:t.rowIndex,colIndex:t.colIndex}),[t.rowIndex,t.colIndex]),c=i.useCallback(()=>{s.startEditing(),n.focusOnCell(o,l)},[s,n,o,l]),a=i.useCallback(()=>{s.stopEditing(),n.focusOnCell(o,l)},[s,n,o,l]),u=i.useCallback(()=>{s.stopEditingAndRevert(),n.focusOnCell(o,l)},[s,n,o,l]),x=i.useCallback(C=>{s.stopEditing(),n.moveHandler(C)},[s,n]),d=i.useCallback(C=>{n.moveHandler(C)},[n]),p=i.useCallback(C=>{s.isEditing||n.requiredProps.onKeyDown(C)||s.onKeyDown(C)},[s,n.requiredProps]),f=i.useMemo(()=>({...n.requiredProps,onKeyDown:p,onDoubleClick:s.onDoubleClick}),[p,s.onDoubleClick,n.requiredProps]);return{isEditing:s.isEditing,lastKeyEvent:s.lastKeyEvent,editorValue:s.revertableValue.value,setEditorValue:s.revertableValue.setValue,revertEditorValue:s.revertableValue.revert,requiredProps:f,move:d,startEditing:c,stopEditing:a,stopEditingAndRevert:u,stopEditingAndMove:x}},yo=function({allowedInputType:t,value:o="",entityId:n,isEditable:s,rowIndent:l,crudStatusRedux:c,modifiedFieldsRedux:a,colIndex:u,rowIndex:x,numCols:d,numRows:p,warningOnEmpty:f}){const C=he.useDispatch(),w=he.useSelector(a.selectors.getState),m=he.useSelector(c.selectors.getState),v=w.entities[n],g=m.entities[n],y=i.useCallback((L="")=>{C(L===o?a.actions.clearEntity(n):a.actions.setEntity({id:n,originalValue:o,newValue:L,modified:!0}))},[C,n,a.actions,o]),{isEditing:k,stopEditing:b,editorValue:A,setEditorValue:j,stopEditingAndRevert:O,stopEditingAndMove:E,lastKeyEvent:M,requiredProps:{onKeyDown:P,...N}}=Y(o,{rowIndex:x,colIndex:u,numCols:d,numRows:p,tableId:"serviceManningMatrixTable",onChange:y,isEditable:s,allowedInputType:t}),B=i.useCallback(L=>{L.key==="Delete"?(C(a.actions.clearEntity(n)),C(c.actions.setEntityFields(n,{hasError:!1,errorMessage:void 0}))):P(L)},[P,n,C,a.actions,c.actions]);return r.jsxs(h.Row,{height:se,width:"100%",borderBottom:U,hoverBackground:"var(--ui7)",alignItems:"center",children:[l&&r.jsx(h.Indent,{num:l}),r.jsx(h.Row,{width:"100%",height:"100%",justifyContent:"flex-end",alignItems:"center",border:"1px solid transparent",borderRadius:"4px",focusBorder:k?void 0:"1px solid var(--primary-action-color)",hoverBorder:k?void 0:"var(--ui5) solid 1px;",onKeyDown:B,...N,children:r.jsx(h.Indent,{row:!0,alignItems:"center",children:k?r.jsx(X.TextInput,{onValueChange:j,value:A,onDone:b,onEsc:O,autoFocus:!0,selectAllOnMount:!M,onMove:E}):r.jsxs(r.Fragment,{children:[r.jsx(h.Text,{color:s?"var(--primary-action-color)":void 0,variant:v!=null&&v.modified?"bold":void 0,children:o}),(v==null?void 0:v.newValue)!==void 0&&r.jsxs(r.Fragment,{children:[r.jsx(h.Indent,{children:r.jsx(R.Icon,{icon:$t.faArrowRight,size:12})}),r.jsx(h.Text,{color:"var(--primary-action-color)",variant:"bold",children:v.newValue})]}),g&&re(g)&&r.jsx(h.Space,{num:2}),f&&(v==null?void 0:v.modified)&&(v==null?void 0:v.newValue)===""?r.jsx(W.Tooltip,{label:f,zIndex:100,children:r.jsx(R.Icon,{icon:oe.faExclamationTriangle,color:"var(--ui-alert1)",size:14})}):r.jsx(we,{crudStatus:g})]})})}),l&&r.jsx(h.Indent,{num:l})]})},ke=i.createContext(""),Se=i.createContext(void 0),Ie=i.createContext(void 0),Re=i.createContext(void 0),et=()=>({sortOrder:I.createSortOrderActions(),selectedIds:I.createSelectedIdsActions(),expandedRows:I.createSelectedIdsActions(),fields:I.createEntityActions()}),D=(e,t)=>`${e}.${t}`,Te=(e=void 0,t=!1,o=[],n=[])=>({sortOrder:I.createSortOrderReducerInitialState(e,t),selectedIds:I.createSelectedIdsReducerInitialState(o),expandedRows:I.createSelectedIdsReducerInitialState(n),fields:{lastSelectedId:void 0}}),tt=(e,t)=>{var c;const o=I.reducerIdGate(D(e,"sortOrder"),I.createSortOrderReducer(t==null?void 0:t.sortOrder)),n=I.reducerIdGate(D(e,"selectedIds"),I.createSelectedIdsReducer(t==null?void 0:t.selectedIds)),s=I.reducerIdGate(D(e,"expandedRows"),I.createSelectedIdsReducer(t==null?void 0:t.expandedRows)),l=I.reducerIdGate(D(e,"fields"),I.createEntityReducer((c=t==null?void 0:t.fields)!=null?c:{}));return Kt.combineReducers({sortOrder:o,selectedIds:n,expandedRows:s,fields:l})},ae=()=>i.useContext(ke),S=()=>i.useContext(Re),F=()=>i.useContext(Se),Z=()=>i.useContext(Ie),ot=i.createContext([]),_=()=>i.useContext(ot),rt=()=>{const e=S(),t=_();let o=0;return e.enableExpandCollapse&&o++,e.showRowCheckbox&&o++,o+i.useMemo(()=>t.map(n=>n.groupConfig.columnOrder.length).reduce((n,s)=>n+s,0),[t])},nt=i.createContext(void 0),jo=()=>i.useContext(nt),st=i.createContext(void 0),ko=i.createContext(!1),So=()=>i.useContext(st),Io=i.createContext("standard"),lt=i.createContext({}),Ee=()=>i.useContext(lt),ct=i.createContext(0),Ge=()=>i.useContext(ct),Ae=(e,t,o)=>{var n;return e?pe.compact((n=t==null?void 0:t.map(s=>{const l=e==null?void 0:e[s];return{groupId:s,groupConfig:l}}))!=null?n:[]).filter(s=>{var l,c;return((c=(l=s.groupConfig)==null?void 0:l.columnOrder.length)!=null?c:0)>0}).map(s=>s):[{groupId:"virtual",groupConfig:{label:"",columnOrder:o!=null?o:[]}}]},Oe=(e,t,o)=>{if(e)return e===!0?U:e;if(!t&&!!o)return o===!0?U:o},ie=(e,t,o)=>{if(!(e===0||t!==0)&&o)return o===!0?U:o},J=e=>{const{columns:t}=S(),o=t[e];if(!o)throw new Error("No config for column with id="+e);return o},at=()=>{var o,n,s;const e=S(),t=(s=(n=(o=_())==null?void 0:o[0])==null?void 0:n.groupConfig.columnOrder)==null?void 0:s[0];return t?e.columns[t]:void 0},it=()=>{var s;const e=S(),t=_(),o=t[t.length-1],n=(s=o==null?void 0:o.groupConfig.columnOrder[o.groupConfig.columnOrder.length-1])!=null?s:void 0;return n?e.columns[n]:void 0},Ro=function({columnId:t,groupConfig:o,borderFromGroup:n,colSpan:s,isFirstGroup:l,isLastGroup:c}){var P;const{label:a,render:u,contentLeft:x,contentRight:d,loading:p,error:f}=o,{width:C,minWidth:w,zIndex:m,borderLeft:v}=J(t),g=S(),{stickyHeader:y,headerRowOffsetTop:k}=g,b="columnGroupOrder"in g?g.stickyColumnGroups:void 0,A=To(n,v),j=l&&(b==="first"||b==="both"),O=c&&(b==="last"||b==="both"),E=j||O||y,M=j||O;return r.jsx("th",{colSpan:s,style:{position:E?"sticky":void 0,height:"var(--current-row-height)",width:C,minWidth:(P=w!=null?w:C)!=null?P:"20px",background:E?"white":"transparent",left:j?"var(--current-left-offset)":void 0,right:O?"0px":void 0,top:y?k!=null?k:"0px":void 0,borderLeft:A,zIndex:y&&M?"var(--swui-sticky-column-group-label-z-index)":M?"var(--swui-sticky-group-group-z-index)":y?m!=null?m:"var(--swui-sticky-header-column-group-z-index)":m!=null?m:1,boxShadow:j?"var(--swui-sticky-column-shadow-right)":O?"var(--swui-sticky-column-shadow-left)":void 0},children:r.jsx(h.Row,{alignItems:"center",children:r.jsxs(r.Fragment,{children:[x&&r.jsxs(r.Fragment,{children:[r.jsx(h.Space,{}),x,r.jsx(h.Space,{num:.5})]}),u?u(o):r.jsx(h.Indent,{children:r.jsx(h.Heading,{variant:"h5",whiteSpace:"nowrap",children:a})}),d&&r.jsxs(r.Fragment,{children:[r.jsx(h.Space,{num:.5}),d]}),(f||p)&&r.jsx(h.Indent,{}),p?r.jsx(R.InputSpinner,{}):f?r.jsx(W.Tooltip,{label:f,placement:"bottom",appendTo:document.body,children:r.jsx(R.Icon,{icon:oe.faExclamationTriangle,color:H.cssColor("--lhds-color-red-500"),size:14})}):void 0]})})})},To=(e,t)=>{if(e)return e;if(t)return"1px solid transparent"},Eo=(e,t,o,n)=>({top:e?Go(e,o):void 0,background:e||t?"white":void 0,position:e||t?"sticky":void 0,boxShadow:t?"var(--swui-sticky-column-shadow-right)":void 0,zIndex:e||t?n!=null?n:"var(--swui-sticky-header-z-index)":n}),Go=(e,t)=>{if(e&&t)return t;if(t)return t;if(e)return 0},Ao=T.memo(function({height:t=se}){const o=_(),n=S(),{showHeaderCheckbox:s,enableExpandCollapse:l,rowIndent:c,zIndex:a,stickyHeader:u,stickyCheckboxColumn:x,headerRowOffsetTop:d}=n,p=Eo(u,x,d,a),f=u?"var(--swui-sticky-column-group-label-z-index)":"var(--swui-sticky-group-group-z-index)";return r.jsxs("tr",{style:{height:t,borderLeft:ne},children:[c&&r.jsx("th",{style:p}),l&&r.jsx("th",{style:{...p,width:"var(--swui-expand-cell-width)",left:x?"0px":void 0,zIndex:f}}),s&&r.jsx("th",{style:{...p,left:x&&l?"var(--swui-expand-cell-width)":x?"0px":void 0,zIndex:f}}),o.map(({groupConfig:C,groupId:w},m)=>r.jsx(Ro,{isFirstGroup:m===0,isLastGroup:m===o.length-1,groupConfig:C,columnId:C.columnOrder[0],colSpan:C.columnOrder.length,borderFromGroup:ie(m,0,C.borderLeft)},w)),c&&r.jsx("th",{style:p})]})}),Oo=e=>{const t=Ae("columnGroups"in e?e.columnGroups:void 0,"columnGroupOrder"in e?e.columnGroupOrder:void 0,"columnOrder"in e?e.columnOrder:void 0);let o={},n=0;return e.showRowCheckbox&&n++,e.enableExpandCollapse&&n++,t.forEach(s=>{s.groupConfig.columnOrder.forEach(l=>{Po(e.columns[l])&&(o[l]=n++)})}),{columnIndexPerColumnId:o,numNavigableColumns:n}},Po=e=>!e.disableGridCell,dt=i.createContext({columnIndexPerColumnId:{},numNavigableColumns:0}),ut=()=>i.useContext(dt),Mo=e=>{"columnGroupOrder"in e&&(Bo(e),(e.stickyColumnGroups==="first"||e.stickyColumnGroups==="both")&&De(e,0),(e.stickyColumnGroups==="last"||e.stickyColumnGroups==="both")&&De(e,e.columnGroupOrder.length-1))},Bo=e=>{Object.keys(e.columns).forEach(o=>{if(e.columns[o].sticky)throw new Error("Columns can not be sticky when column groups are used. columnId: "+o)})},De=(e,t)=>{var s;if(!e.columnGroupOrder||e.columnGroupOrder.length===0)throw new Error("columnGroupOrder required when validating column group fixed width.");const o=e.columnGroupOrder[t],n=(s=e.columnGroups)==null?void 0:s[o];if(!n)throw new Error("Column group does not exist. Column group id = "+o);n.columnOrder.forEach(l=>{if(e.columns[l].width==null)throw new Error("All columns in sticky column group must have width set.")})},Lo=e=>{const t=e.stickyColumnGroups==="first"||e.stickyColumnGroups==="both"?He(Ho(e),e.columns,!0):void 0,o=e.stickyColumnGroups==="last"||e.stickyColumnGroups==="both"?He(No(e),e.columns,!1):void 0;return{...t,...o}},He=(e,t,o)=>{var l;const n={},s=[o?"var(--current-left-offset)":"0px"];for(let c=0;c<e.length;c++){const a=e[c],u=t==null?void 0:t[a];n[a]=Do(s),s.push((l=u==null?void 0:u.width)!=null?l:"0px")}return n},Do=e=>e.length===0?"0px":e.length===1?e[0]:"calc("+e.join(" + ")+")",Ho=e=>{var n,s,l;const t=(n=e.columnGroupOrder)==null?void 0:n[0];if(!t)return[];const o=(s=e.columnGroups)==null?void 0:s[t];return(l=o==null?void 0:o.columnOrder)!=null?l:[]},No=e=>{var s,l,c;const t=(l=e.columnGroupOrder)==null?void 0:l[((s=e.columnGroupOrder)==null?void 0:s.length)-1];if(!t)return[];const o=(c=e.columnGroups)==null?void 0:c[t];if(!o)return[];const n=[...o.columnOrder];return n.reverse(),n},qo=e=>"columnGroups"in e?Fo(e):zo(e),zo=e=>Object.keys(e.columns).reduce((o,n)=>{var c;const s=e.columns[n],l=Boolean(s.sticky);return o[n]={sticky:l,left:l?`calc(var(--current-left-offset) + ${(c=s.left)!=null?c:"0px"})`:void 0,right:l?s.right:void 0,type:"column",isFirstColumnInLastGroup:!1,isLastColumnInFirstGroup:!1},o},{}),Fo=e=>{const t={},o=e.columnGroupOrder,n=Lo(e),s=e.stickyColumnGroups==="first"||e.stickyColumnGroups==="both",l=e.stickyColumnGroups==="last"||e.stickyColumnGroups==="both";return o.forEach((c,a)=>{const x=e.columnGroups[c].columnOrder;x.forEach((d,p)=>{const f=a===0,C=a===o.length-1,w=f&&s,m=C&&l,v=p===0&&C,g=p===x.length-1&&f;t[d]={sticky:w||m,left:w?n[d]:void 0,right:m?n[d]:void 0,type:w?"first-group":m?"last-group":void 0,isFirstColumnInLastGroup:v,isLastColumnInFirstGroup:g}})}),t},ht=(e,t)=>({setSelectedIds:o=>I.reducerIdGateAction(D(e,"selectedIds"),t.selectedIds.setSelectedIds(o)),clearSelection:()=>I.reducerIdGateAction(D(e,"selectedIds"),t.selectedIds.clearSelectedIds()),expandByIds:o=>I.reducerIdGateAction(D(e,"expandedRows"),t.expandedRows.setSelectedIds(o)),collapseAll:()=>I.reducerIdGateAction(D(e,"expandedRows"),t.expandedRows.clearSelectedIds()),sortBy:(o,n)=>I.reducerIdGateAction(D(e,"sortOrder"),t.sortOrder.sortBy(o,n!=null?n:!1)),clearSortOrder:()=>I.reducerIdGateAction(D(e,"sortOrder"),t.sortOrder.clearSortOrder()),setLastSelectedId:o=>I.reducerIdGateAction(D(e,"fields"),t.fields.setEntityFields({lastSelectedId:o}))}),xt=(e,t=Te())=>{const[o,n]=i.useReducer(tt(e),t),s=i.useMemo(()=>ht(e,et()),[e]);return{tableContext:i.useMemo(()=>({dispatch:n,actions:s,state:o}),[o,s,n])}},_o=e=>(e.rowIndent?2:0)+(e.enableExpandCollapse?1:0)+(e.showRowCheckbox?1:0)+$o(e),$o=e=>{var t,o;return"columnGroupOrder"in e?e.columnGroupOrder.reduce((n,s)=>{var c,a,u;const l=(c=e.columnGroups)==null?void 0:c[s];return n+((u=(a=l==null?void 0:l.columnOrder)==null?void 0:a.length)!=null?u:0)},0):(o=(t=e.columnOrder)==null?void 0:t.length)!=null?o:0},Ko="_standardTable_1iok0_1",Vo="_relaxed_1iok0_37",Wo="_condensed_1iok0_41",Uo="_compact_1iok0_45";var Ne={standardTable:Ko,relaxed:Vo,condensed:Wo,compact:Uo};const pt=(e,t)=>e!=null&&t==null?-1:e==null&&t!=null?1:xe(e,t,"number")?Number(e)-Number(t):xe(e,t,"boolean")?Number(t)-Number(e):xe(e,t,"string")?String(e).localeCompare(String(t)):e instanceof Date&&t instanceof Date?e.getTime()-t.getTime():0,xe=(e,t,o)=>typeof e===o&&typeof t===o,mt=e=>{const{columns:t}=S();if(!e)return;const o=t[e];if(!!o)return o.itemValueResolver},Ct=T.memo(function({value:t,onValueChange:o,colIndex:n,rowIndex:s,numRows:l,disabled:c,onValueChangeAndShift:a,shiftPressedRef:u}){const x=rt(),d=ae(),p=Y(Boolean(t),{colIndex:n,numCols:x,numRows:l,rowIndex:s,tableId:d}),{requiredProps:f}=p,C=i.useCallback(w=>{u.current?a==null||a(w):o==null||o(w)},[o,a,u]);return r.jsx(X.Checkbox,{size:"small",disabled:c,value:t,onValueChange:C,...f})}),Zo=(e,t,o)=>{if(t==null||o==null||e==null||t===o)return;const n=e.indexOf(t),s=e.indexOf(o);if(n<0||s<0)return;const l=Math.min(n,s),c=Math.max(n,s);return e.slice(l,c+1)},ft=(e,t)=>{const{keyResolver:o}=S(),{selectedIds:{selectedIds:n},fields:{lastSelectedId:s}}=F(),{actions:{setSelectedIds:l,setLastSelectedId:c},dispatch:a}=Z(),u=i.useMemo(()=>o(e),[o,e]),x=i.useMemo(()=>n.includes(u),[n,u]),{toggle:d,addMultiple:p,removeMultiple:f}=h.useArraySet(n,m=>a(l(m))),C=i.useCallback(()=>{if(t&&s){const m=Zo(t,s,u);m!=null&&m.length?x?f(m):p(m):d(u)}else d(u);a(c(u))},[t,s,a,c,u,x,f,p,d]),w=i.useCallback(()=>{d(u),a(c(u))},[d,u,a,c]);return{isSelected:x,toggleSelected:w,shiftAndToggleSelected:C}},Pe=e=>{const{keyResolver:t}=S(),{expandedRows:{selectedIds:o}}=F(),{actions:{expandByIds:n},dispatch:s}=Z(),l=i.useMemo(()=>t(e),[t,e]),c=i.useMemo(()=>o.includes(l),[o,l]),{toggle:a}=h.useArraySet(o,x=>s(n(x)));return{toggleRowExpanded:i.useCallback(()=>{a(l)},[a,l]),isExpanded:c}},Jo=function({item:e,colIndex:t,numRows:o,rowIndex:n}){const s=rt(),l=ae(),c=Y(!0,{colIndex:t,numCols:s,numRows:o,rowIndex:n,tableId:l}),{requiredProps:a}=c,{expandCollapseDisableResolver:u}=S(),{toggleRowExpanded:x,isExpanded:d}=Pe(e),p=i.useMemo(()=>u?u(e):!1,[u,e]);return r.jsx(h.Row,{alignItems:"center",justifyContent:"center",indent:!0,children:!p&&r.jsx(R.FlatButton,{size:"small",leftIcon:d?ze.faChevronDown:Fe.faChevronRight,onClick:x,...a})})},Xo=(e,t,o)=>e?e(t):o,wt=(e,t,o)=>i.useMemo(()=>Xo(e,t,o),[e,t,o]),vt=(e,t)=>{const{background:o,backgroundResolver:n}=J(e);return wt(n,t,o)},Ce=(e,t)=>{const{background:o,backgroundResolver:n}=e!=null?e:{};return wt(n,t,o)},bt=e=>e==null?"":e instanceof Date?e.toISOString():typeof e=="object"?JSON.stringify(e):String(e),gt=e=>pe.upperFirst(pe.lowerCase(e)),Yo="_standardTableCell_1xzcm_1";var Qo={standardTableCell:Yo};const yt=T.memo(function({enableGridCell:t,children:o,background:n,gridCellRequiredProps:s,isEditing:l,justifyContent:c,onKeyDown:a,width:u,minWidth:x}){return r.jsx(h.Row,{width:u,minWidth:x,height:"inherit",background:n,overflow:"hidden",onKeyDown:a,children:r.jsx(h.Row,{border:"1px solid transparent",className:Qo.standardTableCell,width:"100%",height:"100%",justifyContent:c,alignItems:"center",borderRadius:t?"4px":void 0,focusBorder:t&&!l?"1px solid var(--swui-primary-action-color)":void 0,hoverBorder:t&&!l?"1px solid var(--lhds-color-ui-300)":void 0,...t?s:void 0,children:o})})}),er="_textCell_1yv6v_1";var tr={textCell:er};const jt=T.memo(function({label:t}){return r.jsx(h.Indent,{overflow:"hidden",children:r.jsx(h.Text,{className:tr.textCell,title:t,children:t})})}),kt=T.memo(function({columnId:t,item:o,colIndex:n,rowIndex:s,numRows:l,borderFromGroup:c,disableBorderLeft:a}){var Me;const{keyResolver:u,enableGridCell:x,gridCellOptions:d}=S(),p=F().selectedIds.selectedIds,f=ae(),C=jo(),{numNavigableColumns:w}=ut(),m=Ee(),v=i.useMemo(()=>u(o),[o,u]),g=i.useMemo(()=>p.indexOf(v)>=0,[v,p]),{itemValueResolver:y,itemLabelFormatter:k,width:b,minWidth:A,justifyContentCell:j="flex-start",borderLeft:O,renderCell:E,gridCellOptions:M,isEditable:P,onChange:N,onKeyDown:B,disableGridCell:L,disableGridCellFocus:Q,zIndex:q}=J(t),z=i.useMemo(()=>y?y(o):t in o?o[t]:"",[y,o,t]),K=i.useMemo(()=>k?k(z,o):bt(z),[z,k,o]),V=typeof P=="boolean"?P:P?P(o):void 0,de=i.useCallback(te=>{B==null||B(te,{columnId:t,item:o}),C==null||C(te,{columnId:t,item:o})},[C,t,o,B]),$=Y(K,{colIndex:n,rowIndex:s,numRows:l,numCols:w,tableId:f,isEditable:V,onChange:N?te=>N(o,te):void 0,...d,...M}),G=m[t],ee=(Me=vt(t,o))!=null?Me:"inherit",ue=G.sticky?q!=null?q:"var(--swui-sticky-column-z-index)":q!=null?q:1,Pt=i.useMemo(()=>E?E({label:K,value:z,item:o,gridCell:$,isEditable:V,isSelected:g,zIndex:ue,itemKey:v}):r.jsx(jt,{label:K}),[E,K,z,o,$,V,g,ue,v]),Mt=Oe(c,a,O),Bt=G.sticky&&G.type==="last-group"&&G.isFirstColumnInLastGroup||G.sticky&&G.type==="column"&&G.right?"var(--swui-sticky-column-shadow-left)":G.sticky?"var(--swui-sticky-column-shadow-right)":void 0;return r.jsx("td",{style:{borderLeft:Mt,position:G.sticky?"sticky":void 0,left:G.sticky?G.left:void 0,right:G.sticky?G.right:void 0,boxShadow:Bt,zIndex:ue,height:"var(--current-row-height)",background:ee},children:r.jsx(yt,{enableGridCell:x&&!L&&!Q,gridCellRequiredProps:$.requiredProps,isEditing:$.isEditing,width:b,minWidth:A,justifyContent:j,onKeyDown:de,children:Pt})})}),or=function({item:t}){const{renderRowExpansion:o,enableExpandCollapse:n}=S(),{isExpanded:s,toggleRowExpanded:l}=Pe(t),c=Ge();return r.jsx(r.Fragment,{children:n&&o&&s&&r.jsx("tr",{style:{borderLeft:be,background:ve},children:r.jsx("td",{colSpan:c,children:o(t,{onRequestCollapse:l})})})})},St=Ut.default.tr`
2
+ ${({focusBackground:e})=>e?`--focus-within-background: ${e};`:""}
3
+ ${({borderLeft:e})=>e?`border-left: ${e};`:""};
4
+ ${({background:e})=>e?`background: ${e};`:""};
5
+ ${({height:e})=>e?`height: ${e};`:""};
6
+ ${({hoverBackground:e})=>e?` &:hover {
7
+ background: ${e};
46
8
  }
47
- n["default"] = e;
48
- return Object.freeze(n);
49
- }
50
-
51
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
52
- var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
53
- var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
54
-
55
- var GridHooksContext = React__namespace.createContext({});
56
- var GridHooksTable = function (_a) {
57
- var children = _a.children, numCols = _a.numCols, numRows = _a.numRows, tableId = _a.tableId, wrap = _a.wrap;
58
- var contextProps = React.useMemo(function () { return ({ numCols: numCols, numRows: numRows, tableId: tableId, wrap: wrap }); }, [numCols, numRows, tableId, wrap]);
59
- return (React__namespace.createElement(GridHooksContext.Provider, { value: contextProps }, children));
60
- };
61
-
62
- var hasIndicatorContent = function (status) {
63
- var loading = status.loading, creating = status.creating, deleting = status.deleting, updating = status.updating, hasError = status.hasError;
64
- return Boolean(loading || creating || deleting || updating || hasError);
65
- };
66
- var CrudStatusIndicator = function (_a) {
67
- var crudStatus = _a.crudStatus;
68
- if (!crudStatus || !hasIndicatorContent(crudStatus)) {
69
- return null;
70
- }
71
- var errorMessage = crudStatus.errorMessage, hasError = crudStatus.hasError, loading = crudStatus.loading, creating = crudStatus.creating, deleting = crudStatus.deleting, updating = crudStatus.updating;
72
- if (loading || creating || deleting || updating) {
73
- return React__namespace.createElement(elements.InputSpinner, { color: theme.cssColor("--lhds-color-ui-500") });
74
- }
75
- if (hasError) {
76
- var icon = (React__namespace.createElement(elements.Icon, { icon: faExclamationTriangle.faExclamationTriangle, color: theme.cssColor("--lhds-color-orange-600"), size: 14 }));
77
- return (React__namespace.createElement(React__namespace.Fragment, null, errorMessage ? (React__namespace.createElement(tooltip.Tooltip, { label: errorMessage, zIndex: 100 }, icon)) : (icon)));
78
- }
79
- return null;
80
- };
81
-
82
- var ModifiedField = function (_a) {
83
- var isEditable = _a.isEditable, warningOnEmpty = _a.warningOnEmpty, value = _a.value, modifiedField = _a.modifiedField, crudStatus = _a.crudStatus;
84
- var showEmptyFieldWarning = warningOnEmpty && (modifiedField === null || modifiedField === void 0 ? void 0 : modifiedField.modified) && (modifiedField === null || modifiedField === void 0 ? void 0 : modifiedField.newValue) === "";
85
- var hasCrudIndicator = crudStatus && hasIndicatorContent(crudStatus);
86
- var hasRightIcon = showEmptyFieldWarning || hasCrudIndicator;
87
- return (React__namespace.createElement(React__namespace.Fragment, null,
88
- React__namespace.createElement(core.Text, { color: isEditable ? "var(--swui-primary-action-color)" : undefined, variant: (modifiedField === null || modifiedField === void 0 ? void 0 : modifiedField.modified) ? "bold" : undefined }, value),
89
- (modifiedField === null || modifiedField === void 0 ? void 0 : modifiedField.newValue) !== undefined && (React__namespace.createElement(React__namespace.Fragment, null,
90
- React__namespace.createElement(core.Indent, null,
91
- React__namespace.createElement(elements.Icon, { icon: elements.stenaArrowRight, size: 12 })),
92
- React__namespace.createElement(core.Text, { color: "var(--swui-primary-action-color)", variant: "bold" }, modifiedField.newValue))),
93
- hasRightIcon && React__namespace.createElement(core.Space, null),
94
- showEmptyFieldWarning ? (React__namespace.createElement(tooltip.Tooltip, { label: warningOnEmpty, zIndex: 100 },
95
- React__namespace.createElement(elements.Icon, { icon: faExclamationTriangle.faExclamationTriangle, color: theme.cssColor("--lhds-color-orange-600"), size: 14 }))) : (React__namespace.createElement(CrudStatusIndicator, { crudStatus: crudStatus }))));
96
- };
97
-
98
- /*! *****************************************************************************
99
- Copyright (c) Microsoft Corporation.
100
-
101
- Permission to use, copy, modify, and/or distribute this software for any
102
- purpose with or without fee is hereby granted.
103
-
104
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
105
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
106
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
107
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
108
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
109
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
110
- PERFORMANCE OF THIS SOFTWARE.
111
- ***************************************************************************** */
112
-
113
- var __assign = function() {
114
- __assign = Object.assign || function __assign(t) {
115
- for (var s, i = 1, n = arguments.length; i < n; i++) {
116
- s = arguments[i];
117
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
118
- }
119
- return t;
120
- };
121
- return __assign.apply(this, arguments);
122
- };
123
-
124
- function __rest(s, e) {
125
- var t = {};
126
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
127
- t[p] = s[p];
128
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
129
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
130
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
131
- t[p[i]] = s[p[i]];
132
- }
133
- return t;
134
- }
135
-
136
- function __spreadArray(to, from, pack) {
137
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
138
- if (ar || !(i in from)) {
139
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
140
- ar[i] = from[i];
141
- }
142
- }
143
- return to.concat(ar || Array.prototype.slice.call(from));
144
- }
145
-
146
- function __makeTemplateObject(cooked, raw) {
147
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
148
- return cooked;
149
- }
150
-
151
- var TableCell = function (_a) {
152
- var _b = _a.alignItems, alignItems = _b === void 0 ? "center" : _b, _c = _a.justifyContent, justifyContent = _c === void 0 ? "flex-start" : _c, _d = _a.overflow, overflow = _d === void 0 ? "hidden" : _d, _e = _a.indent, indent = _e === void 0 ? 1 : _e, boxProps = __rest(_a, ["alignItems", "justifyContent", "overflow", "indent"]);
153
- return (React__namespace.createElement(core.Row, __assign({ height: "100%", alignItems: alignItems, justifyContent: justifyContent, overflow: overflow, indent: indent }, boxProps)));
154
- };
155
-
156
- var tableBorderColor = "var(--lhds-color-ui-300)";
157
- var tableBorderColorExpanded = "var(--lhds-color-blue-500)";
158
- var tableBackgroundColorExpanded = "var(--lhds-color-blue-50)";
159
- var tableBackgroundHoverColorExpanded = "var(--lhds-color-blue-100)";
160
- var tableBorder = "1px solid ".concat(tableBorderColor);
161
- var tableBorderHidden = "1px solid transparent";
162
- var tableBorderLeft = "var(--swui-expand-highlight-border-width) solid transparent";
163
- var tableBorderLeftExpanded = "var(--swui-expand-highlight-border-width) solid ".concat(tableBorderColorExpanded);
164
- var defaultTableRowHeight = "40px";
165
- var defaultTableHeadRowHeight = "40px";
166
- var smallTableRowWidth = "40px";
167
-
168
- var SmallTableCell = function (props) {
169
- return (React__namespace.createElement(TableCell, __assign({ width: smallTableRowWidth, justifyContent: "center" }, props)));
170
- };
171
-
172
- var SortOrderIcon = function (_a) {
173
- var _b = _a.iconVariant, iconVariant = _b === void 0 ? "amount" : _b, direction = _a.direction;
174
- return (React__namespace.createElement(core.Box, { width: "14px" },
175
- React__namespace.createElement(elements.Icon, { size: 14, color: theme.cssColor("--lhds-color-ui-500"), icon: getIcon(direction, iconVariant) })));
176
- };
177
- var getIcon = function (arrow, iconType) {
178
- switch (iconType) {
179
- case "alpha":
180
- return arrow === "up" ? faSortAlphaUp.faSortAlphaUp : faSortAlphaDown.faSortAlphaDown;
181
- case "numeric":
182
- return arrow === "up" ? faSortNumericUp.faSortNumericUp : faSortNumericDown.faSortNumericDown;
183
- case "amount":
184
- return arrow === "up" ? faSortAmountUpAlt.faSortAmountUpAlt : faSortAmountDownAlt.faSortAmountDownAlt;
185
- default:
186
- return core.exhaustSwitchCaseElseThrow(iconType);
187
- }
188
- };
189
-
190
- var TableHeadItem = React__namespace.memo(function (_a) {
191
- var label = _a.label, arrow = _a.arrow, onClick = _a.onClick, children = _a.children; _a.selected; var popoverContent = _a.popoverContent, loading = _a.loading, infoIconTooltipText = _a.infoIconTooltipText, _b = _a.overflow, overflow = _b === void 0 ? "hidden" : _b, alignRight = _a.alignRight, sortOrderIconVariant = _a.sortOrderIconVariant, boxProps = __rest(_a, ["label", "arrow", "onClick", "children", "selected", "popoverContent", "loading", "infoIconTooltipText", "overflow", "alignRight", "sortOrderIconVariant"]);
192
- var containerRef = React.useRef(null);
193
- var cursorStyle = onClick
194
- ? { cursor: "pointer", userSelect: "none" }
195
- : undefined;
196
- var hasOnlyChildren = !label && !arrow && !infoIconTooltipText;
197
- return (React__namespace.createElement(core.Row, __assign({ height: "100%", alignItems: "center", ref: containerRef, overflow: overflow, justifyContent: alignRight ? "flex-end" : "flex-start" }, boxProps),
198
- React__namespace.createElement(core.Row, { alignItems: "center", indent: true },
199
- !arrow && alignRight && (React__namespace.createElement(React__namespace.Fragment, null,
200
- React__namespace.createElement(core.Space, null),
201
- React__namespace.createElement(core.Box, { width: "14px" }),
202
- React__namespace.createElement(core.Space, { num: 0.5 }))),
203
- (children || label) && (React__namespace.createElement(core.Row, { onClick: onClick, style: cursorStyle, alignItems: "center" },
204
- children && (React__namespace.createElement(React__namespace.Fragment, null,
205
- children,
206
- !hasOnlyChildren && React__namespace.createElement(core.Space, { num: 0.5 }))),
207
- arrow && alignRight && (React__namespace.createElement(React__namespace.Fragment, null,
208
- React__namespace.createElement(core.Space, null),
209
- React__namespace.createElement(SortOrderIcon, { direction: arrow, iconVariant: sortOrderIconVariant }),
210
- React__namespace.createElement(core.Space, { num: 0.5 }))),
211
- label && React__namespace.createElement(core.Heading, { variant: "h6" }, label),
212
- arrow && !alignRight && (React__namespace.createElement(React__namespace.Fragment, null,
213
- React__namespace.createElement(core.Space, { num: 0.5 }),
214
- React__namespace.createElement(SortOrderIcon, { direction: arrow, iconVariant: sortOrderIconVariant }),
215
- React__namespace.createElement(core.Space, null))))),
216
- infoIconTooltipText && (React__namespace.createElement(React__namespace.Fragment, null,
217
- React__namespace.createElement(core.Space, null),
218
- React__namespace.createElement(core.Row, { onClick: function (ev) { return ev.stopPropagation(); } },
219
- React__namespace.createElement(tooltip.Tooltip, { label: infoIconTooltipText, zIndex: "var(--swui-sticky-popover-z-index)" },
220
- React__namespace.createElement(elements.Icon, { icon: faInfoCircle.faInfoCircle, size: 14, color: theme.cssColor("--lhds-color-blue-400") })),
221
- React__namespace.createElement(core.Space, null))))),
222
- React__namespace.createElement(core.Row, null, loading ? (React__namespace.createElement(elements.InputSpinner, null)) : popoverContent ? (React__namespace.createElement(tooltip.Popover, { content: popoverContent, trigger: "click", zIndex: 1000, disablePadding: true, variant: "outlined", arrow: false },
223
- React__namespace.createElement(elements.FlatButton, { leftIcon: faEllipsisV.faEllipsisV, size: "small" }))) : null),
224
- !arrow && !alignRight && (React__namespace.createElement(React__namespace.Fragment, null,
225
- React__namespace.createElement(core.Space, null),
226
- React__namespace.createElement(core.Box, { width: "14px" }),
227
- React__namespace.createElement(core.Space, { num: 0.5 })))));
228
- });
229
-
230
- var SmallTableHead = function (props) {
231
- return (React__namespace.createElement(TableHeadItem, __assign({ width: smallTableRowWidth, justifyContent: "center" }, props)));
232
- };
233
-
234
- var TableColumnGroupHead = function (_a) {
235
- var label = _a.label, flex = _a.flex, width = _a.width, _b = _a.indent, indent = _b === void 0 ? 1 : _b, _c = _a.height, height = _c === void 0 ? defaultTableHeadRowHeight : _c;
236
- return (React__namespace.createElement(TableHeadItem, { width: width, flex: flex, height: height },
237
- React__namespace.createElement(core.Box, { indent: indent, spacing: true },
238
- React__namespace.createElement(core.Text, { variant: "bold" }, label))));
239
- };
240
-
241
- var TableHeadRow = React__namespace.memo(function (_a) {
242
- var style = _a.style, _b = _a.height, height = _b === void 0 ? defaultTableHeadRowHeight : _b, boxProps = __rest(_a, ["style", "height"]);
243
- return React__namespace.createElement(core.Row, __assign({ style: style, height: height }, boxProps));
244
- });
245
-
246
- function styleInject(css, ref) {
247
- if ( ref === void 0 ) ref = {};
248
- var insertAt = ref.insertAt;
249
-
250
- if (!css || typeof document === 'undefined') { return; }
251
-
252
- var head = document.head || document.getElementsByTagName('head')[0];
253
- var style = document.createElement('style');
254
- style.type = 'text/css';
255
-
256
- if (insertAt === 'top') {
257
- if (head.firstChild) {
258
- head.insertBefore(style, head.firstChild);
259
- } else {
260
- head.appendChild(style);
261
- }
262
- } else {
263
- head.appendChild(style);
264
- }
265
-
266
- if (style.styleSheet) {
267
- style.styleSheet.cssText = css;
268
- } else {
269
- style.appendChild(document.createTextNode(css));
270
- }
271
- }
272
-
273
- var css_248z$4 = ".TableRow-module_tableRow__hS0Sh:focus-within {\n background: var(--focus-within-background, var(--lhds-color-blue-50));\n }\n";
274
- var styles$4 = {"tableRow":"TableRow-module_tableRow__hS0Sh"};
275
- styleInject(css_248z$4);
276
-
277
- var TableRow = function (_a) {
278
- var hideBorderTop = _a.hideBorderTop, _b = _a.height, height = _b === void 0 ? defaultTableHeadRowHeight : _b, className = _a.className, boxProps = __rest(_a, ["hideBorderTop", "height", "className"]);
279
- return (React__namespace.createElement(core.Row, __assign({ borderTop: hideBorderTop ? tableBorderHidden : tableBorder, height: height, className: cx__default["default"](styles$4.tableRow, className) }, boxProps)));
280
- };
281
-
282
- var useRevertableValue = function (initialValue) {
283
- var _a = React.useState(initialValue), value = _a[0], setValueInternal = _a[1];
284
- var revertValue = React.useRef(initialValue);
285
- var valueRef = React.useRef(initialValue);
286
- var setValue = React.useCallback(function (value) {
287
- setValueInternal(value);
288
- valueRef.current = value;
289
- }, [setValueInternal, valueRef]);
290
- React.useEffect(function () {
291
- setValue(initialValue);
292
- }, [setValue, initialValue]);
293
- var revert = React.useCallback(function () {
294
- if (revertValue) {
295
- setValue(revertValue.current);
296
- }
297
- }, [setValue, revertValue]);
298
- var commit = React.useCallback(function (commitValue) {
299
- revertValue.current = value;
300
- if (commitValue) {
301
- setValue(commitValue);
302
- }
303
- }, [value, setValue]);
304
- var setRevertValue = React.useCallback(function (value) { return (revertValue.current = value); }, [revertValue]);
305
- var getValue = React.useCallback(function () { return valueRef.current; }, [valueRef]);
306
- return {
307
- value: value,
308
- setValue: setValue,
309
- setRevertValue: setRevertValue,
310
- revert: revert,
311
- commit: commit,
312
- getValue: getValue,
313
- };
314
- };
315
-
316
- var createKeyDownEvent = function (event) { return ({
317
- altKey: event.altKey,
318
- charCode: event.charCode,
319
- ctrlKey: event.ctrlKey,
320
- key: event.key,
321
- keyCode: event.keyCode,
322
- locale: event.locale,
323
- location: event.location,
324
- metaKey: event.metaKey,
325
- repeat: event.repeat,
326
- shiftKey: event.shiftKey,
327
- which: event.which,
328
- }); };
329
- // tslint:disable-next-line:no-any
330
- var defaultTransformEnteredValue = function (value) { return value; };
331
- var useEditableCell = function (value, _a) {
332
- var _b = _a.isEditable, isEditable = _b === void 0 ? false : _b, _c = _a.allowedInputType, allowedInputType = _c === void 0 ? "all" : _c, onChange = _a.onChange, onStartEditing = _a.onStartEditing, onStopEditing = _a.onStopEditing, _d = _a.transformEnteredValue, transformEnteredValue = _d === void 0 ? defaultTransformEnteredValue : _d;
333
- var _e = React.useState(false), isEditing = _e[0], setIsEditing = _e[1];
334
- var _f = React.useState(undefined), lastKeyEvent = _f[0], setLastKeyEvent = _f[1];
335
- var revertableValue = useRevertableValue(value);
336
- var getValue = revertableValue.getValue, revert = revertableValue.revert, setValue = revertableValue.setValue, setRevertValue = revertableValue.setRevertValue;
337
- var startEditing = React.useCallback(function (keyEvent) {
338
- if (isEditable) {
339
- setValue(value);
340
- setRevertValue(value);
341
- setIsEditing(true);
342
- if (onStartEditing) {
343
- onStartEditing(keyEvent);
344
- }
345
- }
346
- }, [isEditable, onStartEditing, setRevertValue, setValue, value]);
347
- var stopEditing = React.useCallback(function () {
348
- if (isEditable) {
349
- setIsEditing(false);
350
- if (onStopEditing) {
351
- onStopEditing();
352
- }
353
- if (onChange) {
354
- onChange(getValue());
355
- }
356
- }
357
- }, [isEditable, onChange, onStopEditing, getValue, setIsEditing]);
358
- var stopEditingAndRevert = React.useCallback(function () {
359
- if (isEditable) {
360
- setIsEditing(false);
361
- if (onStopEditing) {
362
- onStopEditing();
363
- }
364
- revert();
365
- }
366
- }, [isEditable, onStopEditing, revert, setIsEditing]);
367
- var onKeyDown = React.useMemo(function () {
368
- return createKeyDownHandler$1(isEditing, isEditable, startEditing, setLastKeyEvent, allowedInputType, transformEnteredValue, revertableValue);
369
- }, [
370
- isEditing,
371
- isEditable,
372
- startEditing,
373
- setLastKeyEvent,
374
- allowedInputType,
375
- transformEnteredValue,
376
- revertableValue,
377
- ]);
378
- return {
379
- onKeyDown: onKeyDown,
380
- isEditing: isEditing,
381
- lastKeyEvent: lastKeyEvent,
382
- revertableValue: revertableValue,
383
- startEditing: startEditing,
384
- stopEditing: stopEditing,
385
- stopEditingAndRevert: stopEditingAndRevert,
386
- onDoubleClick: startEditing,
387
- };
388
- };
389
- var allowsNumerics = function (allowedInputType) {
390
- return allowedInputType === "all" ||
391
- allowedInputType === "numeric" ||
392
- allowedInputType === "alphanumeric";
393
- };
394
- var allowsLetters = function (allowedInputType) {
395
- return allowedInputType === "all" ||
396
- allowedInputType === "alphanumeric" ||
397
- allowedInputType === "letters";
398
- };
399
- var isCharacter = function (key) { return !!key.match(/^[-+*<>]$/); };
400
- var isLetter = function (key) { return !!key.match(/^[a-zA-Z0-9]$/); };
401
- var isNumeric = function (key) { return !isNaN(parseInt(key, 10)); };
402
- var createKeyDownHandler$1 = function (_, // isEditing
403
- isEditable, startEditing, setLastKeyEvent, allowedInputType, transformEnteredValue, revertableValue) {
404
- return function (e) {
405
- if (e.ctrlKey || e.metaKey || e.shiftKey) {
406
- return;
407
- }
408
- if (e.key === "Enter" && isEditable) {
409
- setLastKeyEvent(undefined);
410
- startEditing();
411
- revertableValue.commit();
412
- e.preventDefault();
413
- e.stopPropagation();
414
- }
415
- else if (isEditable) {
416
- // TODO Find nice way to allow full user control, while also providing simplicity.
417
- var lastKeyEvent = createKeyDownEvent(e);
418
- if ((isNumeric(e.key) && allowsNumerics(allowedInputType)) ||
419
- (isLetter(e.key) && allowsLetters(allowedInputType)) ||
420
- isCharacter(e.key)) {
421
- startEditing(lastKeyEvent);
422
- setLastKeyEvent(lastKeyEvent);
423
- revertableValue.commit();
424
- revertableValue.setValue(transformEnteredValue(lastKeyEvent.key));
425
- e.preventDefault();
426
- e.stopPropagation();
427
- }
428
- }
429
- };
430
- };
431
-
432
- var wrapBounds = function (x, y, maxX, maxY) {
433
- var realX = x;
434
- var realY = y;
435
- if (y > maxY) {
436
- realY = 0;
437
- }
438
- if (y < 0) {
439
- realY = maxY;
440
- }
441
- if (x > maxX) {
442
- realX = 0;
443
- }
444
- if (x < 0) {
445
- realX = maxX;
446
- }
447
- return {
448
- realX: realX,
449
- realY: realY,
450
- };
451
- };
452
- var limitRange = function (val, min, max) {
453
- return Math.max(Math.min(val, max), min);
454
- };
455
-
456
- var clampPos = function (pos, numRows, numCols) {
457
- return {
458
- rowIndex: limitRange(pos.rowIndex, 0, numRows),
459
- colIndex: limitRange(pos.colIndex, 0, numCols),
460
- };
461
- };
462
- var wrapPos = function (pos, numRows, numCols) {
463
- var wrapped = wrapBounds(pos.colIndex, pos.rowIndex, numCols, numRows);
464
- return {
465
- rowIndex: wrapped.realY,
466
- colIndex: wrapped.realX,
467
- };
468
- };
469
-
470
- var getNextPositionWrappedOrClamped = function (rowIndex, colIndex, numRows, numCols, direction, edgeMode) {
471
- if (edgeMode === void 0) { edgeMode = "clamped"; }
472
- var posNotWrapped = getNextPosition(rowIndex, colIndex, direction);
473
- if (edgeMode === "clamped") {
474
- return clampPos(posNotWrapped, numRows - 1, numCols - 1);
475
- }
476
- if (edgeMode === "wrapped") {
477
- return wrapPos(posNotWrapped, numRows - 1, numCols - 1);
478
- }
479
- return posNotWrapped;
480
- };
481
- var getNextPosition = function (rowIndex, colIndex, direction) {
482
- if (direction === "up") {
483
- return {
484
- rowIndex: rowIndex - 1,
485
- colIndex: colIndex,
486
- };
487
- }
488
- if (direction === "down") {
489
- return {
490
- rowIndex: rowIndex + 1,
491
- colIndex: colIndex,
492
- };
493
- }
494
- if (direction === "left") {
495
- return {
496
- rowIndex: rowIndex,
497
- colIndex: colIndex - 1,
498
- };
499
- }
500
- if (direction === "right") {
501
- return {
502
- rowIndex: rowIndex,
503
- colIndex: colIndex + 1,
504
- };
505
- }
506
- return {
507
- rowIndex: rowIndex,
508
- colIndex: colIndex,
509
- };
510
- };
511
-
512
- var ensureDomIdIsCorrect = function (id) {
513
- return id.replace(/^[^a-z]+|[^\w:.-]+/gi, "");
514
- };
515
-
516
- var validateGridHookOptions = function (options) {
517
- if (!options.tableId) {
518
- throw new Error("tableId is required.");
519
- }
520
- if (options.numRows == null) {
521
- throw new Error("numRows is required.");
522
- }
523
- if (options.numCols == null) {
524
- throw new Error("numCols is required.");
525
- }
526
- return options;
527
- };
528
-
529
- var useGridNavigationOptionsFromContext = function (options) {
530
- var context = React.useContext(GridHooksContext);
531
- return React.useMemo(function () {
532
- return validateGridHookOptions(__assign(__assign({}, context), options));
533
- }, [context, options]);
534
- };
535
-
536
- var useGridNavigation = function (options) {
537
- var _a = useGridNavigationOptionsFromContext(options), rowIndex = _a.rowIndex, colIndex = _a.colIndex, numRows = _a.numRows, numCols = _a.numCols, tableId = _a.tableId, edgeMode = _a.edgeMode, onCellMove = _a.onCellMove, onCellNavigation = _a.onCellNavigation;
538
- var moveHandler = React.useMemo(function () {
539
- return createMoveHandler(tableId, rowIndex, colIndex, numRows, numCols, edgeMode, onCellMove, onCellNavigation);
540
- }, [
541
- tableId,
542
- rowIndex,
543
- colIndex,
544
- numRows,
545
- numCols,
546
- edgeMode,
547
- onCellMove,
548
- onCellNavigation,
549
- ]);
550
- var onKeyDown = React.useMemo(function () { return createKeyDownHandler(moveHandler); }, [moveHandler]);
551
- var id = React.useMemo(function () { return createCellId(tableId, rowIndex, colIndex); }, [tableId, rowIndex, colIndex]);
552
- var requiredProps = React.useMemo(function () { return ({
553
- tabIndex: 0,
554
- onKeyDown: onKeyDown,
555
- id: id,
556
- }); }, [onKeyDown, id]);
557
- return {
558
- focusOnCell: focusOnCell,
559
- moveHandler: moveHandler,
560
- requiredProps: requiredProps,
561
- };
562
- };
563
- var createMoveHandler = function (tableId, rowIndex, colIndex, numRows, numCols, edgeMode, onCellMove, onCellNavigation) {
564
- return function (direction) {
565
- var pos = getNextPositionWrappedOrClamped(rowIndex, colIndex, numRows, numCols, direction, edgeMode);
566
- var colDidChange = colIndex !== pos.colIndex;
567
- var rowDidChange = rowIndex !== pos.rowIndex;
568
- if (colDidChange || rowDidChange) {
569
- if (onCellMove) {
570
- onCellMove({
571
- direction: direction,
572
- fromRowIndex: rowIndex,
573
- fromColIndex: colIndex,
574
- rowIndex: pos.rowIndex,
575
- colIndex: pos.colIndex,
576
- colDidChange: colDidChange,
577
- rowDidChange: rowDidChange,
578
- });
579
- }
580
- focusOnCell(tableId, pos);
581
- }
582
- if (onCellNavigation) {
583
- onCellNavigation({
584
- direction: direction,
585
- fromRowIndex: rowIndex,
586
- fromColIndex: colIndex,
587
- rowIndex: pos.rowIndex,
588
- colIndex: pos.colIndex,
589
- colDidChange: colDidChange,
590
- rowDidChange: rowDidChange,
591
- cellDidChange: colDidChange || rowDidChange,
592
- });
593
- }
594
- };
595
- };
596
- var createCellId = function (tableId, rowIndex, colIndex) { return ensureDomIdIsCorrect("table-".concat(tableId, "-").concat(rowIndex, "-").concat(colIndex)); };
597
- var createKeyDownHandler = function (moveHandler) {
598
- return function (e) {
599
- if (e.key === "ArrowLeft") {
600
- moveHandler("left");
601
- e.preventDefault();
602
- e.stopPropagation();
603
- return true;
604
- }
605
- else if (e.key === "ArrowUp") {
606
- moveHandler("up");
607
- e.preventDefault();
608
- e.stopPropagation();
609
- return true;
610
- }
611
- else if (e.key === "ArrowRight") {
612
- moveHandler("right");
613
- e.preventDefault();
614
- e.stopPropagation();
615
- return true;
616
- }
617
- else if (e.key === "ArrowDown") {
618
- moveHandler("down");
619
- e.preventDefault();
620
- e.stopPropagation();
621
- return true;
622
- }
623
- else {
624
- return false;
625
- }
626
- };
627
- };
628
- var focusOnCell = function (tableId, pos) {
629
- var el = (document.querySelector("#".concat(createCellId(tableId, pos.rowIndex, pos.colIndex))) ||
630
- document.querySelector("#".concat(createCellId(tableId, pos.rowIndex, pos.colIndex))));
631
- if (el) {
632
- el.focus();
633
- }
634
- };
635
-
636
- // tslint:disable:no-any
637
- /**
638
- * Hook for cell in a grid. Combines navigation and editable cell.
639
- * @param value The value of the current cell.
640
- * @param options Options for hook.
641
- */
642
- var useGridCell = function (value, options) {
643
- var tableId = useGridNavigationOptionsFromContext(options).tableId;
644
- var nav = useGridNavigation(options);
645
- var edit = useEditableCell(value, options);
646
- var cellCoordinates = React.useMemo(function () { return ({
647
- rowIndex: options.rowIndex,
648
- colIndex: options.colIndex,
649
- }); }, [options.rowIndex, options.colIndex]);
650
- var startEditing = React.useCallback(function () {
651
- edit.startEditing();
652
- nav.focusOnCell(tableId, cellCoordinates);
653
- }, [edit, nav, tableId, cellCoordinates]);
654
- var stopEditing = React.useCallback(function () {
655
- edit.stopEditing();
656
- nav.focusOnCell(tableId, cellCoordinates);
657
- }, [edit, nav, tableId, cellCoordinates]);
658
- var stopEditingAndRevert = React.useCallback(function () {
659
- edit.stopEditingAndRevert();
660
- nav.focusOnCell(tableId, cellCoordinates);
661
- }, [edit, nav, tableId, cellCoordinates]);
662
- var stopEditingAndMove = React.useCallback(function (direction) {
663
- edit.stopEditing();
664
- nav.moveHandler(direction);
665
- }, [edit, nav]);
666
- var move = React.useCallback(function (direction) {
667
- nav.moveHandler(direction);
668
- }, [nav]);
669
- var onKeyDown = React.useCallback(function (e) {
670
- if (!edit.isEditing) {
671
- var consumed = nav.requiredProps.onKeyDown(e);
672
- if (!consumed) {
673
- edit.onKeyDown(e);
674
- }
675
- }
676
- }, [edit, nav.requiredProps]);
677
- var requiredProps = React.useMemo(function () { return (__assign(__assign({}, nav.requiredProps), { onKeyDown: onKeyDown, onDoubleClick: edit.onDoubleClick })); }, [onKeyDown, edit.onDoubleClick, nav.requiredProps]);
678
- return {
679
- isEditing: edit.isEditing,
680
- lastKeyEvent: edit.lastKeyEvent,
681
- editorValue: edit.revertableValue.value,
682
- setEditorValue: edit.revertableValue.setValue,
683
- revertEditorValue: edit.revertableValue.revert,
684
- requiredProps: requiredProps,
685
- move: move,
686
- startEditing: startEditing,
687
- stopEditing: stopEditing,
688
- stopEditingAndRevert: stopEditingAndRevert,
689
- stopEditingAndMove: stopEditingAndMove,
690
- };
691
- };
692
-
693
- var EditableTextCellWithCrudAndModified = function EditableTextCellWithCrudAndModified(_a) {
694
- var allowedInputType = _a.allowedInputType, _b = _a.value, value = _b === void 0 ? "" : _b, entityId = _a.entityId, isEditable = _a.isEditable, rowIndent = _a.rowIndent, crudStatusRedux = _a.crudStatusRedux, modifiedFieldsRedux = _a.modifiedFieldsRedux, colIndex = _a.colIndex, rowIndex = _a.rowIndex, numCols = _a.numCols, numRows = _a.numRows, warningOnEmpty = _a.warningOnEmpty;
695
- var dispatch = reactRedux.useDispatch();
696
- var modifiedFieldsState = reactRedux.useSelector(modifiedFieldsRedux.selectors.getState);
697
- var crudStatusState = reactRedux.useSelector(crudStatusRedux.selectors.getState);
698
- var modifiedField = modifiedFieldsState.entities[entityId];
699
- var crudStatus = crudStatusState.entities[entityId];
700
- var onChangeHandler = React.useCallback(function (newValue) {
701
- if (newValue === void 0) { newValue = ""; }
702
- if (newValue === value) {
703
- dispatch(modifiedFieldsRedux.actions.clearEntity(entityId));
704
- }
705
- else {
706
- dispatch(modifiedFieldsRedux.actions.setEntity({
707
- id: entityId,
708
- originalValue: value,
709
- newValue: newValue,
710
- modified: true,
711
- }));
712
- }
713
- }, [dispatch, entityId, modifiedFieldsRedux.actions, value]);
714
- var _c = useGridCell(value, {
715
- rowIndex: rowIndex,
716
- colIndex: colIndex,
717
- numCols: numCols,
718
- numRows: numRows,
719
- tableId: "serviceManningMatrixTable",
720
- onChange: onChangeHandler,
721
- isEditable: isEditable,
722
- allowedInputType: allowedInputType,
723
- }), isEditing = _c.isEditing, stopEditing = _c.stopEditing, editorValue = _c.editorValue, setEditorValue = _c.setEditorValue, stopEditingAndRevert = _c.stopEditingAndRevert, stopEditingAndMove = _c.stopEditingAndMove, lastKeyEvent = _c.lastKeyEvent, _d = _c.requiredProps, onKeyDown = _d.onKeyDown, requiredProps = __rest(_d, ["onKeyDown"]);
724
- var onKeyDownHandler = React.useCallback(function (ev) {
725
- if (ev.key === "Delete") {
726
- dispatch(modifiedFieldsRedux.actions.clearEntity(entityId));
727
- dispatch(crudStatusRedux.actions.setEntityFields(entityId, {
728
- hasError: false,
729
- errorMessage: undefined,
730
- }));
731
- }
732
- else {
733
- onKeyDown(ev);
734
- }
735
- }, [
736
- onKeyDown,
737
- entityId,
738
- dispatch,
739
- modifiedFieldsRedux.actions,
740
- crudStatusRedux.actions,
741
- ]);
742
- return (React__namespace.createElement(core.Row, { height: defaultTableRowHeight, width: "100%", borderBottom: tableBorder, hoverBackground: "var(--ui7)", alignItems: "center" },
743
- rowIndent && React__namespace.createElement(core.Indent, { num: rowIndent }),
744
- React__namespace.createElement(core.Row, __assign({ width: "100%", height: "100%", justifyContent: "flex-end", alignItems: "center", border: "1px solid transparent", borderRadius: "4px" , focusBorder: !isEditing
745
- ? "1px solid var(--primary-action-color)"
746
- : undefined, hoverBorder: !isEditing ? "var(--ui5) solid 1px;" : undefined, onKeyDown: onKeyDownHandler }, (requiredProps )),
747
- React__namespace.createElement(core.Indent, { row: true, alignItems: "center" }, isEditing ? (React__namespace.createElement(forms.TextInput, { onValueChange: setEditorValue, value: editorValue, onDone: stopEditing, onEsc: stopEditingAndRevert, autoFocus: true, selectAllOnMount: !lastKeyEvent, onMove: stopEditingAndMove })) : (React__namespace.createElement(React__namespace.Fragment, null,
748
- React__namespace.createElement(core.Text, { color: isEditable ? "var(--primary-action-color)" : undefined, variant: (modifiedField === null || modifiedField === void 0 ? void 0 : modifiedField.modified) ? "bold" : undefined }, value),
749
- (modifiedField === null || modifiedField === void 0 ? void 0 : modifiedField.newValue) !== undefined && (React__namespace.createElement(React__namespace.Fragment, null,
750
- React__namespace.createElement(core.Indent, null,
751
- React__namespace.createElement(elements.Icon, { icon: faArrowRight.faArrowRight, size: 12 })),
752
- React__namespace.createElement(core.Text, { color: "var(--primary-action-color)", variant: "bold" }, modifiedField.newValue))),
753
- crudStatus && hasIndicatorContent(crudStatus) && (React__namespace.createElement(core.Space, { num: 2 })),
754
- warningOnEmpty &&
755
- (modifiedField === null || modifiedField === void 0 ? void 0 : modifiedField.modified) &&
756
- (modifiedField === null || modifiedField === void 0 ? void 0 : modifiedField.newValue) === "" ? (React__namespace.createElement(tooltip.Tooltip, { label: warningOnEmpty, zIndex: 100 },
757
- React__namespace.createElement(elements.Icon, { icon: faExclamationTriangle.faExclamationTriangle, color: "var(--ui-alert1)", size: 14 }))) : (React__namespace.createElement(CrudStatusIndicator, { crudStatus: crudStatus })))))),
758
- rowIndent && React__namespace.createElement(core.Indent, { num: rowIndent })));
759
- };
760
-
761
- var StandardTableTableIdContext = React.createContext("");
762
- var StandardTableStateContext = React.createContext(undefined);
763
- var StandardTableActionsContext = React.createContext(undefined);
764
- var StandardTableConfigContext = React.createContext(undefined);
765
-
766
- var createInternalStandardTableActions = function () { return ({
767
- sortOrder: redux.createSortOrderActions(),
768
- selectedIds: redux.createSelectedIdsActions(),
769
- expandedRows: redux.createSelectedIdsActions(),
770
- fields: redux.createEntityActions(),
771
- }); };
772
-
773
- var getReducerIdFor = function (reducerId, reducerIdSuffix) { return "".concat(reducerId, ".").concat(reducerIdSuffix); };
774
-
775
- var createStandardTableInitialState = function (sortBy, desc, selectedIds, expandedRows) {
776
- if (sortBy === void 0) { sortBy = undefined; }
777
- if (desc === void 0) { desc = false; }
778
- if (selectedIds === void 0) { selectedIds = []; }
779
- if (expandedRows === void 0) { expandedRows = []; }
780
- return ({
781
- sortOrder: redux.createSortOrderReducerInitialState(sortBy, desc),
782
- selectedIds: redux.createSelectedIdsReducerInitialState(selectedIds),
783
- expandedRows: redux.createSelectedIdsReducerInitialState(expandedRows),
784
- fields: { lastSelectedId: undefined },
785
- });
786
- };
787
- var createStandardTableReducer = function (reducerId, initialState) {
788
- var _a;
789
- var sortOrder = redux.reducerIdGate(getReducerIdFor(reducerId, "sortOrder"), redux.createSortOrderReducer(initialState === null || initialState === void 0 ? void 0 : initialState.sortOrder));
790
- var selectedIds = redux.reducerIdGate(getReducerIdFor(reducerId, "selectedIds"), redux.createSelectedIdsReducer(initialState === null || initialState === void 0 ? void 0 : initialState.selectedIds));
791
- var expandedRows = redux.reducerIdGate(getReducerIdFor(reducerId, "expandedRows"), redux.createSelectedIdsReducer(initialState === null || initialState === void 0 ? void 0 : initialState.expandedRows));
792
- var fields = redux.reducerIdGate(getReducerIdFor(reducerId, "fields"), redux.createEntityReducer((_a = initialState === null || initialState === void 0 ? void 0 : initialState.fields) !== null && _a !== void 0 ? _a : {}));
793
- return redux$1.combineReducers({
794
- sortOrder: sortOrder,
795
- selectedIds: selectedIds,
796
- expandedRows: expandedRows,
797
- fields: fields,
798
- });
799
- };
800
-
801
- var useStandardTableId = function () {
802
- return React.useContext(StandardTableTableIdContext);
803
- };
804
- var useStandardTableConfig = function () {
805
- return React.useContext(StandardTableConfigContext);
806
- };
807
- var useStandardTableState = function () { return React.useContext(StandardTableStateContext); };
808
- var useStandardTableActions = function () {
809
- return React.useContext(StandardTableActionsContext);
810
- };
811
-
812
- var GroupConfigsAndIdsForRowsContext = React.createContext([]);
813
- var useGroupConfigsAndIdsForRows = function () {
814
- return React.useContext(GroupConfigsAndIdsForRowsContext);
815
- };
816
- var useTotalNumColumnsForRows = function () {
817
- var config = useStandardTableConfig();
818
- var groupConfigsAndIds = useGroupConfigsAndIdsForRows();
819
- var offset = 0;
820
- if (config.enableExpandCollapse) {
821
- offset++;
822
- }
823
- if (config.showRowCheckbox) {
824
- offset++;
825
- }
826
- return (offset +
827
- React.useMemo(function () {
828
- return groupConfigsAndIds
829
- .map(function (c) { return c.groupConfig.columnOrder.length; })
830
- .reduce(function (sum, item) { return sum + item; }, 0);
831
- }, [groupConfigsAndIds]));
832
- };
833
-
834
- var OnKeyDownContext = React.createContext(undefined);
835
- var useOnKeyDownContext = function () {
836
- return React.useContext(OnKeyDownContext);
837
- };
838
-
839
- var StandardTableColumnGroupOrderContext = React.createContext(undefined);
840
- var StandardTableUsingColumnGroupsContext = React.createContext(false);
841
- var useColumnGroupOrderContext = function () {
842
- return React.useContext(StandardTableColumnGroupOrderContext);
843
- };
844
-
845
- var StandardTableVariantContext = React.createContext("standard");
846
-
847
- var StickyPropsPerColumnContext = React.createContext({});
848
- var useStickyPropsPerColumnContext = function () {
849
- return React.useContext(StickyPropsPerColumnContext);
850
- };
851
-
852
- var TotalNumColumnsContext = React.createContext(0);
853
- var useTotalNumColumns = function () { return React.useContext(TotalNumColumnsContext); };
854
-
855
- var createGroupConfigAndIdsForRows = function (columnGroups, columnGroupOrder, columnOrder) {
856
- var _a;
857
- if (columnGroups) {
858
- return lodash.compact((_a = columnGroupOrder === null || columnGroupOrder === void 0 ? void 0 : columnGroupOrder.map(function (groupId) {
859
- var groupConfig = columnGroups === null || columnGroups === void 0 ? void 0 : columnGroups[groupId];
860
- return {
861
- groupId: groupId,
862
- groupConfig: groupConfig,
863
- };
864
- })) !== null && _a !== void 0 ? _a : [])
865
- .filter(function (item) { var _a, _b; return ((_b = (_a = item.groupConfig) === null || _a === void 0 ? void 0 : _a.columnOrder.length) !== null && _b !== void 0 ? _b : 0) > 0; })
866
- .map(function (p) { return p; });
867
- }
868
- return [
869
- {
870
- groupId: "virtual",
871
- groupConfig: {
872
- label: "",
873
- columnOrder: columnOrder !== null && columnOrder !== void 0 ? columnOrder : [],
874
- },
875
- },
876
- ];
877
- };
878
-
879
- var getCellBorder = function (borderFromGroup, disableBorderLeft, borderLeft) {
880
- if (borderFromGroup) {
881
- if (borderFromGroup === true) {
882
- return tableBorder;
883
- }
884
- return borderFromGroup;
885
- }
886
- if (disableBorderLeft) {
887
- return undefined;
888
- }
889
- if (!borderLeft) {
890
- return undefined;
891
- }
892
- if (borderLeft === true) {
893
- return tableBorder;
894
- }
895
- return borderLeft;
896
- };
897
- var getCellBorderFromGroup = function (groupIndex, columnIndexInGroup, groupBorderLeft) {
898
- if (groupIndex === 0 || columnIndexInGroup !== 0) {
899
- return undefined;
900
- }
901
- if (groupBorderLeft) {
902
- if (groupBorderLeft === true) {
903
- return tableBorder;
904
- }
905
- return groupBorderLeft;
906
- }
907
- return undefined;
908
- };
909
-
910
- var useColumnConfigById = function (columnId) {
911
- var columns = useStandardTableConfig().columns;
912
- var column = columns[columnId];
913
- if (!column) {
914
- throw new Error("No config for column with id=" + columnId);
915
- }
916
- return column;
917
- };
918
- var useFirstColumnConfig = function () {
919
- var _a, _b, _c;
920
- var config = useStandardTableConfig();
921
- var columnId = (_c = (_b = (_a = useGroupConfigsAndIdsForRows()) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.groupConfig.columnOrder) === null || _c === void 0 ? void 0 : _c[0];
922
- return columnId ? config.columns[columnId] : undefined;
923
- };
924
- var useLastColumnConfig = function () {
925
- var _a;
926
- var config = useStandardTableConfig();
927
- var groupConfigsAndIds = useGroupConfigsAndIdsForRows();
928
- var groupConfigAndId = groupConfigsAndIds[groupConfigsAndIds.length - 1];
929
- var columnId = (_a = groupConfigAndId === null || groupConfigAndId === void 0 ? void 0 : groupConfigAndId.groupConfig.columnOrder[groupConfigAndId.groupConfig.columnOrder.length - 1]) !== null && _a !== void 0 ? _a : undefined;
930
- return columnId ? config.columns[columnId] : undefined;
931
- };
932
-
933
- var ColumnInGroup = function ColumnGroupColumnItem(_a) {
934
- var _b;
935
- var columnId = _a.columnId, groupConfig = _a.groupConfig, borderFromGroup = _a.borderFromGroup, colSpan = _a.colSpan, isFirstGroup = _a.isFirstGroup, isLastGroup = _a.isLastGroup;
936
- var label = groupConfig.label, render = groupConfig.render, contentLeft = groupConfig.contentLeft, contentRight = groupConfig.contentRight, loading = groupConfig.loading, error = groupConfig.error;
937
- var _c = useColumnConfigById(columnId), width = _c.width, minWidth = _c.minWidth, zIndex = _c.zIndex, borderLeft = _c.borderLeft;
938
- var config = useStandardTableConfig();
939
- var stickyHeader = config.stickyHeader, headerRowOffsetTop = config.headerRowOffsetTop;
940
- var stickyColumnGroups = "columnGroupOrder" in config ? config.stickyColumnGroups : undefined;
941
- var activeBorder = getActiveBorder(borderFromGroup, borderLeft);
942
- var isStickyFirstGroup = isFirstGroup &&
943
- (stickyColumnGroups === "first" || stickyColumnGroups === "both");
944
- var isStickyLastGroup = isLastGroup &&
945
- (stickyColumnGroups === "last" || stickyColumnGroups === "both");
946
- var isSticky = isStickyFirstGroup || isStickyLastGroup || stickyHeader;
947
- var isStickyGroup = isStickyFirstGroup || isStickyLastGroup;
948
- return (React__namespace.createElement("th", { colSpan: colSpan, style: {
949
- position: isSticky ? "sticky" : undefined,
950
- height: "var(--current-row-height)",
951
- width: width,
952
- minWidth: (_b = minWidth !== null && minWidth !== void 0 ? minWidth : width) !== null && _b !== void 0 ? _b : "20px",
953
- background: isSticky ? "white" : "transparent",
954
- left: isStickyFirstGroup ? "var(--current-left-offset)" : undefined,
955
- right: isStickyLastGroup ? "0px" : undefined,
956
- top: stickyHeader ? headerRowOffsetTop !== null && headerRowOffsetTop !== void 0 ? headerRowOffsetTop : "0px" : undefined,
957
- borderLeft: activeBorder,
958
- zIndex: stickyHeader && isStickyGroup
959
- ? "var(--swui-sticky-column-group-label-z-index)"
960
- : isStickyGroup
961
- ? "var(--swui-sticky-group-group-z-index)"
962
- : stickyHeader
963
- ? zIndex !== null && zIndex !== void 0 ? zIndex : "var(--swui-sticky-header-column-group-z-index)"
964
- : zIndex !== null && zIndex !== void 0 ? zIndex : 1,
965
- boxShadow: isStickyFirstGroup
966
- ? "var(--swui-sticky-column-shadow-right)"
967
- : isStickyLastGroup
968
- ? "var(--swui-sticky-column-shadow-left)"
969
- : undefined,
970
- } },
971
- React__namespace.createElement(core.Row, { alignItems: "center" }, React__namespace.createElement(React__namespace.Fragment, null,
972
- contentLeft && (React__namespace.createElement(React__namespace.Fragment, null,
973
- React__namespace.createElement(core.Space, null),
974
- contentLeft,
975
- React__namespace.createElement(core.Space, { num: 0.5 }))),
976
- render ? (render(groupConfig)) : (React__namespace.createElement(core.Indent, null,
977
- React__namespace.createElement(core.Heading, { variant: "h5", whiteSpace: "nowrap" }, label))),
978
- contentRight && (React__namespace.createElement(React__namespace.Fragment, null,
979
- React__namespace.createElement(core.Space, { num: 0.5 }),
980
- contentRight)),
981
- (error || loading) && React__namespace.createElement(core.Indent, null),
982
- loading ? (React__namespace.createElement(elements.InputSpinner, null)) : error ? (React__namespace.createElement(tooltip.Tooltip, { label: error, placement: "bottom", appendTo: document.body },
983
- React__namespace.createElement(elements.Icon, { icon: faExclamationTriangle.faExclamationTriangle, color: theme.cssColor("--lhds-color-red-500"), size: 14 }))) : undefined))));
984
- };
985
- var getActiveBorder = function (borderFromGroup, borderFromColumn) {
986
- if (borderFromGroup) {
987
- return borderFromGroup;
988
- }
989
- if (borderFromColumn) {
990
- return "1px solid transparent";
991
- }
992
- return undefined;
993
- };
994
-
995
- var createStickyHeaderProps = function (stickyHeader, stickyColumn, headerRowOffsetTop, zIndexFromConfig) { return ({
996
- top: stickyHeader
997
- ? getTopPosition$1(stickyHeader, headerRowOffsetTop)
998
- : undefined,
999
- background: stickyHeader || stickyColumn ? "white" : undefined,
1000
- position: stickyHeader || stickyColumn ? "sticky" : undefined,
1001
- boxShadow: stickyColumn
1002
- ? "var(--swui-sticky-column-shadow-right)"
1003
- : undefined,
1004
- zIndex: stickyHeader || stickyColumn
1005
- ? zIndexFromConfig !== null && zIndexFromConfig !== void 0 ? zIndexFromConfig : "var(--swui-sticky-header-z-index)"
1006
- : zIndexFromConfig,
1007
- }); };
1008
- var getTopPosition$1 = function (stickyHeader, headerRowOffsetTop) {
1009
- if (stickyHeader && headerRowOffsetTop) {
1010
- return headerRowOffsetTop;
1011
- }
1012
- else if (headerRowOffsetTop) {
1013
- return headerRowOffsetTop;
1014
- }
1015
- else if (stickyHeader) {
1016
- return 0;
1017
- }
1018
- return undefined;
1019
- };
1020
-
1021
- var ColumnGroupRow = React__namespace.memo(function ColumnGroupRow(_a) {
1022
- var _b = _a.height, height = _b === void 0 ? defaultTableRowHeight : _b;
1023
- var groupConfigAndIds = useGroupConfigsAndIdsForRows();
1024
- var config = useStandardTableConfig();
1025
- var showHeaderCheckbox = config.showHeaderCheckbox, enableExpandCollapse = config.enableExpandCollapse, rowIndent = config.rowIndent, zIndex = config.zIndex, stickyHeader = config.stickyHeader, stickyCheckboxColumn = config.stickyCheckboxColumn, headerRowOffsetTop = config.headerRowOffsetTop;
1026
- var stickyHeaderProps = createStickyHeaderProps(stickyHeader, stickyCheckboxColumn, headerRowOffsetTop, zIndex);
1027
- var zIndexForCells = (stickyHeader
1028
- ? "var(--swui-sticky-column-group-label-z-index)"
1029
- : "var(--swui-sticky-group-group-z-index)");
1030
- return (React__namespace.createElement("tr", { style: {
1031
- height: height,
1032
- borderLeft: tableBorderLeft,
1033
- } },
1034
- rowIndent && React__namespace.createElement("th", { style: stickyHeaderProps }),
1035
- enableExpandCollapse && (React__namespace.createElement("th", { style: __assign(__assign({}, stickyHeaderProps), { width: "var(--swui-expand-cell-width)", left: stickyCheckboxColumn ? "0px" : undefined, zIndex: zIndexForCells }) })),
1036
- showHeaderCheckbox && (React__namespace.createElement("th", { style: __assign(__assign({}, stickyHeaderProps), { left: stickyCheckboxColumn && enableExpandCollapse
1037
- ? "var(--swui-expand-cell-width)"
1038
- : stickyCheckboxColumn
1039
- ? "0px"
1040
- : undefined, zIndex: zIndexForCells }) })),
1041
- groupConfigAndIds.map(function (_a, groupIndex) {
1042
- var groupConfig = _a.groupConfig, groupId = _a.groupId;
1043
- return (React__namespace.createElement(ColumnInGroup, { isFirstGroup: groupIndex === 0, isLastGroup: groupIndex === groupConfigAndIds.length - 1, groupConfig: groupConfig, columnId: groupConfig.columnOrder[0], key: groupId, colSpan: groupConfig.columnOrder.length, borderFromGroup: getCellBorderFromGroup(groupIndex, 0, groupConfig.borderLeft) }));
1044
- }),
1045
- rowIndent && React__namespace.createElement("th", { style: stickyHeaderProps })));
1046
- });
1047
-
1048
- var calculateColumnIndexPerColumnId = function (config) {
1049
- var groupConfigs = createGroupConfigAndIdsForRows("columnGroups" in config ? config.columnGroups : undefined, "columnGroupOrder" in config ? config.columnGroupOrder : undefined, "columnOrder" in config ? config.columnOrder : undefined);
1050
- var columnIndexPerColumnId = {};
1051
- var currentIndex = 0;
1052
- if (config.showRowCheckbox) {
1053
- currentIndex++;
1054
- }
1055
- if (config.enableExpandCollapse) {
1056
- currentIndex++;
1057
- }
1058
- groupConfigs.forEach(function (conf) {
1059
- conf.groupConfig.columnOrder.forEach(function (columnId) {
1060
- if (isColumnNavigable(config.columns[columnId])) {
1061
- columnIndexPerColumnId[columnId] = currentIndex++;
1062
- }
1063
- });
1064
- });
1065
- return {
1066
- columnIndexPerColumnId: columnIndexPerColumnId,
1067
- numNavigableColumns: currentIndex,
1068
- };
1069
- };
1070
- var isColumnNavigable = function (columnConfig) { return !columnConfig.disableGridCell; };
1071
-
1072
- var ColumnIndexPerColumnIdContext = React.createContext({
1073
- columnIndexPerColumnId: {},
1074
- numNavigableColumns: 0,
1075
- });
1076
- var useColumnIndexPerColumnIdContext = function () {
1077
- return React.useContext(ColumnIndexPerColumnIdContext);
1078
- };
1079
-
1080
- var ensureConfigHasValidSticky = function (config) {
1081
- if ("columnGroupOrder" in config) {
1082
- ensureNoColumnsAreSticky(config);
1083
- if (config.stickyColumnGroups === "first" ||
1084
- config.stickyColumnGroups === "both") {
1085
- ensureAllColumnsInGroupHasFixedWidth(config, 0);
1086
- }
1087
- if (config.stickyColumnGroups === "last" ||
1088
- config.stickyColumnGroups === "both") {
1089
- ensureAllColumnsInGroupHasFixedWidth(config, config.columnGroupOrder.length - 1);
1090
- }
1091
- }
1092
- };
1093
- var ensureNoColumnsAreSticky = function (config) {
1094
- var columnIds = Object.keys(config.columns);
1095
- columnIds.forEach(function (columnId) {
1096
- var columnConfig = config.columns[columnId];
1097
- if (columnConfig.sticky) {
1098
- throw new Error("Columns can not be sticky when column groups are used. columnId: " +
1099
- columnId);
1100
- }
1101
- });
1102
- };
1103
- var ensureAllColumnsInGroupHasFixedWidth = function (config, columnGroupIndex) {
1104
- var _a;
1105
- if (!config.columnGroupOrder || config.columnGroupOrder.length === 0) {
1106
- throw new Error("columnGroupOrder required when validating column group fixed width.");
1107
- }
1108
- var columnGroupId = config.columnGroupOrder[columnGroupIndex];
1109
- var columnGroupConfig = (_a = config.columnGroups) === null || _a === void 0 ? void 0 : _a[columnGroupId];
1110
- if (!columnGroupConfig) {
1111
- throw new Error("Column group does not exist. Column group id = " + columnGroupId);
1112
- }
1113
- columnGroupConfig.columnOrder.forEach(function (columnId) {
1114
- var columnConfig = config.columns[columnId];
1115
- if (columnConfig.width == null) {
1116
- throw new Error("All columns in sticky column group must have width set.");
1117
- }
1118
- });
1119
- };
1120
-
1121
- /**
1122
- * This methods assumes that the config has already been validated to be correct.
1123
- * @param config
1124
- */
1125
- var calculateOffsetForColumnInStickyColumnGroups = function (config) {
1126
- var left = config.stickyColumnGroups === "first" ||
1127
- config.stickyColumnGroups === "both"
1128
- ? calculateOffsetForColumns(getColumnIdsForLeftSideStickyGroup(config), config.columns, true)
1129
- : undefined;
1130
- var right = config.stickyColumnGroups === "last" || config.stickyColumnGroups === "both"
1131
- ? calculateOffsetForColumns(getColumnIdsForRightSideStickyGroup(config), config.columns, false)
1132
- : undefined;
1133
- return __assign(__assign({}, left), right);
1134
- };
1135
- var calculateOffsetForColumns = function (columnIds, columns, includeOffsetForCheckboxAndExpand) {
1136
- var _a;
1137
- var r = {};
1138
- var widths = [
1139
- includeOffsetForCheckboxAndExpand ? "var(--current-left-offset)" : "0px",
1140
- ];
1141
- for (var i = 0; i < columnIds.length; i++) {
1142
- var columnId = columnIds[i];
1143
- var columnConfig = columns === null || columns === void 0 ? void 0 : columns[columnId];
1144
- r[columnId] = getCalcForWidths(widths);
1145
- widths.push((_a = columnConfig === null || columnConfig === void 0 ? void 0 : columnConfig.width) !== null && _a !== void 0 ? _a : "0px");
1146
- }
1147
- return r;
1148
- };
1149
- var getCalcForWidths = function (widths) {
1150
- if (widths.length === 0) {
1151
- return "0px";
1152
- }
1153
- if (widths.length === 1) {
1154
- return widths[0];
1155
- }
1156
- return "calc(" + widths.join(" + ") + ")";
1157
- };
1158
- var getColumnIdsForLeftSideStickyGroup = function (config) {
1159
- var _a, _b, _c;
1160
- var columnGroupId = (_a = config.columnGroupOrder) === null || _a === void 0 ? void 0 : _a[0];
1161
- if (!columnGroupId) {
1162
- return [];
1163
- }
1164
- var columnGroupConfig = (_b = config.columnGroups) === null || _b === void 0 ? void 0 : _b[columnGroupId];
1165
- return (_c = columnGroupConfig === null || columnGroupConfig === void 0 ? void 0 : columnGroupConfig.columnOrder) !== null && _c !== void 0 ? _c : [];
1166
- };
1167
- var getColumnIdsForRightSideStickyGroup = function (config) {
1168
- var _a, _b, _c;
1169
- var columnGroupId = (_a = config.columnGroupOrder) === null || _a === void 0 ? void 0 : _a[((_b = config.columnGroupOrder) === null || _b === void 0 ? void 0 : _b.length) - 1];
1170
- if (!columnGroupId) {
1171
- return [];
1172
- }
1173
- var columnGroupConfig = (_c = config.columnGroups) === null || _c === void 0 ? void 0 : _c[columnGroupId];
1174
- if (!columnGroupConfig) {
1175
- return [];
1176
- }
1177
- var r = __spreadArray([], columnGroupConfig.columnOrder, true);
1178
- r.reverse();
1179
- return r;
1180
- };
1181
-
1182
- var getStickyPropsPerColumn = function (config) {
1183
- if ("columnGroups" in config) {
1184
- return getStickyPropsPerColumnWithGroups(config);
1185
- }
1186
- else {
1187
- return getStickyPropsPerColumnWithNoGroups(config);
1188
- }
1189
- };
1190
- var getStickyPropsPerColumnWithNoGroups = function (config) {
1191
- var columnIds = Object.keys(config.columns);
1192
- return columnIds.reduce(function (sum, columnId) {
1193
- var _a;
1194
- var columnConfig = config.columns[columnId];
1195
- var sticky = Boolean(columnConfig.sticky);
1196
- sum[columnId] = {
1197
- sticky: sticky,
1198
- left: sticky
1199
- ? "calc(var(--current-left-offset) + ".concat((_a = columnConfig.left) !== null && _a !== void 0 ? _a : "0px", ")")
1200
- : undefined,
1201
- right: sticky ? columnConfig.right : undefined,
1202
- type: "column",
1203
- isFirstColumnInLastGroup: false,
1204
- isLastColumnInFirstGroup: false,
1205
- };
1206
- return sum;
1207
- }, {});
1208
- };
1209
- var getStickyPropsPerColumnWithGroups = function (config) {
1210
- var r = {};
1211
- var columnGroupIds = config.columnGroupOrder;
1212
- var stickyGroupOffsets = calculateOffsetForColumnInStickyColumnGroups(config);
1213
- var firstGroupIsSticky = config.stickyColumnGroups === "first" ||
1214
- config.stickyColumnGroups === "both";
1215
- var lastGroupIsSticky = config.stickyColumnGroups === "last" ||
1216
- config.stickyColumnGroups === "both";
1217
- columnGroupIds.forEach(function (columnGroupId, columnGroupIndex) {
1218
- var columnGroup = config.columnGroups[columnGroupId];
1219
- var columnIds = columnGroup.columnOrder;
1220
- columnIds.forEach(function (columnId, columnIndex) {
1221
- var isFirstGroup = columnGroupIndex === 0;
1222
- var isLastGroup = columnGroupIndex === columnGroupIds.length - 1;
1223
- var isStickyFirst = isFirstGroup && firstGroupIsSticky;
1224
- var isStickyLast = isLastGroup && lastGroupIsSticky;
1225
- var isFirstColumnInLastGroup = columnIndex === 0 && isLastGroup;
1226
- var isLastColumnInFirstGroup = columnIndex === columnIds.length - 1 && isFirstGroup;
1227
- r[columnId] = {
1228
- sticky: isStickyFirst || isStickyLast,
1229
- left: isStickyFirst ? stickyGroupOffsets[columnId] : undefined,
1230
- right: isStickyLast ? stickyGroupOffsets[columnId] : undefined,
1231
- type: isStickyFirst
1232
- ? "first-group"
1233
- : isStickyLast
1234
- ? "last-group"
1235
- : undefined,
1236
- isFirstColumnInLastGroup: isFirstColumnInLastGroup,
1237
- isLastColumnInFirstGroup: isLastColumnInFirstGroup,
1238
- };
1239
- });
1240
- });
1241
- return r;
1242
- };
1243
-
1244
- var createStandardTableActions = function (tableId, actions) {
1245
- return {
1246
- setSelectedIds: function (ids) {
1247
- return redux.reducerIdGateAction(getReducerIdFor(tableId, "selectedIds"), actions.selectedIds.setSelectedIds(ids));
1248
- },
1249
- clearSelection: function () {
1250
- return redux.reducerIdGateAction(getReducerIdFor(tableId, "selectedIds"), actions.selectedIds.clearSelectedIds());
1251
- },
1252
- expandByIds: function (ids) {
1253
- return redux.reducerIdGateAction(getReducerIdFor(tableId, "expandedRows"), actions.expandedRows.setSelectedIds(ids));
1254
- },
1255
- collapseAll: function () {
1256
- return redux.reducerIdGateAction(getReducerIdFor(tableId, "expandedRows"), actions.expandedRows.clearSelectedIds());
1257
- },
1258
- sortBy: function (columnId, desc) {
1259
- return redux.reducerIdGateAction(getReducerIdFor(tableId, "sortOrder"), actions.sortOrder.sortBy(columnId, desc !== null && desc !== void 0 ? desc : false));
1260
- },
1261
- clearSortOrder: function () {
1262
- return redux.reducerIdGateAction(getReducerIdFor(tableId, "sortOrder"), actions.sortOrder.clearSortOrder());
1263
- },
1264
- setLastSelectedId: function (lastSelectedId) {
1265
- return redux.reducerIdGateAction(getReducerIdFor(tableId, "fields"), actions.fields.setEntityFields({ lastSelectedId: lastSelectedId }));
1266
- },
1267
- };
1268
- };
1269
-
1270
- var useLocalStateTableContext = function (tableId, initialState) {
1271
- if (initialState === void 0) { initialState = createStandardTableInitialState(); }
1272
- var _a = React.useReducer(createStandardTableReducer(tableId), initialState), state = _a[0], dispatch = _a[1];
1273
- var actions = React.useMemo(function () {
1274
- return createStandardTableActions(tableId, createInternalStandardTableActions());
1275
- }, [tableId]);
1276
- var tableContext = React.useMemo(function () { return ({
1277
- dispatch: dispatch,
1278
- actions: actions,
1279
- state: state,
1280
- }); }, [state, actions, dispatch]);
1281
- return {
1282
- tableContext: tableContext,
1283
- };
1284
- };
1285
-
1286
- var getTotalNumColumns = function (config) {
1287
- return (config.rowIndent ? 2 : 0) +
1288
- (config.enableExpandCollapse ? 1 : 0) +
1289
- (config.showRowCheckbox ? 1 : 0) +
1290
- getNumUserColumns(config);
1291
- };
1292
- var getNumUserColumns = function (config) {
1293
- var _a, _b;
1294
- if ("columnGroupOrder" in config) {
1295
- return config.columnGroupOrder.reduce(function (sum, groupId) {
1296
- var _a, _b, _c;
1297
- var group = (_a = config.columnGroups) === null || _a === void 0 ? void 0 : _a[groupId];
1298
- return sum + ((_c = (_b = group === null || group === void 0 ? void 0 : group.columnOrder) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0);
1299
- }, 0);
1300
- }
1301
- return (_b = (_a = config.columnOrder) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
1302
- };
1303
-
1304
- var css_248z$3 = ".StandardTable-module_standardTable__2WNjA {\n --swui-standard-table-height: 40px;\n --swui-sticky-header-shadow: 2px 4px 4px 0 rgba(0, 0, 0, 0.05);\n --swui-sticky-header-shadow-and-right: var(--swui-sticky-header-shadow),\n var(--swui-sticky-column-shadow-right);\n --swui-sticky-header-shadow-and-left: var(--swui-sticky-header-shadow),\n var(--swui-sticky-column-shadow-left);\n --swui-sticky-column-shadow-right: 4px 2px 4px 0 rgba(0, 0, 0, 0.05);\n --swui-sticky-column-shadow-left: -4px 2px 4px 0 rgba(0, 0, 0, 0.05);\n --swui-sticky-header-z-index: 10;\n --swui-sticky-column-z-index: 20;\n --swui-sticky-group-group-z-index: 25;\n --swui-sticky-group-header-z-index: 26;\n --swui-sticky-header-column-group-z-index: 30;\n --swui-sticky-column-group-label-z-index: 40;\n --swui-sticky-header-in-sticky-column-z-index: 50;\n --swui-sticky-popover-z-index: 60;\n --swui-expand-cell-width: 45px;\n --swui-checkbox-cell-width: 45px;\n --swui-expand-highlight-border-width: 2px;\n\n /* Current */\n --current-row-height: var(--swui-standard-table-height);\n --current-left-offset: 0px;\n\n border-spacing: 0;\n}\n\n .StandardTable-module_standardTable__2WNjA td {\n border-top: 1px solid var(--lhds-color-ui-300);\n padding: 0;\n }\n\n .StandardTable-module_standardTable__2WNjA th {\n padding: 0;\n }\n\n .StandardTable-module_standardTable__2WNjA.StandardTable-module_relaxed__3Gff3 {\n --current-row-height: 48px;\n }\n\n .StandardTable-module_standardTable__2WNjA.StandardTable-module_condensed__32B6k {\n --current-row-height: 32px;\n }\n\n .StandardTable-module_standardTable__2WNjA.StandardTable-module_compact__8du-I {\n --current-row-height: 24px;\n }\n";
1305
- var styles$3 = {"standardTable":"StandardTable-module_standardTable__2WNjA","relaxed":"StandardTable-module_relaxed__3Gff3","condensed":"StandardTable-module_condensed__32B6k","compact":"StandardTable-module_compact__8du-I"};
1306
- styleInject(css_248z$3);
1307
-
1308
- var multitypeComparator = function (a, b) {
1309
- if (a != null && b == null) {
1310
- return -1;
1311
- }
1312
- if (a == null && b != null) {
1313
- return 1;
1314
- }
1315
- if (isBothOfType(a, b, "number")) {
1316
- return Number(a) - Number(b);
1317
- }
1318
- if (isBothOfType(a, b, "boolean")) {
1319
- return Number(b) - Number(a);
1320
- }
1321
- if (isBothOfType(a, b, "string")) {
1322
- return String(a).localeCompare(String(b));
1323
- }
1324
- if (a instanceof Date && b instanceof Date) {
1325
- return a.getTime() - b.getTime();
1326
- }
1327
- return 0;
1328
- };
1329
- var isBothOfType = function (a, b, type) { return typeof a === type && typeof b === type; };
1330
-
1331
- var useColumnValueResolver = function (columnId) {
1332
- var columns = useStandardTableConfig().columns;
1333
- if (!columnId) {
1334
- return undefined;
1335
- }
1336
- var column = columns[columnId];
1337
- if (!column) {
1338
- return undefined;
1339
- }
1340
- return column.itemValueResolver;
1341
- };
1342
-
1343
- var StandardTableRowCheckbox = React__namespace.memo(function StandardTableRowCheckbox(_a) {
1344
- var value = _a.value, onValueChange = _a.onValueChange, colIndex = _a.colIndex, rowIndex = _a.rowIndex, numRows = _a.numRows, disabled = _a.disabled, onValueChangeAndShift = _a.onValueChangeAndShift, shiftPressedRef = _a.shiftPressedRef;
1345
- var totalNumColumns = useTotalNumColumnsForRows();
1346
- var tableId = useStandardTableId();
1347
- var gridCell = useGridCell(Boolean(value), {
1348
- colIndex: colIndex,
1349
- numCols: totalNumColumns,
1350
- numRows: numRows,
1351
- rowIndex: rowIndex,
1352
- tableId: tableId,
1353
- });
1354
- var requiredProps = gridCell.requiredProps;
1355
- var internalOnValueChange = React.useCallback(function (value) {
1356
- if (shiftPressedRef.current) {
1357
- onValueChangeAndShift === null || onValueChangeAndShift === void 0 ? void 0 : onValueChangeAndShift(value);
1358
- }
1359
- else {
1360
- onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(value);
1361
- }
1362
- }, [onValueChange, onValueChangeAndShift, shiftPressedRef]);
1363
- return (React__namespace.createElement(forms.Checkbox, __assign({ size: "small", disabled: disabled, value: value, onValueChange: internalOnValueChange }, requiredProps)));
1364
- });
1365
-
1366
- var getIdsBetweenSelected = function (idList, selected1, selected2) {
1367
- if (selected1 == null || selected2 == null || idList == null) {
1368
- return undefined;
1369
- }
1370
- if (selected1 === selected2) {
1371
- return undefined;
1372
- }
1373
- var i1 = idList.indexOf(selected1);
1374
- var i2 = idList.indexOf(selected2);
1375
- if (i1 < 0 || i2 < 0) {
1376
- return undefined;
1377
- }
1378
- var start = Math.min(i1, i2);
1379
- var end = Math.max(i1, i2);
1380
- return idList.slice(start, end + 1);
1381
- };
1382
-
1383
- var useRowCheckbox = function (item, idListForEnabledItems) {
1384
- var keyResolver = useStandardTableConfig().keyResolver;
1385
- var _a = useStandardTableState(), selectedIds = _a.selectedIds.selectedIds, lastSelectedId = _a.fields.lastSelectedId;
1386
- var _b = useStandardTableActions(), _c = _b.actions, setSelectedIds = _c.setSelectedIds, setLastSelectedId = _c.setLastSelectedId, dispatch = _b.dispatch;
1387
- var itemKey = React.useMemo(function () { return keyResolver(item); }, [keyResolver, item]);
1388
- var isSelected = React.useMemo(function () { return selectedIds.includes(itemKey); }, [selectedIds, itemKey]);
1389
- var _d = core.useArraySet(selectedIds, function (ids) { return dispatch(setSelectedIds(ids)); }), toggle = _d.toggle, addMultiple = _d.addMultiple, removeMultiple = _d.removeMultiple;
1390
- var shiftAndToggleSelected = React.useCallback(function () {
1391
- if (idListForEnabledItems && lastSelectedId) {
1392
- var idList = getIdsBetweenSelected(idListForEnabledItems, lastSelectedId, itemKey);
1393
- if (idList === null || idList === void 0 ? void 0 : idList.length) {
1394
- if (isSelected) {
1395
- removeMultiple(idList);
1396
- }
1397
- else {
1398
- addMultiple(idList);
1399
- }
1400
- }
1401
- else {
1402
- toggle(itemKey);
1403
- }
1404
- }
1405
- else {
1406
- toggle(itemKey);
1407
- }
1408
- dispatch(setLastSelectedId(itemKey));
1409
- }, [
1410
- idListForEnabledItems,
1411
- lastSelectedId,
1412
- dispatch,
1413
- setLastSelectedId,
1414
- itemKey,
1415
- isSelected,
1416
- removeMultiple,
1417
- addMultiple,
1418
- toggle,
1419
- ]);
1420
- var toggleSelected = React.useCallback(function () {
1421
- toggle(itemKey);
1422
- dispatch(setLastSelectedId(itemKey));
1423
- }, [toggle, itemKey, dispatch, setLastSelectedId]);
1424
- return {
1425
- isSelected: isSelected,
1426
- toggleSelected: toggleSelected,
1427
- shiftAndToggleSelected: shiftAndToggleSelected,
1428
- };
1429
- };
1430
-
1431
- var useExpandCollapseActions = function (item) {
1432
- var keyResolver = useStandardTableConfig().keyResolver;
1433
- var selectedIds = useStandardTableState().expandedRows.selectedIds;
1434
- var _a = useStandardTableActions(), expandByIds = _a.actions.expandByIds, dispatch = _a.dispatch;
1435
- var itemKey = React.useMemo(function () { return keyResolver(item); }, [keyResolver, item]);
1436
- var isExpanded = React.useMemo(function () { return selectedIds.includes(itemKey); }, [selectedIds, itemKey]);
1437
- var toggle = core.useArraySet(selectedIds, function (ids) {
1438
- return dispatch(expandByIds(ids));
1439
- }).toggle;
1440
- var toggleRowExpanded = React.useCallback(function () {
1441
- toggle(itemKey);
1442
- }, [toggle, itemKey]);
1443
- return {
1444
- toggleRowExpanded: toggleRowExpanded,
1445
- isExpanded: isExpanded,
1446
- };
1447
- };
1448
-
1449
- var StandardTableRowExpandButton = function (_a) {
1450
- var item = _a.item, colIndex = _a.colIndex, numRows = _a.numRows, rowIndex = _a.rowIndex;
1451
- var totalNumColumns = useTotalNumColumnsForRows();
1452
- var tableId = useStandardTableId();
1453
- var gridCell = useGridCell(true, {
1454
- colIndex: colIndex,
1455
- numCols: totalNumColumns,
1456
- numRows: numRows,
1457
- rowIndex: rowIndex,
1458
- tableId: tableId,
1459
- });
1460
- var requiredProps = gridCell.requiredProps;
1461
- var expandCollapseDisableResolver = useStandardTableConfig().expandCollapseDisableResolver;
1462
- var _b = useExpandCollapseActions(item), toggleRowExpanded = _b.toggleRowExpanded, isExpanded = _b.isExpanded;
1463
- var buttonDisabled = React.useMemo(function () {
1464
- if (!expandCollapseDisableResolver) {
1465
- return false;
1466
- }
1467
- return expandCollapseDisableResolver(item);
1468
- }, [expandCollapseDisableResolver, item]);
1469
- return (React__namespace.createElement(core.Row, { alignItems: "center", justifyContent: "center", indent: true }, !buttonDisabled && (React__namespace.createElement(elements.FlatButton, __assign({ size: "small", leftIcon: isExpanded ? faChevronDown.faChevronDown : faChevronRight.faChevronRight, onClick: toggleRowExpanded }, requiredProps)))));
1470
- };
1471
-
1472
- var getBackgroundColor$1 = function (backgroundResolver, item, background) {
1473
- return backgroundResolver ? backgroundResolver(item) : background;
1474
- };
1475
- var useBackground = function (backgroundResolver, item, background) {
1476
- return React.useMemo(function () { return getBackgroundColor$1(backgroundResolver, item, background); }, [backgroundResolver, item, background]);
1477
- };
1478
- var useCellBackgroundByColumnId = function (columnId, item) {
1479
- var _a = useColumnConfigById(columnId), background = _a.background, backgroundResolver = _a.backgroundResolver;
1480
- return useBackground(backgroundResolver, item, background);
1481
- };
1482
- var useCellBackgroundByColumnConfig = function (columnConfig, item) {
1483
- var _a = columnConfig !== null && columnConfig !== void 0 ? columnConfig : {}, background = _a.background, backgroundResolver = _a.backgroundResolver;
1484
- return useBackground(backgroundResolver, item, background);
1485
- };
1486
-
1487
- var formatValueLabel = function (itemValue) {
1488
- if (itemValue == null) {
1489
- return "";
1490
- }
1491
- else if (itemValue instanceof Date) {
1492
- return itemValue.toISOString();
1493
- }
1494
- else if (typeof itemValue === "object") {
1495
- return JSON.stringify(itemValue);
1496
- }
1497
- else {
1498
- return String(itemValue);
1499
- }
1500
- };
1501
- var formatColumnIdToHeaderCellLabel = function (columnId) {
1502
- return lodash.upperFirst(lodash.lowerCase(columnId));
1503
- };
1504
-
1505
- var css_248z$2 = ".StandardTableCellUi-module_standardTableCell__1lvps {\n outline: none;\n}\n";
1506
- var styles$2 = {"standardTableCell":"StandardTableCellUi-module_standardTableCell__1lvps"};
1507
- styleInject(css_248z$2);
1508
-
1509
- var StandardTableCellUi = React__namespace.memo(function StandardTableCellUi(_a) {
1510
- var enableGridCell = _a.enableGridCell, children = _a.children, background = _a.background, gridCellRequiredProps = _a.gridCellRequiredProps, isEditing = _a.isEditing, justifyContent = _a.justifyContent, onKeyDown = _a.onKeyDown, width = _a.width, minWidth = _a.minWidth;
1511
- return (React__namespace.createElement(core.Row, { width: width, minWidth: minWidth, height: "inherit", background: background, overflow: "hidden", onKeyDown: onKeyDown },
1512
- React__namespace.createElement(core.Row, __assign({ border: "1px solid transparent", className: styles$2.standardTableCell, width: "100%", height: "100%", justifyContent: justifyContent, alignItems: "center", borderRadius: enableGridCell ? "4px" : undefined, focusBorder: enableGridCell && !isEditing
1513
- ? "1px solid var(--swui-primary-action-color)"
1514
- : undefined, hoverBorder: enableGridCell && !isEditing
1515
- ? "1px solid var(--lhds-color-ui-300)"
1516
- : undefined }, (enableGridCell ? gridCellRequiredProps : undefined)), children)));
1517
- });
1518
-
1519
- var css_248z$1 = ".TextCell-module_textCell__3nIGF {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n";
1520
- var styles$1 = {"textCell":"TextCell-module_textCell__3nIGF"};
1521
- styleInject(css_248z$1);
1522
-
1523
- var TextCell = React__namespace.memo(function TextCell(_a) {
1524
- var label = _a.label;
1525
- return (React__namespace.createElement(core.Indent, { overflow: "hidden" },
1526
- React__namespace.createElement(core.Text, { className: styles$1.textCell, title: label }, label)));
1527
- });
1528
-
1529
- var StandardTableCell = React__namespace.memo(function StandardTableCell(_a) {
1530
- var _b;
1531
- var columnId = _a.columnId, item = _a.item, colIndex = _a.colIndex, rowIndex = _a.rowIndex, numRows = _a.numRows, borderFromGroup = _a.borderFromGroup, disableBorderLeft = _a.disableBorderLeft;
1532
- var _c = useStandardTableConfig(), keyResolver = _c.keyResolver, enableGridCell = _c.enableGridCell, gridCellOptionsForTable = _c.gridCellOptions;
1533
- var selectedIds = useStandardTableState().selectedIds.selectedIds;
1534
- var tableId = useStandardTableId();
1535
- var onKeyDownTable = useOnKeyDownContext();
1536
- var numNavigableColumns = useColumnIndexPerColumnIdContext().numNavigableColumns;
1537
- var stickyPropsPerColumnContext = useStickyPropsPerColumnContext();
1538
- var itemKey = React.useMemo(function () { return keyResolver(item); }, [item, keyResolver]);
1539
- var isSelected = React.useMemo(function () {
1540
- return selectedIds.indexOf(itemKey) >= 0;
1541
- }, [itemKey, selectedIds]);
1542
- var _d = useColumnConfigById(columnId), itemValueResolver = _d.itemValueResolver, itemLabelFormatter = _d.itemLabelFormatter, width = _d.width, minWidth = _d.minWidth, _e = _d.justifyContentCell, justifyContentCell = _e === void 0 ? "flex-start" : _e, borderLeft = _d.borderLeft, renderCell = _d.renderCell, gridCellOptionsForColumn = _d.gridCellOptions, isEditable = _d.isEditable, onChange = _d.onChange, onKeyDownCell = _d.onKeyDown, disableGridCell = _d.disableGridCell, disableGridCellFocus = _d.disableGridCellFocus, zIndex = _d.zIndex;
1543
- var itemValue = React.useMemo(function () {
1544
- if (itemValueResolver) {
1545
- return itemValueResolver(item);
1546
- }
1547
- if (columnId in item) {
1548
- return item[columnId];
1549
- }
1550
- return "";
1551
- }, [itemValueResolver, item, columnId]);
1552
- var label = React.useMemo(function () {
1553
- return itemLabelFormatter
1554
- ? itemLabelFormatter(itemValue, item)
1555
- : formatValueLabel(itemValue);
1556
- }, [itemValue, itemLabelFormatter, item]);
1557
- var editable = typeof isEditable === "boolean"
1558
- ? isEditable
1559
- : isEditable
1560
- ? isEditable(item)
1561
- : undefined;
1562
- var onKeyDownHandler = React.useCallback(function (ev) {
1563
- onKeyDownCell === null || onKeyDownCell === void 0 ? void 0 : onKeyDownCell(ev, { columnId: columnId, item: item });
1564
- onKeyDownTable === null || onKeyDownTable === void 0 ? void 0 : onKeyDownTable(ev, { columnId: columnId, item: item });
1565
- }, [onKeyDownTable, columnId, item, onKeyDownCell]);
1566
- var gridCell = useGridCell(label, __assign(__assign({ colIndex: colIndex, rowIndex: rowIndex, numRows: numRows, numCols: numNavigableColumns, tableId: tableId, isEditable: editable, onChange: onChange
1567
- ? function (value) { return onChange(item, value); }
1568
- : undefined }, gridCellOptionsForTable), gridCellOptionsForColumn));
1569
- var stickyProps = stickyPropsPerColumnContext[columnId];
1570
- var background = (_b = useCellBackgroundByColumnId(columnId, item)) !== null && _b !== void 0 ? _b : "inherit";
1571
- var currentZIndex = stickyProps.sticky
1572
- ? zIndex !== null && zIndex !== void 0 ? zIndex : "var(--swui-sticky-column-z-index)"
1573
- : zIndex !== null && zIndex !== void 0 ? zIndex : 1;
1574
- var content = React.useMemo(function () {
1575
- return renderCell ? (renderCell({
1576
- label: label,
1577
- value: itemValue,
1578
- item: item,
1579
- gridCell: gridCell,
1580
- isEditable: editable,
1581
- isSelected: isSelected,
1582
- zIndex: currentZIndex,
1583
- itemKey: itemKey,
1584
- })) : (React__namespace.createElement(TextCell, { label: label }));
1585
- }, [
1586
- renderCell,
1587
- label,
1588
- itemValue,
1589
- item,
1590
- gridCell,
1591
- editable,
1592
- isSelected,
1593
- currentZIndex,
1594
- itemKey,
1595
- ]);
1596
- var activeBorderLeft = getCellBorder(borderFromGroup, disableBorderLeft, borderLeft);
1597
- var shadow = stickyProps.sticky &&
1598
- stickyProps.type === "last-group" &&
1599
- stickyProps.isFirstColumnInLastGroup
1600
- ? "var(--swui-sticky-column-shadow-left)"
1601
- : stickyProps.sticky && stickyProps.type === "column" && stickyProps.right
1602
- ? "var(--swui-sticky-column-shadow-left)"
1603
- : stickyProps.sticky
1604
- ? "var(--swui-sticky-column-shadow-right)"
1605
- : undefined;
1606
- return (React__namespace.createElement("td", { style: {
1607
- borderLeft: activeBorderLeft,
1608
- position: stickyProps.sticky ? "sticky" : undefined,
1609
- left: stickyProps.sticky ? stickyProps.left : undefined,
1610
- right: stickyProps.sticky ? stickyProps.right : undefined,
1611
- boxShadow: shadow,
1612
- zIndex: currentZIndex,
1613
- height: "var(--current-row-height)",
1614
- background: background,
1615
- } },
1616
- React__namespace.createElement(StandardTableCellUi, { enableGridCell: enableGridCell && !disableGridCell && !disableGridCellFocus, gridCellRequiredProps: gridCell.requiredProps, isEditing: gridCell.isEditing, width: width, minWidth: minWidth, justifyContent: justifyContentCell, onKeyDown: onKeyDownHandler }, content)));
1617
- });
1618
-
1619
- var StandardTableRowExpansion = function StandardTableRowExpansion(_a) {
1620
- var item = _a.item;
1621
- var _b = useStandardTableConfig(), renderRowExpansion = _b.renderRowExpansion, enableExpandCollapse = _b.enableExpandCollapse;
1622
- var _c = useExpandCollapseActions(item), isExpanded = _c.isExpanded, toggleRowExpanded = _c.toggleRowExpanded;
1623
- var totalNumColumns = useTotalNumColumns();
1624
- return (React__namespace.createElement(React__namespace.Fragment, null, enableExpandCollapse && renderRowExpansion && isExpanded && (React__namespace.createElement("tr", { style: {
1625
- borderLeft: tableBorderLeftExpanded,
1626
- background: tableBackgroundColorExpanded,
1627
- } },
1628
- React__namespace.createElement("td", { colSpan: totalNumColumns }, renderRowExpansion(item, { onRequestCollapse: toggleRowExpanded }))))));
1629
- };
1630
-
1631
- var TrWithHoverBackground = styled__default["default"].tr(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n ", "\n ", ";\n ", ";\n ", ";\n ", "\n"], ["\n ", "\n ", ";\n ", ";\n ", ";\n ", "\n"])), function (_a) {
1632
- var focusBackground = _a.focusBackground;
1633
- return focusBackground ? "--focus-within-background: ".concat(focusBackground, ";") : "";
1634
- }, function (_a) {
1635
- var borderLeft = _a.borderLeft;
1636
- return (borderLeft ? "border-left: ".concat(borderLeft, ";") : "");
1637
- }, function (_a) {
1638
- var background = _a.background;
1639
- return (background ? "background: ".concat(background, ";") : "");
1640
- }, function (_a) {
1641
- var height = _a.height;
1642
- return (height ? "height: ".concat(height, ";") : "");
1643
- }, function (_a) {
1644
- var hoverBackground = _a.hoverBackground;
1645
- return hoverBackground
1646
- ? " &:hover {\n background: ".concat(hoverBackground, ";\n }\n")
1647
- : "";
1648
- });
1649
- var templateObject_1;
1650
-
1651
- var StandardTableRow = React__namespace.memo(function StandardTableRow(_a) {
1652
- var item = _a.item, idListForEnabledItems = _a.idListForEnabledItems, rowIndex = _a.rowIndex, numRows = _a.numRows, colIndexOffset = _a.colIndexOffset, alwaysVisible = _a.alwaysVisible, shiftPressedRef = _a.shiftPressedRef;
1653
- var trRef = React.useRef(null);
1654
- var totalNumColumns = useTotalNumColumns();
1655
- var stickyCheckboxColumn = useStandardTableConfig().stickyCheckboxColumn;
1656
- var groupConfigsAndIds = useGroupConfigsAndIdsForRows();
1657
- var columnIndexPerColumnId = useColumnIndexPerColumnIdContext().columnIndexPerColumnId;
1658
- var _b = useStandardTableConfig(), showRowCheckbox = _b.showRowCheckbox, rowBackgroundResolver = _b.rowBackgroundResolver, checkboxDisabledResolver = _b.checkboxDisabledResolver, enableGridCell = _b.enableGridCell, rowIndent = _b.rowIndent, enableExpandCollapse = _b.enableExpandCollapse;
1659
- var isExpanded = useExpandCollapseActions(item).isExpanded;
1660
- var _c = useRowCheckbox(item, idListForEnabledItems), isSelected = _c.isSelected, toggleSelected = _c.toggleSelected, shiftAndToggleSelected = _c.shiftAndToggleSelected;
1661
- var visible = core.useOnScreen(trRef, {
1662
- rootMargin: "400px 0px 400px 0px",
1663
- threshold: 0,
1664
- });
1665
- var resolvedBackgroundResult = React.useMemo(function () { return rowBackgroundResolver === null || rowBackgroundResolver === void 0 ? void 0 : rowBackgroundResolver(item, isSelected); }, [isSelected, item, rowBackgroundResolver]);
1666
- var background = getBackgroundColor(resolvedBackgroundResult, isSelected, isExpanded);
1667
- var hoverBackground = getHoverBackgroundColor(resolvedBackgroundResult, isSelected, isExpanded);
1668
- var focusBackground = getFocusBackgroundColor(resolvedBackgroundResult, isSelected, hoverBackground);
1669
- var disabled = React.useMemo(function () { return checkboxDisabledResolver === null || checkboxDisabledResolver === void 0 ? void 0 : checkboxDisabledResolver(item); }, [item, checkboxDisabledResolver]);
1670
- var firstColumn = useFirstColumnConfig();
1671
- var firstColumnBackground = useCellBackgroundByColumnConfig(firstColumn, item);
1672
- var lastColumn = useLastColumnConfig();
1673
- var lastColumnBackground = useCellBackgroundByColumnConfig(lastColumn, item);
1674
- var content = React.useMemo(function () { return (React__namespace.createElement(React__namespace.Fragment, null,
1675
- React__namespace.createElement(React__namespace.Fragment, null,
1676
- rowIndent && (React__namespace.createElement("td", { style: {
1677
- background: firstColumnBackground,
1678
- } },
1679
- React__namespace.createElement(core.Indent, { num: rowIndent }))),
1680
- enableExpandCollapse && (React__namespace.createElement("td", { style: {
1681
- background: stickyCheckboxColumn ? "inherit" : undefined,
1682
- position: stickyCheckboxColumn ? "sticky" : undefined,
1683
- left: stickyCheckboxColumn ? "0px" : undefined,
1684
- boxShadow: stickyCheckboxColumn
1685
- ? "var(--swui-sticky-column-shadow-right)"
1686
- : undefined,
1687
- zIndex: stickyCheckboxColumn
1688
- ? "var(--swui-sticky-column-z-index)"
1689
- : undefined,
1690
- } },
1691
- React__namespace.createElement(core.Row, { width: "var(--swui-expand-cell-width)", minWidth: "var(--swui-expand-cell-width)", alignItems: "center", justifyContent: "center" },
1692
- React__namespace.createElement(StandardTableRowExpandButton, { colIndex: colIndexOffset, rowIndex: enableGridCell ? rowIndex : 0, numRows: enableGridCell ? numRows : 0, item: item })))),
1693
- showRowCheckbox && (React__namespace.createElement("td", { style: {
1694
- background: stickyCheckboxColumn ? "inherit" : undefined,
1695
- position: stickyCheckboxColumn ? "sticky" : undefined,
1696
- left: enableExpandCollapse && stickyCheckboxColumn
1697
- ? "var(--swui-expand-cell-width)"
1698
- : stickyCheckboxColumn
1699
- ? "0px"
1700
- : undefined,
1701
- textAlign: "center",
1702
- boxShadow: stickyCheckboxColumn
1703
- ? "var(--swui-sticky-column-shadow-right)"
1704
- : undefined,
1705
- zIndex: stickyCheckboxColumn
1706
- ? "var(--swui-sticky-column-z-index)"
1707
- : undefined,
1708
- } },
1709
- React__namespace.createElement(core.Row, { width: "var(--swui-checkbox-cell-width)", minWidth: "var(--swui-checkbox-cell-width)", alignItems: "center", justifyContent: "center" },
1710
- React__namespace.createElement(StandardTableRowCheckbox, { disabled: disabled, value: isSelected, onValueChange: toggleSelected, onValueChangeAndShift: shiftAndToggleSelected, colIndex: colIndexOffset + (enableExpandCollapse ? 1 : 0), rowIndex: rowIndex, numRows: numRows, shiftPressedRef: shiftPressedRef })))),
1711
- groupConfigsAndIds.map(function (_a, groupIndex) {
1712
- var groupConfig = _a.groupConfig, groupId = _a.groupId;
1713
- return (React__namespace.createElement(React__namespace.Fragment, { key: groupId }, groupConfig.columnOrder.map(function (columnId, index) { return (React__namespace.createElement(StandardTableCell, { key: columnId, columnId: columnId, item: item, colIndex: colIndexOffset + columnIndexPerColumnId[columnId], rowIndex: rowIndex, numRows: numRows, borderFromGroup: getCellBorderFromGroup(groupIndex, index, groupConfig.borderLeft), disableBorderLeft: groupIndex === 0 && index === 0 })); })));
1714
- }),
1715
- rowIndent && (React__namespace.createElement("td", { style: {
1716
- background: lastColumnBackground,
1717
- } },
1718
- React__namespace.createElement(core.Indent, { num: rowIndent }))),
1719
- React__namespace.createElement("td", null)))); }, [
1720
- colIndexOffset,
1721
- columnIndexPerColumnId,
1722
- disabled,
1723
- enableExpandCollapse,
1724
- enableGridCell,
1725
- firstColumnBackground,
1726
- groupConfigsAndIds,
1727
- isSelected,
1728
- item,
1729
- lastColumnBackground,
1730
- numRows,
1731
- rowIndent,
1732
- rowIndex,
1733
- shiftAndToggleSelected,
1734
- shiftPressedRef,
1735
- showRowCheckbox,
1736
- stickyCheckboxColumn,
1737
- toggleSelected,
1738
- ]);
1739
- return (React__namespace.createElement(React__namespace.Fragment, null,
1740
- React__namespace.createElement(TrWithHoverBackground, { hoverBackground: hoverBackground, background: background, focusBackground: focusBackground, borderLeft: isExpanded ? tableBorderLeftExpanded : tableBorderLeft, ref: trRef }, visible || alwaysVisible || isExpanded ? (content) : (React__namespace.createElement("td", { colSpan: totalNumColumns, style: { height: "var(--current-row-height)" } }))),
1741
- React__namespace.createElement(StandardTableRowExpansion, { item: item })));
1742
- });
1743
- var getBackgroundColor = function (resolvedBackground, isSelected, isExpanded) {
1744
- if (resolvedBackground) {
1745
- return typeof resolvedBackground === "string"
1746
- ? resolvedBackground
1747
- : resolvedBackground === null || resolvedBackground === void 0 ? void 0 : resolvedBackground.background;
1748
- }
1749
- if (isSelected) {
1750
- return theme.cssColor("--lhds-color-blue-100");
1751
- }
1752
- if (isExpanded) {
1753
- return tableBackgroundColorExpanded;
1754
- }
1755
- return "white";
1756
- };
1757
- var getHoverBackgroundColor = function (resolvedBackground, isSelected, isExpanded) {
1758
- if (resolvedBackground) {
1759
- return typeof resolvedBackground === "string"
1760
- ? resolvedBackground
1761
- : resolvedBackground === null || resolvedBackground === void 0 ? void 0 : resolvedBackground.hoverBackground;
1762
- }
1763
- if (isSelected) {
1764
- return theme.cssColor("--lhds-color-blue-100");
1765
- }
1766
- if (isExpanded) {
1767
- return tableBackgroundHoverColorExpanded;
1768
- }
1769
- return theme.cssColor("--lhds-color-ui-100");
1770
- };
1771
- var getFocusBackgroundColor = function (resolvedBackground, isSelected, hoverBackground) {
1772
- if (isSelected) {
1773
- return theme.cssColor("--lhds-color-blue-100");
1774
- }
1775
- if (resolvedBackground) {
1776
- return hoverBackground;
1777
- }
1778
- return undefined;
1779
- };
1780
-
1781
- var isSummaryRowVisible = function (columns) {
1782
- return Object.values(columns).some(function (columnConfig) { return columnHasSummaryCell(columnConfig); });
1783
- };
1784
- var columnHasSummaryCell = function (columnConfig) {
1785
- return Boolean(columnConfig.renderSummaryCell || columnConfig.summaryText);
1786
- };
1787
-
1788
- var css_248z = ".StandardTableSummaryRow-module_summaryRow__1qAAJ td {\n border-top: 1px solid var(--lhds-color-ui-400);\n }\n";
1789
- var styles = {"summaryRow":"StandardTableSummaryRow-module_summaryRow__1qAAJ"};
1790
- styleInject(css_248z);
1791
-
1792
- var SummaryCell = React__namespace.memo(function SummaryCell(_a) {
1793
- var columnId = _a.columnId, items = _a.items, disableBorderLeft = _a.disableBorderLeft, borderFromGroup = _a.borderFromGroup, colSpan = _a.colSpan;
1794
- var stickyPropsPerColumnContext = useStickyPropsPerColumnContext();
1795
- var _b = useColumnConfigById(columnId), renderSummaryCell = _b.renderSummaryCell, summaryText = _b.summaryText, borderLeft = _b.borderLeft, zIndex = _b.zIndex, width = _b.width, minWidth = _b.minWidth, justifyContentCell = _b.justifyContentCell;
1796
- var activeBorderLeft = getCellBorder(borderFromGroup, disableBorderLeft, borderLeft);
1797
- var stickyProps = stickyPropsPerColumnContext[columnId];
1798
- var currentZIndex = stickyProps.sticky
1799
- ? zIndex !== null && zIndex !== void 0 ? zIndex : "var(--swui-sticky-column-z-index)"
1800
- : zIndex !== null && zIndex !== void 0 ? zIndex : 1;
1801
- var shadow = stickyProps.sticky &&
1802
- stickyProps.type === "last-group" &&
1803
- stickyProps.isFirstColumnInLastGroup
1804
- ? "var(--swui-sticky-column-shadow-left)"
1805
- : stickyProps.sticky && stickyProps.type === "column" && stickyProps.right
1806
- ? "var(--swui-sticky-column-shadow-left)"
1807
- : stickyProps.sticky
1808
- ? "var(--swui-sticky-column-shadow-right)"
1809
- : undefined;
1810
- var text = React.useMemo(function () { return summaryText === null || summaryText === void 0 ? void 0 : summaryText({ items: items }); }, [items, summaryText]);
1811
- var renderResult = React.useMemo(function () { return renderSummaryCell === null || renderSummaryCell === void 0 ? void 0 : renderSummaryCell({ items: items, text: text }); }, [items, renderSummaryCell, text]);
1812
- return (React__namespace.createElement("td", { colSpan: colSpan, style: {
1813
- borderLeft: activeBorderLeft,
1814
- position: stickyProps.sticky ? "sticky" : undefined,
1815
- left: stickyProps.sticky ? stickyProps.left : undefined,
1816
- right: stickyProps.sticky ? stickyProps.right : undefined,
1817
- boxShadow: shadow,
1818
- zIndex: currentZIndex,
1819
- height: "var(--current-row-height)",
1820
- } },
1821
- React__namespace.createElement(core.Row, { width: width, minWidth: minWidth, height: "inherit", overflow: "hidden", justifyContent: justifyContentCell, alignItems: "center" }, renderSummaryCell ? (renderResult) : (React__namespace.createElement(core.Indent, null,
1822
- React__namespace.createElement(core.Text, { variant: "bold" }, text))))));
1823
- });
1824
-
1825
- var getColumnsLimitedWithColSpan = function (columnOrder, columns) {
1826
- var list = [];
1827
- for (var i = 0; i < columnOrder.length; i++) {
1828
- var summaryCellColSpan = columns[columnOrder[i]].summaryCellColSpan;
1829
- var realColSpan = Math.min(summaryCellColSpan !== null && summaryCellColSpan !== void 0 ? summaryCellColSpan : 1, columnOrder.length - i);
1830
- list.push({ columnId: columnOrder[i], colSpan: realColSpan });
1831
- var colSpan = summaryCellColSpan !== null && summaryCellColSpan !== void 0 ? summaryCellColSpan : 1;
1832
- if (colSpan > 1) {
1833
- i += colSpan - 1;
1834
- }
1835
- }
1836
- return list;
1837
- };
1838
-
1839
- var StandardTableSummaryRow = React__namespace.memo(function StandardTableSummaryRow(_a) {
1840
- var items = _a.items;
1841
- var groupConfigsAndIds = useGroupConfigsAndIdsForRows();
1842
- var _b = useStandardTableConfig(), showRowCheckbox = _b.showRowCheckbox, enableExpandCollapse = _b.enableExpandCollapse, columns = _b.columns, rowIndent = _b.rowIndent;
1843
- return (React__namespace.createElement("tr", { className: styles.summaryRow },
1844
- rowIndent && (React__namespace.createElement("td", null,
1845
- React__namespace.createElement(core.Indent, { num: rowIndent }))),
1846
- enableExpandCollapse && React__namespace.createElement("td", null),
1847
- showRowCheckbox && React__namespace.createElement("td", null),
1848
- groupConfigsAndIds.map(function (_a, groupIndex) {
1849
- var groupConfig = _a.groupConfig, groupId = _a.groupId;
1850
- return (React__namespace.createElement(React__namespace.Fragment, { key: groupId }, getColumnsLimitedWithColSpan(groupConfig.columnOrder, columns).map(function (_a, index) {
1851
- var columnId = _a.columnId, colSpan = _a.colSpan;
1852
- return (React__namespace.createElement(SummaryCell, { key: columnId, colSpan: colSpan, columnId: columnId, items: items, borderFromGroup: getCellBorderFromGroup(groupIndex, index, groupConfig.borderLeft), disableBorderLeft: groupIndex === 0 && index === 0 }));
1853
- })));
1854
- }),
1855
- rowIndent && (React__namespace.createElement("td", null,
1856
- React__namespace.createElement(core.Indent, { num: rowIndent }))),
1857
- React__namespace.createElement("td", null)));
1858
- });
1859
-
1860
- var SummaryRowSwitcher = function SummaryRowSwitcher(_a) {
1861
- var items = _a.items;
1862
- var columns = useStandardTableConfig().columns;
1863
- var visible = React.useMemo(function () { return isSummaryRowVisible(columns); }, [columns]);
1864
- if (!visible) {
1865
- return null;
1866
- }
1867
- return React__namespace.createElement(StandardTableSummaryRow, { items: items });
1868
- };
1869
-
1870
- var filterItemsOnEnabledCheckboxes = function (checkboxDisabledResolver) {
1871
- return function (item) {
1872
- return (checkboxDisabledResolver === null || checkboxDisabledResolver === void 0 ? void 0 : checkboxDisabledResolver(item)) ? false : true ;
1873
- };
1874
- };
1875
-
1876
- var StandardTableRowList = React__namespace.memo(function StandardTableRowList(_a) {
1877
- var items = _a.items, _b = _a.colIndexOffset, colIndexOffset = _b === void 0 ? 0 : _b, _c = _a.rowIndexOffset, rowIndexOffset = _c === void 0 ? 0 : _c;
1878
- /**
1879
- * This ref is used to force rerender of rows.
1880
- * This is needed because intersection observer API doesn't correctly trigger for all
1881
- * rows after sorting.
1882
- */
1883
- var sortCounterRef = React.useRef(0);
1884
- var shiftPressedRef = React.useRef(false);
1885
- var _d = useStandardTableConfig(), keyResolver = _d.keyResolver, disableInfiniteList = _d.disableInfiniteList, checkboxDisabledResolver = _d.checkboxDisabledResolver;
1886
- var _e = useStandardTableState().sortOrder, sortBy = _e.sortBy, desc = _e.desc;
1887
- var valueResolver = useColumnValueResolver(sortBy);
1888
- var sortedItems = React.useMemo(function () {
1889
- if (!items || !items.length) {
1890
- return [];
1891
- }
1892
- if (!valueResolver) {
1893
- return items;
1894
- }
1895
- var sortedList = __spreadArray([], items, true);
1896
- sortedList.sort(function (a, b) {
1897
- return multitypeComparator(valueResolver(a), valueResolver(b));
1898
- });
1899
- if (desc) {
1900
- sortedList.reverse();
1901
- }
1902
- if (!disableInfiniteList) {
1903
- sortCounterRef.current++;
1904
- }
1905
- return sortedList;
1906
- }, [items, valueResolver, desc, disableInfiniteList]);
1907
- var idListForEnabledItems = React.useMemo(function () {
1908
- return sortedItems
1909
- .filter(filterItemsOnEnabledCheckboxes(checkboxDisabledResolver))
1910
- .map(function (l) { return keyResolver(l); });
1911
- }, [sortedItems, checkboxDisabledResolver, keyResolver]);
1912
- React.useEffect(function () {
1913
- var keyUp = function (ev) {
1914
- if (ev.key === "Shift") {
1915
- shiftPressedRef.current = false;
1916
- }
1917
- };
1918
- var keyDown = function (ev) {
1919
- if (ev.key === "Shift") {
1920
- shiftPressedRef.current = true;
1921
- }
1922
- };
1923
- document.addEventListener("keyup", keyUp);
1924
- document.addEventListener("keydown", keyDown);
1925
- return function () {
1926
- document.removeEventListener("keyup", keyUp);
1927
- document.removeEventListener("keydown", keyDown);
1928
- };
1929
- }, []);
1930
- return (React__namespace.createElement(React__namespace.Fragment, { key: sortCounterRef.current },
1931
- sortedItems.map(function (item, index) { return (React__namespace.createElement(StandardTableRow, { alwaysVisible: disableInfiniteList || sortedItems.length < 30, item: item, idListForEnabledItems: idListForEnabledItems, key: keyResolver(item), colIndexOffset: colIndexOffset, rowIndex: index + rowIndexOffset, numRows: sortedItems.length, shiftPressedRef: shiftPressedRef })); }),
1932
- React__namespace.createElement(SummaryRowSwitcher, { items: sortedItems })));
1933
- });
1934
-
1935
- var StandardTableContent = React__namespace.memo(function StandardTableContent(_a) {
1936
- var _b;
1937
- var error = _a.error, bannerError = _a.bannerError, loading = _a.loading, items = _a.items, _c = _a.noItemsLabel, noItemsLabel = _c === void 0 ? "There is no data available." : _c, noItemsContentRight = _a.noItemsContentRight, noItemsContentBottom = _a.noItemsContentBottom, noItemsHeader = _a.noItemsHeader, colIndexOffset = _a.colIndexOffset, rowIndexOffset = _a.rowIndexOffset, variant = _a.variant, errorLabel = _a.errorLabel;
1938
- var totalNumColumns = useTotalNumColumns();
1939
- if (bannerError) {
1940
- return (React__namespace.createElement("tbody", null,
1941
- React__namespace.createElement("tr", null,
1942
- React__namespace.createElement("td", { colSpan: totalNumColumns },
1943
- React__namespace.createElement(core.Spacing, { num: 4, justifyContent: "center" },
1944
- React__namespace.createElement(core.Box, { alignItems: "center" },
1945
- React__namespace.createElement(elements.ResultListBanner, { bannerState: bannerError, variant: "error" })))))));
1946
- }
1947
- if (error || errorLabel) {
1948
- return (React__namespace.createElement("tbody", null,
1949
- React__namespace.createElement("tr", null,
1950
- React__namespace.createElement("td", { colSpan: totalNumColumns },
1951
- React__namespace.createElement(core.Spacing, { num: 4, justifyContent: "center" },
1952
- React__namespace.createElement(core.Box, { alignItems: "center" },
1953
- React__namespace.createElement(elements.Banner, { headerText: (_b = (error ? error.message : errorLabel)) !== null && _b !== void 0 ? _b : "Unknown error", variant: "error" })))))));
1954
- }
1955
- if (loading) {
1956
- return (React__namespace.createElement("tbody", null,
1957
- React__namespace.createElement("tr", null,
1958
- React__namespace.createElement("td", { colSpan: totalNumColumns },
1959
- React__namespace.createElement(core.Spacing, { num: 4 },
1960
- React__namespace.createElement(panels.LoadingScreen, null))))));
1961
- }
1962
- if (!items || !items.length) {
1963
- return (React__namespace.createElement("tbody", null,
1964
- React__namespace.createElement("tr", null,
1965
- React__namespace.createElement("td", { colSpan: totalNumColumns },
1966
- React__namespace.createElement(core.Row, { spacing: 4, justifyContent: "center" },
1967
- React__namespace.createElement(elements.Banner, { text: noItemsLabel, headerText: noItemsHeader, contentRight: noItemsContentRight, variant: "info" }, noItemsContentBottom))))));
1968
- }
1969
- return (React__namespace.createElement("tbody", null,
1970
- React__namespace.createElement(StandardTableRowList, { variant: variant, items: items, colIndexOffset: colIndexOffset, rowIndexOffset: rowIndexOffset })));
1971
- });
1972
-
1973
- var useTableHeadCheckbox = function (items) {
1974
- var _a = useStandardTableConfig(), keyResolver = _a.keyResolver, checkboxDisabledResolver = _a.checkboxDisabledResolver;
1975
- var selectedIds = useStandardTableState().selectedIds.selectedIds;
1976
- var _b = useStandardTableActions(), _c = _b.actions, setSelectedIds = _c.setSelectedIds, clearSelection = _c.clearSelection, dispatch = _b.dispatch;
1977
- var selectionIsEmpty = selectedIds.length === 0;
1978
- var allItemsAreSelected = !items
1979
- ? false
1980
- : items.length > 0 && selectedIds.length === items.length;
1981
- var onClickCheckbox = React.useCallback(function () {
1982
- if (items) {
1983
- if (selectionIsEmpty) {
1984
- dispatch(setSelectedIds(items
1985
- .filter(filterItemsOnEnabledCheckboxes(checkboxDisabledResolver))
1986
- .map(function (item) { return keyResolver(item); })));
1987
- }
1988
- else {
1989
- dispatch(clearSelection());
1990
- }
1991
- }
1992
- }, [
1993
- items,
1994
- selectionIsEmpty,
1995
- dispatch,
1996
- setSelectedIds,
1997
- checkboxDisabledResolver,
1998
- keyResolver,
1999
- clearSelection,
2000
- ]);
2001
- return {
2002
- selectionIsEmpty: selectionIsEmpty,
2003
- allItemsAreSelected: allItemsAreSelected,
2004
- onClickCheckbox: onClickCheckbox,
2005
- };
2006
- };
2007
-
2008
- var useTableHeadExpandCollapse = function (items) {
2009
- var keyResolver = useStandardTableConfig().keyResolver;
2010
- var selectedIds = useStandardTableState().expandedRows.selectedIds;
2011
- var _a = useStandardTableActions(), _b = _a.actions, collapseAll = _b.collapseAll, expandByIds = _b.expandByIds, dispatch = _a.dispatch;
2012
- var allItemsAreExpanded = !items
2013
- ? false
2014
- : items.length > 0 && selectedIds.length === items.length;
2015
- var toggleExpanded = React.useCallback(function () {
2016
- if (items) {
2017
- if (allItemsAreExpanded) {
2018
- dispatch(collapseAll());
2019
- }
2020
- else {
2021
- dispatch(expandByIds(items.map(function (item) { return keyResolver(item); })));
2022
- }
2023
- }
2024
- }, [
2025
- allItemsAreExpanded,
2026
- collapseAll,
2027
- dispatch,
2028
- items,
2029
- keyResolver,
2030
- expandByIds,
2031
- ]);
2032
- return {
2033
- allItemsAreExpanded: allItemsAreExpanded,
2034
- toggleExpanded: toggleExpanded,
2035
- };
2036
- };
2037
-
2038
- var useTableSortHeader = function (columnId) {
2039
- var _a = useStandardTableActions(), dispatch = _a.dispatch, actions = _a.actions;
2040
- var _b = useStandardTableState().sortOrder, desc = _b.desc, sortBy = _b.sortBy;
2041
- return React.useMemo(function () {
2042
- var selected = columnId === sortBy;
2043
- return {
2044
- arrow: selected ? (desc ? "up" : "down") : undefined,
2045
- selected: selected,
2046
- desc: desc,
2047
- onClickColumnHead: function () {
2048
- dispatch(actions.sortBy(columnId, selected ? !desc : false));
2049
- },
2050
- };
2051
- }, [sortBy, desc, actions, columnId, dispatch]);
2052
- };
2053
-
2054
- var StandardTableHeadItem = React__namespace.memo(function StandardTableHeaderItem(_a) {
2055
- var columnId = _a.columnId, borderFromGroup = _a.borderFromGroup, disableBorderLeft = _a.disableBorderLeft, stickyHeader = _a.stickyHeader, top = _a.top;
2056
- var _b = useColumnConfigById(columnId), justifyContentHeader = _b.justifyContentHeader, columnLabel = _b.columnLabel, borderLeft = _b.borderLeft, infoIconTooltipText = _b.infoIconTooltipText, background = _b.background, zIndex = _b.zIndex, sortOrderIconVariant = _b.sortOrderIconVariant, width = _b.width, minWidth = _b.minWidth;
2057
- var _c = useStandardTableConfig(), disableSorting = _c.disableSorting, defaultSortOrderIconVariant = _c.sortOrderIconVariant;
2058
- var stickyPropsPerColumnContext = useStickyPropsPerColumnContext();
2059
- var _d = useTableSortHeader(columnId), arrow = _d.arrow, onClickColumnHead = _d.onClickColumnHead;
2060
- var label = typeof columnLabel === "string"
2061
- ? columnLabel
2062
- : formatColumnIdToHeaderCellLabel(columnId);
2063
- var activeBorderLeft = getCellBorder(borderFromGroup, disableBorderLeft, borderLeft);
2064
- var stickyProps = stickyPropsPerColumnContext[columnId];
2065
- return (React__namespace.createElement("th", { style: {
2066
- background: background !== null && background !== void 0 ? background : "white",
2067
- borderLeft: activeBorderLeft,
2068
- position: stickyHeader || stickyProps.sticky ? "sticky" : undefined,
2069
- left: stickyProps.left,
2070
- right: stickyProps.right,
2071
- top: top,
2072
- boxShadow: stickyProps.sticky &&
2073
- stickyProps.isFirstColumnInLastGroup &&
2074
- stickyHeader
2075
- ? "var(--swui-sticky-header-shadow-and-left)"
2076
- : stickyProps.sticky && stickyProps.isFirstColumnInLastGroup
2077
- ? "var(--swui-sticky-column-shadow-left)"
2078
- : stickyHeader && stickyProps.sticky
2079
- ? "var(--swui-sticky-header-shadow-and-right)"
2080
- : stickyHeader
2081
- ? "var(--swui-sticky-header-shadow)"
2082
- : stickyProps.sticky
2083
- ? "var(--swui-sticky-column-shadow-right)"
2084
- : undefined,
2085
- zIndex: (stickyHeader && stickyProps.sticky
2086
- ? "var(--swui-sticky-header-in-sticky-column-z-index)"
2087
- : stickyHeader
2088
- ? "var(--swui-sticky-header-z-index)"
2089
- : stickyProps.sticky
2090
- ? "var(--swui-sticky-group-header-z-index)"
2091
- : zIndex),
2092
- width: width,
2093
- minWidth: minWidth,
2094
- } },
2095
- React__namespace.createElement(TableHeadItem, { width: "inherit", minWidth: "inherit", arrow: !disableSorting && label ? arrow : undefined, onClick: !disableSorting ? onClickColumnHead : undefined, label: label, infoIconTooltipText: infoIconTooltipText, alignRight: justifyContentHeader === "flex-end", sortOrderIconVariant: sortOrderIconVariant !== null && sortOrderIconVariant !== void 0 ? sortOrderIconVariant : defaultSortOrderIconVariant })));
2096
- });
2097
-
2098
- var getTopPosition = function (headerRowOffsetTop, columnGroupOrder, height, stickyHeader) {
2099
- if (headerRowOffsetTop && columnGroupOrder !== undefined) {
2100
- return "calc(".concat(headerRowOffsetTop, " + ").concat(height, ")");
2101
- }
2102
- else if (stickyHeader && columnGroupOrder) {
2103
- return "calc(0px + ".concat(height, ")");
2104
- }
2105
- else if (headerRowOffsetTop) {
2106
- return headerRowOffsetTop;
2107
- }
2108
- else if (stickyHeader) {
2109
- return 0;
2110
- }
2111
- return undefined;
2112
- };
2113
- var StandardTableHeadRow = React__namespace.memo(function StandardTableHeadRow(_a) {
2114
- var items = _a.items, _b = _a.height, height = _b === void 0 ? defaultTableRowHeight : _b;
2115
- var groupConfigsAndIds = useGroupConfigsAndIdsForRows();
2116
- var _c = useStandardTableConfig(), showHeaderCheckbox = _c.showHeaderCheckbox, showHeaderExpandCollapse = _c.showHeaderExpandCollapse, enableExpandCollapse = _c.enableExpandCollapse, rowIndent = _c.rowIndent, headerRowOffsetTop = _c.headerRowOffsetTop, zIndex = _c.zIndex, stickyHeader = _c.stickyHeader, stickyCheckboxColumn = _c.stickyCheckboxColumn, showRowCheckbox = _c.showRowCheckbox;
2117
- var columnGroupOrder = useColumnGroupOrderContext();
2118
- var _d = useTableHeadExpandCollapse(items), allItemsAreExpanded = _d.allItemsAreExpanded, toggleExpanded = _d.toggleExpanded;
2119
- var _e = useTableHeadCheckbox(items), allItemsAreSelected = _e.allItemsAreSelected, onClickCheckbox = _e.onClickCheckbox, selectionIsEmpty = _e.selectionIsEmpty;
2120
- var checkboxDisabled = !items || items.length === 0;
2121
- var stickyHeaderStyle = {
2122
- zIndex: (stickyHeader && stickyCheckboxColumn
2123
- ? "var(--swui-sticky-header-in-sticky-column-z-index)"
2124
- : stickyCheckboxColumn
2125
- ? "var(--swui-sticky-group-header-z-index)"
2126
- : stickyHeader
2127
- ? "var(--swui-sticky-header-z-index)"
2128
- : zIndex),
2129
- top: getTopPosition(headerRowOffsetTop, columnGroupOrder, height, stickyHeader),
2130
- background: stickyHeader || stickyCheckboxColumn ? "white" : undefined,
2131
- position: stickyHeader || stickyCheckboxColumn ? "sticky" : undefined,
2132
- boxShadow: stickyHeader && stickyCheckboxColumn
2133
- ? "var(--swui-sticky-header-shadow-and-right)"
2134
- : stickyCheckboxColumn
2135
- ? "var(--swui-sticky-column-shadow-right)"
2136
- : stickyHeader
2137
- ? "var(--swui-sticky-header-shadow)"
2138
- : undefined,
2139
- };
2140
- return (React__namespace.createElement(TrWithHoverBackground, { height: height, borderLeft: tableBorderLeft },
2141
- rowIndent && (React__namespace.createElement("th", { style: stickyHeaderStyle },
2142
- React__namespace.createElement(core.Row, { indent: rowIndent }))),
2143
- enableExpandCollapse && (React__namespace.createElement("th", { style: __assign(__assign({}, stickyHeaderStyle), { left: "0px", textAlign: "left" }) },
2144
- React__namespace.createElement(core.Row, { width: "var(--swui-expand-cell-width)", minWidth: "var(--swui-expand-cell-width)", alignItems: "center", justifyContent: "center" }, showHeaderExpandCollapse && (React__namespace.createElement(elements.FlatButton, { size: "small", leftIcon: allItemsAreExpanded ? faChevronDown.faChevronDown : faChevronRight.faChevronRight, onClick: toggleExpanded }))))),
2145
- (showRowCheckbox || showHeaderCheckbox) && (React__namespace.createElement("th", { style: __assign(__assign({}, stickyHeaderStyle), { overflow: "hidden", left: stickyCheckboxColumn && enableExpandCollapse
2146
- ? "var(--swui-expand-cell-width)"
2147
- : stickyCheckboxColumn
2148
- ? "0px"
2149
- : undefined }) },
2150
- React__namespace.createElement(core.Row, { width: "var(--swui-checkbox-cell-width)", minWidth: "var(--swui-checkbox-cell-width)", alignItems: "center", justifyContent: "center" }, showHeaderCheckbox && (React__namespace.createElement(forms.Checkbox, { size: "small", disabled: checkboxDisabled, value: allItemsAreSelected, indeterminate: !selectionIsEmpty && !allItemsAreSelected, onValueChange: onClickCheckbox }))))),
2151
- groupConfigsAndIds.map(function (_a, groupIndex) {
2152
- var groupConfig = _a.groupConfig, groupId = _a.groupId;
2153
- return (React__namespace.createElement(React__namespace.Fragment, { key: groupId }, groupConfig.columnOrder.map(function (columnId, index) {
2154
- return (React__namespace.createElement(StandardTableHeadItem, { columnId: columnId, key: columnId, borderFromGroup: getCellBorderFromGroup(groupIndex, index, groupConfig.borderLeft), disableBorderLeft: groupIndex === 0 && index === 0, stickyHeader: stickyHeader, top: stickyHeaderStyle.top }));
2155
- })));
2156
- }),
2157
- rowIndent && (React__namespace.createElement("th", { style: stickyHeaderStyle },
2158
- React__namespace.createElement(core.Row, { indent: rowIndent }))),
2159
- React__namespace.createElement("th", { style: stickyHeaderStyle })));
2160
- });
2161
-
2162
- var ColGroups = function () {
2163
- var config = useStandardTableConfig();
2164
- var groupConfigsAndIds = useGroupConfigsAndIdsForRows();
2165
- var hasExtraColGroup = config.enableExpandCollapse || config.showRowCheckbox;
2166
- var rowIndent = core.booleanOrNumberToNumber(config.rowIndent);
2167
- return (React__namespace.createElement(React__namespace.Fragment, null,
2168
- rowIndent ? (React__namespace.createElement("colgroup", null,
2169
- React__namespace.createElement("col", { style: { width: "calc(var(--swui-metrics-indent) * ".concat(rowIndent, ")") } }))) : null,
2170
- hasExtraColGroup && (React__namespace.createElement("colgroup", null,
2171
- config.enableExpandCollapse && (React__namespace.createElement("col", { style: { width: "var(--swui-expand-cell-width)" } })),
2172
- config.showRowCheckbox && (React__namespace.createElement("col", { style: { width: "var(--swui-checkbox-cell-width)" } })))),
2173
- groupConfigsAndIds.map(function (_a) {
2174
- var groupConfig = _a.groupConfig, groupId = _a.groupId;
2175
- return (React__namespace.createElement("colgroup", { key: groupId }, groupConfig.columnOrder.map(function (columnId) { return (React__namespace.createElement("col", { key: columnId, style: {
2176
- width: config.columns[columnId].width,
2177
- minWidth: config.columns[columnId].minWidth,
2178
- } })); })));
2179
- }),
2180
- rowIndent ? (React__namespace.createElement("colgroup", null,
2181
- React__namespace.createElement("col", { style: { width: "calc(var(--swui-metrics-indent) * ".concat(rowIndent, ")") } }))) : null));
2182
- };
2183
-
2184
- var StandardTable = function StandardTable(_a) {
2185
- var tableContext = _a.tableContext, config = _a.config; _a.columnOrder; var columnGroupOrder = _a.columnGroupOrder, tableId = _a.tableId, _b = _a.variant, variant = _b === void 0 ? "standard" : _b, onKeyDown = _a.onKeyDown, props = __rest(_a, ["tableContext", "config", "columnOrder", "columnGroupOrder", "tableId", "variant", "onKeyDown"]);
2186
- var generatedTableId = core.useDomId();
2187
- var initialSortOrderDesc = config.initialSortOrderDesc, initialSortOrder = config.initialSortOrder, enableExpandCollapse = config.enableExpandCollapse, stickyCheckboxColumn = config.stickyCheckboxColumn;
2188
- var localTableContext = useLocalStateTableContext(tableId !== null && tableId !== void 0 ? tableId : generatedTableId, createStandardTableInitialState(initialSortOrder, initialSortOrderDesc)).tableContext;
2189
- var currentTableContext = tableContext || localTableContext;
2190
- var state = currentTableContext.state, actions = currentTableContext.actions, dispatch = currentTableContext.dispatch;
2191
- var actionsContext = React.useMemo(function () { return ({
2192
- actions: actions,
2193
- dispatch: dispatch,
2194
- }); }, [actions, dispatch]);
2195
- var usingColumnGroups = Boolean(columnGroupOrder !== null && columnGroupOrder !== void 0 ? columnGroupOrder : "columnGroupOrder" in config);
2196
- var columnGroupsFromConfig = "columnGroups" in config ? config.columnGroups : undefined;
2197
- var columnGroupOrderFromConfig = "columnGroupOrder" in config ? config.columnGroupOrder : undefined;
2198
- var columnOrderFromConfig = "columnOrder" in config ? config.columnOrder : undefined;
2199
- var groupConfigsForRows = React.useMemo(function () {
2200
- return createGroupConfigAndIdsForRows(columnGroupsFromConfig, columnGroupOrderFromConfig, columnOrderFromConfig);
2201
- }, [columnGroupsFromConfig, columnGroupOrderFromConfig, columnOrderFromConfig]);
2202
- var columnIndexPerColumnId = React.useMemo(function () { return calculateColumnIndexPerColumnId(config); }, [config]);
2203
- var totalNumColumns = React.useMemo(function () { return getTotalNumColumns(config); }, [config]);
2204
- var stickyPropsPerColumnContext = React.useMemo(function () { return getStickyPropsPerColumn(config); }, [config]);
2205
- var validationError = React.useMemo(function () {
2206
- try {
2207
- ensureConfigHasValidSticky(config);
2208
- return undefined;
2209
- }
2210
- catch (e) {
2211
- if (e instanceof Error) {
2212
- return e;
2213
- }
2214
- return new Error("Unknown error");
2215
- }
2216
- }, [config]);
2217
- if (validationError) {
2218
- return React__namespace.createElement(panels.ErrorScreen, { text: validationError.message });
2219
- }
2220
- return (React__namespace.createElement("table", { className: cx__default["default"](styles$3.standardTable, styles$3[variant]), style: {
2221
- width: "100%",
2222
- isolation: "isolate",
2223
- "--current-left-offset": enableExpandCollapse && stickyCheckboxColumn
2224
- ? "calc(var(--swui-expand-cell-width) + var(--swui-checkbox-cell-width))"
2225
- : stickyCheckboxColumn
2226
- ? "var(--swui-checkbox-cell-width)"
2227
- : enableExpandCollapse
2228
- ? "var(--swui-expand-cell-width)"
2229
- : "0px",
2230
- } },
2231
- React__namespace.createElement(StickyPropsPerColumnContext.Provider, { value: stickyPropsPerColumnContext },
2232
- React__namespace.createElement(TotalNumColumnsContext.Provider, { value: totalNumColumns },
2233
- React__namespace.createElement(StandardTableVariantContext.Provider, { value: variant },
2234
- React__namespace.createElement(StandardTableTableIdContext.Provider, { value: tableId !== null && tableId !== void 0 ? tableId : generatedTableId },
2235
- React__namespace.createElement(StandardTableStateContext.Provider, { value: state },
2236
- React__namespace.createElement(StandardTableActionsContext.Provider, { value: actionsContext },
2237
- React__namespace.createElement(StandardTableConfigContext.Provider, { value: config },
2238
- React__namespace.createElement(GroupConfigsAndIdsForRowsContext.Provider, { value: groupConfigsForRows },
2239
- React__namespace.createElement(ColumnIndexPerColumnIdContext.Provider, { value: columnIndexPerColumnId },
2240
- React__namespace.createElement(StandardTableUsingColumnGroupsContext.Provider, { value: usingColumnGroups },
2241
- React__namespace.createElement(StandardTableColumnGroupOrderContext.Provider, { value: "columnGroupOrder" in config
2242
- ? columnGroupOrder !== null && columnGroupOrder !== void 0 ? columnGroupOrder : config.columnGroupOrder
2243
- : columnGroupOrder },
2244
- React__namespace.createElement(ColGroups, null),
2245
- React__namespace.createElement(OnKeyDownContext.Provider, { value: onKeyDown },
2246
- React__namespace.createElement("thead", null,
2247
- (columnGroupOrder ||
2248
- "columnGroupOrder" in config) && (React__namespace.createElement(ColumnGroupRow, { height: "var(--current-row-height)" })),
2249
- React__namespace.createElement(StandardTableHeadRow, { items: props.items, height: "var(--current-row-height)" })),
2250
- React__namespace.createElement(StandardTableContent, __assign({ variant: variant }, props))))))))))))))));
2251
- };
2252
-
2253
- var createColumnConfig = function (itemValueResolver, options) {
2254
- return __assign(__assign({}, options), { itemValueResolver: itemValueResolver });
2255
- };
2256
-
2257
- var createStandardEditableTextCell = function () {
2258
- return function (_a) {
2259
- var label = _a.label, _b = _a.gridCell, editorValue = _b.editorValue, isEditing = _b.isEditing, setEditorValue = _b.setEditorValue, stopEditingAndRevert = _b.stopEditingAndRevert, lastKeyEvent = _b.lastKeyEvent, stopEditing = _b.stopEditing, stopEditingAndMove = _b.stopEditingAndMove;
2260
- return isEditing ? (React__namespace.createElement(forms.TextInput, { onValueChange: setEditorValue, value: editorValue, onDone: stopEditing, onEsc: stopEditingAndRevert, autoFocus: true, selectAllOnMount: !lastKeyEvent, onMove: stopEditingAndMove })) : (React__namespace.createElement(core.Indent, null,
2261
- React__namespace.createElement(core.Text, { color: "var(--swui-primary-action-color)" }, label)));
2262
- };
2263
- };
2264
-
2265
- var createEditableTextCellWithStatus = function (warningOnEmpty, crudStatusProvider, modifiedFieldProvider) {
2266
- return function (_a) {
2267
- var label = _a.label, item = _a.item, _b = _a.gridCell, editorValue = _b.editorValue, isEditing = _b.isEditing, setEditorValue = _b.setEditorValue, stopEditingAndRevert = _b.stopEditingAndRevert, lastKeyEvent = _b.lastKeyEvent, stopEditing = _b.stopEditing, stopEditingAndMove = _b.stopEditingAndMove, isEditable = _a.isEditable;
2268
- var warnOnEmpty = typeof warningOnEmpty === "function"
2269
- ? warningOnEmpty(item)
2270
- : warningOnEmpty;
2271
- var crudStatus = crudStatusProvider
2272
- ? crudStatusProvider(item)
2273
- : undefined;
2274
- var modifiedField = modifiedFieldProvider
2275
- ? modifiedFieldProvider(item)
2276
- : undefined;
2277
- return isEditable && isEditing ? (React__namespace.createElement(forms.TextInput, { onValueChange: setEditorValue, value: editorValue, onDone: stopEditing, onEsc: stopEditingAndRevert, autoFocus: true, selectAllOnMount: !lastKeyEvent, onMove: stopEditingAndMove })) : (React__namespace.createElement(core.Indent, { row: true, alignItems: "center" },
2278
- React__namespace.createElement(ModifiedField, { value: label, modifiedField: modifiedField, crudStatus: crudStatus, isEditable: isEditable, warningOnEmpty: warnOnEmpty })));
2279
- };
2280
- };
2281
-
2282
- exports.CrudStatusIndicator = CrudStatusIndicator;
2283
- exports.EditableTextCellWithCrudAndModified = EditableTextCellWithCrudAndModified;
2284
- exports.GridHooksContext = GridHooksContext;
2285
- exports.GridHooksTable = GridHooksTable;
2286
- exports.ModifiedField = ModifiedField;
2287
- exports.SmallTableCell = SmallTableCell;
2288
- exports.SmallTableHead = SmallTableHead;
2289
- exports.StandardTable = StandardTable;
2290
- exports.StandardTableActionsContext = StandardTableActionsContext;
2291
- exports.StandardTableCell = StandardTableCell;
2292
- exports.StandardTableCellUi = StandardTableCellUi;
2293
- exports.StandardTableConfigContext = StandardTableConfigContext;
2294
- exports.StandardTableContent = StandardTableContent;
2295
- exports.StandardTableHeadRow = StandardTableHeadRow;
2296
- exports.StandardTableRow = StandardTableRow;
2297
- exports.StandardTableRowCheckbox = StandardTableRowCheckbox;
2298
- exports.StandardTableRowList = StandardTableRowList;
2299
- exports.StandardTableStateContext = StandardTableStateContext;
2300
- exports.StandardTableTableIdContext = StandardTableTableIdContext;
2301
- exports.TableCell = TableCell;
2302
- exports.TableColumnGroupHead = TableColumnGroupHead;
2303
- exports.TableHeadItem = TableHeadItem;
2304
- exports.TableHeadRow = TableHeadRow;
2305
- exports.TableRow = TableRow;
2306
- exports.TextCell = TextCell;
2307
- exports.createColumnConfig = createColumnConfig;
2308
- exports.createEditableTextCellWithStatus = createEditableTextCellWithStatus;
2309
- exports.createGroupConfigAndIdsForRows = createGroupConfigAndIdsForRows;
2310
- exports.createInternalStandardTableActions = createInternalStandardTableActions;
2311
- exports.createStandardEditableTextCell = createStandardEditableTextCell;
2312
- exports.createStandardTableActions = createStandardTableActions;
2313
- exports.createStandardTableInitialState = createStandardTableInitialState;
2314
- exports.createStandardTableReducer = createStandardTableReducer;
2315
- exports.defaultTableHeadRowHeight = defaultTableHeadRowHeight;
2316
- exports.defaultTableRowHeight = defaultTableRowHeight;
2317
- exports.focusOnCell = focusOnCell;
2318
- exports.formatColumnIdToHeaderCellLabel = formatColumnIdToHeaderCellLabel;
2319
- exports.formatValueLabel = formatValueLabel;
2320
- exports.hasIndicatorContent = hasIndicatorContent;
2321
- exports.multitypeComparator = multitypeComparator;
2322
- exports.smallTableRowWidth = smallTableRowWidth;
2323
- exports.tableBackgroundColorExpanded = tableBackgroundColorExpanded;
2324
- exports.tableBackgroundHoverColorExpanded = tableBackgroundHoverColorExpanded;
2325
- exports.tableBorder = tableBorder;
2326
- exports.tableBorderColor = tableBorderColor;
2327
- exports.tableBorderColorExpanded = tableBorderColorExpanded;
2328
- exports.tableBorderHidden = tableBorderHidden;
2329
- exports.tableBorderLeft = tableBorderLeft;
2330
- exports.tableBorderLeftExpanded = tableBorderLeftExpanded;
2331
- exports.useCellBackgroundByColumnConfig = useCellBackgroundByColumnConfig;
2332
- exports.useCellBackgroundByColumnId = useCellBackgroundByColumnId;
2333
- exports.useColumnConfigById = useColumnConfigById;
2334
- exports.useColumnValueResolver = useColumnValueResolver;
2335
- exports.useEditableCell = useEditableCell;
2336
- exports.useFirstColumnConfig = useFirstColumnConfig;
2337
- exports.useGridCell = useGridCell;
2338
- exports.useGridNavigation = useGridNavigation;
2339
- exports.useGridNavigationOptionsFromContext = useGridNavigationOptionsFromContext;
2340
- exports.useLastColumnConfig = useLastColumnConfig;
2341
- exports.useLocalStateTableContext = useLocalStateTableContext;
2342
- exports.useRevertableValue = useRevertableValue;
2343
- exports.useRowCheckbox = useRowCheckbox;
2344
- exports.useStandardTableActions = useStandardTableActions;
2345
- exports.useStandardTableConfig = useStandardTableConfig;
2346
- exports.useStandardTableId = useStandardTableId;
2347
- exports.useStandardTableState = useStandardTableState;
2348
- exports.useTableHeadCheckbox = useTableHeadCheckbox;
2349
- exports.useTableSortHeader = useTableSortHeader;
9
+ `:""}
10
+ `,It=T.memo(function({item:t,idListForEnabledItems:o,rowIndex:n,numRows:s,colIndexOffset:l,alwaysVisible:c,shiftPressedRef:a}){const u=i.useRef(null),x=Ge(),{stickyCheckboxColumn:d}=S(),p=_(),{columnIndexPerColumnId:f}=ut(),{showRowCheckbox:C,rowBackgroundResolver:w,checkboxDisabledResolver:m,enableGridCell:v,rowIndent:g,enableExpandCollapse:y}=S(),{isExpanded:k}=Pe(t),{isSelected:b,toggleSelected:A,shiftAndToggleSelected:j}=ft(t,o),O=h.useOnScreen(u,{rootMargin:"400px 0px 400px 0px",threshold:0}),E=i.useMemo(()=>w==null?void 0:w(t,b),[b,t,w]),M=rr(E,b,k),P=nr(E,b,k),N=sr(E,b,P),B=i.useMemo(()=>m==null?void 0:m(t),[t,m]),L=at(),Q=Ce(L,t),q=it(),z=Ce(q,t),K=i.useMemo(()=>r.jsx(r.Fragment,{children:r.jsxs(r.Fragment,{children:[g&&r.jsx("td",{style:{background:Q},children:r.jsx(h.Indent,{num:g})}),y&&r.jsx("td",{style:{background:d?"inherit":void 0,position:d?"sticky":void 0,left:d?"0px":void 0,boxShadow:d?"var(--swui-sticky-column-shadow-right)":void 0,zIndex:d?"var(--swui-sticky-column-z-index)":void 0},children:r.jsx(h.Row,{width:"var(--swui-expand-cell-width)",minWidth:"var(--swui-expand-cell-width)",alignItems:"center",justifyContent:"center",children:r.jsx(Jo,{colIndex:l,rowIndex:v?n:0,numRows:v?s:0,item:t})})}),C&&r.jsx("td",{style:{background:d?"inherit":void 0,position:d?"sticky":void 0,left:y&&d?"var(--swui-expand-cell-width)":d?"0px":void 0,textAlign:"center",boxShadow:d?"var(--swui-sticky-column-shadow-right)":void 0,zIndex:d?"var(--swui-sticky-column-z-index)":void 0},children:r.jsx(h.Row,{width:"var(--swui-checkbox-cell-width)",minWidth:"var(--swui-checkbox-cell-width)",alignItems:"center",justifyContent:"center",children:r.jsx(Ct,{disabled:B,value:b,onValueChange:A,onValueChangeAndShift:j,colIndex:l+(y?1:0),rowIndex:n,numRows:s,shiftPressedRef:a})})}),p.map(({groupConfig:V,groupId:de},$)=>r.jsx(T.Fragment,{children:V.columnOrder.map((G,ee)=>r.jsx(kt,{columnId:G,item:t,colIndex:l+f[G],rowIndex:n,numRows:s,borderFromGroup:ie($,ee,V.borderLeft),disableBorderLeft:$===0&&ee===0},G))},de)),g&&r.jsx("td",{style:{background:z},children:r.jsx(h.Indent,{num:g})}),r.jsx("td",{})]})}),[l,f,B,y,v,Q,p,b,t,z,s,g,n,j,a,C,d,A]);return r.jsxs(r.Fragment,{children:[r.jsx(St,{hoverBackground:P,background:M,focusBackground:N,borderLeft:k?be:ne,ref:u,children:O||c||k?K:r.jsx("td",{colSpan:x,style:{height:"var(--current-row-height)"}})}),r.jsx(or,{item:t})]})}),rr=(e,t,o)=>e?typeof e=="string"?e:e==null?void 0:e.background:t?H.cssColor("--lhds-color-blue-100"):o?ve:"white",nr=(e,t,o)=>e?typeof e=="string"?e:e==null?void 0:e.hoverBackground:t?H.cssColor("--lhds-color-blue-100"):o?Ze:H.cssColor("--lhds-color-ui-100"),sr=(e,t,o)=>{if(t)return H.cssColor("--lhds-color-blue-100");if(e)return o},lr=e=>Object.values(e).some(t=>cr(t)),cr=e=>Boolean(e.renderSummaryCell||e.summaryText),ar="_summaryRow_12x8k_1";var ir={summaryRow:ar};const dr=T.memo(function({columnId:t,items:o,disableBorderLeft:n,borderFromGroup:s,colSpan:l}){const c=Ee(),{renderSummaryCell:a,summaryText:u,borderLeft:x,zIndex:d,width:p,minWidth:f,justifyContentCell:C}=J(t),w=Oe(s,n,x),m=c[t],v=m.sticky?d!=null?d:"var(--swui-sticky-column-z-index)":d!=null?d:1,g=m.sticky&&m.type==="last-group"&&m.isFirstColumnInLastGroup||m.sticky&&m.type==="column"&&m.right?"var(--swui-sticky-column-shadow-left)":m.sticky?"var(--swui-sticky-column-shadow-right)":void 0,y=i.useMemo(()=>u==null?void 0:u({items:o}),[o,u]),k=i.useMemo(()=>a==null?void 0:a({items:o,text:y}),[o,a,y]);return r.jsx("td",{colSpan:l,style:{borderLeft:w,position:m.sticky?"sticky":void 0,left:m.sticky?m.left:void 0,right:m.sticky?m.right:void 0,boxShadow:g,zIndex:v,height:"var(--current-row-height)"},children:r.jsx(h.Row,{width:p,minWidth:f,height:"inherit",overflow:"hidden",justifyContent:C,alignItems:"center",children:a?k:r.jsx(h.Indent,{children:r.jsx(h.Text,{variant:"bold",children:y})})})})}),ur=(e,t)=>{const o=[];for(let n=0;n<e.length;n++){const{summaryCellColSpan:s}=t[e[n]],l=Math.min(s!=null?s:1,e.length-n);o.push({columnId:e[n],colSpan:l});const c=s!=null?s:1;c>1&&(n+=c-1)}return o},hr=T.memo(function({items:t}){const o=_(),{showRowCheckbox:n,enableExpandCollapse:s,columns:l,rowIndent:c}=S();return r.jsxs("tr",{className:ir.summaryRow,children:[c&&r.jsx("td",{children:r.jsx(h.Indent,{num:c})}),s&&r.jsx("td",{}),n&&r.jsx("td",{}),o.map(({groupConfig:a,groupId:u},x)=>r.jsx(T.Fragment,{children:ur(a.columnOrder,l).map(({columnId:d,colSpan:p},f)=>r.jsx(dr,{colSpan:p,columnId:d,items:t,borderFromGroup:ie(x,f,a.borderLeft),disableBorderLeft:x===0&&f===0},d))},u)),c&&r.jsx("td",{children:r.jsx(h.Indent,{num:c})}),r.jsx("td",{})]})}),xr=function({items:t}){const{columns:o}=S();return i.useMemo(()=>lr(o),[o])?r.jsx(hr,{items:t}):null},Rt=e=>t=>!(e!=null&&e(t)),Tt=T.memo(function({items:t,colIndexOffset:o=0,rowIndexOffset:n=0}){const s=i.useRef(0),l=i.useRef(!1),{keyResolver:c,disableInfiniteList:a,checkboxDisabledResolver:u}=S(),{sortOrder:{sortBy:x,desc:d}}=F(),p=mt(x),f=i.useMemo(()=>{if(!t||!t.length)return[];if(!p)return t;const w=[...t];return w.sort((m,v)=>pt(p(m),p(v))),d&&w.reverse(),a||s.current++,w},[t,p,d,a]),C=i.useMemo(()=>f.filter(Rt(u)).map(w=>c(w)),[f,u,c]);return i.useEffect(()=>{const w=v=>{v.key==="Shift"&&(l.current=!1)},m=v=>{v.key==="Shift"&&(l.current=!0)};return document.addEventListener("keyup",w),document.addEventListener("keydown",m),()=>{document.removeEventListener("keyup",w),document.removeEventListener("keydown",m)}},[]),r.jsxs(T.Fragment,{children:[f.map((w,m)=>r.jsx(It,{alwaysVisible:a||f.length<30,item:w,idListForEnabledItems:C,colIndexOffset:o,rowIndex:m+n,numRows:f.length,shiftPressedRef:l},c(w))),r.jsx(xr,{items:f})]},s.current)}),Et=T.memo(function({error:t,bannerError:o,loading:n,items:s,noItemsLabel:l="There is no data available.",noItemsContentRight:c,noItemsContentBottom:a,noItemsHeader:u,colIndexOffset:x,rowIndexOffset:d,variant:p,errorLabel:f}){var w;const C=Ge();return o?r.jsx("tbody",{children:r.jsx("tr",{children:r.jsx("td",{colSpan:C,children:r.jsx(h.Spacing,{num:4,justifyContent:"center",children:r.jsx(h.Box,{alignItems:"center",children:r.jsx(R.ResultListBanner,{bannerState:o,variant:"error"})})})})})}):t||f?r.jsx("tbody",{children:r.jsx("tr",{children:r.jsx("td",{colSpan:C,children:r.jsx(h.Spacing,{num:4,justifyContent:"center",children:r.jsx(h.Box,{alignItems:"center",children:r.jsx(R.Banner,{headerText:(w=t?t.message:f)!=null?w:"Unknown error",variant:"error"})})})})})}):n?r.jsx("tbody",{children:r.jsx("tr",{children:r.jsx("td",{colSpan:C,children:r.jsx(h.Spacing,{num:4,children:r.jsx(qe.LoadingScreen,{})})})})}):!s||!s.length?r.jsx("tbody",{children:r.jsx("tr",{children:r.jsx("td",{colSpan:C,children:r.jsx(h.Row,{spacing:4,justifyContent:"center",children:r.jsx(R.Banner,{text:l,headerText:u,contentRight:c,variant:"info",children:a})})})})}):r.jsx("tbody",{children:r.jsx(Tt,{variant:p,items:s,colIndexOffset:x,rowIndexOffset:d})})}),Gt=e=>{const{keyResolver:t,checkboxDisabledResolver:o}=S(),{selectedIds:{selectedIds:n}}=F(),{actions:{setSelectedIds:s,clearSelection:l},dispatch:c}=Z(),a=n.length===0,u=e?e.length>0&&n.length===e.length:!1,x=i.useCallback(()=>{e&&c(a?s(e.filter(Rt(o)).map(d=>t(d))):l())},[e,a,c,s,o,t,l]);return{selectionIsEmpty:a,allItemsAreSelected:u,onClickCheckbox:x}},pr=e=>{const{keyResolver:t}=S(),{expandedRows:{selectedIds:o}}=F(),{actions:{collapseAll:n,expandByIds:s},dispatch:l}=Z(),c=e?e.length>0&&o.length===e.length:!1,a=i.useCallback(()=>{e&&l(c?n():s(e.map(u=>t(u))))},[c,n,l,e,t,s]);return{allItemsAreExpanded:c,toggleExpanded:a}},At=e=>{const{dispatch:t,actions:o}=Z(),{sortOrder:{desc:n,sortBy:s}}=F();return i.useMemo(()=>{const l=e===s;return{arrow:l?n?"up":"down":void 0,selected:l,desc:n,onClickColumnHead:()=>{t(o.sortBy(e,l?!n:!1))}}},[s,n,o,e,t])},mr=T.memo(function({columnId:t,borderFromGroup:o,disableBorderLeft:n,stickyHeader:s,top:l}){const{justifyContentHeader:c,columnLabel:a,borderLeft:u,infoIconTooltipText:x,background:d,zIndex:p,sortOrderIconVariant:f,width:C,minWidth:w}=J(t),{disableSorting:m,sortOrderIconVariant:v}=S(),g=Ee(),{arrow:y,onClickColumnHead:k}=At(t),b=typeof a=="string"?a:gt(t),A=Oe(o,n,u),j=g[t];return r.jsx("th",{style:{background:d!=null?d:"white",borderLeft:A,position:s||j.sticky?"sticky":void 0,left:j.left,right:j.right,top:l,boxShadow:j.sticky&&j.isFirstColumnInLastGroup&&s?"var(--swui-sticky-header-shadow-and-left)":j.sticky&&j.isFirstColumnInLastGroup?"var(--swui-sticky-column-shadow-left)":s&&j.sticky?"var(--swui-sticky-header-shadow-and-right)":s?"var(--swui-sticky-header-shadow)":j.sticky?"var(--swui-sticky-column-shadow-right)":void 0,zIndex:s&&j.sticky?"var(--swui-sticky-header-in-sticky-column-z-index)":s?"var(--swui-sticky-header-z-index)":j.sticky?"var(--swui-sticky-group-header-z-index)":p,width:C,minWidth:w},children:r.jsx(ce,{width:"inherit",minWidth:"inherit",arrow:!m&&b?y:void 0,onClick:m?void 0:k,label:b,infoIconTooltipText:x,alignRight:c==="flex-end",sortOrderIconVariant:f!=null?f:v})})}),Cr=(e,t,o,n)=>{if(e&&t!==void 0)return`calc(${e} + ${o})`;if(n&&t)return`calc(0px + ${o})`;if(e)return e;if(n)return 0},Ot=T.memo(function({items:t,height:o=se}){const n=_(),{showHeaderCheckbox:s,showHeaderExpandCollapse:l,enableExpandCollapse:c,rowIndent:a,headerRowOffsetTop:u,zIndex:x,stickyHeader:d,stickyCheckboxColumn:p,showRowCheckbox:f}=S(),C=So(),{allItemsAreExpanded:w,toggleExpanded:m}=pr(t),{allItemsAreSelected:v,onClickCheckbox:g,selectionIsEmpty:y}=Gt(t),k=!t||t.length===0,b={zIndex:d&&p?"var(--swui-sticky-header-in-sticky-column-z-index)":p?"var(--swui-sticky-group-header-z-index)":d?"var(--swui-sticky-header-z-index)":x,top:Cr(u,C,o,d),background:d||p?"white":void 0,position:d||p?"sticky":void 0,boxShadow:d&&p?"var(--swui-sticky-header-shadow-and-right)":p?"var(--swui-sticky-column-shadow-right)":d?"var(--swui-sticky-header-shadow)":void 0};return r.jsxs(St,{height:o,borderLeft:ne,children:[a&&r.jsx("th",{style:b,children:r.jsx(h.Row,{indent:a})}),c&&r.jsx("th",{style:{...b,left:"0px",textAlign:"left"},children:r.jsx(h.Row,{width:"var(--swui-expand-cell-width)",minWidth:"var(--swui-expand-cell-width)",alignItems:"center",justifyContent:"center",children:l&&r.jsx(R.FlatButton,{size:"small",leftIcon:w?ze.faChevronDown:Fe.faChevronRight,onClick:m})})}),(f||s)&&r.jsx("th",{style:{...b,overflow:"hidden",left:p&&c?"var(--swui-expand-cell-width)":p?"0px":void 0},children:r.jsx(h.Row,{width:"var(--swui-checkbox-cell-width)",minWidth:"var(--swui-checkbox-cell-width)",alignItems:"center",justifyContent:"center",children:s&&r.jsx(X.Checkbox,{size:"small",disabled:k,value:v,indeterminate:!y&&!v,onValueChange:g})})}),n.map(({groupConfig:A,groupId:j},O)=>r.jsx(T.Fragment,{children:A.columnOrder.map((E,M)=>r.jsx(mr,{columnId:E,borderFromGroup:ie(O,M,A.borderLeft),disableBorderLeft:O===0&&M===0,stickyHeader:d,top:b.top},E))},j)),a&&r.jsx("th",{style:b,children:r.jsx(h.Row,{indent:a})}),r.jsx("th",{style:b})]})}),fr=()=>{const e=S(),t=_(),o=e.enableExpandCollapse||e.showRowCheckbox,n=h.booleanOrNumberToNumber(e.rowIndent);return r.jsxs(r.Fragment,{children:[n?r.jsx("colgroup",{children:r.jsx("col",{style:{width:`calc(var(--swui-metrics-indent) * ${n})`}})}):null,o&&r.jsxs("colgroup",{children:[e.enableExpandCollapse&&r.jsx("col",{style:{width:"var(--swui-expand-cell-width)"}}),e.showRowCheckbox&&r.jsx("col",{style:{width:"var(--swui-checkbox-cell-width)"}})]}),t.map(({groupConfig:s,groupId:l})=>r.jsx("colgroup",{children:s.columnOrder.map(c=>r.jsx("col",{style:{width:e.columns[c].width,minWidth:e.columns[c].minWidth}},c))},l)),n?r.jsx("colgroup",{children:r.jsx("col",{style:{width:`calc(var(--swui-metrics-indent) * ${n})`}})}):null]})},wr=function({tableContext:t,config:o,columnOrder:n,columnGroupOrder:s,tableId:l,variant:c="standard",onKeyDown:a,...u}){const x=i.useId(),{initialSortOrderDesc:d,initialSortOrder:p,enableExpandCollapse:f,stickyCheckboxColumn:C}=o,{tableContext:w}=xt(l!=null?l:x,Te(p,d)),m=t||w,{state:v,actions:g,dispatch:y}=m,k=i.useMemo(()=>({actions:g,dispatch:y}),[g,y]),b=Boolean(s!=null?s:"columnGroupOrder"in o),A="columnGroups"in o?o.columnGroups:void 0,j="columnGroupOrder"in o?o.columnGroupOrder:void 0,O="columnOrder"in o?o.columnOrder:void 0,E=i.useMemo(()=>Ae(A,j,O),[A,j,O]),M=i.useMemo(()=>Oo(o),[o]),P=i.useMemo(()=>_o(o),[o]),N=i.useMemo(()=>qo(o),[o]),B=i.useMemo(()=>{try{Mo(o);return}catch(L){return L instanceof Error?L:new Error("Unknown error")}},[o]);return B?r.jsx(qe.ErrorScreen,{text:B.message}):r.jsx("table",{className:$e.default(Ne.standardTable,Ne[c]),style:{width:"100%",isolation:"isolate","--current-left-offset":f&&C?"calc(var(--swui-expand-cell-width) + var(--swui-checkbox-cell-width))":C?"var(--swui-checkbox-cell-width)":f?"var(--swui-expand-cell-width)":"0px"},children:r.jsx(lt.Provider,{value:N,children:r.jsx(ct.Provider,{value:P,children:r.jsx(Io.Provider,{value:c,children:r.jsx(ke.Provider,{value:l!=null?l:x,children:r.jsx(Se.Provider,{value:v,children:r.jsx(Ie.Provider,{value:k,children:r.jsx(Re.Provider,{value:o,children:r.jsx(ot.Provider,{value:E,children:r.jsx(dt.Provider,{value:M,children:r.jsx(ko.Provider,{value:b,children:r.jsxs(st.Provider,{value:"columnGroupOrder"in o?s!=null?s:o.columnGroupOrder:s,children:[r.jsx(fr,{}),r.jsxs(nt.Provider,{value:a,children:[r.jsxs("thead",{children:[(s||"columnGroupOrder"in o)&&r.jsx(Ao,{height:"var(--current-row-height)"}),r.jsx(Ot,{items:u.items,height:"var(--current-row-height)"})]}),r.jsx(Et,{variant:c,...u})]})]})})})})})})})})})})})})},vr=(e,t)=>({...t,itemValueResolver:e}),br=()=>({label:e,gridCell:{editorValue:t,isEditing:o,setEditorValue:n,stopEditingAndRevert:s,lastKeyEvent:l,stopEditing:c,stopEditingAndMove:a}})=>o?r.jsx(X.TextInput,{onValueChange:n,value:t,onDone:c,onEsc:s,autoFocus:!0,selectAllOnMount:!l,onMove:a}):r.jsx(h.Indent,{children:r.jsx(h.Text,{color:"var(--swui-primary-action-color)",children:e})}),gr=(e,t,o)=>({label:n,item:s,gridCell:{editorValue:l,isEditing:c,setEditorValue:a,stopEditingAndRevert:u,lastKeyEvent:x,stopEditing:d,stopEditingAndMove:p},isEditable:f})=>{const C=typeof e=="function"?e(s):e,w=t?t(s):void 0,m=o?o(s):void 0;return f&&c?r.jsx(X.TextInput,{onValueChange:a,value:l,onDone:d,onEsc:u,autoFocus:!0,selectAllOnMount:!x,onMove:p}):r.jsx(h.Indent,{row:!0,alignItems:"center",children:r.jsx(Ke,{value:n,modifiedField:m,crudStatus:w,isEditable:f,warningOnEmpty:C})})};exports.CrudStatusIndicator=we;exports.EditableTextCellWithCrudAndModified=yo;exports.GridHooksContext=fe;exports.GridHooksTable=Zt;exports.ModifiedField=Ke;exports.SmallTableCell=Jt;exports.SmallTableHead=Yt;exports.StandardTable=wr;exports.StandardTableActionsContext=Ie;exports.StandardTableCell=kt;exports.StandardTableCellUi=yt;exports.StandardTableConfigContext=Re;exports.StandardTableContent=Et;exports.StandardTableHeadRow=Ot;exports.StandardTableRow=It;exports.StandardTableRowCheckbox=Ct;exports.StandardTableRowList=Tt;exports.StandardTableStateContext=Se;exports.StandardTableTableIdContext=ke;exports.TableCell=Ve;exports.TableColumnGroupHead=Qt;exports.TableHeadItem=ce;exports.TableHeadRow=eo;exports.TableRow=ro;exports.TextCell=jt;exports.createColumnConfig=vr;exports.createEditableTextCellWithStatus=gr;exports.createGroupConfigAndIdsForRows=Ae;exports.createInternalStandardTableActions=et;exports.createStandardEditableTextCell=br;exports.createStandardTableActions=ht;exports.createStandardTableInitialState=Te;exports.createStandardTableReducer=tt;exports.defaultTableHeadRowHeight=le;exports.defaultTableRowHeight=se;exports.focusOnCell=je;exports.formatColumnIdToHeaderCellLabel=gt;exports.formatValueLabel=bt;exports.hasIndicatorContent=re;exports.multitypeComparator=pt;exports.smallTableRowWidth=ge;exports.tableBackgroundColorExpanded=ve;exports.tableBackgroundHoverColorExpanded=Ze;exports.tableBorder=U;exports.tableBorderColor=We;exports.tableBorderColorExpanded=Ue;exports.tableBorderHidden=Je;exports.tableBorderLeft=ne;exports.tableBorderLeftExpanded=be;exports.useCellBackgroundByColumnConfig=Ce;exports.useCellBackgroundByColumnId=vt;exports.useColumnConfigById=J;exports.useColumnValueResolver=mt;exports.useEditableCell=Ye;exports.useFirstColumnConfig=at;exports.useGridCell=Y;exports.useGridNavigation=Qe;exports.useGridNavigationOptionsFromContext=ye;exports.useLastColumnConfig=it;exports.useLocalStateTableContext=xt;exports.useRevertableValue=Xe;exports.useRowCheckbox=ft;exports.useStandardTableActions=Z;exports.useStandardTableConfig=S;exports.useStandardTableId=ae;exports.useStandardTableState=F;exports.useTableHeadCheckbox=Gt;exports.useTableSortHeader=At;
2350
11
  //# sourceMappingURL=index.js.map