@feedmepos/mf-hrm-portal 2.0.2 → 2.0.3-dev.3

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 (131) hide show
  1. package/dist/AuditLogList-ssYtQ2J1.js +492 -0
  2. package/dist/{EmployeeList-C0P01r8f.js → EmployeeList-CNNgH2vX.js} +6 -6
  3. package/dist/{Main-Ea3YRYRi.js → Main-DAcmCNsi.js} +8 -8
  4. package/dist/{Main-C4bwcSak.js → Main-DmaUVB5Y.js} +5 -5
  5. package/dist/PermissionSetList-CybAQCrm.js +337 -0
  6. package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-6Vgf4lIX.js +3355 -0
  7. package/dist/{RoleList-DPFSIcJM.js → RoleList-rv6egTFo.js} +6 -6
  8. package/dist/{SelectFilter-NbXrJ4iH.js → SelectFilter-DUj7GBtT.js} +93 -89
  9. package/dist/TeamMemberList-JjUw7Pdt.js +988 -0
  10. package/dist/{TimesheetList-D_aRlhAF.js → TimesheetList-lYmFc7sY.js} +6 -6
  11. package/dist/{app-D3XzDpIl.js → app-BF5fWLn5.js} +990 -854
  12. package/dist/app.js +2 -2
  13. package/dist/{dayjs.min-CgKI64Kb.js → dayjs.min-_VE-J0yP.js} +1 -1
  14. package/dist/{employee-DiMO7OBV.js → employee-BDPrgphI.js} +3 -3
  15. package/dist/{index-BNwH5i7v.js → index-CFGp5zzo.js} +2327 -2226
  16. package/dist/{index-D-9VSDyv.js → index-CdQ13eT1.js} +1 -1
  17. package/dist/{lodash-JVfJjN55.js → lodash-CucjoHYl.js} +1 -1
  18. package/dist/{api → src/api}/permission-assignment/index.d.ts +3 -0
  19. package/dist/{api → src/api}/report-query/index.d.ts +1 -0
  20. package/dist/{components → src/components}/form/SelectFilter.vue.d.ts +2 -0
  21. package/dist/src/composables/useCustomReportPermissions.d.ts +7 -0
  22. package/dist/{helpers → src/helpers}/permission-set.d.ts +31 -0
  23. package/dist/src/helpers/permission-set.test.d.ts +1 -0
  24. package/dist/{helpers → src/helpers}/rule.d.ts +4 -1
  25. package/dist/{types → src/types}/report-query.d.ts +1 -0
  26. package/dist/{views → src/views}/team/components/BasePermission.vue.d.ts +17 -0
  27. package/dist/{team-CpDDOMg5.js → team-DzG7du5b.js} +1 -1
  28. package/dist/{timesheet-B7pXd6CJ.js → timesheet-BHNzrve1.js} +2 -2
  29. package/dist/tsconfig.app.tsbuildinfo +1 -1
  30. package/dist/{useAppStore-CRiXBv8h.js → useAppStore-D4PCstqq.js} +1 -1
  31. package/dist/{useLoading-TD1OqZ-E.js → useLoading-wggM_LZw.js} +1 -1
  32. package/dist/useReportPermissions-C2cFzRyt.js +59 -0
  33. package/package.json +3 -3
  34. package/dist/AuditLogList-DmzjFNtu.js +0 -474
  35. package/dist/PermissionSetList-BConvvPI.js +0 -323
  36. package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-Bh8iS3gP.js +0 -3092
  37. package/dist/TeamMemberList-2X_3s91v.js +0 -973
  38. package/dist/useReportPermissions-VXbSUZR5.js +0 -65
  39. /package/dist/{App.vue.d.ts → src/App.vue.d.ts} +0 -0
  40. /package/dist/{Entry.vue.d.ts → src/Entry.vue.d.ts} +0 -0
  41. /package/dist/{api → src/api}/audit-log/index.d.ts +0 -0
  42. /package/dist/{api → src/api}/employee/index.d.ts +0 -0
  43. /package/dist/{api → src/api}/index.d.ts +0 -0
  44. /package/dist/{api → src/api}/inventory/index.d.ts +0 -0
  45. /package/dist/{api → src/api}/permission-set/index.d.ts +0 -0
  46. /package/dist/{api → src/api}/public-setting/index.d.ts +0 -0
  47. /package/dist/{api → src/api}/role/index.d.ts +0 -0
  48. /package/dist/{api → src/api}/team/index.d.ts +0 -0
  49. /package/dist/{api → src/api}/timesheet/index.d.ts +0 -0
  50. /package/dist/{api → src/api}/user/index.d.ts +0 -0
  51. /package/dist/{app.d.ts → src/app.d.ts} +0 -0
  52. /package/dist/{components → src/components}/AppForm.vue.d.ts +0 -0
  53. /package/dist/{components → src/components}/CheckboxInput.vue.d.ts +0 -0
  54. /package/dist/{components → src/components}/CollapsibleWrapper.vue.d.ts +0 -0
  55. /package/dist/{components → src/components}/Navigator.vue.d.ts +0 -0
  56. /package/dist/{components → src/components}/Splash.vue.d.ts +0 -0
  57. /package/dist/{components → src/components}/button/ResponsiveFabButton.vue.d.ts +0 -0
  58. /package/dist/{components → src/components}/layout/FormColumn.vue.d.ts +0 -0
  59. /package/dist/{components → src/components}/layout/FormItem.vue.d.ts +0 -0
  60. /package/dist/{components → src/components}/layout/FormSection.vue.d.ts +0 -0
  61. /package/dist/{components → src/components}/layout/FullWrapper.vue.d.ts +0 -0
  62. /package/dist/{components → src/components}/layout/HorizontalSplitter.vue.d.ts +0 -0
  63. /package/dist/{components → src/components}/layout/LottieAnimation.vue.d.ts +0 -0
  64. /package/dist/{components → src/components}/layout/PageLayout.vue.d.ts +0 -0
  65. /package/dist/{components → src/components}/loading/AppLoading.vue.d.ts +0 -0
  66. /package/dist/{components → src/components}/loading/PageLoading.vue.d.ts +0 -0
  67. /package/dist/{components → src/components}/loading/index.d.ts +0 -0
  68. /package/dist/{components → src/components}/menu/BottomSheetMenu.vue.d.ts +0 -0
  69. /package/dist/{components → src/components}/menu/BottomSheetMenuItem.vue.d.ts +0 -0
  70. /package/dist/{components → src/components}/menu/ResponsiveContextMenu.vue.d.ts +0 -0
  71. /package/dist/{components → src/components}/table/EmptyDataTemplate/Icon.vue.d.ts +0 -0
  72. /package/dist/{components → src/components}/table/EmptyDataTemplate/index.d.ts +0 -0
  73. /package/dist/{components → src/components}/table/EmptyDataTemplate/index.vue.d.ts +0 -0
  74. /package/dist/{composables → src/composables}/useAppStore.d.ts +0 -0
  75. /package/dist/{composables → src/composables}/useDateRange.d.ts +0 -0
  76. /package/dist/{composables → src/composables}/useDiscardConfirm.d.ts +0 -0
  77. /package/dist/{composables → src/composables}/useElementPosition.d.ts +0 -0
  78. /package/dist/{composables → src/composables}/useFilterSelector.d.ts +0 -0
  79. /package/dist/{composables → src/composables}/useLoading.d.ts +0 -0
  80. /package/dist/{composables → src/composables}/useMessage.d.ts +0 -0
  81. /package/dist/{composables → src/composables}/useReportPermissions.d.ts +0 -0
  82. /package/dist/{composables → src/composables}/useRestaurantMap.d.ts +0 -0
  83. /package/dist/{composables → src/composables}/useSearch.d.ts +0 -0
  84. /package/dist/{composables → src/composables}/useSheet.d.ts +0 -0
  85. /package/dist/{helpers → src/helpers}/component.d.ts +0 -0
  86. /package/dist/{helpers → src/helpers}/iteration.d.ts +0 -0
  87. /package/dist/{helpers → src/helpers}/object.d.ts +0 -0
  88. /package/dist/{helpers → src/helpers}/portal-user.d.ts +0 -0
  89. /package/dist/{helpers → src/helpers}/string.d.ts +0 -0
  90. /package/dist/{helpers → src/helpers}/utils.d.ts +0 -0
  91. /package/dist/{main.d.ts → src/main.d.ts} +0 -0
  92. /package/dist/{router → src/router}/index.d.ts +0 -0
  93. /package/dist/{router → src/router}/shared.d.ts +0 -0
  94. /package/dist/{stores → src/stores}/employee.d.ts +0 -0
  95. /package/dist/{stores → src/stores}/permission-assignment.d.ts +0 -0
  96. /package/dist/{stores → src/stores}/permission-set.d.ts +0 -0
  97. /package/dist/{stores → src/stores}/role.d.ts +0 -0
  98. /package/dist/{stores → src/stores}/team.d.ts +0 -0
  99. /package/dist/{stores → src/stores}/timesheet.d.ts +0 -0
  100. /package/dist/{types → src/types}/audit-log.d.ts +0 -0
  101. /package/dist/{types → src/types}/employee.d.ts +0 -0
  102. /package/dist/{types → src/types}/permission-assignment.d.ts +0 -0
  103. /package/dist/{types → src/types}/permission-set.d.ts +0 -0
  104. /package/dist/{types → src/types}/restaurant.d.ts +0 -0
  105. /package/dist/{types → src/types}/role.d.ts +0 -0
  106. /package/dist/{types → src/types}/team.d.ts +0 -0
  107. /package/dist/{types → src/types}/timesheet.d.ts +0 -0
  108. /package/dist/{views → src/views}/audit-log/AuditLogList.vue.d.ts +0 -0
  109. /package/dist/{views → src/views}/audit-log/locales/index.d.ts +0 -0
  110. /package/dist/{views → src/views}/hr/Main.vue.d.ts +0 -0
  111. /package/dist/{views → src/views}/hr/employee/Employee.vue.d.ts +0 -0
  112. /package/dist/{views → src/views}/hr/employee/EmployeeForm.vue.d.ts +0 -0
  113. /package/dist/{views → src/views}/hr/employee/EmployeeList.vue.d.ts +0 -0
  114. /package/dist/{views → src/views}/hr/locales/index.d.ts +0 -0
  115. /package/dist/{views → src/views}/hr/role/RoleForm.vue.d.ts +0 -0
  116. /package/dist/{views → src/views}/hr/role/RoleList.vue.d.ts +0 -0
  117. /package/dist/{views → src/views}/hr/timesheet/TimesheetList.vue.d.ts +0 -0
  118. /package/dist/{views → src/views}/team/Main.vue.d.ts +0 -0
  119. /package/dist/{views → src/views}/team/components/ConditionPermission.vue.d.ts +0 -0
  120. /package/dist/{views → src/views}/team/components/InheritPermissionTooltip.vue.d.ts +0 -0
  121. /package/dist/{views → src/views}/team/components/PermissionWithTooltip.vue.d.ts +0 -0
  122. /package/dist/{views → src/views}/team/components/PortalPermissionEditor.vue.d.ts +0 -0
  123. /package/dist/{views → src/views}/team/components/PortalUserSearcher.vue.d.ts +0 -0
  124. /package/dist/{views → src/views}/team/components/PosRolePermission.vue.d.ts +0 -0
  125. /package/dist/{views → src/views}/team/locales/index.d.ts +0 -0
  126. /package/dist/{views → src/views}/team/member/AddMemberForm.vue.d.ts +0 -0
  127. /package/dist/{views → src/views}/team/member/MemberInfo.vue.d.ts +0 -0
  128. /package/dist/{views → src/views}/team/member/TeamMemberList.vue.d.ts +0 -0
  129. /package/dist/{views → src/views}/team/member/TeamMemberMasterUser.vue.d.ts +0 -0
  130. /package/dist/{views → src/views}/team/permission-set/PermissionSetForm.vue.d.ts +0 -0
  131. /package/dist/{views → src/views}/team/permission-set/PermissionSetList.vue.d.ts +0 -0
