@openmrs/esm-stock-management-app 3.1.1-pre.1179 → 3.1.1-pre.1184

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 (112) hide show
  1. package/.husky/pre-commit +0 -5
  2. package/.husky/pre-push +0 -3
  3. package/dist/130.js +1 -1
  4. package/dist/130.js.map +1 -1
  5. package/dist/2177.js +1 -1
  6. package/dist/2177.js.map +1 -1
  7. package/dist/3220.js +1 -1
  8. package/dist/3220.js.map +1 -1
  9. package/dist/4300.js +1 -1
  10. package/dist/4732.js +1 -1
  11. package/dist/4732.js.map +1 -1
  12. package/dist/5125.js +1 -1
  13. package/dist/5125.js.map +1 -1
  14. package/dist/5333.js +1 -1
  15. package/dist/5333.js.map +1 -1
  16. package/dist/5609.js +1 -1
  17. package/dist/5609.js.map +1 -1
  18. package/dist/6184.js +1 -1
  19. package/dist/6184.js.map +1 -1
  20. package/dist/6757.js +1 -1
  21. package/dist/6757.js.map +1 -1
  22. package/dist/8161.js +1 -1
  23. package/dist/8161.js.map +1 -1
  24. package/dist/9186.js +1 -1
  25. package/dist/9186.js.map +1 -1
  26. package/dist/main.js +1 -1
  27. package/dist/main.js.map +1 -1
  28. package/dist/openmrs-esm-stock-management-app.js.buildmanifest.json +41 -41
  29. package/dist/routes.json +1 -1
  30. package/package.json +1 -1
  31. package/src/constants.ts +2 -3
  32. package/src/core/components/carbon/controlled-combo-box.component.tsx +12 -9
  33. package/src/core/components/carbon/controlled-radio-button-group.component.tsx +21 -16
  34. package/src/core/components/table/table.component.tsx +26 -17
  35. package/src/core/components/table/table.scss +4 -0
  36. package/src/core/components/table/types.ts +12 -0
  37. package/src/core/components/tabs/vertical-tabs.component.tsx +2 -6
  38. package/src/declarations.d.ts +0 -3
  39. package/src/stock-home/stock-home-inventory-card.component.tsx +2 -2
  40. package/src/stock-items/add-stock-item/add-stock-item.component.tsx +1 -1
  41. package/src/stock-items/add-stock-item/batch-information/batch-information-locations/batch-information-locations-filter.component.tsx +0 -3
  42. package/src/stock-items/add-stock-item/batch-information/batch-information.component.tsx +4 -4
  43. package/src/stock-items/add-stock-item/dispensing-package-measurement/dispensing-package-measurement.component.tsx +2 -5
  44. package/src/stock-items/add-stock-item/drug-selector/drug-selector.component.tsx +4 -8
  45. package/src/stock-items/add-stock-item/packaging-units/packaging-units-delete.modal.tsx +2 -2
  46. package/src/stock-items/add-stock-item/packaging-units/packaging-units.component.tsx +32 -18
  47. package/src/stock-items/add-stock-item/packaging-units-concept-selector/packaging-units-concept-selector.component.tsx +2 -5
  48. package/src/stock-items/add-stock-item/preferred-vendor-selector/preferred-vendor-selector.component.tsx +0 -3
  49. package/src/stock-items/add-stock-item/stock-item-category-selector/stock-item-category-selector.component.tsx +2 -5
  50. package/src/stock-items/add-stock-item/stock-item-details/stock-item-details.component.tsx +10 -10
  51. package/src/stock-items/add-stock-item/stock-item-references/stock-item-references.component.tsx +36 -27
  52. package/src/stock-items/add-stock-item/stock-item-references/stock-references-selector.component.tsx +2 -5
  53. package/src/stock-items/add-stock-item/stock-item-rules/add-stock-rules.component.tsx +16 -16
  54. package/src/stock-items/add-stock-item/stock-item-rules/stock-item-rules.component.tsx +10 -9
  55. package/src/stock-items/add-stock-item/stock-item-rules/stock-rules-filter.component.tsx +8 -3
  56. package/src/stock-items/add-stock-item/stock-item-units-edit/stock-item-units-edit.component.tsx +2 -2
  57. package/src/stock-items/add-stock-item/transactions/printout/printable-bincard-transaction-header.component.tsx +5 -5
  58. package/src/stock-items/add-stock-item/transactions/printout/printable-stockcard-transaction-header.component.tsx +3 -3
  59. package/src/stock-items/add-stock-item/transactions/printout/transactions-print-action.component.tsx +2 -5
  60. package/src/stock-items/add-stock-item/transactions/printout/transactions-print-bincard-preview.modal.tsx +1 -1
  61. package/src/stock-items/add-stock-item/transactions/transaction-filters/transaction-locations-filter.component.tsx +0 -3
  62. package/src/stock-items/components/filter-stock-items/filter-stock-items.component.tsx +6 -4
  63. package/src/stock-items/edit-stock-item/edit-stock-item-action-menu.component.tsx +1 -1
  64. package/src/stock-items/stock-items-table.component.tsx +21 -15
  65. package/src/stock-items/stock-items-table.resource.ts +1 -1
  66. package/src/stock-items/stock-items.resource.ts +1 -2
  67. package/src/stock-locations/add-locations-form.workspace.tsx +9 -11
  68. package/src/stock-locations/location-admin-form.component.tsx +9 -4
  69. package/src/stock-locations/stock-locations-table.component.tsx +3 -3
  70. package/src/stock-lookups/stock-lookups.resource.ts +2 -2
  71. package/src/stock-management-admin-card-link.component.tsx +1 -1
  72. package/src/stock-operations/add-stock-operation/stock-operations-expanded-row/stock-items-table.tsx +12 -8
  73. package/src/stock-operations/add-stock-operation/stock-operations-expanded-row/stock-operation-expanded-row.component.tsx +4 -4
  74. package/src/stock-operations/edit-stock-operation/edit-stock-operation-action-menu.component.tsx +6 -7
  75. package/src/stock-operations/stock-operation-operations-filter/stock-operation-operations-filter.component.tsx +7 -3
  76. package/src/stock-operations/stock-operation-sources-filter/stock-operation-sources-filter.component.tsx +8 -4
  77. package/src/stock-operations/stock-operation-statuses-filter/stock-operation-statuses-filter.component.tsx +16 -14
  78. package/src/stock-operations/stock-operation-types-selector/stock-operation-types-selector.component.tsx +4 -4
  79. package/src/stock-operations/stock-operations-filters.component.tsx +4 -2
  80. package/src/stock-operations/stock-operations-forms/input-components/batch-no-selector.component.tsx +2 -2
  81. package/src/stock-operations/stock-operations-forms/input-components/batch-no-selector.test.tsx +1 -1
  82. package/src/stock-operations/stock-operations-forms/input-components/qty-uim-selector.test.tsx +1 -1
  83. package/src/stock-operations/stock-operations-forms/input-components/quantity-uom-selector.component.tsx +3 -3
  84. package/src/stock-operations/stock-operations-forms/input-components/stock-item-search.component.tsx +3 -4
  85. package/src/stock-operations/stock-operations-forms/input-components/stock-operation-reason-selector.component.tsx +3 -3
  86. package/src/stock-operations/stock-operations-forms/input-components/users-selector.component.tsx +6 -6
  87. package/src/stock-operations/stock-operations-forms/step2.test.tsx +1 -5
  88. package/src/stock-operations/stock-operations-forms/steps/base-operation-details-form-step.tsx +15 -16
  89. package/src/stock-operations/stock-operations-forms/steps/quantity-uom-cell.component.tsx +1 -1
  90. package/src/stock-operations/stock-operations-forms/steps/received-items.component.tsx +2 -2
  91. package/src/stock-operations/stock-operations-forms/steps/stock-operation-items-form-step.component.tsx +24 -21
  92. package/src/stock-operations/stock-operations-forms/steps/stock-operation-submission-form-step.component.tsx +4 -4
  93. package/src/stock-operations/stock-operations-forms/stock-item-form/stock-item-form.workspace.tsx +60 -53
  94. package/src/stock-operations/stock-operations-forms/stock-operation-form.component.tsx +17 -12
  95. package/src/stock-operations/stock-operations-modal/stock-operations-completed-dispatch-button.component.tsx +1 -1
  96. package/src/stock-operations/stock-operations-modal/stock-operations-issue-stock-button.component.tsx +1 -1
  97. package/src/stock-operations/stock-operations-modal/stock-operations-print-button.component.tsx +6 -2
  98. package/src/stock-operations/stock-operations-modal/stock-operations-reject-button.component.tsx +4 -5
  99. package/src/stock-operations/stock-operations-modal/stock-operations.modal.tsx +4 -2
  100. package/src/stock-operations/stock-operations-table.component.tsx +16 -12
  101. package/src/stock-operations/stock-operations-table.resource.ts +1 -0
  102. package/src/stock-reports/generate-report/create-stock-report.workspace.tsx +31 -35
  103. package/src/stock-reports/report-list/stock-reports.component.tsx +5 -9
  104. package/src/stock-reports/stock-reports.resource.ts +1 -1
  105. package/src/stock-sources/add-stock-sources/add-stock-sources.workspace.tsx +6 -6
  106. package/src/stock-sources/stock-sources-items-table.component.tsx +14 -10
  107. package/src/stock-user-role-scopes/add-stock-user-scope/add-stock-user-role-scope.workspace.tsx +52 -53
  108. package/src/stock-user-role-scopes/delete-stock-user-scope/delete-stock-user-scope.component.tsx +1 -1
  109. package/src/stock-user-role-scopes/delete-stock-user-scope.modal.tsx +4 -1
  110. package/src/stock-user-role-scopes/stock-user-role-scopes-items-table.component.tsx +8 -12
  111. package/translations/en.json +105 -71
  112. package/src/core/components/carbon/controlled-dropdown.component.tsx +0 -37
