phx-react 1.3.1680 → 1.3.1681

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 (95) hide show
  1. package/dist/cjs/assets/icons/index.js +2 -0
  2. package/dist/cjs/assets/icons/index.js.map +1 -1
  3. package/dist/cjs/assets/icons/index.ts +2 -0
  4. package/dist/cjs/assets/icons/paper-clip.svg +3 -0
  5. package/dist/cjs/components/FormTarget/components/modal-delete/modal-delete.d.ts +13 -0
  6. package/dist/cjs/components/FormTarget/components/modal-delete/modal-delete.js +19 -0
  7. package/dist/cjs/components/FormTarget/components/modal-delete/modal-delete.js.map +1 -0
  8. package/dist/cjs/components/FormTarget/components/modal-import/confirm-upload.d.ts +7 -0
  9. package/dist/cjs/components/FormTarget/components/modal-import/confirm-upload.js +25 -0
  10. package/dist/cjs/components/FormTarget/components/modal-import/confirm-upload.js.map +1 -0
  11. package/dist/cjs/components/FormTarget/components/modal-import/modal-import-user.d.ts +10 -0
  12. package/dist/cjs/components/FormTarget/components/modal-import/modal-import-user.js +177 -0
  13. package/dist/cjs/components/FormTarget/components/modal-import/modal-import-user.js.map +1 -0
  14. package/dist/cjs/components/FormTarget/components/modal-import/preview-user.d.ts +10 -0
  15. package/dist/cjs/components/FormTarget/components/modal-import/preview-user.js +22 -0
  16. package/dist/cjs/components/FormTarget/components/modal-import/preview-user.js.map +1 -0
  17. package/dist/cjs/components/FormTarget/components/modal-import/table-custom-user.d.ts +11 -0
  18. package/dist/cjs/components/FormTarget/components/modal-import/table-custom-user.js +56 -0
  19. package/dist/cjs/components/FormTarget/components/modal-import/table-custom-user.js.map +1 -0
  20. package/dist/cjs/components/FormTarget/components/table-custom-list.js +51 -47
  21. package/dist/cjs/components/FormTarget/components/table-custom-list.js.map +1 -1
  22. package/dist/cjs/components/FormTarget/constant.d.ts +13 -0
  23. package/dist/cjs/components/FormTarget/constant.js +15 -1
  24. package/dist/cjs/components/FormTarget/constant.js.map +1 -1
  25. package/dist/cjs/components/FormTarget/graphql/query.d.ts +5 -0
  26. package/dist/cjs/components/FormTarget/graphql/query.js +162 -1
  27. package/dist/cjs/components/FormTarget/graphql/query.js.map +1 -1
  28. package/dist/cjs/components/FormTarget/hooks/use-import-user.d.ts +5 -0
  29. package/dist/cjs/components/FormTarget/hooks/use-import-user.js +168 -0
  30. package/dist/cjs/components/FormTarget/hooks/use-import-user.js.map +1 -0
  31. package/dist/cjs/components/FormTarget/type/target.d.ts +5 -0
  32. package/dist/cjs/components/FormTarget/type/user.d.ts +77 -0
  33. package/dist/cjs/components/FormTarget/type/user.js +3 -0
  34. package/dist/cjs/components/FormTarget/type/user.js.map +1 -0
  35. package/dist/cjs/components/UploadFile/ButtonUpload.d.ts +1 -1
  36. package/dist/cjs/components/UploadFile/FormUpload.d.ts +24 -1
  37. package/dist/cjs/components/UploadFile/FormUpload.js +29 -18
  38. package/dist/cjs/components/UploadFile/FormUpload.js.map +1 -1
  39. package/dist/cjs/components/UploadFile/PHXUploadFile.d.ts +50 -0
  40. package/dist/cjs/components/UploadFile/PHXUploadFile.js +24 -0
  41. package/dist/cjs/components/UploadFile/PHXUploadFile.js.map +1 -0
  42. package/dist/cjs/components/UploadFile/UploadFile.d.ts +1 -1
  43. package/dist/cjs/components/UploadFile/UploadFile.js +5 -5
  44. package/dist/cjs/components/UploadFile/UploadFile.js.map +1 -1
  45. package/dist/cjs/components/UploadFile/index.d.ts +1 -1
  46. package/dist/cjs/components/UploadFile/index.js +1 -1
  47. package/dist/cjs/components/UploadFile/index.js.map +1 -1
  48. package/dist/esm/assets/icons/index.js +2 -0
  49. package/dist/esm/assets/icons/index.js.map +1 -1
  50. package/dist/esm/assets/icons/index.ts +2 -0
  51. package/dist/esm/assets/icons/paper-clip.svg +3 -0
  52. package/dist/esm/components/FormTarget/components/modal-delete/modal-delete.d.ts +13 -0
  53. package/dist/esm/components/FormTarget/components/modal-delete/modal-delete.js +14 -0
  54. package/dist/esm/components/FormTarget/components/modal-delete/modal-delete.js.map +1 -0
  55. package/dist/esm/components/FormTarget/components/modal-import/confirm-upload.d.ts +7 -0
  56. package/dist/esm/components/FormTarget/components/modal-import/confirm-upload.js +20 -0
  57. package/dist/esm/components/FormTarget/components/modal-import/confirm-upload.js.map +1 -0
  58. package/dist/esm/components/FormTarget/components/modal-import/modal-import-user.d.ts +10 -0
  59. package/dist/esm/components/FormTarget/components/modal-import/modal-import-user.js +173 -0
  60. package/dist/esm/components/FormTarget/components/modal-import/modal-import-user.js.map +1 -0
  61. package/dist/esm/components/FormTarget/components/modal-import/preview-user.d.ts +10 -0
  62. package/dist/esm/components/FormTarget/components/modal-import/preview-user.js +17 -0
  63. package/dist/esm/components/FormTarget/components/modal-import/preview-user.js.map +1 -0
  64. package/dist/esm/components/FormTarget/components/modal-import/table-custom-user.d.ts +11 -0
  65. package/dist/esm/components/FormTarget/components/modal-import/table-custom-user.js +51 -0
  66. package/dist/esm/components/FormTarget/components/modal-import/table-custom-user.js.map +1 -0
  67. package/dist/esm/components/FormTarget/components/table-custom-list.js +51 -47
  68. package/dist/esm/components/FormTarget/components/table-custom-list.js.map +1 -1
  69. package/dist/esm/components/FormTarget/constant.d.ts +13 -0
  70. package/dist/esm/components/FormTarget/constant.js +14 -0
  71. package/dist/esm/components/FormTarget/constant.js.map +1 -1
  72. package/dist/esm/components/FormTarget/graphql/query.d.ts +5 -0
  73. package/dist/esm/components/FormTarget/graphql/query.js +161 -0
  74. package/dist/esm/components/FormTarget/graphql/query.js.map +1 -1
  75. package/dist/esm/components/FormTarget/hooks/use-import-user.d.ts +5 -0
  76. package/dist/esm/components/FormTarget/hooks/use-import-user.js +163 -0
  77. package/dist/esm/components/FormTarget/hooks/use-import-user.js.map +1 -0
  78. package/dist/esm/components/FormTarget/type/target.d.ts +5 -0
  79. package/dist/esm/components/FormTarget/type/user.d.ts +77 -0
  80. package/dist/esm/components/FormTarget/type/user.js +2 -0
  81. package/dist/esm/components/FormTarget/type/user.js.map +1 -0
  82. package/dist/esm/components/UploadFile/ButtonUpload.d.ts +1 -1
  83. package/dist/esm/components/UploadFile/FormUpload.d.ts +24 -1
  84. package/dist/esm/components/UploadFile/FormUpload.js +29 -18
  85. package/dist/esm/components/UploadFile/FormUpload.js.map +1 -1
  86. package/dist/esm/components/UploadFile/PHXUploadFile.d.ts +50 -0
  87. package/dist/esm/components/UploadFile/PHXUploadFile.js +19 -0
  88. package/dist/esm/components/UploadFile/PHXUploadFile.js.map +1 -0
  89. package/dist/esm/components/UploadFile/UploadFile.d.ts +1 -1
  90. package/dist/esm/components/UploadFile/UploadFile.js +3 -3
  91. package/dist/esm/components/UploadFile/UploadFile.js.map +1 -1
  92. package/dist/esm/components/UploadFile/index.d.ts +1 -1
  93. package/dist/esm/components/UploadFile/index.js +1 -1
  94. package/dist/esm/components/UploadFile/index.js.map +1 -1
  95. package/package.json +2 -1
