@openmrs/esm-stock-management-app 1.0.1-pre.785 → 1.0.1-pre.790

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 (52) hide show
  1. package/dist/493.js +1 -1
  2. package/dist/493.js.map +1 -1
  3. package/dist/880.js +1 -0
  4. package/dist/880.js.map +1 -0
  5. package/dist/942.js +1 -0
  6. package/dist/942.js.map +1 -0
  7. package/dist/main.js +1 -1
  8. package/dist/main.js.map +1 -1
  9. package/dist/openmrs-esm-stock-management-app.js +1 -1
  10. package/dist/openmrs-esm-stock-management-app.js.buildmanifest.json +41 -41
  11. package/dist/routes.json +1 -1
  12. package/package.json +1 -1
  13. package/src/config-schema.ts +6 -0
  14. package/src/index.ts +15 -21
  15. package/src/routes.json +5 -4
  16. package/src/stock-operations/add-stock-operation/stock-operations-expanded-row/stock-items-table.scss +34 -0
  17. package/src/stock-operations/add-stock-operation/stock-operations-expanded-row/stock-items-table.tsx +111 -0
  18. package/src/stock-operations/add-stock-operation/stock-operations-expanded-row/stock-operation-expanded-row.component.tsx +116 -0
  19. package/src/stock-operations/add-stock-operation/stock-operations-expanded-row/stock-operation-expanded-row.scss +31 -0
  20. package/src/stock-operations/add-stock-operation/stock-operations-expanded-row/stock-operations-status.tsx +45 -0
  21. package/src/stock-operations/edit-stock-operation/edit-stock-operation-action-menu.component.tsx +2 -2
  22. package/src/stock-operations/stock-operation-actions.component.tsx +81 -0
  23. package/src/stock-operations/stock-operation-links.component.tsx +82 -0
  24. package/src/stock-operations/stock-operation-reference.component.tsx +2 -2
  25. package/src/stock-operations/stock-operation-types-selector/stock-operation-types-selector.component.tsx +2 -2
  26. package/src/stock-operations/stock-operation.utils.tsx +8 -13
  27. package/src/stock-operations/stock-operations-dialog/stock-operations-issue-stock-button.component.tsx +2 -2
  28. package/src/stock-operations/stock-operations-forms/input-components/stock-item-search.component.tsx +30 -7
  29. package/src/stock-operations/stock-operations-forms/step1.test.tsx +158 -17
  30. package/src/stock-operations/stock-operations-forms/step2.test.tsx +59 -10
  31. package/src/stock-operations/stock-operations-forms/step3.test.tsx +63 -10
  32. package/src/stock-operations/stock-operations-forms/steps/base-operation-details-form-step.tsx +11 -9
  33. package/src/stock-operations/stock-operations-forms/steps/received-items.component.tsx +111 -0
  34. package/src/stock-operations/stock-operations-forms/steps/stock-operation-item-cell.component.tsx +20 -9
  35. package/src/stock-operations/stock-operations-forms/steps/stock-operation-items-form-step.component.tsx +21 -46
  36. package/src/stock-operations/stock-operations-forms/steps/stock-operation-items-form-step.scc.scss +4 -18
  37. package/src/stock-operations/stock-operations-forms/steps/stock-operation-submission-form-step.component.tsx +22 -10
  38. package/src/stock-operations/stock-operations-forms/stock-issue-form-initializer-with-related-requisition-operation.component.tsx +20 -3
  39. package/src/stock-operations/stock-operations-forms/stock-item-form/stock-item-form.workspace.tsx +19 -7
  40. package/src/stock-operations/stock-operations-forms/stock-operation-form.component.tsx +114 -67
  41. package/src/stock-operations/stock-operations-forms/stock-operation-form.scss +5 -24
  42. package/src/stock-operations/stock-operations-forms/stock-operation-related-link.component.tsx +2 -2
  43. package/src/stock-operations/stock-operations-forms/stock-operation-stepper/stepper.scss +14 -11
  44. package/src/stock-operations/stock-operations-forms/stock-operation-stepper/stock-operation-stepper.component.tsx +2 -6
  45. package/src/stock-operations/stock-operations-table.component.tsx +39 -38
  46. package/src/stock-operations/stock-operations-table.scss +20 -0
  47. package/dist/155.js +0 -1
  48. package/dist/155.js.map +0 -1
  49. package/dist/914.js +0 -1
  50. package/dist/914.js.map +0 -1
  51. package/src/stock-operations/received-items.component.tsx +0 -93
  52. package/src/stock-operations/stock-operations-forms/stock-operation-form-header.component.tsx +0 -166
