@timardex/cluemart-shared 1.2.87 → 1.2.89

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.
@@ -35,12 +35,12 @@ type TesterVendor = {
35
35
  tryVisitorFeatures: boolean;
36
36
  completeFeedbackQuestionnaire: boolean;
37
37
  /** Social Media Appearance */
38
- sendPhotoForSocialMedia: boolean;
39
- appearInVideoIntroduction: boolean;
38
+ sendPhotoForSocialMedia?: boolean;
39
+ appearInVideoIntroduction?: boolean;
40
40
  socialMediaFeatureReason?: string;
41
41
  /** Open Questions */
42
- excitementAboutApp: string;
43
- usefulnessExpectations: string;
42
+ excitementAboutApp?: string;
43
+ usefulnessExpectations?: string;
44
44
  testingPeriodConcerns?: string;
45
45
  };
46
46
  };
@@ -35,12 +35,12 @@ type TesterVendor = {
35
35
  tryVisitorFeatures: boolean;
36
36
  completeFeedbackQuestionnaire: boolean;
37
37
  /** Social Media Appearance */
38
- sendPhotoForSocialMedia: boolean;
39
- appearInVideoIntroduction: boolean;
38
+ sendPhotoForSocialMedia?: boolean;
39
+ appearInVideoIntroduction?: boolean;
40
40
  socialMediaFeatureReason?: string;
41
41
  /** Open Questions */
42
- excitementAboutApp: string;
43
- usefulnessExpectations: string;
42
+ excitementAboutApp?: string;
43
+ usefulnessExpectations?: string;
44
44
  testingPeriodConcerns?: string;
45
45
  };
46
46
  };
@@ -55,4 +55,4 @@ export {
55
55
  EnumAdType,
56
56
  EnumAdStyle
57
57
  };