@@ -366,4 +366,165 @@ export const GET_CLASSROOM_BY_USER_IDS = `
366
366
  }
367
367
  }
368
368
  `;
369
+ export const FIND_STUDENT_BY_USER_CODE = `
370
+ query FindStudentByUserCodes($userCodes: [String!]!, $schoolId: Int!) {
371
+ allCoreStudentPublicProfileStudents(
372
+ filter: {
373
+ deletedAt: { isNull: true }
374
+ userCode: { in: $userCodes }
375
+ schoolId: { equalTo: $schoolId }
376
+ }
377
+ ) {
378
+ pageInfo {
379
+ endCursor
380
+ hasNextPage
381
+ hasPreviousPage
382
+ startCursor
383
+ }
384
+ nodes {
385
+ userCode
386
+ gradeId
387
+ studentId
388
+ coreStudentPublicGradeByGradeIdAndSchoolId {
389
+ name
390
+ id: rowId
391
+ }
392
+ coreStudentPublicUserByStudentIdAndSchoolId {
393
+ coreStudentPublicRelationshipUsersByStudentIdAndSchoolId(
394
+ filter: {
395
+ deletedAt: { isNull: true }
396
+ schoolId: { equalTo: $schoolId }
397
+ }
398
+ ) {
399
+ nodes {
400
+ parentId
401
+ relationshipCode
402
+ rowId
403
+ }
404
+ }
405
+ }
406
+ coreStudentPublicProgramMapEducationalLevelByProgramEducationalIdAndSchoolId {
407
+ coreStudentPublicEducationalLevelByEducationalLevelIdAndSchoolId {
408
+ code
409
+ name
410
+ id: rowId
411
+ }
412
+ }
413
+ }
414
+ }
415
+ }
416
+
417
+ `;
418
+ // TODO: filter isQuitJob
419
+ export const FIND_STAFF_BY_USER_CODE = `
420
+ query FindStaffByUserCodes($userCodes: [String!]!, $schoolId: Int!) {
421
+ allCoreAdminPublicUsers(
422
+ filter: {
423
+ deletedAt: { isNull: true }
424
+ schoolId: { equalTo: $schoolId }
425
+ coreAdminPublicProfileStaffByStaffIdAndSchoolId: {
426
+ userCode: { in: $userCodes }
427
+ deletedAt: { isNull: true }
428
+ schoolId: { equalTo: $schoolId }
429
+ }
430
+ }
431
+ ) {
432
+ pageInfo {
433
+ endCursor
434
+ hasNextPage
435
+ hasPreviousPage
436
+ startCursor
437
+ }
438
+ nodes {
439
+ id: rowId
440
+ fullName
441
+ phoneNumber
442
+ emailSecondary
443
+ email
444
+ isUseEmailSecondary
445
+ coreAdminPublicProfileStaffByStaffIdAndSchoolId {
446
+ userCode
447
+ }
448
+ }
449
+ }
450
+ }
451
+ `;
452
+ export const FIND_TEACHER_BY_USER_CODE = `
453
+ query FindTeacherByUserCodes($userCodes: [String!]!, $schoolId: Int!) {
454
+ allCoreAdminPublicProfileTeachers(
455
+ filter: {
456
+ deletedAt: { isNull: true }
457
+ userCode: { in: $userCodes }
458
+ schoolId: { equalTo: $schoolId }
459
+ }
460
+ ) {
461
+ pageInfo {
462
+ endCursor
463
+ hasNextPage
464
+ hasPreviousPage
465
+ startCursor
466
+ }
467
+ nodes {
468
+ userCode
469
+ coreAdminPublicEducationalLevelGroupByEducationalLevelGroupIdAndSchoolId {
470
+ id: rowId
471
+ name
472
+ schoolId
473
+ }
474
+ coreAdminPublicUserByTeacherIdAndSchoolId {
475
+ email
476
+ emailSecondary
477
+ fullName
478
+ id: rowId
479
+ phoneNumber
480
+ isUseEmailSecondary
481
+ isEmailValid
482
+ isEmailSecondaryValid
483
+ }
484
+ }
485
+ }
486
+ }
487
+ `;
488
+ export const FIND_USER_INFO = `
489
+ query findUserInfo($ids: [Int!]!, $schoolId: Int!) {
490
+ allCoreAdminPublicUsers(
491
+ filter: {
492
+ rowId: {in: $ids}
493
+ deletedAt: {isNull: true}
494
+ schoolId: {equalTo: $schoolId}
495
+ }
496
+ ) {
497
+ nodes {
498
+ email
499
+ fullName
500
+ isEmailValid
501
+ isEmailSecondaryValid
502
+ isUseEmailSecondary
503
+ id: rowId
504
+ }
505
+ }
506
+ }
507
+ `;
508
+ export const FIND_CLASSROOM_BY_USER_IDS = `
509
+ query FindClassroomByUserIds($userIds: [Int!]!, $schoolYearId: Int!, $schoolId: Int!) {
510
+ allCoreAcademicPublicClassroomStudents(
511
+ filter: {
512
+ deletedAt: {isNull: true}
513
+ coreAcademicPublicClassroomByClassroomIdAndSchoolId: {
514
+ schoolYearId: {equalTo: $schoolYearId}
515
+ }
516
+ studentId: { in: $userIds }
517
+ schoolId: { equalTo: $schoolId }
518
+ }
519
+ ) {
520
+ nodes {
521
+ coreAcademicPublicClassroomByClassroomIdAndSchoolId {
522
+ name
523
+ rowId
524
+ }
525
+ studentId
526
+ }
527
+ }
528
+ }
529
+ `;
369
530
  //# sourceMappingURL=query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../src/components/FormTarget/graphql/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,cAAc,EAAsB,MAAM,gBAAgB,CAAA;AAEnE,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2C/B,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,MAAiB,EAAE,YAAoB,EAAE,QAAgB,EAAE,EAAE;IACrF,MAAM,aAAa,GAAG;QACpB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;;;;;;;;;oGAS2E,YAAY;;;;;;;;;KAS3G;QACD,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;;;;;;;;;KASlB;QACD,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;uCAoBc,YAAY;kCACjB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6BrC;QACD,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE;QAC1B,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE;KACvB,CAAA;IAED,OAAO,aAAa,CAAC,MAAM,CAAC,CAAA;AAC9B,CAAC,CAAA;AAED,MAAM,qBAAqB,GAAG,CAAC,EAAE,MAAM,EAAyD,EAAU,EAAE;IAC1G,IAAI,MAAM,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,OAAO;QACH;;;cAGM;KACT,CAAA;IACH,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;QACjC,OAAO;;gCAEqB,cAAc,CAAC,QAAQ;;;KAGlD,CAAA;IACH,CAAC;IAED,IAAI,MAAM,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;QACjC,OAAO;;;;;KAKN,CAAA;IACH,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;;UAatF,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;;;;;;;;;;;;;;;;;QAiBnC,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC;;;;;;;IAOpD,CAAA;AAEJ,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CjC,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqFvC,CAAA;AACD,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;CAOlC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BxC,CAAA"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../src/components/FormTarget/graphql/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,cAAc,EAAsB,MAAM,gBAAgB,CAAA;AAEnE,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2C/B,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,MAAiB,EAAE,YAAoB,EAAE,QAAgB,EAAE,EAAE;IACrF,MAAM,aAAa,GAAG;QACpB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;;;;;;;;;oGAS2E,YAAY;;;;;;;;;KAS3G;QACD,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;;;;;;;;;KASlB;QACD,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;uCAoBc,YAAY;kCACjB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6BrC;QACD,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE;QAC1B,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE;KACvB,CAAA;IAED,OAAO,aAAa,CAAC,MAAM,CAAC,CAAA;AAC9B,CAAC,CAAA;AAED,MAAM,qBAAqB,GAAG,CAAC,EAAE,MAAM,EAAyD,EAAU,EAAE;IAC1G,IAAI,MAAM,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;QAC/B,OAAO;QACH;;;cAGM;KACT,CAAA;IACH,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;QACjC,OAAO;;gCAEqB,cAAc,CAAC,QAAQ;;;KAGlD,CAAA;IACH,CAAC;IAED,IAAI,MAAM,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;QACjC,OAAO;;;;;KAKN,CAAA;IACH,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;;UAatF,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;;;;;;;;;;;;;;;;;QAiBnC,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC;;;;;;;IAOpD,CAAA;AAEJ,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CjC,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqFvC,CAAA;AACD,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;CAOlC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BxC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDxC,CAAA;AAED,yBAAyB;AACzB,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCtC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCtC,CAAA;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;CAmB7B,CAAA;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBzC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { ERoleCode } from '../constant';
