abmp-npm 2.0.72 → 2.0.74

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 (86) hide show
  1. package/.claude/worktrees/fix-save-button-disable/.husky/pre-commit +19 -0
  2. package/.claude/worktrees/fix-save-button-disable/.prettierignore +7 -0
  3. package/.claude/worktrees/fix-save-button-disable/.prettierrc.json +16 -0
  4. package/.claude/worktrees/fix-save-button-disable/README.md +1 -0
  5. package/.claude/worktrees/fix-save-button-disable/backend/README-member-contact-flows.md +136 -0
  6. package/.claude/worktrees/fix-save-button-disable/backend/__tests__/daily-pull-execution-check.test.js +124 -0
  7. package/.claude/worktrees/fix-save-button-disable/backend/__tests__/ensure-unique-urls-in-batch.test.js +129 -0
  8. package/.claude/worktrees/fix-save-button-disable/backend/__tests__/login-email-sync.test.js +49 -0
  9. package/.claude/worktrees/fix-save-button-disable/backend/__tests__/transient-retry-and-bulk-lookup.test.js +129 -0
  10. package/.claude/worktrees/fix-save-button-disable/backend/__tests__/url-uniqueness.test.js +194 -0
  11. package/.claude/worktrees/fix-save-button-disable/backend/automations-methods.js +13 -0
  12. package/.claude/worktrees/fix-save-button-disable/backend/cms-data-methods.js +251 -0
  13. package/.claude/worktrees/fix-save-button-disable/backend/consts.js +58 -0
  14. package/.claude/worktrees/fix-save-button-disable/backend/contacts-methods.js +67 -0
  15. package/.claude/worktrees/fix-save-button-disable/backend/daily-pull/bulk-process-methods.js +222 -0
  16. package/.claude/worktrees/fix-save-button-disable/backend/daily-pull/consts.js +39 -0
  17. package/.claude/worktrees/fix-save-button-disable/backend/daily-pull/index.js +5 -0
  18. package/.claude/worktrees/fix-save-button-disable/backend/daily-pull/process-member-methods.js +213 -0
  19. package/.claude/worktrees/fix-save-button-disable/backend/daily-pull/schedule-methods.js +41 -0
  20. package/.claude/worktrees/fix-save-button-disable/backend/daily-pull/sync-to-cms-methods.js +161 -0
  21. package/.claude/worktrees/fix-save-button-disable/backend/daily-pull/utils.js +151 -0
  22. package/.claude/worktrees/fix-save-button-disable/backend/data-hooks.js +29 -0
  23. package/.claude/worktrees/fix-save-button-disable/backend/dev-only-methods.js +58 -0
  24. package/.claude/worktrees/fix-save-button-disable/backend/elevated-modules.js +18 -0
  25. package/.claude/worktrees/fix-save-button-disable/backend/forms-methods.js +52 -0
  26. package/.claude/worktrees/fix-save-button-disable/backend/http-functions/httpFunctions.js +86 -0
  27. package/.claude/worktrees/fix-save-button-disable/backend/http-functions/index.js +3 -0
  28. package/.claude/worktrees/fix-save-button-disable/backend/http-functions/interests.js +35 -0
  29. package/.claude/worktrees/fix-save-button-disable/backend/index.js +19 -0
  30. package/.claude/worktrees/fix-save-button-disable/backend/jobs.js +158 -0
  31. package/.claude/worktrees/fix-save-button-disable/backend/login/generate-member-session-token.js +27 -0
  32. package/.claude/worktrees/fix-save-button-disable/backend/login/index.js +8 -0
  33. package/.claude/worktrees/fix-save-button-disable/backend/login/qa-login-methods.js +54 -0
  34. package/.claude/worktrees/fix-save-button-disable/backend/login/sso-methods.js +159 -0
  35. package/.claude/worktrees/fix-save-button-disable/backend/member-contact-orchestration.js +111 -0
  36. package/.claude/worktrees/fix-save-button-disable/backend/members-area-methods.js +88 -0
  37. package/.claude/worktrees/fix-save-button-disable/backend/members-data-methods.js +789 -0
  38. package/.claude/worktrees/fix-save-button-disable/backend/pac-api-methods.js +54 -0
  39. package/.claude/worktrees/fix-save-button-disable/backend/routers/index.js +3 -0
  40. package/.claude/worktrees/fix-save-button-disable/backend/routers/methods.js +191 -0
  41. package/.claude/worktrees/fix-save-button-disable/backend/routers/utils.js +128 -0
  42. package/.claude/worktrees/fix-save-button-disable/backend/search-filters-methods.js +124 -0
  43. package/.claude/worktrees/fix-save-button-disable/backend/tasks/address-primary-methods.js +256 -0
  44. package/.claude/worktrees/fix-save-button-disable/backend/tasks/address-visibility-methods.js +160 -0
  45. package/.claude/worktrees/fix-save-button-disable/backend/tasks/consts.js +34 -0
  46. package/.claude/worktrees/fix-save-button-disable/backend/tasks/daily-pull-check-methods.js +78 -0
  47. package/.claude/worktrees/fix-save-button-disable/backend/tasks/email-normalize-methods.js +134 -0
  48. package/.claude/worktrees/fix-save-button-disable/backend/tasks/index.js +10 -0
  49. package/.claude/worktrees/fix-save-button-disable/backend/tasks/migration-methods.js +46 -0
  50. package/.claude/worktrees/fix-save-button-disable/backend/tasks/tasks-configs.js +251 -0
  51. package/.claude/worktrees/fix-save-button-disable/backend/tasks/tasks-helpers-methods.js +433 -0
  52. package/.claude/worktrees/fix-save-button-disable/backend/tasks/tasks-process-methods.js +606 -0
  53. package/.claude/worktrees/fix-save-button-disable/backend/tasks/url-migration-methods.js +378 -0
  54. package/.claude/worktrees/fix-save-button-disable/backend/tasks/url-space-fix-methods.js +174 -0
  55. package/.claude/worktrees/fix-save-button-disable/backend/utils.js +277 -0
  56. package/.claude/worktrees/fix-save-button-disable/dev-only-scripts/extract-duplicate-url-groups.js +201 -0
  57. package/.claude/worktrees/fix-save-button-disable/dev-only-scripts/find-duplicate-ids.js +159 -0
  58. package/.claude/worktrees/fix-save-button-disable/dev-only-scripts/find-duplicate-urls.js +201 -0
  59. package/.claude/worktrees/fix-save-button-disable/eslint.config.js +120 -0
  60. package/.claude/worktrees/fix-save-button-disable/index.js +5 -0
  61. package/.claude/worktrees/fix-save-button-disable/package-lock.json +12160 -0
  62. package/.claude/worktrees/fix-save-button-disable/package.json +60 -0
  63. package/.claude/worktrees/fix-save-button-disable/pages/ContactUs.js +129 -0
  64. package/.claude/worktrees/fix-save-button-disable/pages/Home.js +779 -0
  65. package/.claude/worktrees/fix-save-button-disable/pages/LearnMore.js +27 -0
  66. package/.claude/worktrees/fix-save-button-disable/pages/LoadingPage.js +29 -0
  67. package/.claude/worktrees/fix-save-button-disable/pages/Profile.js +354 -0
  68. package/.claude/worktrees/fix-save-button-disable/pages/QAPage.js +39 -0
  69. package/.claude/worktrees/fix-save-button-disable/pages/SaveAlerts.js +13 -0
  70. package/.claude/worktrees/fix-save-button-disable/pages/SelectBannerImages.js +46 -0
  71. package/.claude/worktrees/fix-save-button-disable/pages/deleteConfirm.js +19 -0
  72. package/.claude/worktrees/fix-save-button-disable/pages/index.js +12 -0
  73. package/.claude/worktrees/fix-save-button-disable/pages/personalDetails.js +2486 -0
  74. package/.claude/worktrees/fix-save-button-disable/public/Utils/homePage.js +798 -0
  75. package/.claude/worktrees/fix-save-button-disable/public/Utils/personalDetailsUtils.js +25 -0
  76. package/.claude/worktrees/fix-save-button-disable/public/Utils/sharedUtils.js +235 -0
  77. package/.claude/worktrees/fix-save-button-disable/public/consts.js +113 -0
  78. package/.claude/worktrees/fix-save-button-disable/public/index.js +5 -0
  79. package/.claude/worktrees/fix-save-button-disable/public/messages.js +16 -0
  80. package/.claude/worktrees/fix-save-button-disable/public/sso-auth-methods.js +43 -0
  81. package/backend/jobs.js +19 -0
  82. package/backend/tasks/address-visibility-methods.js +160 -0
  83. package/backend/tasks/consts.js +2 -0
  84. package/backend/tasks/tasks-configs.js +18 -0
  85. package/package.json +1 -1
  86. package/pages/personalDetails.js +33 -34