@@ -5,9 +5,9 @@
5
5
  "initial": false,
6
6
  "entry": false,
7
7
  "recorded": false,
8
- "size": 42799,
8
+ "size": 42809,
9
9
  "sizes": {
10
- "javascript": 42799
10
+ "javascript": 42809
11
11
  },
12
12
  "names": [],
13
13
  "idHints": [],
@@ -21,7 +21,7 @@
21
21
  "auxiliaryFiles": [
22
22
  "130.js.map"
23
23
  ],
24
- "hash": "5bc126556c6cb026",
24
+ "hash": "88b0342d767f0c0e",
25
25
  "childrenByOrder": {}
26
26
  },
27
27
  {
@@ -374,7 +374,7 @@
374
374
  "auxiliaryFiles": [
375
375
  "2177.js.map"
376
376
  ],
377
- "hash": "82c42d0f22583234",
377
+ "hash": "70d6b1d33b4f5ee1",
378
378
  "childrenByOrder": {}
379
379
  },
380
380
  {
@@ -474,7 +474,7 @@
474
474
  "auxiliaryFiles": [
475
475
  "3041.js.map"
476
476
  ],
477
- "hash": "99a668b8f93226e7",
477
+ "hash": "8e692939d24b9f16",
478
478
  "childrenByOrder": {}
479
479
  },