2
+ import { IFilterValueItem } from '../type/target';
3
+ export declare const useImportUser: () => {
4
+ findUserByUserCodes: (target: ERoleCode, userCodes: Array<string>) => Promise<Array<IFilterValueItem>>;
5
+ };
@@ -0,0 +1,163 @@
1
+ import PHXFuncGetLoggedInfo from '../../Func/getLoginInfo';
2
+ import { PHXClientQueryV6 } from '../../Func/GRPC/PHXGrpcClientV6';
3
+ import PHXGetCurrentYearWithTermV3 from '../../Func/SchoolYearV3/getSchoolYearV3';
4
+ import { ECoreSchemaGroup, ERoleCode } from '../constant';
5
+ import { FIND_USER_INFO, FIND_CLASSROOM_BY_USER_IDS, FIND_STUDENT_BY_USER_CODE, FIND_STAFF_BY_USER_CODE, FIND_TEACHER_BY_USER_CODE, } from '../graphql/query';
6
+ export const useImportUser = () => {
7
+ var _a, _b;
8
+ const userInfo = PHXFuncGetLoggedInfo();
9
+ const schoolId = userInfo === null || userInfo === void 0 ? void 0 : userInfo.school_id;
10
+ const schoolYear = PHXGetCurrentYearWithTermV3();
11
+ const schoolYearId = (_b = (_a = schoolYear === null || schoolYear === void 0 ? void 0 : schoolYear.current_school_year) === null || _a === void 0 ? void 0 : _a.schoolYear) === null || _b === void 0 ? void 0 : _b.id;
12
+ const formatStaffData = (data) => data.map((item) => ({
13
+ id: item.id,
14
+ code: item.coreAdminPublicProfileStaffByStaffIdAndSchoolId.userCode,
15
+ phone: item.phoneNumber,
16
+ email: item.email,
17
+ name: item.fullName,
18
+ emailSecondary: item.emailSecondary,
19
+ isUseEmailSecondary: item.isUseEmailSecondary,
20
+ full_name: item.fullName,
21
+ }));
22
+ const formatTeacherData = (data) => data.map((item) => ({
23
+ id: item.coreAdminPublicUserByTeacherIdAndSchoolId.id,
24
+ code: item.userCode,
25
+ phone: item.coreAdminPublicUserByTeacherIdAndSchoolId.phoneNumber,
26
+ email: item.coreAdminPublicUserByTeacherIdAndSchoolId.email,
27
+ name: item.coreAdminPublicUserByTeacherIdAndSchoolId.fullName,
28
+ emailSecondary: item.coreAdminPublicUserByTeacherIdAndSchoolId.emailSecondary,
29
+ isUseEmailSecondary: item.coreAdminPublicUserByTeacherIdAndSchoolId.isUseEmailSecondary,
30
+ full_name: item.coreAdminPublicUserByTeacherIdAndSchoolId.fullName,
31
+ }));
32
+ const formatStudentData = (data, userInfoMap = {}) => data.map((item) => {
33
+ var _a, _b, _c, _d, _e, _f, _g;
34
+ const parents = (_c = (_b = (_a = item.coreStudentPublicUserByStudentIdAndSchoolId) === null || _a === void 0 ? void 0 : _a.coreStudentPublicRelationshipUsersByStudentIdAndSchoolId) === null || _b === void 0 ? void 0 : _b.nodes) === null || _c === void 0 ? void 0 : _c.map((node) => {
35
+ var _a;
36
+ return ({
37
+ id: node.parentId,
38
+ relationship_code: node.relationshipCode || '',
39
+ full_name: ((_a = userInfoMap[node.parentId]) === null || _a === void 0 ? void 0 : _a.fullName) || '',
40
+ });
41
+ });
42
+ return {
43
+ id: Number(item.studentId),
44
+ code: item.userCode,
45
+ name: item.fullName || '',
46
+ full_name: item.fullName || '',
47
+ educational_level: (_e = (_d = item.coreStudentPublicProgramMapEducationalLevelByProgramEducationalIdAndSchoolId) === null || _d === void 0 ? void 0 : _d.coreStudentPublicEducationalLevelByEducationalLevelIdAndSchoolId) === null || _e === void 0 ? void 0 : _e.name,
48
+ grade: (_f = item.coreStudentPublicGradeByGradeIdAndSchoolId) === null || _f === void 0 ? void 0 : _f.name,
49
+ classroom: (_g = item.classroom) === null || _g === void 0 ? void 0 : _g.name,
50
+ parents: parents || [],
51
+ };
52
+ });
53
+ const findUserInFo = async (ids) => {
54
+ const { data } = await PHXClientQueryV6({
55
+ schemaGroup: ECoreSchemaGroup.CORE_ADMIN,
56
+ variables: {
57
+ ids,
58
+ schoolId,
59
+ },
60
+ query: FIND_USER_INFO,
61
+ });
62
+ return data.allCoreAdminPublicUsers.nodes;
63
+ };
64
+ const findClassroomByUserIds = async (userIds, querySchoolYearId, querySchoolId) => {
65
+ const { data } = await PHXClientQueryV6({
66
+ schemaGroup: ECoreSchemaGroup.CORE_ACADEMIC,
67
+ variables: {
68
+ userIds,
69
+ schoolYearId: querySchoolYearId,
70
+ schoolId: querySchoolId,
71
+ },
72
+ query: FIND_CLASSROOM_BY_USER_IDS,
73
+ });
74
+ return data.allCoreAcademicPublicClassroomStudents.nodes;
75
+ };
76
+ const findStudentByUserCodes = async (userCodes) => {
77
+ const { data } = await PHXClientQueryV6({
78
+ schemaGroup: ECoreSchemaGroup.CORE_STUDENT,
79
+ variables: {
80
+ userCodes,
81
+ schoolId,
82
+ },
83
+ query: FIND_STUDENT_BY_USER_CODE,
84
+ });
85
+ const result = data.allCoreStudentPublicProfileStudents.nodes;
86
+ const userIds = new Set();
87
+ result.forEach((item) => {
88
+ var _a, _b;
89
+ userIds.add(item.studentId);
90
+ const parentNodes = (_b = (_a = item.coreStudentPublicUserByStudentIdAndSchoolId) === null || _a === void 0 ? void 0 : _a.coreStudentPublicRelationshipUsersByStudentIdAndSchoolId) === null || _b === void 0 ? void 0 : _b.nodes;
91
+ parentNodes === null || parentNodes === void 0 ? void 0 : parentNodes.forEach((node) => {
92
+ if (node.parentId) {
93
+ userIds.add(node.parentId);
94
+ }
95
+ });
96
+ });
97
+ const studentInfo = await findUserInFo(Array.from(userIds));
98
+ const userInfoMap = {};
99
+ studentInfo.forEach((user) => {
100
+ userInfoMap[user.id] = user;
101
+ });
102
+ const classroomData = await findClassroomByUserIds(Array.from(new Set(result.map((item) => item.studentId))), schoolYearId, schoolId);
103
+ const classroomMap = {};
104
+ classroomData.forEach((item) => {
105
+ classroomMap[item.studentId] = item.coreAcademicPublicClassroomByClassroomIdAndSchoolId;
106
+ });
107
+ const mergeData = result.map((item) => {
108
+ const userDetail = userInfoMap[item.studentId];
109
+ const classroom = classroomMap[item.studentId];
110
+ return {
111
+ ...item,
112
+ fullName: userDetail === null || userDetail === void 0 ? void 0 : userDetail.fullName,
113
+ classroom: classroom
114
+ ? {
115
+ id: classroom.rowId,
116
+ name: classroom.name,
117
+ }
118
+ : undefined,
119
+ };
120
+ });
121
+ return formatStudentData(mergeData, userInfoMap);
122
+ };
123
+ const findStaffByUserCodes = async (userCodes) => {
124
+ const { data } = await PHXClientQueryV6({
125
+ schemaGroup: ECoreSchemaGroup.CORE_ADMIN,
126
+ variables: {
127
+ userCodes,
128
+ schoolId,
129
+ },
130
+ query: FIND_STAFF_BY_USER_CODE,
131
+ });
132
+ const result = data.allCoreAdminPublicUsers.nodes;
133
+ return formatStaffData(result);
134
+ };
135
+ const findTeacherByUserCodes = async (userCodes) => {
136
+ const { data } = await PHXClientQueryV6({
137
+ schemaGroup: ECoreSchemaGroup.CORE_ADMIN,
138
+ variables: {
139
+ userCodes,
140
+ schoolId,
141
+ },
142
+ query: FIND_TEACHER_BY_USER_CODE,
143
+ });
144
+ const result = data.allCoreAdminPublicProfileTeachers.nodes;
145
+ return formatTeacherData(result);
146
+ };
147
+ const findUserByUserCodes = async (target, userCodes) => {
148
+ switch (target) {
149
+ case ERoleCode.STUDENT:
150
+ return findStudentByUserCodes(userCodes);
151
+ case ERoleCode.STAFF:
152
+ return findStaffByUserCodes(userCodes);
153
+ case ERoleCode.TEACHER:
154
+ return findTeacherByUserCodes(userCodes);
155
+ default:
156
+ return [];
157
+ }
158
+ };
159
+ return {
160
+ findUserByUserCodes,
161
+ };
162
+ };
163
+ //# sourceMappingURL=use-import-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-import-user.js","sourceRoot":"","sources":["../../../../../src/components/FormTarget/hooks/use-import-user.ts"],"names":[],"mappings":"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"}
@@ -148,3 +148,8 @@ export interface ITargetGroupBuilderProps {
148
148
  export declare enum EStudentStatus {
149
149
  STUDYING = 2
150
150
  }
151
+ export interface IInvalidUser {
152
+ code: string;
153
+ reason?: string;
154
+ reasonDetail?: string;
155
+ }
@@ -0,0 +1,77 @@
1
+ export interface IStaffData {
2
+ id: number;
3
+ fullName: string;
4
+ phoneNumber: string;
5
+ emailSecondary?: string;
6
+ email?: string;
7
+ isUseEmailSecondary?: boolean;
8
+ coreAdminPublicProfileStaffByStaffIdAndSchoolId: {
9
+ userCode: string;
10
+ };
11
+ }
12
+ export interface IStudentDataV5 {
13
+ userCode: string;
14
+ studentId: number;
15
+ coreStudentPublicGradeByGradeIdAndSchoolId: {
16
+ name: string;
17
+ id: number;
18
+ };
19
+ coreStudentPublicUserByStudentIdAndSchoolId: {
20
+ coreStudentPublicRelationshipUsersByStudentIdAndSchoolId?: {
21
+ nodes: Array<{
22
+ parentId: number;
23
+ relationshipCode: string;
24
+ id: number;
25
+ }>;
26
+ };
27
+ };
28
+ coreStudentPublicProgramMapEducationalLevelByProgramEducationalIdAndSchoolId: {
29
+ coreStudentPublicEducationalLevelByEducationalLevelIdAndSchoolId: {
30
+ code: string;
31
+ name: string;
32
+ id: number;
33
+ };
34
+ };
35
+ }
36
+ export interface IStudentMergeData extends IStudentDataV5 {
37
+ fullName?: string;
38
+ phoneNumber?: string;
39
+ email?: string;
40
+ emailSecondary?: string;
41
+ isUseEmailSecondary?: boolean;
42
+ isEmailValid?: boolean;
43
+ isEmailSecondaryValid?: boolean;
44
+ classroom?: {
45
+ id: number;
46
+ name: string;
47
+ };
48
+ }
49
+ export interface ITeacherDataV5 {
50
+ userCode: string;
51
+ coreAdminPublicEducationalLevelGroupByEducationalLevelGroupIdAndSchoolId: {
52
+ id: number;
53
+ name?: string;
54
+ schoolId?: number;
55
+ };
56
+ id: number;
57
+ coreAdminPublicUserByTeacherIdAndSchoolId: {
58
+ email: string;
59
+ emailSecondary?: string;
60
+ fullName: string;
61
+ id: number;
62
+ phoneNumber?: string;
63
+ isUseEmailSecondary?: boolean;
64
+ isEmailValid?: boolean;
65
+ isEmailSecondaryValid?: boolean;
66
+ };
67
+ }
68
+ export interface IUserInfoV5 {
69
+ id: number;
70
+ fullName: string;
71
+ phoneNumber: string;
72
+ emailSecondary?: string;
73
+ email?: string;
74
+ isUseEmailSecondary?: boolean;
75
+ isEmailValid?: boolean;
76
+ isEmailSecondaryValid?: boolean;
77
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../../../src/components/FormTarget/type/user.ts"],"names":[],"mappings":""}
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  export declare function ButtonUpload({ fileType, handleUploadClick, helpText, loading, disabled, }: {
3
3
  fileType: string;
4
4
  handleUploadClick(): void;
5
- helpText: string;
5
+ helpText?: string;
6
6
  loading?: boolean;
7
7
  disabled?: boolean;
8
8
  }): React.JSX.Element;
@@ -1,2 +1,25 @@
1
1
  import React from 'react';
2
- export declare function FormUpload({ fileName, fileType, handleCheckboxChange, handleFileChange, helpText, isImage, label, length, link, oneImg, selectedImages, setIsModalOpen, showImage, isHorizontalLayout, customNextImage, actionTextDelete, twoColumn, disabled, }: any): React.JSX.Element;
2
+ export interface IFormUploadProps {
3
+ actionTextDelete?: boolean;
4
+ customNextImage?: {
5
+ height?: number;
6
+ width?: number;
7
+ };
8
+ disabled?: boolean;
9
+ fileName?: string;
10
+ fileType?: 'excel' | 'image' | 'file' | 'pdf';
11
+ handleCheckboxChange?(index: number): void;
12
+ handleFileChange(event: React.ChangeEvent<HTMLInputElement>): void | Promise<void>;
13
+ helpText?: string;
14
+ isHorizontalLayout?: boolean;
15
+ isImage?: boolean;
16
+ label?: string;
17
+ length?: number;
18
+ link?: Array<string>;
19
+ oneImg?: boolean;
20
+ selectedImages?: Array<number>;
21
+ setIsModalOpen?(isOpen: boolean): void;
22
+ showImage?: boolean;
23
+ twoColumn?: boolean;
24
+ }
25
+ export declare function FormUpload({ actionTextDelete, customNextImage, disabled, fileName, fileType, handleCheckboxChange, handleFileChange, helpText, isHorizontalLayout, isImage, label, length, link, oneImg, selectedImages, setIsModalOpen, showImage, twoColumn, }: IFormUploadProps): React.JSX.Element;
@@ -4,7 +4,7 @@ import { ButtonUpload } from './ButtonUpload';
4
4
  import { classNames } from '../types';
5
5
  import { PHXButton } from '../Button';
6
6
  import { PHXSpinner } from '../Loading';
7
- export function FormUpload({ fileName, fileType, handleCheckboxChange, handleFileChange, helpText, isImage, label, length, link, oneImg, selectedImages, setIsModalOpen, showImage, isHorizontalLayout, customNextImage, actionTextDelete, twoColumn, disabled, }) {
7
+ export function FormUpload({ actionTextDelete, customNextImage, disabled, fileName = '', fileType = 'excel', handleCheckboxChange, handleFileChange, helpText, isHorizontalLayout, isImage, label, length, link = [], oneImg, selectedImages = [], setIsModalOpen, showImage, twoColumn, }) {
8
8
  const fileInputRef = useRef(null);
9
9
  const [showLargeImage, setShowLargeImage] = useState(false);
10
10
  const [largeImageUrl, setLargeImageUrl] = useState('');
@@ -63,44 +63,57 @@ export function FormUpload({ fileName, fileType, handleCheckboxChange, handleFil
63
63
  setFile(fileName);
64
64
  }
65
65
  }, [link]);
66
+ const renderFileInput = (className, id, ref) => (React.createElement("input", { ref: ref, accept: `${(fileType === 'excel' && '.xlsx, .xls') ||
67
+ (fileType === 'image' && '.jpg, .jpeg, .png, .gif, .webp') ||
68
+ (fileType === 'file' && '.pdf, .png,.jpg, .jpeg') ||
69
+ (fileType === 'pdf' && '.pdf')}`, className: className, id: id, name: id, onChange: handleAwaitUpdate, type: 'file' }));
66
70
  return (React.createElement(React.Fragment, null,
67
71
  React.createElement("div", { className: classNames('mb-1 flex text-xs font-normal text-gray-700', label ? 'justify-between' : '') }, label && React.createElement("label", null, label)),
68
72
  showSelectedTitle && (React.createElement("div", { className: 'flex justify-between ' },
69
- React.createElement("div", { className: '-pl-2 text-xs leading-5 text-gray-600 mb-4' },
73
+ React.createElement("div", { className: '-pl-2 mb-4 text-xs leading-5 text-gray-600' },
70
74
  length,
71
75
  " \u1EA3nh \u0111\u00E3 \u0111\u01B0\u1EE3c ch\u1ECDn"),
72
- actionTextDelete ? (React.createElement("p", { className: 'text-xs font-normal text-red-700 hover:underline cursor-pointer', onClick: () => setIsModalOpen(true) }, "Xo\u00E1 \u1EA3nh")) : (React.createElement(PHXButton, { deleted: true, onClick: () => setIsModalOpen(true), size: 'micro' }, "X\u00F3a")))),
76
+ actionTextDelete ? (React.createElement("div", { className: 'cursor-pointer text-xs font-normal text-red-700 hover:underline', onClick: () => setIsModalOpen === null || setIsModalOpen === void 0 ? void 0 : setIsModalOpen(true), onKeyDown: (e) => {
77
+ if (e.key === 'Enter' || e.key === ' ') {
78
+ setIsModalOpen === null || setIsModalOpen === void 0 ? void 0 : setIsModalOpen(true);
79
+ }
80
+ }, role: 'button', tabIndex: 0 }, "Xo\u00E1 \u1EA3nh")) : (React.createElement(PHXButton, { deleted: true, onClick: () => setIsModalOpen === null || setIsModalOpen === void 0 ? void 0 : setIsModalOpen(true), size: 'micro' }, "X\u00F3a")))),
73
81
  React.createElement("div", { className: 'relative' },
74
82
  isImage && (React.createElement("div", { className: `${oneImg ? 'flex justify-center rounded-lg bg-gray-100' : classCheckColumn}` }, listImage === null || listImage === void 0 ? void 0 :
75
83
  listImage.map((src, index) => {
76
84
  const isSelectImage = (selectedImages === null || selectedImages === void 0 ? void 0 : selectedImages.length) > 0;
77
85
  return (React.createElement("div", { key: index, className: `group relative overflow-hidden ${!oneImg ? 'aspect-square rounded-[10px] border' : ''}` },
78
- customNextImage ? (React.createElement(Image, { alt: 'img', className: ` object-contain ${oneImg ? 'max-h-[180px]' : 'h-full w-full object-contain'} ${selectedImages.includes(index) ? 'opacity-60' : ''}`, height: (customNextImage === null || customNextImage === void 0 ? void 0 : customNextImage.height) || 180, src: src, width: (customNextImage === null || customNextImage === void 0 ? void 0 : customNextImage.width) || 400 })) : (React.createElement("img", { alt: 'img', className: ` object-contain ${oneImg ? 'max-h-[180px]' : 'h-full w-full object-contain'} ${selectedImages.includes(index) ? 'opacity-60' : ''}`, src: src })),
86
+ customNextImage ? (React.createElement("img", { alt: 'img', className: ` object-contain ${oneImg ? 'max-h-[180px]' : 'h-full w-full object-contain'} ${selectedImages.includes(index) ? 'opacity-60' : ''}`, height: (customNextImage === null || customNextImage === void 0 ? void 0 : customNextImage.height) || 180, src: src, width: (customNextImage === null || customNextImage === void 0 ? void 0 : customNextImage.width) || 400 })) : (React.createElement("img", { alt: 'img', className: ` object-contain ${oneImg ? 'max-h-[180px]' : 'h-full w-full object-contain'} ${selectedImages.includes(index) ? 'opacity-60' : ''}`, src: src })),
79
87
  React.createElement("button", { className: `absolute inset-0 flex items-center justify-center bg-black text-white opacity-0 transition-opacity duration-300 group-hover:opacity-100 ${!oneImg ? 'bg-opacity-60' : 'bg-opacity-0'}`, onClick: () => {
80
88
  if (isSelectImage) {
81
- handleCheckboxChange(index);
89
+ handleCheckboxChange === null || handleCheckboxChange === void 0 ? void 0 : handleCheckboxChange(index);
82
90
  }
83
91
  else {
84
92
  handleImageClick(src);
85
93
  }
86
94
  }, type: 'button' }),
87
95
  !oneImg && (React.createElement("div", { className: `z-8 absolute left-[0.3rem] top-0 opacity-0 ${(selectedImages === null || selectedImages === void 0 ? void 0 : selectedImages.length) > 0 ? 'opacity-100' : 'group-hover:opacity-100'}` },
88
- React.createElement("input", { checked: selectedImages.includes(index), className: 'h-[16px] w-[16px] cursor-pointer rounded-[4px] text-black checked:bg-black checked:ring-0 focus:outline-none focus:ring-0', onChange: () => handleCheckboxChange(index), type: 'checkbox' })))));
96
+ React.createElement("input", { checked: selectedImages.includes(index), className: 'h-[16px] w-[16px] cursor-pointer rounded-[4px] text-black checked:bg-black checked:ring-0 focus:outline-none focus:ring-0', onChange: () => handleCheckboxChange === null || handleCheckboxChange === void 0 ? void 0 : handleCheckboxChange(index), type: 'checkbox' })))));
89
97
  }),
90
- !showMoreImage && (link === null || link === void 0 ? void 0 : link.length) > limitImageShow && (React.createElement("div", { className: 'group relative aspect-square overflow-hidden rounded-lg border' },
98
+ !showMoreImage && link.length > limitImageShow && (React.createElement("div", { className: 'group relative aspect-square overflow-hidden rounded-lg border' },
91
99
  React.createElement("img", { alt: 'img', className: 'mx-auto h-full object-cover', src: link === null || link === void 0 ? void 0 : link[limitImageShow + 1] }),
92
100
  React.createElement("button", { className: 'absolute inset-0 flex items-center justify-center bg-black bg-opacity-60 text-white backdrop-blur-sm transition-opacity duration-300 ', onClick: () => setShowMoreImage(true), type: 'button' },
93
101
  React.createElement("p", null,
94
102
  "+",
95
103
  ((link === null || link === void 0 ? void 0 : link.length) || 0) - limitImageShow)))),
96
- (link === null || link === void 0 ? void 0 : link.length) > 0 && !oneImg && (React.createElement("button", { className: ' flex aspect-square items-center justify-center rounded-lg border border-dashed border-gray-300 bg-[#F7F7F7] transition-all hover:bg-[#f1f1f1]', onClick: handleUploadClick, type: 'button' }, loading ? (React.createElement(PHXSpinner, null)) : (React.createElement("svg", { className: 'h-5 w-5', fill: 'none', stroke: 'currentColor', strokeWidth: '1.5', viewBox: '0 0 24 24', xmlns: 'http://www.w3.org/2000/svg' },
104
+ link.length > 0 && !oneImg && (React.createElement("button", { className: ' flex aspect-square items-center justify-center rounded-lg border border-dashed border-gray-300 bg-[#F7F7F7] transition-all hover:bg-[#f1f1f1]', onClick: handleUploadClick, type: 'button' }, loading ? (React.createElement(PHXSpinner, null)) : (React.createElement("svg", { className: 'h-5 w-5', fill: 'none', stroke: 'currentColor', strokeWidth: '1.5', viewBox: '0 0 24 24', xmlns: 'http://www.w3.org/2000/svg' },
97
105
  React.createElement("path", { d: 'M12 4.5v15m7.5-7.5h-15', strokeLinecap: 'round', strokeLinejoin: 'round' }))))),
98
- showLargeImage && (React.createElement("div", { className: 'fixed left-0 top-0 z-50 flex h-full w-full items-center justify-center bg-black bg-opacity-70', id: 'large-image-container', onClick: () => setShowLargeImage(false) },
99
- React.createElement("img", { alt: 'Large Image', className: 'max-h-full max-w-full', onClick: (e) => e.stopPropagation(), src: largeImageUrl }))))),
106
+ showLargeImage && (React.createElement("div", { className: 'fixed left-0 top-0 z-50 flex h-full w-full items-center justify-center bg-black bg-opacity-70', id: 'large-image-container', onClick: () => setShowLargeImage(false), onKeyDown: (e) => {
107
+ if (e.key === 'Enter' || e.key === ' ') {
108
+ setShowLargeImage(false);
109
+ }
110
+ }, role: 'button', tabIndex: 0 },
111
+ React.createElement(Image, { alt: 'Large Image', className: 'max-h-full max-w-full', onClick: (e) => e.stopPropagation(), src: largeImageUrl }))))),
100
112
  showButtonWithOneImage && (React.createElement("div", { className: ' mt-3 flex gap-2 ' },
101
113
  React.createElement(PHXButton, { disabled: disabled, loading: loading, onClick: handleUploadClick, secondary: true, size: 'micro' }, "Thay \u0111\u1ED5i"),
102
- React.createElement(PHXButton, { deleted: true, onClick: () => setIsModalOpen(true), size: 'micro' }, "Xo\u00E1 \u1EA3nh"))),
103
- ((link === null || link === void 0 ? void 0 : link.length) === 0 || isHorizontalLayout) && (React.createElement(React.Fragment, null, !file ? (React.createElement("div", { className: classNames('flex flex-col justify-center rounded-lg border border-dashed border-gray-900/25 px-5 pb-8 pt-8 ', disabled ? 'cursor-not-allowed' : 'hover:bg-[#f7f7f7] cursor-pointer') },
114
+ React.createElement(PHXButton, { deleted: true, onClick: () => setIsModalOpen === null || setIsModalOpen === void 0 ? void 0 : setIsModalOpen(true), size: 'micro' }, "Xo\u00E1 \u1EA3nh"))),
115
+ ((link === null || link === void 0 ? void 0 : link.length) === 0 || isHorizontalLayout) && (React.createElement(React.Fragment, null, !file ? (React.createElement("div", { className: classNames('relative flex flex-col justify-center rounded-lg border border-dashed border-gray-900/25 px-5 pb-8 pt-8 ', disabled ? 'cursor-not-allowed' : 'cursor-pointer hover:bg-[#f7f7f7]') },
116
+ renderFileInput('absolute inset-0 z-10 h-full w-full cursor-pointer opacity-0'),
104
117
  React.createElement("div", { className: 'flex flex-col items-center justify-center' },
105
118
  React.createElement(ButtonUpload, { disabled: disabled, fileType: fileType, handleUploadClick: () => {
106
119
  handleUploadClick();
@@ -110,17 +123,15 @@ export function FormUpload({ fileName, fileType, handleCheckboxChange, handleFil
110
123
  React.createElement("div", { className: 'h-full bg-gray-200 p-6' },
111
124
  React.createElement("svg", { "aria-hidden": 'true', className: 'h-5 w-5', focusable: 'false', viewBox: '0 0 20 20' },
112
125
  React.createElement("path", { d: 'M6.75 4c-.69 0-1.25.56-1.25 1.25v9.5c0 .69.56 1.25 1.25 1.25h6.5c.69 0 1.25-.56 1.25-1.25v-9a.75.75 0 0 1 1.5 0v9a2.75 2.75 0 0 1-2.75 2.75h-6.5a2.75 2.75 0 0 1-2.75-2.75v-9.5a2.75 2.75 0 0 1 2.75-2.75h3a2.75 2.75 0 0 1 2.75 2.75v6.25a2.5 2.5 0 0 1-5 0v-5.5a.75.75 0 0 1 1.5 0v5.5a1 1 0 1 0 2 0v-6.25c0-.69-.56-1.25-1.25-1.25h-3Z', fillRule: 'evenodd' }))),
113
- React.createElement("p", { className: 'truncate w-[15ch] flex-1 md:w-[20ch] sm:w-full px-2 text-sm text-gray-600' }, fileName),
126
+ React.createElement("p", { className: 'w-[15ch] flex-1 truncate px-2 text-sm text-gray-600 sm:w-full md:w-[20ch]' }, fileName),
114
127
  React.createElement("div", { className: 'pr-4' },
115
128
  React.createElement(PHXButton, { disabled: disabled, loading: loading, onClick: handleUploadClick, secondary: true, size: 'micro' }, "Thay \u0111\u1ED5i")))))))),
116
- (link === null || link === void 0 ? void 0 : link.length) > 0 && !isImage && !isHorizontalLayout && (React.createElement("div", { className: classNames('flex flex-col justify-center rounded-lg border border-dashed border-gray-900/25 px-5 pb-8 pt-8 ', disabled ? 'cursor-not-allowed' : 'hover:bg-[#f7f7f7] cursor-pointer') },
129
+ (link === null || link === void 0 ? void 0 : link.length) > 0 && !isImage && !isHorizontalLayout && (React.createElement("div", { className: classNames('relative flex flex-col justify-center rounded-lg border border-dashed border-gray-900/25 px-5 pb-8 pt-8 ', disabled ? 'cursor-not-allowed' : 'cursor-pointer hover:bg-[#f7f7f7]') },
130
+ renderFileInput('absolute inset-0 z-10 h-full w-full cursor-pointer opacity-0'),
117
131
  React.createElement("div", { className: 'flex flex-col items-center justify-center' }, fileType === 'file' && !showImage ? (React.createElement("div", { className: 'flex h-full items-center justify-center rounded-lg py-6 ' },
118
132
  React.createElement(PHXSpinner, { className: 'h-5 w-5' }))) : (React.createElement(React.Fragment, null,
119
133
  React.createElement("p", { className: 'mt-2 text-sm text-gray-600' }, fileName),
120
134
  React.createElement(ButtonUpload, { disabled: disabled, fileType: fileType, handleUploadClick: handleUploadClick, helpText: helpText, loading: loading }))))))),
121
- React.createElement("input", { ref: fileInputRef, accept: `${(fileType === 'excel' && '.xlsx, .xls') ||
122
- (fileType === 'image' && '.jpg, .jpeg, .png, .gif, .webp') ||
123
- (fileType === 'file' && '.pdf, .png,.jpg, .jpeg') ||
124
- (fileType === 'pdf' && '.pdf')}`, className: 'sr-only', id: 'file-upload', name: 'file-upload', onChange: handleAwaitUpdate, type: 'file' })));
135
+ renderFileInput('sr-only', 'file-upload', fileInputRef)));
125
136
  }
126
137
  //# sourceMappingURL=FormUpload.js.map