@zeniai/client-epic-state 5.3.26 → 5.3.28

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 (41) hide show
  1. package/lib/entity/approvalRule/approvalRuleSelector.d.ts +8 -1
  2. package/lib/entity/approvalRule/approvalRuleSelector.js +12 -0
  3. package/lib/entity/approvalRule/attributeApprovers.d.ts +26 -0
  4. package/lib/entity/approvalRule/attributeApprovers.js +39 -0
  5. package/lib/entity/vendor/vendorPayload.js +1 -1
  6. package/lib/entity/vendor/vendorState.d.ts +6 -1
  7. package/lib/esm/entity/approvalRule/approvalRuleSelector.js +11 -0
  8. package/lib/esm/entity/approvalRule/attributeApprovers.js +35 -0
  9. package/lib/esm/entity/vendor/vendorPayload.js +1 -1
  10. package/lib/esm/index.js +2 -1
  11. package/lib/esm/view/commonVendorView/transactionVendorView/transactionVendorLocalDataHelper.js +1 -1
  12. package/lib/esm/view/commonVendorView/vendorView/epics/vendorDetailLocalDataHelpers.js +1 -1
  13. package/lib/esm/view/commonVendorView/vendorsTabVendorView/epics/vendorsTabVendorDetailLocalDataHelpers.js +1 -1
  14. package/lib/esm/view/spendManagement/billPay/billDetailView/billDetailViewSelector.js +1 -1
  15. package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelector.js +30 -16
  16. package/lib/esm/view/spendManagement/billPay/editBillView/editBillViewSelector.js +6 -0
  17. package/lib/esm/view/spendManagement/reimbursement/editRemiView/editRemiViewSelector.js +6 -1
  18. package/lib/esm/view/spendManagement/reimbursement/editRemiView/epics/fetchEditRemiDetailPageEpic.js +6 -0
  19. package/lib/esm/view/spendManagement/reimbursement/remiSetupApproverView/epic/fetchRemiApproversListEpic.js +7 -3
  20. package/lib/esm/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewReducer.js +7 -1
  21. package/lib/esm/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewSelector.js +31 -17
  22. package/lib/index.d.ts +2 -1
  23. package/lib/index.js +30 -28
  24. package/lib/view/commonVendorView/transactionVendorView/transactionVendorLocalDataHelper.js +1 -1
  25. package/lib/view/commonVendorView/vendorView/epics/vendorDetailLocalDataHelpers.js +1 -1
  26. package/lib/view/commonVendorView/vendorsTabVendorView/epics/vendorsTabVendorDetailLocalDataHelpers.js +1 -1
  27. package/lib/view/spendManagement/billPay/billDetailView/billDetailViewSelector.js +1 -1
  28. package/lib/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelector.js +29 -15
  29. package/lib/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelectorTypes.d.ts +1 -0
  30. package/lib/view/spendManagement/billPay/editBillView/editBillViewSelector.d.ts +7 -0
  31. package/lib/view/spendManagement/billPay/editBillView/editBillViewSelector.js +6 -0
  32. package/lib/view/spendManagement/reimbursement/editRemiView/editRemiViewSelector.d.ts +8 -0
  33. package/lib/view/spendManagement/reimbursement/editRemiView/editRemiViewSelector.js +6 -1
  34. package/lib/view/spendManagement/reimbursement/editRemiView/epics/fetchEditRemiDetailPageEpic.d.ts +2 -1
  35. package/lib/view/spendManagement/reimbursement/editRemiView/epics/fetchEditRemiDetailPageEpic.js +6 -0
  36. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/epic/fetchRemiApproversListEpic.js +7 -3
  37. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewReducer.d.ts +2 -2
  38. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewReducer.js +7 -1
  39. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewSelector.js +30 -16
  40. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewSelectorTypes.d.ts +1 -0
  41. package/package.json +1 -1
@@ -88,11 +88,17 @@ const remiSetupApproverView = (0, toolkit_1.createSlice)({
88
88
  },
89
89
  },
