@finema/finework-layer 2.0.50 → 2.0.52

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 (40) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/app/components/Layout/Apps.vue +3 -1
  3. package/app/components/Notifications/index.vue +52 -24
  4. package/app/components/PortalApp.vue +258 -573
  5. package/app/composables/useAuth.ts +41 -22
  6. package/app/constants/routes.ts +8 -0
  7. package/package.json +1 -1
  8. package/public/admin/asset.svg +20 -0
  9. package/public/admin/clock-in-admin-logo.svg +33 -0
  10. package/public/admin/clock-in-logo.svg +27 -0
  11. package/public/admin/contract.svg +41 -0
  12. package/public/admin/cost-sheet.svg +19 -0
  13. package/public/admin/document.svg +29 -0
  14. package/public/admin/efactoring.svg +23 -0
  15. package/public/admin/employee.svg +16 -0
  16. package/public/admin/evaluation.svg +29 -0
  17. package/public/admin/finesign.png +0 -0
  18. package/public/admin/guarantee.svg +25 -0
  19. package/public/admin/loan.svg +35 -0
  20. package/public/admin/newsletter.svg +23 -0
  21. package/public/admin/pmo-logo.svg +28 -0
  22. package/public/admin/pmo_delivery.svg +21 -0
  23. package/public/admin/pmo_presale_bidding.svg +30 -0
  24. package/public/admin/pmo_setup.svg +18 -0
  25. package/public/admin/pmo_warranty.svg +26 -0
  26. package/public/admin/purchase.svg +22 -0
  27. package/public/admin/quotation.svg +21 -0
  28. package/public/admin/recruit.svg +21 -0
  29. package/public/admin/report.svg +41 -0
  30. package/public/admin/request-admin.svg +44 -0
  31. package/public/admin/request.svg +42 -0
  32. package/public/admin/resource-allocation.svg +26 -0
  33. package/public/admin/resource.svg +22 -0
  34. package/public/admin/spider-web.png +0 -0
  35. package/public/admin/super-admin-logo.svg +22 -0
  36. package/public/admin/support.svg +19 -0
  37. package/public/admin/timesheet-admin-logo.svg +87 -0
  38. package/public/admin/timesheet-logo.svg +85 -0
  39. package/public/admin/todo.svg +21 -0
  40. package/public/admin/tor.svg +43 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.0.52](https://gitlab.finema.co/finema/internal/finework/compare/2.0.51...2.0.52) (2026-08-31)
4
+
5
+ ### Features
6
+
7
+ * new icon app ([0fac84c](https://gitlab.finema.co/finema/internal/finework/commit/0fac84c4dfa5fc238e29b0563951d8739d81151e))
8
+
9
+ ## [2.0.51](https://gitlab.finema.co/finema/internal/finework/compare/2.0.50...2.0.51) (2026-08-27)
10
+
11
+ ### Bug Fixes
12
+
13
+ * add COSTSHEET_REJECTED action to notification link handler ([05bde18](https://gitlab.finema.co/finema/internal/finework/commit/05bde1873f71cbdea589fc82a9e769403b796ed1))
14
+
3
15
  ## [2.0.50](https://gitlab.finema.co/finema/internal/finework/compare/2.0.49...2.0.50) (2026-08-27)
4
16
 
5
17
  ### Bug Fixes
@@ -8,7 +8,9 @@
8
8
  class="w-full"
9
9
  :transition="isMobile ? true: false"
10
10
  :ui="{
11
- content: isMobile ? '!w-[calc(100vw-3.5rem)]' : 'lg:translate-y-[63px] w-full lg:translate-y-[71px]',
11
+ content: isMobile
12
+ ? '!w-[calc(100vw-3.5rem)]'
13
+ : 'lg:translate-y-[63px] w-full lg:translate-y-[71px] !max-w-[750px] !left-4 md:!left-8 !right-auto',
12
14
  }"
13
15
  >
14
16
  <Button
@@ -176,6 +176,7 @@ const getLink = (item: INotificationItem) => {
176
176
 
177
177
  switch (item.action_type) {
178
178
  case 'COSTSHEET_WAITING_APPROVAL':
179
+ case 'COSTSHEET_REJECTED':
179
180
  return `/cost-sheet/doc/${costSheetDocID}?tab=COSTSHEET`
180
181
  case 'COSTSHEET_APPROVED':
181
182
  return `/cost-sheet/doc/${costSheetDocID}?tab=EXPENSE`
@@ -243,32 +244,59 @@ const getLink = (item: INotificationItem) => {
243
244
  }
244
245
  }
245
246
 
247
+ // source_type prefix -> app logo (shared with the portal via UserModuleLogo)
248
+ interface INotificationLogo {
249
+ prefix: string
250
+ logo: string
251
+ }
252
+
253
+ const NOTIFICATION_LOGO_BY_PREFIX: INotificationLogo[] = [
254
+ {
255
+ prefix: 'PMO',
256
+ logo: UserModuleLogo[UserModule.PMO],
257
+ },
258
+ {
259
+ prefix: 'TIMESHEET',
260
+ logo: UserModuleLogo[UserModule.TIMESHEET],
261
+ },
262
+ {
263
+ prefix: 'CLOCKIN',
264
+ logo: UserModuleLogo[UserModule.CHECKIN],
265
+ },
266
+ {
267
+ prefix: 'NEWSLETTER',
268
+ logo: UserModuleLogo[UserModule.NEWSLETTER],
269
+ },
270
+ {
271
+ prefix: 'TODO',
272
+ logo: UserModuleLogo[UserModule.TODO],
273
+ },
274
+ {
275
+ prefix: 'EVALUATION',
276
+ logo: UserModuleLogo[UserModule.EVALUATION],
277
+ },
278
+ {
279
+ prefix: 'COSTSHEET',
280
+ logo: UserModuleLogo[UserModule.COSTSHEET],
281
+ },
282
+ {
283
+ prefix: 'REQUEST',
284
+ logo: UserModuleLogo[UserModule.REQUEST],
285
+ },
286
+ {
287
+ prefix: 'RECRUIT',
288
+ logo: UserModuleLogo[UserModule.RECRUIT],
289
+ },
290
+ {
291
+ prefix: 'SETTING',
292
+ logo: '/admin/super-admin-logo.svg',
293
+ },
294
+ ]
295
+
246
296
  const getImage = (item: INotificationItem): string | null => {
247
- if (item.source_type?.startsWith('PMO')) {
248
- return `/admin/pmo-logo.png`
249
- } else if (item.source_type?.startsWith('TIMESHEET')) {
250
- return `/admin/timesheet-logo.png`
251
- } else if (item.source_type?.startsWith('CLOCKIN')) {
252
- return `/admin/clockin-logo.png`
253
- } else if (item.source_type?.startsWith('SETTING')) {
254
- return `/admin/super-admin-logo.png`
255
- } else if (item.source_type?.startsWith('NEWSLETTER')) {
256
- return `/admin/newsletter.png`
257
- } else if (item.source_type?.startsWith('TODO')) {
258
- return `/admin/todo.png`
259
- } else if (item.source_type?.startsWith('EVALUATION')) {
260
- return `/admin/evaluation.png`
261
- } else if (item.source_type?.startsWith('COSTSHEET')) {
262
- return `/admin/cost-sheet.png`
263
- } else if (item.source_type?.startsWith('REQUEST')) {
264
- return `/admin/request.png`
265
- } else if (item.source_type?.startsWith('RECRUIT')) {
266
- return `/admin/recruit.png`
267
- } else if (item.source_type?.startsWith('SETTING_FEEDBACK_TICKET')) {
268
- return `/admin/super-admin-logo.png`
269
- }
297
+ const sourceType = item.source_type ?? ''
270
298
 
271
- return null
299
+ return NOTIFICATION_LOGO_BY_PREFIX.find((entry) => sourceType.startsWith(entry.prefix))?.logo ?? null
272
300
  }
273
301
 
274
302
  const getNotificationColor = (item: INotificationItem): string => {