@pisell/private-materials 3.4.76 → 3.4.78

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 (208) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/index.js +1 -1
  5. package/build/lowcode/meta.js +2 -2
  6. package/build/lowcode/preview.js +7 -7
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +9 -9
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +10 -10
  11. package/es/components/booking/addons/model.d.ts +1 -10
  12. package/es/components/booking/forms/model.d.ts +1 -10
  13. package/es/components/booking/info/clientVariant/hooks/useIsLowSpeedNetwork.d.ts +0 -1
  14. package/es/components/booking/info/hooks/useInfoHolder.d.ts +1 -0
  15. package/es/components/booking/info/model.d.ts +1 -10
  16. package/es/components/booking/info/service/addService/utils.d.ts +1 -1
  17. package/es/components/booking/info2/service/addService/utils.d.ts +1 -1
  18. package/es/components/booking/model.d.ts +1 -9
  19. package/es/components/booking/notes/model.d.ts +1 -10
  20. package/es/components/booking/payments/model.d.ts +1 -10
  21. package/es/components/booking/utils.d.ts +2 -2
  22. package/es/components/eftpos/hooks.d.ts +0 -1
  23. package/es/components/eftposPay/amount.d.ts +1 -1
  24. package/es/components/eftposPay/device.d.ts +1 -1
  25. package/es/components/eftposPay/hooks.d.ts +1 -1
  26. package/es/components/eftposPay/store/index.d.ts +2 -2
  27. package/es/components/eftposPay/tyro/hooks.d.ts +0 -1
  28. package/es/components/eventBooking/components/ErrorTip/index.d.ts +0 -1
  29. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/WeekItem/index.d.ts +0 -1
  30. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/index.d.ts +0 -1
  31. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/DayItem/index.d.ts +0 -1
  32. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.d.ts +0 -1
  33. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/index.d.ts +0 -1
  34. package/es/components/pay/toC/model.d.ts +1 -9
  35. package/es/components/schedules/model.d.ts +1 -9
  36. package/es/components/shoppingCart/components/Empty/index.d.ts +1 -0
  37. package/es/hooks/useTranslationOriginal.d.ts +1 -0
  38. package/es/hooks/useTranslationOriginal.js +10 -0
  39. package/es/index.d.ts +3 -0
  40. package/es/index.js +3 -0
  41. package/es/plus/clientCard/index.d.ts +7 -0
  42. package/es/plus/clientCard/index.js +462 -0
  43. package/es/plus/clientCard/index.less +515 -0
  44. package/es/plus/clientCard/line/index.d.ts +9 -0
  45. package/es/plus/clientCard/line/index.js +157 -0
  46. package/es/plus/clientCard/line/index.less +142 -0
  47. package/es/plus/clientCard/locales.d.ts +18 -0
  48. package/es/plus/clientCard/locales.js +17 -0
  49. package/es/plus/clientCard/types.d.ts +135 -0
  50. package/es/plus/clientCard/types.js +1 -0
  51. package/es/plus/clientCard/utils.d.ts +8 -0
  52. package/es/plus/clientCard/utils.js +59 -0
  53. package/es/plus/clinetSearch/Add/BirthdayField/index.d.ts +3 -0
  54. package/es/plus/clinetSearch/Add/BirthdayField/index.js +277 -0
  55. package/es/plus/clinetSearch/Add/GenderField/index.d.ts +3 -0
  56. package/es/plus/clinetSearch/Add/GenderField/index.js +18 -0
  57. package/es/plus/clinetSearch/Add/PhoneField/index.d.ts +3 -0
  58. package/es/plus/clinetSearch/Add/PhoneField/index.js +52 -0
  59. package/es/plus/clinetSearch/Add/PhoneField/serve.d.ts +2 -0
  60. package/es/plus/clinetSearch/Add/PhoneField/serve.js +166 -0
  61. package/es/plus/clinetSearch/Add/index.d.ts +18 -0
  62. package/es/plus/clinetSearch/Add/index.js +213 -0
  63. package/es/plus/clinetSearch/Add/index.less +30 -0
  64. package/es/plus/clinetSearch/InfiniteScroll/InfiniteScroll.d.ts +5 -0
  65. package/es/plus/clinetSearch/InfiniteScroll/InfiniteScroll.js +265 -0
  66. package/es/plus/clinetSearch/InfiniteScroll/index.d.ts +2 -0
  67. package/es/plus/clinetSearch/InfiniteScroll/index.js +1 -0
  68. package/es/plus/clinetSearch/InfiniteScroll/types.d.ts +46 -0
  69. package/es/plus/clinetSearch/InfiniteScroll/types.js +1 -0
  70. package/es/plus/clinetSearch/index.d.ts +18 -0
  71. package/es/plus/clinetSearch/index.js +234 -0
  72. package/es/plus/clinetSearch/index.less +95 -0
  73. package/es/plus/clinetSearch/locales.d.ts +108 -0
  74. package/es/plus/clinetSearch/locales.js +107 -0
  75. package/es/plus/clinetSearch/serve.d.ts +1 -0
  76. package/es/plus/clinetSearch/serve.js +31 -0
  77. package/es/plus/clinetSearch/types.d.ts +70 -0
  78. package/es/plus/clinetSearch/types.js +1 -0
  79. package/es/plus/saasAttendance/locales.d.ts +63 -0
  80. package/es/plus/saasAttendance/locales.js +71 -2
  81. package/es/plus/saasAttendance/settings/PermissonTab.d.ts +5 -0
  82. package/es/plus/saasAttendance/settings/PermissonTab.js +79 -0
  83. package/es/plus/saasAttendance/settings/ShiftScheduleTab.js +9 -3
  84. package/es/plus/saasAttendance/settings/components/MapField.js +69 -33
  85. package/es/plus/saasAttendance/settings/components/shiftModal/ShiftPreview.d.ts +7 -0
  86. package/es/plus/saasAttendance/settings/components/shiftModal/ShiftPreview.js +149 -0
  87. package/es/plus/saasAttendance/settings/components/shiftModal/ShiftPreview.less +119 -0
  88. package/es/plus/saasAttendance/settings/index.js +7 -0
  89. package/es/plus/saasAttendance/settings/index.less +15 -0
  90. package/es/plus/saasAttendance/settings/types.d.ts +6 -0
  91. package/es/plus/selectHolder/components/ErrorTip/index.d.ts +0 -1
  92. package/es/plus/walletPassGallery/components/passDetail/index.d.ts +2 -0
  93. package/es/plus/walletPassGallery/components/passDetail/index.js +104 -39
  94. package/es/plus/walletPassGallery/components/timelineSection/index.d.ts +2 -0
  95. package/es/plus/walletPassGallery/components/timelineSection/index.js +19 -2
  96. package/es/plus/walletPassGallery/index.d.ts +4 -0
  97. package/es/plus/walletPassGallery/index.js +121 -42
  98. package/es/plus/walletPassGallery/serve.d.ts +3 -1
  99. package/es/plus/walletPassGallery/serve.js +13 -13
  100. package/es/pro/pisellPhoneKeyboard/index.d.ts +13 -0
  101. package/es/pro/pisellPhoneKeyboard/index.js +210 -0
  102. package/es/pro/pisellPhoneKeyboard/index.less +157 -0
  103. package/es/pro/pisellPhoneKeyboard/locales.d.ts +12 -0
  104. package/es/pro/pisellPhoneKeyboard/locales.js +11 -0
  105. package/lib/components/booking/addons/model.d.ts +1 -10
  106. package/lib/components/booking/forms/model.d.ts +1 -10
  107. package/lib/components/booking/info/clientVariant/hooks/useIsLowSpeedNetwork.d.ts +0 -1
  108. package/lib/components/booking/info/hooks/useInfoHolder.d.ts +1 -0
  109. package/lib/components/booking/info/model.d.ts +1 -10
  110. package/lib/components/booking/info/service/addService/utils.d.ts +1 -1
  111. package/lib/components/booking/info2/service/addService/utils.d.ts +1 -1
  112. package/lib/components/booking/model.d.ts +1 -9
  113. package/lib/components/booking/notes/model.d.ts +1 -10
  114. package/lib/components/booking/payments/model.d.ts +1 -10
  115. package/lib/components/booking/utils.d.ts +2 -2
  116. package/lib/components/eftpos/hooks.d.ts +0 -1
  117. package/lib/components/eftposPay/amount.d.ts +1 -1
  118. package/lib/components/eftposPay/device.d.ts +1 -1
  119. package/lib/components/eftposPay/hooks.d.ts +1 -1
  120. package/lib/components/eftposPay/store/index.d.ts +2 -2
  121. package/lib/components/eftposPay/tyro/hooks.d.ts +0 -1
  122. package/lib/components/eventBooking/components/ErrorTip/index.d.ts +0 -1
  123. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/WeekItem/index.d.ts +0 -1
  124. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/index.d.ts +0 -1
  125. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/DayItem/index.d.ts +0 -1
  126. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.d.ts +0 -1
  127. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/index.d.ts +0 -1
  128. package/lib/components/pay/toC/model.d.ts +1 -9
  129. package/lib/components/schedules/model.d.ts +1 -9
  130. package/lib/components/shoppingCart/components/Empty/index.d.ts +1 -0
  131. package/lib/hooks/useTranslationOriginal.d.ts +1 -0
  132. package/lib/hooks/useTranslationOriginal.js +42 -0
  133. package/lib/index.d.ts +3 -0
  134. package/lib/index.js +9 -0
  135. package/lib/plus/clientCard/index.d.ts +7 -0
  136. package/lib/plus/clientCard/index.js +457 -0
  137. package/lib/plus/clientCard/index.less +515 -0
  138. package/lib/plus/clientCard/line/index.d.ts +9 -0
  139. package/lib/plus/clientCard/line/index.js +153 -0
  140. package/lib/plus/clientCard/line/index.less +142 -0
  141. package/lib/plus/clientCard/locales.d.ts +18 -0
  142. package/lib/plus/clientCard/locales.js +41 -0
  143. package/lib/plus/clientCard/types.d.ts +135 -0
  144. package/lib/plus/clientCard/types.js +17 -0
  145. package/lib/plus/clientCard/utils.d.ts +8 -0
  146. package/lib/plus/clientCard/utils.js +75 -0
  147. package/lib/plus/clinetSearch/Add/BirthdayField/index.d.ts +3 -0
  148. package/lib/plus/clinetSearch/Add/BirthdayField/index.js +256 -0
  149. package/lib/plus/clinetSearch/Add/GenderField/index.d.ts +3 -0
  150. package/lib/plus/clinetSearch/Add/GenderField/index.js +52 -0
  151. package/lib/plus/clinetSearch/Add/PhoneField/index.d.ts +3 -0
  152. package/lib/plus/clinetSearch/Add/PhoneField/index.js +78 -0
  153. package/lib/plus/clinetSearch/Add/PhoneField/serve.d.ts +2 -0
  154. package/lib/plus/clinetSearch/Add/PhoneField/serve.js +193 -0
  155. package/lib/plus/clinetSearch/Add/index.d.ts +18 -0
  156. package/lib/plus/clinetSearch/Add/index.js +244 -0
  157. package/lib/plus/clinetSearch/Add/index.less +30 -0
  158. package/lib/plus/clinetSearch/InfiniteScroll/InfiniteScroll.d.ts +5 -0
  159. package/lib/plus/clinetSearch/InfiniteScroll/InfiniteScroll.js +235 -0
  160. package/lib/plus/clinetSearch/InfiniteScroll/index.d.ts +2 -0
  161. package/lib/plus/clinetSearch/InfiniteScroll/index.js +35 -0
  162. package/lib/plus/clinetSearch/InfiniteScroll/types.d.ts +46 -0
  163. package/lib/plus/clinetSearch/InfiniteScroll/types.js +17 -0
  164. package/lib/plus/clinetSearch/index.d.ts +18 -0
  165. package/lib/plus/clinetSearch/index.js +237 -0
  166. package/lib/plus/clinetSearch/index.less +95 -0
  167. package/lib/plus/clinetSearch/locales.d.ts +108 -0
  168. package/lib/plus/clinetSearch/locales.js +131 -0
  169. package/lib/plus/clinetSearch/serve.d.ts +1 -0
  170. package/lib/plus/clinetSearch/serve.js +33 -0
  171. package/lib/plus/clinetSearch/types.d.ts +70 -0
  172. package/lib/plus/clinetSearch/types.js +17 -0
  173. package/lib/plus/saasAttendance/locales.d.ts +63 -0
  174. package/lib/plus/saasAttendance/locales.js +65 -2
  175. package/lib/plus/saasAttendance/settings/PermissonTab.d.ts +5 -0
  176. package/lib/plus/saasAttendance/settings/PermissonTab.js +128 -0
  177. package/lib/plus/saasAttendance/settings/ShiftScheduleTab.js +2 -1
  178. package/lib/plus/saasAttendance/settings/components/MapField.js +50 -11
  179. package/lib/plus/saasAttendance/settings/components/shiftModal/ShiftPreview.d.ts +7 -0
  180. package/lib/plus/saasAttendance/settings/components/shiftModal/ShiftPreview.js +150 -0
  181. package/lib/plus/saasAttendance/settings/components/shiftModal/ShiftPreview.less +119 -0
  182. package/lib/plus/saasAttendance/settings/index.js +12 -0
  183. package/lib/plus/saasAttendance/settings/index.less +15 -0
  184. package/lib/plus/saasAttendance/settings/types.d.ts +6 -0
  185. package/lib/plus/selectHolder/components/ErrorTip/index.d.ts +0 -1
  186. package/lib/plus/walletPassGallery/components/passDetail/index.d.ts +2 -0
  187. package/lib/plus/walletPassGallery/components/passDetail/index.js +57 -5
  188. package/lib/plus/walletPassGallery/components/timelineSection/index.d.ts +2 -0
  189. package/lib/plus/walletPassGallery/components/timelineSection/index.js +17 -2
  190. package/lib/plus/walletPassGallery/index.d.ts +4 -0
  191. package/lib/plus/walletPassGallery/index.js +141 -42
  192. package/lib/plus/walletPassGallery/serve.d.ts +3 -1
  193. package/lib/plus/walletPassGallery/serve.js +2 -2
  194. package/lib/pro/pisellPhoneKeyboard/index.d.ts +13 -0
  195. package/lib/pro/pisellPhoneKeyboard/index.js +219 -0
  196. package/lib/pro/pisellPhoneKeyboard/index.less +157 -0
  197. package/lib/pro/pisellPhoneKeyboard/locales.d.ts +12 -0
  198. package/lib/pro/pisellPhoneKeyboard/locales.js +35 -0
  199. package/lowcode/client-card/fragments/cardStyle.ts +63 -0
  200. package/lowcode/client-card/fragments/nameStyle.ts +34 -0
  201. package/lowcode/client-card/fragments/pisellAvatar.ts +87 -0
  202. package/lowcode/client-card/fragments/tagConfig.ts +88 -0
  203. package/lowcode/client-card/meta.ts +343 -0
  204. package/lowcode/client-search/meta.ts +316 -0
  205. package/lowcode/eco-cup-list/meta.ts +1 -1
  206. package/lowcode/eco-customer-list/meta.ts +1 -1
  207. package/lowcode/wallet-pass-gallery/meta.ts +66 -1
  208. package/package.json +4 -4