58
- //# sourceMappingURL=chunk-74DMNP4I.mjs.map
58
+ //# sourceMappingURL=chunk-66MS2SVX.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types/tester.ts","../src/types/ad.ts"],"sourcesContent":["import { EnumOSPlatform, EnumResourceType } from \"src/enums\";\n\nimport { Category, CreateFormData } from \"./global\";\n\nexport enum OrganizedMarketCount {\n ONE = \"One\",\n TWO_TO_THREE = \"Two_to_Three\",\n FOUR_TO_FIVE = \"Four_to_Five\",\n MORE_THAN_FIVE = \"More_than_Five\",\n}\n\nexport enum VendorSellingFrequency {\n TWICE_A_WEEK = \"Two_to_Three_times_a_week\",\n ONCE_A_WEEK = \"Once_a_week\",\n ONE_TO_TWO_TIMES_A_MONTH = \"One_to_Two_times_a_month\",\n LESS_OFTEN = \"Less_often\",\n}\n\nexport enum OrganizerMarketFrequency {\n WEEKLY = \"Weekly\",\n FORTNIGHTLY = \"Fortnightly\",\n MONTHLY = \"Monthly\",\n SEASONAL = \"Seasonal\",\n}\n\nexport type TesterVendor = {\n categories: Category[];\n marketsAttended: { name: string; city: string }[];\n productsOrServices: string;\n sellingFrequency: VendorSellingFrequency;\n yearlySellingApprox: number;\n questionary: {\n /** Test Period Commitments */\n uploadStallProfileFirstWeek: boolean; // Q10\n applyToAtLeastOneMarket: boolean; // Q11\n tryVisitorFeatures: boolean; // Q12\n completeFeedbackQuestionnaire: boolean; // Q13\n\n /** Social Media Appearance */\n sendPhotoForSocialMedia?: boolean; // Q14 (Yes / No)\n appearInVideoIntroduction?: boolean; // Q15 (Yes / No)\n socialMediaFeatureReason?: string; // Q16 (optional free text)\n\n /** Open Questions */\n excitementAboutApp?: string; // Q17\n usefulnessExpectations?: string; // Q18\n testingPeriodConcerns?: string; // Q19 (optional)\n };\n};\n\nexport type TesterEvent = {\n /** Organizer background */\n organizedMarketCount: OrganizedMarketCount;\n\n markets: {\n name: string;\n cityOrVenue: string;\n frequency: OrganizerMarketFrequency;\n averageStallCount: number;\n }[];\n\n /** Test Period Participation */\n registerMarketsFirstWeek: boolean;\n inviteAtLeastFiveStallholders: boolean;\n manageApplicationsAndCommunication: boolean;\n completeFinalQuestionnaire: boolean;\n\n /** Promotion Support */\n allowMarketingAppearance: boolean; // Yes / No\n\n /** Open Questions */\n organizerExpectations: string;\n dailyCoordinationNeeds: string;\n interestedInCharityInitiative: boolean;\n};\n\nexport interface TesterFormData {\n businessName: string;\n email: string;\n event?: TesterEvent | null;\n firstName: string;\n lastName: string;\n mobilePhone: string;\n osType: EnumOSPlatform;\n privacyConsent: boolean;\n region: string;\n resourceType: EnumResourceType;\n vendor?: TesterVendor | null;\n}\n\nexport type CreateTesterFormData = CreateFormData<TesterFormData>;\n\nexport interface TesterType extends TesterFormData {\n _id: string;\n active: boolean;\n approved: boolean;\n createdAt: Date;\n updatedAt: Date | null;\n}\n","import { EnumResourceType } from \"src/enums\";\n\nimport { CreateFormData, SocialMediaType } from \"./global\";\n\nexport enum EnumAdShowOn {\n EVENTS_PAGE = \"Events_page\",\n FRONT_PAGE = \"Front_page\",\n PARTNERS_PAGE = \"Partners_page\",\n VENDORS_PAGE = \"Vendors_page\",\n}\n\nexport enum EnumAdStatus {\n ACTIVE = \"Active\",\n PAUSED = \"Paused\",\n EXPIRED = \"Expired\",\n}\n\nexport enum EnumAdType {\n SPONSORED = \"Sponsored\",\n FREE = \"Free\",\n}\n\nexport enum EnumAdStyle {\n BLOOM = \"Bloom\",\n RISE = \"Rise\",\n}\n\nexport interface AdFormData {\n active: boolean;\n adStyle: EnumAdStyle;\n adType: EnumAdType;\n clui?: string | null;\n end: Date; // ISO date string\n resourceCover: string;\n resourceDescription: string;\n resourceId: string;\n resourceLogo?: string | null;\n resourceName: string;\n resourceRegion: string;\n resourceType: EnumResourceType;\n showOn: EnumAdShowOn;\n socialMedia?: SocialMediaType[] | null;\n start?: Date; // ISO date string\n status: EnumAdStatus;\n targetRegion?: string | null;\n}\n\nexport type CreateAdFormData = CreateFormData<AdFormData>;\n\nexport interface AdType extends AdFormData {\n _id: string;\n clicks?: number; // How many times the ad was clicked\n createdAt: Date;\n impressions?: number; // How often the ad was seen\n start: Date; // ISO date string\n updatedAt: Date | null;\n}\n"],"mappings":";AAIO,IAAK,uBAAL,kBAAKA,0BAAL;AACL,EAAAA,sBAAA,SAAM;AACN,EAAAA,sBAAA,kBAAe;AACf,EAAAA,sBAAA,kBAAe;AACf,EAAAA,sBAAA,oBAAiB;AAJP,SAAAA;AAAA,GAAA;AAOL,IAAK,yBAAL,kBAAKC,4BAAL;AACL,EAAAA,wBAAA,kBAAe;AACf,EAAAA,wBAAA,iBAAc;AACd,EAAAA,wBAAA,8BAA2B;AAC3B,EAAAA,wBAAA,gBAAa;AAJH,SAAAA;AAAA,GAAA;AAOL,IAAK,2BAAL,kBAAKC,8BAAL;AACL,EAAAA,0BAAA,YAAS;AACT,EAAAA,0BAAA,iBAAc;AACd,EAAAA,0BAAA,aAAU;AACV,EAAAA,0BAAA,cAAW;AAJD,SAAAA;AAAA,GAAA;;;ACdL,IAAK,eAAL,kBAAKC,kBAAL;AACL,EAAAA,cAAA,iBAAc;AACd,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,mBAAgB;AAChB,EAAAA,cAAA,kBAAe;AAJL,SAAAA;AAAA,GAAA;AAOL,IAAK,eAAL,kBAAKC,kBAAL;AACL,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,aAAU;AAHA,SAAAA;AAAA,GAAA;AAML,IAAK,aAAL,kBAAKC,gBAAL;AACL,EAAAA,YAAA,eAAY;AACZ,EAAAA,YAAA,UAAO;AAFG,SAAAA;AAAA,GAAA;AAKL,IAAK,cAAL,kBAAKC,iBAAL;AACL,EAAAA,aAAA,WAAQ;AACR,EAAAA,aAAA,UAAO;AAFG,SAAAA;AAAA,GAAA;","names":["OrganizedMarketCount","VendorSellingFrequency","OrganizerMarketFrequency","EnumAdShowOn","EnumAdStatus","EnumAdType","EnumAdStyle"]}
@@ -2,7 +2,7 @@ import * as _apollo_client from '@apollo/client';
2
2
  import { EnumResourceType } from '../enums/index.mjs';