@@ -1 +1 @@
1
- var _openmrs_esm_stock_management_app;(()=>{"use strict";var e,r,t,n,o,a,i,l,s,u,f,p,c,d,h,m,v,g={1371:(e,r,t)=>{var n={"./start":()=>Promise.all([t.e(935),t.e(493),t.e(672),t.e(914)]).then((()=>()=>t(7702)))},o=(e,r)=>(t.R=r,r=t.o(n,e)?n[e]():Promise.resolve().then((()=>{throw new Error('Module "'+e+'" does not exist in container.')})),t.R=void 0,r),a=(e,r)=>{if(t.S){var n="default",o=t.S[n];if(o&&o!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[n]=e,t.I(n,r)}};t.d(r,{get:()=>o,init:()=>a})}},b={};function y(e){var r=b[e];if(void 0!==r)return r.exports;var t=b[e]={id:e,loaded:!1,exports:{}};return g[e].call(t.exports,t,t.exports,y),t.loaded=!0,t.exports}y.m=g,y.c=b,y.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return y.d(r,{a:r}),r},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,y.t=function(t,n){if(1&n&&(t=this(t)),8&n)return t;if("object"==typeof t&&t){if(4&n&&t.__esModule)return t;if(16&n&&"function"==typeof t.then)return t}var o=Object.create(null);y.r(o);var a={};e=e||[null,r({}),r([]),r(r)];for(var i=2&n&&t;"object"==typeof i&&!~e.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach((e=>a[e]=()=>t[e]));return a.default=()=>t,y.d(o,a),o},y.d=(e,r)=>{for(var t in r)y.o(r,t)&&!y.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},y.f={},y.e=e=>Promise.all(Object.keys(y.f).reduce(((r,t)=>(y.f[t](e,r),r)),[])),y.u=e=>e+".js",y.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),y.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t={},n="@openmrs/esm-stock-management-app:",y.l=(e,r,o,a)=>{if(t[e])t[e].push(r);else{var i,l;if(void 0!==o)for(var s=document.getElementsByTagName("script"),u=0;u<s.length;u++){var f=s[u];if(f.getAttribute("src")==e||f.getAttribute("data-webpack")==n+o){i=f;break}}i||(l=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,y.nc&&i.setAttribute("nonce",y.nc),i.setAttribute("data-webpack",n+o),i.src=e),t[e]=[r];var p=(r,n)=>{i.onerror=i.onload=null,clearTimeout(c);var o=t[e];if(delete t[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),r)return r(n)},c=setTimeout(p.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),l&&document.head.appendChild(i)}},y.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},y.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{y.S={};var e={},r={};y.I=(t,n)=>{n||(n=[]);var o=r[t];if(o||(o=r[t]={}),!(n.indexOf(o)>=0)){if(n.push(o),e[t])return e[t];y.o(y.S,t)||(y.S[t]={});var a=y.S[t],i="@openmrs/esm-stock-management-app",l=(e,r,t,n)=>{var o=a[e]=a[e]||{},l=o[r];(!l||!l.loaded&&(!n!=!l.eager?n:i>l.from))&&(o[r]={get:t,from:i,eager:!!n})},s=[];return"default"===t&&(l("@openmrs/esm-framework","5.7.3-pre.2161",(()=>Promise.all([y.e(793),y.e(672)]).then((()=>()=>y(1793))))),l("dayjs","1.11.10",(()=>y.e(484).then((()=>()=>y(7484))))),l("react-i18next","11.18.6",(()=>Promise.all([y.e(672),y.e(629)]).then((()=>()=>y(707))))),l("react-router-dom","6.21.1",(()=>Promise.all([y.e(26),y.e(935),y.e(672)]).then((()=>()=>y(8026))))),l("react","18.2.0",(()=>y.e(294).then((()=>()=>y(7294))))),l("swr/_internal","2.2.5",(()=>Promise.all([y.e(46),y.e(672)]).then((()=>()=>y(46)))))),e[t]=s.length?Promise.all(s).then((()=>e[t]=1)):1}}})(),(()=>{var e;y.g.importScripts&&(e=y.g.location+"");var r=y.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&!e;)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),y.p=e})(),o=e=>{var r=e=>e.split(".").map((e=>+e==e?+e:e)),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=t[1]?r(t[1]):[];return t[2]&&(n.length++,n.push.apply(n,r(t[2]))),t[3]&&(n.push([]),n.push.apply(n,r(t[3]))),n},a=(e,r)=>{e=o(e),r=o(r);for(var t=0;;){if(t>=e.length)return t<r.length&&"u"!=(typeof r[t])[0];var n=e[t],a=(typeof n)[0];if(t>=r.length)return"u"==a;var i=r[t],l=(typeof i)[0];if(a!=l)return"o"==a&&"n"==l||"s"==l||"u"==a;if("o"!=a&&"u"!=a&&n!=i)return n<i;t++}},i=e=>{var r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var n=1,o=1;o<e.length;o++)n--,t+="u"==(typeof(l=e[o]))[0]?"-":(n>0?".":"")+(n=2,l);return t}var a=[];for(o=1;o<e.length;o++){var l=e[o];a.push(0===l?"not("+s()+")":1===l?"("+s()+" || "+s()+")":2===l?a.pop()+" "+a.pop():i(l))}return s();function s(){return a.pop().replace(/^\((.+)\)$/,"$1")}},l=(e,r)=>{if(0 in e){r=o(r);var t=e[0],n=t<0;n&&(t=-t-1);for(var a=0,i=1,s=!0;;i++,a++){var u,f,p=i<e.length?(typeof e[i])[0]:"";if(a>=r.length||"o"==(f=(typeof(u=r[a]))[0]))return!s||("u"==p?i>t&&!n:""==p!=n);if("u"==f){if(!s||"u"!=p)return!1}else if(s)if(p==f)if(i<=t){if(u!=e[i])return!1}else{if(n?u>e[i]:u<e[i])return!1;u!=e[i]&&(s=!1)}else if("s"!=p&&"n"!=p){if(n||i<=t)return!1;s=!1,i--}else{if(i<=t||f<p!=n)return!1;s=!1}else"s"!=p&&"n"!=p&&(s=!1,i--)}}var c=[],d=c.pop.bind(c);for(a=1;a<e.length;a++){var h=e[a];c.push(1==h?d()|d():2==h?d()&d():h?l(h,r):!d())}return!!d()},s=(e,r)=>{var t=e[r];return Object.keys(t).reduce(((e,r)=>!e||!t[e].loaded&&a(e,r)?r:e),0)},u=(e,r,t,n)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+i(n)+")",f=(e,r,t,n)=>{var o=s(e,t);return l(n,o)||p(u(e,t,o,n)),c(e[t][o])},p=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},c=e=>(e.loaded=1,e.get()),d=(e=>function(r,t,n,o){var a=y.I(r);return a&&a.then?a.then(e.bind(e,r,y.S[r],t,n,o)):e(0,y.S[r],t,n,o)})(((e,r,t,n,o)=>r&&y.o(r,t)?f(r,0,t,n):o())),h={},m={1672:()=>d("default","react",[1,18],(()=>y.e(294).then((()=>()=>y(7294))))),1914:()=>d("default","react-router-dom",[1,6],(()=>y.e(26).then((()=>()=>y(8026))))),2653:()=>d("default","dayjs",[1,1],(()=>y.e(484).then((()=>()=>y(7484))))),3397:()=>d("default","react-i18next",[1,11],(()=>y.e(707).then((()=>()=>y(707))))),5512:()=>d("default","swr/_internal",[1,2],(()=>y.e(46).then((()=>()=>y(46))))),7248:()=>d("default","@openmrs/esm-framework",[1,5],(()=>y.e(793).then((()=>()=>y(1793)))))},v={672:[1672],914:[1914,2653,3397,5512,7248]},y.f.consumes=(e,r)=>{y.o(v,e)&&v[e].forEach((e=>{if(y.o(h,e))return r.push(h[e]);var t=r=>{h[e]=0,y.m[e]=t=>{delete y.c[e],t.exports=r()}},n=r=>{delete h[e],y.m[e]=t=>{throw delete y.c[e],r}};try{var o=m[e]();o.then?r.push(h[e]=o.then(t).catch(n)):t(o)}catch(e){n(e)}}))},(()=>{var e={122:0};y.f.j=(r,t)=>{var n=y.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else if(672!=r){var o=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=o);var a=y.p+y.u(r),i=new Error;y.l(a,(t=>{if(y.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var o=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+o+": "+a+")",i.name="ChunkLoadError",i.type=o,i.request=a,n[1](i)}}),"chunk-"+r,r)}else e[r]=0};var r=(r,t)=>{var n,o,[a,i,l]=t,s=0;if(a.some((r=>0!==e[r]))){for(n in i)y.o(i,n)&&(y.m[n]=i[n]);l&&l(y)}for(r&&r(t);s<a.length;s++)o=a[s],y.o(e,o)&&e[o]&&e[o][0](),e[o]=0},t=globalThis.webpackChunk_openmrs_esm_stock_management_app=globalThis.webpackChunk_openmrs_esm_stock_management_app||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),y.nc=void 0;var _=y(1371);_openmrs_esm_stock_management_app=_})();
1
+ var _openmrs_esm_stock_management_app;(()=>{"use strict";var e,r,t,n,o,a,i,l,s,u,f,p,c,d,h,m,v,g={1371:(e,r,t)=>{var n={"./start":()=>Promise.all([t.e(935),t.e(493),t.e(672),t.e(942)]).then((()=>()=>t(8600)))},o=(e,r)=>(t.R=r,r=t.o(n,e)?n[e]():Promise.resolve().then((()=>{throw new Error('Module "'+e+'" does not exist in container.')})),t.R=void 0,r),a=(e,r)=>{if(t.S){var n="default",o=t.S[n];if(o&&o!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[n]=e,t.I(n,r)}};t.d(r,{get:()=>o,init:()=>a})}},b={};function y(e){var r=b[e];if(void 0!==r)return r.exports;var t=b[e]={id:e,loaded:!1,exports:{}};return g[e].call(t.exports,t,t.exports,y),t.loaded=!0,t.exports}y.m=g,y.c=b,y.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return y.d(r,{a:r}),r},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,y.t=function(t,n){if(1&n&&(t=this(t)),8&n)return t;if("object"==typeof t&&t){if(4&n&&t.__esModule)return t;if(16&n&&"function"==typeof t.then)return t}var o=Object.create(null);y.r(o);var a={};e=e||[null,r({}),r([]),r(r)];for(var i=2&n&&t;"object"==typeof i&&!~e.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach((e=>a[e]=()=>t[e]));return a.default=()=>t,y.d(o,a),o},y.d=(e,r)=>{for(var t in r)y.o(r,t)&&!y.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},y.f={},y.e=e=>Promise.all(Object.keys(y.f).reduce(((r,t)=>(y.f[t](e,r),r)),[])),y.u=e=>e+".js",y.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),y.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t={},n="@openmrs/esm-stock-management-app:",y.l=(e,r,o,a)=>{if(t[e])t[e].push(r);else{var i,l;if(void 0!==o)for(var s=document.getElementsByTagName("script"),u=0;u<s.length;u++){var f=s[u];if(f.getAttribute("src")==e||f.getAttribute("data-webpack")==n+o){i=f;break}}i||(l=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,y.nc&&i.setAttribute("nonce",y.nc),i.setAttribute("data-webpack",n+o),i.src=e),t[e]=[r];var p=(r,n)=>{i.onerror=i.onload=null,clearTimeout(c);var o=t[e];if(delete t[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),r)return r(n)},c=setTimeout(p.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),l&&document.head.appendChild(i)}},y.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},y.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{y.S={};var e={},r={};y.I=(t,n)=>{n||(n=[]);var o=r[t];if(o||(o=r[t]={}),!(n.indexOf(o)>=0)){if(n.push(o),e[t])return e[t];y.o(y.S,t)||(y.S[t]={});var a=y.S[t],i="@openmrs/esm-stock-management-app",l=(e,r,t,n)=>{var o=a[e]=a[e]||{},l=o[r];(!l||!l.loaded&&(!n!=!l.eager?n:i>l.from))&&(o[r]={get:t,from:i,eager:!!n})},s=[];return"default"===t&&(l("@openmrs/esm-framework","5.7.3-pre.2161",(()=>Promise.all([y.e(793),y.e(672)]).then((()=>()=>y(1793))))),l("dayjs","1.11.10",(()=>y.e(484).then((()=>()=>y(7484))))),l("react-i18next","11.18.6",(()=>Promise.all([y.e(672),y.e(629)]).then((()=>()=>y(707))))),l("react-router-dom","6.21.1",(()=>Promise.all([y.e(26),y.e(935),y.e(672)]).then((()=>()=>y(8026))))),l("react","18.2.0",(()=>y.e(294).then((()=>()=>y(7294))))),l("swr/_internal","2.2.5",(()=>Promise.all([y.e(46),y.e(672)]).then((()=>()=>y(46)))))),e[t]=s.length?Promise.all(s).then((()=>e[t]=1)):1}}})(),(()=>{var e;y.g.importScripts&&(e=y.g.location+"");var r=y.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&!e;)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),y.p=e})(),o=e=>{var r=e=>e.split(".").map((e=>+e==e?+e:e)),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=t[1]?r(t[1]):[];return t[2]&&(n.length++,n.push.apply(n,r(t[2]))),t[3]&&(n.push([]),n.push.apply(n,r(t[3]))),n},a=(e,r)=>{e=o(e),r=o(r);for(var t=0;;){if(t>=e.length)return t<r.length&&"u"!=(typeof r[t])[0];var n=e[t],a=(typeof n)[0];if(t>=r.length)return"u"==a;var i=r[t],l=(typeof i)[0];if(a!=l)return"o"==a&&"n"==l||"s"==l||"u"==a;if("o"!=a&&"u"!=a&&n!=i)return n<i;t++}},i=e=>{var r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var n=1,o=1;o<e.length;o++)n--,t+="u"==(typeof(l=e[o]))[0]?"-":(n>0?".":"")+(n=2,l);return t}var a=[];for(o=1;o<e.length;o++){var l=e[o];a.push(0===l?"not("+s()+")":1===l?"("+s()+" || "+s()+")":2===l?a.pop()+" "+a.pop():i(l))}return s();function s(){return a.pop().replace(/^\((.+)\)$/,"$1")}},l=(e,r)=>{if(0 in e){r=o(r);var t=e[0],n=t<0;n&&(t=-t-1);for(var a=0,i=1,s=!0;;i++,a++){var u,f,p=i<e.length?(typeof e[i])[0]:"";if(a>=r.length||"o"==(f=(typeof(u=r[a]))[0]))return!s||("u"==p?i>t&&!n:""==p!=n);if("u"==f){if(!s||"u"!=p)return!1}else if(s)if(p==f)if(i<=t){if(u!=e[i])return!1}else{if(n?u>e[i]:u<e[i])return!1;u!=e[i]&&(s=!1)}else if("s"!=p&&"n"!=p){if(n||i<=t)return!1;s=!1,i--}else{if(i<=t||f<p!=n)return!1;s=!1}else"s"!=p&&"n"!=p&&(s=!1,i--)}}var c=[],d=c.pop.bind(c);for(a=1;a<e.length;a++){var h=e[a];c.push(1==h?d()|d():2==h?d()&d():h?l(h,r):!d())}return!!d()},s=(e,r)=>{var t=e[r];return Object.keys(t).reduce(((e,r)=>!e||!t[e].loaded&&a(e,r)?r:e),0)},u=(e,r,t,n)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+i(n)+")",f=(e,r,t,n)=>{var o=s(e,t);return l(n,o)||p(u(e,t,o,n)),c(e[t][o])},p=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},c=e=>(e.loaded=1,e.get()),d=(e=>function(r,t,n,o){var a=y.I(r);return a&&a.then?a.then(e.bind(e,r,y.S[r],t,n,o)):e(0,y.S[r],t,n,o)})(((e,r,t,n,o)=>r&&y.o(r,t)?f(r,0,t,n):o())),h={},m={1672:()=>d("default","react",[1,18],(()=>y.e(294).then((()=>()=>y(7294))))),1914:()=>d("default","react-router-dom",[1,6],(()=>y.e(26).then((()=>()=>y(8026))))),2653:()=>d("default","dayjs",[1,1],(()=>y.e(484).then((()=>()=>y(7484))))),3397:()=>d("default","react-i18next",[1,11],(()=>y.e(707).then((()=>()=>y(707))))),5512:()=>d("default","swr/_internal",[1,2],(()=>y.e(46).then((()=>()=>y(46))))),7248:()=>d("default","@openmrs/esm-framework",[1,5],(()=>y.e(793).then((()=>()=>y(1793)))))},v={672:[1672],942:[1914,2653,3397,5512,7248]},y.f.consumes=(e,r)=>{y.o(v,e)&&v[e].forEach((e=>{if(y.o(h,e))return r.push(h[e]);var t=r=>{h[e]=0,y.m[e]=t=>{delete y.c[e],t.exports=r()}},n=r=>{delete h[e],y.m[e]=t=>{throw delete y.c[e],r}};try{var o=m[e]();o.then?r.push(h[e]=o.then(t).catch(n)):t(o)}catch(e){n(e)}}))},(()=>{var e={122:0};y.f.j=(r,t)=>{var n=y.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else if(672!=r){var o=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=o);var a=y.p+y.u(r),i=new Error;y.l(a,(t=>{if(y.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var o=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+o+": "+a+")",i.name="ChunkLoadError",i.type=o,i.request=a,n[1](i)}}),"chunk-"+r,r)}else e[r]=0};var r=(r,t)=>{var n,o,[a,i,l]=t,s=0;if(a.some((r=>0!==e[r]))){for(n in i)y.o(i,n)&&(y.m[n]=i[n]);l&&l(y)}for(r&&r(t);s<a.length;s++)o=a[s],y.o(e,o)&&e[o]&&e[o][0](),e[o]=0},t=globalThis.webpackChunk_openmrs_esm_stock_management_app=globalThis.webpackChunk_openmrs_esm_stock_management_app||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),y.nc=void 0;var _=y(1371);_openmrs_esm_stock_management_app=_})();
@@ -21,7 +21,7 @@
21
21
  "auxiliaryFiles": [
22
22
  "20.js.map"
23
23
  ],