480
480
  {
@@ -531,9 +531,9 @@
531
531
  "initial": false,
532
532
  "entry": false,
533
533
  "recorded": false,
534
- "size": 66396,
534
+ "size": 66568,
535
535
  "sizes": {
536
- "javascript": 66396
536
+ "javascript": 66568
537
537
  },
538
538
  "names": [],
539
539
  "idHints": [],
@@ -547,7 +547,7 @@
547
547
  "auxiliaryFiles": [
548
548
  "3220.js.map"
549
549
  ],
550
- "hash": "7f8f6a8f6b0ae827",
550
+ "hash": "078e3899db93dd94",
551
551
  "childrenByOrder": {}
552
552
  },
553
553
  {
@@ -685,7 +685,7 @@
685
685
  "auxiliaryFiles": [
686
686
  "4225.js.map"
687
687
  ],
688
- "hash": "28271064fdca2fe1",
688
+ "hash": "22024486d6f4131e",
689
689
  "childrenByOrder": {}
690
690
  },
691
691
  {
@@ -693,9 +693,9 @@
693
693
  "initial": false,
694
694
  "entry": false,
695
695
  "recorded": false,
696
- "size": 13631,
696
+ "size": 15090,
697
697
  "sizes": {
698
- "javascript": 13631
698
+ "javascript": 15090
699
699
  },
700
700
  "names": [],
701
701
  "idHints": [],
@@ -707,7 +707,7 @@
707
707
  "4300.js"
708
708
  ],
709
709
  "auxiliaryFiles": [],
710
- "hash": "c52dc4ccb1cba2d6",
710
+ "hash": "53933917309d6844",
711
711
  "childrenByOrder": {}
712
712
  },
713
713
  {
@@ -805,9 +805,9 @@
805
805
  "initial": false,
806
806
  "entry": false,
807
807
  "recorded": false,
808
- "size": 61696,
808
+ "size": 61607,
809
809
  "sizes": {
810
- "javascript": 61696
810
+ "javascript": 61607
811
811
  },
812
812
  "names": [],
813
813
  "idHints": [],
@@ -821,7 +821,7 @@
821
821
  "auxiliaryFiles": [
822
822
  "4732.js.map"
823
823
  ],
824
- "hash": "35f64fc891eb04c5",
824
+ "hash": "78b177c7c59cbf52",
825
825
  "childrenByOrder": {}
826
826
  },
827
827
  {
@@ -875,9 +875,9 @@
875
875
  "initial": false,
876
876
  "entry": false,
877
877
  "recorded": false,
878
- "size": 1193875,
878
+ "size": 1193676,
879
879
  "sizes": {
880
- "javascript": 1193875
880
+ "javascript": 1193676
881
881
  },
882
882
  "names": [],
883
883
  "idHints": [],
@@ -890,7 +890,7 @@
890
890
  "auxiliaryFiles": [
891
891
  "5125.js.map"
892
892
  ],
893
- "hash": "d416abac70d118c4",
893
+ "hash": "2ae37ae70d9623ef",
894
894
  "childrenByOrder": {}
895
895
  },
896
896
  {
@@ -942,9 +942,9 @@
942
942
  "initial": false,
943
943
  "entry": false,
944
944
  "recorded": false,
945
- "size": 336072,
945
+ "size": 336194,
946
946
  "sizes": {
947
- "javascript": 336072
947
+ "javascript": 336194
948
948
  },
949
949
  "names": [],
950
950
  "idHints": [],
@@ -958,7 +958,7 @@
958
958
  "auxiliaryFiles": [
959
959
  "5333.js.map"
960
960
  ],
961
- "hash": "f1430c31f3b3bf56",
961
+ "hash": "6ec66111f95a2dc1",
962
962
  "childrenByOrder": {}
963
963
  },