3
3
  import { C as ChatType, N as NotificationType, a as NotificationCount, R as ResourceActivityType } from '../resourceActivities-CJRTZROh.mjs';
4
4
  import { E as EventType, b as EventInfoType, c as RelationType, d as ResourceConnectionsType, V as VendorType, e as VendorInfoType, U as UserLicenceType, f as UserType, g as SubscriptionStatusData } from '../global-CLsysATK.mjs';
5
- import { T as TesterType, A as AdType, E as EnumAdStatus, P as PartnerType } from '../ad-Cnah2g5Z.mjs';
5
+ import { T as TesterType, A as AdType, E as EnumAdStatus, P as PartnerType } from '../ad-ClzcYPuT.mjs';
6
6
  import 'react-hook-form';
7
7
 
8
8
  declare const useAdminUpdateResourceType: () => {
@@ -2,7 +2,7 @@ import * as _apollo_client from '@apollo/client';
2
2
  import { EnumResourceType } from '../enums/index.js';
3
3
  import { C as ChatType, N as NotificationType, a as NotificationCount, R as ResourceActivityType } from '../resourceActivities-CVwxvGeC.js';
4
4
  import { E as EventType, b as EventInfoType, c as RelationType, d as ResourceConnectionsType, V as VendorType, e as VendorInfoType, U as UserLicenceType, f as UserType, g as SubscriptionStatusData } from '../global-BYQMdxtO.js';
5
- import { T as TesterType, A as AdType, E as EnumAdStatus, P as PartnerType } from '../ad-DOKicc6e.js';
5
+ import { T as TesterType, A as AdType, E as EnumAdStatus, P as PartnerType } from '../ad-CIaDLRVX.js';
6
6
  import 'react-hook-form';
7
7
 
8
8
  declare const useAdminUpdateResourceType: () => {
@@ -192,11 +192,11 @@ var EnumPartnerType = /* @__PURE__ */ ((EnumPartnerType2) => {
192
192
  EnumPartnerType2["SUPPORTING_PARTNER"] = "Supporting_Partner";
193
193
  return EnumPartnerType2;
194
194
  })(EnumPartnerType || {});
195
- var EnumOSPlatform = /* @__PURE__ */ ((EnumOSPlatform2) => {
196
- EnumOSPlatform2["ANDROID"] = "android";
197
- EnumOSPlatform2["IOS"] = "ios";
198
- EnumOSPlatform2["WEB"] = "web";
199
- return EnumOSPlatform2;
195
+ var EnumOSPlatform = /* @__PURE__ */ ((EnumOSPlatform3) => {
196
+ EnumOSPlatform3["ANDROID"] = "android";
197
+ EnumOSPlatform3["IOS"] = "ios";
198
+ EnumOSPlatform3["WEB"] = "web";
199
+ return EnumOSPlatform3;
200
200
  })(EnumOSPlatform || {});
201
201
  var EnumRegions = /* @__PURE__ */ ((EnumRegions2) => {
202
202
  EnumRegions2["Auckland"] = "Auckland";
@@ -698,16 +698,16 @@ var testerVendorSchema = yup6.object().shape({
698
698
  ).min(1, "At least one market must be provided").required("Markets attended are required"),
699
699
  productsOrServices: yup6.string().trim().required("Products or services description is required"),
700
700
  questionary: yup6.object().shape({
701
- appearInVideoIntroduction: yup6.boolean().required("Appear in video introduction is required"),
701
+ appearInVideoIntroduction: yup6.boolean().optional(),
702
702
  applyToAtLeastOneMarket: yup6.boolean().required("Apply to at least one market commitment is required"),
703
703
  completeFeedbackQuestionnaire: yup6.boolean().required("Complete feedback questionnaire commitment is required"),
704
- excitementAboutApp: yup6.string().trim().required("Excitement about app is required"),
705
- sendPhotoForSocialMedia: yup6.boolean().required("Send photo for social media is required"),
704
+ excitementAboutApp: yup6.string().trim().optional(),
705
+ sendPhotoForSocialMedia: yup6.boolean().optional(),
706
706
  socialMediaFeatureReason: yup6.string().trim().optional(),
707
707
  testingPeriodConcerns: yup6.string().trim().optional(),
708
708
  tryVisitorFeatures: yup6.boolean().required("Try visitor features commitment is required"),
709
709
  uploadStallProfileFirstWeek: yup6.boolean().required("Upload stall profile first week commitment is required"),
710
- usefulnessExpectations: yup6.string().trim().required("Usefulness expectations is required")
710
+ usefulnessExpectations: yup6.string().trim().optional()
711
711
  }),
712
712
  sellingFrequency: yup6.mixed().oneOf(
713
713
  Object.values(VendorSellingFrequency),
@@ -746,7 +746,7 @@ var testerSchema = yup6.object().shape({
746
746
  event: yup6.object().when("resourceType", {
747
747
  is: (resourceType) => resourceType === "event" /* EVENT */,
748
748
  otherwise: (schema) => schema.nullable().optional(),
749
- then: () => testerEventSchema.required("Event information is required")
749
+ then: () => testerEventSchema
750
750
  }),
751
751
  firstName: yup6.string().required("First name is required"),
752
752
  lastName: yup6.string().required("Last name is required"),
@@ -757,7 +757,7 @@ var testerSchema = yup6.object().shape({
757
757
  // skip empty values
758
758
  ),
759
759
  osType: yup6.mixed().oneOf(Object.values(EnumOSPlatform), "Please select Android or iOS").required("OS Type is required"),
760
- privacyConsent: yup6.boolean().oneOf([true], "You must accept the privacy policy").required("Privacy consent is required"),
760
+ privacyConsent: yup6.boolean().oneOf([true], "You must accept the Privacy Policy").required("Privacy consent is required"),
761
761
  region: yup6.string().required("Region is required"),
762
762
  resourceType: yup6.mixed().oneOf(
763
763
  Object.values(EnumResourceType),
@@ -766,7 +766,7 @@ var testerSchema = yup6.object().shape({
766
766
  vendor: yup6.object().when("resourceType", {
767
767
  is: (resourceType) => resourceType === "vendor" /* VENDOR */,
768
768
  otherwise: (schema) => schema.nullable().optional(),
769
- then: () => testerVendorSchema.required("Stallholder information is required")
769
+ then: () => testerVendorSchema
770
770
  })
771
771
  });
772
772
 
@@ -1581,10 +1581,13 @@ function useTesterForm(data) {
1581
1581
  handleSubmit,
1582
1582
  reset,
1583
1583
  setValue,
1584
+ trigger,
1584
1585
  watch
1585
1586
  } = (0, import_react_hook_form11.useForm)({
1586
1587
  defaultValues: defaultValues7,
1587
- resolver: (0, import_yup11.yupResolver)(testerSchema)
1588
+ mode: "onChange",
1589
+ resolver: (0, import_yup11.yupResolver)(testerSchema),
1590
+ reValidateMode: "onChange"
1588
1591
  });
1589
1592
  import_react.default.useEffect(() => {
1590
1593
  if (data) {
@@ -1604,34 +1607,80 @@ function useTesterForm(data) {
1604
1607
  } else {
1605
1608
  reset(defaultValues7);
1606
1609
  }
1607
- }, [data]);
1610
+ }, [data, reset]);
1611
+ const resourceType = watch("resourceType");
1612
+ const vendor = watch("vendor");
1613
+ const event = watch("event");
1614
+ import_react.default.useEffect(() => {
1615
+ if (resourceType === "vendor" /* VENDOR */ && vendor === null) {
1616
+ const emptyVendor = {
1617
+ categories: [],
1618
+ marketsAttended: [],
1619
+ productsOrServices: "",
1620
+ questionary: {
1621
+ applyToAtLeastOneMarket: false,
1622
+ completeFeedbackQuestionnaire: false,
1623
+ tryVisitorFeatures: false,
1624
+ uploadStallProfileFirstWeek: false
1625
+ }
1626
+ };
1627
+ setValue("vendor", emptyVendor, { shouldValidate: true });
1628
+ } else if (resourceType === "event" /* EVENT */ && vendor !== null) {
1629
+ setValue("vendor", null, { shouldValidate: true });
1630
+ }
1631
+ }, [resourceType, vendor, setValue]);
1632
+ import_react.default.useEffect(() => {
1633
+ if (resourceType === "event" /* EVENT */ && event === null) {
1634
+ const emptyEvent = {
1635
+ allowMarketingAppearance: false,
1636
+ completeFinalQuestionnaire: false,
1637
+ dailyCoordinationNeeds: "",
1638
+ interestedInCharityInitiative: false,
1639
+ inviteAtLeastFiveStallholders: false,
1640
+ manageApplicationsAndCommunication: false,
1641
+ markets: [],
1642
+ organizerExpectations: "",
1643
+ registerMarketsFirstWeek: false
1644
+ };
1645
+ setValue("event", emptyEvent, { shouldValidate: true });
1646
+ } else if (resourceType === "vendor" /* VENDOR */ && event !== null) {
1647
+ setValue("event", null, { shouldValidate: true });
1648
+ }
1649
+ }, [resourceType, event, setValue]);
1650
+ import_react.default.useEffect(() => {
1651
+ if (resourceType === "vendor" /* VENDOR */ && vendor !== null) {
1652
+ trigger("vendor");
1653
+ }
1654
+ }, [resourceType, vendor, trigger]);
1655
+ import_react.default.useEffect(() => {
1656
+ if (resourceType === "event" /* EVENT */ && event !== null) {
1657
+ trigger("event");
1658
+ }
1659
+ }, [resourceType, event, trigger]);
1608
1660
  const {
1609
1661
  businessName,
1610
1662
  email,
1611
- event,
1612
1663
  firstName,
1613
1664
  lastName,
1614
1665
  mobilePhone,
1615
1666
  osType,
1616
1667
  privacyConsent,
1617
- region,
1618
- resourceType,
1619
- vendor
1668
+ region
1620
1669
  } = getValues();
1621
1670
  return {
1622
1671
  control,
1623
1672
  fields: {
1624
1673
  businessName,
1625
1674
  email,
1626
- event,
1675
+ event: event || null,
1627
1676
  firstName,
1628
1677
  lastName,
1629
1678
  mobilePhone,
1630
1679
  osType,
1631
1680
  privacyConsent,
1632
1681
  region,
1633
- resourceType,
1634
- vendor
1682
+ resourceType: resourceType || "",
1683
+ vendor: vendor || null
1635
1684
  },
1636
1685
  formState: { errors },
1637
1686
  handleSubmit,