24
- "hash": "427ebc0f003b7ef5",
24
+ "hash": "add2504aec147665",
25
25
  "childrenByOrder": {}
26
26
  },
27
27
  {
@@ -102,31 +102,7 @@
102
102
  "auxiliaryFiles": [
103
103
  "openmrs-esm-stock-management-app.js.map"
104
104
  ],
105
- "hash": "a1092db23c7d2d09",
106
- "childrenByOrder": {}
107
- },
108
- {
109
- "rendered": true,
110
- "initial": false,
111
- "entry": false,
112
- "recorded": false,
113
- "size": 55452,
114
- "sizes": {
115
- "javascript": 55452
116
- },
117
- "names": [],
118
- "idHints": [],
119
- "runtime": [
120
- "@openmrs/esm-stock-management-app",
121
- "main"
122
- ],
123
- "files": [
124
- "155.js"
125
- ],
126
- "auxiliaryFiles": [
127
- "155.js.map"
128
- ],
129
- "hash": "d02f7d5cedeb5b05",
105
+ "hash": "27594147963c527b",
130
106
  "childrenByOrder": {}
131
107
  },
132
108
  {
@@ -150,7 +126,7 @@
150
126
  "auxiliaryFiles": [
151
127
  "172.js.map"
152
128
  ],
153
- "hash": "eda57feec50cee3a",
129
+ "hash": "dc1ed22b41ecb9f0",
154
130
  "childrenByOrder": {}
155
131
  },