964
964
  {
@@ -1006,7 +1006,7 @@
1006
1006
  "auxiliaryFiles": [
1007
1007
  "5422.js.map"
1008
1008
  ],
1009
- "hash": "3c636702fe4c7fcb",
1009
+ "hash": "deb66a7ae0395cd6",
1010
1010
  "childrenByOrder": {}
1011
1011
  },
1012
1012
  {
@@ -1036,9 +1036,9 @@
1036
1036
  "initial": false,
1037
1037
  "entry": false,
1038
1038
  "recorded": false,
1039
- "size": 16265,
1039
+ "size": 16330,
1040
1040
  "sizes": {
1041
- "javascript": 16265
1041
+ "javascript": 16330
1042
1042
  },
1043
1043
  "names": [],
1044
1044
  "idHints": [],
@@ -1052,7 +1052,7 @@
1052
1052
  "auxiliaryFiles": [
1053
1053
  "5609.js.map"
1054
1054
  ],
1055
- "hash": "498c711c4d0ff106",
1055
+ "hash": "0a139227de0e49d2",
1056
1056
  "childrenByOrder": {}
1057
1057
  },
1058
1058
  {
@@ -1125,9 +1125,9 @@
1125
1125
  "initial": false,
1126
1126
  "entry": false,
1127
1127
  "recorded": false,
1128
- "size": 15324,
1128
+ "size": 15317,
1129
1129
  "sizes": {
1130
- "javascript": 15324
1130
+ "javascript": 15317
1131
1131
  },
1132
1132
  "names": [],
1133
1133
  "idHints": [],
@@ -1141,7 +1141,7 @@
1141
1141
  "auxiliaryFiles": [
1142
1142
  "6184.js.map"
1143
1143
  ],
1144
- "hash": "178d0d2d5a5bb6b7",
1144
+ "hash": "25d40dc968c8bec9",
1145
1145
  "childrenByOrder": {}
1146
1146
  },
1147
1147
  {
@@ -1260,7 +1260,7 @@
1260
1260
  "auxiliaryFiles": [
1261
1261
  "6606.js.map"
1262
1262
  ],
1263
- "hash": "00c58885bc4b42a1",
1263
+ "hash": "0acb966245874bd1",
1264
1264
  "childrenByOrder": {}
1265
1265
  },
1266
1266
  {
@@ -1290,9 +1290,9 @@
1290
1290
  "initial": false,
1291
1291
  "entry": false,
1292
1292
  "recorded": false,
1293
- "size": 27612,
1293
+ "size": 27973,
1294
1294
  "sizes": {
1295
- "javascript": 27612
1295
+ "javascript": 27973
1296
1296
  },
1297
1297
  "names": [],
1298
1298
  "idHints": [],
@@ -1306,7 +1306,7 @@
1306
1306
  "auxiliaryFiles": [
1307
1307
  "6757.js.map"
1308
1308
  ],
1309
- "hash": "4b2ab09462947725",
1309
+ "hash": "970f85564f5d7088",
1310
1310
  "childrenByOrder": {}
1311
1311
  },
1312
1312
  {
@@ -1451,9 +1451,9 @@
1451
1451
  "initial": false,
1452
1452
  "entry": false,
1453
1453
  "recorded": false,
1454
- "size": 31469,
1454
+ "size": 31474,
1455
1455
  "sizes": {
1456
- "javascript": 31469
1456
+ "javascript": 31474
1457
1457
  },
1458
1458
  "names": [],
1459
1459
  "idHints": [],
@@ -1467,7 +1467,7 @@
1467
1467
  "auxiliaryFiles": [
1468
1468
  "8161.js.map"
1469
1469
  ],
1470
- "hash": "2f4a25523e0da8c8",
1470
+ "hash": "ca06d2393681e437",
1471
1471
  "childrenByOrder": {}
1472
1472
  },
1473
1473
  {
@@ -1563,10 +1563,10 @@
1563
1563
  "initial": true,
1564
1564
  "entry": true,
1565
1565
  "recorded": false,
1566
- "size": 5478052,
1566
+ "size": 5477853,
1567
1567
  "sizes": {
1568
1568
  "consume-shared": 210,
1569
- "javascript": 5455820,
1569
+ "javascript": 5455621,
1570
1570
  "share-init": 336,
1571
1571
  "runtime": 21686
1572
1572
  },
@@ -1583,7 +1583,7 @@
1583
1583
  "auxiliaryFiles": [
1584
1584
  "main.js.map"
1585
1585
  ],
1586
- "hash": "eb199dd94a12ae7c",
1586
+ "hash": "a285452b3aa34fe5",
1587
1587
  "childrenByOrder": {}
1588
1588
  },
