@pisell/private-materials 6.6.28 → 6.6.30

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 (196) 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 +8 -8
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +9 -9
  11. package/es/components/booking/forms/sendModal/useSendModal.d.ts +0 -1
  12. package/es/components/booking/info/clientVariant/hooks/useIsLowSpeedNetwork.d.ts +0 -1
  13. package/es/components/booking/info/hooks/useInfoHolder.d.ts +0 -1
  14. package/es/components/booking/info/service2/utils.d.ts +1 -1
  15. package/es/components/eftpos/hooks.d.ts +0 -1
  16. package/es/components/eftposPay/amount.d.ts +1 -1
  17. package/es/components/eftposPay/device.d.ts +1 -1
  18. package/es/components/eftposPay/hooks.d.ts +2 -2
  19. package/es/components/eftposPay/store/index.d.ts +5 -5
  20. package/es/components/eftposPay/tyro/hooks.d.ts +0 -1
  21. package/es/components/eventBooking/components/ErrorTip/index.d.ts +0 -1
  22. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateStatus/index.d.ts +0 -1
  23. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/CallToBook/index.d.ts +0 -1
  24. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/WeekItem/index.d.ts +0 -1
  25. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/index.d.ts +0 -1
  26. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/DayItem/index.d.ts +0 -1
  27. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.d.ts +0 -1
  28. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Status/index.d.ts +0 -1
  29. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/Finish/index.d.ts +0 -1
  30. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/index.d.ts +0 -1
  31. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/components/PageLoading/index.d.ts +0 -1
  32. package/es/components/shoppingCart/components/Empty/index.d.ts +0 -1
  33. package/es/components/ticketBooking/utils/index.d.ts +1 -1
  34. package/es/hooks/usePaymentLogger.d.ts +0 -1
  35. package/es/index.d.ts +4 -0
  36. package/es/index.js +4 -1
  37. package/es/plus/productSelect/ProductCard/SkuCard/components/Capacity/index.d.ts +1 -1
  38. package/es/plus/productSelect/ProductCard/SkuCard/components/CardMask/index.d.ts +1 -1
  39. package/es/plus/productSelect/ProductCard/SkuCard/components/Countdown/index.d.ts +1 -1
  40. package/es/plus/productSelect/ProductCard/SkuCard/components/Duration/index.d.ts +1 -1
  41. package/es/plus/productSelect/ProductCard/SkuCard/components/MemberPrice/index.d.ts +1 -1
  42. package/es/plus/productSelect/ProductCard/SkuCard/components/Resource/index.d.ts +1 -1
  43. package/es/plus/productSelect/ProductCard/SkuCard/components/Stock/index.d.ts +1 -1
  44. package/es/plus/productSelect/ProductCard/SkuCard/components/Time/index.d.ts +1 -1
  45. package/es/plus/saasAttendance/index.d.ts +6 -0
  46. package/es/plus/saasAttendance/index.js +5 -0
  47. package/es/plus/saasAttendance/locales.d.ts +318 -0
  48. package/es/plus/saasAttendance/locales.js +354 -0
  49. package/es/plus/saasAttendance/settings/BasicInfoTab.d.ts +5 -0
  50. package/es/plus/saasAttendance/settings/BasicInfoTab.js +96 -0
  51. package/es/plus/saasAttendance/settings/ClockInMethodTab.d.ts +8 -0
  52. package/es/plus/saasAttendance/settings/ClockInMethodTab.js +81 -0
  53. package/es/plus/saasAttendance/settings/CorrectionPolicyTab.d.ts +8 -0
  54. package/es/plus/saasAttendance/settings/CorrectionPolicyTab.js +293 -0
  55. package/es/plus/saasAttendance/settings/ShiftScheduleTab.d.ts +5 -0
  56. package/es/plus/saasAttendance/settings/ShiftScheduleTab.js +109 -0
  57. package/es/plus/saasAttendance/settings/components/MapField.d.ts +78 -0
  58. package/es/plus/saasAttendance/settings/components/MapField.js +810 -0
  59. package/es/plus/saasAttendance/settings/components/index.d.ts +3 -0
  60. package/es/plus/saasAttendance/settings/components/index.js +2 -0
  61. package/es/plus/saasAttendance/settings/components/membersField/index.d.ts +8 -0
  62. package/es/plus/saasAttendance/settings/components/membersField/index.js +216 -0
  63. package/es/plus/saasAttendance/settings/components/membersField/index.less +70 -0
  64. package/es/plus/saasAttendance/settings/components/shiftModal/index.d.ts +18 -0
  65. package/es/plus/saasAttendance/settings/components/shiftModal/index.js +438 -0
  66. package/es/plus/saasAttendance/settings/index.d.ts +18 -0
  67. package/es/plus/saasAttendance/settings/index.js +255 -0
  68. package/es/plus/saasAttendance/settings/index.less +495 -0
  69. package/es/plus/saasAttendance/settings/serve.d.ts +27 -0
  70. package/es/plus/saasAttendance/settings/serve.js +83 -0
  71. package/es/plus/saasAttendance/settings/types.d.ts +128 -0
  72. package/es/plus/saasAttendance/settings/types.js +1 -0
  73. package/es/plus/saasRole/components/PermissionManager/index.d.ts +19 -0
  74. package/es/plus/saasRole/components/PermissionManager/index.js +211 -0
  75. package/es/plus/saasRole/components/PermissionManager/index.less +71 -0
  76. package/es/plus/saasRole/index.d.ts +14 -0
  77. package/es/plus/saasRole/index.js +1036 -0
  78. package/es/plus/saasRole/index.less +196 -0
  79. package/es/plus/saasRole/locales.d.ts +193 -0
  80. package/es/plus/saasRole/locales.js +193 -0
  81. package/es/plus/saasRole/serve.d.ts +72 -0
  82. package/es/plus/saasRole/serve.js +304 -0
  83. package/es/plus/saasRole/types.d.ts +175 -0
  84. package/es/plus/saasRole/types.js +1 -0
  85. package/es/plus/saasRole/utils.d.ts +0 -0
  86. package/es/plus/saasRole/utils.js +0 -0
  87. package/es/plus/saasTeamMembers/components/MemberDrawer/ExtensionFormTabContent.d.ts +31 -0
  88. package/es/plus/saasTeamMembers/components/MemberDrawer/ExtensionFormTabContent.js +503 -0
  89. package/es/plus/saasTeamMembers/components/MemberDrawer/index.d.ts +23 -0
  90. package/es/plus/saasTeamMembers/components/MemberDrawer/index.js +634 -0
  91. package/es/plus/saasTeamMembers/components/MemberDrawer/index.less +178 -0
  92. package/es/plus/saasTeamMembers/index.d.ts +5 -0
  93. package/es/plus/saasTeamMembers/index.js +529 -0
  94. package/es/plus/saasTeamMembers/index.less +87 -0
  95. package/es/plus/saasTeamMembers/locales.d.ts +330 -0
  96. package/es/plus/saasTeamMembers/locales.js +375 -0
  97. package/es/plus/saasTeamMembers/serve.d.ts +95 -0
  98. package/es/plus/saasTeamMembers/serve.js +374 -0
  99. package/es/plus/saasTeamMembers/type.d.ts +156 -0
  100. package/es/plus/saasTeamMembers/type.js +1 -0
  101. package/es/plus/selectHolder/components/ErrorTip/index.d.ts +0 -1
  102. package/lib/components/booking/forms/sendModal/useSendModal.d.ts +0 -1
  103. package/lib/components/booking/info/clientVariant/hooks/useIsLowSpeedNetwork.d.ts +0 -1
  104. package/lib/components/booking/info/hooks/useInfoHolder.d.ts +0 -1
  105. package/lib/components/booking/info/service2/utils.d.ts +1 -1
  106. package/lib/components/eftpos/hooks.d.ts +0 -1
  107. package/lib/components/eftposPay/amount.d.ts +1 -1
  108. package/lib/components/eftposPay/device.d.ts +1 -1
  109. package/lib/components/eftposPay/hooks.d.ts +2 -2
  110. package/lib/components/eftposPay/store/index.d.ts +5 -5
  111. package/lib/components/eftposPay/tyro/hooks.d.ts +0 -1
  112. package/lib/components/eventBooking/components/ErrorTip/index.d.ts +0 -1
  113. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateStatus/index.d.ts +0 -1
  114. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/CallToBook/index.d.ts +0 -1
  115. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/WeekItem/index.d.ts +0 -1
  116. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/index.d.ts +0 -1
  117. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/DayItem/index.d.ts +0 -1
  118. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.d.ts +0 -1
  119. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Status/index.d.ts +0 -1
  120. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/Finish/index.d.ts +0 -1
  121. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/index.d.ts +0 -1
  122. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/components/PageLoading/index.d.ts +0 -1
  123. package/lib/components/shoppingCart/components/Empty/index.d.ts +0 -1
  124. package/lib/components/ticketBooking/utils/index.d.ts +1 -1
  125. package/lib/hooks/usePaymentLogger.d.ts +0 -1
  126. package/lib/index.d.ts +4 -0
  127. package/lib/index.js +9 -0
  128. package/lib/plus/productSelect/ProductCard/SkuCard/components/Capacity/index.d.ts +1 -1
  129. package/lib/plus/productSelect/ProductCard/SkuCard/components/CardMask/index.d.ts +1 -1
  130. package/lib/plus/productSelect/ProductCard/SkuCard/components/Countdown/index.d.ts +1 -1
  131. package/lib/plus/productSelect/ProductCard/SkuCard/components/Duration/index.d.ts +1 -1
  132. package/lib/plus/productSelect/ProductCard/SkuCard/components/MemberPrice/index.d.ts +1 -1
  133. package/lib/plus/productSelect/ProductCard/SkuCard/components/Resource/index.d.ts +1 -1
  134. package/lib/plus/productSelect/ProductCard/SkuCard/components/Stock/index.d.ts +1 -1
  135. package/lib/plus/productSelect/ProductCard/SkuCard/components/Time/index.d.ts +1 -1
  136. package/lib/plus/saasAttendance/index.d.ts +6 -0
  137. package/lib/plus/saasAttendance/index.js +39 -0
  138. package/lib/plus/saasAttendance/locales.d.ts +318 -0
  139. package/lib/plus/saasAttendance/locales.js +342 -0
  140. package/lib/plus/saasAttendance/settings/BasicInfoTab.d.ts +5 -0
  141. package/lib/plus/saasAttendance/settings/BasicInfoTab.js +152 -0
  142. package/lib/plus/saasAttendance/settings/ClockInMethodTab.d.ts +8 -0
  143. package/lib/plus/saasAttendance/settings/ClockInMethodTab.js +88 -0
  144. package/lib/plus/saasAttendance/settings/CorrectionPolicyTab.d.ts +8 -0
  145. package/lib/plus/saasAttendance/settings/CorrectionPolicyTab.js +369 -0
  146. package/lib/plus/saasAttendance/settings/ShiftScheduleTab.d.ts +5 -0
  147. package/lib/plus/saasAttendance/settings/ShiftScheduleTab.js +106 -0
  148. package/lib/plus/saasAttendance/settings/components/MapField.d.ts +78 -0
  149. package/lib/plus/saasAttendance/settings/components/MapField.js +631 -0
  150. package/lib/plus/saasAttendance/settings/components/index.d.ts +3 -0
  151. package/lib/plus/saasAttendance/settings/components/index.js +42 -0
  152. package/lib/plus/saasAttendance/settings/components/membersField/index.d.ts +8 -0
  153. package/lib/plus/saasAttendance/settings/components/membersField/index.js +247 -0
  154. package/lib/plus/saasAttendance/settings/components/membersField/index.less +70 -0
  155. package/lib/plus/saasAttendance/settings/components/shiftModal/index.d.ts +18 -0
  156. package/lib/plus/saasAttendance/settings/components/shiftModal/index.js +447 -0
  157. package/lib/plus/saasAttendance/settings/index.d.ts +18 -0
  158. package/lib/plus/saasAttendance/settings/index.js +283 -0
  159. package/lib/plus/saasAttendance/settings/index.less +495 -0
  160. package/lib/plus/saasAttendance/settings/serve.d.ts +27 -0
  161. package/lib/plus/saasAttendance/settings/serve.js +54 -0
  162. package/lib/plus/saasAttendance/settings/types.d.ts +128 -0
  163. package/lib/plus/saasAttendance/settings/types.js +17 -0
  164. package/lib/plus/saasRole/components/PermissionManager/index.d.ts +19 -0
  165. package/lib/plus/saasRole/components/PermissionManager/index.js +159 -0
  166. package/lib/plus/saasRole/components/PermissionManager/index.less +71 -0
  167. package/lib/plus/saasRole/index.d.ts +14 -0
  168. package/lib/plus/saasRole/index.js +780 -0
  169. package/lib/plus/saasRole/index.less +196 -0
  170. package/lib/plus/saasRole/locales.d.ts +193 -0
  171. package/lib/plus/saasRole/locales.js +219 -0
  172. package/lib/plus/saasRole/serve.d.ts +72 -0
  173. package/lib/plus/saasRole/serve.js +100 -0
  174. package/lib/plus/saasRole/types.d.ts +175 -0
  175. package/lib/plus/saasRole/types.js +17 -0
  176. package/lib/plus/saasRole/utils.d.ts +0 -0
  177. package/lib/plus/saasRole/utils.js +0 -0
  178. package/lib/plus/saasTeamMembers/components/MemberDrawer/ExtensionFormTabContent.d.ts +31 -0
  179. package/lib/plus/saasTeamMembers/components/MemberDrawer/ExtensionFormTabContent.js +393 -0
  180. package/lib/plus/saasTeamMembers/components/MemberDrawer/index.d.ts +23 -0
  181. package/lib/plus/saasTeamMembers/components/MemberDrawer/index.js +672 -0
  182. package/lib/plus/saasTeamMembers/components/MemberDrawer/index.less +178 -0
  183. package/lib/plus/saasTeamMembers/index.d.ts +5 -0
  184. package/lib/plus/saasTeamMembers/index.js +448 -0
  185. package/lib/plus/saasTeamMembers/index.less +87 -0
  186. package/lib/plus/saasTeamMembers/locales.d.ts +330 -0
  187. package/lib/plus/saasTeamMembers/locales.js +401 -0
  188. package/lib/plus/saasTeamMembers/serve.d.ts +95 -0
  189. package/lib/plus/saasTeamMembers/serve.js +132 -0
  190. package/lib/plus/saasTeamMembers/type.d.ts +156 -0
  191. package/lib/plus/saasTeamMembers/type.js +17 -0
  192. package/lib/plus/selectHolder/components/ErrorTip/index.d.ts +0 -1
  193. package/lowcode/saas-attendance-settings/meta.ts +56 -0
  194. package/lowcode/saas-role/meta.ts +35 -0
  195. package/lowcode/saas-team-members/meta.ts +35 -0
  196. package/package.json +4 -4