156
132
  {
@@ -158,10 +134,10 @@
158
134
  "initial": true,
159
135
  "entry": true,
160
136
  "recorded": false,
161
- "size": 5715290,
137
+ "size": 5475157,
162
138
  "sizes": {
163
139
  "consume-shared": 252,
164
- "javascript": 5693341,
140
+ "javascript": 5453208,
165
141
  "share-init": 252,
166
142
  "runtime": 21445
167
143
  },
@@ -178,7 +154,7 @@
178
154
  "auxiliaryFiles": [
179
155
  "main.js.map"
180
156
  ],
181
- "hash": "8eb1ccbbb4c258f4",
157
+ "hash": "7b3183dec6dd1de5",
182
158
  "childrenByOrder": {}
183
159
  },
184
160
  {
@@ -224,7 +200,7 @@
224
200
  "auxiliaryFiles": [
225
201
  "290.js.map"
226
202
  ],
227
- "hash": "25d983f736972775",
203
+ "hash": "420ca348ca485d8c",
228
204
  "childrenByOrder": {}
229
205
  },
230
206
  {
@@ -342,7 +318,7 @@
342
318
  "auxiliaryFiles": [
343
319
  "493.js.map"
344
320
  ],
345
- "hash": "0d62292b71e1e667",
321
+ "hash": "77e751713e51d802",
346
322
  "childrenByOrder": {}
347
323
  },
348
324
  {
@@ -388,7 +364,7 @@
388
364
  "auxiliaryFiles": [
389
365
  "606.js.map"
390
366
  ],
391
- "hash": "457d1c263d4f3ba6",
367
+ "hash": "022a67bbd27dc006",
392
368
  "childrenByOrder": {}
393
369
  },
394
370
  {
@@ -412,7 +388,7 @@
412
388
  "auxiliaryFiles": [
413
389
  "627.js.map"
414
390
  ],
415
- "hash": "ab3fb08b12303a19",
391
+ "hash": "d3973cdee8608ee7",
416
392
  "childrenByOrder": {}
417
393
  },
418
394
  {
@@ -604,23 +580,23 @@
604
580
  "initial": false,
605
581
  "entry": false,
606
582
  "recorded": false,
607
- "size": 1972117,
583
+ "size": 372135,
608
584
  "sizes": {
609
- "javascript": 1971907,
610
- "consume-shared": 210
585
+ "javascript": 372135
611
586
  },
612
587
  "names": [],
613
588
  "idHints": [],
614
589
  "runtime": [
615
- "@openmrs/esm-stock-management-app"
590
+ "@openmrs/esm-stock-management-app",
591
+ "main"
616
592
  ],
617
593
  "files": [
618
- "914.js"
594
+ "880.js"
619
595
  ],
620
596
  "auxiliaryFiles": [
621
- "914.js.map"
597
+ "880.js.map"
622
598
  ],
623
- "hash": "44de79debf8baa38",
599
+ "hash": "ef3d62ebaa78c122",
624
600
  "childrenByOrder": {}
625
601
  },
