@clickview/lite 0.71.0-rc.1 → 0.71.0-rc.2

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 (19) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/languages/en.json +1 -1
  3. package/dist/scripts/{1667-ff0760e5f7-lite.chunk.js → 1667-127d37ccea-lite.chunk.js} +3 -3
  4. package/dist/scripts/1667-127d37ccea-lite.chunk.js.map +1 -0
  5. package/dist/scripts/{2888-cf6214a94f-lite.chunk.js → 2888-1340a429ad-lite.chunk.js} +2 -2
  6. package/dist/scripts/{2888-cf6214a94f-lite.chunk.js.map → 2888-1340a429ad-lite.chunk.js.map} +1 -1
  7. package/dist/scripts/{3909-99010942d2-lite.chunk.js → 3909-a9c3ad2df0-lite.chunk.js} +2 -2
  8. package/dist/scripts/{3909-99010942d2-lite.chunk.js.map → 3909-a9c3ad2df0-lite.chunk.js.map} +1 -1
  9. package/dist/scripts/{5343-96e3cb1b06-lite.chunk.js → 5343-2d293449a3-lite.chunk.js} +2 -2
  10. package/dist/scripts/{5343-96e3cb1b06-lite.chunk.js.map → 5343-2d293449a3-lite.chunk.js.map} +1 -1
  11. package/dist/scripts/{5634-52e43f2642-lite.chunk.js → 5634-902d60b98b-lite.chunk.js} +2 -2
  12. package/dist/scripts/{5634-52e43f2642-lite.chunk.js.map → 5634-902d60b98b-lite.chunk.js.map} +1 -1
  13. package/dist/scripts/bundle-59b72c13db.min.js +3 -0
  14. package/dist/scripts/{bundle-6fdfe2f9c9.min.js.map → bundle-59b72c13db.min.js.map} +1 -1
  15. package/package.json +1 -1
  16. package/dist/scripts/1667-ff0760e5f7-lite.chunk.js.map +0 -1
  17. package/dist/scripts/bundle-6fdfe2f9c9.min.js +0 -3
  18. /package/dist/scripts/{1667-ff0760e5f7-lite.chunk.js.LICENSE.txt → 1667-127d37ccea-lite.chunk.js.LICENSE.txt} +0 -0
  19. /package/dist/scripts/{bundle-6fdfe2f9c9.min.js.LICENSE.txt → bundle-59b72c13db.min.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[2888],{75097:(e,t,n)=>{n.d(t,{U:()=>o});var r=n(32735),a=n(13170);function o(e){var t=e.count,n=void 0===t?6:t;return r.createElement("div",{className:"d-flex"},r.createElement("div",{className:"d-flex ps-1"},Array(n).fill(null).map((function(e,t){return r.createElement("div",{key:t,className:"".concat(a.Z.partialButton," partial-loading-background mx-1")})}))))}},6748:(e,t,n)=>{n.d(t,{i:()=>w});var r=n(32735),a=n(42648),o=n(35509),l=n(91967),c=n(15611),i=n(17808),s=n(1287),u=n(83914),d=n(90281),m={opacity:"0.8",cursor:"grabbing"},f=n(35223);function p(e){return function(e){if(Array.isArray(e))return g(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||v(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e,t){if(e){if("string"==typeof e)return g(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?g(e,t):void 0}}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function b(e){var t,n,r,a;return{canScrollLeft:(null===(t=e.current)||void 0===t?void 0:t.scrollLeft)>0,canScrollRight:(null===(n=e.current)||void 0===n?void 0:n.scrollLeft)+1<(null===(r=e.current)||void 0===r?void 0:r.scrollWidth)-(null===(a=e.current)||void 0===a?void 0:a.clientWidth)}}const y={sortIndicator:"gFhu0",scrollContainer:"sWUp9",scrollbarTrack:"Vn2qM"};function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var E=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function S(e){var t,n;return e.column.canSort?r.createElement("span",{className:"".concat(y.sortIndicator,"\n ").concat(e.column.isSorted?"":"text-secondary","\n ").concat(null!==(n=null===(t=e.theme)||void 0===t?void 0:t.sortIndicator)&&void 0!==n?n:"")},r.createElement(u.x,{svgName:e.column.isSortedDesc||!e.column.isSorted?f.vn.ArrowRight:f.vn.ArrowLeft,size:u.S.Small})):r.createElement(r.Fragment,null)}function k(e){var t,n,a,u,d,f,v,g,b={columns:e.columns,data:e.data,disableSortBy:!e.enableSort,manualSortBy:e.manualSort,autoResetHiddenColumns:e.autoResetHiddenColumns,autoResetSortBy:e.autoResetSortBy,initialState:{sortBy:e.initialSortBy||[]}};e.initialSelectedRowIds&&(b.initialState={selectedRowIds:(v=e.initialSelectedRowIds,g={},v.forEach((function(e){return g[e]=!0})),g)}),e.getRowId&&(b.getRowId=e.getRowId);var y,E=o.useTable.apply(void 0,[b].concat((y=function(e){var t=[o.useSortBy,o.useRowSelect,"flex"===e.layout?o.useFlexLayout:o.useBlockLayout];return e.allowFiltering&&(t=[].concat(p(t),[o.useFilters])),e.allowGlobalFiltering&&(t=[].concat(p(t),[o.useGlobalFilter])),t}(Object.assign({},e)),function(e){if(Array.isArray(e))return h(e)}(y)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(y)||function(e,t){if(e){if("string"==typeof e)return h(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(e,t):void 0}}(y)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()))),k=E.getTableProps,w=E.getTableBodyProps,C=E.headerGroups,N=E.rows,j=E.prepareRow,x=E.toggleAllRowsSelected,A=E.setGlobalFilter,T=E.setHiddenColumns,R=E.state.sortBy;function L(){return N.map((function(t){j(t);var n=function(t){var n,r,a,o,c,i=l.q.isFunction(null===(n=e.theme)||void 0===n?void 0:n.row)?e.theme.row(t):null!==(a=null===(r=e.theme)||void 0===r?void 0:r.row)&&void 0!==a?a:"";return t.isSelected&&(null===(o=e.theme)||void 0===o?void 0:o.selectedRow)&&(i+=" ".concat(null===(c=e.theme)||void 0===c?void 0:c.selectedRow)),e.onSelectRow&&(i+=" cursor-pointer"),e.enableSortableRows&&(i+=" cursor-grab"),i}(t),a=!!e.getRowAppLink&&e.getRowAppLink(t);function o(){e.onSelectRow&&(e.allowSelectMultipleRows||x(!1),e.onSelectRow(t),t.toggleRowSelected(!0))}function i(e,l){var i=function(e,t){return"dragAttributes"in e&&"dragListeners"in e?Object.assign(Object.assign(Object.assign({},e.dragAttributes),e.dragListeners),{"aria-roledescription":"Sortable row",ref:t}):{}}(e,l);return a?r.createElement("div",{role:"row",key:t.id},r.createElement(c.F,Object.assign({},e,i,{className:n,appLink:a}),O(t))):r.createElement("div",Object.assign({},e,i,{key:t.id,role:"row",className:n,onClick:o}),O(t))}var u=t.getRowProps();return e.enableSortableRows?r.createElement(s.W,{id:t.original.id,key:t.id,childProps:u,childComponent:r.forwardRef((function(e,t){return i(e,t)}))}):i(u)}))}function O(t){return t.cells.map((function(n){var a=function(t,n){var r,a,o="";return"function"==typeof(null===(r=e.theme)||void 0===r?void 0:r.cell)&&(o=e.theme.cell(t,n)),"string"==typeof(null===(a=e.theme)||void 0===a?void 0:a.cell)&&(o=e.theme.cell),e.onSelectCell&&(o+=" cursor-pointer"),o}(t,n);return r.createElement("div",Object.assign({key:n.column.id},n.getCellProps(),{className:a,onClick:function(){e.onSelectCell&&e.onSelectCell(n)}}),n.render("Cell"))}))}return r.useEffect((function(){e.onSort&&e.onSort(R)}),[R]),r.useEffect((function(){e.globalFilter&&A(e.globalFilter)}),[e.globalFilter]),r.useEffect((function(){e.hiddenColumns&&T(e.hiddenColumns)}),[e.hiddenColumns&&e.hiddenColumns.length]),r.createElement("div",Object.assign({},k(),{className:null!==(n=null===(t=e.theme)||void 0===t?void 0:t.table)&&void 0!==n?n:""}),r.createElement("div",{className:null!==(u=null===(a=e.theme)||void 0===a?void 0:a.header)&&void 0!==u?u:""},C.map((function(t){var n,a;return r.createElement("div",Object.assign({},t.getHeaderGroupProps(),{className:null!==(a=null===(n=e.theme)||void 0===n?void 0:n.headerRow)&&void 0!==a?a:""}),t.headers.map((function(t){var n,a;return r.createElement("div",Object.assign({},t.getHeaderProps(t.getSortByToggleProps()),{className:null!==(a=null===(n=e.theme)||void 0===n?void 0:n.headerCell)&&void 0!==a?a:""}),t.render("Header",{renderSortIndicator:function(){return r.createElement(S,{column:t,theme:e.theme})}}),!t.hideSortIndicator&&r.createElement(S,{column:t,theme:e.theme}))})))}))),r.createElement("div",Object.assign({},w(),{className:null!==(f=null===(d=e.theme)||void 0===d?void 0:d.body)&&void 0!==f?f:""}),e.enableSortableRows?r.createElement(i.Q,{ids:N.map((function(e){return e.original.id})),getDragOverlay:function(t){var n,a,o=N.findIndex((function(e){return e.original.id===t})),l=N[o];return r.createElement("div",Object.assign({},e,{className:(n=e.theme,a="g-0 ",n&&(a+=n.row),a),style:m}),O(l))},onSortEnd:e.onSortingRowsEnd},L()):L()))}function w(e){var t=e.enableSlider,n=e.scrollIncrement,o=e.scrollable,c=E(e,["enableSlider","scrollIncrement","scrollable"]),i=function(){var e,t,n=r.useRef(null),a=(e=r.useState(b(n)),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,l,c=[],i=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw a}}return c}}(e,t)||v(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=a[0],c=a[1],i=l.q.throttle((function(){c(b(n))}),200),s=r.useCallback((function(e){var t;n.current&&(null===(t=n.current)||void 0===t||t.removeEventListener("scroll",i)),e&&(c(b(n)),e.addEventListener("scroll",i)),n.current=e}),[]);return r.useEffect((function(){(null==n?void 0:n.current)&&c(b(n))}),[n]),{ref:s,scrollState:o,scroll:function(e){var t;null===(t=n.current)||void 0===t||t.scrollBy({left:e,top:0,behavior:"smooth"})}}}(),s=i.ref,u=i.scrollState,m=i.scroll;if(o)return r.createElement(a.$B,{renderTrackHorizontal:function(){return r.createElement("div",{className:y.scrollbarTrack})},autoHeightMax:1e4,autoHeight:!0},r.createElement(k,Object.assign({},c)));if(!t)return r.createElement(k,Object.assign({},c));function f(e){m(n*("right"===e?1:-1))}return r.createElement("div",{className:"mx-n4 overflow-x-hidden overflow-y-hidden"},r.createElement("div",{className:"px-4"},r.createElement("div",{className:"position-relative"},r.createElement(d.W,{direction:d.f.Left,onClick:function(){return f("left")},hide:!u.canScrollLeft}),r.createElement("div",{className:"".concat(y.scrollContainer," ").concat(e.scrollContainerClassName),ref:s},r.createElement(k,Object.assign({},c))),r.createElement(d.W,{direction:d.f.Right,onClick:function(){return f("right")},hide:!u.canScrollRight}))))}w.defaultProps={scrollIncrement:250,scrollable:!1,layout:"flex"}},91286:(e,t,n)=>{n.d(t,{v:()=>l});var r=n(32735),a=n(94644);function o(e){return e.map((function(e){return e.statusCode})).join(":")}function l(e,t,n){var l=Array.isArray(e)?e:[e];(0,r.useEffect)((function(){l.forEach((function(e){(0,a.r)(e.statusCode,t,n)}))}),[o(l),t,n])}},299:(e,t,n)=>{n.d(t,{X:()=>l});var r=n(32735),a=n(69217),o=n(94631),l=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.idField,l=void 0===n?"id":n,c=t.persistNamespace,i=t.initialState?t.initialState:new Map,s=r.useRef(i),u=(0,a.N)(),d=(0,o.D)(e),m=(0,o.D)(c);function f(){s.current.clear(),u()}function p(e){return"number"==typeof e?e=e.toString():"string"!=typeof e&&(e=e[l].toString()),s.current.get(e)}function v(){return!!(null==e?void 0:e.length)&&e.every(p)}function g(e){e.forEach((function(e){s.current.set(e,!0)})),u()}return r.useEffect((function(){t.initialState||c&&m===c||(null==d?void 0:d.map((function(e){return e[l]})).join())!==(null==e?void 0:e.map((function(e){return e[l]})).join())&&f()}),[d,m,e,t.initialState]),r.useEffect((function(){var e;(null===(e=t.preselectedIds)||void 0===e?void 0:e.length)&&g(t.preselectedIds)}),[]),{onToggleBulk:function(){var t=!v();e.forEach((function(e){t?s.current.set(e[l].toString(),!0):s.current.delete(e[l].toString())})),u()},onToggleItem:function(e){var t=!s.current.get(e.toString());t?s.current.set(e.toString(),t):s.current.delete(e.toString()),u()},getSelected:function(){return Array.from(s.current.keys())},isChecked:p,bulkChecked:v(),deselectAll:function(){(null==e?void 0:e.length)&&(e.forEach((function(e){s.current.delete(e[l].toString())})),u())},hasSomeSelections:function(){return!!(null==e?void 0:e.length)&&!!e.find((function(e){return p(e)}))},setSelected:g,getSelectedCount:function(){return s.current.size},reset:f,getMap:function(){return s.current}}}},53088:(e,t,n)=>{n.r(t),n.d(t,{UserAuditLogView:()=>te});var r=n(32735),a=n(23481),o=n(57900),l=n(20354),c=n(75097),i=n(49935);const s={partialHeading:"rfiJl",partialJobCount:"h8k_u",partialCheckbox:"HkuOS",partialExportButton:"Iul7S",row:"mwigG",checkboxColumn:"Z5jLG",actionColumn:"rLxYh",usersColumn:"QZzab",dateColumn:"Wf_Jp",performedByColumn:"Ubtmj",seeMoreColumn:"XdP6u",heading:"kRMMH",action:"DvDvW",users:"goKpg",date:"ejYGb",performedBy:"NhjyL"};function u(){return r.createElement("div",{className:"d-flex striped-row rounded py-3 ".concat(s.row)},r.createElement("div",{className:"".concat(s.checkboxColumn," d-flex justify-content-center")},r.createElement("div",{className:"partial-loading-background ".concat(s.partialCheckbox," ms-0")})),r.createElement("div",{className:"".concat(s.actionColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.action)})),r.createElement("div",{className:"".concat(s.usersColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.users)})),r.createElement("div",{className:"".concat(s.dateColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.date)})),r.createElement("div",{className:"".concat(s.performedByColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.performedBy)})),r.createElement("div",{className:"".concat(s.seeMoreColumn)}," "))}function d(){return r.createElement("div",{className:"d-flex py-2 mb-1"},r.createElement("div",{className:"".concat(s.checkboxColumn)}," "),r.createElement("div",{className:"".concat(s.actionColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.heading)})),r.createElement("div",{className:"".concat(s.usersColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.heading)})),r.createElement("div",{className:"".concat(s.dateColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.heading)})),r.createElement("div",{className:"".concat(s.performedByColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.heading)})),r.createElement("div",{className:"".concat(s.seeMoreColumn)}," "))}function m(){return r.createElement(r.Fragment,null,r.createElement("div",{className:"mb-3 mt-n1"},r.createElement(d,null),r.createElement("div",{className:"striped-list no-full-width"},r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null))))}function f(){return r.createElement(r.Fragment,null,r.createElement("div",{className:"partial-loading-background mb-2 ".concat(s.partialHeading)}),r.createElement("div",{className:"pb-3"},r.createElement("div",{className:"d-flex justify-content-between"},r.createElement(i.b2,null),r.createElement("div",{className:"partial-loading-background ".concat(s.partialJobCount)}))),r.createElement("div",{className:"d-flex align-items-center pb-2"},r.createElement("div",{className:"partial-loading-background ".concat(s.partialCheckbox)}),r.createElement("div",{className:"ms-4 ps-3"},r.createElement(c.U,{count:3})),r.createElement("div",{className:"ms-auto partial-loading-background ".concat(s.partialExportButton)})),r.createElement(m,null))}var p=n(89422),v=n(89965),g=n(37395),b=n(2102),y=n(83345),h=n(76881),E=n(69883),S=n(299),k=n(75795),w=n(65858),C=n(13109),N=n(67286),j="userManager.userAuditLogFilters";function x(e){var t=[N.x$.SortBy([{id:"newest",name:a.T.getPhrase(j,"newest"),default:!0},{id:"oldest",name:a.T.getPhrase(j,"oldest")}]),N.x$.BulkActionType(),N.x$.UserType()];return r.createElement(C.J,{queryParams:e.queryParams,mainFilters:t,appLink:e.appLinks.auditLog,analyticsOptions:{entity:w.py.BatchJob,location:w.LZ.UserAuditLog},hideHeading:!0,hideDivider:!0,constantIndices:[]})}var A=n(6748),T=n(110),R=n(149),L=n(15611),O=n(97392),I=n(83914),B=n(86794);const M={seeMore:"uymuO"};function P(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var F="userManager.userAuditLogTable",H=a.T.encloseNamespace(F),U={table:"striped-list no-full-width pb-3",header:"fw-semibold pb-1",headerCell:"px-2 py-1",row:"striped-row rounded audit-log-row",cell:"d-flex align-items-center py-3 px-2"};function J(e){var t,n,a,o,l=(t=e.jobs.data,n=e.isChecked,t.map((function(e){var t=T.O.format(e.dateCreated,"DD/MM/YYYY, hh:mmA");return{id:e.id,checked:n(e.id),actionType:R.b.mapJobTypeToName(e.type),userType:R.b.mapDataTypeToUserType(e.dataType),date:t,performedBy:{name:e.submitterName,submittedByClickView:e.submittedByClickView}}})));return r.createElement(A.i,{columns:(a=e.appLinks.bulkActionSummary,o=e.onToggleCheckbox,[{Header:"",id:"checkboxes",accessor:function(e){return{id:e.id,checked:e.checked}},Cell:function(e){return r.createElement("div",{className:"text-center mx-auto"},r.createElement(v.X,{id:e.value.id,checked:e.value.checked,onChange:function(){return o(e.value.id)}}))},width:10},{Header:H("action"),accessor:"actionType",id:"actionType",Cell:function(e){var t=e.value;return r.createElement("div",{className:"w-100"},t)},width:20},{Header:H("users"),accessor:"userType",id:"userType",Cell:function(e){var t=e.value;return r.createElement("div",{className:"w-100"},function(){switch(t){case h.Y.Learner:return H("students");case h.Y.Staff:return H("staff");case h.Y.Unknown:default:return H("unknown")}}())},width:10},{Header:H("date"),accessor:"date",id:"date",Cell:function(e){var t=e.value;return r.createElement("div",{className:"w-100"},t)},width:20},{Header:H("performedBy"),accessor:"performedBy",id:"performedBy",Cell:function(e){return r.createElement("div",{className:"w-100 d-flex align-items-center"},e.value.submittedByClickView&&r.createElement(B.b,{className:"me-1",size:I.S.Small},r.createElement(O.F,null)),e.value.name)},width:20},{Header:"",accessor:"id",id:"seeMore",Cell:function(e){var t,n,o=e.value;return r.createElement("div",{className:"w-100 d-flex justify-content-end"},r.createElement(L.F,{className:"info-link text-end me-3 ms-auto ".concat(M.seeMore),appLink:Object.assign(Object.assign({},a),{args:(null===(t=a.args)||void 0===t?void 0:t.length)?[].concat((n=a.args,function(e){if(Array.isArray(e))return P(e)}(n)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(n)||function(e,t){if(e){if("string"==typeof e)return P(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?P(e,t):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),[o]):[o]})},r.createElement(y.x,{namespace:F,phrase:"seeMore"})))},width:30}]),data:l,theme:U})}var G=n(97958),Y="userManager.auditLogEmptyState";function _(e){return r.createElement(G.u,null,r.createElement(G.u.Image,{src:e.imageUrl}),r.createElement(G.u.Heading,null,r.createElement(y.x,{namespace:Y,phrase:"heading"})),r.createElement(G.u.Info,null,r.createElement(y.x,{namespace:Y,phrase:"info"})))}const q={bulkCheckbox:"NMw5T"};function D(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var W="userManager.auditLog",$=a.T.encloseNamespace(W);function V(e){var t,n,a,l,c=o.SG.get(p.K.AUDIT_LOG_REFERRER_KEY),s=(a=r.useState(!1),l=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,l,c=[],i=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw a}}return c}}(a,l)||function(e,t){if(e){if("string"==typeof e)return D(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?D(e,t):void 0}}(a,l)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=s[0],d=s[1],m=(0,S.X)(e.jobs.data),f=(0,E.Z)();return r.createElement(r.Fragment,null,r.createElement("h1",{className:"h2"},r.createElement(y.x,{namespace:W,phrase:"heading"})),r.createElement("div",{className:"pb-3"},r.createElement("div",{className:"d-flex justify-content-between"},r.createElement(i.Oo,{breadcrumbs:[{name:$("settingsBreadcrumb"),appLink:e.appLinks.settings},{name:$(c===h.Y.Learner?"studentManager":"staffManager"),appLink:e.appLinks.userManager},{name:$("heading"),active:!0}]}),r.createElement("p",{className:"mb-0 fw-semibold"},r.createElement(y.x,{namespace:W,phrase:"totalJobs",options:{showing:e.jobs.data.length,smartCount:e.jobs.count}})))),r.createElement("div",{className:"d-flex align-items-center pb-2"},r.createElement(v.X,{className:q.bulkCheckbox,id:"bulk-audit-log-checkbox",checked:m.bulkChecked,onChange:m.onToggleBulk,indeterminate:m.hasSomeSelections()}),r.createElement("div",{className:"ms-4 ps-1"},r.createElement(x,{queryParams:e.queryParams,appLinks:e.appLinks})),r.createElement(b.m,{variant:"dark",className:"ms-auto",onClick:function(){if(!u){d(!0);var t=m.getSelected();e.onClickExport(t).then((function(){return f.success($("exportSuccess"))})).catch((function(){return f.error($("exportError"))})).finally((function(){return d(!1)}))}},disabled:!m.hasSomeSelections()||u,showSpinner:u},r.createElement(y.x,{namespace:W,phrase:"export"}))),(null===(t=e.jobs.data)||void 0===t?void 0:t.length)?r.createElement(J,{jobs:e.jobs,appLinks:e.appLinks,onToggleCheckbox:m.onToggleItem,isChecked:m.isChecked}):r.createElement(_,{imageUrl:e.emptyStateImageUrl}),!!(null===(n=e.jobs.pagination)||void 0===n?void 0:n.cursors)&&r.createElement(g.t,{className:"p-0 text-end pb-3",cursors:e.jobs.pagination.cursors,appLink:k.O.getCurrentRoute().appLink,buttonVariant:"outline-dark"}))}var K=n(91286),z=n(79612),X=n(99742),Z=n(29613),Q=n(18087),ee="userManager.userAuditLogView";function te(e){var t=o.SG.get(p.K.AUDIT_LOG_REFERRER_KEY),n=l.a.useBasicFetch(Z.q.getJobs(e.queryParams));(0,K.v)(n),(0,z.M)({title:a.T.getPhrase(ee,"pageTitle")});var c=l.a.useGetFetchAsync(),i=(0,Q.Y)(t);return n.hasCompleted?r.createElement("div",{className:"px-3"},r.createElement(V,{jobs:n.data,appLinks:i,queryParams:e.queryParams,onClickExport:function(e){return c(Z.q.sendJobReports(e))},emptyStateImageUrl:X.W.EmptyStates.Search.RESULTS})):r.createElement("div",{className:"px-3"},r.createElement(f,null))}},29613:(e,t,n)=>{n.d(t,{q:()=>l});var r=n(99940),a=n(97395),o=n(149),l={createJob:function(e,t,n){return{url:"{gateway}/v1/batch/jobs",key:"create:job",type:r.k.POST,data:e,success:t,error:n}},getJobs:function(e){var t={},n=[],r=[];return e.cursor&&(t.cursor=e.cursor),e.sort&&("oldest"===e.sort?t.order="ASC":t.order="DESC"),e.bulkActionType?(n=Array.isArray(e.bulkActionType)?e.bulkActionType:[e.bulkActionType],t.type=n):t.type=o.O,e.userType&&(r=Array.isArray(e.userType)?e.userType:[e.userType],t.dataType=r),{url:a._.urlBuilder("{gateway}/v1/batch/jobs",t),key:"batch:jobs:".concat(e.cursor,":").concat(e.sort,":").concat(n.sort().join(":"),":").concat(r.sort().join(":"))}},getJob:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e),key:"job:".concat(e)}},getJobProgress:function(e,t,n){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/progress"),key:"job:".concat(e,":progress"),invalidationKeys:"job:".concat(e,":progress"),success:t,error:n}},getJobResults:function(e,t,n,r,o){var l={status:t};return n&&(l.cursor=n),{url:a._.urlBuilder("{gateway}/v1/batch/jobs/".concat(e,"/results"),l),key:"job:".concat(e,":results:").concat(t,":").concat(n),success:r,error:o}},getYearGroupRolloverStatus:function(e){return{url:"{gateway}/v1/batch/validations/customers/".concat(e,"/year-group-roll-over"),key:"year:group:rollover:status"}},sendJobReports:function(e){return{url:"{gateway}/v1/batch/results/export",key:"send:job:reports:".concat(e.sort().join(":")),type:r.k.POST,data:{jobIds:e}}},getJobSummary:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/summary"),key:"job:summary:".concat(e)}}}}}]);