1589
1589
  {
@@ -1591,9 +1591,9 @@
1591
1591
  "initial": false,
1592
1592
  "entry": false,
1593
1593
  "recorded": false,
1594
- "size": 216707,
1594
+ "size": 217209,
1595
1595
  "sizes": {
1596
- "javascript": 216707
1596
+ "javascript": 217209
1597
1597
  },
1598
1598
  "names": [],
1599
1599
  "idHints": [],
@@ -1607,7 +1607,7 @@
1607
1607
  "auxiliaryFiles": [
1608
1608
  "9186.js.map"
1609
1609
  ],
1610
- "hash": "5f82966e2167fb1a",
1610
+ "hash": "853f8452e93562fd",
1611
1611
  "childrenByOrder": {}
1612
1612
  },
1613
1613
  {
package/dist/routes.json CHANGED
@@ -1 +1 @@
1
- {"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{"fhir2":">=1.2","webservices.rest":">=2.2.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":"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":"expired-stock-modal","component":"expiredStockModal"},{"name":"import-bulk-stock-items","component":"importBulkStockItemsModal"},{"name":"receiving-stock-modal","component":"receivingStockModal"},{"name":"stock-operations-modal","component":"stockOperationsModal"},{"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"},{"name":"stock-item-rules-form-workspace","component":"stockItemRulesFormWorkspace","title":"Stock Item Rules","type":"form"},{"name":"stock-item-form-workspace","component":"stockItemFormWorkspace","title":"Stock Items","type":"form","canMaximize":true,"width":"extra-wide"},{"name":"stock-sources-form-workspace","component":"stockSourcesFormWorkspace","title":"Stock Sources","type":"form","canMaximize":true,"width":"extra-wide"},{"name":"stock-location-form-workspace","component":"stockLocationsFormWorkspace","title":"Stock Locations","type":"form","canMaximize":true,"width":"extra-wide"},{"name":"stock-user-role-scopes-form-workspace","component":"stockUserScopesFormWorkspace","title":"User Role Scopes","type":"form","canMaximize":true,"width":"extra-wide"},{"name":"stock-reports-form-workspace","component":"stockReportsFormWorkspace","title":"Reports","type":"form","canMaximize":true,"width":"extra-wide"}],"pages":[{"component":"root","route":"stock-management"}],"version":"3.1.1-pre.1179"}
1
+ {"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{"fhir2":">=1.2","webservices.rest":">=2.2.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":"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":"expired-stock-modal","component":"expiredStockModal"},{"name":"import-bulk-stock-items","component":"importBulkStockItemsModal"},{"name":"receiving-stock-modal","component":"receivingStockModal"},{"name":"stock-operations-modal","component":"stockOperationsModal"},{"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"},{"name":"stock-item-rules-form-workspace","component":"stockItemRulesFormWorkspace","title":"Stock Item Rules","type":"form"},{"name":"stock-item-form-workspace","component":"stockItemFormWorkspace","title":"Stock Items","type":"form","canMaximize":true,"width":"extra-wide"},{"name":"stock-sources-form-workspace","component":"stockSourcesFormWorkspace","title":"Stock Sources","type":"form","canMaximize":true,"width":"extra-wide"},{"name":"stock-location-form-workspace","component":"stockLocationsFormWorkspace","title":"Stock Locations","type":"form","canMaximize":true,"width":"extra-wide"},{"name":"stock-user-role-scopes-form-workspace","component":"stockUserScopesFormWorkspace","title":"User Role Scopes","type":"form","canMaximize":true,"width":"extra-wide"},{"name":"stock-reports-form-workspace","component":"stockReportsFormWorkspace","title":"Reports","type":"form","canMaximize":true,"width":"extra-wide"}],"pages":[{"component":"root","route":"stock-management"}],"version":"3.1.1-pre.1184"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openmrs/esm-stock-management-app",
3
- "version": "3.1.1-pre.1179",
3
+ "version": "3.1.1-pre.1184",
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",
package/src/constants.ts CHANGED
@@ -8,7 +8,6 @@ export const startOfDay = dayjs(new Date().setUTCHours(0, 0, 0, 0)).format(omrsD
8
8
  export const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
9
9
 
10
10
  export const DATE_PICKER_FORMAT = 'DD/MM/YYYY';
11
-
12
11
  export const DATE_PICKER_CONTROL_FORMAT = 'd/m/Y';
13
12
 
14
13
  export const formatForDatePicker = (date: Date | null | undefined) => {
@@ -54,7 +53,7 @@ export const APP_STOCKMANAGEMENT_STOCKOPERATIONS = 'App: stockmanagement.stockop
54
53
  /** @type {string}: Task: stockmanagement.stockoperations.mutate, Able to create and update stock operations*/
55
54
  export const TASK_STOCKMANAGEMENT_STOCKOPERATIONS_MUTATE = 'Task: stockmanagement.stockoperations.mutate';
56
55
 
57
- /** @type {string}: Task: stockmanagement.stockoperations.approve, Able to aprove stock operations*/
56
+ /** @type {string}: Task: stockmanagement.stockoperations.approve, Able to approve stock operations*/
58
57
  export const TASK_STOCKMANAGEMENT_STOCKOPERATIONS_APPROVE = 'Task: stockmanagement.stockoperations.approve';
59
58
 
60
59
  /** @type {string}: Task: stockmanagement.stockoperations.receiveitems, Able to receive dispatched stock items*/
@@ -84,7 +83,7 @@ export const INVENTORY_CLERK_ROLE_UUID = 'd210eb66-2188-11ed-9dff-507b9dea1806';
84
83
  export const INVENTORY_MANAGER_ROLE_UUID = 'cca4be4b-2188-11ed-9dff-507b9dea1806';
85
84
  export const INVENTORY_DISPENSING_ROLE_UUID = '84bdd876-4694-11ed-8109-00155dcc3fc0';
86
85
  export const INVENTORY_REPORTING_ROLE_UUID = 'a49be648-6b0a-11ed-93a2-806d973f13a9';
87
- export const INVENTORY_ADMNISTRATOR_ROLE_UUID = '2083fd40-3391-11ed-a667-507b9dea1806';
86
+ export const INVENTORY_ADMINISTRATOR_ROLE_UUID = '2083fd40-3391-11ed-a667-507b9dea1806';
88
87
 
89
88
  export const STOCK_OPERATION_PRINT_DISABLE_BALANCE_ON_HAND = true;
90
89
  export const STOCK_OPERATION_PRINT_DISABLE_COSTS = true;
@@ -1,31 +1,34 @@
1
1
  import React from 'react';
2
2
  import { type Control, Controller, type FieldValues } from 'react-hook-form';
3
- import { ComboBox } from '@carbon/react';
3
+ import { ComboBox, type ComboBoxProps } from '@carbon/react';
4
4
 
5
- interface ControlledComboBoxProps<T> {
5
+ interface ControlledComboBoxProps<T, ItemType>
6
+ extends Omit<ComboBoxProps<ItemType>, 'onChange' | 'id' | 'ref' | 'value'> {
6
7
  controllerName: string;
7
8
  name: string;
8
9
  control: Control<FieldValues, T>;
9
10
  onChange?: (e: { selectedItem: never }) => void;
10
11
  }
11
12
 
12
- const ControlledComboBox = <T,>(props: ControlledComboBoxProps<T>) => {
13
+ const ControlledComboBox = <T, ItemType = unknown>(props: ControlledComboBoxProps<T, ItemType>) => {
14
+ const { controllerName, name, control, onChange: onChangeProp, ...comboBoxProps } = props;
15
+
13
16
  return (
14
17
  <Controller
15
- name={props.controllerName}
16
- control={props.control}
18
+ name={controllerName}
19
+ control={control}
17
20
  render={({ field: { onChange, value, ref } }) => (
18
21
  <ComboBox
19
- {...props}
22
+ {...comboBoxProps}
20
23
  onChange={(e: { selectedItem: never }) => {
21
24
  onChange(e);
22
25
 
23
26
  // Fire prop change
24
- if (props.onChange) {
25
- props.onChange(e);
27
+ if (onChangeProp) {
28
+ onChangeProp(e);
26
29
  }
27
30
  }}
28
- id={props.name}
31
+ id={name}
29
32
  ref={ref}
30
33
  value={value}
31
34
  />
@@ -4,43 +4,48 @@ import { type Control, Controller, type FieldValues } from 'react-hook-form';
4
4
  import { RadioButtonGroup, RadioButton } from '@carbon/react';
5
5
  import { type RadioOption } from '../../../stock-items/add-stock-item/stock-item-details/stock-item-details.resource';
6
6
 
7
- interface ControlledRadioButtonGroupProps<T> extends RadioButtonGroupProps {
7
+ interface ControlledRadioButtonGroupProps<T>
8
+ extends Omit<RadioButtonGroupProps, 'onChange' | 'id' | 'ref' | 'value' | 'defaultSelected'> {
8
9
  controllerName: string;
9
10
  name: string;
10
11
  control: Control<FieldValues, T>;
11
- options: RadioOption[]; // Change the type to RadioOption[]
12
+ options: RadioOption[];
13
+ id?: string;
14
+ onChange?: (selectedValue: string, name: string, event: React.ChangeEvent<HTMLInputElement>) => void;
12
15
  }
13
16
 
14
17
  const ControlledRadioButtonGroup = <T,>(props: ControlledRadioButtonGroupProps<T>) => {
18
+ const { controllerName, name, control, options, onChange: onChangeProp, id: propsId, ...radioGroupProps } = props;
19
+
15
20
  return (
16
21
  <Controller
17
- name={props.controllerName}
18
- control={props.control}
22
+ name={controllerName}
23
+ control={control}
19
24
  render={({ field: { onChange, value, ref } }) => (
20
25
  <RadioButtonGroup
21
- {...props}
26
+ {...radioGroupProps}
27
+ name={name}
22
28
  onChange={(selectedValue: string, name: string, event: React.ChangeEvent<HTMLInputElement>) => {
23
- onChange(selectedValue, name, event);
29
+ onChange(selectedValue);
24
30
 
25
31
  // Fire prop change
26
- if (props.onChange) {
27
- props.onChange(selectedValue, name, event);
32
+ if (onChangeProp) {
33
+ onChangeProp(selectedValue, name, event);
28
34
  }
29
35
  }}
30
- id={props.name}
36
+ id={name}
31
37
  ref={ref}
32
- defaultSelected={props.id}
33
- value={value}
38
+ defaultSelected={propsId}
39
+ valueSelected={value}
34
40
  >
35
- {props.options.map((option, index) => (
41
+ {options.map((option, index) => (
36
42
  <RadioButton
37
- key={`${index}-${props.name}-${option.value}`}
38
- id={`${props.name}-${option.value}`}
43
+ key={`${index}-${name}-${option.value}`}
44
+ id={`${name}-${option.value}`}
39
45
  labelText={option.label}
40
- value={option.value}
46
+ value={String(option.value)}
41
47
  checked={value === option.value}
42
48
  onChange={() => onChange(option.value)}
43
- ref={ref}
44
49
  />
45
50
  ))}
46
51
  </RadioButtonGroup>
@@ -74,21 +74,24 @@ const DataList: React.FC<ListProps> = ({ columns, data, children, totalItems, go
74
74
  }),
75
75
  );
76
76
  };
77
- const handleExport = (object) => {
77
+ const handleExportCSV = () => {
78
78
  const csvString = convertToCSV(list, columns);
79
- if (object.currentTarget.innerText === 'Download As CSV') {
80
- const blob = new Blob([csvString], { type: 'text/csv;charset=utf-8' });
81
- saveAs(blob, 'data.csv');
82
- } else if (object.currentTarget.innerText === 'Download As Json') {
83
- const jsonBlob = new Blob([csvString], { type: 'application/json' });
84
- saveAs(jsonBlob, 'data.json');
85
- }
79
+ const blob = new Blob([csvString], { type: 'text/csv;charset=utf-8' });
80
+ saveAs(blob, 'data.csv');
86
81
  };
82
+
83
+ const handleExportJSON = () => {
84
+ const jsonString = JSON.stringify(list, null, 2);
85
+ const jsonBlob = new Blob([jsonString], { type: 'application/json' });
86
+ saveAs(jsonBlob, 'data.json');
87
+ };
88
+
87
89
  const convertToCSV = (data, columns) => {
88
90
  const header = columns.map((col) => col.header).join(',');
89
91
  const rows = data.map((row) => columns.map((col) => JSON.stringify(row[col.key])).join(','));
90
92
  return [header, ...rows].join('\n');
91
93
  };
94
+
92
95
  return (
93
96
  <>
94
97
  <DataTable
@@ -119,15 +122,21 @@ const DataList: React.FC<ListProps> = ({ columns, data, children, totalItems, go
119
122
  ) : (
120
123
  <>
121
124
  <OverflowMenu
122
- size="sm"
123
- kind="tertiary"
124
- renderIcon={DocumentDownload}
125
- iconDescription="Download As"
126
125
  focusTrap={false}
126
+ iconDescription={t('downloadOptions', 'Download options')}
127
+ renderIcon={DocumentDownload}
128
+ size="sm"
127
129
  >
128
- <OverflowMenuItem itemText="Download As CSV" onClick={handleExport} />
129
- <OverflowMenuItem itemText="Download As PDF" onClick={handleExport} />
130
- <OverflowMenuItem itemText="Download As Json" onClick={handleExport} />
130
+ <OverflowMenuItem
131
+ className={styles.menuItem}
132
+ itemText={t('downloadAsCSV', 'Download As CSV')}
133
+ onClick={handleExportCSV}
134
+ />
135
+ <OverflowMenuItem
136
+ className={styles.menuItem}
137
+ itemText={t('downloadAsJson', 'Download As JSON')}
138
+ onClick={handleExportJSON}
139
+ />
131
140
  </OverflowMenu>
132
141
  <TableToolbarSearch
133
142
  className={styles.itemListSearch}
@@ -172,8 +181,8 @@ const DataList: React.FC<ListProps> = ({ columns, data, children, totalItems, go
172
181
  </div>
173
182
  ) : null}
174
183
  <Pagination
175
- forwardText="Next page"
176
- backwardText="Previous page"
184
+ forwardText={t('nextPage', 'Next page')}
185
+ backwardText={t('previousPage', 'Previous page')}
177
186
  page={currentPage}
178
187
  pageSize={currentPageSize}
179
188
  pageSizes={pageSizes}
@@ -171,3 +171,7 @@
171
171
  @include type.type-style('body-compact-01');
172
172
  color: $text-02;
173
173
  }
174
+
175
+ .menuItem {
176
+ max-width: none;
177
+ }
@@ -3,3 +3,15 @@ import type React from 'react';
3
3
  export interface DataTableRenderProps {
4
4
  onInputChange: (e: React.ChangeEvent<HTMLInputElement>, defaultValue?: string) => void;
5
5
  }
6
+
7
+ export interface CustomTableHeader {
8
+ key: string;
9
+ header: string | { content: React.ReactNode };
10
+ styles?: React.CSSProperties;
11
+ isSortable?: boolean;
12
+ }
13
+
14
+ export interface CustomTableRow {
15
+ id: string;
16
+ [key: string]: unknown;
17
+ }
@@ -20,12 +20,8 @@ const VerticalTabs: React.FC<VerticalTabsProps> = ({ tabs, title, hasContainer,
20
20
  `}
21
21
  >
22
22
  {title && <p className={styles.heading}>{title}</p>}
23
- <div className={styles.tab}>
24
- <Tabs
25
- className={`${styles.verticalTabs}`}
26
- selectedIndex={selectedIndex}
27
- onChange={({ selectedIndex }) => onChange?.(selectedIndex)}
28
- >
23
+ <div className={`${styles.tab} ${styles.verticalTabs}`}>
24
+ <Tabs selectedIndex={selectedIndex} onChange={({ selectedIndex }) => onChange?.(selectedIndex)}>
29
25
  <TabList aria-label="navigation">
30
26
  {tabs.map((tab: TabItem, index: number) => (
31
27
  <Tab key={index} disabled={tab.disabled}>
@@ -1,6 +1,3 @@
1
- declare module '@carbon/react';
2
1
  declare module '*.css';
3
2
  declare module '*.scss';
4
3
  declare module '*.png';
5
-
6
- declare type SideNavProps = object;
@@ -55,8 +55,8 @@ const StockHomeInventoryCard = () => {
55
55
  <div className={styles.cardText}>
56
56
  <p>{t('expiringStock', 'Expiring stock')}</p>
57
57
  <p>
58
- <strong>{item?.drugName}</strong> {t('batchNo', 'Batch No:')} {item?.batchNo} {t('quantity', 'Quantity:')}{' '}
59
- {item?.quantity} {item?.dispensingUnitName}
58
+ <strong>{item?.drugName}</strong> {t('batchNumberLabel', 'Batch number:')} {item?.batchNo}{' '}
59
+ {t('quantityLabel', 'Quantity:')} {item?.quantity} {item?.dispensingUnitName}
60
60
  </p>
61
61
  </div>
62
62
  </div>
@@ -53,7 +53,7 @@ const AddEditStockItem: React.FC<AddStockItemProps> = ({ stockItem, closeWorkspa
53
53
  disabled: !isEditing,
54
54
  },
55
55
  {
56
- name: t('stockRules', 'Rules'),
56
+ name: t('rules', 'Rules'),
57
57
  component: <StockItemRules stockItemUuid={stockItem?.uuid} />,
58
58
  disabled: !isEditing,
59
59
  },
@@ -29,9 +29,6 @@ const BatchInformationLocationsFilter = <T,>(props: BatchInformationLocationsFil
29
29
  render={({ field: { onChange, value, ref } }) => (
30
30
  <ComboBox
31
31
  titleText={props.title}
32
- name={props.name}
33
- control={props.control}
34
- controllerName={props.controllerName}
35
32
  id={props.name}
36
33
  size={'md'}
37
34
  items={stockLocations ?? []}
@@ -1,12 +1,12 @@
1
1
  import React, { useEffect, useMemo, useState } from 'react';
2
2
  import { useTranslation } from 'react-i18next';
3
+ import { useForm } from 'react-hook-form';
3
4
  import { formatDisplayDate } from '../../../core/utils/datetimeUtils';
4
5
  import { DataTableSkeleton } from '@carbon/react';
5
- import DataList from '../../../core/components/table/table.component';
6
+ import { type StockItemInventoryFilter } from '../../stock-items.resource';
6
7
  import { useStockItemBatchInformationHook } from './batch-information.resource';
7
8
  import BatchInformationLocationsFilter from './batch-information-locations/batch-information-locations-filter.component';
8
- import { useForm } from 'react-hook-form';
9
- import { type StockItemInventoryFilter } from '../../stock-items.resource';
9
+ import DataList from '../../../core/components/table/table.component';
10
10
 
11
11
  interface BatchInformationProps {
12
12
  onSubmit?: () => void;
@@ -32,7 +32,7 @@ const BatchInformation: React.FC<BatchInformationProps> = ({ stockItemUuid }) =>
32
32
  },
33
33
  {
34
34
  key: 'batch',
35
- header: t('batchNumber', 'Batch Number'),
35
+ header: t('batchNumber', 'Batch number'),
36
36
  },
37
37
  {
38
38
  key: 'quantity',