@@ -0,0 +1,634 @@
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 _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
3
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
4
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
5
+ 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; }
6
+ 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; }
7
+ 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; }
8
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
9
+ 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); }
10
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
11
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
12
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
13
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
14
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
15
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
16
+ import React, { useState, useEffect, useMemo, useCallback, useRef } from 'react';
17
+ import { Form, Modal, Tabs } from 'antd';
18
+ import { Drawer, Input, FormItemInput, Select, Button, Alert, Icon } from '@pisell/materials';
19
+ import { useDebounceFn, useRequest } from 'ahooks';
20
+ // @ts-ignore
21
+ import { isEqual, sortBy } from 'lodash';
22
+ import { getAccountByEmail, getRelationRecords } from "../../serve";
23
+ import ExtensionFormTabContent from "./ExtensionFormTabContent";
24
+ import "./index.less";
25
+ var AntdDrawer = Drawer;
26
+ var AntdButton = Button;
27
+ var isValueEqual = function isValueEqual(a, b) {
28
+ if (a === '' && b == null || a == null && b === '') return true;
29
+ if (Array.isArray(a) && Array.isArray(b)) {
30
+ return isEqual(sortBy(a), sortBy(b));
31
+ }
32
+ return isEqual(a, b);
33
+ };
34
+ var PREFIX = 'saas-member-drawer';
35
+ var MemberDrawer = function MemberDrawer(_ref) {
36
+ var visible = _ref.visible,
37
+ mode = _ref.mode,
38
+ currentMember = _ref.currentMember,
39
+ roleOptions = _ref.roleOptions,
40
+ roles = _ref.roles,
41
+ onClose = _ref.onClose,
42
+ onSubmit = _ref.onSubmit,
43
+ loading = _ref.loading,
44
+ getText = _ref.getText,
45
+ getLocaleText = _ref.getLocaleText,
46
+ tenantId = _ref.tenantId,
47
+ mypisellData = _ref.mypisellData,
48
+ locale = _ref.locale;
49
+ var _Form$useForm = Form.useForm(),
50
+ _Form$useForm2 = _slicedToArray(_Form$useForm, 1),
51
+ form = _Form$useForm2[0];
52
+ var _useState = useState('basic'),
53
+ _useState2 = _slicedToArray(_useState, 2),
54
+ activeTab = _useState2[0],
55
+ setActiveTab = _useState2[1];
56
+ var _useState3 = useState([]),
57
+ _useState4 = _slicedToArray(_useState3, 2),
58
+ selectedRoleIds = _useState4[0],
59
+ setSelectedRoleIds = _useState4[1];
60
+ var _useState5 = useState(false),
61
+ _useState6 = _slicedToArray(_useState5, 2),
62
+ isEmailRegistered = _useState6[0],
63
+ setIsEmailRegistered = _useState6[1];
64
+ var _useState7 = useState(false),
65
+ _useState8 = _slicedToArray(_useState7, 2),
66
+ checkingEmail = _useState8[0],
67
+ setCheckingEmail = _useState8[1];
68
+ var _useState9 = useState(false),
69
+ _useState10 = _slicedToArray(_useState9, 2),
70
+ isBasicFormDirty = _useState10[0],
71
+ setIsBasicFormDirty = _useState10[1];
72
+ var _useState11 = useState({}),
73
+ _useState12 = _slicedToArray(_useState11, 2),
74
+ iframeDirtyStates = _useState12[0],
75
+ setIframeDirtyStates = _useState12[1];
76
+ var extensionTabRefs = useRef({});
77
+ var initialValuesRef = useRef(null);
78
+ var _Modal$useModal = Modal.useModal(),
79
+ _Modal$useModal2 = _slicedToArray(_Modal$useModal, 2),
80
+ modal = _Modal$useModal2[0],
81
+ contextHolder = _Modal$useModal2[1];
82
+
83
+ // Computed overall dirty state (basic form + iframes)
84
+ var isFormDirty = useMemo(function () {
85
+ var hasIframeDirty = Object.values(iframeDirtyStates).some(Boolean);
86
+ return isBasicFormDirty || hasIframeDirty;
87
+ }, [isBasicFormDirty, iframeDirtyStates]);
88
+
89
+ // Handle iframe dirty state change
90
+ var handleIframeDirtyChange = useCallback(function (formId, isDirty) {
91
+ setIframeDirtyStates(function (prev) {
92
+ return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, formId, isDirty));
93
+ });
94
+ }, []);
95
+
96
+ // 表单内容变动后需要提示用户保存
97
+ var checkFormDirty = useCallback(function () {
98
+ if (!initialValuesRef.current) return;
99
+ var currentValues = form.getFieldsValue();
100
+ var initialValues = initialValuesRef.current;
101
+
102
+ // Compare each field
103
+ var fieldsToCompare = ['nickname', 'member_id', 'status', 'tenant_role_ids', 'email', 'password', 'first_name', 'last_name', 'phone'];
104
+ for (var _i = 0, _fieldsToCompare = fieldsToCompare; _i < _fieldsToCompare.length; _i++) {
105
+ var field = _fieldsToCompare[_i];
106
+ if (!isValueEqual(currentValues[field], initialValues[field])) {
107
+ setIsBasicFormDirty(true);
108
+ return;
109
+ }
110
+ }
111
+ setIsBasicFormDirty(false);
112
+ }, [form]);
113
+ useEffect(function () {
114
+ if (visible) {
115
+ var _values;
116
+ if (mode === 'edit' && currentMember) {
117
+ var _currentMember$roles, _currentMember$accoun, _currentMember$accoun2, _currentMember$accoun3, _currentMember$accoun4;
118
+ var roleIds = ((_currentMember$roles = currentMember.roles) === null || _currentMember$roles === void 0 ? void 0 : _currentMember$roles.map(function (r) {
119
+ return r.id;
120
+ })) || [];
121
+ _values = {
122
+ nickname: currentMember.nickname || '',
123
+ member_id: currentMember.member_id || '',
124
+ status: currentMember.status || 'active',
125
+ tenant_role_ids: roleIds,
126
+ email: ((_currentMember$accoun = currentMember.account) === null || _currentMember$accoun === void 0 ? void 0 : _currentMember$accoun.email) || '',
127
+ first_name: ((_currentMember$accoun2 = currentMember.account) === null || _currentMember$accoun2 === void 0 ? void 0 : _currentMember$accoun2.first_name) || '',
128
+ last_name: ((_currentMember$accoun3 = currentMember.account) === null || _currentMember$accoun3 === void 0 ? void 0 : _currentMember$accoun3.last_name) || '',
129
+ phone: ((_currentMember$accoun4 = currentMember.account) === null || _currentMember$accoun4 === void 0 ? void 0 : _currentMember$accoun4.phone) || ''
130
+ };
131
+ form.setFieldsValue(_values);
132
+ setSelectedRoleIds(roleIds);
133
+ setIsEmailRegistered(false);
134
+ } else {
135
+ _values = {
136
+ nickname: '',
137
+ member_id: '',
138
+ status: 'active',
139
+ tenant_role_ids: [],
140
+ email: '',
141
+ password: '',
142
+ first_name: '',
143
+ last_name: '',
144
+ phone: ''
145
+ };
146
+ form.resetFields();
147
+ form.setFieldsValue(_values);
148
+ setSelectedRoleIds([]);
149
+ setIsEmailRegistered(false);
150
+ }
151
+ initialValuesRef.current = _values;
152
+ setIsBasicFormDirty(false);
153
+ setIframeDirtyStates({});
154
+ setActiveTab('basic');
155
+ }
156
+ }, [visible, mode, currentMember, form]);
157
+ var handleFormValuesChange = useCallback(function () {
158
+ setTimeout(checkFormDirty, 0);
159
+ }, [checkFormDirty]);
160
+
161
+ // 检查email是否已经注册过
162
+ var _useDebounceFn = useDebounceFn( /*#__PURE__*/function () {
163
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(email) {
164
+ var account, _ref3, first_name, last_name, phone;
165
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
166
+ while (1) switch (_context.prev = _context.next) {
167
+ case 0:
168
+ if (!(!email || mode === 'edit')) {
169
+ _context.next = 4;
170
+ break;
171
+ }
172
+ setIsEmailRegistered(false);
173
+ setCheckingEmail(false);
174
+ return _context.abrupt("return");
175
+ case 4:
176
+ setCheckingEmail(true);
177
+ _context.prev = 5;
178
+ _context.next = 8;
179
+ return getAccountByEmail({
180
+ filter: JSON.stringify({
181
+ tenant_id: tenantId,
182
+ email: email
183
+ })
184
+ });
185
+ case 8:
186
+ account = _context.sent;
187
+ if (account !== null && account !== void 0 && account.id) {
188
+ _ref3 = account, first_name = _ref3.first_name, last_name = _ref3.last_name, phone = _ref3.phone;
189
+ form.setFieldsValue({
190
+ first_name: first_name,
191
+ last_name: last_name,
192
+ phone: phone
193
+ });
194
+ setIsEmailRegistered(true);
195
+ } else {
196
+ setIsEmailRegistered(false);
197
+ }
198
+ _context.next = 14;
199
+ break;
200
+ case 12:
201
+ _context.prev = 12;
202
+ _context.t0 = _context["catch"](5);
203
+ case 14:
204
+ _context.prev = 14;
205
+ setCheckingEmail(false);
206
+ return _context.finish(14);
207
+ case 17:
208
+ case "end":
209
+ return _context.stop();
210
+ }
211
+ }, _callee, null, [[5, 12, 14, 17]]);
212
+ }));
213
+ return function (_x) {
214
+ return _ref2.apply(this, arguments);
215
+ };
216
+ }(), {
217
+ wait: 500
218
+ }),
219
+ checkEmail = _useDebounceFn.run;
220
+ var handleEmailChange = useCallback(function (e) {
221
+ var email = e.target.value;
222
+ if (mode === 'create') {
223
+ checkEmail(email);
224
+ }
225
+ }, [mode, checkEmail]);
226
+ var selectedRoles = useMemo(function () {
227
+ return roles.filter(function (role) {
228
+ return selectedRoleIds.includes(role.id);
229
+ });
230
+ }, [roles, selectedRoleIds]);
231
+
232
+ // 手机角色绑定过的form_id
233
+ var extensionFormIds = useMemo(function () {
234
+ var formIds = new Set();
235
+ selectedRoles.forEach(function (role) {
236
+ var _role$metadata;
237
+ if ((_role$metadata = role.metadata) !== null && _role$metadata !== void 0 && _role$metadata.extension_form_id) {
238
+ formIds.add(role.metadata.extension_form_id);
239
+ }
240
+ });
241
+ return Array.from(formIds);
242
+ }, [selectedRoles]);
243
+
244
+ // Get role names for each extension form ID
245
+ var extensionFormRoles = useMemo(function () {
246
+ var formRoles = {};
247
+ selectedRoles.forEach(function (role) {
248
+ var _role$metadata2;
249
+ var formId = (_role$metadata2 = role.metadata) === null || _role$metadata2 === void 0 ? void 0 : _role$metadata2.extension_form_id;
250
+ if (formId) {
251
+ if (!formRoles[formId]) {
252
+ formRoles[formId] = [];
253
+ }
254
+ formRoles[formId].push(getLocaleText(role.name));
255
+ }
256
+ });
257
+ return formRoles;
258
+ }, [selectedRoles, getLocaleText]);
259
+ var prevExtensionFormRolesRef = useRef({});
260
+ var prevAccountIdRef = useRef(undefined);
261
+ var _useRequest = useRequest( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
262
+ var data;
263
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
264
+ while (1) switch (_context2.prev = _context2.next) {
265
+ case 0:
266
+ if (currentMember !== null && currentMember !== void 0 && currentMember.id) {
267
+ _context2.next = 2;
268
+ break;
269
+ }
270
+ return _context2.abrupt("return", []);
271
+ case 2:
272
+ if (!(extensionFormIds.length === 0)) {
273
+ _context2.next = 4;
274
+ break;
275
+ }
276
+ return _context2.abrupt("return", []);
277
+ case 4:
278
+ _context2.next = 6;
279
+ return getRelationRecords({
280
+ relation_type: 'tenant_account',
281
+ relation_id: currentMember.id,
282
+ form_id: extensionFormIds
283
+ });
284
+ case 6:
285
+ data = _context2.sent;
286
+ return _context2.abrupt("return", Array.isArray(data) ? data : []);
287
+ case 8:
288
+ case "end":
289
+ return _context2.stop();
290
+ }
291
+ }, _callee2);
292
+ })), {
293
+ manual: true
294
+ }),
295
+ relationList = _useRequest.data,
296
+ runGetRelationList = _useRequest.run,
297
+ refreshRelationList = _useRequest.refresh;
298
+ useEffect(function () {
299
+ if ((currentMember === null || currentMember === void 0 ? void 0 : currentMember.id) !== prevAccountIdRef.current) {
300
+ prevExtensionFormRolesRef.current = {};
301
+ prevAccountIdRef.current = currentMember === null || currentMember === void 0 ? void 0 : currentMember.id;
302
+ }
303
+ }, [currentMember === null || currentMember === void 0 ? void 0 : currentMember.id]);
304
+ useEffect(function () {
305
+ if (!visible) return;
306
+ if (!(currentMember !== null && currentMember !== void 0 && currentMember.id)) return;
307
+ var prev = prevExtensionFormRolesRef.current || {};
308
+ var curr = extensionFormRoles || {};
309
+ var normalize = function normalize(obj) {
310
+ var result = {};
311
+ Object.keys(obj).forEach(function (key) {
312
+ var k = Number(key);
313
+ result[k] = sortBy(obj[k] || []);
314
+ });
315
+ return result;
316
+ };
317
+ var changed = !isEqual(normalize(prev), normalize(curr));
318
+ if (changed) {
319
+ runGetRelationList();
320
+ }
321
+ prevExtensionFormRolesRef.current = curr;
322
+ }, [visible, currentMember === null || currentMember === void 0 ? void 0 : currentMember.account_id, extensionFormRoles, runGetRelationList]);
323
+
324
+ // Handle tab change
325
+ var handleTabChange = useCallback(function (key) {
326
+ // Only prompt if current tab has unsaved changes
327
+ var currentTabDirty = activeTab === 'basic' ? isBasicFormDirty : iframeDirtyStates[parseInt(activeTab.replace('extension-', ''))] || false;
328
+ if (currentTabDirty) {
329
+ modal.confirm({
330
+ title: getText('pisell2.saas.team-members.confirm.unsaved-title'),
331
+ content: getText('pisell2.saas.team-members.confirm.unsaved-content'),
332
+ okText: getText('pisell2.saas.team-members.confirm.leave'),
333
+ cancelText: getText('pisell2.saas.team-members.drawer.cancel'),
334
+ onOk: function onOk() {
335
+ // Reset the dirty state for the tab we're leaving
336
+ if (activeTab === 'basic') {
337
+ setIsBasicFormDirty(false);
338
+ // Reset form to initial values
339
+ if (initialValuesRef.current) {
340
+ form.setFieldsValue(initialValuesRef.current);
341
+ }
342
+ } else {
343
+ var _extensionTabRefs$cur, _extensionTabRefs$cur2;
344
+ var formId = parseInt(activeTab.replace('extension-', ''));
345
+ (_extensionTabRefs$cur = extensionTabRefs.current[formId]) === null || _extensionTabRefs$cur === void 0 || (_extensionTabRefs$cur2 = _extensionTabRefs$cur.reset) === null || _extensionTabRefs$cur2 === void 0 || _extensionTabRefs$cur2.call(_extensionTabRefs$cur);
346
+ setIframeDirtyStates(function (prev) {
347
+ return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, formId, false));
348
+ });
349
+ }
350
+ setActiveTab(key);
351
+ }
352
+ });
353
+ } else {
354
+ setActiveTab(key);
355
+ }
356
+ }, [activeTab, isBasicFormDirty, iframeDirtyStates, getText, form]);
357
+
358
+ // Handle drawer close
359
+ var handleClose = useCallback(function () {
360
+ if (isFormDirty) {
361
+ modal.confirm({
362
+ title: getText('pisell2.saas.team-members.confirm.unsaved-title'),
363
+ content: getText('pisell2.saas.team-members.confirm.unsaved-content'),
364
+ okText: getText('pisell2.saas.team-members.confirm.leave'),
365
+ cancelText: getText('pisell2.saas.team-members.drawer.cancel'),
366
+ onOk: function onOk() {
367
+ setIsBasicFormDirty(false);
368
+ setIframeDirtyStates({});
369
+ onClose();
370
+ }
371
+ });
372
+ } else {
373
+ onClose();
374
+ }
375
+ }, [isFormDirty, onClose, getText]);
376
+
377
+ // 基础信息提交
378
+ var handleBasicInfoSubmit = useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
379
+ var _values2;
380
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
381
+ while (1) switch (_context3.prev = _context3.next) {
382
+ case 0:
383
+ _context3.prev = 0;
384
+ _context3.next = 3;
385
+ return form.validateFields();
386
+ case 3:
387
+ _values2 = _context3.sent;
388
+ _context3.next = 6;
389
+ return onSubmit(_values2);
390
+ case 6:
391
+ setSelectedRoleIds((_values2 === null || _values2 === void 0 ? void 0 : _values2.tenant_role_ids) || []);
392
+ setIsBasicFormDirty(false);
393
+ initialValuesRef.current = form.getFieldsValue();
394
+ _context3.next = 14;
395
+ break;
396
+ case 11:
397
+ _context3.prev = 11;
398
+ _context3.t0 = _context3["catch"](0);
399
+ console.error('Form validation failed:', _context3.t0);
400
+ case 14:
401
+ case "end":
402
+ return _context3.stop();
403
+ }
404
+ }, _callee3, null, [[0, 11]]);
405
+ })), [form, onSubmit]);
406
+
407
+ // 是否为 founder
408
+ var isFounder = mode === 'edit' && (currentMember === null || currentMember === void 0 ? void 0 : currentMember.type) === 'founder';
409
+
410
+ // 基础信息
411
+ var renderBasicInfoTab = function renderBasicInfoTab() {
412
+ return /*#__PURE__*/React.createElement("div", {
413
+ className: "".concat(PREFIX, "_tab-content")
414
+ }, /*#__PURE__*/React.createElement(Form, {
415
+ form: form,
416
+ layout: "vertical",
417
+ size: "large",
418
+ onValuesChange: handleFormValuesChange,
419
+ autoComplete: "false"
420
+ }, /*#__PURE__*/React.createElement("div", {
421
+ className: "".concat(PREFIX, "_section")
422
+ }, /*#__PURE__*/React.createElement("h6", {
423
+ className: "".concat(PREFIX, "_section-header")
424
+ }, getText('pisell2.saas.team-members.form.section.team-member-info')), /*#__PURE__*/React.createElement(Form.Item, {
425
+ name: "nickname",
426
+ label: getText('pisell2.saas.team-members.form.name'),
427
+ rules: [{
428
+ required: true,
429
+ message: getText('pisell2.saas.team-members.form.name-required')
430
+ }],
431
+ help: getText('pisell2.saas.team-members.form.name-hint')
432
+ }, /*#__PURE__*/React.createElement(Input, {
433
+ placeholder: getText('pisell2.saas.team-members.form.name-placeholder')
434
+ })), /*#__PURE__*/React.createElement(Form.Item, {
435
+ name: "member_id",
436
+ label: getText('pisell2.saas.team-members.form.member-id'),
437
+ help: getText('pisell2.saas.team-members.form.member-id-hint')
438
+ }, /*#__PURE__*/React.createElement(Input, {
439
+ placeholder: getText('pisell2.saas.team-members.form.member-id-placeholder')
440
+ })), /*#__PURE__*/React.createElement(Form.Item, {
441
+ name: "status",
442
+ label: getText('pisell2.saas.team-members.form.status'),
443
+ initialValue: "active",
444
+ rules: [{
445
+ required: true,
446
+ message: getText('pisell2.saas.team-members.form.status-required')
447
+ }]
448
+ }, /*#__PURE__*/React.createElement(Select, {
449
+ disabled: isFounder
450
+ }, /*#__PURE__*/React.createElement(Select.Option, {
451
+ value: "active"
452
+ }, getText('pisell2.saas.team-members.status.active')), /*#__PURE__*/React.createElement(Select.Option, {
453
+ value: "inactive"
454
+ }, getText('pisell2.saas.team-members.status.inactive')))), /*#__PURE__*/React.createElement(Form.Item, {
455
+ name: "tenant_role_ids",
456
+ label: getText('pisell2.saas.team-members.form.roles'),
457
+ rules: [{
458
+ required: true,
459
+ message: getText('pisell2.saas.team-members.form.roles-required')
460
+ }],
461
+ extra: isFounder ? /*#__PURE__*/React.createElement(Alert, {
462
+ message: getText('pisell2.saas.team-members.founder-notice'),
463
+ type: "info",
464
+ showIcon: true,
465
+ icon: /*#__PURE__*/React.createElement(Icon, {
466
+ type: "pisell2-info-circle",
467
+ size: 16,
468
+ color: "#7f8694",
469
+ style: {
470
+ marginTop: 2,
471
+ alignSelf: 'flex-start'
472
+ }
473
+ }),
474
+ className: "".concat(PREFIX, "_founder-notice")
475
+ }) : getText('pisell2.saas.team-members.form.roles-hint')
476
+ }, /*#__PURE__*/React.createElement(Select, {
477
+ mode: "multiple",
478
+ placeholder: getText('pisell2.saas.team-members.form.roles-placeholder'),
479
+ options: roleOptions
480
+ }))), /*#__PURE__*/React.createElement("div", {
481
+ className: "".concat(PREFIX, "_section")
482
+ }, /*#__PURE__*/React.createElement("h6", {
483
+ className: "".concat(PREFIX, "_section-header")
484
+ }, getText('pisell2.saas.team-members.form.section.account-email-login')), /*#__PURE__*/React.createElement(Form.Item, {
485
+ name: "email",
486
+ label: getText('pisell2.saas.team-members.form.email'),
487
+ rules: mode === 'create' ? [{
488
+ required: true,
489
+ message: getText('pisell2.saas.team-members.form.email-required')
490
+ }, {
491
+ type: 'email',
492
+ message: getText('pisell2.saas.team-members.form.email-invalid')
493
+ }] : [],
494
+ extra: mode === 'create' && isEmailRegistered && /*#__PURE__*/React.createElement(Alert, {
495
+ type: "info",
496
+ showIcon: true,
497
+ icon: /*#__PURE__*/React.createElement(Icon, {
498
+ type: "pisell2-info-circle",
499
+ size: 16,
500
+ color: "#7f8694"
501
+ }),
502
+ className: "".concat(PREFIX, "_email-registered-alert"),
503
+ message: getText('pisell2.saas.team-members.form.email-registered')
504
+ })
505
+ }, /*#__PURE__*/React.createElement(Input, {
506
+ placeholder: getText('pisell2.saas.team-members.form.email-placeholder'),
507
+ disabled: mode === 'edit',
508
+ onChange: handleEmailChange,
509
+ prefix: /*#__PURE__*/React.createElement(Icon, {
510
+ type: "pisell2-mail-01",
511
+ size: 18,
512
+ color: "#98A2B3"
513
+ })
514
+ })), mode === 'create' && !isEmailRegistered && /*#__PURE__*/React.createElement(Form.Item, {
515
+ name: "password",
516
+ label: getText('pisell2.saas.team-members.form.password'),
517
+ rules: [{
518
+ required: true,
519
+ message: getText('pisell2.saas.team-members.form.password-required')
520
+ }, {
521
+ // 至少6个字符且不包含空格
522
+ pattern: /^\S{6,}$/,
523
+ message: getText('pisell2.saas.team-members.form.password-invalid')
524
+ }]
525
+ }, /*#__PURE__*/React.createElement(Input.Password, {
526
+ placeholder: getText('pisell2.saas.team-members.form.password-placeholder')
527
+ }))), /*#__PURE__*/React.createElement("div", {
528
+ className: "".concat(PREFIX, "_section")
529
+ }, /*#__PURE__*/React.createElement("h6", {
530
+ className: "".concat(PREFIX, "_section-header")
531
+ }, getText('pisell2.saas.team-members.form.section.personal-info')), /*#__PURE__*/React.createElement("div", {
532
+ style: {
533
+ display: 'grid',
534
+ gridTemplateColumns: '1fr 1fr',
535
+ gap: 16
536
+ }
537
+ }, /*#__PURE__*/React.createElement(Form.Item, {
538
+ name: "first_name",
539
+ label: getText('pisell2.saas.team-members.form.first-name')
540
+ }, /*#__PURE__*/React.createElement(Input, {
541
+ placeholder: getText('pisell2.saas.team-members.form.first-name-placeholder'),
542
+ disabled: mode === 'edit' || isEmailRegistered
543
+ })), /*#__PURE__*/React.createElement(Form.Item, {
544
+ name: "last_name",
545
+ label: getText('pisell2.saas.team-members.form.last-name')
546
+ }, /*#__PURE__*/React.createElement(Input, {
547
+ placeholder: getText('pisell2.saas.team-members.form.last-name-placeholder'),
548
+ disabled: mode === 'edit' || isEmailRegistered
549
+ }))), /*#__PURE__*/React.createElement(FormItemInput.Phone, {
550
+ type: "tel",
551
+ name: "phone",
552
+ label: getText('pisell2.saas.team-members.form.mobile'),
553
+ disabled: mode === 'edit' || isEmailRegistered
554
+ }))));
555
+ };
556
+
557
+ // Render extension form tab content
558
+ var renderExtensionFormTab = function renderExtensionFormTab(formId) {
559
+ var roleNames = extensionFormRoles[formId] || [];
560
+ var tabLabel = roleNames.join(' / ');
561
+ return /*#__PURE__*/React.createElement(ExtensionFormTabContent, {
562
+ ref: function ref(instance) {
563
+ extensionTabRefs.current[formId] = instance;
564
+ },
565
+ formId: formId,
566
+ domain: (mypisellData === null || mypisellData === void 0 ? void 0 : mypisellData.domain) || '',
567
+ token: (mypisellData === null || mypisellData === void 0 ? void 0 : mypisellData.account_token) || '',
568
+ locale: locale,
569
+ tenantAccountId: currentMember === null || currentMember === void 0 ? void 0 : currentMember.id,
570
+ onDirtyChange: function onDirtyChange(isDirty) {
571
+ return handleIframeDirtyChange(formId, isDirty);
572
+ },
573
+ onCancel: onClose,
574
+ getText: getText,
575
+ tabLabel: tabLabel,
576
+ prefix: PREFIX,
577
+ relationList: relationList || [],
578
+ refreshRelationList: runGetRelationList
579
+ });
580
+ };
581
+
582
+ // Build tabs items
583
+ var tabItems = useMemo(function () {
584
+ var items = [{
585
+ key: 'basic',
586
+ label: getText('pisell2.saas.team-members.tab.basic-info'),
587
+ children: renderBasicInfoTab()
588
+ }];
589
+
590
+ // Add extension form tabs only in edit mode or when roles are selected
591
+ if (mode === 'edit' && selectedRoleIds.length > 0) {
592
+ extensionFormIds.forEach(function (formId) {
593
+ var roleNames = extensionFormRoles[formId] || [];
594
+ var tabLabel = roleNames.join(' / ');
595
+ items.push({
596
+ key: "extension-".concat(formId),
597
+ label: tabLabel,
598
+ children: renderExtensionFormTab(formId)
599
+ });
600
+ });
601
+ }
602
+ return items;
603
+ }, [mode, selectedRoleIds, extensionFormIds, extensionFormRoles, isEmailRegistered, checkingEmail, loading, relationList, refreshRelationList]);
604
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(AntdDrawer, {
605
+ title: mode === 'create' ? getText('pisell2.saas.team-members.drawer.create-title') : getText('pisell2.saas.team-members.drawer.edit-title'),
606
+ open: visible,
607
+ onClose: handleClose,
608
+ width: 600,
609
+ className: "saas-member-drawer",
610
+ headerStyle: {
611
+ borderBottom: '2px solid #f0f0f0'
612
+ },
613
+ destroyOnHidden: true,
614
+ footer: activeTab === 'basic' ? /*#__PURE__*/React.createElement("div", {
615
+ className: "".concat(PREFIX, "_footer")
616
+ }, /*#__PURE__*/React.createElement(AntdButton, {
617
+ onClick: handleClose,
618
+ style: {
619
+ marginRight: 8
620
+ }
621
+ }, getText('pisell2.saas.team-members.drawer.cancel')), /*#__PURE__*/React.createElement(AntdButton, {
622
+ type: "primary",
623
+ onClick: handleBasicInfoSubmit,
624
+ loading: loading,
625
+ disabled: checkingEmail || mode === 'edit' && !isBasicFormDirty
626
+ }, getText('pisell2.saas.team-members.drawer.save'))) : false
627
+ }, /*#__PURE__*/React.createElement(Tabs, {
628
+ activeKey: activeTab,
629
+ onChange: handleTabChange,
630
+ items: tabItems,
631
+ className: "".concat(PREFIX, "_tabs")
632
+ })), contextHolder);
633
+ };
634
+ export default MemberDrawer;