626
602
  {
@@ -649,6 +625,30 @@
649
625
  ],
650
626
  "hash": "ec5f549cbfd789c7",
651
627
  "childrenByOrder": {}
628
+ },
629
+ {
630
+ "rendered": true,
631
+ "initial": false,
632
+ "entry": false,
633
+ "recorded": false,
634
+ "size": 1731984,
635
+ "sizes": {
636
+ "javascript": 1731774,
637
+ "consume-shared": 210
638
+ },
639
+ "names": [],
640
+ "idHints": [],
641
+ "runtime": [
642
+ "@openmrs/esm-stock-management-app"
643
+ ],
644
+ "files": [
645
+ "942.js"
646
+ ],
647
+ "auxiliaryFiles": [
648
+ "942.js.map"
649
+ ],
650
+ "hash": "12ff7ea2b5964123",
651
+ "childrenByOrder": {}
652
652
  }
653
653
  ]
654
654
  }
package/dist/routes.json CHANGED
@@ -1 +1 @@
1
- {"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{"fhir2":">=1.2","webservices.rest":"^2.24.0"},"extensions":[{"name":"stock-nav-menu","slot":"stock-sidebar-slot","component":"stockNavMenu","online":true,"offline":true},{"name":"overview-db-link","slot":"stock-page-dashboard-slot","component":"stockOverviewLink","meta":{"name":"overview","slot":"overview-dashboard-slot","title":"overview"},"order":0,"online":true,"offline":true},{"name":"stock-overview-db","slot":"overview-dashboard-slot","component":"stockOverview"},{"name":"operations-db-link","slot":"stock-page-dashboard-slot","component":"stockOperationsLink","meta":{"name":"operations","slot":"operations-dashboard-slot","title":"operations"},"order":2,"online":true,"offline":true},{"name":"stock-operations-db","slot":"operations-dashboard-slot","component":"stockOperations"},{"name":"items-db-link","slot":"stock-page-dashboard-slot","component":"stockItemsLink","meta":{"name":"items","slot":"items-dashboard-slot","title":"items"},"order":1,"online":true,"offline":true},{"name":"stock-items-db","slot":"items-dashboard-slot","component":"stockItems"},{"name":"user-scopes-db-link","slot":"stock-page-dashboard-slot","component":"stockUserScopesLink","meta":{"name":"user-scopes","slot":"user-scopes-dashboard-slot","title":"user-scopes"},"order":3,"online":true,"offline":true},{"name":"stock-user-scopes-db","slot":"user-scopes-dashboard-slot","component":"stockUserScopes"},{"name":"sources-db-link","slot":"stock-page-dashboard-slot","component":"stockSourcesLink","meta":{"name":"sources","slot":"sources-dashboard-slot","title":"Sources"},"order":2,"online":true,"offline":true},{"name":"stock-sources-db","slot":"sources-dashboard-slot","component":"stockSources"},{"name":"locations-db-link","slot":"stock-page-dashboard-slot","component":"stockLocationsLink","meta":{"name":"locations","slot":"locations-dashboard-slot","title":"Locations"},"order":4,"online":true,"offline":true},{"name":"stock-locations-db","slot":"locations-dashboard-slot","component":"stockLocations"},{"name":"reports-db-link","slot":"stock-page-dashboard-slot","component":"stockReportsLink","meta":{"name":"reports","slot":"reports-dashboard-slot","title":"Reports"},"order":5,"online":true,"offline":true},{"name":"stock-reports-db","slot":"reports-dashboard-slot","component":"stockReports"},{"name":"settings-db-link","slot":"stock-page-dashboard-slot","component":"stockSettingsLink","meta":{"name":"settings","slot":"settings-dashboard-slot","title":"Settings"},"order":6,"online":true,"offline":true},{"name":"stock-settings-db","slot":"settings-dashboard-slot","component":"stockSettings"},{"name":"stock-management-admin-card-link","slot":"system-admin-page-card-link-slot","component":"stockManagementAdminCardLink"},{"name":"stock-management-app-menu-item","component":"stockManagementAppMenuItem","slot":"app-menu-item-slot","meta":{"name":" Stock Management"}},{"name":"delete-packaging-unit-button","component":"deletePackagingUnitButton"}],"modals":[{"name":"delete-stock-modal","component":"deleteStockModal"},{"name":"delete-stock-user-scope-modal","component":"deleteUserScopeModal"},{"name":"delete-stock-rule-modal","component":"deleteStockRuleModal"},{"name":"delete-packaging-unit-modal","component":"deletePackagingUnitModal"},{"name":"import-bulk-stock-items","component":"importBulkStockItemsModal"},{"name":"stock-operation-dialog","component":"stockOperationModal"},{"name":"transactions-print-bincard-preview-modal","component":"transactionBincardPrintPreviewModal"},{"name":"transactions-print-stockcard-preview-modal","component":"transactionStockcardPrintPreviewModal"}],"workspaces":[{"name":"stock-operation-stock-items-form","component":"stockOperationStockItemForm","title":"Stock Items","type":"form","width":"wider"}],"pages":[{"component":"root","route":"stock-management"}],"version":"1.0.1-pre.785"}
1
+ {"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{"fhir2":">=1.2","webservices.rest":"^2.24.0"},"extensions":[{"name":"stock-nav-menu","slot":"stock-sidebar-slot","component":"stockNavMenu","online":true,"offline":true},{"name":"overview-db-link","slot":"stock-page-dashboard-slot","component":"stockOverviewLink","meta":{"name":"overview","slot":"overview-dashboard-slot","title":"overview"},"order":0,"online":true,"offline":true},{"name":"stock-overview-db","slot":"overview-dashboard-slot","component":"stockOverview"},{"name":"operations-db-link","slot":"stock-page-dashboard-slot","component":"stockOperationsLink","meta":{"name":"operations","slot":"operations-dashboard-slot","title":"operations"},"order":2,"online":true,"offline":true},{"name":"stock-operations-db","slot":"operations-dashboard-slot","component":"stockOperations"},{"name":"items-db-link","slot":"stock-page-dashboard-slot","component":"stockItemsLink","meta":{"name":"items","slot":"items-dashboard-slot","title":"items"},"order":1,"online":true,"offline":true},{"name":"stock-items-db","slot":"items-dashboard-slot","component":"stockItems"},{"name":"user-scopes-db-link","slot":"stock-page-dashboard-slot","component":"stockUserScopesLink","meta":{"name":"user-scopes","slot":"user-scopes-dashboard-slot","title":"user-scopes"},"order":3,"online":true,"offline":true},{"name":"stock-user-scopes-db","slot":"user-scopes-dashboard-slot","component":"stockUserScopes"},{"name":"sources-db-link","slot":"stock-page-dashboard-slot","component":"stockSourcesLink","meta":{"name":"sources","slot":"sources-dashboard-slot","title":"Sources"},"order":2,"online":true,"offline":true},{"name":"stock-sources-db","slot":"sources-dashboard-slot","component":"stockSources"},{"name":"locations-db-link","slot":"stock-page-dashboard-slot","component":"stockLocationsLink","meta":{"name":"locations","slot":"locations-dashboard-slot","title":"Locations"},"order":4,"online":true,"offline":true},{"name":"stock-locations-db","slot":"locations-dashboard-slot","component":"stockLocations"},{"name":"reports-db-link","slot":"stock-page-dashboard-slot","component":"stockReportsLink","meta":{"name":"reports","slot":"reports-dashboard-slot","title":"Reports"},"order":5,"online":true,"offline":true},{"name":"stock-reports-db","slot":"reports-dashboard-slot","component":"stockReports"},{"name":"settings-db-link","slot":"stock-page-dashboard-slot","component":"stockSettingsLink","meta":{"name":"settings","slot":"settings-dashboard-slot","title":"Settings"},"order":6,"online":true,"offline":true},{"name":"stock-settings-db","slot":"settings-dashboard-slot","component":"stockSettings"},{"name":"stock-management-admin-card-link","slot":"system-admin-page-card-link-slot","component":"stockManagementAdminCardLink"},{"name":"stock-management-app-menu-item","component":"stockManagementAppMenuItem","slot":"app-menu-item-slot","meta":{"name":" Stock Management"}},{"name":"delete-packaging-unit-button","component":"deletePackagingUnitButton"}],"modals":[{"name":"delete-stock-modal","component":"deleteStockModal"},{"name":"delete-stock-user-scope-modal","component":"deleteUserScopeModal"},{"name":"delete-stock-rule-modal","component":"deleteStockRuleModal"},{"name":"delete-packaging-unit-modal","component":"deletePackagingUnitModal"},{"name":"import-bulk-stock-items","component":"importBulkStockItemsModal"},{"name":"stock-operation-dialog","component":"stockOperationModal"},{"name":"transactions-print-bincard-preview-modal","component":"transactionBincardPrintPreviewModal"},{"name":"transactions-print-stockcard-preview-modal","component":"transactionStockcardPrintPreviewModal"}],"workspaces":[{"name":"stock-operation-form-workspace","component":"stockOperationFormWorkspace","title":"Stock Operation","type":"form","canMaximize":true,"width":"extra-wide"}],"pages":[{"component":"root","route":"stock-management"}],"version":"1.0.1-pre.790"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openmrs/esm-stock-management-app",
3
- "version": "1.0.1-pre.785",
3
+ "version": "1.0.1-pre.790",
4
4
  "license": "MPL-2.0",
5
5
  "description": "Stock management microfrontend for OpenMRS 3.x",
6
6
  "browser": "dist/openmrs-esm-stock-management-app.js",
@@ -40,6 +40,11 @@ export const configSchema = {
40
40
  _description: 'UUID for the stock dispensing units uuid',
41
41
  _default: '162402AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',
42
42
  },
43
+ useItemCommonNameAsDisplay: {
44
+ _type: Type.Boolean,
45
+ _description: 'true to use item common name as display and false to use Drug name as display',
46
+ _default: true,
47
+ },
43
48
  stockItemCategoryUUID: {
44
49
  _type: Type.ConceptUuid,
45
50
  _description: 'UUID for the stock item category',
@@ -74,6 +79,7 @@ export type ConfigObject = {
74
79
  stockSourceTypeUUID: string;
75
80
  dispensingUnitsUUID: string;
76
81
  stockItemCategoryUUID: string;
82
+ useItemCommonNameAsDisplay: boolean;
77
83
  logo: {
78
84
  src: string;
79
85
  alt: string;
package/src/index.ts CHANGED
@@ -1,27 +1,22 @@
1
1
  import { defineConfigSchema, getAsyncLifecycle, getSyncLifecycle } from '@openmrs/esm-framework';
2
2
  import { configSchema } from './config-schema';
3
- import appMenu from './stock-app-menu-item/item.component';
4
- import bulkImportComponent from './stock-items/add-bulk-stock-item/stock-items-bulk-import.component';
5
- import deleteUserModalComponent from './stock-user-role-scopes/delete-stock-user-scope-modal.component';
6
- import deleteStockModalComponent from './stock-sources/delete-stock-modal.component';
7
- import stockOperationDialogComponent from './stock-operations/stock-operations-dialog/stock-operations-dialog.component';
8
- import stockManagementComponent from './stock-management.component';
9
- import stockManagementAdminCardLinkComponent from './stock-management-admin-card-link.component';
10
- import deletePackagingUnitModalButtonComponent from './stock-items/add-stock-item/packaging-units/packaging-units-delete-modal-button.component';
11
- import deletePackagingUnitComponent from './stock-items/add-stock-item/packaging-units/packaging-units-delete-modal.component';
12
- import Root from './root.component';
13
- import StockHomeLandingPage from './stock-home/stock-home-landing-page-component';
14
3
  import { createDashboardLink } from './createDashboardLink';
4
+ import Root from './root.component';
15
5
  import SideMenu from './side-menu/side-menu.component';
16
- import StockOperationsComponent from './stock-operations/stock-operations.component';
6
+ import appMenu from './stock-app-menu-item/item.component';
7
+ import StockHomeLandingPage from './stock-home/stock-home-landing-page-component';
8
+ import deletePackagingUnitModalButtonComponent from './stock-items/add-stock-item/packaging-units/packaging-units-delete-modal-button.component';
9
+ import TransactionsBincardPrintPreview from './stock-items/add-stock-item/transactions/printout/transactions-print-bincard-preview.modal';
10
+ import TransactionsStockcardPrintPreview from './stock-items/add-stock-item/transactions/printout/transactions-print-stockcard-preview.modal';
17
11
  import StockItems from './stock-items/stock-items.component';
18
- import StockUserScopes from './stock-user-role-scopes/stock-user-role-scopes.component';
19
- import StockSources from './stock-sources/stock-sources.component';
20
12
  import StockLocations from './stock-locations/stock-locations.component';
13
+ import stockManagementAdminCardLinkComponent from './stock-management-admin-card-link.component';
14
+ import stockManagementComponent from './stock-management.component';
15
+ import StockOperationsComponent from './stock-operations/stock-operations.component';
21
16
  import StockReports from './stock-reports/report-list/stock-reports.component';
22
17
  import StockSettings from './stock-settings/stock-settings.component';
23
- import TransactionsBincardPrintPreview from './stock-items/add-stock-item/transactions/printout/transactions-print-bincard-preview.modal';
24
- import TransactionsStockcardPrintPreview from './stock-items/add-stock-item/transactions/printout/transactions-print-stockcard-preview.modal';
18
+ import StockSources from './stock-sources/stock-sources.component';
19
+ import StockUserScopes from './stock-user-role-scopes/stock-user-role-scopes.component';
25
20
 
26
21
  const moduleName = '@openmrs/esm-stock-management-app';
27
22
 
@@ -130,13 +125,12 @@ export const deletePackagingUnitButton = getSyncLifecycle(deletePackagingUnitMod
130
125
 
131
126
  export const stockManagementAppMenuItem = getSyncLifecycle(appMenu, options);
132
127
 
133
- export const stockOperationStockItemForm = getAsyncLifecycle(
134
- () => import('./stock-operations/stock-operations-forms/stock-item-form/stock-item-form.workspace'),
135
- options,
136
- );
137
128
  export const transactionBincardPrintPreviewModal = getSyncLifecycle(TransactionsBincardPrintPreview, options);
138
129
  export const transactionStockcardPrintPreviewModal = getSyncLifecycle(TransactionsStockcardPrintPreview, options);
139
-
130
+ export const stockOperationFormWorkspace = getAsyncLifecycle(
131
+ () => import('./stock-operations/stock-operations-forms/stock-operation-form.component'),
132
+ options,
133
+ );
140
134
  export function startupApp() {
141
135
  defineConfigSchema(moduleName, configSchema);
142
136
  }
package/src/routes.json CHANGED
@@ -210,11 +210,12 @@
210
210
  ],
211
211
  "workspaces": [
212
212
  {
213
- "name": "stock-operation-stock-items-form",
214
- "component": "stockOperationStockItemForm",
215
- "title": "Stock Items",
213
+ "name": "stock-operation-form-workspace",
214
+ "component": "stockOperationFormWorkspace",
215
+ "title": "Stock Operation",
216
216
  "type": "form",
217
- "width": "wider"
217
+ "canMaximize": true,
218
+ "width": "extra-wide"
218
219
  }
219
220
  ],
220
221
  "pages": [
@@ -0,0 +1,34 @@
1
+ @use '@carbon/layout';
2
+ @use '@carbon/type';
3
+ @use '@carbon/colors';
4
+
5
+ .title {
6
+ @include type.type-style('heading-02');
7
+ display: flex;
8
+ align-items: center;
9
+ justify-content: space-between;
10
+ margin: layout.$spacing-05;
11
+ row-gap: 1.5rem;
12
+ position: relative;
13
+
14
+ &::after {
15
+ content: '';
16
+ display: block;
17
+ width: 2rem;
18
+ border-bottom: 0.375rem solid var(--brand-03);
19
+ position: absolute;
20
+ bottom: -0.75rem;
21
+ left: 0;
22
+ }
23
+
24
+ & > span {
25
+ @include type.type-style('body-01');
26
+ }
27
+ }
28
+
29
+ .container {
30
+ background-color: colors.$white-0;
31
+ border: 1px solid colors.$gray-20;
32
+ margin-bottom: 1rem;
33
+ width: 100%;
34
+ }
@@ -0,0 +1,111 @@
1
+ import {
2
+ DataTable,
3
+ Pagination,
4
+ Search,
5
+ Table,
6
+ TableBody,
7
+ TableCell,
8
+ TableHead,
9
+ TableHeader,
10
+ TableRow,
11
+ Tile,
12
+ } from '@carbon/react';
13
+ import { formatDate, parseDate, usePagination } from '@openmrs/esm-framework';
14
+ import React, { useMemo, useState } from 'react';
15
+ import { useTranslation } from 'react-i18next';
16
+ import { StockOperationItemDTO } from '../../../core/api/types/stockOperation/StockOperationItemDTO';
17
+ import styles from './stock-items-table.scss';
18
+
19
+ type Props = {
20
+ items: Array<StockOperationItemDTO>;
21
+ };
22
+ const StockItemsTable: React.FC<Props> = ({ items }) => {
23
+ const { t } = useTranslation();
24
+ const [pageSize, setPageSize] = useState(10);
25
+ const pageSizesOptions = useMemo(() => [5, 10, 20, 50, 100], []);
26
+ const [searchText, setSearchText] = useState();
27
+
28
+ const handleSearch = (item: StockOperationItemDTO) => {
29
+ if (!searchText) return true;
30
+ return item.commonName.toLowerCase().includes(searchText);
31
+ };
32
+ const filtered = items.filter(handleSearch);
33
+ const { results, totalPages, currentPage, goTo } = usePagination(filtered, pageSize);
34
+
35
+ const headers = useMemo(
36
+ () => [
37
+ {
38
+ header: t('item', 'Item'),
39
+ key: 'commonName',
40
+ },
41
+ {
42
+ header: t('batchNo', 'Batch No'),
43
+ key: 'batchNo',
44
+ },
45
+ {
46
+ header: t('expiry', 'Expiry'),
47
+ key: 'expiration',
48
+ },
49
+ {
50
+ header: t('qty', 'Qty'),
51
+ key: 'quantity',
52
+ },
53
+ {
54
+ header: t('uom', 'UoM'),
55
+ key: 'stockItemPackagingUOMName',
56
+ },
57
+ ],
58
+ [t],
59
+ );
60
+
61
+ const tableRows = useMemo(
62
+ () =>
63
+ results.map((item, index) => ({
64
+ id: index,
65
+ ...item,
66
+ expiration: item.expiration ? formatDate(parseDate(`${item.expiration}`)) : '--',
67
+ })),
68
+ [results],
69
+ );
70
+
71
+ return (
72
+ <Tile className={styles.container}>
73
+ <span className={styles.title}>{t('stockItems', 'Stock items')}</span>
74
+ <Search value={searchText} onChange={({ target: { value } }) => setSearchText(value)} />
75
+ <DataTable useZebraStyles={true} rows={tableRows} headers={headers}>
76
+ {({ rows, headers, getTableProps, getHeaderProps, getRowProps }) => (
77
+ <Table {...getTableProps()}>
78
+ <TableHead>
79
+ <TableRow>
80
+ {headers.map((header) => (
81
+ <TableHeader {...getHeaderProps({ header })}>{header.header}</TableHeader>
82
+ ))}
83
+ </TableRow>
84
+ </TableHead>
85
+ <TableBody>
86
+ {rows.map((row) => (
87
+ <TableRow {...getRowProps({ row })}>
88
+ {row.cells.map((cell) => (
89
+ <TableCell key={cell.id}>{cell.value}</TableCell>
90
+ ))}
91
+ </TableRow>
92
+ ))}
93
+ </TableBody>
94
+ </Table>
95
+ )}
96
+ </DataTable>
97
+ <Pagination
98
+ page={currentPage}
99
+ pageSize={pageSize}
100
+ pageSizes={pageSizesOptions}
101
+ totalItems={filtered.length}
102
+ onChange={({ page, pageSize }) => {
103
+ goTo(page);
104
+ setPageSize(pageSize);
105
+ }}
106
+ />
107
+ </Tile>
108
+ );
109
+ };
110
+
111
+ export default StockItemsTable;
@@ -0,0 +1,116 @@
1
+ import { InlineLoading, Layer, Row } from '@carbon/react';
2
+ import React, { useMemo } from 'react';
3
+ import { useTranslation } from 'react-i18next';
4
+ import { StockOperationDTO } from '../../../core/api/types/stockOperation/StockOperationDTO';
5
+ import { useStockOperationTypes } from '../../../stock-lookups/stock-lookups.resource';
6
+ import StockoperationActions from '../../stock-operation-actions.component';
7
+ import StockOperationLinks from '../../stock-operation-links.component';
8
+ import StockItemsTable from './stock-items-table';
9
+ import styles from './stock-operation-expanded-row.scss';
10
+ import StockOpertationStatus from './stock-operations-status';
11
+
12
+ interface StockOperationExpandedRowProps {
13
+ model: StockOperationDTO;
14
+ }
15
+
16
+ const StockOperationExpandedRow: React.FC<StockOperationExpandedRowProps> = (props) => {
17
+ const { t } = useTranslation();
18
+ const { types, isLoading, error } = useStockOperationTypes();
19
+ const currentOperationType = useMemo(() => {
20
+ return types?.results?.find(({ uuid }) => props.model.operationTypeUuid === uuid);
21
+ }, [props.model.operationTypeUuid, types?.results]);
22
+ return (
23
+ <>
24
+ <Layer className={styles.statusContainer}>
25
+ <Row className={styles.statusContainerRow}>
26
+ {props.model?.dateCreated && (
27
+ <StockOpertationStatus
28
+ status={t('started', 'Started')}
29
+ statusFilledDate={props.model?.dateCreated.toString()}
30
+ statusFillerFamilyName={props.model?.creatorFamilyName}
31
+ statusFillerGivenName={props.model?.creatorGivenName}
32
+ />
33
+ )}
34
+ {props.model.submittedDate && (
35
+ <StockOpertationStatus
36
+ status={t('submitted', 'Submitted')}
37
+ statusFilledDate={props.model?.submittedDate.toString()}
38
+ statusFillerFamilyName={props.model?.submittedByFamilyName}
39
+ statusFillerGivenName={props.model?.submittedByGivenName}
40
+ />
41
+ )}
42
+ {props.model?.dispatchedDate && (
43
+ <StockOpertationStatus
44
+ status={t('dispatched', 'Dispatched')}
45
+ statusFilledDate={props.model?.dispatchedDate.toString()}
46
+ statusFillerFamilyName={props.model?.dispatchedByFamilyName}
47
+ statusFillerGivenName={props.model?.dispatchedByGivenName}
48
+ />
49
+ )}
50
+ {props.model?.returnedDate && (
51
+ <StockOpertationStatus
52
+ status={t('returned', 'Returned')}
53
+ statusFilledDate={props.model?.returnedDate.toString()}
54
+ statusFillerFamilyName={props.model?.returnedByFamilyName}
55
+ statusFillerGivenName={props.model?.returnedByGivenName}
56
+ extraStatusinfo={<span className={styles.text}>{props.model?.returnReason}</span>}
57
+ />
58
+ )}
59
+ {props.model?.completedDate && (
60
+ <StockOpertationStatus
61
+ status={t('completed', 'Completed')}
62
+ statusFilledDate={props.model?.completedDate.toString()}
63
+ statusFillerFamilyName={props.model?.completedByFamilyName}
64
+ statusFillerGivenName={props.model?.completedByGivenName}
65
+ />
66
+ )}
67
+ {props.model?.status === 'CANCELLED' && (
68
+ <StockOpertationStatus
69
+ status={t('cancelled', 'Cancelled')}
70
+ statusFilledDate={props.model?.cancelledDate.toString()}
71
+ statusFillerFamilyName={props.model?.cancelledByFamilyName}
72
+ statusFillerGivenName={props.model?.cancelledByGivenName}
73
+ extraStatusinfo={<span className={styles.text}>{props.model?.cancelReason}</span>}
74
+ />
75
+ )}
76
+ {props.model?.status === 'REJECTED' && (
77
+ <StockOpertationStatus
78
+ status={t('rejected', 'Rejected')}
79
+ statusFilledDate={props.model?.rejectedDate.toString()}
80
+ statusFillerFamilyName={props.model?.rejectedByFamilyName}
81
+ statusFillerGivenName={props.model?.rejectedByGivenName}
82
+ extraStatusinfo={<span>{props.model?.rejectionReason}</span>}
83
+ />
84
+ )}
85
+ </Row>
86
+ <Row className={styles.statusContainerRow}>
87
+ {isLoading && (
88
+ <InlineLoading
89
+ description={t('loading StockoperationLinks', 'Loading stock operation links') + '...'}
90
+ iconDescription={t('loading StockoperationLinks', 'Loading stock operation links')}
91
+ />
92
+ )}
93
+ {currentOperationType && (
94
+ <StockOperationLinks stockOperationType={currentOperationType} stockOperation={props.model} />
95
+ )}
96
+ </Row>
97
+ <Row className={styles.statusContainerRow}>
98
+ <StockItemsTable items={props.model.stockOperationItems} />
99
+ </Row>
100
+ <Row className={styles.statusContainerRow}>
101
+ {isLoading && (
102
+ <InlineLoading
103
+ description={t('loadingOperationActions', 'Loading stock operation actions') + '...'}
104
+ iconDescription={t('loadingOperationActions', 'Loading stock operation actions')}
105
+ />
106
+ )}
107
+ {currentOperationType && (
108
+ <StockoperationActions stockOperationType={currentOperationType} stockOperation={props.model} />
109
+ )}
110
+ </Row>
111
+ </Layer>
112
+ </>
113
+ );
114
+ };
115
+
116
+ export default StockOperationExpandedRow;
@@ -0,0 +1,31 @@
1
+ @use '@carbon/layout';
2
+ @use '@carbon/type';
3
+ @use '~@openmrs/esm-styleguide/src/vars' as *;
4
+
5
+ .textHeading {
6
+ font-weight: bold;
7
+ }
8
+
9
+ .statusDescriptions {
10
+ margin-top: 4px;
11
+
12
+ .text {
13
+ margin-right: 4px;
14
+ }
15
+ }
16
+
17
+ .statusContainer {
18
+ display: flex;
19
+ margin: 10px;
20
+ gap: layout.$spacing-05;
21
+ flex-direction: column;
22
+ padding: layout.$spacing-05;
23
+ }
24
+
25
+ .statusContainerRow {
26
+ display: flex;
27
+ width: 100%;
28
+ border: none;
29
+ gap: layout.$spacing-05;
30
+ flex: 1;
31
+ }