@@ -975,31 +975,18 @@ async function personalDetailsOnReady({
975
975
  });
976
976
  }
977
977
 
978
- async function handleItemDelete(event, getTextSelector, arrayRef, matchField, renderFn) {
979
- const result = await wixWindow.openLightbox(LIGHTBOX_NAMES.DELETE_CONFIRM);
980
-
981
- if (result && result.toDelete) {
982
- const $clickedItem = _$w.at(event.context);
983
- const textToRemove = $clickedItem(getTextSelector).text;
984
-
985
- arrayRef.splice(
986
- 0,
987
- arrayRef.length,
988
- ...arrayRef.filter(item =>
989
- typeof item === 'string' ? item !== textToRemove : item[matchField] !== textToRemove
990
- )
991
- );
992
-
993
- renderFn();
994
- checkFormChanges(FORM_SECTION_HANDLER_MAP.BUSINESS_SERVICES);
995
- }
996
- }
997
-
998
978
  async function setInterestData() {
999
979
  const interestsData = await getInterestAll();
1000
980
 
1001
- _$w('#removeServiceButton').onClick(event => {
1002
- handleItemDelete(event, '#serviceNameText', selectedServices, 'label', renderServices);
981
+ _$w('#removeServiceButton').onClick(async event => {
982
+ const itemId = event.context.itemId;
983
+ const result = await wixWindow.openLightbox(LIGHTBOX_NAMES.DELETE_CONFIRM);
984
+
985
+ if (result && result.toDelete) {
986
+ selectedServices = selectedServices.filter(service => service._id !== itemId);
987
+ renderServices();
988
+ checkFormChanges(FORM_SECTION_HANDLER_MAP.BUSINESS_SERVICES);
989
+ }
1003
990
  });
1004
991
 
1005
992
  if (Array.isArray(interestsData) && interestsData.length > 0) {
@@ -1077,7 +1064,7 @@ async function personalDetailsOnReady({
1077
1064
  }
1078
1065
 
1079
1066
  function renderServices() {
1080
- setupRepeater('#servicesRepeater', selectedServices);
1067
+ setupRepeater('#servicesRepeater', [...selectedServices]);
1081
1068
  }
1082
1069
 
1083
1070
  function setupRepeater(repeaterId, data) {
@@ -1275,9 +1262,10 @@ async function personalDetailsOnReady({
1275
1262
  console.groupEnd();
1276
1263
 
1277
1264
  const result = await saveData(formData);
1278
- formHasUnsavedChanges[FORM_SECTION_HANDLER_MAP.PERSONAL.section] = false;
1279
1265
 
1280
1266
  if (result.success) {
1267
+ formHasUnsavedChanges[FORM_SECTION_HANDLER_MAP.PERSONAL.section] = false;
1268
+
1281
1269
  if (personalChanges.url && personalChanges.url !== originalUrl) {
1282
1270
  const newProfileLink = `${baseUrl}/profile/${personalChanges.url}`;
1283
1271
  console.log('🔗 Updating profile link:', {
@@ -1330,7 +1318,10 @@ async function personalDetailsOnReady({
1330
1318
  console.groupEnd();
1331
1319
 
1332
1320
  const result = await saveData(formData);
1333
- formHasUnsavedChanges[FORM_SECTION_HANDLER_MAP.BUSINESS_SERVICES.section] = false;
1321
+ if (result.success) {
1322
+ formHasUnsavedChanges[FORM_SECTION_HANDLER_MAP.BUSINESS_SERVICES.section] = false;
1323
+ _$w('#saveBusinessButton').disable();
1324
+ }
1334
1325
  handleSaveDataFeedback(_$w('#businessMessage'), result.message);
1335
1326
  _$w('#businessNameText').text = formData.businessName || DEFAULT_BUSINESS_NAME_TEXT;
1336
1327
  }
@@ -1339,14 +1330,21 @@ async function personalDetailsOnReady({
1339
1330
  const addTestimonialButton = _$w('#addTestimonialButton');
1340
1331
 
1341
1332
  addTestimonialButton.onClick(handleAddTestimonial);
1342
- _$w('#deleteTestimonialButton').onClick(event => {
1343
- handleItemDelete(
1344
- event,
1345
- '#testimonialText',
1346
- itemMemberObj.testimonial,
1347
- null,
1348
- renderTestimonials
1349
- );
1333
+ _$w('#deleteTestimonialButton').onClick(async event => {
1334
+ const data = _$w('#testimonialRepeater').data || [];
1335
+ const clickedIndex = data.findIndex(item => item._id === event.context.itemId);
1336
+ const result = await wixWindow.openLightbox(LIGHTBOX_NAMES.DELETE_CONFIRM);
1337
+
1338
+ if (
1339
+ result &&
1340
+ result.toDelete &&
1341
+ clickedIndex > 0 &&
1342
+ Array.isArray(itemMemberObj.testimonial)
1343
+ ) {
1344
+ itemMemberObj.testimonial.splice(clickedIndex - 1, 1);
1345
+ renderTestimonials();
1346
+ checkFormChanges(FORM_SECTION_HANDLER_MAP.BUSINESS_SERVICES);
1347
+ }
1350
1348
  });
1351
1349
 
1352
1350
  renderTestimonials();
@@ -2386,8 +2384,9 @@ async function personalDetailsOnReady({
2386
2384
  // Sync Personal Details opt-in from saved member.
2387
2385
  _$w('#optWebsiteCheckbox').checked = itemMemberObj.showWixUrl;
2388
2386
  toggleFreeWebsiteText(itemMemberObj.showWixUrl);
2387
+ formHasUnsavedChanges[FORM_SECTION_HANDLER_MAP.CONTACT_BOOKING.section] = false;
2388
+ _$w('#saveContactBookingButton').disable();
2389
2389
  }
2390
- formHasUnsavedChanges[FORM_SECTION_HANDLER_MAP.CONTACT_BOOKING.section] = false;
2391
2390
  handleSaveDataFeedback(_$w('#contactMessage'), result.message);
2392
2391
  }
2393
2392