@@ -25,6 +25,8 @@ export default {
25
25
  'pisell2.attendance.group-settings.shift-schedule': 'Shift Schedule',
26
26
  'pisell2.attendance.group-settings.clock-in-method': 'Clock-in Method',
27
27
  'pisell2.attendance.group-settings.correction-policy': 'Correction Policy',
28
+ 'pisell2.attendance.group-settings.data-permission': 'Data Permissions',
29
+ 'pisell2.attendance.group-settings.data-permission.employee-data-view-range': 'Employee Data View Range',
28
30
  'pisell2.attendance.group-settings.actions.search': 'Search',
29
31
  'pisell2.attendance.group-settings.actions.cancel': 'Cancel',
30
32
  'pisell2.attendance.group-settings.actions.confirm': 'Confirm',
@@ -32,6 +34,7 @@ export default {
32
34
  'pisell2.attendance.group-settings.actions.save-settings': 'Save Settings',
33
35
  'pisell2.attendance.group-settings.actions.add-location': 'Add Location',
34
36
  'pisell2.attendance.group-settings.actions.add-location-confirm': 'Add Location',
37
+ 'pisell2.attendance.group-settings.actions.edit-location-confirm': 'Save Changes',
35
38
  'pisell2.attendance.group-settings.shift-schedule.fixed-shifts.title': 'Fixed-Based Attendance',
36
39
  'pisell2.attendance.group-settings.shift-schedule.fixed-shifts.desc': 'Employees clock in/out according to fixed shifts',
37
40
  'pisell2.attendance.group-settings.shift-schedule.scheduled-shifts.set-shifts': 'Set Shifts',
@@ -56,6 +59,19 @@ export default {
56
59
  'pisell2.attendance.group-settings.shift-schedule.attendance-type.label': 'Attendance Type',
57
60
  'pisell2.attendance.group-settings.shift-schedule.attendance-type.scheduled-shifts.title': 'Scheduled Shifts',
58
61
  'pisell2.attendance.group-settings.shift-schedule.attendance-type.scheduled-shifts.desc': 'Employees clock in based on pre-assigned shifts',
62
+ 'pisell2.attendance.group-settings.shift-schedule.preview.working-days': 'Working Days',
63
+ 'pisell2.attendance.group-settings.shift-schedule.preview.days-per-week': 'days per week',
64
+ 'pisell2.attendance.group-settings.shift-schedule.preview.weekly-hours': 'Weekly Hours',
65
+ 'pisell2.attendance.group-settings.shift-schedule.preview.hours': 'hours',
66
+ 'pisell2.attendance.group-settings.shift-schedule.preview.table.day': 'Day',
67
+ 'pisell2.attendance.group-settings.shift-schedule.preview.table.shift-times': 'Shift Times',
68
+ 'pisell2.attendance.group-settings.shift-schedule.preview.table.duration': 'Duration',
69
+ 'pisell2.attendance.group-settings.shift-schedule.preview.no-shift': 'No shift scheduled',
70
+ 'pisell2.attendance.group-settings.shift-schedule.preview.duration': function pisell2AttendanceGroupSettingsShiftSchedulePreviewDuration(hours, minutes) {
71
+ return "".concat(hours, "h ").concat(minutes, "min");
72
+ },
73
+ 'pisell2.attendance.group-settings.shift-schedule.preview.period.am': 'AM',
74
+ 'pisell2.attendance.group-settings.shift-schedule.preview.period.pm': 'PM',
59
75
  'pisell2.attendance.group-settings.clock-in-method.gps.title': 'GPS Location Verification',
60
76
  'pisell2.attendance.group-settings.clock-in-method.gps.desc': 'Employees use Team APP for GPS-based clock-in. System verifies location within approved areas.',
61
77
  'pisell2.attendance.group-settings.clock-in-method.approved-locations.label': function pisell2AttendanceGroupSettingsClockInMethodApprovedLocationsLabel(max) {
@@ -69,6 +85,7 @@ export default {
69
85
  return "".concat(val, " meters");
70
86
  },
71
87
  'pisell2.attendance.group-settings.clock-in-method.add-location-modal.title': 'Add Location',
88
+ 'pisell2.attendance.group-settings.clock-in-method.edit-location-modal.title': 'Edit Location',
72
89
  'pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.label': 'Location Name',
73
90
  'pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.placeholder': 'e.g., Main Office, Store A',
74
91
  'pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.validation': 'Please enter a location name',
@@ -80,6 +97,12 @@ export default {
80
97
  'pisell2.attendance.group-settings.clock-in-method.add-location-modal.longitude.validation': 'Please enter a valid longitude',
81
98
  'pisell2.attendance.group-settings.clock-in-method.add-location-modal.valid-range.label': 'Valid Range (meters)',
82
99
  'pisell2.attendance.group-settings.clock-in-method.add-location-modal.tip.google-maps': 'Tip: Click on Google Maps to get coordinates',
100
+ 'pisell2.attendance.group-settings.basic-info.permission.limited': 'Limited',
101
+ 'pisell2.attendance.group-settings.basic-info.permission.unlimited': 'Unlimited',
102
+ 'pisell2.attendance.group-settings.basic-info.permission.this-week': 'This Week',
103
+ 'pisell2.attendance.group-settings.basic-info.permission.this-week.recommended': 'This Week (Recommended)',
104
+ 'pisell2.attendance.group-settings.basic-info.permission.last-week': 'Last Week',
105
+ 'pisell2.attendance.group-settings.basic-info.permission.this-month': 'This Month',
83
106
  'pisell2.attendance.group-settings.correction-policy.allow-corrections.title': 'Allow Corrections',
84
107
  'pisell2.attendance.group-settings.correction-policy.allow-corrections.desc': 'Employees can submit correction requests for approval',
85
108
  'pisell2.attendance.group-settings.correction-policy.types.label': 'Correction Types',
@@ -142,6 +165,8 @@ export default {
142
165
  'pisell2.attendance.group-settings.shift-schedule': '考勤班次',
143
166
  'pisell2.attendance.group-settings.clock-in-method': '考勤方式',
144
167
  'pisell2.attendance.group-settings.correction-policy': '补卡设置',
168
+ 'pisell2.attendance.group-settings.data-permission': '数据权限',
169
+ 'pisell2.attendance.group-settings.data-permission.employee-data-view-range': '员工数据查看范围',
145
170
  'pisell2.attendance.group-settings.actions.search': '搜索',
146
171
  'pisell2.attendance.group-settings.actions.cancel': '取消',
147
172
  'pisell2.attendance.group-settings.actions.confirm': '确认',
@@ -149,6 +174,7 @@ export default {
149
174
  'pisell2.attendance.group-settings.actions.save-settings': '保存设置',
150
175
  'pisell2.attendance.group-settings.actions.add-location': '新增考勤地点',
151
176
  'pisell2.attendance.group-settings.actions.add-location-confirm': '添加地点',
177
+ 'pisell2.attendance.group-settings.actions.edit-location-confirm': '保存修改',
152
178
  'pisell2.attendance.group-settings.shift-schedule.fixed-shifts.title': '固定班制考勤',
153
179
  'pisell2.attendance.group-settings.shift-schedule.fixed-shifts.desc': '員工需按照预设的班次进行打卡。',
154
180
  'pisell2.attendance.group-settings.shift-schedule.scheduled-shifts.set-shifts': '设置排班',
@@ -173,6 +199,19 @@ export default {
173
199
  'pisell2.attendance.group-settings.shift-schedule.attendance-type.label': '考勤类型',
174
200
  'pisell2.attendance.group-settings.shift-schedule.attendance-type.scheduled-shifts.title': '排班制',
175
201
  'pisell2.attendance.group-settings.shift-schedule.attendance-type.scheduled-shifts.desc': '员工按照预设班次打卡',
202
+ 'pisell2.attendance.group-settings.shift-schedule.preview.working-days': '每周工作天数',
203
+ 'pisell2.attendance.group-settings.shift-schedule.preview.days-per-week': '天每周',
204
+ 'pisell2.attendance.group-settings.shift-schedule.preview.weekly-hours': '每周总工时',
205
+ 'pisell2.attendance.group-settings.shift-schedule.preview.hours': '小时',
206
+ 'pisell2.attendance.group-settings.shift-schedule.preview.table.day': '星期',
207
+ 'pisell2.attendance.group-settings.shift-schedule.preview.table.shift-times': '班次时间',
208
+ 'pisell2.attendance.group-settings.shift-schedule.preview.table.duration': '时长',
209
+ 'pisell2.attendance.group-settings.shift-schedule.preview.no-shift': '无班次',
210
+ 'pisell2.attendance.group-settings.shift-schedule.preview.duration': function pisell2AttendanceGroupSettingsShiftSchedulePreviewDuration(hours, minutes) {
211
+ return "".concat(hours, "\u5C0F\u65F6").concat(minutes, "\u5206\u949F");
212
+ },
213
+ 'pisell2.attendance.group-settings.shift-schedule.preview.period.am': '上午',
214
+ 'pisell2.attendance.group-settings.shift-schedule.preview.period.pm': '下午',
176
215
  'pisell2.attendance.group-settings.clock-in-method.gps.title': 'GPS定位打卡',
177
216
  'pisell2.attendance.group-settings.clock-in-method.gps.desc': '员工通过Team APP进行GPS定位打卡,系统验证是否在考勤范围内',
178
217
  'pisell2.attendance.group-settings.clock-in-method.approved-locations.label': function pisell2AttendanceGroupSettingsClockInMethodApprovedLocationsLabel(max) {
@@ -186,6 +225,7 @@ export default {
186
225
  return "".concat(val, " \u7C73");
187
226
  },
188
227
  'pisell2.attendance.group-settings.clock-in-method.add-location-modal.title': '新增考勤地点',
228
+ 'pisell2.attendance.group-settings.clock-in-method.edit-location-modal.title': '编辑考勤地点',
189
229
  'pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.label': '地点名称',
190
230
  'pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.placeholder': '例如:总部大楼、门店A',
191
231
  'pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.validation': '请输入地点名称',
@@ -197,6 +237,12 @@ export default {
197
237
  'pisell2.attendance.group-settings.clock-in-method.add-location-modal.longitude.validation': '请输入有效的经度',
198
238
  'pisell2.attendance.group-settings.clock-in-method.add-location-modal.valid-range.label': '有效范围(米)',
199
239
  'pisell2.attendance.group-settings.clock-in-method.add-location-modal.tip.google-maps': '提示:可以在Google Maps中点击位置获取经纬度坐标',
240
+ 'pisell2.attendance.group-settings.basic-info.permission.limited': '限制',
241
+ 'pisell2.attendance.group-settings.basic-info.permission.unlimited': '不限制',
242
+ 'pisell2.attendance.group-settings.basic-info.permission.this-week': '本周',
243
+ 'pisell2.attendance.group-settings.basic-info.permission.this-week.recommended': '本周(推荐)',
244
+ 'pisell2.attendance.group-settings.basic-info.permission.last-week': '上周',
245
+ 'pisell2.attendance.group-settings.basic-info.permission.this-month': '本月',
200
246
  'pisell2.attendance.group-settings.correction-policy.allow-corrections.title': '允许补卡',
201
247
  'pisell2.attendance.group-settings.correction-policy.allow-corrections.desc': '员工可以提交补卡申请,需要审批',
202
248
  'pisell2.attendance.group-settings.correction-policy.types.label': '补卡类型',
@@ -208,7 +254,7 @@ export default {
208
254
  'pisell2.attendance.group-settings.correction-policy.types.early-out.desc': '提前下班',
209
255
  'pisell2.attendance.group-settings.correction-policy.types.normal.title': '正常',
210
256
  'pisell2.attendance.group-settings.correction-policy.types.normal.desc': '正常打卡修正',
211
- 'pisell2.attendance.group-settings.correction-policy.approver.label': '审批补卡人',
257
+ 'pisell2.attendance.group-settings.correction-policy.approver.label': '审批人',
212
258
  'pisell2.attendance.group-settings.correction-policy.approver.placeholder': '请选择审批人',
213
259
  'pisell2.attendance.group-settings.correction-policy.approver.required': '请选择审批人',
214
260
  'pisell2.attendance.group-settings.correction-policy.time-limit.label': '补卡时间限制',
@@ -259,6 +305,8 @@ export default {
259
305
  'pisell2.attendance.group-settings.shift-schedule': '考勤班次',
260
306
  'pisell2.attendance.group-settings.clock-in-method': '考勤方式',
261
307
  'pisell2.attendance.group-settings.correction-policy': '補卡設定',
308
+ 'pisell2.attendance.group-settings.data-permission': '數據權限',
309
+ 'pisell2.attendance.group-settings.data-permission.employee-data-view-range': '員工數據查看範圍',
262
310
  'pisell2.attendance.group-settings.actions.search': '搜索',
263
311
  'pisell2.attendance.group-settings.actions.cancel': '取消',
264
312
  'pisell2.attendance.group-settings.actions.confirm': '確認',
@@ -266,6 +314,7 @@ export default {
266
314
  'pisell2.attendance.group-settings.actions.save-settings': '儲存設定',
267
315
  'pisell2.attendance.group-settings.actions.add-location': '新增考勤地點',
268
316
  'pisell2.attendance.group-settings.actions.add-location-confirm': '添加地點',
317
+ 'pisell2.attendance.group-settings.actions.edit-location-confirm': '保存修改',
269
318
  'pisell2.attendance.group-settings.shift-schedule.fixed-shifts.title': '固定班制考勤',
270
319
  'pisell2.attendance.group-settings.shift-schedule.fixed-shifts.desc': '員工需按照預設的班次進行打卡。',
271
320
  'pisell2.attendance.group-settings.shift-schedule.scheduled-shifts.set-shifts': '設置排班',
@@ -290,6 +339,19 @@ export default {
290
339
  'pisell2.attendance.group-settings.shift-schedule.attendance-type.label': '考勤類型',
291
340
  'pisell2.attendance.group-settings.shift-schedule.attendance-type.scheduled-shifts.title': '排班制',
292
341
  'pisell2.attendance.group-settings.shift-schedule.attendance-type.scheduled-shifts.desc': '員工按照預設班次打卡',
342
+ 'pisell2.attendance.group-settings.shift-schedule.preview.working-days': '每週工作天數',
343
+ 'pisell2.attendance.group-settings.shift-schedule.preview.days-per-week': '天每週',
344
+ 'pisell2.attendance.group-settings.shift-schedule.preview.weekly-hours': '每週總工時',
345
+ 'pisell2.attendance.group-settings.shift-schedule.preview.hours': '小時',
346
+ 'pisell2.attendance.group-settings.shift-schedule.preview.table.day': '星期',
347
+ 'pisell2.attendance.group-settings.shift-schedule.preview.table.shift-times': '班次時間',
348
+ 'pisell2.attendance.group-settings.shift-schedule.preview.table.duration': '時長',
349
+ 'pisell2.attendance.group-settings.shift-schedule.preview.no-shift': '無班次',
350
+ 'pisell2.attendance.group-settings.shift-schedule.preview.duration': function pisell2AttendanceGroupSettingsShiftSchedulePreviewDuration(hours, minutes) {
351
+ return "".concat(hours, "\u5C0F\u6642").concat(minutes, "\u5206\u9418");
352
+ },
353
+ 'pisell2.attendance.group-settings.shift-schedule.preview.period.am': '上午',
354
+ 'pisell2.attendance.group-settings.shift-schedule.preview.period.pm': '下午',
293
355
  'pisell2.attendance.group-settings.clock-in-method.gps.title': 'GPS定位打卡',
294
356
  'pisell2.attendance.group-settings.clock-in-method.gps.desc': '員工透過Team APP進行GPS定位打卡,系統驗證是否在考勤範圍內',
295
357
  'pisell2.attendance.group-settings.clock-in-method.approved-locations.label': function pisell2AttendanceGroupSettingsClockInMethodApprovedLocationsLabel(max) {
@@ -303,6 +365,7 @@ export default {
303
365
  return "".concat(val, " \u7C73");
304
366
  },
305
367
  'pisell2.attendance.group-settings.clock-in-method.add-location-modal.title': '新增考勤地點',
368
+ 'pisell2.attendance.group-settings.clock-in-method.edit-location-modal.title': '編輯考勤地點',
306
369
  'pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.label': '地點名稱',
307
370
  'pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.placeholder': '例如:總部大樓、門店A',
308
371
  'pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.validation': '請輸入地點名稱',
@@ -314,6 +377,12 @@ export default {
314
377
  'pisell2.attendance.group-settings.clock-in-method.add-location-modal.longitude.validation': '請輸入有效的經度',
315
378
  'pisell2.attendance.group-settings.clock-in-method.add-location-modal.valid-range.label': '有效範圍(米)',
316
379
  'pisell2.attendance.group-settings.clock-in-method.add-location-modal.tip.google-maps': '提示:可以在Google Maps中點擊位置獲取經緯度座標',
380
+ 'pisell2.attendance.group-settings.basic-info.permission.limited': '限制',
381
+ 'pisell2.attendance.group-settings.basic-info.permission.unlimited': '不限制',
382
+ 'pisell2.attendance.group-settings.basic-info.permission.this-week': '本週',
383
+ 'pisell2.attendance.group-settings.basic-info.permission.this-week.recommended': '本週(推薦)',
384
+ 'pisell2.attendance.group-settings.basic-info.permission.last-week': '上週',
385
+ 'pisell2.attendance.group-settings.basic-info.permission.this-month': '本月',
317
386
  'pisell2.attendance.group-settings.correction-policy.allow-corrections.title': '允許補卡',
318
387
  'pisell2.attendance.group-settings.correction-policy.allow-corrections.desc': '員工可以提交補卡申請,需要審批',
319
388
  'pisell2.attendance.group-settings.correction-policy.types.label': '補卡類型',
@@ -325,7 +394,7 @@ export default {
325
394
  'pisell2.attendance.group-settings.correction-policy.types.early-out.desc': '提前下班',
326
395
  'pisell2.attendance.group-settings.correction-policy.types.normal.title': '正常',
327
396
  'pisell2.attendance.group-settings.correction-policy.types.normal.desc': '正常打卡修正',
328
- 'pisell2.attendance.group-settings.correction-policy.approver.label': '審批補卡人',
397
+ 'pisell2.attendance.group-settings.correction-policy.approver.label': '審批人',
329
398
  'pisell2.attendance.group-settings.correction-policy.approver.placeholder': '請選擇審批人',
330
399
  'pisell2.attendance.group-settings.correction-policy.approver.required': '請選擇審批人',
331
400
  'pisell2.attendance.group-settings.correction-policy.time-limit.label': '補卡時間限制',
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ declare const PermissonTab: React.FC<{
3
+ id?: string;
4
+ }>;
5
+ export default PermissonTab;
@@ -0,0 +1,79 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ import React, { useEffect } from 'react';
8
+ import { Form, Select, Radio } from 'antd';
9
+ import { locales } from '@pisell/utils';
10
+ var PermissionField = function PermissionField(props) {
11
+ var _props$value2;
12
+ useEffect(function () {
13
+ var _props$value;
14
+ if (typeof ((_props$value = props.value) === null || _props$value === void 0 ? void 0 : _props$value.member_data_view_range) === 'undefined') {
15
+ var _props$onChange;
16
+ (_props$onChange = props.onChange) === null || _props$onChange === void 0 || _props$onChange.call(props, _objectSpread(_objectSpread({}, props.value || {}), {}, {
17
+ member_data_view_range: ['this_week']
18
+ }));
19
+ }
20
+ }, []);
21
+ var options = [{
22
+ label: locales.getText('pisell2.attendance.group-settings.basic-info.permission.this-week.recommended'),
23
+ value: 'this_week'
24
+ }, {
25
+ label: locales.getText('pisell2.attendance.group-settings.basic-info.permission.last-week'),
26
+ value: 'last_week'
27
+ }, {
28
+ label: locales.getText('pisell2.attendance.group-settings.basic-info.permission.this-month'),
29
+ value: 'this_month'
30
+ }];
31
+ var value = (_props$value2 = props.value) === null || _props$value2 === void 0 ? void 0 : _props$value2.member_data_view_range;
32
+ var isLimited = Array.isArray(value) && value.length > 0;
33
+ return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Radio.Group, {
34
+ value: isLimited ? 'limited' : 'unlimited',
35
+ onChange: function onChange(e) {
36
+ var nextMode = e.target.value;
37
+ if (nextMode === 'limited') {
38
+ var _props$onChange2;
39
+ var next = Array.isArray(value) && value.length > 0 ? value : ['this_week'];
40
+ (_props$onChange2 = props.onChange) === null || _props$onChange2 === void 0 || _props$onChange2.call(props, _objectSpread(_objectSpread({}, props.value || {}), {}, {
41
+ member_data_view_range: next
42
+ }));
43
+ } else {
44
+ var _props$onChange3;
45
+ (_props$onChange3 = props.onChange) === null || _props$onChange3 === void 0 || _props$onChange3.call(props, _objectSpread(_objectSpread({}, props.value || {}), {}, {
46
+ member_data_view_range: []
47
+ }));
48
+ }
49
+ },
50
+ style: {
51
+ marginBottom: 8
52
+ }
53
+ }, /*#__PURE__*/React.createElement(Radio, {
54
+ value: "limited"
55
+ }, locales.getText('pisell2.attendance.group-settings.basic-info.permission.limited')), /*#__PURE__*/React.createElement(Radio, {
56
+ value: "unlimited"
57
+ }, locales.getText('pisell2.attendance.group-settings.basic-info.permission.unlimited'))), isLimited && /*#__PURE__*/React.createElement(Select, {
58
+ mode: "multiple",
59
+ allowClear: true,
60
+ value: value,
61
+ options: options,
62
+ onChange: function onChange(next) {
63
+ var _props$onChange4;
64
+ (_props$onChange4 = props.onChange) === null || _props$onChange4 === void 0 || _props$onChange4.call(props, _objectSpread(_objectSpread({}, props.value || {}), {}, {
65
+ member_data_view_range: next.length > 0 ? next : []
66
+ }));
67
+ }
68
+ }));
69
+ };
70
+ var PermissonTab = function PermissonTab(props) {
71
+ return /*#__PURE__*/React.createElement("div", {
72
+ className: "saas-attendance-group-settings__panel",
73
+ id: props.id
74
+ }, /*#__PURE__*/React.createElement(Form.Item, {
75
+ label: locales.getText('pisell2.attendance.group-settings.data-permission.employee-data-view-range'),
76
+ name: "permission"
77
+ }, /*#__PURE__*/React.createElement(PermissionField, null)));
78
+ };
79
+ export default PermissonTab;
@@ -13,8 +13,7 @@ import { Button, Form, Radio } from 'antd';
13
13
  import { Icon } from '@pisell/materials';
14
14
  import { locales } from '@pisell/utils';
15
15
  import ShiftModal from "./components/shiftModal";
16
-
17
- // 注意时间,不要存在交叉的情况
16
+ import ShiftPreview from "./components/shiftModal/ShiftPreview";
18
17
  var ScheduleSetting = function ScheduleSetting(props) {
19
18
  var value = props.value,
20
19
  onChange = props.onChange;
@@ -104,6 +103,13 @@ var ShiftScheduleTab = function ShiftScheduleTab(props) {
104
103
  return validator;
105
104
  }()
106
105
  }]
107
- }, /*#__PURE__*/React.createElement(ScheduleSetting, null)));
106
+ }, /*#__PURE__*/React.createElement(ScheduleSetting, null)), /*#__PURE__*/React.createElement(Form.Item, {
107
+ noStyle: true,
108
+ shouldUpdate: true
109
+ }, function (form) {
110
+ return /*#__PURE__*/React.createElement(ShiftPreview, {
111
+ value: form.getFieldValue(['shift', 'fixed'])
112
+ });
113
+ }));
108
114
  };
109
115
  export default ShiftScheduleTab;
@@ -470,16 +470,20 @@ var MapField = /*#__PURE__*/forwardRef(function (props, ref) {
470
470
  _useState8 = _slicedToArray(_useState7, 2),
471
471
  editingLocationValue = _useState8[0],
472
472
  setEditingLocationValue = _useState8[1];
473
+ var _useState9 = useState(null),
474
+ _useState10 = _slicedToArray(_useState9, 2),
475
+ editingLocationId = _useState10[0],
476
+ setEditingLocationId = _useState10[1];
473
477
  var locationFormMapRef = useRef(null);
474
478
  var mapRef = useRef(null);
475
- var _useState9 = useState(false),
476
- _useState10 = _slicedToArray(_useState9, 2),
477
- isMapReady = _useState10[0],
478
- setIsMapReady = _useState10[1];
479
- var _useState11 = useState(null),
479
+ var _useState11 = useState(false),
480
480
  _useState12 = _slicedToArray(_useState11, 2),
481
- activeLocationId = _useState12[0],
482
- setActiveLocationId = _useState12[1];
481
+ isMapReady = _useState12[0],
482
+ setIsMapReady = _useState12[1];
483
+ var _useState13 = useState(null),
484
+ _useState14 = _slicedToArray(_useState13, 2),
485
+ activeLocationId = _useState14[0],
486
+ setActiveLocationId = _useState14[1];
483
487
  var context = useEngineContext();
484
488
  useEffect(function () {
485
489
  if (!onChange || !Array.isArray(value) || value.length === 0) return;
@@ -595,21 +599,19 @@ var MapField = /*#__PURE__*/forwardRef(function (props, ref) {
595
599
  validRangeMeters: defaultRadius
596
600
  };
597
601
  setAddLocationOpen(true);
602
+ setEditingLocationId(null);
598
603
  setEditingLocationValue(baseFormValue);
599
-
600
- // Request geolocation permission and get current position
601
- _context4.next = 5;
604
+ _context4.next = 6;
602
605
  return getCurrentPosition();
603
- case 5:
606
+ case 6:
604
607
  currentPosition = _context4.sent;
605
608
  if (currentPosition) {
606
- // Pre-fill the form with current position
607
609
  setEditingLocationValue(_objectSpread(_objectSpread({}, baseFormValue), {}, {
608
610
  latitude: currentPosition.lat.toFixed(6),
609
611
  longitude: currentPosition.lng.toFixed(6)
610
612
  }));
611
613
  }
612
- case 7:
614
+ case 8:
613
615
  case "end":
614
616
  return _context4.stop();
615
617
  }
@@ -622,9 +624,9 @@ var MapField = /*#__PURE__*/forwardRef(function (props, ref) {
622
624
  }()
623
625
  };
624
626
  }, [defaultRadius]);
625
- var handleAddLocation = /*#__PURE__*/function () {
627
+ var handleSubmitLocation = /*#__PURE__*/function () {
626
628
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
627
- var _values, newLocation, nextLocations;
629
+ var _values, nextLocation, nextLocations, _nextLocations;
628
630
  return _regeneratorRuntime().wrap(function _callee5$(_context5) {
629
631
  while (1) switch (_context5.prev = _context5.next) {
630
632
  case 0:
@@ -639,37 +641,56 @@ var MapField = /*#__PURE__*/forwardRef(function (props, ref) {
639
641
  return locationFormMapRef.current.validate();
640
642
  case 5:
641
643
  _values = _context5.sent;
642
- newLocation = {
643
- id: createLocationId(),
644
+ nextLocation = {
645
+ id: editingLocationId !== null && editingLocationId !== void 0 ? editingLocationId : createLocationId(),
644
646
  name: toMultiLangName(_values.name),
645
647
  radius: _values.validRangeMeters,
646
648
  address: {
647
649
  lat: parseFloat(_values.latitude) || 0,
648
650
  lng: parseFloat(_values.longitude) || 0
649
651
  }
650
- }; // Use unshift - add new location to the beginning
651
- nextLocations = [newLocation].concat(_toConsumableArray(locations));
652
- onChange === null || onChange === void 0 || onChange(nextLocations);
653
- // Set the new location as active
654
- setActiveLocationId(newLocation.id);
652
+ };
653
+ if (editingLocationId) {
654
+ nextLocations = locations.map(function (loc) {
655
+ return loc.id === editingLocationId ? nextLocation : loc;
656
+ });
657
+ onChange === null || onChange === void 0 || onChange(nextLocations);
658
+ setActiveLocationId(editingLocationId);
659
+ } else {
660
+ _nextLocations = [nextLocation].concat(_toConsumableArray(locations));
661
+ onChange === null || onChange === void 0 || onChange(_nextLocations);
662
+ setActiveLocationId(nextLocation.id);
663
+ }
655
664
  setAddLocationOpen(false);
656
665
  setEditingLocationValue(null);
657
- _context5.next = 17;
666
+ setEditingLocationId(null);
667
+ _context5.next = 16;
658
668
  break;
659
- case 14:
660
- _context5.prev = 14;
669
+ case 13:
670
+ _context5.prev = 13;
661
671
  _context5.t0 = _context5["catch"](2);
662
672
  console.error('Validation failed:', _context5.t0);
663
- case 17:
673
+ case 16:
664
674
  case "end":
665
675
  return _context5.stop();
666
676
  }
667
- }, _callee5, null, [[2, 14]]);
677
+ }, _callee5, null, [[2, 13]]);
668
678
  }));
669
- return function handleAddLocation() {
679
+ return function handleSubmitLocation() {
670
680
  return _ref.apply(this, arguments);
671
681
  };
672
682
  }();
683
+ var handleEditLocation = useCallback(function (location) {
684
+ var _location$address$lat, _location$address$lng, _location$radius;
685
+ setAddLocationOpen(true);
686
+ setEditingLocationId(location.id);
687
+ setEditingLocationValue({
688
+ name: toMultiLangName(location.name),
689
+ latitude: String((_location$address$lat = location.address.lat) !== null && _location$address$lat !== void 0 ? _location$address$lat : ''),
690
+ longitude: String((_location$address$lng = location.address.lng) !== null && _location$address$lng !== void 0 ? _location$address$lng : ''),
691
+ validRangeMeters: (_location$radius = location.radius) !== null && _location$radius !== void 0 ? _location$radius : defaultRadius
692
+ });
693
+ }, [defaultRadius]);
673
694
  var handleRemoveLocation = function handleRemoveLocation(locationId) {
674
695
  var nextLocations = locations.filter(function (loc) {
675
696
  return loc.id !== locationId;
@@ -769,7 +790,21 @@ var MapField = /*#__PURE__*/forwardRef(function (props, ref) {
769
790
  className: "saas-attendance-map-field__location-header"
770
791
  }, /*#__PURE__*/React.createElement("div", {
771
792
  className: "saas-attendance-group-settings__location-name"
772
- }, getLocationNameText(location.name)), /*#__PURE__*/React.createElement(Button, {
793
+ }, getLocationNameText(location.name)), /*#__PURE__*/React.createElement("div", {
794
+ className: "saas-attendance-map-field__location-actions"
795
+ }, /*#__PURE__*/React.createElement(Button, {
796
+ type: "text",
797
+ size: "small",
798
+ icon: /*#__PURE__*/React.createElement(Icon, {
799
+ type: "pisell2-edit-05",
800
+ size: 16
801
+ }),
802
+ className: "saas-attendance-map-field__edit-btn",
803
+ onClick: function onClick(e) {
804
+ e.stopPropagation();
805
+ handleEditLocation(location);
806
+ }
807
+ }), /*#__PURE__*/React.createElement(Button, {
773
808
  type: "text",
774
809
  size: "small",
775
810
  icon: /*#__PURE__*/React.createElement(Icon, {
@@ -781,7 +816,7 @@ var MapField = /*#__PURE__*/forwardRef(function (props, ref) {
781
816
  e.stopPropagation(); // Prevent triggering location item click
782
817
  handleRemoveLocation(location.id);
783
818
  }
784
- })), /*#__PURE__*/React.createElement("div", {
819
+ }))), /*#__PURE__*/React.createElement("div", {
785
820
  className: "saas-attendance-group-settings__location-meta"
786
821
  }, locales.getText('pisell2.attendance.group-settings.clock-in-method.add-location-modal.valid-range.label'), ": ", /*#__PURE__*/React.createElement("span", null, location.radius || defaultRadius)));
787
822
  })));
@@ -790,15 +825,16 @@ var MapField = /*#__PURE__*/forwardRef(function (props, ref) {
790
825
  className: "saas-attendance-group-settings__locations-box ".concat(className || '')
791
826
  }, locations.length === 0 ? renderEmptyState() : renderLocationsList()), /*#__PURE__*/React.createElement(PisellModal, {
792
827
  open: addLocationOpen,
793
- title: locales.getText('pisell2.attendance.group-settings.clock-in-method.add-location-modal.title'),
828
+ title: locales.getText(editingLocationId ? 'pisell2.attendance.group-settings.clock-in-method.edit-location-modal.title' : 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.title'),
794
829
  destroyOnHidden: true,
795
830
  onCancel: function onCancel() {
796
831
  setAddLocationOpen(false);
797
832
  setEditingLocationValue(null);
833
+ setEditingLocationId(null);
798
834
  },
799
- okText: locales.getText('pisell2.attendance.group-settings.actions.add-location-confirm'),
835
+ okText: locales.getText(editingLocationId ? 'pisell2.attendance.group-settings.actions.edit-location-confirm' : 'pisell2.attendance.group-settings.actions.add-location-confirm'),
800
836
  cancelText: locales.getText('pisell2.attendance.group-settings.actions.cancel'),
801
- onOk: handleAddLocation
837
+ onOk: handleSubmitLocation
802
838
  }, /*#__PURE__*/React.createElement(LocationFormMap, {
803
839
  ref: locationFormMapRef,
804
840
  value: editingLocationValue,
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { ShiftScheduleItem } from './index';
3
+ import './ShiftPreview.less';
4
+ declare const ShiftPreview: React.FC<{
5
+ value?: ShiftScheduleItem[];
6
+ }>;
7
+ export default ShiftPreview;