@@ -2,7 +2,7 @@ var oe = Object.defineProperty;
2
2
  var se = (_, h, y) => h in _ ? oe(_, h, { enumerable: !0, configurable: !0, writable: !0, value: y }) : _[h] = y;
3
3
  var ot = (_, h, y) => se(_, typeof h != "symbol" ? h + "" : h, y);
4
4
  import { readonly as Nt, ref as Rt } from "vue";
5
- import { c as st } from "./app-D3XzDpIl.js";
5
+ import { c as st } from "./app-BF5fWLn5.js";
6
6
  var Pt = { exports: {} };
7
7
  (function(_, h) {
8
8
  (function(y, p) {
@@ -1,4 +1,4 @@
1
- import { c as jt } from "./app-D3XzDpIl.js";
1
+ import { c as jt } from "./app-BF5fWLn5.js";
2
2
  var Jr = { exports: {} };
3
3
  /**
4
4
  * @license
@@ -6,5 +6,8 @@ declare const PermissionAssignmentAPI: {
6
6
  create(dto: IFdtoCreatePermissionAssignmentReq): Promise<IFdtoPermissionAssignment>;
7
7
  update(id: string, dto: IFdtoUpdatePermissionAssignmentReq): Promise<IFdtoPermissionAssignment>;
8
8
  delete(id: string): Promise<boolean>;
9
+ addReportManagePermission(permissionKey: string, label: string): Promise<{
10
+ success: boolean;
11
+ }>;
9
12
  };
10
13
  export default PermissionAssignmentAPI;
@@ -1,5 +1,6 @@
1
1
  import type { ReportPermissionItem } from '@/types/report-query';
2
2
  declare const ReportQueryAPI: {
3
3
  fetchReportPermissions(businessId: string): Promise<ReportPermissionItem[]>;
4
+ fetchReportPermissionsForPortal(businessId: string): Promise<ReportPermissionItem[]>;
4
5
  };
5
6
  export default ReportQueryAPI;
@@ -35,6 +35,8 @@ export interface Props {
35
35
  maxHeight?: string | number;
36
36
  /** When user selected some items, we should display like "selectedPrefix: <count>" */
37
37
  selectedPrefix?: string;
38
+ /** Custom filter function for searching options */
39
+ filterFn?: (option: SelectFilterOption, searchKey: string) => boolean;
38
40
  }
39
41
  declare var __VLS_7: {}, __VLS_37: {
40
42
  option: SelectFilterOption;
@@ -0,0 +1,7 @@
1
+ import { type IFdtoPortalPermissionsWithVisibilityCondition } from '@feedmepos/hrm-permission';
2
+ export declare function useCustomReportPermissions(): {
3
+ fetchCustomReportPermissions: () => Promise<void>;
4
+ customReportPermissions: import("vue").ComputedRef<IFdtoPortalPermissionsWithVisibilityCondition[]>;
5
+ isLoading: import("vue").ComputedRef<boolean>;
6
+ isLoaded: import("vue").ComputedRef<boolean>;
7
+ };
@@ -46,6 +46,37 @@ export declare function materializeSystemPermissionSetOverrides(overridePermissi
46
46
  * Inverted rules (explicit user denials) are always preserved.
47
47
  */
48
48
  export declare function stripSystemExpandedPositives(permissions: FdoPermissionRule[]): FdoPermissionRule[];
49
+ export declare const REPORT_SUBJECT_PREFIX = "business::report::";
50
+ /**
51
+ * Filter out stale report permission rules.
52
+ *
53
+ * Only rules whose subject starts with `business::report::` are candidates for removal —
54
+ * any other subject (restaurant, role, warehouse, etc.) passes through untouched.
55
+ * A report-prefixed subject is kept only if it exists in `knownReportSubjects`.
56
+ *
57
+ * This handles:
58
+ * - Deprecated/renamed subjects (e.g. `business::report::closeup` → `business::report::reports::closeup`)
59
+ * - Deleted dynamic reports that no longer exist
60
+ */
61
+ export declare function filterStalePermissions(permissions: FdoPermissionRule[], knownReportSubjects: Set<string>): FdoPermissionRule[];
62
+ /**
63
+ * Strip individual-report actions already covered by an `allDefaultReports` or
64
+ * `allCustomReports` positive grant, preventing redundant data from being saved.
65
+ *
66
+ * - If the cover rule has `manage` selected → every individual rule in that bucket is
67
+ * fully covered and dropped entirely.
68
+ * - Otherwise, only covered non-manage actions are stripped from individual rules.
69
+ * If `manage` was present and any non-manage action is stripped (breaking the
70
+ * "manage = all non-manage selected" invariant), `manage` is also stripped.
71
+ * Rules that end up with no remaining actions are dropped.
72
+ *
73
+ * Inverted rules and the cover subjects themselves pass through untouched.
74
+ *
75
+ * @param defaultReportSubjects Full set of subjects in the "Default Report" UI category —
76
+ * includes static hardcoded subjects AND dynamic reports with `isDefault: true`.
77
+ * Built by the caller from `portalTeamPermissions` + `customReportPermissions`.
78
+ */
79
+ export declare function filterRedundantReportPermissions(permissions: FdoPermissionRule[], defaultReportSubjects: Set<string>): FdoPermissionRule[];
49
80
  /**
50
81
  * Combine base permissions with override permissions to get effective permissions
51
82
  * @param basePermissions - Base permissions from permission sets
@@ -0,0 +1 @@
1
+ export {};
@@ -26,4 +26,7 @@ export declare function fromValue(values: string[], maxDiscountPercentage: numbe
26
26
  conditions: object;
27
27
  }[];
28
28
  export declare function toRule(v: string): Rule;
29
- export declare function mapAndSortPermissions(permissions: Array<FdoPermissionRule | RawRule>): string[];
29
+ export declare function mapAndSortPermissions(permissions: Array<FdoPermissionRule | RawRule>, additionalPermissions?: ReadonlyArray<{
30
+ subject: string | string[];
31
+ label: string;
32
+ }>): string[];
@@ -3,4 +3,5 @@ export interface ReportPermissionItem {
3
3
  permissionKey: string;
4
4
  category: string;
5
5
  categoryName: string;
6
+ isDefault: boolean;
6
7
  }
@@ -1,10 +1,18 @@
1
1
  import { type PropType } from 'vue';
2
+ import { type IFdtoPortalPermissionsWithVisibilityCondition } from '@feedmepos/hrm-permission';
2
3
  import type { FdoPermissionRule } from '@feedmepos/core/entity';
3
4
  declare var __VLS_9: `checkbox-${string}-append`, __VLS_10: {
4
5
  option: import("@/components/CheckboxInput.vue").CheckboxOption;
6
+ }, __VLS_29: `checkbox-${string}-append`, __VLS_30: {
7
+ option: {
8
+ label: string;
9
+ value: string;
10
+ };
5
11
  };
6
12
  type __VLS_Slots = {} & {
7
13
  [K in NonNullable<typeof __VLS_9>]?: (props: typeof __VLS_10) => any;
14
+ } & {
15
+ [K in NonNullable<typeof __VLS_29>]?: (props: typeof __VLS_30) => any;
8
16
  };
9
17
  declare const __VLS_component: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
10
18
  modelValue: {
@@ -19,6 +27,10 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
19
27
  type: PropType<string[]>;
20
28
  required: true;
21
29
  };
30
+ additionalPermissions: {
31
+ type: PropType<IFdtoPortalPermissionsWithVisibilityCondition[]>;
32
+ default: () => never[];
33
+ };
22
34
  }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
23
35
  "update:model-value": (subject: {
24
36
  reason?: string | null | undefined;
@@ -42,6 +54,10 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
42
54
  type: PropType<string[]>;
43
55
  required: true;
44
56
  };
57
+ additionalPermissions: {
58
+ type: PropType<IFdtoPortalPermissionsWithVisibilityCondition[]>;
59
+ default: () => never[];
60
+ };
45
61
  }>> & Readonly<{
46
62
  "onUpdate:model-value"?: ((subject: {
47
63
  reason?: string | null | undefined;
@@ -54,6 +70,7 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
54
70
  }[]) => any) | undefined;
55
71
  }>, {
56
72
  disable: boolean;
73
+ additionalPermissions: IFdtoPortalPermissionsWithVisibilityCondition[];
57
74
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
58
75
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
59
76
  export default _default;
@@ -1,6 +1,6 @@
1
1
  import { defineStore as d } from "pinia";
2
2
  import { ref as s, computed as o } from "vue";
3
- import { t as f } from "./index-BNwH5i7v.js";
3
+ import { t as f } from "./index-CFGp5zzo.js";
4
4
  const I = d("team", () => {
5
5
  const r = s([]), a = s(!1), m = o(
6
6
  () => Object.fromEntries(r.value.map((e) => [e.doc.userId, e.name]))
@@ -1,7 +1,7 @@
1
- import { d as i } from "./dayjs.min-CgKI64Kb.js";
1
+ import { d as i } from "./dayjs.min-_VE-J0yP.js";
2
2
  import { defineStore as p, storeToRefs as T } from "pinia";
3
3
  import { ref as l } from "vue";
4
- import { b as c, g as y, k as u, j as S, s as g } from "./index-BNwH5i7v.js";
4
+ import { b as c, g as y, k as u, j as S, s as g } from "./index-CFGp5zzo.js";
5
5
  const f = {
6
6
  async readTimesheets(t, e) {
7
7
  return y(await c().get(`timesheet?start=${t}&end=${e}`));