2
- //# sourceMappingURL=2888-cf6214a94f-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[2888],{75097:(e,t,n)=>{n.d(t,{U:()=>o});var r=n(32735),a=n(13170);function o(e){var t=e.count,n=void 0===t?6:t;return r.createElement("div",{className:"d-flex"},r.createElement("div",{className:"d-flex ps-1"},Array(n).fill(null).map((function(e,t){return r.createElement("div",{key:t,className:"".concat(a.Z.partialButton," partial-loading-background mx-1")})}))))}},6748:(e,t,n)=>{n.d(t,{i:()=>w});var r=n(32735),a=n(42648),o=n(35509),l=n(91967),c=n(15611),i=n(17808),s=n(1287),u=n(83914),d=n(90281),m={opacity:"0.8",cursor:"grabbing"},f=n(35223);function p(e){return function(e){if(Array.isArray(e))return g(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||v(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e,t){if(e){if("string"==typeof e)return g(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?g(e,t):void 0}}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function b(e){var t,n,r,a;return{canScrollLeft:(null===(t=e.current)||void 0===t?void 0:t.scrollLeft)>0,canScrollRight:(null===(n=e.current)||void 0===n?void 0:n.scrollLeft)+1<(null===(r=e.current)||void 0===r?void 0:r.scrollWidth)-(null===(a=e.current)||void 0===a?void 0:a.clientWidth)}}const y={sortIndicator:"gFhu0",scrollContainer:"sWUp9",scrollbarTrack:"Vn2qM"};function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var E=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function S(e){var t,n;return e.column.canSort?r.createElement("span",{className:"".concat(y.sortIndicator,"\n ").concat(e.column.isSorted?"":"text-secondary","\n ").concat(null!==(n=null===(t=e.theme)||void 0===t?void 0:t.sortIndicator)&&void 0!==n?n:"")},r.createElement(u.x,{svgName:e.column.isSortedDesc||!e.column.isSorted?f.vn.ArrowRight:f.vn.ArrowLeft,size:u.S.Small})):r.createElement(r.Fragment,null)}function k(e){var t,n,a,u,d,f,v,g,b={columns:e.columns,data:e.data,disableSortBy:!e.enableSort,manualSortBy:e.manualSort,autoResetHiddenColumns:e.autoResetHiddenColumns,autoResetSortBy:e.autoResetSortBy,initialState:{sortBy:e.initialSortBy||[]}};e.initialSelectedRowIds&&(b.initialState={selectedRowIds:(v=e.initialSelectedRowIds,g={},v.forEach((function(e){return g[e]=!0})),g)}),e.getRowId&&(b.getRowId=e.getRowId);var y,E=o.useTable.apply(void 0,[b].concat((y=function(e){var t=[o.useSortBy,o.useRowSelect,"flex"===e.layout?o.useFlexLayout:o.useBlockLayout];return e.allowFiltering&&(t=[].concat(p(t),[o.useFilters])),e.allowGlobalFiltering&&(t=[].concat(p(t),[o.useGlobalFilter])),t}(Object.assign({},e)),function(e){if(Array.isArray(e))return h(e)}(y)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(y)||function(e,t){if(e){if("string"==typeof e)return h(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(e,t):void 0}}(y)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()))),k=E.getTableProps,w=E.getTableBodyProps,C=E.headerGroups,N=E.rows,j=E.prepareRow,x=E.toggleAllRowsSelected,A=E.setGlobalFilter,T=E.setHiddenColumns,R=E.state.sortBy;function L(){return N.map((function(t){j(t);var n=function(t){var n,r,a,o,c,i=l.q.isFunction(null===(n=e.theme)||void 0===n?void 0:n.row)?e.theme.row(t):null!==(a=null===(r=e.theme)||void 0===r?void 0:r.row)&&void 0!==a?a:"";return t.isSelected&&(null===(o=e.theme)||void 0===o?void 0:o.selectedRow)&&(i+=" ".concat(null===(c=e.theme)||void 0===c?void 0:c.selectedRow)),e.onSelectRow&&(i+=" cursor-pointer"),e.enableSortableRows&&(i+=" cursor-grab"),i}(t),a=!!e.getRowAppLink&&e.getRowAppLink(t);function o(){e.onSelectRow&&(e.allowSelectMultipleRows||x(!1),e.onSelectRow(t),t.toggleRowSelected(!0))}function i(e,l){var i=function(e,t){return"dragAttributes"in e&&"dragListeners"in e?Object.assign(Object.assign(Object.assign({},e.dragAttributes),e.dragListeners),{"aria-roledescription":"Sortable row",ref:t}):{}}(e,l);return a?r.createElement("div",{role:"row",key:t.id},r.createElement(c.F,Object.assign({},e,i,{className:n,appLink:a}),O(t))):r.createElement("div",Object.assign({},e,i,{key:t.id,role:"row",className:n,onClick:o}),O(t))}var u=t.getRowProps();return e.enableSortableRows?r.createElement(s.W,{id:t.original.id,key:t.id,childProps:u,childComponent:r.forwardRef((function(e,t){return i(e,t)}))}):i(u)}))}function O(t){return t.cells.map((function(n){var a=function(t,n){var r,a,o="";return"function"==typeof(null===(r=e.theme)||void 0===r?void 0:r.cell)&&(o=e.theme.cell(t,n)),"string"==typeof(null===(a=e.theme)||void 0===a?void 0:a.cell)&&(o=e.theme.cell),e.onSelectCell&&(o+=" cursor-pointer"),o}(t,n);return r.createElement("div",Object.assign({key:n.column.id},n.getCellProps(),{className:a,onClick:function(){e.onSelectCell&&e.onSelectCell(n)}}),n.render("Cell"))}))}return r.useEffect((function(){e.onSort&&e.onSort(R)}),[R]),r.useEffect((function(){e.globalFilter&&A(e.globalFilter)}),[e.globalFilter]),r.useEffect((function(){e.hiddenColumns&&T(e.hiddenColumns)}),[e.hiddenColumns&&e.hiddenColumns.length]),r.createElement("div",Object.assign({},k(),{className:null!==(n=null===(t=e.theme)||void 0===t?void 0:t.table)&&void 0!==n?n:""}),r.createElement("div",{className:null!==(u=null===(a=e.theme)||void 0===a?void 0:a.header)&&void 0!==u?u:""},C.map((function(t){var n,a;return r.createElement("div",Object.assign({},t.getHeaderGroupProps(),{className:null!==(a=null===(n=e.theme)||void 0===n?void 0:n.headerRow)&&void 0!==a?a:""}),t.headers.map((function(t){var n,a;return r.createElement("div",Object.assign({},t.getHeaderProps(t.getSortByToggleProps()),{className:null!==(a=null===(n=e.theme)||void 0===n?void 0:n.headerCell)&&void 0!==a?a:""}),t.render("Header",{renderSortIndicator:function(){return r.createElement(S,{column:t,theme:e.theme})}}),!t.hideSortIndicator&&r.createElement(S,{column:t,theme:e.theme}))})))}))),r.createElement("div",Object.assign({},w(),{className:null!==(f=null===(d=e.theme)||void 0===d?void 0:d.body)&&void 0!==f?f:""}),e.enableSortableRows?r.createElement(i.Q,{ids:N.map((function(e){return e.original.id})),getDragOverlay:function(t){var n,a,o=N.findIndex((function(e){return e.original.id===t})),l=N[o];return r.createElement("div",Object.assign({},e,{className:(n=e.theme,a="g-0 ",n&&(a+=n.row),a),style:m}),O(l))},onSortEnd:e.onSortingRowsEnd},L()):L()))}function w(e){var t=e.enableSlider,n=e.scrollIncrement,o=e.scrollable,c=E(e,["enableSlider","scrollIncrement","scrollable"]),i=function(){var e,t,n=r.useRef(null),a=(e=r.useState(b(n)),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,l,c=[],i=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw a}}return c}}(e,t)||v(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=a[0],c=a[1],i=l.q.throttle((function(){c(b(n))}),200),s=r.useCallback((function(e){var t;n.current&&(null===(t=n.current)||void 0===t||t.removeEventListener("scroll",i)),e&&(c(b(n)),e.addEventListener("scroll",i)),n.current=e}),[]);return r.useEffect((function(){(null==n?void 0:n.current)&&c(b(n))}),[n]),{ref:s,scrollState:o,scroll:function(e){var t;null===(t=n.current)||void 0===t||t.scrollBy({left:e,top:0,behavior:"smooth"})}}}(),s=i.ref,u=i.scrollState,m=i.scroll;if(o)return r.createElement(a.$B,{renderTrackHorizontal:function(){return r.createElement("div",{className:y.scrollbarTrack})},autoHeightMax:1e4,autoHeight:!0},r.createElement(k,Object.assign({},c)));if(!t)return r.createElement(k,Object.assign({},c));function f(e){m(n*("right"===e?1:-1))}return r.createElement("div",{className:"mx-n4 overflow-x-hidden overflow-y-hidden"},r.createElement("div",{className:"px-4"},r.createElement("div",{className:"position-relative"},r.createElement(d.W,{direction:d.f.Left,onClick:function(){return f("left")},hide:!u.canScrollLeft}),r.createElement("div",{className:"".concat(y.scrollContainer," ").concat(e.scrollContainerClassName),ref:s},r.createElement(k,Object.assign({},c))),r.createElement(d.W,{direction:d.f.Right,onClick:function(){return f("right")},hide:!u.canScrollRight}))))}w.defaultProps={scrollIncrement:250,scrollable:!1,layout:"flex"}},91286:(e,t,n)=>{n.d(t,{v:()=>l});var r=n(32735),a=n(94644);function o(e){return e.map((function(e){return e.statusCode})).join(":")}function l(e,t,n){var l=Array.isArray(e)?e:[e];(0,r.useEffect)((function(){l.forEach((function(e){(0,a.r)(e.statusCode,t,n)}))}),[o(l),t,n])}},299:(e,t,n)=>{n.d(t,{X:()=>l});var r=n(32735),a=n(69217),o=n(94631),l=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.idField,l=void 0===n?"id":n,c=t.persistNamespace,i=t.initialState?t.initialState:new Map,s=r.useRef(i),u=(0,a.N)(),d=(0,o.D)(e),m=(0,o.D)(c);function f(){s.current.clear(),u()}function p(e){return"number"==typeof e?e=e.toString():"string"!=typeof e&&(e=e[l].toString()),s.current.get(e)}function v(){return!!(null==e?void 0:e.length)&&e.every(p)}function g(e){e.forEach((function(e){s.current.set(e,!0)})),u()}return r.useEffect((function(){t.initialState||c&&m===c||(null==d?void 0:d.map((function(e){return e[l]})).join())!==(null==e?void 0:e.map((function(e){return e[l]})).join())&&f()}),[d,m,e,t.initialState]),r.useEffect((function(){var e;(null===(e=t.preselectedIds)||void 0===e?void 0:e.length)&&g(t.preselectedIds)}),[]),{onToggleBulk:function(){var t=!v();e.forEach((function(e){t?s.current.set(e[l].toString(),!0):s.current.delete(e[l].toString())})),u()},onToggleItem:function(e){var t=!s.current.get(e.toString());t?s.current.set(e.toString(),t):s.current.delete(e.toString()),u()},getSelected:function(){return Array.from(s.current.keys())},isChecked:p,bulkChecked:v(),deselectAll:function(){(null==e?void 0:e.length)&&(e.forEach((function(e){s.current.delete(e[l].toString())})),u())},hasSomeSelections:function(){return!!(null==e?void 0:e.length)&&!!e.find((function(e){return p(e)}))},setSelected:g,getSelectedCount:function(){return s.current.size},reset:f,getMap:function(){return s.current}}}},53088:(e,t,n)=>{n.r(t),n.d(t,{UserAuditLogView:()=>te});var r=n(32735),a=n(23481),o=n(57900),l=n(20354),c=n(75097),i=n(49935);const s={partialHeading:"rfiJl",partialJobCount:"h8k_u",partialCheckbox:"HkuOS",partialExportButton:"Iul7S",row:"mwigG",checkboxColumn:"Z5jLG",actionColumn:"rLxYh",usersColumn:"QZzab",dateColumn:"Wf_Jp",performedByColumn:"Ubtmj",seeMoreColumn:"XdP6u",heading:"kRMMH",action:"DvDvW",users:"goKpg",date:"ejYGb",performedBy:"NhjyL"};function u(){return r.createElement("div",{className:"d-flex striped-row rounded py-3 ".concat(s.row)},r.createElement("div",{className:"".concat(s.checkboxColumn," d-flex justify-content-center")},r.createElement("div",{className:"partial-loading-background ".concat(s.partialCheckbox," ms-0")})),r.createElement("div",{className:"".concat(s.actionColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.action)})),r.createElement("div",{className:"".concat(s.usersColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.users)})),r.createElement("div",{className:"".concat(s.dateColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.date)})),r.createElement("div",{className:"".concat(s.performedByColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.performedBy)})),r.createElement("div",{className:"".concat(s.seeMoreColumn)}," "))}function d(){return r.createElement("div",{className:"d-flex py-2 mb-1"},r.createElement("div",{className:"".concat(s.checkboxColumn)}," "),r.createElement("div",{className:"".concat(s.actionColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.heading)})),r.createElement("div",{className:"".concat(s.usersColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.heading)})),r.createElement("div",{className:"".concat(s.dateColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.heading)})),r.createElement("div",{className:"".concat(s.performedByColumn)},r.createElement("div",{className:"partial-loading-background ".concat(s.heading)})),r.createElement("div",{className:"".concat(s.seeMoreColumn)}," "))}function m(){return r.createElement(r.Fragment,null,r.createElement("div",{className:"mb-3 mt-n1"},r.createElement(d,null),r.createElement("div",{className:"striped-list no-full-width"},r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null),r.createElement(u,null))))}function f(){return r.createElement(r.Fragment,null,r.createElement("div",{className:"partial-loading-background mb-2 ".concat(s.partialHeading)}),r.createElement("div",{className:"pb-3"},r.createElement("div",{className:"d-flex justify-content-between"},r.createElement(i.b2,null),r.createElement("div",{className:"partial-loading-background ".concat(s.partialJobCount)}))),r.createElement("div",{className:"d-flex align-items-center pb-2"},r.createElement("div",{className:"partial-loading-background ".concat(s.partialCheckbox)}),r.createElement("div",{className:"ms-4 ps-3"},r.createElement(c.U,{count:3})),r.createElement("div",{className:"ms-auto partial-loading-background ".concat(s.partialExportButton)})),r.createElement(m,null))}var p=n(89422),v=n(89965),g=n(37395),b=n(2102),y=n(83345),h=n(76881),E=n(69883),S=n(299),k=n(75795),w=n(65858),C=n(13109),N=n(70848),j="userManager.userAuditLogFilters";function x(e){var t=[N.x$.SortBy([{id:"newest",name:a.T.getPhrase(j,"newest"),default:!0},{id:"oldest",name:a.T.getPhrase(j,"oldest")}]),N.x$.BulkActionType(),N.x$.UserType()];return r.createElement(C.J,{queryParams:e.queryParams,mainFilters:t,appLink:e.appLinks.auditLog,analyticsOptions:{entity:w.py.BatchJob,location:w.LZ.UserAuditLog},hideHeading:!0,hideDivider:!0,constantIndices:[]})}var A=n(6748),T=n(110),R=n(149),L=n(15611),O=n(97392),I=n(83914),B=n(86794);const M={seeMore:"uymuO"};function P(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var F="userManager.userAuditLogTable",H=a.T.encloseNamespace(F),U={table:"striped-list no-full-width pb-3",header:"fw-semibold pb-1",headerCell:"px-2 py-1",row:"striped-row rounded audit-log-row",cell:"d-flex align-items-center py-3 px-2"};function J(e){var t,n,a,o,l=(t=e.jobs.data,n=e.isChecked,t.map((function(e){var t=T.O.format(e.dateCreated,"DD/MM/YYYY, hh:mmA");return{id:e.id,checked:n(e.id),actionType:R.b.mapJobTypeToName(e.type),userType:R.b.mapDataTypeToUserType(e.dataType),date:t,performedBy:{name:e.submitterName,submittedByClickView:e.submittedByClickView}}})));return r.createElement(A.i,{columns:(a=e.appLinks.bulkActionSummary,o=e.onToggleCheckbox,[{Header:"",id:"checkboxes",accessor:function(e){return{id:e.id,checked:e.checked}},Cell:function(e){return r.createElement("div",{className:"text-center mx-auto"},r.createElement(v.X,{id:e.value.id,checked:e.value.checked,onChange:function(){return o(e.value.id)}}))},width:10},{Header:H("action"),accessor:"actionType",id:"actionType",Cell:function(e){var t=e.value;return r.createElement("div",{className:"w-100"},t)},width:20},{Header:H("users"),accessor:"userType",id:"userType",Cell:function(e){var t=e.value;return r.createElement("div",{className:"w-100"},function(){switch(t){case h.Y.Learner:return H("students");case h.Y.Staff:return H("staff");case h.Y.Unknown:default:return H("unknown")}}())},width:10},{Header:H("date"),accessor:"date",id:"date",Cell:function(e){var t=e.value;return r.createElement("div",{className:"w-100"},t)},width:20},{Header:H("performedBy"),accessor:"performedBy",id:"performedBy",Cell:function(e){return r.createElement("div",{className:"w-100 d-flex align-items-center"},e.value.submittedByClickView&&r.createElement(B.b,{className:"me-1",size:I.S.Small},r.createElement(O.F,null)),e.value.name)},width:20},{Header:"",accessor:"id",id:"seeMore",Cell:function(e){var t,n,o=e.value;return r.createElement("div",{className:"w-100 d-flex justify-content-end"},r.createElement(L.F,{className:"info-link text-end me-3 ms-auto ".concat(M.seeMore),appLink:Object.assign(Object.assign({},a),{args:(null===(t=a.args)||void 0===t?void 0:t.length)?[].concat((n=a.args,function(e){if(Array.isArray(e))return P(e)}(n)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(n)||function(e,t){if(e){if("string"==typeof e)return P(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?P(e,t):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),[o]):[o]})},r.createElement(y.x,{namespace:F,phrase:"seeMore"})))},width:30}]),data:l,theme:U})}var G=n(97958),Y="userManager.auditLogEmptyState";function _(e){return r.createElement(G.u,null,r.createElement(G.u.Image,{src:e.imageUrl}),r.createElement(G.u.Heading,null,r.createElement(y.x,{namespace:Y,phrase:"heading"})),r.createElement(G.u.Info,null,r.createElement(y.x,{namespace:Y,phrase:"info"})))}const q={bulkCheckbox:"NMw5T"};function D(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var W="userManager.auditLog",$=a.T.encloseNamespace(W);function V(e){var t,n,a,l,c=o.SG.get(p.K.AUDIT_LOG_REFERRER_KEY),s=(a=r.useState(!1),l=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,l,c=[],i=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw a}}return c}}(a,l)||function(e,t){if(e){if("string"==typeof e)return D(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?D(e,t):void 0}}(a,l)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=s[0],d=s[1],m=(0,S.X)(e.jobs.data),f=(0,E.Z)();return r.createElement(r.Fragment,null,r.createElement("h1",{className:"h2"},r.createElement(y.x,{namespace:W,phrase:"heading"})),r.createElement("div",{className:"pb-3"},r.createElement("div",{className:"d-flex justify-content-between"},r.createElement(i.Oo,{breadcrumbs:[{name:$("settingsBreadcrumb"),appLink:e.appLinks.settings},{name:$(c===h.Y.Learner?"studentManager":"staffManager"),appLink:e.appLinks.userManager},{name:$("heading"),active:!0}]}),r.createElement("p",{className:"mb-0 fw-semibold"},r.createElement(y.x,{namespace:W,phrase:"totalJobs",options:{showing:e.jobs.data.length,smartCount:e.jobs.count}})))),r.createElement("div",{className:"d-flex align-items-center pb-2"},r.createElement(v.X,{className:q.bulkCheckbox,id:"bulk-audit-log-checkbox",checked:m.bulkChecked,onChange:m.onToggleBulk,indeterminate:m.hasSomeSelections()}),r.createElement("div",{className:"ms-4 ps-1"},r.createElement(x,{queryParams:e.queryParams,appLinks:e.appLinks})),r.createElement(b.m,{variant:"dark",className:"ms-auto",onClick:function(){if(!u){d(!0);var t=m.getSelected();e.onClickExport(t).then((function(){return f.success($("exportSuccess"))})).catch((function(){return f.error($("exportError"))})).finally((function(){return d(!1)}))}},disabled:!m.hasSomeSelections()||u,showSpinner:u},r.createElement(y.x,{namespace:W,phrase:"export"}))),(null===(t=e.jobs.data)||void 0===t?void 0:t.length)?r.createElement(J,{jobs:e.jobs,appLinks:e.appLinks,onToggleCheckbox:m.onToggleItem,isChecked:m.isChecked}):r.createElement(_,{imageUrl:e.emptyStateImageUrl}),!!(null===(n=e.jobs.pagination)||void 0===n?void 0:n.cursors)&&r.createElement(g.t,{className:"p-0 text-end pb-3",cursors:e.jobs.pagination.cursors,appLink:k.O.getCurrentRoute().appLink,buttonVariant:"outline-dark"}))}var K=n(91286),z=n(79612),X=n(99742),Z=n(29613),Q=n(18087),ee="userManager.userAuditLogView";function te(e){var t=o.SG.get(p.K.AUDIT_LOG_REFERRER_KEY),n=l.a.useBasicFetch(Z.q.getJobs(e.queryParams));(0,K.v)(n),(0,z.M)({title:a.T.getPhrase(ee,"pageTitle")});var c=l.a.useGetFetchAsync(),i=(0,Q.Y)(t);return n.hasCompleted?r.createElement("div",{className:"px-3"},r.createElement(V,{jobs:n.data,appLinks:i,queryParams:e.queryParams,onClickExport:function(e){return c(Z.q.sendJobReports(e))},emptyStateImageUrl:X.W.EmptyStates.Search.RESULTS})):r.createElement("div",{className:"px-3"},r.createElement(f,null))}},29613:(e,t,n)=>{n.d(t,{q:()=>l});var r=n(99940),a=n(97395),o=n(149),l={createJob:function(e,t,n){return{url:"{gateway}/v1/batch/jobs",key:"create:job",type:r.k.POST,data:e,success:t,error:n}},getJobs:function(e){var t={},n=[],r=[];return e.cursor&&(t.cursor=e.cursor),e.sort&&("oldest"===e.sort?t.order="ASC":t.order="DESC"),e.bulkActionType?(n=Array.isArray(e.bulkActionType)?e.bulkActionType:[e.bulkActionType],t.type=n):t.type=o.O,e.userType&&(r=Array.isArray(e.userType)?e.userType:[e.userType],t.dataType=r),{url:a._.urlBuilder("{gateway}/v1/batch/jobs",t),key:"batch:jobs:".concat(e.cursor,":").concat(e.sort,":").concat(n.sort().join(":"),":").concat(r.sort().join(":"))}},getJob:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e),key:"job:".concat(e)}},getJobProgress:function(e,t,n){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/progress"),key:"job:".concat(e,":progress"),invalidationKeys:"job:".concat(e,":progress"),success:t,error:n}},getJobResults:function(e,t,n,r,o){var l={status:t};return n&&(l.cursor=n),{url:a._.urlBuilder("{gateway}/v1/batch/jobs/".concat(e,"/results"),l),key:"job:".concat(e,":results:").concat(t,":").concat(n),success:r,error:o}},getYearGroupRolloverStatus:function(e){return{url:"{gateway}/v1/batch/validations/customers/".concat(e,"/year-group-roll-over"),key:"year:group:rollover:status"}},sendJobReports:function(e){return{url:"{gateway}/v1/batch/results/export",key:"send:job:reports:".concat(e.sort().join(":")),type:r.k.POST,data:{jobIds:e}}},getJobSummary:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/summary"),key:"job:summary:".concat(e)}}}}}]);
2
+ //# sourceMappingURL=2888-1340a429ad-lite.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts/2888-cf6214a94f-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/search/components/search-filters/PartialSearchFilters.tsx","file:///app/packages/libs/shared/src/constants/DragOverlayStyles.ts","file:///app/packages/libs/shared/src/components/table/TableUtils.ts","file:///app/packages/libs/shared/src/components/table/table.scss","file:///app/packages/libs/shared/src/components/table/Table.tsx","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/hooks/useBulkCheckboxManager.ts","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/partial-loading/partial-user-audit-log.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/partial-loading/PartialAuditLogTable.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/partial-loading/PartialUserAuditLog.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/components/audit-log-filters/UserAuditLogFilters.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/components/audit-log-table/user-audit-log-table.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/components/audit-log-table/UserAuditLogTableUtils.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/components/audit-log-table/UserAuditLogTable.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/empty-state/UserAuditLogEmptyState.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/user-audit-log.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/UserAuditLog.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/audit-log/UserAuditLogView.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/JobRequests.ts"],"sourcesContent":["import * as React from 'react';\n\nimport styles from './search-filters.scss';\n\ninterface PartialSearchFiltersProps {\n count?: number;\n}\n\nexport function PartialSearchFilters({ count = 6 }: PartialSearchFiltersProps): JSX.Element {\n return (\n <div className='d-flex'>\n <div className='d-flex ps-1'>\n {Array(count).fill(null).map((item, index) => (\n <div key={index} className={`${styles.partialButton} partial-loading-background mx-1`} />\n ))}\n </div>\n </div>\n );\n}","export const DragOverlayStyles = { opacity: '0.8', cursor: 'grabbing' };","import React from 'react';\nimport { PluginHook, useBlockLayout, useFilters, useFlexLayout, useGlobalFilter, useRowSelect, useSortBy } from 'react-table';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\ninterface PluginOptions {\n allowFiltering?: boolean;\n allowGlobalFiltering?: boolean;\n layout?: 'flex' | 'block';\n}\n\nexport function getPlugins<T extends HashObject>(props: PluginOptions): PluginHook<T>[] {\n let plugins: PluginHook<T>[] = [\n useSortBy,\n useRowSelect,\n props.layout === 'flex' ? useFlexLayout : useBlockLayout\n ];\n\n if (props.allowFiltering)\n plugins = [\n ...plugins,\n useFilters\n ];\n\n if (props.allowGlobalFiltering)\n plugins = [\n ...plugins,\n useGlobalFilter\n ];\n\n return plugins;\n}\n\nexport function getSelectedRowIds(ids: string[]): Record<string, boolean> {\n const idHash: Record<string, boolean> = {};\n\n ids.forEach(id => idHash[id] = true);\n\n return idHash;\n}\n\ninterface TableScrollState {\n canScrollLeft: boolean;\n canScrollRight: boolean;\n}\n\nfunction calculateScrollState(ref: React.MutableRefObject<HTMLDivElement>): TableScrollState {\n const canScrollLeft = ref.current?.scrollLeft > 0;\n const canScrollRight = (ref.current?.scrollLeft + 1) < ref.current?.scrollWidth - ref.current?.clientWidth;\n\n return { canScrollLeft, canScrollRight };\n}\n\ninterface UseTableScroll {\n ref: (el: HTMLDivElement) => void;\n scrollState: TableScrollState;\n scroll: (scrollBy: number) => void;\n}\n\nexport function useTableScroll(): UseTableScroll {\n const elRef = React.useRef<HTMLDivElement>(null);\n const [ scrollState, setScrollState ] = React.useState<TableScrollState>(calculateScrollState(elRef));\n\n function onScroll(): void {\n setScrollState(calculateScrollState(elRef));\n }\n\n function scroll(scrollBy: number): void {\n elRef.current?.scrollBy({ left: scrollBy, top: 0, behavior: 'smooth' });\n }\n\n const throttledOnScroll = FunctionHelper.throttle(onScroll, 200);\n\n const ref = React.useCallback((el: HTMLDivElement) => {\n if (elRef.current) {\n elRef.current?.removeEventListener('scroll', throttledOnScroll);\n }\n\n if (el) {\n setScrollState(calculateScrollState(elRef));\n el.addEventListener('scroll', throttledOnScroll);\n }\n\n elRef.current = el;\n }, []);\n\n React.useEffect(() => {\n if (elRef?.current) {\n setScrollState(calculateScrollState(elRef));\n }\n }, [elRef]);\n\n return { ref, scrollState, scroll };\n}","// extracted by mini-css-extract-plugin\nexport default {\"sortIndicator\":\"gFhu0\",\"scrollContainer\":\"sWUp9\",\"scrollbarTrack\":\"Vn2qM\"};","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\nimport {\n Cell,\n Column as BaseColumn,\n HeaderGroup,\n HeaderProps as BaseHeaderProps,\n IdType,\n Row,\n SortingRule,\n TableOptions,\n TableRowProps,\n useTable } from 'react-table';\nimport { DragEndEvent } from '@dnd-kit/core';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SortableContainerWrapper } from 'libs/shared/components/sortable/SortableContainerWrapper';\nimport { PropsWithSortableItemProps, SortableItemWrapper } from 'libs/shared/components/sortable/SortableItemWrapper';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { WidgetButton, WidgetButtonDirection } from 'libs/shared/components/widgets/widget-button/WidgetButton';\nimport { DragOverlayStyles } from 'libs/shared/constants/DragOverlayStyles';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { getPlugins, getSelectedRowIds, useTableScroll } from './TableUtils';\n\nimport styles from './table.scss';\n\nexport interface TableTheme {\n table?: string;\n header?: string;\n headerRow?: string;\n headerCell?: string;\n body?: string;\n row?: string | ((row: Row<any>) => string);\n selectedRow?: string;\n cell?: string | ((row?: Row<any>, cell?: Cell<any, any>) => string);\n sortIndicator?: string;\n}\n\nexport type HeaderProps<T extends HashObject> = BaseHeaderProps<T> & {\n renderSortIndicator: () => void;\n}\n\nexport type Column<T extends HashObject> = BaseColumn<T> & {\n hideSortIndicator?: boolean;\n}\n\ninterface SortIndicatorProps<T extends HashObject> {\n column: HeaderGroup<T>;\n theme?: TableTheme;\n}\n\nfunction SortIndicator<T extends HashObject>(props: SortIndicatorProps<T>): JSX.Element {\n if (!props.column.canSort)\n return <></>;\n\n return (\n <span\n className={\n `${styles.sortIndicator}\n ${!props.column.isSorted ? 'text-secondary' : ''}\n ${props.theme?.sortIndicator ?? ''}`\n }\n >\n <SvgContainer\n svgName={(props.column.isSortedDesc || !props.column.isSorted)\n ? cvSvgLibrary.ArrowRight\n : cvSvgLibrary.ArrowLeft\n }\n size={SvgContainerSize.Small}\n />\n </span>\n );\n}\n\ninterface BaseTableProps<T extends HashObject> {\n /**\n * Must be memoized.\n */\n data: T[];\n\n /**\n * Must be memoized.\n * \n * For documentation on Column Options, see https://react-table.tanstack.com/docs/api/useTable#column-options\n */\n columns: Column<T>[];\n\n theme?: TableTheme;\n\n onSelectRow?: (row: Row<T>) => void;\n\n onSelectCell?: (cell: Cell<T>) => void;\n\n onRowMouseOver?: (row: Row<T>) => void;\n\n onRowMouseLeave?: (row: Row<T>) => void;\n\n allowSelectMultipleRows?: boolean;\n\n initialSelectedRowIds?: string[];\n\n getRowId?: (row: T) => string;\n\n getRowAppLink?: (row: Row<T>) => Core.AppLink;\n\n enableSort?: boolean;\n\n manualSort?: boolean;\n\n onSort?: (sortingRule: SortingRule<T>[]) => void;\n \n // Opt-in to utilise react-table's useFilter hook.\n allowFiltering?: boolean;\n\n // Opt-in to utilise react-table's useGlobalFilter hook.\n allowGlobalFiltering?: boolean;\n\n // Use either a flex layout or a block layout. Default is flex.\n layout?: 'flex' | 'block';\n\n // Used by useGlobalFilter hook, needs to be enabled by prop above.\n globalFilter?: string;\n\n // Set initial state of hidden columns in react-table.\n hiddenColumns?: IdType<T>[];\n\n // Determine whether hidden columns should be preserved on a table update event.\n autoResetHiddenColumns?: boolean;\n\n // Determine whether sort order state should be preserved on a table update event.\n autoResetSortBy?: boolean;\n\n // Determine whether rows are sortable by drag and drop\n enableSortableRows?: boolean;\n\n onSortingRowsEnd?: (event: DragEndEvent) => void;\n\n // Set initial state of sorting in react-table\n initialSortBy?: SortingRule<T>[];\n}\n \ntype SortableRowProps = PropsWithSortableItemProps<TableRowProps>;\n\nfunction BaseTable<T extends HashObject>(props: BaseTableProps<T>): JSX.Element {\n const tableOptions: TableOptions<T> = {\n columns: props.columns,\n data: props.data,\n disableSortBy: !props.enableSort,\n manualSortBy: props.manualSort,\n autoResetHiddenColumns: props.autoResetHiddenColumns,\n autoResetSortBy: props.autoResetSortBy,\n initialState: {\n sortBy: props.initialSortBy || []\n }\n };\n\n if (props.initialSelectedRowIds)\n tableOptions.initialState = { selectedRowIds: getSelectedRowIds(props.initialSelectedRowIds) };\n\n if (props.getRowId)\n tableOptions.getRowId = props.getRowId;\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n toggleAllRowsSelected,\n setGlobalFilter,\n setHiddenColumns,\n state: { sortBy }\n } = useTable<T>(tableOptions, ...getPlugins<T>({ ...props }));\n\n function getTableRowsClass(row: Row<T>) {\n let className = FunctionHelper.isFunction(props.theme?.row)\n ? props.theme.row(row)\n : props.theme?.row ?? '';\n\n if (row.isSelected && props.theme?.selectedRow)\n className += ` ${props.theme?.selectedRow}`;\n\n if (props.onSelectRow)\n className += ' cursor-pointer';\n\n if (props.enableSortableRows)\n className += ' cursor-grab';\n\n return className;\n }\n\n function renderTableRows(): JSX.Element[] {\n return rows.map(row => {\n prepareRow(row);\n \n const className = getTableRowsClass(row);\n const rowAppLink = !!props.getRowAppLink && props.getRowAppLink(row);\n\n function onClickRow(): void {\n if (!props.onSelectRow)\n return;\n\n if (!props.allowSelectMultipleRows)\n toggleAllRowsSelected(false);\n \n props.onSelectRow(row);\n row.toggleRowSelected(true);\n }\n\n function getSortableProps(props: TableRowProps | PropsWithSortableItemProps<TableRowProps>, ref?: any) {\n if ('dragAttributes' in props && 'dragListeners' in props) {\n return {\n ...props.dragAttributes,\n ...props.dragListeners,\n 'aria-roledescription': 'Sortable row',\n ref\n };\n }\n\n return {};\n }\n\n function renderRow(props: TableRowProps | PropsWithSortableItemProps<TableRowProps>, ref?: any): JSX.Element {\n const sortableProps = getSortableProps(props, ref);\n\n if (rowAppLink) {\n return (\n <div\n role='row'\n key={row.id}\n >\n <AppLink\n {...props}\n {...sortableProps}\n className={className}\n appLink={rowAppLink}\n >\n {renderCells(row)}\n </AppLink>\n </div>\n );\n }\n\n return (\n <div\n {...props}\n {...sortableProps}\n key={row.id}\n role='row'\n className={className}\n onClick={onClickRow}\n >\n {renderCells(row)}\n </div>\n );\n }\n\n const rowProps = row.getRowProps();\n\n if (props.enableSortableRows) {\n return (\n <SortableItemWrapper\n id={row.original.id}\n key={row.id}\n childProps={rowProps}\n childComponent={React.forwardRef(\n (props: SortableRowProps, ref: React.LegacyRef<HTMLDivElement>) => (renderRow(props, ref))\n )}\n />\n );\n }\n\n return renderRow(rowProps);\n });\n }\n\n function getDragOverlayClassName(theme: TableTheme): string {\n let className = 'g-0 ';\n\n if (theme)\n className += theme.row;\n\n return className;\n }\n\n function getDragOverlay(id: string) {\n const rowIndex = rows.findIndex(item => item.original.id === id);\n const row = rows[rowIndex];\n \n return (\n <div\n {...props}\n className={getDragOverlayClassName(props.theme)}\n style={DragOverlayStyles}\n >\n {renderCells(row)}\n </div>\n );\n }\n\n function getCellClassName(row: Row<T>, cell: Cell<T>): string {\n let cellClassName = '';\n\n if (typeof props.theme?.cell === 'function')\n cellClassName = props.theme.cell(row, cell);\n\n if (typeof props.theme?.cell === 'string')\n cellClassName = props.theme.cell;\n\n if (props.onSelectCell)\n cellClassName += ' cursor-pointer';\n\n return cellClassName;\n }\n\n function renderCells(row: Row<T>): JSX.Element[] {\n return row.cells.map(cell => {\n const cellClassName = getCellClassName(row, cell);\n\n function onClickCell(): void {\n props.onSelectCell && props.onSelectCell(cell);\n }\n\n return (\n <div key={cell.column.id} {...cell.getCellProps()} className={cellClassName} onClick={onClickCell} >\n {cell.render('Cell')}\n </div>\n );\n });\n }\n\n React.useEffect(() => {\n if (!props.onSort)\n return;\n\n props.onSort(sortBy);\n }, [sortBy]);\n\n React.useEffect(() => {\n if (!props.globalFilter)\n return;\n\n setGlobalFilter(props.globalFilter);\n }, [props.globalFilter]);\n\n React.useEffect(() => {\n if (!props.hiddenColumns)\n return;\n\n setHiddenColumns(props.hiddenColumns);\n }, [props.hiddenColumns && props.hiddenColumns.length]);\n\n return (\n <div {...getTableProps()} className={props.theme?.table ?? ''}>\n <div className={props.theme?.header ?? ''}>\n {headerGroups.map(headerGroup => (\n <div {...headerGroup.getHeaderGroupProps()} className={props.theme?.headerRow ?? ''}>\n {headerGroup.headers.map(column => (\n <div {...column.getHeaderProps(column.getSortByToggleProps())} className={props.theme?.headerCell ?? ''}>\n {column.render('Header', { renderSortIndicator: () => <SortIndicator column={column} theme={props.theme} /> })}\n {!(column as Column<T>).hideSortIndicator &&\n <SortIndicator column={column} theme={props.theme} />\n }\n </div>\n ))}\n </div>\n ))}\n </div>\n <div {...getTableBodyProps()} className={props.theme?.body ?? ''}>\n { props.enableSortableRows ? (\n <SortableContainerWrapper\n ids={rows.map(row => row.original.id)}\n getDragOverlay={getDragOverlay}\n onSortEnd={props.onSortingRowsEnd}\n >\n {renderTableRows()}\n </SortableContainerWrapper>\n ) : (\n renderTableRows()\n )}\n </div>\n </div>\n );\n}\n\ninterface TableProps<T extends HashObject> extends BaseTableProps<T> {\n enableSlider?: boolean;\n scrollIncrement?: number;\n scrollContainerClassName?: string;\n scrollable?: boolean;\n initialSortBy?: SortingRule<T>[];\n}\n\nTable.defaultProps = {\n scrollIncrement: 250,\n scrollable: false,\n layout: 'flex'\n};\n\nexport function Table<T extends HashObject>(props: TableProps<T>): JSX.Element {\n const { enableSlider, scrollIncrement, scrollable, ...tableProps } = props;\n\n const { ref, scrollState, scroll } = useTableScroll();\n\n if (scrollable) {\n return (\n <Scrollbars\n renderTrackHorizontal={() => <div className={styles.scrollbarTrack} />}\n autoHeightMax={10000}\n autoHeight\n >\n <BaseTable {...tableProps} />\n </Scrollbars>\n );\n }\n\n if (!enableSlider)\n return <BaseTable {...tableProps} />;\n\n function onClickScroll(direction: 'left' | 'right'): void {\n scroll(scrollIncrement * (direction === 'right' ? 1 : -1));\n }\n\n return (\n <div className='mx-n4 overflow-x-hidden overflow-y-hidden'>\n <div className='px-4'>\n <div className='position-relative'>\n <WidgetButton\n direction={WidgetButtonDirection.Left}\n onClick={() => onClickScroll('left')}\n hide={!scrollState.canScrollLeft}\n />\n <div className={`${styles.scrollContainer} ${props.scrollContainerClassName}`} ref={ref}>\n <BaseTable {...tableProps } />\n </div>\n <WidgetButton\n direction={WidgetButtonDirection.Right}\n onClick={() => onClickScroll('right')}\n hide={!scrollState.canScrollRight}\n />\n </div>\n </div>\n </div>\n );\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { useForceUpdate } from 'libs/shared/hooks/useForceUpdate';\nimport { usePrevious } from 'libs/shared/hooks/usePrevious';\n\ntype CheckboxItemsState = Map<string, boolean>;\n\nexport interface BulkCheckboxManager {\n onToggleBulk: () => void;\n onToggleItem: (id: string) => void;\n getSelected: () => string[];\n isChecked: (item: string | number | HashObject<string>) => boolean;\n bulkChecked: boolean;\n deselectAll: () => void;\n hasSomeSelections: () => boolean;\n setSelected: (ids: string[]) => void;\n getSelectedCount: () => number;\n reset: () => void;\n getMap: () => Map<string, boolean>;\n}\n\nexport interface BulkCheckboxManagerOptions {\n idField?: string; // For objects like `PresentationAudiences` that don't use `id` as their identifier field\n persistNamespace?: string;\n preselectedIds?: string[];\n initialState?: CheckboxItemsState;\n}\n\n/**\n * @param collection - The collection you are keeping track of with checkboxes\n * @param options - See interface above\n */\nexport const useBulkCheckboxManager = (collection: HashObject[], options: BulkCheckboxManagerOptions = {}) => {\n const { idField = 'id', persistNamespace } = options;\n\n const initial = options.initialState ? options.initialState : new Map<string, boolean>();\n\n const items = React.useRef<CheckboxItemsState>(initial);\n \n const forceUpdate = useForceUpdate();\n\n const prevCollection = usePrevious(collection);\n const prevNamespace = usePrevious(persistNamespace);\n\n /**\n * This hook will clear the state of this hook when a user navigates between pages\n * if a persistNamespace was not provided\n */\n React.useEffect(() => {\n /**\n * If we're being passed initial state, we don't want to clear the state\n */\n if (options.initialState)\n return;\n\n /**\n * If we've been given a persist namespace, we don't want to clear our\n * selections while the namespace stays the same\n */\n if (persistNamespace && prevNamespace === persistNamespace)\n return;\n\n /**\n * Don't reinitialize if the ids of the new and old collection\n * are identical\n */\n const prevIds = prevCollection?.map(i => i[idField]).join();\n const ids = collection?.map(i => i[idField]).join();\n\n if (prevIds === ids)\n return;\n\n reset();\n }, [ prevCollection, prevNamespace, collection, options.initialState ]);\n\n React.useEffect(() => {\n if (!options.preselectedIds?.length)\n return;\n\n setSelected(options.preselectedIds);\n }, []);\n\n function reset(): void {\n items.current.clear();\n forceUpdate();\n }\n\n // When toggled on, all checkbox items will be enabled. Vice versa if toggled off\n function onToggleBulk(): void {\n const setValue = !isBulkChecked();\n\n collection.forEach(item => {\n if (setValue)\n items.current.set(item[idField].toString(), true);\n else\n items.current.delete(item[idField].toString());\n });\n\n forceUpdate();\n }\n\n // Toggles a single item\n function onToggleItem(id: string): void {\n const nextItemState = !items.current.get(id.toString());\n\n if (nextItemState)\n items.current.set(id.toString(), nextItemState);\n else\n items.current.delete(id.toString());\n \n forceUpdate();\n }\n\n // Returns the state of the item passed in\n function isChecked(item: string | number | HashObject<string>): boolean {\n if (typeof item === 'number')\n item = item.toString();\n else if (typeof item !== 'string')\n item = item[idField].toString();\n\n return items.current.get(item);\n }\n\n function getSelected(): string[] {\n return Array.from(items.current.keys());\n }\n\n function deselectAll(): void {\n if (!collection?.length) return;\n\n collection.forEach(item => {\n items.current.delete(item[idField].toString());\n });\n forceUpdate();\n }\n\n // Returns true if at least 1 item is checked\n function hasSomeSelections(): boolean {\n if (!collection?.length)\n return false;\n\n return !!collection.find(item => isChecked(item));\n }\n\n function isBulkChecked(): boolean {\n if (!collection?.length)\n return false;\n\n return collection.every(isChecked);\n }\n\n function setSelected(ids: string[]): void {\n ids.forEach(id => {\n items.current.set(id, true);\n });\n forceUpdate();\n }\n\n function getSelectedCount(): number {\n return items.current.size;\n }\n\n function getMap(): Map<string, boolean> {\n return items.current;\n }\n\n return {\n onToggleBulk,\n onToggleItem,\n getSelected,\n isChecked,\n bulkChecked: isBulkChecked(),\n deselectAll,\n hasSomeSelections,\n setSelected,\n getSelectedCount,\n reset,\n getMap\n };\n};","// extracted by mini-css-extract-plugin\nexport default {\"partialHeading\":\"rfiJl\",\"partialJobCount\":\"h8k_u\",\"partialCheckbox\":\"HkuOS\",\"partialExportButton\":\"Iul7S\",\"row\":\"mwigG\",\"checkboxColumn\":\"Z5jLG\",\"actionColumn\":\"rLxYh\",\"usersColumn\":\"QZzab\",\"dateColumn\":\"Wf_Jp\",\"performedByColumn\":\"Ubtmj\",\"seeMoreColumn\":\"XdP6u\",\"heading\":\"kRMMH\",\"action\":\"DvDvW\",\"users\":\"goKpg\",\"date\":\"ejYGb\",\"performedBy\":\"NhjyL\"};","import React from 'react';\n\nimport styles from './partial-user-audit-log.scss';\n\nfunction PartialRow(): JSX.Element {\n return (\n <div className={`d-flex striped-row rounded py-3 ${styles.row}`}>\n <div className={`${styles.checkboxColumn} d-flex justify-content-center`}>\n <div className={`partial-loading-background ${styles.partialCheckbox} ms-0`} />\n </div>\n <div className={`${styles.actionColumn}`}>\n <div className={`partial-loading-background ${styles.action}`} />\n </div>\n <div className={`${styles.usersColumn}`}>\n <div className={`partial-loading-background ${styles.users}`} />\n </div>\n <div className={`${styles.dateColumn}`}>\n <div className={`partial-loading-background ${styles.date}`} />\n </div>\n <div className={`${styles.performedByColumn}`}>\n <div className={`partial-loading-background ${styles.performedBy}`} />\n </div>\n <div className={`${styles.seeMoreColumn}`}>\n &nbsp;\n </div>\n </div>\n );\n}\n\nfunction PartialHeader(): JSX.Element {\n return (\n <div className='d-flex py-2 mb-1'>\n <div className={`${styles.checkboxColumn}`}>\n &nbsp;\n </div>\n <div className={`${styles.actionColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.usersColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.dateColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.performedByColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.seeMoreColumn}`}>\n &nbsp;\n </div>\n </div>\n );\n}\n\nexport function PartialAuditLogTable(): JSX.Element {\n return (\n <>\n <div className='mb-3 mt-n1'>\n <PartialHeader />\n\n <div className='striped-list no-full-width'>\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n </div>\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { PartialSearchFilters } from 'libs/shared/apps/search/components/search-filters/PartialSearchFilters';\nimport { PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\n\nimport { PartialAuditLogTable } from './PartialAuditLogTable';\n\nimport styles from './partial-user-audit-log.scss';\n\nexport function PartialUserAuditLog(): JSX.Element {\n return (\n <>\n <div className={`partial-loading-background mb-2 ${styles.partialHeading}`} />\n\n <div className='pb-3'>\n <div className='d-flex justify-content-between'>\n <PartialBreadcrumbs />\n\n <div className={`partial-loading-background ${styles.partialJobCount}`} />\n </div>\n </div>\n\n <div className='d-flex align-items-center pb-2'>\n <div className={`partial-loading-background ${styles.partialCheckbox}`} />\n\n <div className='ms-4 ps-3'>\n <PartialSearchFilters count={3} />\n </div>\n\n <div className={`ms-auto partial-loading-background ${styles.partialExportButton}`} />\n </div>\n\n <PartialAuditLogTable />\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { SearchFilters } from 'libs/shared/apps/search/components/search-filters/SearchFilters';\nimport { FilterOption, SearchFilter } from 'libs/shared/apps/search/interfaces';\nimport { Filters } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nconst namespace = 'userManager.userAuditLogFilters';\n\nfunction getSortOptions(): FilterOption[] {\n return [{\n id: 'newest',\n name: LanguageService.getPhrase(namespace, 'newest'),\n default: true\n },\n {\n id: 'oldest',\n name: LanguageService.getPhrase(namespace, 'oldest')\n }];\n}\n\nexport interface UserAuditLogQueryParams {\n cursor: string;\n userType: UserGroup | UserGroup[];\n bulkActionType: BatchJobType | BatchJobType[];\n sort: 'newest' | 'oldest';\n}\n\ninterface UserAuditLogFiltersProps {\n queryParams: UserAuditLogQueryParams;\n appLinks: UserManagerAppLinks;\n}\n\nexport function UserAuditLogFilters(props: UserAuditLogFiltersProps): JSX.Element {\n const filters: SearchFilter<any>[] = [\n Filters.SortBy(getSortOptions()),\n Filters.BulkActionType(),\n Filters.UserType()\n ];\n\n return (\n <SearchFilters\n queryParams={props.queryParams}\n mainFilters={filters}\n appLink={props.appLinks.auditLog}\n analyticsOptions={{\n entity: EntityType.BatchJob,\n location: LocationContext.UserAuditLog\n }}\n hideHeading\n hideDivider\n constantIndices={[]}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"seeMore\":\"uymuO\"};","import React from 'react';\nimport { CellProps, Column } from 'react-table';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { ClickViewAvatar } from 'libs/shared/components/clickview-avatar/ClickViewAvatar';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { SvgContainer2 } from 'libs/shared/components/svg-container/SvgContainer2';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { BatchJob } from 'libs/shared/interfaces';\n\nimport styles from './user-audit-log-table.scss';\n\nconst namespace = 'userManager.userAuditLogTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface UserAuditLogTableData {\n id: string;\n checked: boolean;\n actionType: string;\n userType: string;\n date: string;\n performedBy: {\n name: string;\n submittedByClickView: boolean;\n };\n}\n\nexport function getColumns(\n summaryAppLink: Core.AppLink,\n onToggleCheckbox: (id: string) => void\n): Column<UserAuditLogTableData>[] {\n const columns: Column<UserAuditLogTableData>[] = [\n {\n Header: '',\n id: 'checkboxes',\n accessor: (data: UserAuditLogTableData) => ({ id: data.id, checked: data.checked }),\n Cell: (cell: CellProps<UserAuditLogTableData, { id: string; checked: boolean; }>) => (\n <div className='text-center mx-auto'>\n <Checkbox\n id={cell.value.id}\n checked={cell.value.checked}\n onChange={() => onToggleCheckbox(cell.value.id)}\n />\n </div>\n ),\n width: 10\n },\n {\n Header: getPhrase('action'),\n accessor: 'actionType',\n id: 'actionType',\n Cell: ({ value }) => (\n <div className='w-100'>\n {value}\n </div>\n ),\n width: 20\n },\n {\n Header: getPhrase('users'),\n accessor: 'userType',\n id: 'userType',\n Cell: ({ value }) => {\n const getValue = () => {\n switch (value) {\n case UserGroup.Learner:\n return getPhrase('students');\n case UserGroup.Staff:\n return getPhrase('staff');\n case UserGroup.Unknown:\n default:\n return getPhrase('unknown');\n }\n };\n\n return (\n <div className='w-100'>\n {getValue()}\n </div>\n );\n },\n width: 10\n },\n {\n Header: getPhrase('date'),\n accessor: 'date',\n id: 'date',\n Cell: ({ value }) => (\n <div className='w-100'>\n {value}\n </div>\n ),\n width: 20\n },\n {\n Header: getPhrase('performedBy'),\n accessor: 'performedBy',\n id: 'performedBy',\n Cell: (cell: CellProps<any, { name: string; submittedByClickView: boolean; }>) => (\n <div className='w-100 d-flex align-items-center'>\n {cell.value.submittedByClickView && (\n <SvgContainer2 className='me-1' size={SvgContainerSize.Small}>\n <ClickViewAvatar />\n </SvgContainer2>\n )}\n {cell.value.name}\n </div>\n ),\n width: 20\n },\n {\n Header: '',\n accessor: 'id',\n id: 'seeMore',\n Cell: ({ value }) => (\n <div className='w-100 d-flex justify-content-end'>\n <AppLink\n className={`info-link text-end me-3 ms-auto ${styles.seeMore}`}\n appLink={{\n ...summaryAppLink,\n args: summaryAppLink.args?.length ? [ ...summaryAppLink.args, value ] : [value]\n }}\n >\n <Text namespace={namespace} phrase='seeMore' />\n </AppLink>\n </div>\n ),\n width: 30\n }\n ];\n\n return columns;\n}\n\nexport function useGetData(jobs: BatchJob[], isChecked: (id: string) => boolean): UserAuditLogTableData[] {\n return jobs.map(job => {\n const formattedDate = DateHelper.format(job.dateCreated, 'DD/MM/YYYY, hh:mmA');\n\n return {\n id: job.id,\n checked: isChecked(job.id),\n actionType: BulkUserActionsHelper.mapJobTypeToName(job.type),\n userType: BulkUserActionsHelper.mapDataTypeToUserType(job.dataType),\n date: formattedDate,\n performedBy: {\n name: job.submitterName,\n submittedByClickView: job.submittedByClickView\n }\n };\n });\n}","import React from 'react';\n\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { Table, TableTheme } from 'libs/shared/components/table/Table';\nimport { BatchJobCollection } from 'libs/shared/interfaces';\n\nimport { getColumns, useGetData } from './UserAuditLogTableUtils';\n\nconst TABLE_THEME: TableTheme = {\n table: 'striped-list no-full-width pb-3',\n header: 'fw-semibold pb-1',\n headerCell: 'px-2 py-1',\n row: 'striped-row rounded audit-log-row',\n cell: 'd-flex align-items-center py-3 px-2'\n};\n\ninterface UserAuditLogTableProps {\n jobs: BatchJobCollection;\n appLinks: UserManagerAppLinks;\n onToggleCheckbox: (id: string) => void;\n isChecked: (id: string) => boolean;\n}\n\nexport function UserAuditLogTable(props: UserAuditLogTableProps): JSX.Element {\n const data = useGetData(props.jobs.data, props.isChecked);\n\n return (\n <Table\n columns={getColumns(props.appLinks.bulkActionSummary, props.onToggleCheckbox)}\n data={data}\n theme={TABLE_THEME}\n />\n );\n}","import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'userManager.auditLogEmptyState';\n\ninterface UserAuditLogEmptyStateProps {\n imageUrl: string;\n}\n\nexport function UserAuditLogEmptyState(props: UserAuditLogEmptyStateProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n </EmptyState>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"bulkCheckbox\":\"NMw5T\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\n\nimport { UserManagerConstants } from 'libs/shared/apps/user-manager/constants/UserManagerConstants';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { BatchJobCollection } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { UserAuditLogFilters, UserAuditLogQueryParams } from './components/audit-log-filters/UserAuditLogFilters';\nimport { UserAuditLogTable } from './components/audit-log-table/UserAuditLogTable';\nimport { UserAuditLogEmptyState } from './empty-state/UserAuditLogEmptyState';\n\nimport styles from './user-audit-log.scss';\n\nconst namespace = 'userManager.auditLog';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface UserAuditLogProps {\n jobs: BatchJobCollection;\n appLinks: UserManagerAppLinks;\n queryParams: UserAuditLogQueryParams;\n onClickExport: (ids: string[]) => Promise<void>;\n emptyStateImageUrl: string;\n}\n\nexport function UserAuditLog(props: UserAuditLogProps): JSX.Element {\n const referrer: UserGroup = LocalStorageHelper.get(UserManagerConstants.AUDIT_LOG_REFERRER_KEY);\n\n const [ showExportSpinner, setShowExportSpinner ] = React.useState(false);\n\n const CheckboxHelper = useBulkCheckboxManager(props.jobs.data);\n const alerts = useAlerts();\n\n function onClickExport(): void {\n if (showExportSpinner)\n return;\n\n setShowExportSpinner(true);\n\n const selectedIds = CheckboxHelper.getSelected();\n\n props.onClickExport(selectedIds)\n .then(() => alerts.success(getPhrase('exportSuccess')))\n .catch(() => alerts.error(getPhrase('exportError')))\n .finally(() => setShowExportSpinner(false));\n }\n\n return (\n <>\n <h1 className='h2'><Text namespace={namespace} phrase='heading' /></h1>\n\n <div className='pb-3'>\n <div className='d-flex justify-content-between'>\n <Breadcrumbs\n breadcrumbs={[\n { name: getPhrase('settingsBreadcrumb'), appLink: props.appLinks.settings },\n { name: getPhrase(referrer === UserGroup.Learner ? 'studentManager' : 'staffManager'), appLink: props.appLinks.userManager },\n { name: getPhrase('heading'), active: true }\n ]}\n />\n\n <p className='mb-0 fw-semibold'>\n <Text\n namespace={namespace}\n phrase='totalJobs'\n options={{ showing: props.jobs.data.length, smartCount: props.jobs.count }}\n />\n </p>\n </div>\n </div>\n\n <div className='d-flex align-items-center pb-2'>\n <Checkbox\n className={styles.bulkCheckbox}\n id='bulk-audit-log-checkbox'\n checked={CheckboxHelper.bulkChecked}\n onChange={CheckboxHelper.onToggleBulk}\n indeterminate={CheckboxHelper.hasSomeSelections()}\n />\n\n <div className='ms-4 ps-1'>\n <UserAuditLogFilters queryParams={props.queryParams} appLinks={props.appLinks} />\n </div>\n\n <SpinnerButton\n variant='dark'\n className='ms-auto'\n onClick={onClickExport}\n disabled={!CheckboxHelper.hasSomeSelections() || showExportSpinner}\n showSpinner={showExportSpinner}\n >\n <Text namespace={namespace} phrase='export' />\n </SpinnerButton>\n </div>\n\n {props.jobs.data?.length ? (\n <UserAuditLogTable\n jobs={props.jobs}\n appLinks={props.appLinks}\n onToggleCheckbox={CheckboxHelper.onToggleItem}\n isChecked={CheckboxHelper.isChecked}\n />\n ) : (\n <UserAuditLogEmptyState imageUrl={props.emptyStateImageUrl} />\n )}\n\n {!!props.jobs.pagination?.cursors && (\n <Pagination\n className='p-0 text-end pb-3'\n cursors={props.jobs.pagination.cursors}\n appLink={ContextService.getCurrentRoute().appLink}\n buttonVariant='outline-dark'\n />\n )}\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { UserAuditLogQueryParams } from 'libs/shared/apps/user-manager/components/audit-log/components/audit-log-filters/UserAuditLogFilters';\nimport { PartialUserAuditLog } from 'libs/shared/apps/user-manager/components/audit-log/partial-loading/PartialUserAuditLog';\nimport { UserAuditLog } from 'libs/shared/apps/user-manager/components/audit-log/UserAuditLog';\nimport { UserManagerConstants } from 'libs/shared/apps/user-manager/constants/UserManagerConstants';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { BatchJobCollection } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\n\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nconst namespace = 'userManager.userAuditLogView';\n\ninterface UserAuditLogViewProps {\n queryParams: UserAuditLogQueryParams;\n}\n\nexport function UserAuditLogView(props: UserAuditLogViewProps): JSX.Element {\n const referrer: UserGroup = LocalStorageHelper.get(UserManagerConstants.AUDIT_LOG_REFERRER_KEY);\n\n const jobs = Flight.useBasicFetch<BatchJobCollection>(JobRequests.getJobs(props.queryParams));\n \n useHandleObjectError(jobs);\n useSetPageMetadata({ title: LanguageService.getPhrase(namespace, 'pageTitle') });\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n const appLinks = getUserManagerAppLinks(referrer);\n\n function onClickExport(jobIds: string[]): Promise<void> {\n return fetchAsync<void>(JobRequests.sendJobReports(jobIds));\n }\n\n if (!jobs.hasCompleted)\n return <div className='px-3'><PartialUserAuditLog /></div>;\n\n return (\n <div className='px-3'>\n <UserAuditLog\n jobs={jobs.data}\n appLinks={appLinks}\n queryParams={props.queryParams}\n onClickExport={onClickExport}\n emptyStateImageUrl={ImageUrls.EmptyStates.Search.RESULTS}\n />\n </div>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { UserAuditLogQueryParams } from 'libs/shared/apps/user-manager/components/audit-log/components/audit-log-filters/UserAuditLogFilters';\nimport { SUPPORTED_BATCH_JOB_TYPES } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { BatchJobResultStatus } from 'libs/shared/enums/BatchJobResultStatus';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { BaseObject, BatchJob, BatchJobProgress, BatchJobResultsResponse, CreateBatchJobRequest } from 'libs/shared/interfaces';\n\nexport const JobRequests = {\n createJob(\n data: CreateBatchJobRequest,\n success?: (job: BatchJob) => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/batch/jobs',\n key: 'create:job',\n type: HttpVerbs.POST,\n data,\n success,\n error\n };\n },\n\n getJobs(queryParams: UserAuditLogQueryParams): Flight.Request {\n const params: HashObject = {};\n\n let bulkActionTypes: BatchJobType[] = [];\n let userTypes: UserGroup[] = [];\n\n if (queryParams.cursor)\n params.cursor = queryParams.cursor;\n\n if (queryParams.sort) {\n if (queryParams.sort === 'oldest')\n params.order = 'ASC';\n else\n params.order = 'DESC';\n }\n\n if (queryParams.bulkActionType) {\n bulkActionTypes = Array.isArray(queryParams.bulkActionType)\n ? queryParams.bulkActionType\n : [queryParams.bulkActionType];\n\n params.type = bulkActionTypes;\n } else {\n // only show supported type in the table by default\n params.type = SUPPORTED_BATCH_JOB_TYPES;\n }\n\n if (queryParams.userType) {\n userTypes = Array.isArray(queryParams.userType)\n ? queryParams.userType\n : [queryParams.userType];\n\n params.dataType = userTypes;\n }\n \n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/batch/jobs', params),\n key: `batch:jobs:${queryParams.cursor}:${queryParams.sort}:${bulkActionTypes.sort().join(':')}:${userTypes.sort().join(':')}`\n };\n },\n\n getJob(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}`,\n key: `job:${id}`\n };\n },\n\n getJobProgress(\n id: string,\n success?: (progress: BatchJobProgress) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/progress`,\n key: `job:${id}:progress`,\n invalidationKeys: `job:${id}:progress`,\n success,\n error\n };\n },\n\n getJobResults<TObject extends BaseObject>(\n id: string,\n status: BatchJobResultStatus,\n cursor?: string,\n success?: (results: BatchJobResultsResponse<TObject>) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n const params: HashObject = {\n status\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/batch/jobs/${id}/results`, params),\n key: `job:${id}:results:${status}:${cursor}`,\n success,\n error\n };\n },\n\n getYearGroupRolloverStatus(customerId: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/validations/customers/${customerId}/year-group-roll-over`,\n key: 'year:group:rollover:status'\n };\n },\n\n sendJobReports(ids: string[]): Flight.Request {\n return {\n url: '{gateway}/v1/batch/results/export',\n key: `send:job:reports:${ids.sort().join(':')}`,\n type: HttpVerbs.POST,\n data: {\n jobIds: ids\n }\n };\n },\n\n getJobSummary(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/summary`,\n key: `job:summary:${id}`\n };\n }\n};"],"names":["PartialSearchFilters","count","className","Array","fill","map","item","index","key","DragOverlayStyles","opacity","cursor","calculateScrollState","ref","canScrollLeft","current","scrollLeft","canScrollRight","scrollWidth","clientWidth","SortIndicator","props","column","canSort","isSorted","theme","sortIndicator","SvgContainer","svgName","isSortedDesc","size","S","BaseTable","ids","idHash","tableOptions","columns","data","disableSortBy","enableSort","manualSortBy","manualSort","autoResetHiddenColumns","autoResetSortBy","initialState","sortBy","initialSortBy","initialSelectedRowIds","selectedRowIds","forEach","id","getRowId","useTable","plugins","useSortBy","useRowSelect","layout","useFlexLayout","useBlockLayout","allowFiltering","useFilters","allowGlobalFiltering","useGlobalFilter","getPlugins","getTableProps","getTableBodyProps","headerGroups","rows","prepareRow","toggleAllRowsSelected","setGlobalFilter","setHiddenColumns","state","renderTableRows","row","FunctionHelper","isSelected","selectedRow","onSelectRow","enableSortableRows","getTableRowsClass","rowAppLink","getRowAppLink","onClickRow","allowSelectMultipleRows","toggleRowSelected","renderRow","sortableProps","dragAttributes","dragListeners","getSortableProps","role","AppLink","appLink","renderCells","onClick","rowProps","getRowProps","SortableItemWrapper","original","childProps","childComponent","cells","cell","cellClassName","onSelectCell","getCellClassName","getCellProps","render","onSort","globalFilter","hiddenColumns","length","table","header","headerGroup","getHeaderGroupProps","headerRow","headers","getHeaderProps","getSortByToggleProps","headerCell","renderSortIndicator","hideSortIndicator","body","SortableContainerWrapper","getDragOverlay","rowIndex","findIndex","style","onSortEnd","onSortingRowsEnd","Table","enableSlider","scrollIncrement","scrollable","tableProps","elRef","scrollState","setScrollState","throttledOnScroll","el","removeEventListener","addEventListener","scroll","scrollBy","left","top","behavior","useTableScroll","renderTrackHorizontal","autoHeightMax","autoHeight","onClickScroll","direction","WidgetButton","W","hide","scrollContainerClassName","defaultProps","generateCacheKey","flightObjs","obj","statusCode","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","isArray","useEffect","useBulkCheckboxManager","collection","options","idField","persistNamespace","initial","Map","items","forceUpdate","prevCollection","prevNamespace","reset","clear","isChecked","toString","get","isBulkChecked","every","setSelected","set","i","preselectedIds","onToggleBulk","setValue","onToggleItem","nextItemState","getSelected","from","keys","bulkChecked","deselectAll","hasSomeSelections","find","getSelectedCount","getMap","PartialRow","PartialHeader","PartialAuditLogTable","PartialUserAuditLog","namespace","UserAuditLogFilters","filters","name","LanguageService","default","SearchFilters","queryParams","mainFilters","appLinks","auditLog","analyticsOptions","entity","location","hideHeading","hideDivider","constantIndices","getPhrase","TABLE_THEME","UserAuditLogTable","jobs","summaryAppLink","onToggleCheckbox","job","formattedDate","DateHelper","dateCreated","checked","actionType","BulkUserActionsHelper","type","userType","dataType","date","performedBy","submitterName","submittedByClickView","bulkActionSummary","Header","accessor","Cell","Checkbox","value","onChange","width","UserGroup","getValue","SvgContainer2","ClickViewAvatar","args","Text","phrase","UserAuditLogEmptyState","EmptyState","src","imageUrl","UserAuditLog","referrer","LocalStorageHelper","UserManagerConstants","showExportSpinner","setShowExportSpinner","CheckboxHelper","alerts","Breadcrumbs","breadcrumbs","settings","userManager","active","showing","smartCount","indeterminate","SpinnerButton","variant","selectedIds","onClickExport","then","success","error","disabled","showSpinner","emptyStateImageUrl","pagination","cursors","Pagination","ContextService","buttonVariant","UserAuditLogView","JobRequests","useSetPageMetadata","title","fetchAsync","hasCompleted","jobIds","ImageUrls","createJob","url","getJobs","params","bulkActionTypes","userTypes","sort","order","bulkActionType","getJob","getJobProgress","invalidationKeys","getJobResults","status","getYearGroupRolloverStatus","customerId","sendJobReports","getJobSummary"],"sourceRoot":""}
1
+ {"version":3,"file":"scripts/2888-1340a429ad-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/search/components/search-filters/PartialSearchFilters.tsx","file:///app/packages/libs/shared/src/constants/DragOverlayStyles.ts","file:///app/packages/libs/shared/src/components/table/TableUtils.ts","file:///app/packages/libs/shared/src/components/table/table.scss","file:///app/packages/libs/shared/src/components/table/Table.tsx","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/hooks/useBulkCheckboxManager.ts","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/partial-loading/partial-user-audit-log.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/partial-loading/PartialAuditLogTable.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/partial-loading/PartialUserAuditLog.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/components/audit-log-filters/UserAuditLogFilters.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/components/audit-log-table/user-audit-log-table.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/components/audit-log-table/UserAuditLogTableUtils.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/components/audit-log-table/UserAuditLogTable.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/empty-state/UserAuditLogEmptyState.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/user-audit-log.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/audit-log/UserAuditLog.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/audit-log/UserAuditLogView.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/JobRequests.ts"],"sourcesContent":["import * as React from 'react';\n\nimport styles from './search-filters.scss';\n\ninterface PartialSearchFiltersProps {\n count?: number;\n}\n\nexport function PartialSearchFilters({ count = 6 }: PartialSearchFiltersProps): JSX.Element {\n return (\n <div className='d-flex'>\n <div className='d-flex ps-1'>\n {Array(count).fill(null).map((item, index) => (\n <div key={index} className={`${styles.partialButton} partial-loading-background mx-1`} />\n ))}\n </div>\n </div>\n );\n}","export const DragOverlayStyles = { opacity: '0.8', cursor: 'grabbing' };","import React from 'react';\nimport { PluginHook, useBlockLayout, useFilters, useFlexLayout, useGlobalFilter, useRowSelect, useSortBy } from 'react-table';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\ninterface PluginOptions {\n allowFiltering?: boolean;\n allowGlobalFiltering?: boolean;\n layout?: 'flex' | 'block';\n}\n\nexport function getPlugins<T extends HashObject>(props: PluginOptions): PluginHook<T>[] {\n let plugins: PluginHook<T>[] = [\n useSortBy,\n useRowSelect,\n props.layout === 'flex' ? useFlexLayout : useBlockLayout\n ];\n\n if (props.allowFiltering)\n plugins = [\n ...plugins,\n useFilters\n ];\n\n if (props.allowGlobalFiltering)\n plugins = [\n ...plugins,\n useGlobalFilter\n ];\n\n return plugins;\n}\n\nexport function getSelectedRowIds(ids: string[]): Record<string, boolean> {\n const idHash: Record<string, boolean> = {};\n\n ids.forEach(id => idHash[id] = true);\n\n return idHash;\n}\n\ninterface TableScrollState {\n canScrollLeft: boolean;\n canScrollRight: boolean;\n}\n\nfunction calculateScrollState(ref: React.MutableRefObject<HTMLDivElement>): TableScrollState {\n const canScrollLeft = ref.current?.scrollLeft > 0;\n const canScrollRight = (ref.current?.scrollLeft + 1) < ref.current?.scrollWidth - ref.current?.clientWidth;\n\n return { canScrollLeft, canScrollRight };\n}\n\ninterface UseTableScroll {\n ref: (el: HTMLDivElement) => void;\n scrollState: TableScrollState;\n scroll: (scrollBy: number) => void;\n}\n\nexport function useTableScroll(): UseTableScroll {\n const elRef = React.useRef<HTMLDivElement>(null);\n const [ scrollState, setScrollState ] = React.useState<TableScrollState>(calculateScrollState(elRef));\n\n function onScroll(): void {\n setScrollState(calculateScrollState(elRef));\n }\n\n function scroll(scrollBy: number): void {\n elRef.current?.scrollBy({ left: scrollBy, top: 0, behavior: 'smooth' });\n }\n\n const throttledOnScroll = FunctionHelper.throttle(onScroll, 200);\n\n const ref = React.useCallback((el: HTMLDivElement) => {\n if (elRef.current) {\n elRef.current?.removeEventListener('scroll', throttledOnScroll);\n }\n\n if (el) {\n setScrollState(calculateScrollState(elRef));\n el.addEventListener('scroll', throttledOnScroll);\n }\n\n elRef.current = el;\n }, []);\n\n React.useEffect(() => {\n if (elRef?.current) {\n setScrollState(calculateScrollState(elRef));\n }\n }, [elRef]);\n\n return { ref, scrollState, scroll };\n}","// extracted by mini-css-extract-plugin\nexport default {\"sortIndicator\":\"gFhu0\",\"scrollContainer\":\"sWUp9\",\"scrollbarTrack\":\"Vn2qM\"};","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\nimport {\n Cell,\n Column as BaseColumn,\n HeaderGroup,\n HeaderProps as BaseHeaderProps,\n IdType,\n Row,\n SortingRule,\n TableOptions,\n TableRowProps,\n useTable } from 'react-table';\nimport { DragEndEvent } from '@dnd-kit/core';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SortableContainerWrapper } from 'libs/shared/components/sortable/SortableContainerWrapper';\nimport { PropsWithSortableItemProps, SortableItemWrapper } from 'libs/shared/components/sortable/SortableItemWrapper';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { WidgetButton, WidgetButtonDirection } from 'libs/shared/components/widgets/widget-button/WidgetButton';\nimport { DragOverlayStyles } from 'libs/shared/constants/DragOverlayStyles';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { getPlugins, getSelectedRowIds, useTableScroll } from './TableUtils';\n\nimport styles from './table.scss';\n\nexport interface TableTheme {\n table?: string;\n header?: string;\n headerRow?: string;\n headerCell?: string;\n body?: string;\n row?: string | ((row: Row<any>) => string);\n selectedRow?: string;\n cell?: string | ((row?: Row<any>, cell?: Cell<any, any>) => string);\n sortIndicator?: string;\n}\n\nexport type HeaderProps<T extends HashObject> = BaseHeaderProps<T> & {\n renderSortIndicator: () => void;\n}\n\nexport type Column<T extends HashObject> = BaseColumn<T> & {\n hideSortIndicator?: boolean;\n}\n\ninterface SortIndicatorProps<T extends HashObject> {\n column: HeaderGroup<T>;\n theme?: TableTheme;\n}\n\nfunction SortIndicator<T extends HashObject>(props: SortIndicatorProps<T>): JSX.Element {\n if (!props.column.canSort)\n return <></>;\n\n return (\n <span\n className={\n `${styles.sortIndicator}\n ${!props.column.isSorted ? 'text-secondary' : ''}\n ${props.theme?.sortIndicator ?? ''}`\n }\n >\n <SvgContainer\n svgName={(props.column.isSortedDesc || !props.column.isSorted)\n ? cvSvgLibrary.ArrowRight\n : cvSvgLibrary.ArrowLeft\n }\n size={SvgContainerSize.Small}\n />\n </span>\n );\n}\n\ninterface BaseTableProps<T extends HashObject> {\n /**\n * Must be memoized.\n */\n data: T[];\n\n /**\n * Must be memoized.\n * \n * For documentation on Column Options, see https://react-table.tanstack.com/docs/api/useTable#column-options\n */\n columns: Column<T>[];\n\n theme?: TableTheme;\n\n onSelectRow?: (row: Row<T>) => void;\n\n onSelectCell?: (cell: Cell<T>) => void;\n\n onRowMouseOver?: (row: Row<T>) => void;\n\n onRowMouseLeave?: (row: Row<T>) => void;\n\n allowSelectMultipleRows?: boolean;\n\n initialSelectedRowIds?: string[];\n\n getRowId?: (row: T) => string;\n\n getRowAppLink?: (row: Row<T>) => Core.AppLink;\n\n enableSort?: boolean;\n\n manualSort?: boolean;\n\n onSort?: (sortingRule: SortingRule<T>[]) => void;\n \n // Opt-in to utilise react-table's useFilter hook.\n allowFiltering?: boolean;\n\n // Opt-in to utilise react-table's useGlobalFilter hook.\n allowGlobalFiltering?: boolean;\n\n // Use either a flex layout or a block layout. Default is flex.\n layout?: 'flex' | 'block';\n\n // Used by useGlobalFilter hook, needs to be enabled by prop above.\n globalFilter?: string;\n\n // Set initial state of hidden columns in react-table.\n hiddenColumns?: IdType<T>[];\n\n // Determine whether hidden columns should be preserved on a table update event.\n autoResetHiddenColumns?: boolean;\n\n // Determine whether sort order state should be preserved on a table update event.\n autoResetSortBy?: boolean;\n\n // Determine whether rows are sortable by drag and drop\n enableSortableRows?: boolean;\n\n onSortingRowsEnd?: (event: DragEndEvent) => void;\n\n // Set initial state of sorting in react-table\n initialSortBy?: SortingRule<T>[];\n}\n \ntype SortableRowProps = PropsWithSortableItemProps<TableRowProps>;\n\nfunction BaseTable<T extends HashObject>(props: BaseTableProps<T>): JSX.Element {\n const tableOptions: TableOptions<T> = {\n columns: props.columns,\n data: props.data,\n disableSortBy: !props.enableSort,\n manualSortBy: props.manualSort,\n autoResetHiddenColumns: props.autoResetHiddenColumns,\n autoResetSortBy: props.autoResetSortBy,\n initialState: {\n sortBy: props.initialSortBy || []\n }\n };\n\n if (props.initialSelectedRowIds)\n tableOptions.initialState = { selectedRowIds: getSelectedRowIds(props.initialSelectedRowIds) };\n\n if (props.getRowId)\n tableOptions.getRowId = props.getRowId;\n\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n toggleAllRowsSelected,\n setGlobalFilter,\n setHiddenColumns,\n state: { sortBy }\n } = useTable<T>(tableOptions, ...getPlugins<T>({ ...props }));\n\n function getTableRowsClass(row: Row<T>) {\n let className = FunctionHelper.isFunction(props.theme?.row)\n ? props.theme.row(row)\n : props.theme?.row ?? '';\n\n if (row.isSelected && props.theme?.selectedRow)\n className += ` ${props.theme?.selectedRow}`;\n\n if (props.onSelectRow)\n className += ' cursor-pointer';\n\n if (props.enableSortableRows)\n className += ' cursor-grab';\n\n return className;\n }\n\n function renderTableRows(): JSX.Element[] {\n return rows.map(row => {\n prepareRow(row);\n \n const className = getTableRowsClass(row);\n const rowAppLink = !!props.getRowAppLink && props.getRowAppLink(row);\n\n function onClickRow(): void {\n if (!props.onSelectRow)\n return;\n\n if (!props.allowSelectMultipleRows)\n toggleAllRowsSelected(false);\n \n props.onSelectRow(row);\n row.toggleRowSelected(true);\n }\n\n function getSortableProps(props: TableRowProps | PropsWithSortableItemProps<TableRowProps>, ref?: any) {\n if ('dragAttributes' in props && 'dragListeners' in props) {\n return {\n ...props.dragAttributes,\n ...props.dragListeners,\n 'aria-roledescription': 'Sortable row',\n ref\n };\n }\n\n return {};\n }\n\n function renderRow(props: TableRowProps | PropsWithSortableItemProps<TableRowProps>, ref?: any): JSX.Element {\n const sortableProps = getSortableProps(props, ref);\n\n if (rowAppLink) {\n return (\n <div\n role='row'\n key={row.id}\n >\n <AppLink\n {...props}\n {...sortableProps}\n className={className}\n appLink={rowAppLink}\n >\n {renderCells(row)}\n </AppLink>\n </div>\n );\n }\n\n return (\n <div\n {...props}\n {...sortableProps}\n key={row.id}\n role='row'\n className={className}\n onClick={onClickRow}\n >\n {renderCells(row)}\n </div>\n );\n }\n\n const rowProps = row.getRowProps();\n\n if (props.enableSortableRows) {\n return (\n <SortableItemWrapper\n id={row.original.id}\n key={row.id}\n childProps={rowProps}\n childComponent={React.forwardRef(\n (props: SortableRowProps, ref: React.LegacyRef<HTMLDivElement>) => (renderRow(props, ref))\n )}\n />\n );\n }\n\n return renderRow(rowProps);\n });\n }\n\n function getDragOverlayClassName(theme: TableTheme): string {\n let className = 'g-0 ';\n\n if (theme)\n className += theme.row;\n\n return className;\n }\n\n function getDragOverlay(id: string) {\n const rowIndex = rows.findIndex(item => item.original.id === id);\n const row = rows[rowIndex];\n \n return (\n <div\n {...props}\n className={getDragOverlayClassName(props.theme)}\n style={DragOverlayStyles}\n >\n {renderCells(row)}\n </div>\n );\n }\n\n function getCellClassName(row: Row<T>, cell: Cell<T>): string {\n let cellClassName = '';\n\n if (typeof props.theme?.cell === 'function')\n cellClassName = props.theme.cell(row, cell);\n\n if (typeof props.theme?.cell === 'string')\n cellClassName = props.theme.cell;\n\n if (props.onSelectCell)\n cellClassName += ' cursor-pointer';\n\n return cellClassName;\n }\n\n function renderCells(row: Row<T>): JSX.Element[] {\n return row.cells.map(cell => {\n const cellClassName = getCellClassName(row, cell);\n\n function onClickCell(): void {\n props.onSelectCell && props.onSelectCell(cell);\n }\n\n return (\n <div key={cell.column.id} {...cell.getCellProps()} className={cellClassName} onClick={onClickCell} >\n {cell.render('Cell')}\n </div>\n );\n });\n }\n\n React.useEffect(() => {\n if (!props.onSort)\n return;\n\n props.onSort(sortBy);\n }, [sortBy]);\n\n React.useEffect(() => {\n if (!props.globalFilter)\n return;\n\n setGlobalFilter(props.globalFilter);\n }, [props.globalFilter]);\n\n React.useEffect(() => {\n if (!props.hiddenColumns)\n return;\n\n setHiddenColumns(props.hiddenColumns);\n }, [props.hiddenColumns && props.hiddenColumns.length]);\n\n return (\n <div {...getTableProps()} className={props.theme?.table ?? ''}>\n <div className={props.theme?.header ?? ''}>\n {headerGroups.map(headerGroup => (\n <div {...headerGroup.getHeaderGroupProps()} className={props.theme?.headerRow ?? ''}>\n {headerGroup.headers.map(column => (\n <div {...column.getHeaderProps(column.getSortByToggleProps())} className={props.theme?.headerCell ?? ''}>\n {column.render('Header', { renderSortIndicator: () => <SortIndicator column={column} theme={props.theme} /> })}\n {!(column as Column<T>).hideSortIndicator &&\n <SortIndicator column={column} theme={props.theme} />\n }\n </div>\n ))}\n </div>\n ))}\n </div>\n <div {...getTableBodyProps()} className={props.theme?.body ?? ''}>\n { props.enableSortableRows ? (\n <SortableContainerWrapper\n ids={rows.map(row => row.original.id)}\n getDragOverlay={getDragOverlay}\n onSortEnd={props.onSortingRowsEnd}\n >\n {renderTableRows()}\n </SortableContainerWrapper>\n ) : (\n renderTableRows()\n )}\n </div>\n </div>\n );\n}\n\ninterface TableProps<T extends HashObject> extends BaseTableProps<T> {\n enableSlider?: boolean;\n scrollIncrement?: number;\n scrollContainerClassName?: string;\n scrollable?: boolean;\n initialSortBy?: SortingRule<T>[];\n}\n\nTable.defaultProps = {\n scrollIncrement: 250,\n scrollable: false,\n layout: 'flex'\n};\n\nexport function Table<T extends HashObject>(props: TableProps<T>): JSX.Element {\n const { enableSlider, scrollIncrement, scrollable, ...tableProps } = props;\n\n const { ref, scrollState, scroll } = useTableScroll();\n\n if (scrollable) {\n return (\n <Scrollbars\n renderTrackHorizontal={() => <div className={styles.scrollbarTrack} />}\n autoHeightMax={10000}\n autoHeight\n >\n <BaseTable {...tableProps} />\n </Scrollbars>\n );\n }\n\n if (!enableSlider)\n return <BaseTable {...tableProps} />;\n\n function onClickScroll(direction: 'left' | 'right'): void {\n scroll(scrollIncrement * (direction === 'right' ? 1 : -1));\n }\n\n return (\n <div className='mx-n4 overflow-x-hidden overflow-y-hidden'>\n <div className='px-4'>\n <div className='position-relative'>\n <WidgetButton\n direction={WidgetButtonDirection.Left}\n onClick={() => onClickScroll('left')}\n hide={!scrollState.canScrollLeft}\n />\n <div className={`${styles.scrollContainer} ${props.scrollContainerClassName}`} ref={ref}>\n <BaseTable {...tableProps } />\n </div>\n <WidgetButton\n direction={WidgetButtonDirection.Right}\n onClick={() => onClickScroll('right')}\n hide={!scrollState.canScrollRight}\n />\n </div>\n </div>\n </div>\n );\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { useForceUpdate } from 'libs/shared/hooks/useForceUpdate';\nimport { usePrevious } from 'libs/shared/hooks/usePrevious';\n\ntype CheckboxItemsState = Map<string, boolean>;\n\nexport interface BulkCheckboxManager {\n onToggleBulk: () => void;\n onToggleItem: (id: string) => void;\n getSelected: () => string[];\n isChecked: (item: string | number | HashObject<string>) => boolean;\n bulkChecked: boolean;\n deselectAll: () => void;\n hasSomeSelections: () => boolean;\n setSelected: (ids: string[]) => void;\n getSelectedCount: () => number;\n reset: () => void;\n getMap: () => Map<string, boolean>;\n}\n\nexport interface BulkCheckboxManagerOptions {\n idField?: string; // For objects like `PresentationAudiences` that don't use `id` as their identifier field\n persistNamespace?: string;\n preselectedIds?: string[];\n initialState?: CheckboxItemsState;\n}\n\n/**\n * @param collection - The collection you are keeping track of with checkboxes\n * @param options - See interface above\n */\nexport const useBulkCheckboxManager = (collection: HashObject[], options: BulkCheckboxManagerOptions = {}) => {\n const { idField = 'id', persistNamespace } = options;\n\n const initial = options.initialState ? options.initialState : new Map<string, boolean>();\n\n const items = React.useRef<CheckboxItemsState>(initial);\n \n const forceUpdate = useForceUpdate();\n\n const prevCollection = usePrevious(collection);\n const prevNamespace = usePrevious(persistNamespace);\n\n /**\n * This hook will clear the state of this hook when a user navigates between pages\n * if a persistNamespace was not provided\n */\n React.useEffect(() => {\n /**\n * If we're being passed initial state, we don't want to clear the state\n */\n if (options.initialState)\n return;\n\n /**\n * If we've been given a persist namespace, we don't want to clear our\n * selections while the namespace stays the same\n */\n if (persistNamespace && prevNamespace === persistNamespace)\n return;\n\n /**\n * Don't reinitialize if the ids of the new and old collection\n * are identical\n */\n const prevIds = prevCollection?.map(i => i[idField]).join();\n const ids = collection?.map(i => i[idField]).join();\n\n if (prevIds === ids)\n return;\n\n reset();\n }, [ prevCollection, prevNamespace, collection, options.initialState ]);\n\n React.useEffect(() => {\n if (!options.preselectedIds?.length)\n return;\n\n setSelected(options.preselectedIds);\n }, []);\n\n function reset(): void {\n items.current.clear();\n forceUpdate();\n }\n\n // When toggled on, all checkbox items will be enabled. Vice versa if toggled off\n function onToggleBulk(): void {\n const setValue = !isBulkChecked();\n\n collection.forEach(item => {\n if (setValue)\n items.current.set(item[idField].toString(), true);\n else\n items.current.delete(item[idField].toString());\n });\n\n forceUpdate();\n }\n\n // Toggles a single item\n function onToggleItem(id: string): void {\n const nextItemState = !items.current.get(id.toString());\n\n if (nextItemState)\n items.current.set(id.toString(), nextItemState);\n else\n items.current.delete(id.toString());\n \n forceUpdate();\n }\n\n // Returns the state of the item passed in\n function isChecked(item: string | number | HashObject<string>): boolean {\n if (typeof item === 'number')\n item = item.toString();\n else if (typeof item !== 'string')\n item = item[idField].toString();\n\n return items.current.get(item);\n }\n\n function getSelected(): string[] {\n return Array.from(items.current.keys());\n }\n\n function deselectAll(): void {\n if (!collection?.length) return;\n\n collection.forEach(item => {\n items.current.delete(item[idField].toString());\n });\n forceUpdate();\n }\n\n // Returns true if at least 1 item is checked\n function hasSomeSelections(): boolean {\n if (!collection?.length)\n return false;\n\n return !!collection.find(item => isChecked(item));\n }\n\n function isBulkChecked(): boolean {\n if (!collection?.length)\n return false;\n\n return collection.every(isChecked);\n }\n\n function setSelected(ids: string[]): void {\n ids.forEach(id => {\n items.current.set(id, true);\n });\n forceUpdate();\n }\n\n function getSelectedCount(): number {\n return items.current.size;\n }\n\n function getMap(): Map<string, boolean> {\n return items.current;\n }\n\n return {\n onToggleBulk,\n onToggleItem,\n getSelected,\n isChecked,\n bulkChecked: isBulkChecked(),\n deselectAll,\n hasSomeSelections,\n setSelected,\n getSelectedCount,\n reset,\n getMap\n };\n};","// extracted by mini-css-extract-plugin\nexport default {\"partialHeading\":\"rfiJl\",\"partialJobCount\":\"h8k_u\",\"partialCheckbox\":\"HkuOS\",\"partialExportButton\":\"Iul7S\",\"row\":\"mwigG\",\"checkboxColumn\":\"Z5jLG\",\"actionColumn\":\"rLxYh\",\"usersColumn\":\"QZzab\",\"dateColumn\":\"Wf_Jp\",\"performedByColumn\":\"Ubtmj\",\"seeMoreColumn\":\"XdP6u\",\"heading\":\"kRMMH\",\"action\":\"DvDvW\",\"users\":\"goKpg\",\"date\":\"ejYGb\",\"performedBy\":\"NhjyL\"};","import React from 'react';\n\nimport styles from './partial-user-audit-log.scss';\n\nfunction PartialRow(): JSX.Element {\n return (\n <div className={`d-flex striped-row rounded py-3 ${styles.row}`}>\n <div className={`${styles.checkboxColumn} d-flex justify-content-center`}>\n <div className={`partial-loading-background ${styles.partialCheckbox} ms-0`} />\n </div>\n <div className={`${styles.actionColumn}`}>\n <div className={`partial-loading-background ${styles.action}`} />\n </div>\n <div className={`${styles.usersColumn}`}>\n <div className={`partial-loading-background ${styles.users}`} />\n </div>\n <div className={`${styles.dateColumn}`}>\n <div className={`partial-loading-background ${styles.date}`} />\n </div>\n <div className={`${styles.performedByColumn}`}>\n <div className={`partial-loading-background ${styles.performedBy}`} />\n </div>\n <div className={`${styles.seeMoreColumn}`}>\n &nbsp;\n </div>\n </div>\n );\n}\n\nfunction PartialHeader(): JSX.Element {\n return (\n <div className='d-flex py-2 mb-1'>\n <div className={`${styles.checkboxColumn}`}>\n &nbsp;\n </div>\n <div className={`${styles.actionColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.usersColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.dateColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.performedByColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.seeMoreColumn}`}>\n &nbsp;\n </div>\n </div>\n );\n}\n\nexport function PartialAuditLogTable(): JSX.Element {\n return (\n <>\n <div className='mb-3 mt-n1'>\n <PartialHeader />\n\n <div className='striped-list no-full-width'>\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n </div>\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { PartialSearchFilters } from 'libs/shared/apps/search/components/search-filters/PartialSearchFilters';\nimport { PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\n\nimport { PartialAuditLogTable } from './PartialAuditLogTable';\n\nimport styles from './partial-user-audit-log.scss';\n\nexport function PartialUserAuditLog(): JSX.Element {\n return (\n <>\n <div className={`partial-loading-background mb-2 ${styles.partialHeading}`} />\n\n <div className='pb-3'>\n <div className='d-flex justify-content-between'>\n <PartialBreadcrumbs />\n\n <div className={`partial-loading-background ${styles.partialJobCount}`} />\n </div>\n </div>\n\n <div className='d-flex align-items-center pb-2'>\n <div className={`partial-loading-background ${styles.partialCheckbox}`} />\n\n <div className='ms-4 ps-3'>\n <PartialSearchFilters count={3} />\n </div>\n\n <div className={`ms-auto partial-loading-background ${styles.partialExportButton}`} />\n </div>\n\n <PartialAuditLogTable />\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { SearchFilters } from 'libs/shared/apps/search/components/search-filters/SearchFilters';\nimport { FilterOption, SearchFilter } from 'libs/shared/apps/search/interfaces';\nimport { Filters } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nconst namespace = 'userManager.userAuditLogFilters';\n\nfunction getSortOptions(): FilterOption[] {\n return [{\n id: 'newest',\n name: LanguageService.getPhrase(namespace, 'newest'),\n default: true\n },\n {\n id: 'oldest',\n name: LanguageService.getPhrase(namespace, 'oldest')\n }];\n}\n\nexport interface UserAuditLogQueryParams {\n cursor: string;\n userType: UserGroup | UserGroup[];\n bulkActionType: BatchJobType | BatchJobType[];\n sort: 'newest' | 'oldest';\n}\n\ninterface UserAuditLogFiltersProps {\n queryParams: UserAuditLogQueryParams;\n appLinks: UserManagerAppLinks;\n}\n\nexport function UserAuditLogFilters(props: UserAuditLogFiltersProps): JSX.Element {\n const filters: SearchFilter<any>[] = [\n Filters.SortBy(getSortOptions()),\n Filters.BulkActionType(),\n Filters.UserType()\n ];\n\n return (\n <SearchFilters\n queryParams={props.queryParams}\n mainFilters={filters}\n appLink={props.appLinks.auditLog}\n analyticsOptions={{\n entity: EntityType.BatchJob,\n location: LocationContext.UserAuditLog\n }}\n hideHeading\n hideDivider\n constantIndices={[]}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"seeMore\":\"uymuO\"};","import React from 'react';\nimport { CellProps, Column } from 'react-table';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { ClickViewAvatar } from 'libs/shared/components/clickview-avatar/ClickViewAvatar';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { SvgContainer2 } from 'libs/shared/components/svg-container/SvgContainer2';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { BatchJob } from 'libs/shared/interfaces';\n\nimport styles from './user-audit-log-table.scss';\n\nconst namespace = 'userManager.userAuditLogTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface UserAuditLogTableData {\n id: string;\n checked: boolean;\n actionType: string;\n userType: string;\n date: string;\n performedBy: {\n name: string;\n submittedByClickView: boolean;\n };\n}\n\nexport function getColumns(\n summaryAppLink: Core.AppLink,\n onToggleCheckbox: (id: string) => void\n): Column<UserAuditLogTableData>[] {\n const columns: Column<UserAuditLogTableData>[] = [\n {\n Header: '',\n id: 'checkboxes',\n accessor: (data: UserAuditLogTableData) => ({ id: data.id, checked: data.checked }),\n Cell: (cell: CellProps<UserAuditLogTableData, { id: string; checked: boolean; }>) => (\n <div className='text-center mx-auto'>\n <Checkbox\n id={cell.value.id}\n checked={cell.value.checked}\n onChange={() => onToggleCheckbox(cell.value.id)}\n />\n </div>\n ),\n width: 10\n },\n {\n Header: getPhrase('action'),\n accessor: 'actionType',\n id: 'actionType',\n Cell: ({ value }) => (\n <div className='w-100'>\n {value}\n </div>\n ),\n width: 20\n },\n {\n Header: getPhrase('users'),\n accessor: 'userType',\n id: 'userType',\n Cell: ({ value }) => {\n const getValue = () => {\n switch (value) {\n case UserGroup.Learner:\n return getPhrase('students');\n case UserGroup.Staff:\n return getPhrase('staff');\n case UserGroup.Unknown:\n default:\n return getPhrase('unknown');\n }\n };\n\n return (\n <div className='w-100'>\n {getValue()}\n </div>\n );\n },\n width: 10\n },\n {\n Header: getPhrase('date'),\n accessor: 'date',\n id: 'date',\n Cell: ({ value }) => (\n <div className='w-100'>\n {value}\n </div>\n ),\n width: 20\n },\n {\n Header: getPhrase('performedBy'),\n accessor: 'performedBy',\n id: 'performedBy',\n Cell: (cell: CellProps<any, { name: string; submittedByClickView: boolean; }>) => (\n <div className='w-100 d-flex align-items-center'>\n {cell.value.submittedByClickView && (\n <SvgContainer2 className='me-1' size={SvgContainerSize.Small}>\n <ClickViewAvatar />\n </SvgContainer2>\n )}\n {cell.value.name}\n </div>\n ),\n width: 20\n },\n {\n Header: '',\n accessor: 'id',\n id: 'seeMore',\n Cell: ({ value }) => (\n <div className='w-100 d-flex justify-content-end'>\n <AppLink\n className={`info-link text-end me-3 ms-auto ${styles.seeMore}`}\n appLink={{\n ...summaryAppLink,\n args: summaryAppLink.args?.length ? [ ...summaryAppLink.args, value ] : [value]\n }}\n >\n <Text namespace={namespace} phrase='seeMore' />\n </AppLink>\n </div>\n ),\n width: 30\n }\n ];\n\n return columns;\n}\n\nexport function useGetData(jobs: BatchJob[], isChecked: (id: string) => boolean): UserAuditLogTableData[] {\n return jobs.map(job => {\n const formattedDate = DateHelper.format(job.dateCreated, 'DD/MM/YYYY, hh:mmA');\n\n return {\n id: job.id,\n checked: isChecked(job.id),\n actionType: BulkUserActionsHelper.mapJobTypeToName(job.type),\n userType: BulkUserActionsHelper.mapDataTypeToUserType(job.dataType),\n date: formattedDate,\n performedBy: {\n name: job.submitterName,\n submittedByClickView: job.submittedByClickView\n }\n };\n });\n}","import React from 'react';\n\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { Table, TableTheme } from 'libs/shared/components/table/Table';\nimport { BatchJobCollection } from 'libs/shared/interfaces';\n\nimport { getColumns, useGetData } from './UserAuditLogTableUtils';\n\nconst TABLE_THEME: TableTheme = {\n table: 'striped-list no-full-width pb-3',\n header: 'fw-semibold pb-1',\n headerCell: 'px-2 py-1',\n row: 'striped-row rounded audit-log-row',\n cell: 'd-flex align-items-center py-3 px-2'\n};\n\ninterface UserAuditLogTableProps {\n jobs: BatchJobCollection;\n appLinks: UserManagerAppLinks;\n onToggleCheckbox: (id: string) => void;\n isChecked: (id: string) => boolean;\n}\n\nexport function UserAuditLogTable(props: UserAuditLogTableProps): JSX.Element {\n const data = useGetData(props.jobs.data, props.isChecked);\n\n return (\n <Table\n columns={getColumns(props.appLinks.bulkActionSummary, props.onToggleCheckbox)}\n data={data}\n theme={TABLE_THEME}\n />\n );\n}","import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'userManager.auditLogEmptyState';\n\ninterface UserAuditLogEmptyStateProps {\n imageUrl: string;\n}\n\nexport function UserAuditLogEmptyState(props: UserAuditLogEmptyStateProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n </EmptyState>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"bulkCheckbox\":\"NMw5T\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\n\nimport { UserManagerConstants } from 'libs/shared/apps/user-manager/constants/UserManagerConstants';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { BatchJobCollection } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { UserAuditLogFilters, UserAuditLogQueryParams } from './components/audit-log-filters/UserAuditLogFilters';\nimport { UserAuditLogTable } from './components/audit-log-table/UserAuditLogTable';\nimport { UserAuditLogEmptyState } from './empty-state/UserAuditLogEmptyState';\n\nimport styles from './user-audit-log.scss';\n\nconst namespace = 'userManager.auditLog';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface UserAuditLogProps {\n jobs: BatchJobCollection;\n appLinks: UserManagerAppLinks;\n queryParams: UserAuditLogQueryParams;\n onClickExport: (ids: string[]) => Promise<void>;\n emptyStateImageUrl: string;\n}\n\nexport function UserAuditLog(props: UserAuditLogProps): JSX.Element {\n const referrer: UserGroup = LocalStorageHelper.get(UserManagerConstants.AUDIT_LOG_REFERRER_KEY);\n\n const [ showExportSpinner, setShowExportSpinner ] = React.useState(false);\n\n const CheckboxHelper = useBulkCheckboxManager(props.jobs.data);\n const alerts = useAlerts();\n\n function onClickExport(): void {\n if (showExportSpinner)\n return;\n\n setShowExportSpinner(true);\n\n const selectedIds = CheckboxHelper.getSelected();\n\n props.onClickExport(selectedIds)\n .then(() => alerts.success(getPhrase('exportSuccess')))\n .catch(() => alerts.error(getPhrase('exportError')))\n .finally(() => setShowExportSpinner(false));\n }\n\n return (\n <>\n <h1 className='h2'><Text namespace={namespace} phrase='heading' /></h1>\n\n <div className='pb-3'>\n <div className='d-flex justify-content-between'>\n <Breadcrumbs\n breadcrumbs={[\n { name: getPhrase('settingsBreadcrumb'), appLink: props.appLinks.settings },\n { name: getPhrase(referrer === UserGroup.Learner ? 'studentManager' : 'staffManager'), appLink: props.appLinks.userManager },\n { name: getPhrase('heading'), active: true }\n ]}\n />\n\n <p className='mb-0 fw-semibold'>\n <Text\n namespace={namespace}\n phrase='totalJobs'\n options={{ showing: props.jobs.data.length, smartCount: props.jobs.count }}\n />\n </p>\n </div>\n </div>\n\n <div className='d-flex align-items-center pb-2'>\n <Checkbox\n className={styles.bulkCheckbox}\n id='bulk-audit-log-checkbox'\n checked={CheckboxHelper.bulkChecked}\n onChange={CheckboxHelper.onToggleBulk}\n indeterminate={CheckboxHelper.hasSomeSelections()}\n />\n\n <div className='ms-4 ps-1'>\n <UserAuditLogFilters queryParams={props.queryParams} appLinks={props.appLinks} />\n </div>\n\n <SpinnerButton\n variant='dark'\n className='ms-auto'\n onClick={onClickExport}\n disabled={!CheckboxHelper.hasSomeSelections() || showExportSpinner}\n showSpinner={showExportSpinner}\n >\n <Text namespace={namespace} phrase='export' />\n </SpinnerButton>\n </div>\n\n {props.jobs.data?.length ? (\n <UserAuditLogTable\n jobs={props.jobs}\n appLinks={props.appLinks}\n onToggleCheckbox={CheckboxHelper.onToggleItem}\n isChecked={CheckboxHelper.isChecked}\n />\n ) : (\n <UserAuditLogEmptyState imageUrl={props.emptyStateImageUrl} />\n )}\n\n {!!props.jobs.pagination?.cursors && (\n <Pagination\n className='p-0 text-end pb-3'\n cursors={props.jobs.pagination.cursors}\n appLink={ContextService.getCurrentRoute().appLink}\n buttonVariant='outline-dark'\n />\n )}\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { UserAuditLogQueryParams } from 'libs/shared/apps/user-manager/components/audit-log/components/audit-log-filters/UserAuditLogFilters';\nimport { PartialUserAuditLog } from 'libs/shared/apps/user-manager/components/audit-log/partial-loading/PartialUserAuditLog';\nimport { UserAuditLog } from 'libs/shared/apps/user-manager/components/audit-log/UserAuditLog';\nimport { UserManagerConstants } from 'libs/shared/apps/user-manager/constants/UserManagerConstants';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { BatchJobCollection } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\n\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nconst namespace = 'userManager.userAuditLogView';\n\ninterface UserAuditLogViewProps {\n queryParams: UserAuditLogQueryParams;\n}\n\nexport function UserAuditLogView(props: UserAuditLogViewProps): JSX.Element {\n const referrer: UserGroup = LocalStorageHelper.get(UserManagerConstants.AUDIT_LOG_REFERRER_KEY);\n\n const jobs = Flight.useBasicFetch<BatchJobCollection>(JobRequests.getJobs(props.queryParams));\n \n useHandleObjectError(jobs);\n useSetPageMetadata({ title: LanguageService.getPhrase(namespace, 'pageTitle') });\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n const appLinks = getUserManagerAppLinks(referrer);\n\n function onClickExport(jobIds: string[]): Promise<void> {\n return fetchAsync<void>(JobRequests.sendJobReports(jobIds));\n }\n\n if (!jobs.hasCompleted)\n return <div className='px-3'><PartialUserAuditLog /></div>;\n\n return (\n <div className='px-3'>\n <UserAuditLog\n jobs={jobs.data}\n appLinks={appLinks}\n queryParams={props.queryParams}\n onClickExport={onClickExport}\n emptyStateImageUrl={ImageUrls.EmptyStates.Search.RESULTS}\n />\n </div>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { UserAuditLogQueryParams } from 'libs/shared/apps/user-manager/components/audit-log/components/audit-log-filters/UserAuditLogFilters';\nimport { SUPPORTED_BATCH_JOB_TYPES } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { BatchJobResultStatus } from 'libs/shared/enums/BatchJobResultStatus';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { BaseObject, BatchJob, BatchJobProgress, BatchJobResultsResponse, CreateBatchJobRequest } from 'libs/shared/interfaces';\n\nexport const JobRequests = {\n createJob(\n data: CreateBatchJobRequest,\n success?: (job: BatchJob) => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/batch/jobs',\n key: 'create:job',\n type: HttpVerbs.POST,\n data,\n success,\n error\n };\n },\n\n getJobs(queryParams: UserAuditLogQueryParams): Flight.Request {\n const params: HashObject = {};\n\n let bulkActionTypes: BatchJobType[] = [];\n let userTypes: UserGroup[] = [];\n\n if (queryParams.cursor)\n params.cursor = queryParams.cursor;\n\n if (queryParams.sort) {\n if (queryParams.sort === 'oldest')\n params.order = 'ASC';\n else\n params.order = 'DESC';\n }\n\n if (queryParams.bulkActionType) {\n bulkActionTypes = Array.isArray(queryParams.bulkActionType)\n ? queryParams.bulkActionType\n : [queryParams.bulkActionType];\n\n params.type = bulkActionTypes;\n } else {\n // only show supported type in the table by default\n params.type = SUPPORTED_BATCH_JOB_TYPES;\n }\n\n if (queryParams.userType) {\n userTypes = Array.isArray(queryParams.userType)\n ? queryParams.userType\n : [queryParams.userType];\n\n params.dataType = userTypes;\n }\n \n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/batch/jobs', params),\n key: `batch:jobs:${queryParams.cursor}:${queryParams.sort}:${bulkActionTypes.sort().join(':')}:${userTypes.sort().join(':')}`\n };\n },\n\n getJob(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}`,\n key: `job:${id}`\n };\n },\n\n getJobProgress(\n id: string,\n success?: (progress: BatchJobProgress) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/progress`,\n key: `job:${id}:progress`,\n invalidationKeys: `job:${id}:progress`,\n success,\n error\n };\n },\n\n getJobResults<TObject extends BaseObject>(\n id: string,\n status: BatchJobResultStatus,\n cursor?: string,\n success?: (results: BatchJobResultsResponse<TObject>) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n const params: HashObject = {\n status\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/batch/jobs/${id}/results`, params),\n key: `job:${id}:results:${status}:${cursor}`,\n success,\n error\n };\n },\n\n getYearGroupRolloverStatus(customerId: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/validations/customers/${customerId}/year-group-roll-over`,\n key: 'year:group:rollover:status'\n };\n },\n\n sendJobReports(ids: string[]): Flight.Request {\n return {\n url: '{gateway}/v1/batch/results/export',\n key: `send:job:reports:${ids.sort().join(':')}`,\n type: HttpVerbs.POST,\n data: {\n jobIds: ids\n }\n };\n },\n\n getJobSummary(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/summary`,\n key: `job:summary:${id}`\n };\n }\n};"],"names":["PartialSearchFilters","count","className","Array","fill","map","item","index","key","DragOverlayStyles","opacity","cursor","calculateScrollState","ref","canScrollLeft","current","scrollLeft","canScrollRight","scrollWidth","clientWidth","SortIndicator","props","column","canSort","isSorted","theme","sortIndicator","SvgContainer","svgName","isSortedDesc","size","S","BaseTable","ids","idHash","tableOptions","columns","data","disableSortBy","enableSort","manualSortBy","manualSort","autoResetHiddenColumns","autoResetSortBy","initialState","sortBy","initialSortBy","initialSelectedRowIds","selectedRowIds","forEach","id","getRowId","useTable","plugins","useSortBy","useRowSelect","layout","useFlexLayout","useBlockLayout","allowFiltering","useFilters","allowGlobalFiltering","useGlobalFilter","getPlugins","getTableProps","getTableBodyProps","headerGroups","rows","prepareRow","toggleAllRowsSelected","setGlobalFilter","setHiddenColumns","state","renderTableRows","row","FunctionHelper","isSelected","selectedRow","onSelectRow","enableSortableRows","getTableRowsClass","rowAppLink","getRowAppLink","onClickRow","allowSelectMultipleRows","toggleRowSelected","renderRow","sortableProps","dragAttributes","dragListeners","getSortableProps","role","AppLink","appLink","renderCells","onClick","rowProps","getRowProps","SortableItemWrapper","original","childProps","childComponent","cells","cell","cellClassName","onSelectCell","getCellClassName","getCellProps","render","onSort","globalFilter","hiddenColumns","length","table","header","headerGroup","getHeaderGroupProps","headerRow","headers","getHeaderProps","getSortByToggleProps","headerCell","renderSortIndicator","hideSortIndicator","body","SortableContainerWrapper","getDragOverlay","rowIndex","findIndex","style","onSortEnd","onSortingRowsEnd","Table","enableSlider","scrollIncrement","scrollable","tableProps","elRef","scrollState","setScrollState","throttledOnScroll","el","removeEventListener","addEventListener","scroll","scrollBy","left","top","behavior","useTableScroll","renderTrackHorizontal","autoHeightMax","autoHeight","onClickScroll","direction","WidgetButton","W","hide","scrollContainerClassName","defaultProps","generateCacheKey","flightObjs","obj","statusCode","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","isArray","useEffect","useBulkCheckboxManager","collection","options","idField","persistNamespace","initial","Map","items","forceUpdate","prevCollection","prevNamespace","reset","clear","isChecked","toString","get","isBulkChecked","every","setSelected","set","i","preselectedIds","onToggleBulk","setValue","onToggleItem","nextItemState","getSelected","from","keys","bulkChecked","deselectAll","hasSomeSelections","find","getSelectedCount","getMap","PartialRow","PartialHeader","PartialAuditLogTable","PartialUserAuditLog","namespace","UserAuditLogFilters","filters","name","LanguageService","default","SearchFilters","queryParams","mainFilters","appLinks","auditLog","analyticsOptions","entity","location","hideHeading","hideDivider","constantIndices","getPhrase","TABLE_THEME","UserAuditLogTable","jobs","summaryAppLink","onToggleCheckbox","job","formattedDate","DateHelper","dateCreated","checked","actionType","BulkUserActionsHelper","type","userType","dataType","date","performedBy","submitterName","submittedByClickView","bulkActionSummary","Header","accessor","Cell","Checkbox","value","onChange","width","UserGroup","getValue","SvgContainer2","ClickViewAvatar","args","Text","phrase","UserAuditLogEmptyState","EmptyState","src","imageUrl","UserAuditLog","referrer","LocalStorageHelper","UserManagerConstants","showExportSpinner","setShowExportSpinner","CheckboxHelper","alerts","Breadcrumbs","breadcrumbs","settings","userManager","active","showing","smartCount","indeterminate","SpinnerButton","variant","selectedIds","onClickExport","then","success","error","disabled","showSpinner","emptyStateImageUrl","pagination","cursors","Pagination","ContextService","buttonVariant","UserAuditLogView","JobRequests","useSetPageMetadata","title","fetchAsync","hasCompleted","jobIds","ImageUrls","createJob","url","getJobs","params","bulkActionTypes","userTypes","sort","order","bulkActionType","getJob","getJobProgress","invalidationKeys","getJobResults","status","getYearGroupRolloverStatus","customerId","sendJobReports","getJobSummary"],"sourceRoot":""}