90
90
  fetchRemiApproversList: {
91
- reducer(draft) {
91
+ reducer(draft, action) {
92
92
  draft.approverListState.fetchStatus = {
93
93
  fetchState: 'In-Progress',
94
94
  error: undefined,
95
95
  };
96
+ // The attribute mapping is specific to `lastUpdatedByUserId`; drop the
97
+ // previous user's mapping so it is never shown for someone else while
98
+ // the new one loads.
99
+ if (action.payload.includeAttributesUserIds === true) {
100
+ draft.approverListState.attributeSubTypeToUserIdMapping = undefined;
101
+ }
96
102
  },
97
103
  prepare(cacheOverride = false, includeUserRoles = true, includeAttributesUserIds = false, lastUpdatedByUserId = undefined) {
98
104
  return {
@@ -16,23 +16,36 @@ const getRemiSetupApproverView = (state, filterAdmins = true) => {
16
16
  const { approvalRulesDeleteStatusById, approvalRuleIds, approverListState, fetchState, error, listeningToPusherEvent, newApprovalRuleId, } = remiSetupApproverViewState;
17
17
  const deleteStateList = Object.values(approvalRulesDeleteStatusById);
18
18
  const approvalRules = (0, approvalRuleSelector_1.getApprovalRulesByIds)(approvalRuleState, approvalRuleIds);
19
- const allApprovalRules = approvalRules.map((approvalRule) => {
20
- const approvalRuleWithUser = {
21
- ...approvalRule,
22
- steps: approvalRule.steps.map((step) => {
23
- return {
24
- ...step,
25
- actors: step.actors
26
- .filter((actor) => actor.userId != null)
27
- .map((actor) => (0, userSelector_1.getUserByUserId)(userState, actor.userId))
28
- .filter((user) => user != null),
29
- nonUserActors: step.actors.filter((actor) => actor.type !== 'user' &&
30
- (filterAdmins ? actor.isImplicitActor === false : true)),
31
- };
32
- }),
33
- };
34
- return approvalRuleWithUser;
19
+ const toStepWithUser = (step) => ({
20
+ ...step,
21
+ actors: step.actors
22
+ .filter((actor) => actor.userId != null)
23
+ .map((actor) => (0, userSelector_1.getUserByUserId)(userState, actor.userId))
24
+ .filter((user) => user != null),
25
+ nonUserActors: step.actors.filter((actor) => actor.type !== 'user' &&
26
+ (filterAdmins ? actor.isImplicitActor === false : true)),
27
+ });
28
+ const toApprovalRuleWithUser = (approvalRule) => ({
29
+ ...approvalRule,
30
+ steps: approvalRule.steps.map(toStepWithUser),
35
31
  });
32
+ const allApprovalRules = approvalRules.map(toApprovalRuleWithUser);
33
+ // Exposed separately so the new-reimbursement preview can show it when no other
34
+ // rule matches. (It is also in allApprovalRules; the rules pages filter it
35
+ // out by `isFallback`.)
36
+ const fallbackApprovalRule = (0, approvalRuleSelector_1.getFallbackApprovalRule)(approvalRuleState, 'reimbursement');
37
+ // A fallback step shows its implicit Admin only when it has no explicit
38
+ // approver, regardless of `filterAdmins` (same as bills; see
39
+ // getFallbackStepNonUserActors).
40
+ const fallbackRule = fallbackApprovalRule != null
41
+ ? {
42
+ ...fallbackApprovalRule,
43
+ steps: fallbackApprovalRule.steps.map((step) => ({
44
+ ...toStepWithUser(step),
45
+ nonUserActors: (0, approvalRuleSelector_1.getFallbackStepNonUserActors)(step),
46
+ })),
47
+ }
48
+ : undefined;
36
49
  const approvalRulesStatus = allApprovalRules.length > 0
37
50
  ? {
38
51
  code: 'created',
@@ -47,6 +60,7 @@ const getRemiSetupApproverView = (state, filterAdmins = true) => {
47
60
  const inactiveApproverIds = Array.from(referencedApproverIds).filter((userId) => !activeApproverIds.has(userId));
48
61
  return {
49
62
  allApprovalRules,
63
+ fallbackRule,
50
64
  deleteStatus: (0, reduceFetchState_1.reduceAnyFetchState)(deleteStateList),
51
65
  approvalRulesStatus,
52
66
  approverListFetchStatus: approverListState.fetchStatus,
@@ -51,6 +51,7 @@ export interface RemiSetupApproverView extends SelectorView {
51
51
  approverListFetchStatus: FetchStateAndError;
52
52
  deleteStatus: FetchStateAndError;
53
53
  inactiveApproverIds: ID[];
54
+ fallbackRule?: ApprovalRuleWithUser;
54
55
  listeningToPusherEvent?: boolean;
55
56
  newApprovalRuleId?: ID;
56
57
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "5.3.26",
3
+ "version": "5.3.28",
4
4
  "description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/esm/index.js",