{"version":3,"sources":["lib/translator/dataset/default/login.js","lib/translator/dataset/default/resetPassword.js","lib/translator/dataset/default/changePassword.js","lib/translator/dataset/default/menu.js","lib/translator/dataset/default/signup.js","lib/translator/dataset/default/settings.js","lib/translator/dataset/default/validations.js","lib/translator/dataset/default/404.js","lib/translator/dataset/default/catalogue.js","lib/translator/dataset/default/operations.js","lib/translator/dataset/default/marketing.js","lib/translator/dataset/default/errors.js","lib/translator/dataset/default/listingPage.js","lib/translator/dataset/default/user.js","lib/translator/dataset/default/logistics.js","lib/translator/dataset/default/hr.js","lib/translator/dataset/default/stores.js","lib/translator/dataset/default/customer-support.js","lib/translator/dataset/default/analytics.js","lib/translator/dataset/default/onboarding.js","lib/translator/dataset/default/sellers.js","lib/translator/dataset/default/index.js","lib/translator/dataset/downloaded/index.js","lib/translator/dataset/index.js","lib/translator/index.js","components/Form/index.js","lib/datetime/index.js","lib/auth/index.js","lib/api/index.js","components/DropDown/index.js","components/Popup/index.js","lib/storage/index.js","components/Loader/index.js","lib/commonlyused/index.js","components/Menu/WebsiteLink/index.js","components/Menu/menuItem.js","components/Menu/NavigationDrawer.js","components/Menu/UserActions/index.js","components/Menu/LanguageSelector/index.js","components/Menu/Notification/NotificationBox/index.js","components/Menu/Notification/index.js","containers/LanguageDropDown/index.js","components/Menu/index.js","containers/AuthenticatedPage/index.js","components/Image/index.js","config/app.js","containers/StoreSelector/Form/index.js","containers/StoreSelector/index.js","lib/stateManagement/index.js","components/Form/Inputs/Input.js","components/Form/Inputs/Upload/index.js","pages/catalogue/Products/Form/ImageSlider.js","components/Form/Inputs/ImageUpload/index.js","components/Form/Inputs/Phone/index.js","components/Form/Inputs/Searchable/index.js","components/DateRangePickerWrapper/index.js","components/Form/Inputs/DateRangePicker/index.js","components/Form/Inputs/MultiSelect/SelectValue.js","components/Form/Inputs/MultiSelect/index.js","components/Form/Inputs/MultiTextInput/TagValue.js","components/Form/Inputs/MultiTextInput/index.js","components/Form/Inputs/SelectSearch/index.js","components/Form/Inputs/ProductSearch/index.js","components/Form/Inputs/DateTime/index.js","components/Form/Inputs/CategorySearch/index.js","components/TimePickerWrapper/index.js","components/Form/Inputs/TimePicker/index.js","components/Form/Inputs/RichTextEditorQuill/index.js","components/Form/Inputs/index.js","components/Form/Inputs/BrandSearch/index.js","components/Form/Inputs/CustomerTagSearch/index.js","components/Popup/Dialog/index.js","utils/isApiCallSuccessfull.js","components/Form/Inputs/Toggle/index.js","components/Popup/Popup/index.js","components/ZopSmartHeader/index.js","components/SmartstoreHeader/index.js","containers/PublicPage/index.js","pages/operations/Orders/Details/edit-icon.svg","containers/Context/index.js","pages/settings/DeliveryArea/KMLUpload/trip-upload.svg","components/Form/Inputs/Checkbox/index.js","pages/marketing/Offers/Form/delete.svg","components/Form/Inputs/CheckboxGroup/index.js","pages/catalogue/Categories/delete.svg","components/Form/Inputs/Radio/index.js","lib/debounce/index.js","components/SingleDatePickerWrapper/index.js","components/Form/Inputs/SingleDatePicker/index.js","pages/logistics/TripDetails/vehicle-icon.svg","utils/toTitleCase.js","components/Form/Inputs/MultiLevelCheckbox/index.js","pages/operations/PickersToday/svg/settings-inactive.svg","pages/stores/slots/EditSlots/empty.svg","pages/others/ErrorPage/index.js","components/ErrorBoundary/index.js","pages/settings/Notifications/sms.svg","pages/settings/Notifications/mail.svg","components/Form/Inputs/Select/index.js","components/Popup/Modal/index.js","utils/getFileExtensionFromUrl.js","components/Form/Inputs/Textarea.js","components/Form/cross_gray.svg","components/Image/image-placeholder.svg","containers/StoreSelector/drop-down-arrow.svg","components/Menu/images/customer-image-placeholder.svg","pages/catalogue/Products/ProductUpload/csv-icon.svg","pages/catalogue/Products/ProductUpload/upload-products.svg","pages/catalogue/Categories/categories-empty.svg","pages/operations/Customers/CustomerImport/csv-icon.svg","pages/operations/Customers/CustomerImport/import-customers.svg","pages/operations/Customers/CustomerImport/info-icon.svg","pages/hr/UserShifts/Form/delete.svg","pages/operations/PickersToday/svg/phone.svg","pages/operations/PickersToday/svg/customer-image-placeholder.svg","pages/sellers/userImage.svg","pages/logistics/Vehicles/Form/2-wheeler.svg","pages/logistics/Vehicles/Form/4-wheeler.svg","pages/logistics/Vehicles/Form/drone.svg","pages/logistics/Vehicles/vehicles-empty.svg","components/Layout/SplashScreen/image.png","pages/marketing/Coupons/coupons-empty.svg","pages/marketing/Coupons/download.svg","pages/settings/DeliveryArea/FormComponents/icon-dustbin.svg","pages/logistics/TripDetails/clock-icon.svg","pages/operations/CapacityPlanning/Today/pickup.svg","containers/LazyComponentLoader/index.jsx","components/PhoneAndEmailCard/actions.png","pages/operations/Customers/Details/plus-green.svg","lib/payment/genericCard.svg","components/CourierDispatch/dropdown.svg","pages/operations/Orders/POS/icons/add-button-icon.svg","components/Layout/ProductCollection/image.png","components/Layout/ImageWithText/image.png","components/Layout/Banner/banner.svg","pages/hr/AttendanceSummary/attendance-empty.svg","pages/settings/DeliveryArea/CommonMapComponent/icon-marker-default.svg","pages/settings/Notifications/plus.svg","components/ZopSmartHeader/zopsmart-final-logo.svg","components/ZopSmartHeader/zopsmartlogo.svg","components/SmartstoreHeader/smart-store-logo-easy.svg","components/SmartstoreHeader/enterprise-logo.svg","containers/PublicPage/vehicle.svg","components/Form/helper_icon.svg","components/Form/Inputs/ImageUpload/imageUpload.svg","pages/catalogue/Products/Form/previous.svg","pages/catalogue/Products/Form/next.svg","components/Form/Inputs/Searchable/icon-search.svg","components/DateRangePickerWrapper/calender-icon.svg","components/SingleDatePickerWrapper/calender-icon.svg","components/Form/Inputs/MultiSelect/arrow.svg","components/Form/Inputs/SelectSearch/icon-search.svg","components/DropDown/horizontal-ellipsis.svg","components/DropDown/vertical-ellipsis.svg","components/Menu/WebsiteLink/view-icon.svg","components/Menu/hamburger.svg","components/Menu/Notification/NotificationBox/close-icon.svg","components/Menu/Notification/notification-empty.svg","containers/LanguageDropDown/drop-down-arrow.svg","pages/others/Verify/images/verified.svg","pages/others/Verify/images/notVerified.svg","components/Pagination/icon-left-arrow.svg","components/Pagination/icon-right-arrow.svg","pages/catalogue/Products/Form/icon-dustbin.svg","pages/catalogue/Products/Form/shop.svg","pages/catalogue/Products/Form/edit.svg","pages/catalogue/Products/download.svg","pages/catalogue/Products/products-empty.svg","pages/catalogue/Categories/helpcard1.svg","pages/catalogue/Categories/helpcard2.svg","pages/catalogue/Categories/helpcard3.svg","pages/catalogue/Categories/table-active.svg","pages/catalogue/Categories/tree-view-inactive.svg","pages/catalogue/Categories/TreeView/table-inactive.svg","pages/catalogue/Categories/TreeView/tree-view-active.svg","pages/catalogue/Brands/Form/delete.svg","pages/catalogue/Brands/brands-empty.svg","pages/catalogue/Dashboard/products.svg","pages/catalogue/Dashboard/uploading-images.svg","pages/catalogue/Dashboard/content-marketing.svg","pages/catalogue/Tags/Form/delete.svg","pages/catalogue/Tags/TagsImport/csv-icon.svg","pages/catalogue/Tags/TagsImport/import-customers.svg","pages/catalogue/Tags/TagsImport/info-icon.svg","pages/catalogue/Tags/TagsImport/sample-tags.csv","pages/catalogue/Tags/tags-empty.svg","pages/catalogue/SubstitutionGroups/Form/delete.svg","pages/catalogue/SubstitutionGroups/empty.svg","pages/operations/Customers/Tables/customer-image-placeholder.svg","components/ButtonWithOptions/icon.svg","containers/CustomerWidgets/Email/icon.svg","containers/CustomerWidgets/Call/icon.svg","containers/CustomerWidgets/AddressMap/icon-search.svg","pages/settings/DeliveryArea/Maps/icon-marker.svg","pages/settings/DeliveryArea/Maps/RadialMapComponent/icon-search.svg","containers/CustomerWidgets/AddressMap/pincode/icon-marker.svg","containers/CustomerWidgets/AddressMap/store-marker.svg","containers/CustomerWidgets/Sms/icon.svg","pages/operations/Orders/Details/OrderItemsView/new-tag.png","pages/operations/Orders/Details/OrderItemsView/L-shape.svg","pages/operations/Orders/Table/Views/pickup.svg","pages/operations/Orders/Table/Views/delivery.svg","pages/operations/Orders/Table/Views/offline.svg","pages/operations/Orders/Table/Views/b2b.svg","pages/operations/Orders/Table/no-orders.svg","pages/operations/Orders/Table/rcm.svg","pages/operations/Orders/Table/seo.svg","pages/operations/Orders/Table/new-customer.svg","pages/operations/Orders/OrderUpload/csv-icon.svg","pages/operations/Orders/OrderUpload/upload-products.svg","components/PhoneAndEmailCard/cx-phone-icon.svg","components/PhoneAndEmailCard/cx-email-icon.svg","components/PhoneAndEmailCard/verified.svg","pages/operations/Customers/Details/AddressCard/address-inactive.svg","pages/operations/Customers/Details/AddressCard/delete-icon.svg","pages/operations/Customers/Details/total-orders.svg","pages/operations/Customers/Details/purchase-worth.svg","pages/operations/Customers/Details/joined-on.svg","pages/operations/Customers/Details/last-purchase.svg","pages/operations/Customers/Details/purchase-history.svg","pages/operations/Customers/no-customers.svg","pages/operations/Customers/offers.svg","pages/operations/Customers/offline-marketing.svg","pages/operations/Customers/target-customer.svg","pages/operations/Orders/Details/PlacementDetails/preorder.svg","lib/payment/visa.svg","lib/payment/mastercard.svg","lib/payment/americanExpress.svg","pages/operations/Returns/returns-empty.svg","pages/analytics/Charts/PieChart/analytics_empty.png","pages/operations/Orders/POS/icons/add-icon.svg","pages/operations/Orders/POS/icons/subtract-icon.svg","pages/operations/Orders/POS/icons/delete-icon.svg","components/MapWithPath/map-marker.svg","components/MapWithPath/store-marker.svg","components/MapWithPath/vehicle-marker.svg","components/OrderLog/order-log-empty.svg","pages/hr/UserShifts/customer-image-placeholder.svg","pages/hr/UserShifts/employeeEmpty.svg","pages/operations/Pickers/picker-empty.svg","pages/operations/PickersToday/svg/picker.svg","pages/operations/PickersToday/svg/picker-empty.svg","pages/sellers/Sellers/seller-empty.svg","pages/sellers/Users/user-empty.svg","pages/logistics/VehiclePlanner/vehicles-empty.svg","pages/logistics/VehiclePlanner/Form/4-wheeler.svg","pages/logistics/Trips/no-trips.svg","pages/logistics/TripDetails/ribbon.svg","pages/logistics/TripDetails/call-inactive.svg","pages/logistics/TripDetails/cash-icon.svg","pages/logistics/TripDetails/signature.svg","pages/logistics/TripDetails/shop-icon.svg","pages/logistics/TripPlanner/TripContainer/OrderContainer/address-inactive.svg","pages/logistics/TripPlanner/TripContainer/OrderContainer/address-active.svg","pages/logistics/TripPlanner/TripContainer/clock-image.svg","pages/logistics/TripPlanner/images/expand-plus.svg","pages/logistics/TripPlanner/images/expand-minus.svg","pages/logistics/TripPlanner/OpenTrips/agent-icon.svg","pages/logistics/TripPlanner/no-trips.svg","pages/logistics/ManageRE's/runner_executives.svg","components/Layout/ImageSlideshow/image.png","components/Layout/AppointmentForm/form_place_holder.svg","components/Layout/Testimonial/imgBlank.png","components/Layout/Carousel/imgBlank.png","components/Layout/RichText/imageHorizontal.png","pages/settings/Themes/Layouts/SplashScreen/Mobile2.svg","components/Layout/GridCollection/gridBlank.png","components/Layout/ImageCollection/ImageCollection.png","pages/marketing/Blog/blogs-empty.svg","pages/marketing/Recipe/recipe-empty.svg","pages/marketing/Influencer/influencer-empty.svg","pages/marketing/Pages/pages-empty.svg","pages/marketing/Campaigns/campaigns-empty.svg","pages/marketing/BannerManagement/Forms/delete-icon.svg","pages/marketing/BannerManagement/Forms/info-icon.svg","pages/marketing/BannerManagement/images/banners_empty.svg","pages/marketing/BannerManagement/images/image-placeholder.svg","pages/operations/Dashboard/increase-icon.svg","pages/operations/Dashboard/decrease-icon.svg","pages/operations/Stores/store-empty.svg","pages/operations/PickingQueue/picking-queue.svg","pages/operations/Disputes/dispute-empty.svg","pages/operations/CapacityPlanning/capacityplanner.svg","pages/operations/CapacityPlanning/Today/Arrow-right.svg","pages/operations/CapacityPlanning/Today/Arrow-left.svg","pages/operations/ClickCollectOrders/Views/pickup.svg","pages/operations/ClickCollectOrders/Views/delivery.svg","pages/operations/ClickCollectOrders/Views/offline.svg","pages/operations/ClickCollectOrders/Views/b2b.svg","pages/operations/ClickCollectOrders/click-collect-empty.svg","pages/hr/Designations/designation.svg","pages/hr/Designations/Form/delete.svg","pages/hr/AttendanceSummary/AttendanceTable/previous.png","pages/hr/AttendanceSummary/AttendanceTable/next.png","pages/settings/SocialMedia/add-button.svg","pages/settings/SocialMedia/delete.svg","pages/settings/DeliveryArea/CommonMapComponent/icon-marker-orange.svg","pages/settings/DeliveryArea/CommonMapComponent/icon-marker-seagreen.svg","pages/settings/DeliveryArea/CommonMapComponent/icon-marker-darkmagenta.svg","pages/settings/DeliveryArea/CommonMapComponent/icon-marker-darkvoilet.svg","pages/settings/DeliveryArea/CommonMapComponent/icon-marker-maroon.svg","pages/settings/DeliveryArea/KMLUpload/kml.svg","components/Form/Inputs/Select/dropdown arrow.svg","pages/settings/Themes/cx-delete-icon.svg","pages/settings/Themes/announcementBar-close-icon.svg","components/Layout/Highlights/highlight.png","pages/catalogue/Categories/CategorySequencing/Tag-icon.svg","pages/catalogue/Categories/CategorySequencing/Link-icon.svg","pages/settings/StoreConfiguration/empty.svg","pages/settings/MobileApps/tooltip.svg","pages/settings/RackManagement/Form/rackEmpty.svg","pages/settings/SearchConfigurations/empty.svg","pages/settings/Communication/email.png","pages/settings/CustomerTags/tags-empty.svg","pages/others/LeaveManagement/cancelledLeave.svg","pages/others/LeaveManagement/teamLeave.svg","pages/others/AccountBalance/transactionEmptyState.svg","pages/others/Leaves/my-leaves-empty.svg","pages/others/LeaveSummary/customer-image-placeholder.svg","pages/others/LeaveSummary/left-arrow.svg","pages/others/LeaveSummary/right-arrow.svg","pages/others/LeaveSummary/search.svg","pages/settings/OrderPackageConfig/Table/noOrder.svg","components/CourierSupport/dropdown.svg","components/CourierSupport/icon-dustbin.svg","pages/settings/ProductRestrictions/empty.svg","pages/settings/ProductRestrictions/RestrictedProductUpload/csv-icon.svg","pages/settings/ProductRestrictions/RestrictedProductUpload/import-customers.svg","pages/settings/ProductRestrictions/RestrictedProductUpload/sample.csv","pages/settings/Users/UserActivityLogs/Table/logs-empty.svg","pages/others/SignUp/form.js","pages/others/SignUp/index.js","components/Form/icons/HidePassword.jsx","components/Form/icons/ShowPassword.jsx","pages/others/Login/form.js","pages/others/Login/index.js","pages/others/ResetPassword/form.js","pages/others/ResetPassword/index.js","pages/others/Logout/index.js","pages/others/NotDone/index.js","pages/others/MissingPage/index.js","pages/others/Verify/index.js","pages/others/AccountCreated/index.js","pages/others/PaymentResponse/index.js","containers/WithoutMenuPage/index.js","components/EmptyState/index.js","components/Table/Header.js","components/Table/Row.js","components/Table/Cell.js","components/Table/index.js","components/HelpCard/index.js","components/HelpWidget/index.js","components/Pagination/index.js","containers/ListingPage/index.js","containers/ListingPage/listingRouter.js","components/FileUpload/index.js","pages/catalogue/Products/ProductUpload/index.js","pages/catalogue/Products/SearchAndAdd/Form/index.js","pages/catalogue/Products/SearchAndAdd/index.js","components/MetaDataFormFields/index.js","components/Tabs/index.js","containers/StoreSelector/getDefaultStore.js","components/RichEditor/index.js","lib/marketPlace/index.js","pages/catalogue/Products/Form/index.js","pages/catalogue/Products/Filters/index.js","pages/catalogue/Products/index.js","pages/catalogue/Categories/Form/index.js","pages/catalogue/Categories/Filters/index.js","pages/catalogue/Categories/CategoryUpload/index.js","pages/catalogue/Categories/index.js","components/Tree/index.js","pages/catalogue/Categories/TreeView/index.js","pages/catalogue/Brands/Form/index.js","pages/catalogue/Brands/Filters/index.js","pages/catalogue/Brands/index.js","components/Warning/index.js","components/NameValueCard/index.js","pages/catalogue/Dashboard/index.js","pages/catalogue/Tags/Form/index.js","pages/catalogue/Tags/Filters/index.js","pages/catalogue/Tags/ProductLinkingForm/index.js","pages/catalogue/Tags/TagsImport/index.js","pages/catalogue/Tags/index.js","pages/catalogue/SubstitutionGroups/Form/index.js","pages/catalogue/SubstitutionGroups/Filters/index.js","pages/catalogue/SubstitutionGroups/index.js","pages/marketing/analytics/coupon-analytics/analytic-display-widget/area-chart/index.js","pages/marketing/analytics/coupon-analytics/analytic-display-widget/index.js","pages/marketing/analytics/coupon-analytics/analytic-pie-chart/index.js","pages/marketing/analytics/coupon-analytics/analytic-bar-chart/simple-bar-chart.js","pages/marketing/analytics/coupon-analytics/analytic-bar-chart/index.js","pages/marketing/analytics/coupon-analytics/index.js","pages/operations/Customers/Tables/index.js","utils/domainCheck.js","pages/operations/Orders/Table/Filters/index.js","components/ButtonWithOptions/index.js","containers/CustomerWidgets/Email/index.js","containers/CustomerWidgets/Call/index.js","components/GoogleMaps/index.js","pages/settings/DeliveryArea/Maps/RadialMapComponent/index.js","containers/CustomerWidgets/AddressMap/pincode/pincode.js","containers/CustomerWidgets/AddressMap/index.js","containers/CustomerWidgets/Address/index.js","containers/CustomerWidgets/Sms/index.js","pages/operations/Orders/Details/InvoiceSummary/index.js","pages/operations/Orders/Details/OrderItemsView/index.js","pages/operations/Orders/Details/OrderInvoice/index.js","pages/operations/Returns/Form/FileForReturn/index.js","pages/operations/Returns/Form/CompletePickupPending/index.js","pages/operations/Orders/Table/Views/tabularView.js","pages/operations/Orders/OrderUpload/index.js","pages/operations/Orders/Table/index.js","pages/customer-support/Dashboard/index.js","components/InfoCard/index.js","components/CustomerDetailsCard/index.js","components/PhoneAndEmailCard/index.js","pages/operations/Customers/Details/AddressCard/MapForm/index.js","pages/operations/Customers/Details/AddressCard/index.js","pages/operations/Customers/Details/CallForm/index.js","pages/operations/Customers/Details/MailForm/index.js","pages/operations/Customers/Details/SmsForm/index.js","pages/operations/Customers/Details/AddEmail/index.js","pages/operations/Customers/Details/AddPhoneNumber/index.js","components/StandaloneSearchBox/index.js","pages/operations/Customers/Details/AddAddress/index.js","pages/operations/Customers/Details/UserTags/index.js","pages/operations/Customers/Details/MetaDataForm/index.js","pages/operations/Customers/Details/index.js","pages/operations/Customers/Tables/Filters/index.js","pages/operations/Customers/CustomerImport/index.js","pages/operations/Customers/index.js","pages/customer-support/Customers/index.js","pages/operations/Orders/Details/PlacementDetails/index.js","pages/operations/Orders/Details/DeliveryDetails/index.js","lib/payment/index.js","pages/operations/Orders/Details/PaymentDetails/index.js","pages/operations/Orders/Details/RefundDetails/index.js","pages/operations/Orders/Details/PackingDetails/index.js","pages/operations/Orders/Details/UploadedFileView/index.js","pages/operations/Orders/Details/MetaDataDetails/index.js","pages/operations/Returns/Form/ReturnResolution/index.js","pages/operations/Returns/Filters/index.js","pages/operations/Returns/index.js","pages/operations/Orders/Details/PdfViewer.js","pages/operations/Orders/Details/index.js","registerSocket.js","pages/customer-support/Orders/index.js","components/CourierDispatch/OtherCourierForm.js","components/CourierDispatch/Table/index.js","components/CourierDispatch/DunzoDetails.js","components/CourierDispatch/index.js","pages/operations/Orders/OrderDispatchForm/index.js","pages/analytics/Charts/LineChart/index.jsx","pages/analytics/Charts/PieChart/index.jsx","pages/analytics/orders-analytics/index.js","pages/analytics/reports/helpers/index.js","pages/analytics/reports/index.js","pages/operations/Orders/index.js","pages/operations/Orders/POS/ProductsTable.js","pages/operations/Orders/POS/InvoiceSummary/index.js","pages/operations/Orders/POS/OrderMetaData/index.js","pages/operations/Orders/POS/Form/index.js","pages/operations/Orders/POS/PhoneNumberForm/index.js","pages/operations/Orders/POS/index.js","components/MapWithPath/MarkerWithInfo.js","components/MapWithPath/index.js","components/OrderLog/index.js","components/SelectStoresSearch/index.js","pages/hr/UserShifts/Form/index.js","pages/hr/UserShifts/Filters/index.js","pages/hr/UserShifts/Form/ResetPassword/index.js","pages/hr/UserShifts/index.js","pages/operations/Pickers/Form/index.js","pages/operations/Pickers/Filters/index.js","pages/operations/Pickers/index.js","pages/operations/PickersToday/ProgressBar/index.js","pages/operations/PickersToday/ActivePickers/index.js","pages/operations/PickersToday/IdlePickers/index.js","pages/operations/PickersToday/TotalPickers/index.js","pages/operations/PickersToday/index.js","pages/sellers/Sellers/Form/index.js","pages/sellers/Sellers/SellersUpload/index.jsx","pages/sellers/Sellers/Filters/index.js","pages/sellers/Sellers/index.js","pages/sellers/Users/Form/index.js","pages/sellers/Users/Filter/index.js","pages/sellers/Users/index.js","pages/logistics/Vehicles/Form/index.js","pages/logistics/Vehicles/Filters/index.js","pages/logistics/Vehicles/index.js","pages/logistics/VehiclePlanner/Filters/index.js","pages/logistics/VehiclePlanner/Context/index.js","pages/logistics/VehiclePlanner/Form/index.js","pages/logistics/VehiclePlanner/VehicleReplaceForm/index.js","pages/logistics/VehiclePlanner/VehicleShift/index.js","pages/logistics/VehiclePlanner/index.js","pages/logistics/VehicleVendor/Form/index.js","pages/logistics/VehicleVendor/Filter/index.js","pages/logistics/VehicleVendor/index.js","pages/logistics/Trips/Filters/index.js","lib/userDetails/index.js","pages/logistics/Trips/TripPaymentsForm/index.js","pages/logistics/Trips/EndTripForm/index.js","pages/logistics/Trips/index.js","pages/logistics/TripDetails/index.js","pages/logistics/TripPlanner/TripContainer/OrderContainer/index.js","pages/logistics/TripPlanner/NotReadyOrders/index.js","pages/logistics/TripPlanner/TripContainer/index.js","pages/logistics/TripPlanner/ExpandingStats/index.js","pages/logistics/TripPlanner/Statistics/index.js","pages/logistics/TripPlanner/OpenTrips/index.js","pages/logistics/TripPlanner/TripSequence/TripSequenceOrders/index.js","pages/logistics/TripPlanner/TripSequence/index.js","pages/logistics/TripPlanner/index.js","pages/logistics/TripPlanner/TableView/index.js","pages/logistics/ManageRE's/index.js","pages/logistics/LogisticsConfig/index.js","components/Layout/ProductCollection/index.js","components/Layout/DualImageGrid/LayoutGreenCard.js","components/Layout/DualImageGrid/LayoutRedCard.js","components/Layout/DualImageGrid/index.js","pages/settings/Themes/constants.js","pages/settings/Themes/layout.js","components/Layout/ImageSlideshow/index.js","pages/settings/Themes/Layouts/ImageSlideShow.jsx","components/Layout/ImageWithText/index.js","pages/settings/Themes/Layouts/ImageWithText.jsx","pages/settings/Themes/Layouts/ProductCollection.jsx","pages/settings/Themes/Layouts/BannerWithText.jsx","pages/settings/Themes/Layouts/BannerWithMultipleButtons.jsx","pages/settings/Themes/Layouts/VideoCarousel.jsx","pages/settings/Themes/Layouts/CategoryCollection.jsx","pages/settings/Themes/Layouts/BrandCollection.jsx","pages/settings/Themes/Layouts/SubCategoryCollection.jsx","components/Layout/DualImageBanner/RedPlaceholderImg.js","components/Layout/DualImageBanner/GreenPlaceholderImg.js","components/Layout/DualImageBanner/index.js","pages/settings/Themes/Layouts/DualImageBanner.jsx","components/Layout/AppointmentForm/index.js","pages/settings/Themes/Layouts/AppointmentForm.jsx","pages/settings/Themes/Layouts/DualImageGrid.jsx","pages/settings/Themes/Layouts/BlogCollection.jsx","components/Layout/Testimonial/LeftArrow.js","components/Layout/Testimonial/RightArrow.js","components/Layout/Testimonial/index.js","pages/settings/Themes/Layouts/TestimonialLayout.jsx","components/Layout/Carousel/LeftArrow.js","components/Layout/Carousel/RightArrow.js","components/Layout/Carousel/index.js","pages/settings/Themes/Layouts/CarouselLayout.jsx","components/Layout/RichText/index.js","pages/settings/Themes/Layouts/RichTextLayout.jsx","pages/settings/Themes/Layouts/SplashScreen/AndriodForm.js","pages/settings/Themes/Layouts/SplashScreen/SplashScreen.jsx","pages/settings/Themes/Layouts/SellerCollection.jsx","components/Layout/GridCollection/index.js","pages/settings/Themes/Layouts/GridCollection.jsx","pages/settings/Themes/Layouts/InfluencerCollection.jsx","components/Layout/Footer/index.jsx","pages/settings/Themes/Layouts/Footer.jsx","components/Layout/ImageCollection/index.js","pages/settings/Themes/Layouts/HelperComponents/LayoutVisibility.jsx","pages/settings/Themes/Layouts/ImageCollection.jsx","pages/settings/Themes/Layouts/getLayout.jsx","pages/settings/Themes/Layouts/Highlights.jsx","pages/marketing/Blog/Form/index.js","pages/marketing/Blog/index.js","pages/marketing/Recipe/Form/index.js","pages/marketing/Recipe/index.js","pages/marketing/Influencer/Form/index.js","pages/marketing/Influencer/index.js","components/SegmentsForm/index.js","pages/marketing/Coupons/Form/index.js","pages/marketing/Coupons/Filters/index.js","pages/marketing/Coupons/index.js","pages/marketing/BulkCoupons/index.js","components/Layout/Banner/index.js","pages/marketing/Pages/Form/index.js","pages/marketing/Pages/index.js","pages/marketing/Campaigns/Form/utils.js","pages/marketing/Campaigns/Form/index.js","pages/marketing/Campaigns/index.js","pages/marketing/Offers/Form/ItemTable.js","pages/marketing/Offers/Form/BANYATP.js","pages/marketing/Offers/Form/BMINXATP.js","pages/marketing/Offers/Form/BANYGYD.js","pages/marketing/Offers/Form/BXATP.js","pages/marketing/Offers/Form/BXGYD.js","pages/marketing/Offers/Form/SF.js","pages/marketing/Offers/Form/SFXGSD.js","pages/marketing/Offers/Form/PWP.js","pages/marketing/Offers/Form/BMIN.js","pages/marketing/Offers/Form/BFXATP.js","pages/marketing/Offers/Form/BMINXGFG.js","pages/marketing/Offers/Form/SFBGSD.js","pages/marketing/Offers/Form/SFEGSD.js","pages/marketing/Offers/Form/index.js","pages/marketing/Offers/Filters/index.js","pages/marketing/Offers/index.js","pages/marketing/BannerManagement/Forms/index.js","pages/marketing/BannerManagement/Filters/index.js","pages/marketing/DraggableListingPage/index.js","pages/marketing/BannerManagement/index.js","pages/marketing/ratingAndReviews/FilledStar.jsx","pages/marketing/ratingAndReviews/EmptyStar.jsx","pages/marketing/ratingAndReviews/ratingStatus/index.js","pages/marketing/ratingAndReviews/LeftArrow.jsx","pages/marketing/ratingAndReviews/NoRating.jsx","pages/marketing/ratingAndReviews/ApproveIcon.jsx","pages/marketing/ratingAndReviews/DisapproveIcon.jsx","pages/marketing/ratingAndReviews/PendingStatus.jsx","pages/marketing/ratingAndReviews/index.js","pages/operations/Dashboard/statsTable.js","pages/operations/Dashboard/slotOrdertable.js","pages/operations/Dashboard/marketPlaceProdStats.js","pages/operations/Dashboard/index.js","pages/operations/Stores/location.jsx","pages/operations/Stores/Form/index.js","pages/operations/Stores/Filters/index.js","pages/operations/Stores/index.js","pages/operations/PickingQueue/utils.js","pages/operations/PickingQueue/index.js","pages/operations/Disputes/Form/index.js","pages/operations/Disputes/Filters/index.js","pages/operations/Disputes/index.js","pages/operations/Disputes/FileDispute/index.js","pages/stores/slots/StoreSlotConfigure/Form/index.js","pages/stores/slots/StoreSlotConfigTable/index.js","pages/operations/Orders/RegisterPayments/index.js","pages/operations/Orders/EditPackedOrder/ItemsView/index.js","pages/operations/Orders/EditPackedOrder/EditPackedOrder.js","pages/operations/CapacityPlanning/Form/index.js","pages/operations/CapacityPlanning/Filters/index.js","pages/operations/CapacityPlanning/index.js","pages/operations/CapacityPlanning/Today/index.js","pages/operations/SlotCharges/index.js","pages/operations/Orders/Details/AddPackageView/index.js","pages/settings/OrderPackageConfig/Table/CreateNewPackageForm.js/index.js","pages/operations/Orders/PackOrder/CreatePackage.js","pages/operations/Orders/PackOrder/index.js","pages/operations/ClickCollectOrders/Filters/index.js","pages/operations/ClickCollectOrders/RegisterPayments/index.js","pages/operations/ClickCollectOrders/Views/tabularView.js","pages/operations/ClickCollectOrders/index.jsx","pages/hr/Designations/Form/index.js","pages/hr/Designations/Filters/index.js","pages/hr/Designations/index.js","pages/hr/AttendanceSummary/Filters/index.js","pages/hr/AttendanceSummary/AttendanceTable/index.js","pages/hr/AttendanceSummary/index.js","pages/settings/BasicInformation/form.js","pages/settings/BasicInformation/index.js","pages/settings/Analytics/form.js","pages/settings/Analytics/index.js","pages/settings/SocialMedia/form.js","pages/settings/SocialMedia/index.js","pages/settings/DeliveryArea/FormComponents/ActionButtons/index.js","pages/settings/DeliveryArea/FormComponents/index.js","pages/settings/DeliveryArea/FormComponents/Pincode/index.js","pages/settings/DeliveryArea/FormComponents/Radial/index.js","pages/settings/DeliveryArea/FormComponents/Polygon/index.js","pages/settings/DeliveryArea/FormComponents/Apartment/index.js","pages/settings/DeliveryArea/CommonMapComponent/index.js","pages/settings/DeliveryArea/AddDeliveryArea/index.js","pages/settings/DeliveryArea/KMLUpload/index.js","pages/settings/DeliveryArea/index.js","pages/settings/Themes/change.js","pages/settings/Themes/AnnouncementBar.js","pages/settings/Themes/customize.js","components/Layout/SplashScreen/index.js","components/Layout/Highlights/index.js","pages/catalogue/Categories/CategorySequencing/AddForm/index.js","pages/catalogue/Categories/CategorySequencing/index.js","pages/settings/Themes/index.js","pages/settings/Extensions/Form/index.js","pages/settings/Extensions/ExtensionDetailsForms/InstoreSettings/form.js","pages/settings/Extensions/ExtensionDetailsForms/InstoreSettings/index.js","pages/settings/Extensions/ExtensionDetailsForms/AnalyticsForm/index.js","pages/settings/Extensions/ExtensionDetailsForms/TawkChatSetting/index.js","pages/settings/Extensions/ExtensionDetailsForms/EntityMetaData/index.js","pages/settings/Extensions/ExtensionDetailsForms/LanguageConfig/index.js","pages/settings/Extensions/ExtensionDetailsForms/PasswordPolicySupport/index.jsx","pages/settings/Extensions/ExtensionDetailsForms/index.js","pages/settings/Extensions/Tables/desktopView.js","pages/settings/Extensions/index.js","pages/settings/StoreConfiguration/Form/index.js","pages/settings/StoreConfiguration/StoreConfigForm/index.js","pages/settings/StoreConfiguration/index.js","pages/settings/Users/Table/InviteForm/index.js","pages/settings/Users/Table/index.js","pages/settings/Users/Permissions/StyledSelect/index.js","pages/settings/Users/Permissions/Form/index.js","pages/settings/Users/Permissions/index.js","pages/settings/Users/index.js","pages/settings/MobileApps/form.js","pages/settings/MobileApps/index.js","components/Send/index.js","pages/settings/Notifications/Email/index.js","pages/settings/Notifications/Phone/index.js","pages/settings/Notifications/form.js","pages/settings/Notifications/index.js","pages/settings/PaymentConfiguration/Default/BankForm/index.js","pages/settings/PaymentConfiguration/Default/PaymentGatewayForm/index.js","pages/settings/PaymentConfiguration/Default/index.js","pages/settings/PaymentConfiguration/Custom/PaymentGatewayConfiguration/index.js","pages/settings/PaymentConfiguration/Custom/RateForm/index.js","pages/settings/PaymentConfiguration/Custom/index.js","pages/settings/PaymentConfiguration/index.js","pages/settings/SEO/SEOSetting/index.js","pages/settings/SEO/index.js","pages/settings/RackManagement/AddRackForm/index.js","pages/settings/RackManagement/Form/index.js","pages/settings/RackManagement/index.js","components/Loader3Dots/index.js","pages/settings/SearchConfigurations/Form/index.js","pages/settings/SearchConfigurations/ListingComponent.js","pages/settings/SearchConfigurations/index.js","pages/settings/Communication/ProviderConfiguration.js","pages/settings/Communication/form.js","pages/settings/Communication/index.js","pages/settings/CustomerTags/Table/Form/index.js","pages/settings/CustomerTags/Table/Filter/index.js","pages/settings/CustomerTags/Table/index.js","pages/settings/CustomerTags/index.js","pages/settings/PickingConfiguration/index.js","pages/settings/WalletConfiguration/index.jsx","components/DetailsCard/index.js","pages/others/LeaveManagement/index.js","pages/others/LeaveManagement/CancelableLeaves/index.js","pages/others/ChangePassword/form.js","pages/others/ChangePassword/index.js","pages/others/AccountBalance/rechargeWidget.js","pages/others/AccountBalance/index.js","pages/others/Leaves/Form/index.js","pages/others/Leaves/Filters/index.js","pages/others/Leaves/index.js","components/BigCalendar/index.js","pages/others/LeaveSummary/index.js","pages/settings/Extensions/RefferalManagement/form.js","pages/settings/Extensions/RefferalManagement/index.js","pages/settings/Extensions/GoogleMerchantCenter/form.js","pages/settings/Extensions/GoogleMerchantCenter/index.js","pages/catalogue/Products/ProductVariantSupport/form.js","pages/catalogue/Products/ProductVariantSupport/index.js","pages/stores/slots/EditSlots/Form/index.js","pages/settings/Extensions/ExtensionDetailsForms/Slots/index.js","pages/stores/slots/EditSlots/index.js","pages/settings/OrderManagement/Form/index.js","pages/settings/OrderManagement/index.js","pages/settings/IntegrationSettings/Form/index.js","pages/settings/IntegrationSettings/index.js","pages/settings/OrderPackageConfig/Table/Views/tabularView.js","pages/settings/OrderPackageConfig/Table/index.js","pages/settings/OrderPackageConfig/index.js","components/CourierSupport/ProviderConfiguration.js","components/CourierSupport/index.js","pages/settings/CourierSupportForm/index.js","pages/settings/ProductRestrictions/Form/index.js","pages/settings/ProductRestrictions/RestrictedProductUpload/index.js","pages/settings/ProductRestrictions/index.js","pages/settings/Users/UserActivityLogs/Table/userActivityConstants.js","pages/settings/Users/UserActivityLogs/Filters/index.js","pages/settings/Users/UserActivityLogs/Table/index.js","utils/objectDiff.js","pages/settings/Users/UserActivityLogs/index.js","containers/App/router.js","lib/polyfills/index.js","lib/internalDashboard/internalDashboard.js","containers/App/App.js","webpack:///./src/index.js?b635"],"names":["data","cop","PENDING","PICKING","CHECKING","PICKED","CHECKED","PACKED","DISPATCHED","COMPLETED","CANCELLED","RETURNED","CALL_TO_SUBSTITUTE","SUBSTITUTION_DISABLED","SUBSTITUTION_ENABLED","asapDurationStartText","asapDurationEndText","delivery","pickup","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday","allStrings","Object","assign","loginStrings","resetPasswordStrings","validationStrings","signupStrings","error404Strings","settingsStrings","changePasswordStrings","menuStrings","catalogueStrings","operationsStrings","marketingStrings","listingPageStrings","userStrings","errorStrings","logisticsStrings","hrStrings","storeStrings","csStrings","analytics","onboarding","sellersString","defaultLangs","en","language","strings","keys","downloadedLanguages","map","isoCode","downloadedLanguage","getMessage","key","params","arguments","length","undefined","Boolean","lang","getLocale","msg","dataset","MessageFormat","compile","setLocale","_ref","window","localStorage","setItem","getItem","getSupportedLanguages","VALIDATION_TYPES","ALWAYS","ONCHANGE","ONBLUR","ONSUBMIT","generateStateMappers","formatValue","value","formatChange","defaultValue","validationType","stateKeys","loseEmphasisOnFill","showErrors","this","validationScenarios","validateOnChange","validateOnBlur","validateOnSubmit","emphasize","getState","Array","isArray","onChange","error","updateState","updateStateRecursively","call","onValidation","registerValidation","onBlur","BaseForm","React","Component","constructor","props","super","resetForm","setState","touched","blurred","validations","pressedSubmitWithCurrentData","submitting","state","values","cloneMutables","_submitHandler","bind","beforeSubmit","buttons","SubmitButton","createElement","className","type","children","disabled","CancelButton","onClick","onCancel","ClearButton","onClear","components","Form","onSubmit","noValidate","getNestedState","registerAsUserInput","isFormValid","validationObj","valid","name","validation","reduce","acc","e","preventDefault","componentWillReceiveProps","newProps","render","HelperText","show","setShow","useState","wrapperRef","useRef","useEffect","handleClickOutside","event","current","contains","target","document","addEventListener","removeEventListener","ref","src","helperIcon","alt","helperTextMsg","wrapInput","_ref2","_props$label$trim","_props$label","label","trim","htmlFor","readOnly","required","secondaryLabel","Input","_Input","Upload","_Upload","Select","_Select","ImageUpload","_ImageUpload","Textarea","_Textarea","Phone","_Phone","Checkbox","_Checkbox","Radio","_Radio","Searchable","_Searchable","CheckboxGroup","_CheckboxGroup","DateRangePicker","_DateRangePicker","SingleDatePicker","_SingleDatePicker","MultiSelect","_MultiLevelCheckbox","_MultiSelect","MultiTextInput","_MultiTextInput","Toggle","_Toggle","SelectSearch","_SelectSearch","ProductSearch","_ProductSearch","BrandSearch","_BrandSearch","CustomerTagSearch","_CustomerTagSearch","DateTime","_DateTime","CategorySearch","_CategorySearch","TimePicker","_TimePicker","RichTextEditorQuill","_RichTextEditorQuill","getPrintableTime","time","dateString","includes","moment","format","utcToLocalTime","t","Date","replace","getTime","offset","getTimezoneOffset","localTimeToUtc","getStandradDateTime","dateTimeConverter","dateTime","newDate","split","concat","getDifferenceInHours","start","end","startTime","endTime","diff","Math","floor","abs","formatSlotTime","date","t1","parts","toTimeString","Number","String","convertToMilitaryTime","meridian","slotTimes","timeStrings","i","push","timeRangeDisable","formatDate","suffix","formatTime","getOrdinal","n","s","v","getPrintableDay","getDay","getMonthStartEnd","getDateInSQL","getFullYear","getMonth","month","day","getDate","year","join","getPrevMonth","setMonth","getNextMonth","getDaysOfWeek","full","text","getMinutes","his","a","formatIsoTime","formatIsoDate","getRemainingTime","utc","isBefore","add","duration","console","getTimes","times","saveSession","sessionData","savePermissions","endpointPermissions","JSON","stringify","hasPermissions","service","endpoint","method","permissions","parse","getAllPermissions","toUpperCase","formatted","permission","url","formattedPermissions","getPermissions","endpoints","allowedMethods","getPermissionObject","getAuthToken","getSession","organization","user","getStores","sortStores","storesArr","sort","b","setStores","stores","clearSession","organizationName","clear","isLoggedIn","isExtensionEnabled","slugOrId","enabled","slug","extension","findIndex","ext","id","disableExtension","filter","enableExtension","isEnterprise","userInfo","isERCOrComplete","_getSession","userObject","isOwner","roles","designation","DFR_COMPLETE","some","role","canAccessReports","_getPermissionObject","metaData","reportAccessMap","_permissions$reportAc","modifyMenuForEnterprise","menu","_menu$operations","_menu$user","newMenu","_menu$analytics","_newMenu$analytics","marketing","item","operations","slugs","MultiUserSupport","MultiStoreSupport","InStoreProcessing","DeliveryAreaSupport","Analytics","TawkToLiveChat","Seo","OnlinePaymentSupport","EntityMetaData","DeliverySlots","LogisticsSupport","CustomerTags","StockOverride","SearchOverride","ShipRocket","RefferalManagement","GoogleMerchantCenter","MultiVariantSupport","ProductRestrictions","UserLogs","firstSubmenu","modifyEnterprisePermissions","extensions","configureableExtensions","getConfigureableExtensions","index","indexOf","domain","getExtensionDetails","saveEntityMetaData","entityMetaDataConfig","getEntityMetaData","extensionRoutes","MultipleAndPartialOrderPicking","Wallet","ReferralManagement","ServiceHostMapping","GO_HOST","isInternal","get","getParams","api","organizationId","URL","location","searchParams","signal","headers","_params","FormData","options","querystring","encodeURIComponent","body","sendAccessToken","accessToken","guid","set","axios","toLowerCase","validateStatus","status","checkHttpResponseCode","responseType","cancelToken","then","response","Promise","resolve","catch","isCancel","reject","message","code","API","CancelToken","source","token","post","put","delete","cancel","DropDown","expanded","toggle","handleClick","hide","dropdownRef","toggleRef","classList","componentDidMount","componentWillUnmount","_this$props","dropdownHeading","icon","node","DropDownItem","additionalClassName","ICONS","HELLIP","VELLIP","unset","removeItem","Loader","radiusMapping","sm","md","lg","size","r","width","height","version","cx","cy","sortSlotTypesAvailability","slots","slot1","slot2","interval","sortSlotsAvailability","asapSlots","slot","stdSlots","sortSlots","sortAsapSlots","sortStandardSlots","getDisplaySlot","toISOString","getAsapDuration","momentStartTime","momentEndTime","getDisplayAddress","givenAddress","sequence","address","pin","pincode","toString","padStart","endAddress","landmark","city","seqAddress","forEach","field","camelToReading","word","str","toTitleCase","charAt","substring","storeSelection","store","getProductName","product","fullName","brand","getProductImage","images","variant","variants","getSortedOrderStatus","sortedStatues","getSelectOrderStatus","sortOrderStatus","statuses","allStatuses","hasDuplicates","array","Set","getCountryList","getLanguages","roleMapping","redirect","getStepValue","num","decimalDigits","decimalPlaces","pow","isAllRulesValid","rules","requiredFields","itemDiscountType","j","isEmpty","every","q","getNestedValues","obj","stateReference","shift","getSingularPluralForm","number","singularForm","pluralForm","truncateToTwoDecimal","_num$toString$match","parseFloat","match","toFixed","convertToISODuration","frequency","Error","parseISODuration","years","months","weeks","days","parseInt","getSiteURL","siteUrl","_siteUrl","protocol","httpsEnabled","WebsiteLink","getSiteUrl","_this$props$frontendU","frontendUrl","componentDidUpdate","prevProps","href","rel","ViewIcon","createSlugFromName","mouseEventListener","receivedElementName","nodeName","hiddenSubmenuUlOffsetHeight","querySelector","offsetHeight","hiddenSubmenuUl","hiddenSubmenu","hoverSubmenuHeight","cloneNode","remove","appendChild","parent","parentElement","MenuItem","getSubmenu","activeText","active","info","subMenu","queryParam","splitText","Link","to","submenu","onMouseEnter","NavigationDrawer","menuIcon","UserActions","enterprise","Redirect","styles","imageUrl","backgroundImage","backgroundSize","style","userMenu","UserInfo","showModal","saveUser","email","emails","userImage","LanguageSelector","changeLanguage","history","pathname","currentLang","option","withRouter","NotificationBox","title","closeIcon","close","Notification","modalClose","stopPropagation","Fragment","Image","notificationImage","eng","emptyArr","availableLangs","savedLangs","config","globalConfig","languages","lng","find","componentWillMount","allSubmenus","querySelectorAll","top","userHoverSubmenu","selectedLanguage","drop","Menu","el","sidebar","activeLi","activeSubMenu","items","hoverSubmenuInfo","subMenuInfo","MENU_KEY","defaultChecked","innerWidth","checked","GIT_TAG","GIT_HASH","StoreSelector","getDefaultStore","storeId","showLanguageDropDown","LanguageDropDown","MenuWithRouter","httpStatusMessages","403","AuthenticatedPage","httpStatus","handleError","paginate","reverse","setApiParam","orgId","defaultStore","basicConfigApi","_response$data","_response$data$basic","basic","newState","reason","redirectToLogin","notifyBugsnag","updateStore","menuProps","storeDependent","ErrorBoundary","showHeader","bordered","placeholder","origin","host","process","REACT_APP_API_HOST","IS_STAGING","ZOPSMART_URL","GOOGLE_MAP_DEFAULT_KEY","GOOGLE_MAPS_URL","WEBSOCKET_URL","REACT_APP_EVENTS_URL","WEBSOCKET_BASE_URL","REACT_APP_INVOICE_EVENT_URL","BUGSNAG_KEY","REACT_APP_BUGSNAG_KEY","ZOPSMART_MAPS_URL","REACT_APP_MAPS_URL","REACT_APP_GIT_HASH","REACT_APP_GIT_TAG","FARO_APP_NAME","REACT_APP_FARO_APP_NAME","FARO_APP_URL","REACT_APP_FARO_APP_URL","StoreSelectorForm","selectedStore","selectedValue","showSelectSearch","setWrapperRef","hideSelectSearch","val","simulateClick","nameKey","valueKey","autoFocus","defaultSelectableOptions","searchByName","makestoreDependentComponent","OriginalComponent","hasMultiStoreSupport","loading","result","orgStores","_stores$","_orgStores$","hasDeliveryHub","hasPicking","hasClickCollect","ReactDOM","createPortal","getElementById","_this","prevState","propertyToChange","pop","nextKey","slice","events","compareValues","x","y","is","RegExp","xkeys","ykeys","sourceValues","cloneDeep","handleChange","handleBlur","runValidation","DomNode","transform","transformValidationHook","_","validity","errors","getValidationObj","inputRef","pattern","prefix","siblings","before","dir","step","min","max","maxLength","onFocus","onMouseUp","onKeyPress","onKeyDown","after","showImagePreviewModal","fileUploading","file","fileBlob","showError","errorMessage","readURL","handleModalClose","confirmFileUpload","image","valueMissing","files","reader","FileReader","onloadend","_this$props$accept","_this$props$accept$sp","_this$props$validatio","_this$props$validatio2","maxFileSize","accept","fileSizeExeeded","invalidFileType","readAsDataURL","uploadInputRef","fileUpload","resolutions","isVideoUpload","videoApi","fileUploadApi","resolutionGroups","createFormData","resolutionGroup","append","resize","_error$message","accessUrl","_response$data$videoU","res","videoUrl","uploadPromises","all","responses","_successResults$0$ima","_successResults$","_successResults$$imag","_successResults$0$ima2","_successResults$2","_successResults$2$ima","_successResults$1$ima","_successResults$3","_successResults$3$ima","successResults","imageUpload","resizedUrls","_value$imageUpload$ur","_value$imageUpload","_ref3","_value$accessUrl","_value$imageUpload2","_this$state","_this$state$file","_this$state$file$type","_this$state2","showCloseIcon","handleRemove","uploadedImageUrl","isVideo","previewBlob","Popup","heading","controls","getFileExtensionFromUrl","defaultProps","ImageSlider","currentIndex","scrollWidth","goToImage","setWidth","resizeWidth","debounce","handleTouchMove","handleTouchEnd","handleTouchStart","touches","clientX","button","sliderContainer","refs","slider","containerOffsetWidth","offsetWidth","containerScrollWidth","previousIcon","onTouchStart","onTouchMove","onTouchEnd","arr","uploading","blob","nextIcon","deriveStateFromProps","handleFileSelection","confirmFileSelection","resetInputRef","clearFileSelection","uploadFiles","triggerValidation","registerChange","initialState","isUploading","parseFile","onerror","prototype","selectedFiles","singleImage","uid","Symbol","selectedFile","oldState","newValues","multiple","objInState","placeholderIcon","isProductCreatePage","_this$org","org","defaultCountryCode","countryCode","updatedLocalOrgData","country","PhoneInput","defaultCountry","displayInitialValueAsLocalNumber","SortableItem","SortableElement","displaySelectedValue","onSelect","SortableList","SortableContainer","searchText","creating","searchUrl","selectSearch","search","onSortEnd","apiHeaders","oldIndex","newIndex","arrayMove","listOption","splice","lastRequest","pressedEnter","isEqual","addNewItem","responseKey","searchkey","paramsDefault","transformRequest","asyncTransform","transformResponse","selectOnEnter","keyCode","searchKey","nextProps","newValue","oldValue","createButton","selectableValues","suggestion","renderListElement","autoComplete","searchIcon","draggable","axis","pressDelay","helperClass","DateRangePickerWrapper","focusedInput","startDate","endDate","displayFormat","transForm","onDatesChange","startDatePlaceholder","endDatePlaceholder","minimumNights","isOutsideRange","openDirection","orientation","matchMedia","matches","onFocusChange","startDateId","endDateId","startDatePlaceholderText","endDatePlaceholderText","customInputIcon","calenderIcon","dateRange","SelectValue","onRemove","crossIcon","fn","selectedValues","expand","dontDisplaySelected","arrowIcon","TagValue","addValue","tags","selectedOption","opt","selectableOptions","searchOptions","lastSearch","suggestionAllowed","selectOptions","selectionKey","getInventoryDetails","renderSearchableList","generateProductsFromVariants","getDetails","includeInventory","currency","symbol","amount","discount","mrp","products","callback","pdt","inventoryData","pdtInventory","stock","unlimitedStock","storeSpecificData","soldByWeight","pdtWithVariants","productWithVariants","getVariantData","withoutDropDown","hasVariants","pdtWithoutVariants","productsWithInventory","handleDateChange","handleTimeChange","dateplaceholder","timePlaceholder","getChain","category","chain","reference","parentCategory","iconStyle","position","right","bottom","display","alignItems","justifyContent","TimePickerWrapper","open","useIcon","getIcon","setOpen","toggleOpen","toggleIcon","path","fontSize","fontStyle","color","lineHeight","transition","viewBox","fill","verticalAlign","d","p-id","showSecond","minuteStep","clearIcon","onOpen","onClose","focusOnOpen","DirectionAttribute","Quill","import","register","AlignClass","BackgroundClass","ColorClass","DirectionClass","FontClass","SizeClass","AlignStyle","BackgroundStyle","ColorStyle","DirectionStyle","FontStyle","SizeStyle","whitelist","quillOptions","toolbar","modules","upload","theme","addValidations","InputValidator","stringsObj","typeMismatch","tooShort","tooLong","rangeOverflow","rangeUnderflow","patternMismatch","stepMismatch","getValidationString","MultiLevelCheckbox","appendElement","customerId","resultingArr","postApi","tagids","tag","dontShowChain","displayName","imgStyled","quill","root","innerHTML","on","quillContents","getContents","appendQuillContent","ops","quillContent","insert","hasOwnProperty","hasFocus","Dialog","handleOk","onOk","information","closeText","okText","PopupModal","ToggleInput","togglelabel","icons","Modal","Header","overflow","eazy","logo","zopsmartLogo","EazyHeader","links","hiddenHeader","enterpriseLogo","PublicPage","subDomain","hostname","Provider","SmartStoreHeader","vehicle","module","exports","Consumer","createContext","inlineLabel","controlled","checkedValues","skin","SKINS","WITH_ICONS","DEFAULT","titleText","BORDERLESS","ONE_PER_LINE","func","wait","immediate","timeout","context","args","later","apply","callNow","clearTimeout","setTimeout","SingleDatePickerWrapper","onDateChange","numberOfMonths","enableToday","allowAllDates","customIsOutsideRange","focused","isInclusivelyBeforeDay","txt","substr","renderCheckboxes","depth","getInitialState","data-depth","thisValue","computeChecked","changedValue","toggleAll","updatedObj","goBack","generateConfigs","releaseStage","configurations","apiKey","autoNotify","autoCaptureSessions","maxEvents","hash","beforeSend","report","appVersion","bugsnagClient","bugsnag","use","bugsnagReact","notify","DefaultErrorBoundary","hasError","listen","action","componentDidCatch","ErrorPage","getPlugin","errorBoundaryWrapper","FallbackComponent","handleDisabledOptions","handleOptionDisable","validationObject","checkESC","checkClick","which","modalRef","focus","tabIndex","LazyComponent","dynamicImport","lazy","preLoad","Suspense","fallback","Signup","phone","formError","handleSignup","formData","countryError","SignUp","SignUpForm","HidePassword","xmlns","stroke","ShowPassword","LoginForm","handleShowPassword","showPassword","username","password","remember","handleLogin","autoFillAction","handleRedirect","websiteConfigApi","websitemeApi","_websiteConfigRespons","_websiteConfigRespons2","_websitemeApiResponse","websiteConfigResponse","websitemeApiResponse","website","googleApisKey","roleObject","mapping","roleRedirect","industry","from","autoFill","PasswordIcon","Login","ResetPasswordForm","handleReset","fetch","json","onSuccess","ResetPassword","success","onReset","Logout","NotDone","MissingPage","Verify","setLoading","setError","setSubmitting","setFormError","formSuccess","setFormSuccess","verifyApi","decodeURIComponent","_error$message$split$","_error$message$split","verifyImgSrc","NotVerifiedImg","VerifiedImage","verifyImgAlt","verifyEmailText","handleResendClick","_error$message2","AccountCreated","PaymentResponse","verified","verificationData","queryString","router","query","keyVal","verifyPayment","onlinepayment","WithoutMenuPage","EmptyState","views","additionalViews","submessage","View","Row","header","textAlign","Cell","alignmentClass","align","data-abbreviation","abbreviation","Table","tableDynamic","tableRef","HelpCard","onAction","HelpWidget","noop","Pagination","total","isInteger","pageNumbers","spliced","leftDisabled","rightDisabled","clickHandler","ellipsis","pageNumberNotEditable","visitPageDirectly","createClickHandler","leftArrow","isFinite","rightArrow","TABLE_ACTIONS","ADD","EDIT","VIEW","DELETE","FILTER","REFRESH","UPDATE","SET_API_PARAMS","SUCCESS_STATUS_CODE","NullComponent","ListingPage","keystr","apiParams","paging","filters","viewItems","shown","showFiltersOnLoad","loaders","updatingApiParams","form","rowIndex","deleteDialog","errorDialog","successDialog","firstLoadDone","primaryKey","_transformResponse","_transformSubmit","transformSubmit","updateView","_showDataLoader","_hideDataLoader","changePage","performAction","_showForm","_hideForm","_showFilters","_hideFilters","_toggleFilters","createResource","modifyResource","getResource","applyFilters","clearFilters","confirmDelete","throwError","_showDeleteDialog","_hideDeleteDialog","_showErrorDialog","_hideErrorDialog","_showSuccesDialog","updateApiUrl","_getRow","noId","len","matched","component","overwriteWithApiParams","filterBeforeAdding","updatedItems","addNewItemToLast","unshift","updatedPaging","count","row","updatedRow","_updatedRow$id","_updatedRow","afterSubmit","deleteResource","overWriteDeleteParams","fetchTableData","sethubId","hubId","limit","transformResponseAsync","page","transformedFilters","updates","deleteRow","tableProperties","actions","dontSavePagination","configs","transformFilter","updateApiParams","shouldUpdate","newView","newData","view","filtersApplied","emptyStateShown","showEmptyState","emptyStateProps","emptyState","helpItems","instructions","instruction","description","totalPages","ceil","viewData","addToTable","HeaderActions","headerActions","Filters","allowDelete","WrapperComponent","onUpdateStore","forceShow","customLoading","editHeading","getEditHeading","addHeading","getAddHeading","modalClassName","getModalClassName","onDelete","additionalViewsBottom","FormContainer","notFoundError","resourceId","handleSubmit","handleDelete","hideErrorDialog","dataToSubmit","ListingPageWithRoutes","_this$props$api","secondaryActions","formApiUrl","Details","secondaryOptions","isPrevCourierOrders","FileUpload","uploadError","fileUploaded","readFile","handleFileUpload","cancleFileUpload","_this$props2","_this$props4","uploadUrl","_this$props3","_this$props5","userId","uploadKey","onload","rows","newHeaders","newRows","flatMap","_this$props6","_this$props6$storeIds","storeIds","transformedCsv","transformedFile","File","uploadFile","readAsText","successCallback","errorCallback","uploadButtonText","cancelText","disableUpload","defaultMessage","completionMessage","progressMessage","downloadCsv","uploadType","csv","hiddenElement","encodeURI","download","click","ProductUpload","getSampleCsv","bulkUploadType","tax","hideAddButton","isSellerSection","uploadIcon","csvIcon","ProductFiltersForm","handleGetIndustry","indusrtyNames","handleGetTagId","getTagApi","tagApiResponse","tagArr","tagNumber","tagId","_faro$api","faro","pushError","showErrorDialog","handleSelectChange","selectedIndustry","closeDialogs","isMarketPlaceEntensionEnabled","getIndustryApi","_industryApiResponse$","industryApiResponse","availableIndustryProvider","_faro$api2","SearchAndAdd","getAPIUrl","urlParams","sellerId","updateProductsList","permissibleSellers","productsIdResponse","productIdObj","productId","sellerProductRequestIds","productExist","apiUrl","helmetTitle","sellerID","variantWithImages","varImage","link","commonGenerateStateMappers","stateVar","MetaDataFormFields","metaDataWithType","noContainer","preserveSequence","tempArr","entries","details","Comp","typeMeta","allowedValue","members","mem","subKey","Tabs","activeTab","default","currentTab","RichEditor","showPlaceholder","disablePlugins","useSearch","spellcheck","enter","defaultMode","toolbarAdaptive","toolbarSticky","showCharsCounter","showWordsCounter","showXPathInStatusbar","minHeight","newContent","JoditEditor","importText","isMarketPlaceSeller","isSellerAdmin","isMarketplaceEnabled","isMarketPlaceOwner","_getSession2","FREQUENCY_TYPE","fetchClientItemLabel","ProductForm","pendingActionAddProduct","onSubmitRequest","storeData","statusKey","_storeData$","_storeData$2","_getSession$organizat","_getSession$organizat2","_values$metaData","_values$variants$","isMinimumProfitMargin","requestId","URLSearchParams","isAddProductPage","isApproved","currentRequestStatus","apiMethod","sellingPrice","sellerDiscount","shortDescription","isOwnerCreatingRequest","showReviewSubmissionDialog","requestSubmissionMessage","apiError","finally","handlePermissableSellerSubmit","permissableSellers","addedSellers","permissablePayload","seller","existingSellerIDs","has","permissableApi","permissibleProductSeller","handleUpdateMetaData","metaValue","metaResponse","newMetaData","mt","updateItemData","updateItem","dataItem","keyName","stateKeyName","handleVariantName","variantFields","concatinatedName","variantName","handleCancelEditVariant","selectedVariant","cancelEditVariantName","editVariant","handleEditVariantName","editVariantFields","productVariantProperties","productProperties","variantProperties","variantId","propertyId","valueCopy","properties","handleVariantFieldChange","handleEditVariantFieldChange","getItemData","_this$props$value","_this$props$value$bra","_this$props$value2","_this$props$value2$ca","_this$props$value2$ca2","_this$props$value3","_this$props$value3$ta","_this$props$value3$ta2","brandName","categoryName","categories","tagName","hasBrands","brands","enable","_response$data2","_response$data2$item$","dataList","fetchThreshold","async","_response$data3","getInventoryAlert","threshold","fetchAllThresholds","productIds","valueFromProps","thresholds","thresholdsByVariantId","updatedVariants","getRefactorPermissableSellers","getPermissableSellers","_response$data4","fetchSellerRequestData","request","imagesArr","_prevState$values","_prevState$values$met","storeKey","sellerName","handleSellingAndProfitMargin","fetchSubscriptionData","_variants$","resp","_resp$data$productSub","formattedTime","productSubscription","updatedValues","purchaseFrequencyData","isRecurringProduct","handleEditBtnClick","_this$state$values","_this$state$values$va","oldVariant","selectedVariantObj","variantNameArray","formattedName","ele","handleSellingPrice","variantIndex","newVariant","sellingMargin","dealerPrice","profitMargin","minimumProfitMargin","variantToggle","allStoresLoaded","taxes","addVariant","removeVariant","showProductDeleteConfirmation","hideProductDeleteConfirmation","showVariantDeleteConfirmation","hideVariantDeleteConfirmation","deleteProduct","getInventoryData","onSelectStore","hideApiErrorDialog","onToggleChange","toggleIsRecurringProduct","showAllVariantsDeleteConfirmation","hideAllVariantsDeleteConfirmation","removeAllVariant","isInputEditable","isProductSubscriptionEnabled","_newState$values$vari","_newState$values$vari2","_newState$values$vari3","deleteAllVariantsDialogShown","deleteProductDialogShown","deleteVariantDialogShown","changeParamsDataType","param","prev","_modifiedData$variant3","brandsEnabled","entityMetaDataEnabled","marginMetadata","modifiedData","primaryCategoryId","categoryIds","primaryCategory","secondaryCategories","_modifiedData$variant","_modifiedData$variant2","brandId","tagIds","handlingDays","bulkOrderThreshold","madeUp","onSubmitOwnerRequest","_storeData$3","_storeData$4","_getSession2$organiza","_getSession2$organiza2","_values$metaData2","_values$variants$2","statusMap","Approve","Reject","putApi","rejectionReason","submitApprovalStatus","newParams","providersLoading","showRejectReasonForm","inventoryApi","hasTags","updateInventoryAlert","_this$props$options","masterCatelogue","clientItemId","createdAt","_response$data5","_response$data5$produ","warn","_params2","_params3","_response$data6","_response$data7","_response$data7$produ","updatePromises","matchingVariant","_response$data8","_response$data8$produ","_response$data8$produ2","foundVariant","_params4","_params5","_params6","_response$data9","_response$data10","_response$data10$prod","_response$data11","_response$data11$prod","productSubscriptionApi","_response$data12","_response$data12$prod","_response$data$produc","_response$data$produc2","_response$data13","_response$data13$prod","_response$data$produc3","_response$data$produc4","_params7","_params8","_params9","_response$data14","_response$data15","_response$data15$prod","_variants$2","isValid","_e$nativeEvent","_e$nativeEvent$submit","nativeEvent","submitter","_e$nativeEvent2","_e$nativeEvent2$submi","multipleStores","loadingStores","failedLoadingStores","_this$props$options2","_defaultStore$","hasSelfCheckout","_this$props$options3","_defaultStore$2","entityMetaData","getProductMetaData","loadingProductMetaData","metaDataResponse","_values$variants","productMetaData","variantMetaData","_metaDataResponse$pro","_metaDataResponse$pro2","productMetaDataWithType","marketPlaceVariantMetadata","marketPlaceProductMetadata","ids","_response$data16","_response$data17","_variant$storeSpecifi","_variant$storeSpecifi2","_this$props$options4","_response$data18","_response$data18$inve","_response$data19","_response$data19$inve","taxArray","inventory","_response$data20","_response$data20$coun","_response$data20$coun2","tabs","otherDetails","selected","_this$state5","_this$state$values3","_this$state6","_this$productMetaData","supportVariants","booleanStock","stockStrategy","STOCK_STRATEGIES","BOOLEAN","hasInstoreProcessing","inStoreProcessing","hasSoldByWeight","preOrderSupport","bulkOrderSuppport","namePattern","variantPattern","enabledSoldByWeight","checkEditStatus","_this$props$value4","_this$props2$value","_this$props2$value$va","clientItemLabel","checkLowStockEditStatus","_this$props3$value","_this$props4$value","_this$props4$value$va","getVariantInputFields","variantFieldsLength","currentValue","getEditVariantInputs","_this$state3","_this$state4","getProductRequestStatus","showApproveBtn","showRejectBtn","Helmet","_this$state$values2","_response$data21","_response$data22","_this$productMetaData2","_this$productMetaData3","_key","editIcon","storeIndex","_this$state$values$va2","_this$state$values$va3","_this$state$values$va4","_this$state$values$va5","_this$state$values$va6","_this$state$values$va7","_this$state$values$va8","_this$state$values$va9","_this$state$values$va10","_this$state$values$va11","_this$state7","_this$state7$taxes","shopIcon","deleteIcon","NUMERIC","isSeller","emptyIcon","showConfig","API_HEADER","restrictAutherizationToken","requestStatusTabs","handleSelectedSeller","selectedSellerData","getAddProductOptions","dropDown","toggleShowSellerSelectionForm","openModal","showDownloadOptions","showDownloadComplete","showSellerSelectionForm","allSelected","storeOptions","hideModal","showDownloadModal","hideDownloadModal","csvDownload","handleSelectAll","currentState","_this$state$storeOpti","downloadType","_this$state2$values","isSellerCatalogue","downloadIcon","getEditPath","pId","handleRequestApproval","textAlignment","sellerColumn","statusColumn","merchandiseColumn","merchandise","productStoreLink","Products","_window$localStorage","fetchTableDataOnStatus","tab","queryParams","changeTab","requestTab","reqId","cb","productRequestTabStatus","variantsEnabled","storesEnabled","tagsEnabled","soldByWeightEnabled","preOrderSupportEnabled","bulkOrderEnabled","requests","modifiedProduct","_product$metaData","_product$metaData2","barcodes","ProductFilters","slugCategory","slugBrand","sorting","CategoryForm","changeStatus","addFromTree","CategoryFiltersForm","showChain","CategoryUpload","helpCard1Icon","helpCard2Icon","helpCard3Icon","Categories","refreshingData","mountListingPage","handleModalState","showPopup","tableActive","treeViewInactive","parentCategoryId","isMobileView","productsCount","CategoryFilters","Tree","onMoveNode","getNodeKey","removeNodeAtPath","addNodeUnderParent","generateNodeProps","canDrag","onDragStateChanged","canDrop","onVisibilityToggle","getVisibleNodeCount","treeData","SortableTree","CategoryTree","done","changeParent","addCategory","deleteCategory","editCategory","fetchData","parentNode","hierarchy","generateTree","empty","generateCategoryTree","subCategories","changeNodeAtPath","newNode","showForm","parentKey","expandParent","addAsFirstChild","showDelete","tableInctive","treeViewActive","isDragging","_ref4","nextParentNode","_ref5","ImagePlaceHolder","BrandForm","BrandFiltersForm","Brands","BrandFilters","Warning","textToBold","sentence","helpLink","tooltipText","NameValueCard","productsIcon","uploadingImagesIcon","contentMarketingIcon","Dashboard","showLoader","catalogueCountData","productsData","colors","cards","withoutImagesCount","withoutDescriptionCount","TagForm","filterable","TagFiltersForm","ProductLinkingForm","linkProductToTag","unlinkProductFromTag","_status","promise","selectedProduct","err","_ref6","_ref7","statusButtonTexts","added","failed","TagsImport","isScheduled","sampleTags","scheduleDate","scheduleTime","_dateTime","selectedDateTime","formattedTimestamp","infoIcon","productLinkingForm","readBasicConfig","isHttpsEnabled","showLinkingForm","hideLinkingForm","ImportAction","modalShown","Tags","TagFilters","ProductList","DeleteIcon","SubstitutionGroupForm","addProduct","pdts","p","SubstitutionGroupFiltersForm","TableActions","statusToggleConfirmation","toggleStatus","substitutionGroup","toggledAction","SubstitutionGroups","SubstitutionGroupFilters","SimpleAreaChart","chartData","AreaChart","margin","left","XAxis","dataKey","Tooltip","Area","chartColor","AnalyticDisplayWidget","generateChartData","dailyusage","propertyType","ob","toLocaleString","itemType","bottomLeftData","bottomLeftType","bottomRightData","bottomRightType","renderActiveShape","RADIAN","PI","midAngle","innerRadius","outerRadius","startAngle","endAngle","payload","percent","sin","cos","sx","sy","mx","my","ex","ey","textAnchor","dy","Sector","TwoLevelPieChart","activeIndex","onPieEnter","COLORS","curr","validData","PieChart","Pie","activeShape","entry","Legend","iconType","AnalyticPieChart","reqData","reqArr","accumalator","splitString","currval","formObject","SimpleBarChart","bars","dataKeys","Bar","barSize","ResponsiveContainer","BarChart","barGap","barCategoryGap","YAxis","allowDecimals","AnalyticBarChart","dates","chartType","eachDate","newob","property","newProperty","Name","element","elem","fetchingDataKeys","radioOptions","generatingRadioOptions","gadgetSelected","filteredData","onClickSubmit","barChartLoader","CouponAnalytics","widgetChartData","subtract","mainContent","usage","coupon","activeDays","expiryDate","momentExpiryDate","isAfter","activeFor","discountToday","totalDiscount","today","calDiscountToday","dailyUsage","discountForWeek","totalDiscountForWeek","dateFormat","calDiscountForWeek","purchaseToday","totalPurchase","totalOrderAmount","calPurchaseToday","purchaseForWeek","totalPurchaseForWeek","calPurchaseForWeek","distinctUsage","totalUsage","paymentDetails","deviceToggle","placedFrom","CustomerEnableDisableDialog","showDialog","toggleDialog","rerender","showSuccessDialog","showPasswordResetDialog","showPasswordReset","onSend","TableView","lastName","phones","joinedTime","lastOrderedOn","totalOrders","totalAmount","customerImagePlaceholder","is_Domain_Scarlet","is_Domain_WSI","paymentModes","paymentStatuses","OrderFiltersForm","lastOrderType","getOrderSlots","orderType","slotApi","paginated","isFetchingSlots","slotOptions","slotFetchError","configApi","orderTypes","order","ButtonWithOptions","selectOption","EmailForm","Email","closePopup","closeDialog","getDefaultIndex","transactional","subject","dialogMessage","defaultEmailId","showOptions","CallForm","Call","otherReason","defaultPhoneId","BaseMap","defaultOptions","GoogleMap","onMapMounted","defaultZoom","zoom","onMapClick","center","getCenter","onBoundsChanged","Map","withScriptjs","withGoogleMap","GoogleMaps","googleMapURL","loadingElement","containerElement","containerClassName","mapElement","drawCircle","point","radius","d2r","rlat","rlng","lat","extp","points","theta","RadialMapComponent","MarkerWithInfo","isOpen","closeInfoWindow","openInfoWindow","Marker","MarkerIcon","onMouseOver","onMouseOut","InfoWindow","disableAutoPan","onCloseClick","PinCode","locations","geocodeAddress","pincodes","geocoder","google","maps","Geocoder","promises","geocode","results","GeocoderStatus","OK","geometry","_this$state$locations","pincodeIndex","DeliveryAreas","deliveryAreas","strokeColor","strokeOpacity","strokeWeight","fillColor","fillOpacity","deliveryArea","configType","endRadius","startRadius","area","radialIndex","latitude","longitude","Polygon","paths","locationsArray","coor","mapMounted","pincodeLocations","_isMounted","onPlacesChanged","onSearchBoxMounted","setFitBounds","getLatLngPoints","getGeoCodeAddress","searchBox","isTripPlannerPage","pincodesArray","places","getPlaces","bounds","LatLngBounds","place","viewport","union","extend","nextMarkers","setNewLocation","ZERO_RESULTS","deliveryAreasPoints","fitBounds","storesWithLatLng","defaultLatLngs","isDeliveryAreaExtensionEnabled","onDragEnd","latLng","zIndex","SearchBox","controlPosition","ControlPosition","TOP_LEFT","SearchIcon","StoreMarker","AddressForm","Address","hidePopup","SmsForm","Sms","InvoiceSummary","shipping","paid","couponDiscount","invoiceAmount","refundAmount","loadedFromInvoice","editing","pendingAmount","surcharge","orderDiscount","clickAndCollectCharges","taxBreakdown","paymentAmountText","orderSlotDiscount","totalOrderDiscount","shippingDiscount","allTaxes","reducer","accumulator","totalTaxValue","allTaxPercentages","taxObj","priceBeforeTax","allTaxAmounts","netAmounts","zeroTaxes","taxAmount","taxValue","haveAccess","orderStatus","OrderItemsView","getOfferProductUI","offObj","_e$orderDetails","_e$orderDetails$offer","_e$orderDetails$offer2","orderDetails","offerReason","orderItemId","_offObj$brand","getOfferItems","_item$orderDetails","generateStateFromProps","saving","productLookup","itemToRemove","startEditing","cancelEditing","submitChanges","addProductToOrder","newProduct","isSoldByWeight","unit","multiplier","weight","orderedQuantity","factorForPutRequest","removeProductFromOrder","_this$state2$items","productsInOrder","invoiceQuantity","totalMrp","totalAmountCalculated","paidAmount","payment","overlayClass","totalTax","taxSlab","editableList","getRow","isContainReplaceItem","_item$storeSpecificDa","_orderDetails$metaDat","_orderDetails$replace","_orderDetails$metaDat2","_item$orderDetails2","deliveredQuantity","pickedQuantity","chargeableQuantity","comment","isNew","divider","smallUnit","temp","taxValues","taxType","replaceItems","offerItems","LShape","newTag","isFree","updatedValue","isItemRemoval","isItemAddition","editable","includeInvoice","OrderInvoice","hideInvoice","getData","referenceNumber","completedAt","updatedAt","preferredDate","slotStartTime","tempDate","slotEndTime","print","addressSequence","customers","prevData","_this$state$data","FirstName","LastName","customer","clientId","slotType","pickupLocation","billingAddress","FileForReturnForm","returnReasons","itemReturnReasons","transformedResponse","tripId","orderNumber","trip","helper","getItemsToReturn","calculateReturnableQuantity","quantity","returnableQuantity","moveableStatuses","getMoveToStatusOptions","itemsToReturn","return","returnItems","returnItem","isPending","qty","returnReason","returnError","returnEditable","newItems","orderItems","completedStatus","isInStoreEnabled","isLogisticsEnabled","disputeQuantity","isPickupPending","CompleteOrderWithPickupPending","pickupPending","pickupItems","pickupPendingItems","onPickupPendingComplete","productReturned","redirectUrl","entityType","onComplete","PACKING","orderTypeImages","PICKUP","pickupImage","DELIVERY","deliveyImage","B2B","B2BImage","OFFLINE","offlineImage","PaymentStatusText","FillRateText","fillRate","round","tripStatus","handleCourierDispatch","dispatchFormError","showSuccessDispatchDialog","showErrorDispatchDialog","closeDispatchDialogs","whichDialogue","showCompleteDialog","showCancelDialog","showInvoice","printInvoice","showLog","showPickupPending","orderActions","getOrderPermissions","returnableStatuses","paymentStatus","returnsByRE","courierDetails","hasOrderEditPermissions","hasOrderPostPermissions","canBeCompleted","vendor","canBePendingToPacked","canBeReturned","canBeDisputed","canShowTrip","canBeDispatched","canBeCancelled","registerPayments","isStatusPacked","packedOrderEdit","fromOperations","hasAccessToAction","hideOptionForSeller","hasAccessToInvoice","invoiceSupportEnabled","showMoveToPendingDialog","moveCancelledToPending","showReturn","FileForReturn","closeReturnFilePopup","CompletePickupPendingOrder","tableHeader","orderConfiguration","itemCount","_courierDetails$metaD","_courierDetails$metaD2","_courierDetails$metaD3","_courierDetails$metaD4","allowCall","communication","allowEmail","courierCancelled","courierName","courierCharge","CustomerMapWidget","CustomerEmailWidget","CustomerCallWidget","OrderUpload","orderUpload","bulkOrderFeatureDomains","DEFAULT_ORDER_PERMISSIONS","_orderPermissions$met","modifiedPermissions","canCreate","canEdit","canComplete","canCancel","canRefund","canEditCustomFields","CreateNewOrder","setShowPopup","isbulkOrderFeatureEnabled","seoIcon","rcmIcon","newCustomerIcon","OrdersContainer","getOrderConfig","courierParams","communicationApi","communicationConfig","packedOrderEditAllowed","orders","OrderFilters","slotDetails","_this$state$orderActi","tabularView","CsDashboard","orderSearch","isApiCalled","emptyForm","CustomerRow","CustomerTableView","componentProps","prevParams","OrderContainer","InfoCard","CustomerDetailsCard","defaultPhone","defaultEmail","allowSms","CustomerSmsWidget","PhoneAndEmailDisplay","setAsDefault","isDefault","defaultId","phoneIcon","emailIcon","verifiedIcon","setDefaultPhoneOrEmail","showDeleteOption","customerContactActions","MapForm","coordinates","addressId","AddressCard","showMap","showDeletePrompt","hideMap","handleCloseDialog","handleSuccessClose","deleteMessage","viewOnMap","coors","viewAddressIcon","Mapform","otherOptionValue","changeReason","submitForm","MailForm","dataToSend","AddEmailForm","AddPhoneNumberForm","countryIso","PlacesWithStandaloneSearchBox","compose","withProps","lifecycle","onPlacesSearched","data-standalone-searchbox","StandaloneSearchBox","fieldname","onFocusFunction","onBlurFunction","AddAddressForm","handlePlaceSearch","_addressComponents$fi","_addressComponents$fi2","addressComponents","address_components","types","short_name","formatted_address","serviceableAreaAPI","_e$message","sequenceApi","extnResponse","sequenceResponse","sequenceConfig","customerConfig","Wrapper","MetadataFormFields","UserTags","MetaDataForm","getCustomerMetaData","handleEdit","showView","tempState","customerKeys","customerServiceApi","formDataRaw","_this$props$customer","configureableKeys","editPermission","purchaseHistory","CustomerDetails","showCallPopup","showSmsPopup","showAddEmailPopup","showAddPhonePopup","showAddAddressPopup","showPhoneDeletePrompt","showEmailDeletePrompt","phoneIdToDelete","emailIdToDelete","pages","hideLoader","mailCallback","smsCallback","handleClose","handleSmsClose","renderDialog","addEmailCallback","handleAddEmailClose","addPhoneNumberCallback","handleAddPhoneClose","deletePhoneNumberCallback","deleteEmailCallback","addAddressCallback","handleAddAddressClose","deleteAddressCallback","callCallback","handleCallClose","handlePhoneDeleteCloseDialog","handleEmailDeleteCloseDialog","handlePhoneDeleteShowDialog","handleEmailDeleteShowDialog","extentionDetails","addressKeys","countryApi","fetchTabData","OrdersImage","PurchasedImage","orderSummary","JoinedImage","LastPurchaseImage","getAddresses","getPhoneNumbers","plusIcon","getEmails","fetchPageData","customerAddresses","addresses","defaultAddress","customerPhones","newCustomer","modifiedEmails","newDetails","modifiedAddresses","modifiedPhones","customerEmails","getColor","renderCallPopup","_this$state$customer$","_this$state$customer$2","renderMailPopup","_this$state$customer","_this$state$customer$3","_this$state$customer$4","_this$state$customer$5","renderSmsPopup","_this$state$customer$6","_this$state$customer$7","renderAddEmailPopup","renderAddPhonePopup","AddPhoneForm","renderAddAddressPopup","renderPhoneDeleteDialog","renderEmailDeleteDialog","_this$state$customer2","screen","perPage","CustomerFilters","loseEmphasisonFill","CustomerImport","customerUpload","targetCustomerIcon","offerIcon","offlineMarketingIcon","Customers","joinedOn","CommonComponent","CustomersListing","PlacementDetails","orderStatusText","deviceParameters","device","preorder","preoder","creationTime","completionTime","generateDateOptions","DeliveryDetails","handleChangeSelectedStore","selectedDeliveryStore","addressSlotMap","getAddressParams","formatSlotEndTime","getPickupParams","promisifySetState","visibleDaysForSlot","addressApi","addressIndex","addressSlots","available","dateOptions","preferredSlotId","_this$state$pickupLoc","pickupLocationIndex","pickupLocations","pickupAddress","pickupLocationId","_address$pincode","pickupId","newStates","extnId","extnApi","orderConfig","loc","orderSlotApi","getUtcdate","utcDate","allSlots","currentLocal","local","finalTime","requestParams","storeRequestParams","storeRequestHeaders","preferredSlot","addressNotServed","_this$state$pickupLoc2","_this$props$data","_this$state2$customer","_stores$map","isPickupOrder","isAddressSelected","isPickupLocationSelected","minutesToDeliver","metaDataPhones","AlternatePhone","myoptions","filteredOption","selectedDate","RADIO_SKINS","_this$state3$customer","pickupPersonName","pickupPersonContact","timearr","getPaymentLogo","paymentMode","Generic","Visa","MasterCard","Amex","getMobileView","PaymentDetails","mobileView","mode","cardNumber","cardType","transaction_id","transactionId","RefundDetails","refund","refundReference","PackingDetails","present","packingDetails","packageMetaData","courierStatus","_metaData$packages$de","packageWeight","_metaData$packages$la","packages","UploadedFileView","orderDetailData","fileType","viewUploadedFile","setViewUploadedFile","showViewButton","setViewButton","handleViewUploadedFile","onMouseLeave","OrderMetaData","canBeEdited","extnsnApi","ignoreKeysInView","_data$key","resolutionOptions","ReturnsFrom","wastageReasons","returns","returnToStoreItems","wastageItems","resolution","orderReturnId","wastageReasonId","storeApi","wastageApi","defaultWastageValue","orderItem","settledQuantity","closeReturnsPopup","ReturnFilters","WastageContext","EmptyIcon","showDisputePopup","ReturnsForm","ReturnsContainer","wastagereason","orderReturnStatus","ReturnsFilter","PDFViewer","deliveryDetailsEditableStatus","invoiceDetailsStatus","OrderDetails","toggleErrorDialog","showRefundPopup","refundDetailsPopup","hideRefundPopup","refundValue","refundAmountCall","_this$props$router","_this$props$router$ma","_this$props$router$ma2","requestBody","reload","filterCancelledItems","_order$items","handleInvoice","invoiceUrl","invoiceShown","getInvoice","invoice","pdfLink","updateInvoice","invoiceSocketData","registerInvoices","socket","authToken","WebSocket","registerInvoiceSockets","onmessage","getInvoices","_this$props2$router","_this$props2$router$m","_this$props2$router$m2","invoices","getUniqueInvoices","invoiceMap","_invoice$metaData","_invoice$metaData2","invoiceNumber","invoiceCounter","orderCancellationDialog","orderCompletionDialog","moveToPendingDialog","isOrderViewItemCollapsed","isMetaDataCollapsed","isPaymentDetailsCollapsed","isRefundDetailsCollapsed","itemAdditionStatus","itemRemovalStatus","handleItemEdit","handleAddressChange","handleMetaDataEdit","toggleCompletionDialog","toggleCancellationDialog","cancelOrder","metaDataExists","completeOrder","isMetaDataKeySet","toggleMoveToPendingDialog","moveToPending","modifyOrder","orderDetailsApi","log","newOrderStatus","updatedOrder","metadata","metaDataExtnId","orderMeta","addressSequenceApi","getCommunicationConfig","packedOrderEditApi","_res$data","_this$state$data$refu","_data$type","_data$courierDetails","_this$state2$orderCon","_this$state$data$pack","_this$state$data$pack2","_this$state$data2","_this$state$data2$cou","hasOrderEditPermission","contentLoaded","registerPaymentsLink","canShowTripDetails","canbeReturned","getReturnableStatuses","canBePending","showDropdown","isStatusComplete","handlePrint","MetaDataDetails","OrdersRouter","OtherCourierForm","checkIsMobile","VendorRow","setisMobileView","pickupEstimate","shippingCost","deliveryEndEstimate","VendorsTable","vendorsList","VendorRows","courierVendorId","DunzoDetails","CourierDispatch","_this$state$courierVe","_this$state$courierVe2","dispatchError","OtherCourierFormData","isVendorSelf","shipRocketVendorData","courierCharges","trackURL","courierTrackingId","shipRocketVendor","courierVendors","provider","fedExVendorData","fedExVendor","courierApi","vendorName","orderId","getOptionList","_this$state$courierVe3","useableLogisticsProvider","logisticsServiceProviders","vendorDunzo","otherLogisticsProvider","_this$state3$values","_this$state4$values","showShipRocket","showFedEx","allProvidersApi","courierEligibilityApi","_courierEligibilityRe","_allProvidersResponse","allProvidersResponse","courierEligibilityResponse","vendors","courierVendor","availableLogisticsProvider","logistics","logisticsProvider","providersList","_this$state$validatio","optionList","shipRocketData","fedExData","shipRocketVendors","fedExVendors","DropdownIcon","OrderDispatchForm","SimpleLineChart","headerTag","xKey","yKey","toolTipContent","LineChart","padding","CartesianGrid","Line","strokeWidth","activeDot","cursor","wrapperStyle","content","EmptyChartImg","SimplePieChart","iconSize","apiEndPoints","dateToNum","OrderRevenueHeaderTag","orderRevenue","OrderCountHeaderTag","orderCount","CsAnalytics","transformDataForChart","fetchChartData","apis","orderRevenueResponse","orderCountResponse","mediumDistributionResponse","paymentDistributionResponse","newStateValue","salesAmount","mediumDistribution","mediumWiseOrderCount","paymentDistribution","modeWisePaymentAmount","renderRevenueTooltip","renderOrdersTooltip","renderPieDeviceTooltip","_ref8","renderPiePaymentTooltip","_ref9","oldDateRange","SimpleLineCharts","SimplePieCharts","TYPES","DATE","STORE","STORES","START_DATE","END_DATE","handleValueWithComma","getRenderParams","storeConfig","dateConfig","multiStoreConfig","startDateConfig","endDateConfig","otherDateConfigs","dateRangeOptions","DownloadReportForm","_getStores","_selectedReport$reque","selectedReport","setData","dateRangeType","setDateRangeType","isProcessing","setIsProcessing","selectAll","setSelectAll","handleDateRangeTypeChange","reportId","requestType","line","csvData","Blob","createObjectURL","downloadCSV","successMessage","createDataChangeHandler","numOfDays","newDates","allStores","canbeSubmitted","requestTypes","AnalyticsReport","fetchReports","reports","modifiedResp","handleShowModal","closeModal","isERCorComplete","ProductRow","increaseQuantity","updateQuantity","decreaseQuantity","removeProduct","_item$product","_item$product$brand","_this$props$product","_this$props$product$b","_item$variant","_item$product2","SubtractIcon","AddIcon","ProductsTable","productsList","ProductRows","togglePricingDetails","payableAmount","getOrderMetaData","setValuesToEmpty","object","filteredMetaData","initializeMetaData","orderKeys","formatOrderDetails","productStoreSpecificData","generateOptions","slotsArr","slotStructure","slotDateOptions","dateArr","currentUtc","ans","final","dateSet","date1","isEntityMetaDataEnabled","OrderAddForm","getCurrStoreDetails","pickuplocationDetails","currStore","getInventoryStoreId","deliveryType","storeDetails","pickingStoreId","customerDetails","phoneNumber","pickuplocations","selectedAddressId","cashTendered","showAddressModal","updateCashTendered","generateProductsFromProductVariants","renderSearchableListElement","addProductToList","productQuantity","productsLength","updateMetaData","metaDataToInitialize","closeErrorDialog","closeAddressModal","orderCreate","cart","paymentApi","paymentParams","addNewAddress","addAddressInCustomerDetails","_this$props$customerD","_this$props$customerD2","customerAddress","pickupSupported","showNewCustomerForm","deliveryApi","visibleDaysForSlots","pickupLocationApi","prevValues","deliverySupported","extId","endDay","selectedAddress","getSlotDetails","noPickupSlots","changeDate","preferredSlotIdError","selectSlot","slotId","slotVal","timeArr","onTypeChange","orderTypeOptions","slotError","getPickupSlotDetails","PhoneNumberForm","customerDetailsApi","setCustomerDetails","CustomerCard","_customerDetails$emai","_customerDetails$emai2","CreateOrder","showStoreSelctor","updateStoreId","newCustomerDetails","StoreDependentOrders","CreateOrderWrapper","infoOpen","handlePincodeClick","_this$props$location$","onMarkerClick","groupId","handlePincodeEdit","_location$label","_location$label2","lineSymbol","scale","markerLabelStyle","fontWeight","backgroundColor","borderRadius","MapWithPath","getCommonMarkers","markers","commonMarkers","marker","labels","hasCommonArea","commonMarker","fetchLatLngLocation","vehicleLastInfo","vehicleTime","vehicleLocation","_res$results","_res$results$","_res$results$2","vehicleLastLocation","getRealTimePolyline","zopsmartMapUrls","_response$paths","apiPoints","getLocations","vehiclePath","getExactPathRoute","locationsBatches","vehicleLocations","chunkSize","chunkedArray","arrayChunk","getRoutesForPoints","batchPromises","routes","batch","vehicleRoute","getAddressString","getMarkers","getPath","getLocationParams","locationMarkers","_locations","showStore","showVehicle","navigator","geolocation","getCurrentPosition","coords","callMaps","dataLoading","vehiclePoint","compareArrays","currentProps","showRealRoutes","polylineOptions","geodesic","MarkerWithLabel","labelAnchor","Point","labelStyle","VehicleMarker","route","Polyline","defaultPath","repeat","OrderLog","orderLog","orderReferenceNumber","orderlog","getTripDetails","tripDetailsApi","tripDetailsRes","tripLocationResponse","vehicleCoordinates","orderLocations","storeLocation","LogItem","_props$data$user$desi","clientStoreId","slotTime","leftAtDoorStep","textTransform","itemChanges","tableData","paymentService","paymentMethod","theadData","tbodyData","cell","isNaN","SelectStoresSearch","stateKey","formattedStores","daysOfWeek","UserShiftForm","currState","shiftStart","shiftEnd","designationId","multiStoreEnabled","designationOptions","designations","selectedDes","des","timingType","validationTypes","employee","showNewPassword","showConfirmPassword","newPassword","confirmPassword","NewPasswordIcon","ConfirmPasswordIcon","showReset","showSuccess","weeklyOff","isCheckedIn","attendance","AttendanceButton","UserShifts","showFilterAction","designationApi","storesApi","employees","_employee$attendance","_employees$attendance","UserShiftsForm","hasToolAccess","selectedDesignation","newEmployee","UserShiftsFilter","PickerForm","PickerFilters","emptyStateIcon","settingImage","checkOut","checkIn","hasCheckedInForDay","Pickers","roleId","picker","PickerFilter","ProgressBar","estimatedTime","isComponentMounted","currentOrder","currentTime","getPointerStyle","pixelPerSecond","asSeconds","calculateEtraTimeProgressWidth","border","calculateProgressWidth","getPixelPerSeconds","remainnigTime","getDuration","getExtraTime","pixel","extraTime","pixel2","isOverTime","pointerStyle","borderColor","ActivePickers","pickers","pickerIds","pickerId","activeEmployees","emp","lateTime","expectedIn","Placeholder","processName","numOfOrderItems","IdlePickers","idleEmployees","TotalPickers","totalPickers","activePickers","idlePickers","Picker","PickersToday","pickerLoading","employeeLoading","Loading","multiStores","changeStore","getEmployees","updateStates","apiURLParams","pickerApi","employeeApi","_employees","SellerForm","getSellerMetaData","_response$data$config","_response$data$config2","sellerMetaData","SellerUpload","SellerFiltersForm","SellerActions","getStatus","AddSeller","Sellers","setIsMobileView","handleResize","_response$data2$metaD","UserForm","_response$data$seller","sell","UserFiltersForm","UsersActions","SellerUsers","updatedResponse","_employee$emails","_employee$emails$","_employee$phones","_employee$phones$","employ","_employ$emails","_employ$emails$","_employ$phones","_employ$phones$","updatedEmployee","_formData$seller","VehicleForm","vehiclevendor","twoWheelerIcon","fourWheelerIcon","droneIcon","VehiclesFiltersForm","VehiclesInterface","vehicleVendor","dorneIcon","VehiclesFilters","VehiclePlannerFiltersForm","editDate","checkedIn","outTime","VehicleReplaceForm","vehicles","availableVehicles","vehicleId","VehicleListContainer","addVehicle","getVehicleNumber","updateOnCheckIn","replaceVehicle","vehicleNumber","checkInApi","regularityType","vehicleattendance","updateOnCheckOut","checkOutApi","pathId","replacedBy","showReplaceForm","updateOnReplace","vehicleIcon","VehicleShift","regularCount","adhocCount","checkedInVehilces","expectedOut","regularVehicles","adhocVehicles","regvehicle","idx","adhvehicle","VehiclePlanner","fetchVehicles","updateVehicleOnCheckin","updateVehicleOnCheckOut","updateVehicleOnReplace","addedVehicleIndex","checkedInVehicles","removedVehicleIndex","checkedInVehiclesApi","checkedInVehiclesParams","allVehilcesApi","allVehilceParams","checkedInVehicleResponse","allVehicleResponse","vehicleplanner","planner","AddShiftForm","VehilcePlannerFilterForm","VehicleVendorsFiltersForm","VehicleVendorsFilter","TripFiltersForm","getCurrency","TripPaymentsForm","formatPayload","tempData","_item$obj","handleCancel","checkSubmittable","remainingAmounts","totalRemaining","flag","pendingAmounts","k","c","orderConfigApi","_configResponse$data$","_configResponse$data$2","_paymentModesResponse","apiResponse","configResponse","allOrders","disabledModes","finCloseDisabledPaymentModes","paymentModesResponse","paymentMethods","_configResponse$data$3","_configResponse$data$4","INTERNAL_APP","ordersWithPendingPayments","paymentsByRE","orderPaymentModes","_value$payment","_order$payment","_value$payment2","payments","allRemaining","foundOrder","odr","EndTripForm","endKm","PaymentModeContext","showEndTripForm","endTripFormLoading","paymentsForm","tripDetails","showTripDetails","hideEndTripForm","showPaymentsForm","hidePaymentsForm","financiallyCloseTrip","submitEndTripForm","_response$data$trip","paymentsObj","orderPayments","referenceNumberArray","endTripKm","hasEditPermissions","InterfaceContainer","_getDefaultStore","_response$data$order$","trips","deliveryAgent","TripFilters","deliveryAgentId","TripIdContext","appendTimezoneFormat","eta","TripTableActions","showOdometerImage","updatingTripData","vehicleStartOdometerImage","vehicleEndOdometerImage","startKm","DeliveryguyDetails","agentMobileNumber","PhoneIcon","TripclosedRibbon","VehicleIcon","CashIcon","amountArr","calcTotalCollectableAmount","ClockIcon","vehicleStartTime","ShopIcon","CustomerSignature","showSignature","signature","SignatureIcon","orderListTableProperties","customerSignatureImage","etaMoment","completedAtMoment","hours","asHours","minutes","asMinutes","seconds","timediff","AdditionalViewsWrapper","AdditionalViews","getMapUrls","_res$data$backOffice","backOffice","mapsUrl","vehicleCooordinate","showLoading","getOrderETAs","getOrderCoordinates","getVehicleCooordinates","getStoreLocation","storeLatlng","orderEtaApi","tripLocationApi","orderETAs","OrderListRow","orderCoordinates","ordersCount","orderHeading","orderETAObj","TripDetails","preventLoading","fetchingInitialData","tripApi","accountConfigApi","_orderConfigApiRespon","orderConfigApiResponse","accountConfigApiResponse","shouldCaptureOdometer","ISO_RE","getModifiedMetadata","orderMetaKey","isBoolean","draggableId","modifiedMetadata","Draggable","provided","snapshot","innerRef","draggableProps","dragHandleProps","isDelayed","test","long","ActiveAddressIcon","InActiveAddressIcon","NotReadyOrders","droppableId","Droppable","isDraggingOver","showDeliveryLocation","TripContainer","areOrdersReady","ready","recommendedVehicle","zone","readyOrders","ignoreForTrip","hubTrip","isActiveHubTrip","onStart","clockIcon","ExpandingStats","toggleExpand","currentRunners","currentVehicles","classname","containerStyle","maxHeight","contentRef","expandMinus","expandPlus","elm","vehicleStart","shiftIn","shiftOut","TripStatistics","getOrderStats","getOpenTrips","currentZone","re","OrderItemDeliveryStatus","OpenTripListItem","getOrders","delivered","contentStyle","etaResponse","totalDiff","delayed","agentIcon","agent","OpenTrips","tripETAs","getTripsETA","tripIds","eachTrip","paramStr","tripEtaApi","ETAObj","ETA","TripSequenceOrders","onDragStart","destination","reorder","updateTripSequence","itemToMove","DragDropContext","TripSequence","deliveryData","getCoordinates","getDistance","getMarkersCoordinates","getTripDistance","distance","currentTripHub","hubLocation","getHubLocation","deliveryLocations","tripDistance","getStore","hub","orderNumbers","startTrip","modifyState","orderReadyToBeDispatched","submittingZoneIndexes","unassignedOrders","interZoneDnD","sameZoneDnd","sameTripDnd","getPlannedTrips","showTripMap","updateOrder","getDeliveryAreas","registerSocket","logisticsAutomationApi","refreshPlannedTrips","sourceLocation","destinationLocation","sourceZoneIndex","destinationZoneIndex","notReadyRegExp","toggleTripOrders","sourceTripIndex","destinationTripIndex","plannedTrips","tripRegExp","notReadyOrders","tripMapData","zoneTripDetails","zoneTripIndex","orderIndex","fullAddress","getOrderNumbersForZone","accOrder","currentOrders","executives","zoneIndex","tripIndex","showTripStarted","deliveryarea","stateData","zones","plannedTrip","newStatus","tripPlanner","InterfaceWithStores","TripPlanner","TripPlannerTable","formatDataForCsvReady","dataArray","deliverySlotStartKey","deliverySlotEndKey","productCount","Distance","pickingStartsBy","pickingEndsBy","waiting","plannedTripIndex","ManageRE","runnerExecutive","autoTripGenerationInputs","LogisticsConfig","configServiceApi","configServiceOrderApi","_configServiceOrderRe","configServiceResponse","configServiceOrderResponse","fixedPickingTime","perItemPickingTime","fixedPackingTime","perItemPackingTime","fixedLoadingTime","perItemLoadingTime","perContainerLoadingTime","averageServiceTime","averageTravelTime","averageSpeedInKms","tripGeneration","orderBreakingMethod","otpValidationRequiredForOrderCompletion","canLeaveAtDoorstep","configServicePayloadKeys","configServicePayload","configServiceOrderPayload","accountServiceApi","autoTripGenerationInput","ProductCollection","subtitle","img","LayoutGreenCard","xmlnsXlink","fillRule","opacity","LayoutRedCard","DualImageGrid","textPosition","imageUrl1","imageUrl2","subtitle1","subtitle2","title1","title2","fontSizes","specialLayout","WYSWYG_Layouts","trimQueryString","Layout","handleChangeOriginal","showOriginal","handleUpdateData","uploadContent","uploadCallBack","uploadLoader","_response$data$imageU","shouldPassDataAsProps","_stateKeys","preview","fields","getValueLayouts","CategoryCollection","BrandCollection","BlogCollection","layout","cparam","tparam","categoryApi","tagApi","categoryResponse","tagResponse","sortedData","sortable","blogs","blog","sortedKeys","entityObj","responseArr","Preview","layoutBackground","disableSubmit","isOriginalAvailable","layoutElement","edit","updateData","isUploadLoading","onSaveClick","activeSlide","slideElements","slideTo","slideIndex","slides","slideAmount","currentSlide","slideStyles","slide","ImageSlideShow","ImageSlideshow","emptySlide","gifUrl","slidesCount","_fileUrl$toLowerCase","fileUrl","endsWith","ImageWithText","ImageWithTextLayout","ProductCollectionLayout","defaultOption","showOnly","showOnlyValue","irrellevant","yes","BannerWithTextLayout","BannerWithText","buttonTextInput","buttonLinkInput","BannerWithMultipleButtonsLayout","BannerWithMultipleButtons","VideoCarouselLayout","VideoCardCarousel","videoCards","CategoryCollectionLayout","SubCategoryCollectionLayout","GreenImage","DualImageBanner","subTitle","RedImage","DualImageBannerLayout","AppointmentFormLayout","AppointmentForm","DualImageLayout","BlogCollectionLayout","LeftArrow","RightArrow","Testimonial","_data$slides","imgBlank","attribute","authorImage","authorName","testimonial","isMultiSlides","TestimonialLayout","TestimonialLayoutWrp","Carousel","_data$questions","_data$questions$","_data$questions2","questions","question","imgHorizontal","arrowsPosition","btnAlignCenter","isMultiQuestion","styleBgImg","backgroundPosition","backgroundRepeat","styleBgColor","bgType","backgroundType","COLOR_PATTERN","CarouselLayout","handleThemeColorValidator","isColorOption","colorVal","isColorError","CarouselLayoutWrp","RichText","RichTextLayout","islayoutBackgroundEnabled","setIsLayoutBackgroundEnabled","resetBackgroundType","handleToggleChange","RichTextLayoutWrp","resolutionsAndroid","resolutionsIos","AndroidForm","handleUpdateSplashMdpi","_splashMdpi$imageUplo","splashMdpi","splashImageUrl","MOBILE2","SplashScreenComponent","SplashScreenWrapper","SplashScreen","SellerCollectionLayout","GridCollection","imgText","linkText","bannerText","GridCollectionWrp","GridCollectionLayout","InfluencerCollection","FooterLayout","FooterImg","Footer","emptyItem","emptySection","sections","activeSectionIndex","activeItemIndex","activeSection","activeItem","updatedSections","section","deleteSection","addSection","newSections","updateSectionText","deleteItem","addItem","FooterWrapper","LayoutVisibility","ImageCollection","ImageCollectionWrp","ImagecollectionLayout","layouts","BannerWithButton","SearchResults","SubCategoryCollection","DualImage","Splash","SellerCollection","Highlights","FeatureLayoutWrp","EditHighlightsSection","getLayout","pageIndex","layoutName","pagesArray","layoutIndex","onEditClick","onRemoveClick","LayoutComponent","availableComponents","isShowLayout","DragHandle","offsetTop","dualImageLayouts","Images","Text","SortableHandle","BlogForm","addLayout","showLayoutPopup","deleteIndex","forceUpdate","getRespectiveComponents","currentComponent","currentLayout","saveLayouts","showPrompt","onAddClick","listView","loaded","lockAxis","cancelReordering","reorderLayout","layoutname","subcategories","blogIds","brandIds","collection","hasImage","hasStock","hasOffers","showFilter","formatResponse","originalData","pageId","showImageEdit","editingIndex","selectOptionsData","getSelectOptionsData","selectField","dataFor","fetchScheduledLayout","_response$data$page","_response$data2$page","categoryDataLoaded","tagDataLoaded","brandDataLoaded","newResponse","layoutInfo","onComponentClick","_this$props$theme","categoryAndbrandCollection","isDraft","publishTime","now","BlogActions","statusAction","showStatusActionDialog","hideStatusActionDialog","setPublishStatus","blogLink","AddBlog","author","Blog","alternateTextForImage","RecipeForm","renderRichEditor","sectionKey","headingKey","placeholderKey","direction","RecipeActions","AddRecipe","hasInfluencer","Recipe","recipes","thumbnail","ingredients","directions","recipe","SOCIAL_MEDIA","deleteKey","renderInputAndSelect","selectedTypes","platform","InfluencerForm","addKey","socialMediaType","socialMediaId","_prevState$values2","_updatedValuesMetaDat","_prevState$values3","_prevState$values4","updatedValuesMetaData","deletedType","updatedDefault","_prevState$values5","updatedMetaData","_this$state$values$me","_this$state$values$me2","selectedTypeOptions","availableOptions","_this$state$values$me3","availableRadioOptions","remainingSocialMediaOptions","useDragHandle","InfluencerActions","isEnabled","AddInfluencer","Influencer","influencer","_formData$recipes","transformedMetaData","finalMetaData","recipeIds","restoredMetaData","Components","datetime","int","float","string","CSV","CustomersMappedToTag","formatDataBeforeSubmit","isDel","userSet","segment","SegmentsForm","selectSegment","getTagDetails","deleteSegment","tagAPi","segmentsApi","segmentsLoaded","tagsLoaded","segments","segmentOptions","variables","tagDetails","newSegment","isDisabled","segmentIndex","extraProps","checkForNegativeValue","CouponForm","timeRangeDiable","_this$state$values$da","discountType","validOnDays","bulk","maxSingleRedemption","maxRedemption","minOrderAmount","maxDiscountAmount","negDiscountErr","negSingleRedemptionErr","negRedemptionErr","negOrderAmountErr","negMaxDiscountErr","CouponFiltersForm","CouponActions","hideDialog","dropDownItem","currentDate","targetStatus","couponCode","validOnPayment","validOnUser","validOnSlots","BulkCouponMailForm","generateCouponOnSubmit","callbackgenerateCoupon","Coupons","handleOnclickimg","generateCoupon","multiStoresEnabled","_coupon$userSet","_coupon$userSet$data","newCoupon","newDataArray","userSetData","timeRange","isSame","_response","_response$userSet","_response$userSet$dat","newUserSetData","CouponFilters","BulkCoupons","bulkCoupon","validOnStores","others","Banner","Banners","MarketingBanners","WebsitePageForm","_this$state$values2$l","_params$layouts","_prevState$values2$la","_response$data$static","_response$data$static2","_response$data2$stati","staticpage","PagesActions","statusActionID","modifyStatus","AddButton","getStatusText","Pages","parseTemplate","template","variable","regex","PreviewElement","sms","templateType","dangerouslySetInnerHTML","__html","mediums","activeMediumId","lastFocussedElementId","lastCaretPosition","debouncedCaretPositionUpdate","variableClicked","variableName","getAttribute","prevValue","selectionStart","updateLastCaretPosition","updateLastFocussedElement","mediumApi","variableApi","mediumApiResponse","variableApiResponse","mediumsData","medium","updateMediumId","mediumId","emailSubject","emailBody","smsContent","pushImage","pushBody","pushSubject","pushUrl","isDateTimeValid","checkIfValidDateTime","EmailComponent","SMSComponent","PushNotificationComponent","data-variable","AddCampaign","scheduledTime","Campaigns","campaigns","campaign","CampaignsForm","_campaign$userSet","_campaign$userSet$dat","newCampaign","campaignData","mediumName","deepLinkUrl","endtDate","newFormData","_formData$pushImage","_formData$pushUrl","ItemTable","imageKey","onDiscountTypeChange","stateTypeKeys","stateValueKeys","comboDiscount","discountTypes","buyAny","buy","buyKey","buyQty","hasOfferStarted","nestedKeys","changeKey","isChangeKeyArray","MAX_SAFE_INTEGER","deleteBuyItem","deleteCategoryBrandsItem","BANYATP","submitHandler","validationHandler","rule","minAmount","minQuantity","offerType","pwpTagId","entity","entityTypeMap","itemsLength","handleDiscountChange","BMINXATP","initData","handleAddRule","handleDeleteRule","onUpdateValues","elementGroups","validationsRule","onUpdateValidations","oldFormat","isCombo","newRule","eg","maxDiscount","itemDiscountTypes","BANYGYD","buyItems","buyItemsLength","addItemBuy","BXATP","BXGYD","SF","cartPrice","SFXGSD","ruleDetail","PWP","PWPTagId","PWPTagID","BMIN","nonEntity","entityIds","entityTypeLowerCase","entityText","BFXATP","selectedVal","isNewOffer","BMINXGFG","group","getObject","getProductItems","SFBGSD","SFEGSD","_values$rule","_values$rule$total","_values$rule2","_values$rule2$total","tabsList","OfferForm","offerForm","SFXGCD","PRODUCT","BRAND","CATEGORY","noMaxRedemption","freeDiscoutOffers","saveData","handleEntityTypeOnchange","handleOfferTypeOnchange","handleImageClick","onClosePopup","noItemsOffers","handleUniquePromocodeValidations","readyForSubmission","handleCloneOffer","handleToggleClonePopup","handleUpdateValues","handleUpdateValidations","stackable","disableCheckbox","tabForms","clonedOffer","sessionStorage","nextTabIndex","offerValidFrom","entityId","offerMetadata","offer","metadataFormTypes","multiTierGetParams","multiTierGetPdts","getPdts","getProductsAPI","productsFromProp","productFromProp","newElementGroups","getPdtId","pdtIds","buyParams","entityParams","buyPdts","buyProductsAPI","buyProduct","entityProductsApi","itemsValidation","newItem","valuesRef","ruleValue","ruleValidation","targetValue","productOnlyOffers","brandOnlyOffers","offerMapping","offersArray","showPromoDownloadPopup","numberOfPromos","onlyCopy","totalRedemption","redeemedCount","customerRedemptionLimit","cloneOffer","disableOffer","redemptionValues","fetchRedemptionCount","redemptionLimit","redemptionCount","showClonePopup","disableError","newOfferState","copyOf","tagsLength","FormComponent","itemsCount","promomtionsTab","restrictionsTab","overrideTab","applicableOffers","applicableDiscounts","isClonedOfferWithContinuation","hasUniquePromocode","save","grp","OfferFilters","entityOptions","handleEntityTypeChange","handleEntityIdChange","entityIdField","OfferTypes","OfferMapping","ProductOnlyOffers","BrandOnlyOffers","EntityIds","DiscountTypes","StoreOptions","ItemDiscountTypes","OfferActions","tableAction","Offer","pwpwApi","offers","offerValidTill","alertMessage","OfferFilter","offerTypes","selectedEntity","idsString","_data$rule","_data$rule2","_data$rule3","storeType","validFrom","validFromTime","validTill","validTillTime","startDeliveryDate","startDeliveryDateTime","endDeliveryDate","endDeliveryDateTime","cartDiscount","timeSlots","_data","_data$userSet","_data$userSet$data","_offer$userSet","_offer$userSet$data","storeIdArray","offerValidFromLocal","offerValidToLocal","startDeliveryDateLocal","endDeliveryDateLocal","removeSeconds","hourMinutes","BannerEditForm","pageTypes","linkUrl","pageType","categoryUrl","brandUrl","productTag","productTagUrl","scope","scopes","global","loader","is_Scarlet_Prod","productTagEnabled","storeSpecific","startTimePlaceholder","endTimePlaceholder","home","allowToday","BannerFilters","DraggableListingPage","saveBanner","onDraggableSubmit","onAddBanner","handleMove","closeDragDialog","previousData","isDrag","beforeSwap","afterSwap","updatedArray","banner","_this$state$data$filt","updateBannerSequences","banners","index1","innerHeight","clientY","scrollBy","lockToContainerEdges","onSortMove","bannersEmpty","imagePlaceholder","ManageBanners","bannerData","searchTerm","bannerStartTime","bannerEndTime","FilledStar","EmptyStar","DataFormater","RatingAndReviews","totalRating","avgRating","noOfReviews","totalWidth","one","two","three","four","five","findMaxNumber","totalNumberOne","totalNumberTwo","totalNumberThree","totalNumberFour","totalNumberFive","marginLeft","background","NoRating","rx","ry","ApproveIcon","fill-rule","stroke-linejoin","stroke-width","DisapproveIcon","stroke-linecap","PendingIcon","Rating","fullStars","rating","EmptyStars","stars","FilledStart","REVIEW_STATUS","APPROVED","REJECTED","ProductStatusAction","getDropDownItems","Reviews","handlePopup","selectedImage","review","tablePropertiesforAll","customerName","tablePropertiesforIndividual","averageRating","totalReviews","handleShowIndivisualProduct","tablePropertiesforIndividualProductDetails","lengthOfReview","reviews","productImage","productName","setProductId","showAllIndivisualProductReview","productType","showIndividaulInfo","tabHeaders","includeStatsDetails","ReviewStats","includeProductDetails","includeAverageRating","dd","mm","getPercentageChange","todayStats","previousStats","attr","IncrementIcon","DecrementIcon","getLastWeekAverage","salesStats","customerStats","totalDays","avgData","customersAcquired","transactedCustomers","StatsTable","customersStats","oneWeekAgo","setDate","yesterdayDate","lastWeekDate","yesterday","stats","lastWeek","lastWeekAverage","yesterdayPer","weeklyPer","lastWeekPer","getStatsTableData","column","SlotOrderTable","fixedSlotColumn","asapSlotColumn","fixedSlots","countOb","currData","noSlots","areOrdersScheduled","MarketPlaceProdStats","sortBy","productStats","totalQuantity","showSlotLoader","salesStatsData","customerStatsData","updateContent","defaultStoreId","orderStatsApi","customerStatsApi","slotOrdersApi","ordersResponse","customersResponse","slotOrdersResponse","sales","slotOrderStats","DashboardWithStores","OperationsDashboard","LocationIcon","x1","y1","x2","y2","strokeLinecap","daysOfWeak","o","getBusinessHoursObject","businessHours","StoreForm","getAllPayments","configuredPaymentsPickup","configuredPaymentsDelivery","orgPaymentModes","getPaymentModes","storeLevelPaymentSetup","_orderPayments$paymen","_orderPayments$paymen3","_orderPayments$paymen2","_orderPayments$paymen4","onPaymentChange","getOrderTypes","_res$data$config","accountServiceRes","handleSelect","_addressComponents$fi3","geocodeByAddress","latlng","getLatLng","setLocation","long_name","useMyLocation","LatLng","handlePaymentModesSave","_this$state$values$or","_this$state2$values$o","validatePaymentModes","_data$orderTypes","_data$orderTypes2","_data$configuredPayme","_data$configuredPayme2","_data$configuredPayme3","_data$configuredPayme4","hasPickup","hasDelivery","showPaymentError","findLocation","tempHoursObject","handleStatusChange","availablePayments","mapRef","_nextProps$value","searchBoxRef","_addressComponents$fi4","_addressComponents$fi5","_addressComponents$fi6","getEveryPaymentMode","storeMetaData","storeMetaDataWithType","prevprops","_this$state5$values","_this$state7$values","_values$orderTypes","_values$orderTypes2","isDeliverySupported","isPickupSupported","hasConfigured","StoresFiltersForm","AddStore","Store","newBusinessHours","configuredPayments","formattedResponse","storesFilters","yyyy","OrderPickingQueue","queue","orderQueue","substituteResolutions","DisputeForm","disputes","dispute","submitButtonshown","disputeItems","disputesConfig","disputeStatus","closeDisputePopup","DisputesFilter","DisputesContainer","FileDispute","disputeReasonsApi","disputeReasons","disputereason","reasonResMap","reasons","disputedItems","reasonId","resolutionId","maxvalue","getCutOffMins","cutOff","timeParts","cutOffParts","difference","visibleDays","checkIfValueChanged","fetchSlotDetails","handleOrderSelect","convertDataToMapState","time1","time2","modelData","localDate","visibleDaysApi","slotApiparams","modifiedResponse","newvalues","pickupSlotsApi","pickupApiParams","pickUpDates","pickupSlots","modifiedRule","storeslotrule","slotName","changedSlots","dateIndex","slotIndex","defaultSelected","changedRules","modifiedChangedRulesObj","tempTime","modifiedChangedRules","showSelector","tableContent","storeID","StoreSlotConfiguration","RegisterOrderPayment","getSampleItems","samples","showCompletePopup","sampleItems","paramsArray","apiPayment","apiCallArray","remainingAmount","isButtonDisabled","_item$details","_item$brand","ItemsView","EditPackedOrder","hideError","postItems","formdata","postParams","crates","isAuthorized","editPackedOrder","onStoreChange","cutoffTimeOptionsGenerator","capacityOptions","CapacityPlanningForm","deliverySlots","capacityType","isPickup","CapacityFilters","getSlotsAndZones","updated","cutOffTime","capacity","zoneId","derivedZone","derivedSlot","displayCutOffTime","planningTypes","CapacityPlanning","update","getZonesAndSlots","zonesApi","zonesParams","zonesResponse","slotsApiPickup","slotParams","slotsApiDelivery","slotParamsDelivery","slotsPickupResponse","slotsDeliveryResponse","slotsApi","capacityPlanning","prevStateParams","newStateParams","CapacityPlanningFilter","generateTabularDataSkeleton","slotsAndZones","skeleton","totalSlots","totalZones","generateTabularData","tableSkeleton","inComingData","eachZone","getSortedSlots","formattedSlots","uniqueSlots","slotMapToOrderType","ZoneProgressBar","Today","table","sortedSlots","currentStore","arrowClickRight","arrowClickLeft","disableEdit","handleOnKeyDown","onTodayButtonClick","pickupCapacity","deliveryCapacity","uniqueState","indices","pickUpTotal","deliveryTotal","newEditState","once","timer","setInterval","scrollLeft","clearInterval","tableIndex","deliveryOb","pickupOb","newZoneCapacity","zoneCapacity","found","slotCapacity","filteredTabularData","prevDate","slotHeading","PickupIcon","Headers","EditIcon","ArrowRight","ArrowLeft","chargeTypes","SlotCharges","slotCharge","allSortedSlots","slotChargeMapping","editingCell","getSlots","getSLotCharges","getSlotChargesMapping","handleCellEditClick","dataArr","editAPI","addAPI","chargesApi","dateChargesApi","dateChargesParams","chargesResponse","dateChargesResponse","charges","dateCharges","dateSelect","ti","savedIndex","savedScope","savedType","isCellSelected","PackageDataList","packageData","handleCreatePackage","handleSetPackageName","packageItem","AddPackageView","handleLabelChange","_e$target","handleUpdateState","handleWeightChange","_e$target2","packageName","statePathKey","handleSelectPackage","showPackageDataList","childMethod","currentPackage","handleGetState","labelNameValue","weightValue","CreateNewPackageForm","editPackage","breadth","CreatePackage","forwardRef","_getSession$organizat3","showPackagePopup","setShowPackagePopup","createPackageError","setCreatePackageError","createPackageSuccess","setCreatePackageSuccess","deletePackage","setDeletePackage","useImperativeHandle","handleClickShowPackage","handleCloseCreatePackage","errorDialogTitle","errorDialogInfo","successDialogTitle","successDialogInfo","getPackageConfiguration","dismissPackageError","dismissPackageSuccess","dismissDeletePackage","handleSubmitDeletePackage","PackOrder","_this$organization","package","showPackagePopupRef","selectPackageRef","statePath","sendPackageConfig","labelName","packageList","sendEditPackageConfig","dataPacked","_this$props$match$par","_this$props$match$par2","createRef","handlePrefillForm","_detailsData$","_detailsData$2","_detailsData$2$","_metaData$packages","_detailsData$3","_detailsData$3$","detailsData","packList","_this$props$match$par3","_packageList$","packageListData","_this$props$match$par4","showMovePendingToPacked","showCompleteOrderPopup","OrderRegisterPayments","customerLocation","_organization$currenc","_organization$currenc2","getCustomerLocationDistance","packingDetail","packingId","detail","ClickCollectOrders","isCollectCenterWithPickup","_storeApiRes$data","_storeApiRes$data$sto","_orderConfigRes$data","_orderConfigRes$data$","_orderConfigRes$data$2","_orderConfigRes$data$3","storeApiRes","orderConfigRes","_orders","_a$customerLocation","_b$customerLocation","_a$customerLocation2","_b$customerLocation2","DesignationForm","DesignationFilter","Designations","manager","managerId","roleIds","AttendanceTable","goToPrevious","goToNext","previous","next","_employee$designation","inTime","headerSet","attendanceStatus","maxKeysIndex","maxHeaderLength","dateKey","getHeaderSet","AttendanceSummaryTable","AttendanceSummary","getStandardTableData","attendace","localInTime","localOutTime","getDisplayAttendance","attendanceSummary","tableBody","attendancesummary","fd","BasicInformationForm","isCustomUrl","changeUrlElement","basicResponse","supportEmail","supportPhone","favicon","basicParams","basicInfo","orgSession","MultiStoreEnabled","BasicInformation","AnalyticsForm","gaAccount","conversionTag","AccountList","accounts","toggleAccountAction","account","actionIcon","isAdd","addIcon","SocialMediaForm","facebookHandle","twitterHandle","hasFacebookLogin","hasTwitterLogin","iosAppLink","androidAppLink","showAccountList","toggleCheckboxChange","handleWhatsappToggle","showStoreList","accountsArray","appLinks","appLinksArray","appStore","socialApi","basicInfoApi","appStoreApi","socialResponse","basicInfoResponse","appStoreResponse","social","whatsappSupportEnabled","whatsappSupportPhone","whatsappSupportEnquiryText","getAppLinks","getSocialMediaAccounts","appLinkApi","socialParams","appLinkParams","basicParamsArray","appLinksKeys","storeInfoResponse","stateName","isWhatsappphoneRequired","SocialMedia","ActionButtons","DeliveryFeeFormulaForm","getLatlngFromPincode","preventDefaultBehavior","PinCodeList","onAddPincode","onDeleteZone","showPincodeInput","setShowPincodeInput","tempPincode","setTempPincode","showDeletePopup","setShowDeletePopup","createHandleDelete","handleEnter","handleSave","PinCodesDisplay","pincodeGroups","pincodeDisplayRef","setExpanded","isContentOverflown","setIsContentOverflown","containerHeight","setContainerHeight","domEl","clientHeight","contentHeight","_group$area$pincodes","deliveryFee","AddForm","_value$pincodes$","continuedAddition","setContinuedAddition","setShowError","_value$pincodes3","_value$pincodes","newPincodes","_oldPincodes3","newPincode","oldPincodes","_oldPincodes","_oldPincodes2","_value$pincodes2","EditForm","_value$area2","pincodeGroup","selectedGroup","setSelectedGroup","groups","isEditable","_value$area","groupData","_value$area$pincodes2","_oldPincodes6","_oldPincodes4","_oldPincodes5","_value$area$pincodes","PincodeFromComponent","handlePincodeGroupAddEdit","toggleAction","handleToggleExpand","handleDeleteZone","handleDataChange","fetchAndUpdate","toggleStoreError","requestMethod","lowerWeightLimit","ratePerWeightUnit","chargePercentage","setAction","nextAction","handleOpenClose","changeEditMode","pincodeArea","hasPincodesSet","FormComp","hidden","handlePincodeDelete","handleKeyDown","RadialList","distinctColors","RadialDisplay","polygonGroups","onSave","markerLocation","_value$area3","_value$area4","RadialFormComponent","handleRadialGroupAddEdit","handleZoneDelete","toggleLocationError","clearTempData","locationError","polygonalArea","getPolygonLocations","_deliveryArea$area","newlyAddedLocations","setTempLocation","_groupData$","_groupData$$area","_groupData$$area$loca","PolygonFromComponent","newlyAddedPolygon","changeMapEditMode","setShowDrawOption","ApartmentList","apartments","onAddapartment","legendColor","apartmentGroups","_group$area$building","building","_value$building4","_value$building5","_value$building$","_value$building$2","addBuilding","setAddBuilding","tempBuildingData","setTempBuildingData","createBuildingValuesChangeHandler","createTempBuildingDataChangeHandler","_value$building3","_value$building2","buildingLatlng","canBeSubmitted","newBuildigData","_value$building","newBuildings","_value$area$building2","_ref12","_ref11","_ref10","_value$area$building","apartmentFormComponent","handleBuildingGroupAddEdit","_data$building$","_data$building$2","colorIndex","apartmentsWithColor","_group$area$building2","buildingObj","_distinctColors$index","polygonOptions","radialOptions","apartmentMarkerColor","MarkerOrange","MarkerSeagreen","MarkerDarkmagenta","MarkerDarkvoilet","pts","formatDataForAllZones","radialArea","polygonLocationZones","_zone$area$locations","radialZones","CommonMapComponent","locationsGroups","polygonRef","getDefaultLocation","enableDrawingMode","defaultCenter","onPolygonComplete","polygon","getLength","xy","getAt","setMap","setNewLocations","pinCodeZone","polygonZone","updatePolygon","polygonPath","setNewEditedLocations","setPolygonRef","isDrawingEnabled","editingCancel","prevPincodes","nextPincodes","nextPolygons","prevPolygons","pincodesChanged","polygonChanged","tempMarkers","addListener","_editPolygon$area$loc","editPolygon","showDrawOption","distinctColorsPolygon","distinctColorsRadial","allStoresLocations","tempMarkersMarker","MarkerDefault","locationObj","polygons","drawnPolygon","radialPolygons","radialZone","radialMarkers","MarkerMaroon","apartmentMarkers","_curr$area","_curr$area$building","counter","buildings","mapTypeControl","streetViewControl","fullscreenControl","fullscreenControlOptions","DrawingManager","drawingControl","drawingControlOptions","drawingModes","UploadKML","handleKmlUpload","KMLUpload","kmlIcon","errorCallBack","MapControls","storeSelectReadOnly","tempDeliveryAreaData","PincodeFormComponent","PolygonFormComponent","ApartmentComponent","postLocationsAfterKML","tempDeliveryArea","_tempDeliveryArea$are","fetchDeliveryAreaData","kmlUploadError","setTempDeliveryArea","setStore","uploadSuccessCallback","selectedLocation","pincodeEditId","radialEditId","kmlUploadPopupShown","showSelectStoreDialog","_response$data$delive","mapEditing","_params$locations","showStoreError","AddDeliveryArea","themes","themeChosen","currentTheme","selectTheme","themeId","desktop","AnnouncementBar","announcementBar","isAnnouncementBarEnabled","handleAnnouncementBarSave","announcementBarSubmitting","handleOnChange","closeAnnouncementIcon","ANNOUNCEMENT_BAR_STATUS","searchableComponent","Videos","Forms","Seller","Features","HighlightsImg","LayoutManager","getAppointmentFormData","configAPI","_resp$data","googleCaptchaKey","googleCaptchaSecret","payloadData","showSaveDialog","appointmentForm","previousState","categoriesDataLoaded","tagsDataLoaded","brandsDataLoaded","timeLine","updateLayouts","getSelectElement","setLayoutSchedulerValues","setLayoutTimeline","handleDeleteSceduledLayout","fetchWrapper","fetchAnnouncementBarData","timeline","footer","_response$data$page2","_response$data$page2$","_response$data2$page$","_response$data6$page","_response$data6$page$","_response$data7$page","_response$data7$page$","splashObjectData","footerLayoutData","_response$data5$page","_response$data5$page$","fromDate","fromTime","toDate","toTime","fetchLayoutTimeLine","timeLines","startDatetime","endDatetime","mappingPayload","_formData$config","_formData$config2","androidAppConfig","iosAppConfig","mapSplashResolutions","_config$splashMdpi","_config$splashMdpi$im","_config$splashMdpi2","splashResolutions","splash","splashFileUrl","_splash$key","_this$data$0$data$id","_this$data","_this$data$","_this$data$$data","isDelete","footerId","showDeleteLayoutPopup","_data$","_data2","_data2$","fromTimeStamp","toTimeStamp","_response$data$page3","footerResponseObject","_response$data10$page","_response$data11$page","_response$data12$page","_response$data13$page","scrollTo","SearchableComponent","showNewLayoutForm","getSchedulerForm","getTimelineSelector","arrow","getDeleteButton","_this$data2","isSplashScreen","isFooterPage","selectForCategoryTagBrandSelection","selectScheduler","datePicker","generateSubMenu","submit","CategorySequencing","fetchNavData","menuapi","handleResetCatagories","onConfirmClick","removeItemFromList","onAppendMethod","onAppendClick","list","recursivelyTraversing","findingNode","returnedObject","nextParent","prevParent","nextParentId","prevParentId","TagIcon","LinkIcon","Page","change","Change","customize","Customize","navigation","CategorySequence","ExtensionForm","getList","desc","descriptions","pricing","showExtra","lastUpdated","activeInstallations","generateData","oldArray","languageKey","InstoreConfigForm","resetToDefault","obj1","obj2","isObjSame","updateConfig","pickingSequence","pickerSeesOrder","packingOfOrder","orderLabelPrinting","orderLabelFormat","additionalQCStep","allowedConfig","pickingSequenceMethodsOpts","pickingViewOptions","OrderLabelPrintingOptions","OrderLabelFormatOptions","qualityCheckingOptions","packingDetailsOptions","modifyData","StoreSelect","InstoreSettings","updatedConfig","isStoreConfigurable","TawkChatForm","ConfigTypes","currentTabIndex","showDeleteDialog","handleOnTabClick","tranformedResponse","entityMetadata","indexed","searchable","isPrivate","mandatory","LanguageSelect","_this$state$values$gl","_this$state$values$gl2","OrderManagementForm","passwordPolicy","MissingDetails","slugComponentDetail","TawkChatSettings","MultiLingualSupport","PasswordPolicySupport","ExtensionDetailsForm","metaDataExtension","gaData","ExtensionTableRow","detailsPopup","quickActionPopup","refreshPrompt","hideDetailsPopup","showDetailsPopup","hideQuickActionPopup","showQuickActionPopup","showRefreshPrompt","hideRefreshPrompt","_targetStatus","enableHelperText","disableHelperText","addedOn","isConfigurable","configureable","extensionSettingAvailable","desktopView","ExtensionTypes","All","Operations","Catalogue","Marketing","CustomerSupport","OnlineStore","Payments","HumanResource","ExtnTypeFilters","extn","Extensions","windowSize","registerResize","newExtensions","filterExtensions","entityName","StoreConfigForm","stockOverride","minPurchasableStock","maxPurchasableStock","stockBuffer","saveSelectedStore","CategoriesListing","selectedStoreId","searchProduct","cat","editForm","entities","TabsComponent","ListingComponent","StoreConfigVariables","StoreConfig","InviteForm","InviteUserButton","inviteError","countryIsoCode","handleException","Users","StyledSelect","PermissionsForm","users","loadingUsers","loadingUserPermissions","failedLoadingData","failedLoadingUsers","failedLoadingUserPermissions","selectedUser","getUserList","getUserPermissions","copyUserPermissions","GET","PUT","POST","updatePermissions","methods","allowedPermissions","allPermissions","methodsToUpdate","parsePermissions","scrollRef","scrollHeight","Permissions","categorizePermissions","prunePermissions","finalArray","permissionObj","originalIndex","uncategorized","prune","allKeysFalse","newPermissions","apiPermissions","methodPermissions","hasPermission","UsersRouter","tooltipImg","MobileAppsForm","loadingThemes","loadData","loadThemes","mobileApp","MobileApps","Send","midText","AddEmail","NotificationsForm","popupFormError","showOrderEmailPopup","showOrderPhonePopup","showCustomerEmailPopup","showCustomerPhonePopup","showOrderDeleteEmailDialog","showOrderDeletePhoneDialog","showCustomerDeleteEmailDialog","showCustomerDeletePhoneDialog","orderNotificationEmails","orderNotificationPhones","customerNotificationEmails","customerNotificationPhones","handleOrderEmailDelete","handleOrderPhoneDelete","handleOrderEmailAdd","handleOrderPhoneAdd","handleCustomerEmailAdd","handleCustomerPhoneAdd","handleCustomerEmailDelete","handleCustomerPhoneDelete","closeOrderEmailPopup","closeOrderPhonePopup","closeCustomerEmailPopup","closeCustomerPhonePopup","closeSuccess","hideEmailDeleteConfirmation","hidePhoneDeleteConfirmation","hideCustomerDeleteEmailDialog","hideCustomerDeletePhoneDialog","notification","orderPlaceEmailRecipients","orderPlaceSmsRecipients","customerSignUpSmsRecipients","customerSignUpEmailRecipients","notifyOnCustomerSignUp","notifyOnCustomerWalletRecharge","notifyOnCustomerAddNewAddress","notifyOnOrderCancel","notifyOnOrderPlace","notifyOnOrderRefund","newEmails","isValidNumber","newPhones","showEmails","emailsToShow","MailIcon","showCustomerEmails","hideOrderDeleteEmailDialog","showPhones","phonesToShow","SmsIcon","showCustomerPhones","hideOrderDeletePhoneDialog","showDeletePhoneDialog","Notifications","BankForm","showConfirmDelete","bankDetails","PaymentGatewayForm","pm","parentPaymentModeId","pmIds","addedPaymentModes","parentGw","parentGwId","parentGwName","cpm","gateways","gw","LonerPaymentModes","CHECKBOX_SKINS","back","DefaultPaymentConfiguration","linkedBankAccounts","bankFormShown","addBankShown","showSucessDialog","showBankDialog","editError","addError","showBankForm","showAddBankForm","hideBankForm","addBankAccount","hideAddBankForm","editBankAccount","deleteBankAccount","bankApi","paymentModesApi","bankResponse","bankaccount","paymentmode","bankError","paymentModeError","bankid","responseBankAccount","newLinkedBankAccounts","editedAccountIndex","remainingAccounts","bankName","accountNumber","switchToCustom","addedGateways","PaymentGatewayConfigurationForm","showConfigs","selectedPaymentModes","accountConfiguration","handleDialogClose","transformedConfigsArray","transformedConfig","meta","parsedConfigs","innerKey","supportedPaymentModes","toRemove","paymentModeId","pmKeys","newPmodes","modes","paymentModeName","gatewayId","thisGw","gatewayPaymentModes","conf","keyArray","sub","othergateways","configuredGateways","disable","paymentAccountId","paymentaccount","paymentGateways","loners","PaymentGatewayConfiguration","onToggle","colSpan","colgroup","SubHeader","subHeader","TableRow","gateway","paymentModesOrder","paymentModeRate","gpm","rate","RateForm","getGatewayNames","getHeaderDetails","showGatewayConfig","providerName","pmHeaderDetails","singlePm","paymentModesWithChilPm","mainDivision","pmName","subPaymentModes","subHeaderObject","headerObject","pg","minWidth","span","rowSpan","PaymentGatewaySelector","paymentgateway","CustomPaymentConfiguration","selectedGateway","configDoneGateways","configureExistingGatewayMessage","selectGateway","getAddedGateways","getSupportedModesForGateways","updateGateways","gatewaysData","parentPaymentId","_el","paymentGatewayId","support","requiredConfigs","paymentgatewaysApi","paymentgatewaysResponse","addGateway","newAddedGateways","newGateway","gwId","RateConfiguration","PaymentChoices","PaymentConfiguration","gatewayChoice","getAccountStatus","switchToDefault","paymentAccount","accountType","gatewayChoices","GatewayConfiguration","SEOSetting","seo","seos","keywords","pageName","thisSeo","SEO","SEOForm","AddRackForm","rackNumber","newZone","zoneType","validateAndSubmit","_this$state$values$ne","rackArray","rack","rackIndex","handleZoneChange","sequenceData","selectedZone","handleZoneEdit","saveRacks","addRackPopup","showRackDeleteDialog","clearSequenceState","tempItems","getRacks","handleRackClose","addRack","hideRackDeleteDialog","clearSequence","undoClear","_response$data$pickin","_response$data$pickin2","pickingsequence","pickingData","currItems","_formData$newZone","_formData$newZone2","_formData$newZone3","_formData$newZone4","_this$state$sequenceD","_formData$newZone5","transitionDuration","RackContainer","RackManagement","RackWithStores","Loader3Dots","class","ind","SearchConfigForm","removeObjectWithId","objWithIdIndex","updateProductList","_products","productsCopy","getPageNumber","productListDetail","handleFetchProducts","showViewMoreLoader","handleViewMoreVisibility","searchOverrideArray","searchOverrider","entityAllowedForSearchOverride","newSearchTab","newProducts","searchPage","categoryPage","brandPage","tagPage","readonly","categoryTableProperties","validTo","names","ent","include","productRanking","brn","tg","validFromDate","validToDate","validToTime","sendformData","SEARCH","TAG","SearchConfiguration","_state$tabs","ENTER_TEXT","ProviderConfiguration","allowKey","selectedProviderConfig","Actions","allowedValues","splittedNameAtCapitalLetter","placeholderText","CommunicationForm","getStateValues","callServiceProvider","callServiceProviderCredentials","communicationValues","smsServiceProvider","smsServiceProviderCredentials","getProviderConfig","_this$state$callProvi","_this$state$smsProvid","callProviders","providerConfig","smsProviders","emailServiceProviderConfig","getSmsProviders","smsProvider","smsProviderError","getCallProviders","callProvider","callProviderError","_this$state$callProvi2","_this$state$smsProvid2","onProviderChange","stateValues","EmailIcon","_formData$smsServiceP","_formData$callService","_formData$email","CommunicationConfig","systemGenerated","CustomerServiceTags","PickingConfig","isMaxOrdersCanBePickedAtOnceEnabled","multiplePickingAllowed","partialPickingAllowed","maxOrdersCanBePickedAtOnce","HEADING_TEXT","SAVE_TEXT","WalletConfiguration","configsText","wallet","configKey","configKeyPrefix","configKeys","DetailsCard","leftTitle","leftValue","rightTitle","rightValue","bottomValue","LeaveActions","showRejectDialog","approveLeave","rejectLeave","appliedOn","gridView","TeamLeaves","tableProps","leaveType","userleave","cancelLeave","TeamCancellableleaves","validatePasswords","hasSixCharacters","hasLowercaseLetter","hasUppercaseLetter","hasNumber","invalidConfirmPassword","ChangePasswordForm","oldPassword","validationParams","sixCharacterClassName","uppercaseClassName","lowercaseClassName","numberClassName","confirmPasswordError","disabledSubmitButton","isValidFields","ChangePassword","RechargeWidget","balance","rechargeAmount","processing","gatewayDetails","getCurrentBalance","paymentGatewayForm","_service$replace","AccountBalance","transaction","LeaveForm","LeaveTypes","LeaveStatus","MyLeavesFilter","MyLeaves","LeavesFiltersForm","ReactBigCalendar","setLocalizer","momentLocalizer","BigCalendar","onSelectEvent","eventPropGetter","defaultView","accessors","monthEvent","onNavigate","startAccessor","endAccessor","titleAccessor","MonthEvent","eventElement","eventImage","userImageUrl","userName","LeaveSummary","selectedLeaveType","selectedStatus","eventBackup","leaveTypes","filterByUser","filterByType","getCalendar","handlePrev","handleNext","onClickToday","toggleActiveClass","team","leavesummary","displayMonth","displayYear","eventId","toLocaleLowerCase","RefferalManagementForm","bonusValue","newCustomerSignupBonusAmount","maxBonusValue","referrerBonusType","referralManagement","negRefBonusErr","negMaxBonusErr","negSignupBonusErr","notShowHelmet","requiredKeyArray","JsonFileUpload","hasAllKeys","setFileData","googleMerchantCenter","contentAPICredentials","for","showFileName","GoogleMerchantForm","fileData","showSuccessMsg","GoogleMerchantCenterForm","ProductVariantForm","hasProductProperties","setHasProductProperties","setProperties","singleProperty","setSingleProperty","deleteTarget","setDeleteTarget","showWarningDialog","setShowWarningDialog","setShowErrorDialog","setShowSuccessDialog","getProductProperties","handleAddProperty","handleDeleteProductProperty","handleDeleteKey","handleAddKey","newProperties","ProductVariantSupport","slotTypes","SlotForm","SlotConfig","handleApi","_values$globalConfig","_values$globalConfig3","_values$globalConfig2","_values$globalConfig4","businessOpeningTime","businessClosingTime","SlotConfiguration","h","asap","m","Slots","SlotsContainer","hasConfigAccess","logisticApi","orderApi","_orderApiResponse$dat","_orderApiResponse$dat2","_orderApiResponse$dat3","_orderConfigResponse$","_orderConfigResponse$2","_orderConfigResponse$3","_orderConfigResponse$4","_orderConfigResponse$5","_orderConfigResponse$6","_orderConfigResponse$7","_orderConfigResponse$8","orderApiResponse","logisticApiResponse","orderConfigResponse","minimumOrderValue","generateRandomReferenceNumbers","minimumOrderValueForFreeDelivery","minimumOrderValueForFreePickup","minimumOrderValueForFreePickUp","minimumOrderValueForDelivery","minimumOrderValueForPickup","_this$state$values2$o","isCODEnabled","paymentMeyhod","logisticAndOrderConfigApi","orderResponse","_this$state$values3$o","_this$state$values4","_this$state$values4$o","_this$state$values5","_this$state$values5$o","_this$state$values6","_this$state$values6$o","_this$state$values7","_this$state$values7$o","_this$state$values9","_this$state$values9$o","_this$state$values8","_this$state$values8$c","_this$state$values10","_this$state$values10$","OrderManagement","IntegrationSettingsForm","fetchConfigData","analyticsConfigApi","_analyticsConfigRespo","_analyticsConfigRespo2","analyticsConfigResponse","googleTagManagerId","gtmId","websiteData","IntegrationSettings","handleEditPackage","handleDeletePackage","CreateNewPackage","PackagesTable","setEditPackage","listingKey","setListingKey","isPackageEditInfo","setIsPackageEditInfo","orderPackage","orderPackageId","OrderPackageConfigRouter","DESCRIPTION_FIELDS_ALLOWED","DUNZO","SHIPROCKET","descriptionApplicable","CourierSupport","handleValidation","validated","getActiveProviders","providers","providerActive","providerSelected","addedServices","providersCreds","logisticsServiceProvidersCredential","providerFormVisible","updateExtension","extensionData","extensionIndex","extensionId","extensionStatus","shipRocketExtenson","toggleExtension","updateProviderStatus","toggleProviderStatus","handleCopy","copied","handleFormView","newServices","handleProviderDelete","handleDeleteDialog","courierServices","_this$state$providers","_this$state$providers2","submitDisable","CopyToClipboard","onCopy","CourierSupportForm","ProductRestrictionForm","_product$images","RestrictedProductFileUpload","FileUploadAction","organizationData","maxPurchasableLimit","productRestrictions","_item$rule","_product$filter","_item$rule2","_item$rule3","_item$rule4","renewalTime","startDateTime","endDateTime","_productRestrictions","_productRestrictions2","_productRestrictions3","_productRestrictions4","_productRestrictions5","_productRestrictions6","_startDateTime","_startDateTime2","_endDateTime","_endDateTime2","_productRestrictions7","_productRestrictions8","_productRestrictions9","_productRestrictions10","_productRestrictions11","_productRestrictions12","productRestriction","totalHours","ProductRestrictionConfig","USER_ACTIVITY_LOGS_ENTITIES","tableNameHeader","UserActivityFilters","userNames","userObj","storeObj","actionText","updatedFields","objectDiff","checkChanges","value1","value2","isPlainObject","recursiveObj","removed","modifiedStr","currentEntity","tableHeaders","getTableHeader","UserName","actionTime","UserActivityLogsTable","setEntityName","_response$data$histor","_response$data$histor2","UserActivityLogs","OnboardingContainer","hasAccess","hasExtensionsEnabled","Router","getCatalogueMenu","catalogueMenu","refresh","requiredPermissions","catalogue","sellers","hr","settings","getOrganizationDetails","PrivateRoute","isLazy","rest","hasPageAccess","redirectedFrom","userResponse","organizaitonResponse","backOfficeResponse","googleMapsApiKey","hasPermissionsInfo","getPagePermissions","Route","LazyComponentLoader","submenuRedirect","mainMenuItem","_Object$keys","menuList","newMenuList","routeValue","getFirstRoute","isMarketOwner","Switch","exact","CatalogueDashboard","Orders","Disputes","Returns","StoreSlotConfigTable","FileReturn","Vehicles","VehicleVendor","Trips","CsCustomers","CsOrders","Offers","Blogs","OrdersAnalytics","Stores","DeliveryArea","Themes","StoreConfiguration","PickupConfiguration","OrderPackageConfig","LeaveManagement","auto","StringConstruct","targetLength","padString","messageHandler","postMessage","ReactGA","initialize","App","initializeFaro","pageview","locale","FaroErrorBoundary","withFaroProfiler"],"mappings":"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,MAER,CACE1T,KAAM,YACN0T,KAAM,MAER,CACE1T,KAAM,QACN0T,KAAM,MAER,CACE1T,KAAM,UACN0T,KAAM,MAER,CACE1T,KAAM,WACN0T,KAAM,MAER,CACE1T,KAAM,iBACN0T,KAAM,MAER,CACE1T,KAAM,QACN0T,KAAM,MAER,CACE1T,KAAM,SACN0T,KAAM,MAER,CACE1T,KAAM,WACN0T,KAAM,MAER,CACE1T,KAAM,WACN0T,KAAM,MAER,CACE1T,KAAM,UACN0T,KAAM,MAER,CACE1T,KAAM,UACN0T,KAAM,MAER,CACE1T,KAAM,UACN0T,KAAM,MAER,CACE1T,KAAM,WACN0T,KAAM,MAER,CACE1T,KAAM,cACN0T,KAAM,MAER,CACE1T,KAAM,QACN0T,KAAM,MAER,CACE1T,KAAM,YACN0T,KAAM,MAER,CACE1T,KAAM,YACN0T,KAAM,MAER,CACE1T,KAAM,QACN0T,KAAM,MAER,CACE1T,KAAM,aACN0T,KAAM,MAER,CACE1T,KAAM,kBACN0T,KAAM,MAER,CACE1T,KAAM,QACN0T,KAAM,MAER,CACE1T,KAAM,kBACN0T,KAAM,MAER,CACE1T,KAAM,UACN0T,KAAM,MAER,CACE1T,KAAM,WACN0T,KAAM,MAER,CACE1T,KAAM,SACN0T,KAAM,MAER,CACE1T,KAAM,SACN0T,KAAM,MAER,CACE1T,KAAM,MACN0T,KAAM,MAER,CACE1T,KAAM,UACN0T,KAAM,MAER,CACE1T,KAAM,aACN0T,KAAM,MAER,CACE1T,KAAM,aACN0T,KAAM,MAER,CACE1T,KAAM,YACN0T,KAAM,QAER,CACE1T,KAAM,SACN0T,KAAM,MAER,CACE1T,KAAM,UACN0T,KAAM,MAER,CACE1T,KAAM,WACN0T,KAAM,MAER,CACE1T,KAAM,YACN0T,KAAM,MAER,CACE1T,KAAM,UACN0T,KAAM,MAER,CACE1T,KAAM,UACN0T,KAAM,MAER,CACE1T,KAAM,SACN0T,KAAM,MAER,CACE1T,KAAM,SACN0T,KAAM,MAER,CACE1T,KAAM,SACN0T,KAAM,MAER,CACE1T,KAAM,UACN0T,KAAM,MAER,CA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AU,IAA0B,mC,qBCA3CD,EAAOC,QAAU,IAA0B,oC,iBCA3CD,EAAOC,QAAU,IAA0B,8C,gBCA3CD,EAAOC,QAAU,IAA0B,iD,gBCA3CD,EAAOC,QAAU,IAA0B,kC,+bCA3CD,EAAOC,QAAU,IAA0B,iD,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,mD,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,qC,iBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,kC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,mC,iBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,iD,gBCA3CD,EAAOC,QAAU,IAA0B,+C,oBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,gD,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,8C,iBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,kC,gBCA3CD,EAAOC,QAAU,IAA0B,kC,iBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,gD,iBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,8C,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,8C,gBCA3CD,EAAOC,QAAU,IAA0B,+C,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,8C,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,mC,oBCA3CD,EAAOC,QAAU,IAA0B,wD,gBCA3CD,EAAOC,QAAU,IAA0B,kC,gBCA3CD,EAAOC,QAAU,IAA0B,kC,gBCA3CD,EAAOC,QAAU,IAA0B,kC,kBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,kC,cCA3CD,EAAOC,QAAU,swI,gBCAjBD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,iC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,iC,gBCA3CD,EAAOC,QAAU,IAA0B,iC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,8C,gBCA3CD,EAAOC,QAAU,IAA0B,yC,iBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,8C,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,+C,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,kC,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,wD,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,8C,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,wC,iBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,+C,gBCA3CD,EAAOC,QAAU,IAA0B,mC,gBCA3CD,EAAOC,QAAU,IAA0B,+C,cCA3CD,EAAOC,QAAU,88X,cCAjBD,EAAOC,QAAU,0oS,cCAjBD,EAAOC,QAAU,02X,gBCAjBD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,6C,0BCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,8C,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,+C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,iC,gBCA3CD,EAAOC,QAAU,IAA0B,iD,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,cCA3CD,EAAOC,QAAU,kZ,cCAjBD,EAAOC,QAAU,sZ,gBCAjBD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,gD,gBCA3CD,EAAOC,QAAU,IAA0B,kD,gBCA3CD,EAAOC,QAAU,IAA0B,qD,gBCA3CD,EAAOC,QAAU,IAA0B,oD,gBCA3CD,EAAOC,QAAU,IAA0B,gD,gBCA3CD,EAAOC,QAAU,IAA0B,iC,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,wD,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EA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","file":"static/js/main.594acf42.chunk.js","sourcesContent":["const data = {\n \"login.heading\": \"Welcome to SmartStore\",\n \"login.subheading\": \"Enter your details below\",\n \"login.buttonText\": \"Login\",\n \"login.email.heading\": \"Email address\",\n \"login.email.placeholder\": \"Enter your email address\",\n \"login.username.heading\": \"Username\",\n \"login.username.placeholder\": \"Username\",\n \"login.organisation.heading\": \"Organisation\",\n \"login.organisation.placeholder\": \"Organisation\",\n \"login.password.heading\": \"Password\",\n \"login.password.placeholder\": \"Password\",\n \"login.remember\": \"Remember me\",\n \"login.forgotPassword\": \"Forgot Password\",\n \"login.submitText\": \"Login\",\n \"login.newUser.message\": \"Don't have an account?\",\n \"login.newUser.signupText\": \"Create Account\",\n};\n\nexport default data;\n","const data = {\n \"resetPassword.heading\": \"Forgot password?\",\n \"resetPassword.subheading\": \"Enter your details below\",\n \"resetPassword.buttonText\": \"Submit\",\n \"resetPassword.successMessage\": \"Your password has been successfully reset\",\n \"resetPassword.loginLinkText\": \"Go to login\",\n \"resetPassword.login\": \"Login\",\n \"resetPassword.oldUserText\": \"Already have an account?\",\n};\n\nexport default data;\n","const data = {\n \"changePassword.heading\": \"Change Password\",\n \"changePassword.different.confirmPassword\":\n \"Confirm password is not same as New password\",\n \"changePassword.oldPassword.heading\": \"Old Password\",\n \"changePassword.oldPassword.placeholder\": \"Enter Old Password\",\n \"changePassword.newPassword.heading\": \"New Password\",\n \"changePassword.newPassword.placeholder\": \"Enter New Password\",\n \"changePassword.confirmPassword.heading\": \"Confirm Password\",\n \"changePassword.confirmPassword.placeholder\": \"Confirm New Password\",\n \"changePassword.submit.text\": \"Change Password\",\n \"changePassword.cancel.text\": \"Cancel\",\n \"changePassword.list.heading\": \"Password Must Contain\",\n \"changePassword.list.characterLimit\": \"At least 6 characters\",\n \"changePassword.list.uppercase\": \"At least 1 upper case letter (A..Z)\",\n \"changePassword.list.lowercase\": \"At least 1 lower case letter (a..z)\",\n \"changePassword.list.number\": \"At least 1 number (0..9)\",\n \"changePassword.save.success.title\": \"Password successfully changed\",\n \"changePassword.save.success.closeText\": \"Okay\",\n};\nexport default data;\n","const data = {\n \"menu.selectLanguage.heading\": \"Select language\",\n \"menu.changePassword.heading\": \"Change Password\",\n \"menu.item.operations\": \"Operations\",\n \"menu.item.dashboard\": \"Dashboard\",\n \"menu.item.stores\": \"Stores\",\n \"menu.item.customers\": \"Customers\",\n \"menu.item.orders\": \"Orders\",\n \"menu.item.orders-analytics\": \"Orders Analytics\",\n \"menu.item.reports\": \"Reports\",\n \"menu.item.customer-support\": \"Customer Support\",\n \"menu.item.trip-planner\": \"Trip Planner\",\n \"menu.item.logistics\": \"Logistics\",\n \"menu.item.catalogue\": \"Catalogue\",\n \"menu.item.categories\": \"Categories\",\n \"menu.item.brands\": \"Brands\",\n \"menu.item.products\": \"Products\",\n \"menu.item.tags\": \"Tags\",\n \"menu.item.substitution-groups\": \"Substitution Groups\",\n \"menu.item.marketing\": \"Marketing\",\n \"menu.item.coupons\": \"Coupons\",\n \"menu.item.blog\": \"Blog\",\n \"menu.item.rating-reviews\": \"Rating And Reviews\",\n \"menu.item.recipe\": \"Recipe\",\n \"menu.item.influencer\": \"Influencer\",\n \"menu.item.pages\": \"Pages\",\n \"menu.item.campaigns\": \"Campaigns\",\n \"menu.item.settings\": \"Settings\",\n \"menu.item.basic-information\": \"Basic information\",\n \"menu.item.contact-details\": \"Contact Details\",\n \"menu.item.themes\": \"Website\",\n \"menu.item.extensions\": \"Extensions\",\n \"menu.item.seo\": \"SEO\",\n \"menu.item.users\": \"Multi User Support\",\n \"menu.item.mobile-apps\": \"Mobile Apps\",\n \"menu.item.payment-configuration\": \"Online Payment\",\n \"menu.item.my-account\": \"My account\",\n \"menu.item.account-balance\": \"Account Balance\",\n \"menu.item.change-password\": \"Change Password\",\n \"menu.item.logout\": \"Logout\",\n \"menu.item.delivery-area\": \"Delivery Area\",\n \"menu.item.notifications\": \"Notifications\",\n \"menu.item.website-link\": \"Your online store\",\n \"menu.item.picking-queue\": \"Picking Queue\",\n \"menu.item.vehicles\": \"Vehicles\",\n \"menu.item.vehicle-planning\": \"Vehicle Planning\",\n \"menu.item.trips\": \"Trips\",\n \"menu.item.manage-runners\": \"Manage Runner Executives\",\n \"menu.item.designations\": \"Designations\",\n \"menu.item.leave-summary\": \"Leave Summary\",\n \"menu.item.attendance-summary\": \"Attendance Summary\",\n \"menu.item.hr\": \"HR\",\n \"menu.item.leave-management\": \"Leave Management\",\n \"menu.item.employees\": \"Employees\",\n \"menu.item.my-leaves\": \"My Leaves\",\n \"menu.item.rack-management\": \"Rack Mangement\",\n \"menu.item.disputes\": \"Disputes\",\n \"menu.item.returns\": \"Pending Returns\",\n \"menu.item.click-collect-orders\": \"Click & Collect Orders\",\n \"menu.notificationToday.empty\": \"There are no notification shown here\",\n \"menu.item.slots\": \"Slots\",\n \"menu.item.store-slot-config\": \"Store Slot Blocking\",\n \"menu.item.roles\": \"Roles\",\n \"menu.item.tawk\": \"Tawk.to Live Chat\",\n \"menu.item.Seo\": \"SEO\",\n \"menu.item.sellers\": \"Sellers\",\n \"menu.item.seller\": \"Sellers\",\n \"menu.item.user\": \"Users\",\n\n \"review.order.table.header.orderid\": \"OrderID\",\n \"review.order.table.header.rating\": \"Rating\",\n \"review.order.table.header.date\": \"Date\",\n \"review.order.table.header.customer\": \"Customer\",\n \"review.order.table.header.more\": \"More\",\n \"review.all.product.table.header.item\": \"Item\",\n \"review.individual.product.table.header.average.rating\": \"Average Ratings\",\n\n \"menu.item.metadata\": \"Custom fields\",\n \"menu.item.analytics\": \"Analytics\",\n \"menu.item.instore\": \"Instore Processing\",\n \"menu.item.pickers\": \"Manage Pickers\",\n \"menu.item.logistics-configuration\": \"Logistics\",\n \"menu.item.user-hover\": \"user hover\",\n \"menu.item.offers\": \"Offers\",\n \"menu.item.calls\": \"Calls\",\n \"menu.item.web-banners\": \"Banners\",\n \"menu.item.store-configuration\": \"Stock Overrides\",\n \"menu.item.search-configuration\": \"Search Overrides\",\n \"menu.item.communication-configuration\": \"Communication\",\n \"menu.item.customer-tags\": \"Customer Tags\",\n \"menu.item.capacity-planning\": \"Capacity Planning\",\n \"menu.item.bulk-coupons\": \"Bulk Coupons\",\n \"menu.item.slot-charges\": \"Slot Charges\",\n \"menu.item.order-config\": \"Order Config\",\n \"menu.item.integration-settings\": \"Integration Settings\",\n \"menu.item.order-package-config\": \"Packaging\",\n \"menu.item.courier-support\": \"Shipping\",\n \"menu.item.referral-management\": \"Referral Management\",\n \"menu.item.google-merchant-center\": \"Google Merchant Center\",\n \"menu.item.product-variant-support\": \"Product Variant\",\n \"menu.item.product-restrictions\": \"Product Restrictions\",\n \"menu.item.master-catalogue\": \"Master Catalogue\",\n \"menu.item.seller-catalogue\": \"Seller Catalogue\",\n \"menu.item.user-activity-logs\": \"User Activity Logs\",\n \"user.activity.logs.empty.message\": \"No logs available for this entity\",\n};\nexport default data;\n","const data = {\n \"signup.heading\": \"Create Your Account\",\n \"signup.subheading\": \"Enter your details below\",\n \"signup.buttonText\": \"Sign Up\",\n \"signup.email.heading\": \"EMAIL ADDRESS\",\n \"signup.email.placeholder\": \"Enter your email address\",\n \"signup.name.heading\": \"NAME\",\n \"signup.name.placeholder\": \"Enter your name\",\n \"signup.phone.heading\": \"PHONE NUMBER\",\n \"signup.phone.placeholder\": \"Enter your phone number\",\n \"signup.oldUser.message\": \"Already have an account? \",\n \"signup.oldUser.signinText\": \"Sign In\",\n \"signup.submitText\": \"Sign Up\",\n \"user.not.verified.email\":\n \"Your email id is not verified, you may not receive order notifications.\",\n \"resend.verification.link\": \"Resend verification link\",\n \"email.verified\": \"Your email has been verified!\",\n \"password.sent.to.mobile\":\n \"Your account password has been sent to your mobile.\",\n \"email.verified.text\": \"verified\",\n \"email.not.verified.text\": \"not verified\",\n \"use.password.sent.to.registered.mobile\":\n \"Please use the password sent to your registered mobile number\",\n \"account.created\": \"We have created an account for you!\",\n \"verification.email.sent\":\n \"A verification email has been sent to your email address.\",\n};\n\nexport default data;\n","const data = {\n \"onboarding.basicInfo.heading\": \"Provide Store Information\",\n \"onboarding.basicInfo.sencondaryHeading\":\n \"Enter your store information below and\",\n \"onboarding.basicInfo.subDomain.text\": \"subdomain\",\n \"onboarding.basicInfo.storeurl.description\":\n \"Your store URL is provided free of cost at smartstore.express. If you already own a domain\",\n \"onboarding.basicInfo.clickHere.text\": \"click here\",\n \"onboarding.basicInfo.register.text\": \"register\",\n \"onboarding.basicInfo.newOne.text\": \"a new one\",\n \"onboarding.basicInfo.useIt.text\": \"to use it or\",\n \"onboarding.industry.heading\": \"What is your industry\",\n \"onboarding.industry.sencondaryHeading\": \"Select an industry below\",\n \"onboarding.products.heading\": \"Add products to your website\",\n \"onboarding.products.sencondaryHeading\":\n \"Use below 10 sample products to create your Grocery website now and\",\n \"onboarding.theme.heading\": \"Choose your theme\",\n \"onboarding.theme.sencondaryHeading\":\n \"Here is your default theme for your Grocery website and\",\n \"onboarding.continue.text\": \"Continue\",\n \"onboarding.back.text\": \"Back\",\n \"onboarding.createWebsite.text\": \"Create your website now\",\n \"onboarding.seeMoreIndustries.text\": \"See more industries here\",\n \"onboarding.changeLater.text\": \"you can change later here\",\n\n \"analytics.heading\": \"Analytics\",\n \"analytics.tracking.heading\": \"GOOGLE ANALYTICS TRACKING ID\",\n \"analytics.tracking.placeholder\": \"UA-XXXXXXXX-X\",\n \"analytics.conversionPixel.heading\": \"CONVERSION PIXEL\",\n \"analytics.tracking.description\":\n \"You can find your tracking ID by going to Google Analytics Admin > Property > Tracking Info > Tracking Code. Tracking ID will be of form UA-XXXXXXXX-X.\",\n \"analytics.conversionPixel.description\":\n \"Google analytics conversion will be automatically tracked, if tracking ID has been provided. Any additional conversion pixel code can be added here. The codes will be fired when a new order comes.\",\n \"analytics.submit.text\": \"Save\",\n \"analytics.cancel.text\": \"Cancel\",\n \"analytics.invalidTrackingId\": \"Enter a valid Tracking ID\",\n\n \"basicInfo.heading\": \"Basic Information\",\n \"basicInfo.storename.heading\": \"Store Name\",\n \"basicInfo.storename.support.phone\": \"Support Phone\",\n \"basicInfo.storename.support.phone.placeholder\":\n \"Enter a support phone number\",\n \"basicInfo.form.minimumOrderValue.placeholder\":\n \"Enter the minimum order value\",\n \"basicInfo.storename.support.email\": \"Support Email\",\n \"basicInfo.storename.support.email.placeholder\":\n \"Enter a support email address\",\n \"basicInfo.storename.description\":\n \"Store name is used in customer communications. It can also be used by themes to display your name in the website and mobile applications\",\n \"basicInfo.storename.placeholder\": \"Your store\",\n \"basicInfo.storeurl.heading\": \"Store Url\",\n \"basicInfo.storeurl.placeholder\": \"Enter your store name\",\n \"basicInfo.supportWWW\": \"SUPPORT WWW\",\n \"basicInfo.uploadImage.heading\": \"Upload Your Logo\",\n \"basicInfo.uploadImage.placeholder\": \"Click here to upload or drag your logo\",\n \"basicInfo.uploadImage.description\":\n \"Logo should be of at least 180x180 px and maximum of 2MB. Logo is used on your website, mobile applications and customer emails.\",\n \"basicInfo.customDomain.description\":\n \"Create a new CNAME record pointing to {domain}\",\n \"basicInfo.submit.text\": \"Save\",\n \"basicInfo.cancel.text\": \"Cancel\",\n \"basicInfo.invalidDomain\": \"Enter a valid domain name\",\n \"basicInfo.save.success.title\": \"Settings have been successfully saved\",\n \"basicInfo.save.success.closeText\": \"Okay\",\n \"basicInfo.save.error.title\":\n \"Something went wrong while saving. Please try again later\",\n \"basicInfo.save.error.closeText\": \"Okay\",\n \"basicInfo.form.location.heading\": \"Location\",\n \"basicInfo.form.location.placeholder\": \"Search for your location\",\n \"basicInfo.form.location.requiredMessage\": \"Please set store's location\",\n \"basicInfo.form.address.heading\": \"Address\",\n \"basicInfo.form.address.placeholder\": \"Enter your store's complete address\",\n \"basicInfo.uploadFavicon.heading\": \"Upload Your Favicon\",\n \"basicInfo.uploadFavicon.placeholder\":\n \"Click here to upload or drag your Favicon\",\n \"basicInfo.uploadFavicon.description\":\n \"Upload fav icon in 32x32 px (recommended) with transparent background.\",\n\n \"socialMedia.heading\": \"Social Media\",\n \"socialMedia.whatsappSupportEnabled\": \"Enable WhatsApp Support\",\n \"socialMedia.whatsappSupportPhone\": \"WhatsApp Support Phone\",\n \"socialMedia.whatsappSupportPhone.placeholder\":\n \"Enter WhatsApp Support Phone Number\",\n \"socialMedia.whatsappSupportEnquiryText\": \"Whatsapp Support Enquiry Text\",\n \"socialMedia.whatsappSupportEnquiryText.placeholder\":\n \"Enter Whatsapp Support Enquiry Text\",\n \"socialMedia.facebook.heading\": \"Official Facebook Page\",\n \"socialMedia.twitter.heading\": \"Official Twitter Page\",\n \"socialMedia.google.heading\": \"Official Google+ Page\",\n \"store.android.heading\": \"Official playstore Page\",\n \"store.ios.heading\": \"Official ios Page\",\n \"socialMedia.facebook.allowlogin\": \"Allow Facebook Login\",\n \"socialMedia.twitter.allowlogin\": \"Allow twitter Login\",\n \"socialMedia.google.allowlogin\": \"Allow google Login\",\n \"socialMedia.facebook.description\":\n \"If you have a facebook page for your online store, you can provide details here. You can also allow your customers to use their facebook account to login on your Store.\",\n \"socialMedia.twitter.description\":\n \"Themes can use the twitter handle to show your details on your online store. Platform can also automatically display tweets related to your handle.\",\n \"socialMedia.google.description\":\n \"Google page link can be displayed on the website and mobile app. You can also allow your customers to login using google account.\",\n \"store.android.description\":\n \"This will help you to download app from android playstore, So customer can get direct link for app and visit there\",\n \"store.ios.description\":\n \"This will help you to download app from ios store, So customer can get direct link for app and visit there\",\n \"socialMedia.facebook.placeholder\": \"username\",\n \"socialMedia.twitter.placeholder\": \"handle\",\n \"store.android.placeholder\": \"handle\",\n \"store.ios.placeholder\": \"handle\",\n \"socialMedia.google.placeholder\": \"account ID\",\n \"socialMedia.submit.text\": \"Save\",\n \"socialMedia.cancel.text\": \"Cancel\",\n \"socialMedia.save.success.title\": \"Settings have been successfully saved\",\n \"socialMedia.save.success.closeText\": \"Okay\",\n \"socialMedia.save.error.title\":\n \"Something went wrong while saving. Please try again later\",\n \"socialMedia.save.error.closeText\": \"Okay\",\n \"media.select.facebook\": \"Facebook\",\n \"media.select.twitter\": \"Twitter\",\n \"media.select.androidAppLink\": \"android\",\n \"media.select.iosAppLink\": \"ios\",\n \"socialMedia.accounts.placeholder\": \"Select social media\",\n \"store.accounts.placeholder\": \"Select app store\",\n \"contactDetails.heading\": \"Contact Details\",\n \"socialMedia.accounts.label\": \"Add social media\",\n \"store.accounts.label\": \"Add app links\",\n \"orderConfig.heading\": \"Order Config\",\n \"orderConfig.form.minimumOrderValue.heading\": \"Minimum order value\",\n \"orderConfig.form.payment.validate.error\":\n \"At least one payment option must be selected\",\n \"orderConfig.form.minimumOrderValueForDelivery.heading\":\n \"Minimum order value for delivery\",\n\n \"orderConfig.form.minimumOrderValueFreeDelivery.heading\":\n \"Minimum order value for free delivery\",\n \"orderConfig.form.minimumOrderValueFreePickup.heading\":\n \"Minimum order value for free pickup\",\n \"orderConfig.form.deliveryFees.heading\": \"Delivery Fees\",\n \"orderConfig.form.minimumOrderValue.placeholder\":\n \"Enter the minimum order value\",\n \"orderConfig.form.minimumOrderValueForDelivery.placeholder\":\n \"Enter the minimum order value for delivery\",\n \"orderConfig.form.minimumOrderValueForPickup.heading\":\n \"Minimum order value for pickup\",\n \"orderConfig.form.minimumOrderValueForPickup.placeholder\":\n \"Enter the minimum order value for pickup\",\n \"orderConfig.form.minimumOrderValueFreeDelivery.placeholder\":\n \"Enter the minimum order value for free delivery\",\n \"orderConfig.form.minimumOrderValueFreePickup.placeholder\":\n \"Enter the minimum order value for free pickup\",\n \"orderConfig.form.deliveryFees.placeholder\": \"Enter the delivery fees\",\n \"order.by.label.for.payment\": \"Order By\",\n \"choose.payment.mode.for.store\": \"choose the payment modes for your stores\",\n \"choose.payment.mode.for.order.type\":\n \"Choose the payment modes for order types\",\n \"order.management.order.type.cod\": \"COD\",\n \"order.management.order.type.online\": \"ONLINE\",\n \"operations.store.storeName.label\": \"Store Name\",\n \"operations.store.choose.payment.mode.for.store\":\n \"Choose the payment modes for your stores\",\n\n \"productConfig.heading\": \"Product Config\",\n \"product.config.checkoutAllowed\": \"Display Add to cart button on the website\",\n \"product.config.showPriceToggle\": \"Display price on the website\",\n \"product.config.yes\": \"Yes\",\n \"product.config.no\": \"No\",\n \"product.save\": \"Save\",\n \"product.cancel\": \"Cancel\",\n\n \"themes.heading\": \"Themes\",\n \"themes.subheading\": \"You are using {name} theme\",\n \"themes.customize.subheading\": \"You are customizing {name} theme\",\n \"themes.add.text\": \"Click here to add a layout\",\n \"themes.submit.text\": \"Save\",\n \"themes.cancel.text\": \"Cancel\",\n \"themes.change.text\": \"Change\",\n \"themes.customize.text\": \"Customize\",\n \"themes.change.heading\": \"Change Theme\",\n \"themes.selectTheme.text\": \"Use this theme\",\n \"themes.selection.heading\": \"Choose a layout\",\n \"themes.selection.add\": \"Add\",\n \"themes.layout.save.success\": \"Layouts saved!\",\n \"themes.error.Validation Exception: Missing required layouts - ProductCollection\":\n \"This layout cannot be deleted\",\n \"themes.error.Parameter layouts is required for this request\":\n \"Please add data\",\n \"themes.error.Something went wrong\": \"Something went wrong while saving. Please try again later\",\n \"themes.layout.delete.warning\": \"This layout will be deleted\",\n \"themes.layout.save.title.success\": \"Success\",\n \"themes.layout.save.title.error\": \"Oops\",\n \"themes.dialog.okText\": \"Ok\",\n \"themes.dialog.closeText\": \"Cancel\",\n \"themes.dialog.promt.title\": \"Are you sure?\",\n \"themes.offers\": \"Offers\",\n \"themes.images\": \"Images\",\n \"themes.stock\": \"Stock\",\n \"themes.title\": \"Title\",\n \"themes.category.show\": \"Categories to show\",\n \"themes.category.show.layout\": \"Categories\",\n \"themes.brand.show\": \"Brands to show\",\n \"themes.brand.show.layout\": \"Brands\",\n \"themes.tag.show\": \"Tags to show\",\n \"themes.tag.show.layout\": \"Tags\",\n \"themes.searchable.label\": \"Override layout for\",\n \"themes.tag.filter.label\": \"Filter Should Appear\",\n \"themes.product\": \"products should have\",\n \"themes.sortinglogic\": \"Select sorting logic\",\n \"themes.cc.name\": \"Collection name\",\n \"themes.cc.name.placeholder\": \"Enter collection name\",\n \"themes.cc.categories\": \"Categories\",\n \"themes.cc.categories.placeholder\": \"Enter categories to show\",\n \"themes.cc.layoutType\": \"Layout type\",\n \"themes.cc.showSubCategory.inline\": \"Show subcategory links\",\n \"themes.cc.scroller\": \"Scroller\",\n \"themes.cc.grid\": \"Grid\",\n \"themes.cc.config\": \"Configs\",\n \"themes.cc.pdtCount.inline\": \"Show product count\",\n \"themes.bc.brands\": \"Brands\",\n \"themes.bc.categories.placeholder\": \"Enter brands to show\",\n \"themes.layoutType\": \"Layout Type\",\n \"themes.grid\": \"Grid\",\n \"themes.scroller\": \"Scroller\",\n \"themes.cc.subCategories\": \"Show subcategories collection\",\n \"themes.customize.nav\": \"Navigation\",\n \"themes.cc.select.category.text\": \"Category\",\n \"themes.cc.select.tag.text\": \"Tag\",\n \"themes.cc.tags\": \"Tags\",\n \"themes.cc.config.image\": \"Show as cover image\",\n \"themes.layout.timeline.heading\": \"Layout Timeline\",\n \"themes.layout.timeline.startDate.heading\": \"Start Date\",\n \"themes.layout.timeline.startTime.heading\": \"Start Time\",\n \"themes.layout.timeline.endDate.heading\": \"End Date\",\n \"themes.layout.timeline.endTime.heading\": \"End Time\",\n \"themes.layout.timeline.startTime.placeholder\": \"Select start time\",\n \"themes.layout.timeline.endTime.placeholder\": \"Select end time\",\n \"themes.loadMoreType\": \"Load more products using\",\n \"themes.loadMoreImageType\": \"Load more images using\",\n \"themes.layout.visible.text\": \"Visible On\",\n \"layout.visible.DESKTOP_WEB\": \"Desktop\",\n \"layout.visible.MOBILE_WEB\": \"Mobile View\",\n \"layout.visible.ANDROID\": \"Android\",\n \"layout.visible.IOS\": \"Ios\",\n \"themes.infiniteScroll\": \"Infinite scroller\",\n \"themes.seeAll\": \"See all button\",\n \"themes.customize.announcementBar.text\": \"Have Announcement bar?\",\n \"themes.customize.announcementBar.placeHolder\":\n \"What you type here will be shown in the announcement bar of your website\",\n \"themes.customize.preview\": \"Preview:\",\n \"success.text.title\": \"Success\",\n \"themes.customize.save.success\": \"Successfully saved!\",\n \"themes.customize.error.msg\": \"Some error occurred while saving\",\n \"themes.customize.error.msg.title\": \"Failed\",\n\n \"imageSlideShow.addSlide\": \"Add Slide\",\n \"imageCollection.addImage\": \"Add Image\",\n \"footer.addSection\": \"Add Section\",\n \"footer.addItem\": \"Add Item\",\n\n \"dualImageBanner.linkText\": \"Link Text\",\n \"dualImageBanner.image1\": \"image 1\",\n \"dualImageBanner.title\": \"title\",\n \"dualImageBanner.link\": \"link\",\n \"dualImageBanner.image2\": \"image 2\",\n \"dualImageBanner.subTitle\": \"sub title\",\n \"dualImageBanner.InputTitlePlaceholder\": \"Please enter title here\",\n \"dualImageBanner.InputLinkPlaceholder\": \"Please enter link here\",\n \"dualImageBanner.InputSubtitlePlaceholder\": \"Please enter sub title here\",\n \"dualImageGrid.linkText\": \"Link Text\",\n \"dualImageGrid.image1\": \"image 1\",\n \"dualImageGrid.title\": \"title\",\n \"dualImageGrid.link\": \"link\",\n \"dualImageGrid.image2\": \"image 2\",\n \"dualImageGrid.subTitle\": \"sub title\",\n \"dualImageGrid.enterTitle\": \"Please enter title here\",\n \"dualImageGrid.enterSubtitle\": \"Please enter subtitle here\",\n \"dualImageGrid.navigateUrl\": \"URL to navigate on clicking\",\n\n \"videoCarousel.addSlide\": \"Add Slide\",\n \"videoCarousel.videoUrl.title\": \"video URL\",\n \"videoCarousel.videoUrl.placeholder\": \"Enter embed Video URL\",\n \"videoCarousel.description.title\": \"Description\",\n \"videoCarousel.description.placeholder\": \"Enter the Description here\",\n \"videoCarousel.textColor.label\": \"text color\",\n \"videoCarousel.textColor.placeholder\": \"text color for description\",\n \"videoCarousel.fontSize.label\": \"font size (in px)\",\n \"videoCarousel.fontSize.placeholder\": \"font size for description in px\",\n\n \"extensions.icon\": \"Icon\",\n \"extensions.name\": \"Name\",\n \"extensions.addedOn\": \"Added On\",\n \"extensions.monthlyBillingEstimate\": \"Monthly Billing Estimate\",\n \"extensions.actions\": \"Actions\",\n \"extensions.install\": \"Install\",\n \"extensions.uninstall\": \"Uninstall\",\n \"extensions.installExtension\": \"Install Extension\",\n \"extensions.uninstallExtension\": \"Uninstall Extension\",\n \"extensions.monthlyEstimate\": \"Monthly Estimate\",\n \"extensions.version\": \"Version\",\n \"extensions.lastUpdated\": \"Last Updated\",\n \"extensions.activeInstallations\": \"Active Installations\",\n \"extensions.policy\": \"I have read and agreed with the privacy policy\",\n \"extensions.cancel\": \"Cancel\",\n \"extensions.installedSuccessfully\": \"Installed Successfully\",\n \"extensions.uninstalledSuccessfully\": \"Uninstalled Successfully\",\n \"extensions.enterExtensionName\": \"Enter Extension Name\",\n \"extensions.filters.submittext\": \"Submit\",\n \"extensions.searchByName\": \"Search by Name\",\n \"extensions.pricing\": \"Pricing\",\n \"extensions.refreshPrompt.title\":\n \"It is recommended that you logout and login again for changes to take full effect\",\n \"extensions.refreshPrompt.closeText\": \"Okay\",\n \"extension.details.notfound\": \"There are no settings for this extension\",\n \"extensions.configure\": \"Configure\",\n \"extensions.whatwillchange\": \"What will change?\",\n \"extensions.price\": \"Price\",\n \"extensions.error.dialog.okay\": \"Okay\",\n\n \"extensions.multiLingual.heading\": \"Multilingual Support\",\n \"extensions.multiLingual.placeholder\": \"Select Language(s)\",\n\n \"extensions.analytics.heading\": \"Analytics Extension Settings\",\n \"extensions.analytics.gaAccount.heading\": \"GA Account\",\n \"extensions.analytics.gaAccount.placeholder\": \"UA-XXXXXXXX-X\",\n \"extensions.analytics.gaAccount.description\":\n \"The Google Analytics Account registered to the customer\",\n \"extensions.analytics.conversionTag.heading\": \"Conversion Tag\",\n \"extensions.analytics.conversionTag.placeholder\":\n \"Paste code for conversion pixel here\",\n \"extensions.analytics.conversionTag.description\":\n \"JS Snippets to track conversions of users transacted on customer's website\",\n \"extensions.analytics.save.success.title\":\n \"Settings have been successfully saved\",\n \"extensions.analytics.save.success.closeText\": \"Okay\",\n \"extensions.analytics.save.error.title\":\n \"Something went wrong while saving. Please try again later\",\n \"extensions.analytics.save.error.closeText\": \"Okay\",\n\n \"extensions.deliveryArea.title\": \"Delivery Area\",\n \"extensions.deliveryArea.save\": \"Save\",\n \"extensions.deliveryArea.cancel\": \"Cancel\",\n \"extensions.deliveryArea.deliveryFee\": \"Delivery fee\",\n \"extensions.deliveryArea.store.error\": \"Select store\",\n \"extensions.deliveryArea.zones.heading\": \"Delivering Zones\",\n \"extensions.deliveryArea.pincodes.heading\": \"Zipcodes\",\n \"extensions.deliveryArea.zone.unnamed\": \"Unnamed Group\",\n \"extensions.deliveryArea.polygon.title\": \"Draw On Map\",\n \"extensions.deliveryArea.polygon.unnamed\": \"Unnamed Area\",\n \"extensions.deliveryArea.radial.title\": \"Distance From Store\",\n \"extensions.deliveryArea.radial.location.error\":\n \"Select a location on the map\",\n \"extensions.deliveryArea.apartment.heading\": \"Delivery by Apartment\",\n \"extensions.deliveryArea.delete.warning\":\n \"Would you like to delete this group?\",\n \"extensions.deliveryArea.delete.title\": \"Are you sure?\",\n\n \"extensions.tawk.live.chat\": \"Tawk.to Live Chat\",\n \"extensions.tawk.site.id\": \"Site Id\",\n \"extensions.tawk.site.id.placeholder\": \"Enter your Site Id\",\n \"extensions.tawk.site.id.description\":\n \"Your site ID can be found in the tawk website in \",\n \"extensions.tawk.save\": \"Save\",\n \"extensions.tawk.cancel\": \"Cancel\",\n \"extensions.tawk.save.closetext\": \"Okay\",\n \"extensions.tawk.save.success\": \"Settings have been successfully saved\",\n \"extensions.tawk.save.error\":\n \"Something went wrong while saving. Please try again later\",\n \"extensions.tawk.error.closetext\": \"Okay\",\n \"extensions.tawk.widget.id\": \"Widget Id\",\n \"extensions.tawk.widget.id.placeholder\": \"Enter your Widget Id\",\n \"extensions.tawk.widget.id.description\":\n \"Your widget ID can be found in the tawk website in \",\n\n \"seo.heading\": \"Custom SEO content\",\n \"extensions.seo.success\": \"Success\",\n \"extensions.seo.save.successful\": \"Settings successfully saved\",\n \"extensions.seo.title\": \"Title\",\n \"extensions.seo.title.explanation\":\n \"Choose a title that reads naturally and effectively communicates the topic of the page's content.\",\n \"extensions.seo.description\": \"Description\",\n \"extensions.seo.description.explanation\":\n \"Write a description that would both inform and interest users if they saw your description in a search result. It is recommended to make it long enough to be fully shown in Search, and it would contain the relevant information users would need to determine if the page is relevant to them.\",\n \"extensions.seo.keywords\": \"Keywords\",\n \"extensions.seo.keywords.explanation\":\n \"Think about the words that a user might search for to find a piece of your content. Users who know a lot about the topic might use different keywords in their search queries than someone who is new to the topic.\",\n \"extensions.seo.save\": \"Save\",\n \"extensions.seo.cancel\": \"Cancel\",\n \"extensions.seo.ok\": \"Okay\",\n \"extensions.seo.read.more\": \"Learn more\",\n \"extensions.seo.home\": \"home\",\n \"extensions.seo.categories\": \"categories\",\n \"extensions.seo.products\": \"products\",\n \"extensions.seo.tags\": \"tags\",\n \"extensions.seo.brands\": \"brands\",\n\n \"extensions.slot.heading\": \"Slots configuration\",\n \"extensions.slot.success\": \"Success\",\n \"extensions.slot.okay\": \"Okay\",\n \"extensions.slot.numOfDays\": \"HOW MANY DAYS TO SHOW TO CLIENT ?\",\n \"extensions.slot.numOfDays.placeholder\": \"0\",\n \"extensions.slot.save\": \"Save\",\n \"extensions.slot.cancel\": \"Cancel\",\n \"extensions.slot.error\": \"Error\",\n \"extension.slots.saved\": \"Settings have been successfully saved\",\n \"extensions.slot.businessTime.heading\":\n \"Business timing for ASAP slot availability\",\n \"extensions.slot.businessOpeningTime\": \"Opens at\",\n \"extensions.slot.businessClosingTime\": \"Closes at\",\n\n \"extensions.password-policy.heading\": \"Password Policy\",\n \"extensions.password-policy.label.minNumberOfLowercaseAlphabets\":\n \"minimum number of lower case alphabets\",\n \"extensions.password-policy.placeholder.minNumberOfLowercaseAlphabets\":\n \"Enter minimum number of lower case alphabets\",\n\n \"extensions.password-policy.label.minNumberOfNumericCharacters\":\n \"minimum Number Of Numeric Characters\",\n \"extensions.password-policy.placeholder.minNumberOfNumericCharacters\":\n \"Enter minimum number of numeric characters\",\n\n \"extensions.password-policy.label.minNumberOfSymbols\":\n \"minimum Number Of Symbols\",\n \"extensions.password-policy.placeholder.minNumberOfSymbols\":\n \"Enter minimum number of symbols\",\n\n \"extensions.password-policy.label.minNumberOfUppercaseAlphabets\":\n \"minimum number of upper case alphabets\",\n \"extensions.password-policy.placeholder.minNumberOfUppercaseAlphabets\":\n \"Enter minimum number of upper case alphabets\",\n\n \"extensions.password-policy.label.minPasswordLength\":\n \"minimum password length\",\n \"extensions.password-policy.placeholder.minPasswordLength\":\n \"Enter minimum password length\",\n\n \"mobileApps.longDescription.suggestion\":\n \"App Splash screen should be of atleast 1280x1920px and maximum of 5MB\",\n \"mobileApps.heading\": \"Mobile Apps\",\n \"mobileApps.save.success.title\": \"Settings have been successfully saved\",\n \"mobileApps.save.success.closeText\": \"Okay\",\n \"mobileApps.save.error.title\":\n \"Something went wrong while saving. Please try again later\",\n \"mobileApps.save.error.closeText\": \"Okay\",\n \"mobileApps.name.heading\": \"Name of the App\",\n \"mobileApps.name.placeholder\": \"Enter your app's name\",\n \"mobileApps.shortDescription.heading\": \"Short description\",\n \"mobileApps.shortDescription.placeholder\": \"Enter upto 30 characters\",\n \"mobileApps.longDescription.heading\": \"Long description\",\n \"mobileApps.longDescription.placeholder\": \"Type here\",\n \"mobileApps.assets.heading\": \"Assets\",\n \"mobileApps.appIcon.heading\": \"App icon\",\n \"mobileApps.appIcon.placeholder\": \"2048 x 2048 px png transparent background\",\n \"mobileApps.appIcon.tooltip\":\n \"This image represents the app's icon on mobile devices.\",\n \"mobileApps.splashScreen.heading\": \"Splash screen\",\n \"mobileApps.splashScreen.placeholder\":\n \"2048 x 2048 px png transparent background\",\n \"mobileApps.splashScreen.tooltip\":\n \"Apps often take some time to to start up, especially when the app is first launched on a device. The splash screen is shown meanwhile, to display start up progress to the user or to indicate branding.\",\n \"mobileApps.theme.heading\": \"Select Theme\",\n \"mobileApps.theme.loadingText\": \"Loading themes\",\n \"mobileApps.submit.text\": \"Save\",\n \"mobileApps.cancel.text\": \"Cancel\",\n\n \"settings.users.heading\": \"Users\",\n \"settings.users.invite.text\": \"Invite User\",\n \"settings.users.header.name\": \"Name\",\n \"settings.users.header.phone\": \"Phone\",\n \"settings.users.header.email\": \"Email\",\n \"settings.users.header.actions\": \"Actions\",\n \"settings.users.action.revoke\": \"Revoke Invitation\",\n \"settings.users.action.editPermissions\": \"Edit Permissions\",\n \"settings.users.inviteForm.name.heading\": \"Name\",\n \"settings.users.inviteForm.name.placeholder\": \"Enter user's name\",\n \"settings.users.inviteForm.email.heading\": \"Email\",\n \"settings.users.inviteForm.email.placeholder\": \"Enter user's email\",\n \"settings.users.inviteForm.phone.heading\": \"Phone\",\n \"settings.users.inviteForm.phone.placeholder\": \"Enter user's phone number\",\n \"settings.users.inviteForm.invite.buttonText\": \"Invite\",\n \"settings.users.inviteForm.cancelText\": \"Cancel\",\n \"settings.users.permissionsForm.headingWithoutName\": \"Permissions\",\n \"settings.users.permissionsForm.heading\": \"Permissions for {name}\",\n \"settings.users.permissionsForm.header.read\": \"Read\",\n \"settings.users.permissionsForm.header.write\": \"Write\",\n \"settings.users.permissionsForm.copyPlaceholder.name\": \"No User\",\n \"settings.users.permissionsForm.copyPlaceholder.text\":\n \"Select a user to copy permissions\",\n \"settings.users.permissionsForm.submitText\": \"Save\",\n \"settings.users.permissionsForm.cancelText\": \"Cancel\",\n\n \"deliveryArea.table.heading\": \"Delivery Area\",\n \"deliveryArea.emptyList.message\": \"There are no delivery areas\",\n \"deliveryArea.dropdown.radial.heading\": \"Distance from store\",\n \"deliveryArea.dropdown.pincode.heading\": \"Zip Code / Postal Code\",\n \"deliveryArea.dropdown.polygon.heading\": \"Draw on a map\",\n \"deliveryArea.dialog.title\": \"Are You Sure?\",\n \"deliveryArea.disableDialog.information\":\n \"You want to disable this delivery area\",\n \"deliveryArea.enableDialog.information\":\n \"You want to enable this delivery area\",\n \"deliveryArea.dialog.cancelText\": \"Cancel\",\n \"deliveryArea.dialog.okText\": \"Ok\",\n \"deliveryArea.filters.status.heading\": \"Status\",\n \"deliveryArea.filters.status.label.all\": \"All\",\n \"deliveryArea.filters.status.label.enabled\": \"Enabled\",\n \"deliveryArea.filters.status.label.disabled\": \"Disabled\",\n \"deliveryArea.filters.configType.heading\": \"Type\",\n \"deliveryArea.filters.configType.label.all\": \"All\",\n \"deliveryArea.filters.configType.label.radial\": \"RADIAL\",\n \"deliveryArea.filters.configType.label.pincode\": \"ZIPCODE\",\n \"deliveryArea.filters.configType.label.polygon\": \"POLYGON\",\n \"deliveryArea.filters.submitText\": \"Search\",\n \"deliveryArea.slots.save\": \"Save\",\n \"deliveryArea.editSlot.heading\": \"Delivery area slot rules\",\n \"deliveryArea.slotConfigure\": \"Configure slots\",\n \"deliveryArea.dialog.error.title\": \"Error\",\n \"delivery.fee.formula.heading\": \"Configure Delivery Fee Formula:\",\n \"delivery.fee.formula.left.text\": \"Delivery Fee =\",\n \"delivery.fee.formula.right.text\":\n \"[Additional fixed cost] + ([Order total weight] - [Lower weight limit]) * [Rate per weight unit] + [Order subtotal] * [Charge percentage]\",\n\n \"radial.form.deliveryCharge.heading\": \"Delivery Charge\",\n \"radial.form.cancelText\": \"Cancel\",\n \"radial.form.submitText\": \"Save\",\n \"radial.form.stores.placeholder\": \"Select Store\",\n \"radial.form.stores.heading\": \"Served From Store\",\n \"radial.form.distance.description\":\n \"Define distance radius to cover for delivery\",\n \"radial.form.to\": \"to\",\n \"radial.form.map.description\": \"Drag and click to mark location\",\n \"radial.form.searchLocation.placeholder\": \"Search location on map\",\n \"radial.table.description\": \"from the store location\",\n \"radial.table.deliveryCharge\": \"Delivery Charge\",\n \"radial.selectLocation.message\": \"Select a Location\",\n \"radial.form.add.heading\": \"Distance from store\",\n \"radial.form.edit.heading\": \"Edit distance from store\",\n\n \"rackmanagement.heading\": \"Rack Management\",\n \"rackManagement.rack.add\": \"Name\",\n \"rackManagement.submitText.submit\": \"Add\",\n \"rackManagement.rack.add.placeholder\":\n \"Enter picking sequence (comma separated)\",\n \"rackManagement.add.more.racks\": \"Add Sequence\",\n \"rackManagement.clear.sequence\": \"Clear Sequence\",\n \"rackManagement.popup.heading\": \"Add Picking Sequence\",\n \"rackManagement.save.success.title\": \"Setting have been successfully saved\",\n \"rackManagement.save.success.closeText\": \"Okay\",\n \"rackManagement.rack.delete.title\": \"Are you sure ?\",\n \"rackManagement.rack.delete.message\": \"You want to delete this rack\",\n \"rackManagement.rack.delete.cancelText\": \"No, cancel\",\n \"rackManagement.save.text\": \"Save\",\n \"rackManagement.rack.delete.confirmText\": \"Yes, delete it!\",\n \"rackmanagement.empty.message\": \"Racks are not configured\",\n \"rackManagement.cancel.text\": \"Cancel\",\n \"rackManagement.rack.add.zone\": \"Add new zone\",\n \"rackManagement.rack.add.zone.placeholder\": \"Enter zone\",\n \"rackManagement.rack.add.zone.default\": \"Default zone\",\n \"rackManagement.rack.zones\": \"Zones\",\n \"rackManagement.rack.zones.type.existing\": \"Add to existing zone\",\n \"rackManagement.rack.zones.type.new\": \"Add a new zone\",\n \"rackManagement.rack.zone.name\": \"Zone name\",\n\n \"pincode.form.deliveryCharge.heading\": \"Delivery Charge\",\n \"pincode.form.cancelText\": \"Cancel\",\n \"pincode.form.submitText\": \"Save\",\n \"pincode.form.stores.placeholder\": \"Select Store\",\n \"pincode.form.stores.heading\": \"Served From Store\",\n \"pincode.form.pincodes.heading\": \"ZIP Codes\",\n \"pincode.form.pincodes.placeholder\": \"Type ZIP Codes and Press Enter\",\n \"pincode.form.add.heading\": \"Zip Code / Postal Code\",\n \"pincode.form.edit.heading\": \"Edit Zip Code / Postal Code\",\n \"pincode.table.description\": \"Zip Codes\",\n \"pincode.table.deliveryCharge\": \"Delivery Charge\",\n \"polygon.form.map.description\": \"Click on area to delete\",\n\n \"notifications.heading\": \"Notifications\",\n \"notifications.add.email\": \"Add Email\",\n \"notifications.add.phone\": \"Add phone number\",\n \"notifications.new.order\": \"When new order comes\",\n \"notifications.add\": \"Add\",\n \"notifications.email\": \"Email\",\n \"notifications.phone\": \"Phone\",\n \"notifications.order.title\": \"Order Notifications\",\n \"notifications.order.cancel\": \"When order gets cancelled\",\n \"notifications.order.refund\": \"When order gets refunded\",\n \"notifications.customer.title\": \"Customer Notifications\",\n \"notifications.customer.add.money\": \"When customer adds money to wallet\",\n \"notifications.customer.add.address\": \"When customer adds new address\",\n \"notifications.customer.complain\": \"When customer registers complain\",\n \"notifications.save\": \"Save\",\n \"notifications.cancel\": \"Cancel\",\n \"notifications.phone.phoneNumber\": \"Add phone number\",\n \"notifications.email.mail\": \"Add email address\",\n \"notifications.submitText\": \"Submit\",\n \"notifications.enter.phone\": \"Enter your phone number\",\n \"notifications.enter.email\": \"Enter your email address\",\n \"notification.save.success.email\": \"Email added successfully\",\n \"notification.save.success.closeText\": \"Okay\",\n \"notification.save.success.phone\": \"Phone added succesfully\",\n \"notification.email.delete.title\": \"Are yor sure?\",\n \"notification.email.delete.message\": \"This email will be deleted\",\n \"notification.email.delete.cancelText\": \"Cancel\",\n \"notification.email.delete.confirmText\": \"Confirm\",\n \"notification.phone.delete.title\": \"Are you sure?\",\n \"notification.phone.delete.message\": \"This phone number will be deleted\",\n \"notification.phone.delete.cancelText\": \"Cancel\",\n \"notification.phone.delete.confirmText\": \"Confirm\",\n \"notifications.name.phone\": \"SMS\",\n \"notifications.midtext\": \"to\",\n \"notifications.name.email\": \"Email\",\n \"notification.email.error\": \"Email already exists\",\n \"notification.phone.error\": \"Mobile number already exists\",\n \"notification.success\": \"Success\",\n \"notification.success.save\": \"Changes successfully saved\",\n \"notification.okay.text\": \"Okay\",\n \"notification.new.customer\": \"When new customer joins\",\n\n \"polygon.form.deliveryCharge.heading\": \"Delivery Charge\",\n \"polygon.form.submitText\": \"Save\",\n \"polygon.form.add.heading\": \"Draw on a map\",\n \"polygon.form.edit.heading\": \"Draw on a map\",\n \"polygon.table.description\": \"Marked location\",\n \"polygon.table.subdescription\": \"area in the Map\",\n \"polygon.table.deliveryCharge\": \"Delivery Charge\",\n \"polygon.form.stores.placeholder\": \"Select Store\",\n \"polygon.form.stores.heading\": \"Served From Store\",\n \"polygon.delete.text\": \"Click to delete\",\n \"polygon.selectLocation.message\": \"Draw area on map\",\n\n \"orderprocessing.config.heading\": \"Order Processing Settings\",\n \"orderprocessing.config.form.submit.text\": \"Save\",\n \"orderprocessing.config.form.cancel.text\": \"Cancel\",\n \"orderprocessing.config.allStores\": \"Default Settings\",\n \"orderprocessing.config.form.resetToDefault\": \"Reset To Default\",\n \"orderprocessing.qrCodeFormat.heading\": \"Store Printed Local Barcode Format\",\n \"orderprocessing.qrCodeFormat.placeholder\": \"93xxxxwwwwxxxxii\",\n \"orderprocessing.qrCodeFormat.description\":\n \"Use `w` to indicate weight or `p` to indicate price. Only one of them will be used. Use `i` to indicate unique identifier.\",\n \"orderprocessing.save.success.title\": \"Settings have been successfully saved\",\n \"orderprocessing.save.success.closeText\": \"Okay\",\n \"orderprocessing.save.error.title\":\n \"Something went wrong while saving. Please try again later\",\n \"orderprocessing.save.error.closeText\": \"Okay\",\n \"orderprocessing.config.pickingMethod.placeholder\":\n \"Select picking sequence method\",\n \"orderprocessing.config.pickingMethod.heading\": \"Picking Sequence Method\",\n \"orderprocessing.pickingMethod.oldestfirst\":\n \"Show oldest order in picking queue first\",\n \"orderprocessing.pickingMethod.farthestfirst\":\n \"Show order farthest from the store in picking queue first\",\n \"orderprocessing.config.pickingView.heading\":\n \"How Picker Sees the Order Items?\",\n \"orderprocessing.pickingView.allitems\": \"All at once\",\n \"orderprocessing.pickingView.onebyone\": \"One by one\",\n \"orderprocessing.orderLabelPrinting.heading\": \"Order label printing\",\n \"orderprocessing.orderLabelPrinting.startofpicking\": \"At start of picking\",\n \"orderprocessing.orderLabelPrinting.endofpicking\": \"At end of picking \",\n \"orderprocessing.orderLabelPrinting.startandendofpicking\":\n \"At start and end of picking\",\n \"orderprocessing.orderLabelPrinting.notneeded\": \"No physical print needed\",\n \"orderprocessing.orderLabelFormat.heading\": \"Order label format\",\n \"orderprocessing.orderLabelFormat.onlyordernumber\": \"Only order number\",\n \"orderprocessing.orderLabelFormat.ordernumberandcustomerdetails\":\n \"Order number with customer details in QR code\",\n \"orderprocessing.orderLabelFormat.ordernumbercustomeranditemdetails\":\n \"Order number with customer details and item in QR code\",\n \"orderprocessing.qualityChecking.heading\": \"Quality checking\",\n \"orderprocessing.qualityChecking.notneeded\": \"Not needed\",\n \"orderprocessing.qualityChecking.donebychecker\": \"Done by checker\",\n \"orderprocessing.packingDetails.heading\": \"Packing details\",\n \"orderprocessing.packingDetails.notneeded\": \"Not needed\",\n \"orderprocessing.packingDetails.donebypicker\": \"Done by picker\",\n \"orderprocessing.packingDetails.donebypacker\": \"Done by packer\",\n \"orderprocessing.packingDetails.donebychecker\": \"Done by checker\",\n \"orderprocessing.pickingMethod.intelligentpickingqueue\":\n \"Intelligent picking queue\",\n \"orderprocessing.orderLabelPrinting.endofpacking\": \"At end of packing\",\n\n \"settings.online.payment.success\": \"Success\",\n \"settings.online.payment.succesfully.saved\": \"Settings successfully saved\",\n \"settings.online.payment.ok\": \"Okay\",\n \"settings.online.payments.save\": \"Save\",\n \"settings.online.payment.gateway.saved\": \"Payment gateway successfully saved\",\n \"settings.online.payment.delete\": \"Delete\",\n \"settings.online.payment.cancel\": \"Cancel\",\n \"settings.online.payment.are.you.sure\": \"Are you sure?\",\n \"settings.online.payment.account.delete\": \"The account will be deleted\",\n \"settings.online.payment.bank.account.details\": \"Bank account details\",\n \"settings.online.payment.link.bank.account\": \"Link a bank account\",\n \"settings.online.payment.our.gateway\": \"You are using our Payment Gateway\",\n \"settings.online.payment.gateway\": \"Payment Gateway\",\n \"settings.online.payment.bank.name\": \"Bank name\",\n \"settings.online.payment.accountnumber\": \"Bank account number\",\n \"settings.online.payment.beneficiaryname\": \"Beneficiary name\",\n \"settings.online.payment.accountholdername\": \"Account Holder Name\",\n \"settings.online.payment.branchifsccode\": \"Branch IFSC Code\",\n \"settings.online.payment.ifsccodeofbankbranch\":\n \"IFSC Code of the Bank Branch\",\n \"settings.online.payment.city\": \"City\",\n \"settings.online.payment.entercity\": \"Enter City\",\n \"settings.online.payment.state\": \"State\",\n \"settings.online.payment.enterstate\": \"Enter State\",\n \"settings.online.payment.enterpincode\": \"Enter Pincode\",\n \"settings.online.payment.pincode\": \"Pincode\",\n \"settings.online.payment.removebankaccount\": \"Remove bank account\",\n \"settings.online.payment.onlinepayment\": \"Online Payment\",\n \"settings.online.payment.ihaveagateway\": \"I have a Payment Gateway\",\n \"settings.online.payment.ihaveagatewaydescription\":\n \"If you have your own payment gateway and would like to integrate it with your website, then this option is for you.\",\n \"settings.online.payment.idonthaveagateway\": \"I don't have a Payment Gateway\",\n \"settings.online.payment.idonthaveagatewaydescription\":\n \"If you do not have your own payment gateway, then you can choose from a list of third party payment gateways supported by us for payments on your website.\",\n \"settings.online.payment.payemntmethod\": \"Payment Method\",\n \"online.payments.link.bank.account\": \"Link Bank Account\",\n \"settings.online.payments.success\": \"Success\",\n \"settings.online.payment.linked.successfully\":\n \"Payment Gateway has been activated\",\n \"settings.online.payment.linked.bank\":\n \"Linked the bank to your payment gateway\",\n \"settings.online.payment.configureexistinggateways\":\n \"Please configure the existing gateways before adding new gateway\",\n \"settings.online.payment.use.your.gateway\": \"Use your gateway\",\n \"settings.online.payment.use.zoppay\": \"Use our default gateway\",\n \"settings.integrationSettings.heading\": \"Integration Settings\",\n \"integrationSettings.googleMapsKey.label\": \"Google Maps Api Key\",\n \"integrationSettings.googleMapsKey.placeholder\":\n \"Enter your Google map api key\",\n \"integrationSettings.googleCaptchaKey.label\": \"Google Captcha Site Key\",\n \"integrationSettings.googleCaptchaKey.placeholder\":\n \"Enter your Google captcha site key\",\n \"integrationSettings.googleCaptchaSecret.label\": \"Google Captcha Secret Key\",\n \"integrationSettings.googleCaptchaSecret.placeholder\":\n \"Enter your Google captcha secret key\",\n \"integrationSettings.dialog.success.info\": \"Settings are saved successfully\",\n \"integrationSettings.gtm.label\": \"Google Tag Manager Id\",\n \"integrationSettings.gtm.placeholder\": \"Enter your Google tag manager Id\",\n\n \"slots.emptymessage\": \"There are no slots configured\",\n \"slots.heading\": \"Slots\",\n \"slots.addHeading\": \"Add Slot\",\n \"slot.add.text\": \"Add Slot\",\n \"slots.delete\": \"Delete\",\n \"slots.startTime\": \"Start Time\",\n \"slots.endTime\": \"End Time\",\n \"slots.actions\": \"Actions\",\n \"slot.meridian\": \"Meridian\",\n \"slots.save\": \"Done\",\n \"slots.cancel\": \"Cancel\",\n \"slots.startsAt\": \"Starts at\",\n \"slots.endsAt\": \"Ends at\",\n \"slots.start.end.mismatch\": \"Start time should be lesser than end time\",\n \"slots.asap.placeholder\": \"0 Minute\",\n \"slots.asap\": \"Within\",\n \"slots.asap.minute\": \"Minutes\",\n \"slots.today\": \"Today\",\n \"slots.tomorrow\": \"Tomorrow\",\n \"slots.store\": \"Store\",\n \"slots.store.placeholder\": \"Select Store\",\n\n \"entityMetaData.heading\": \"Custom fields\",\n \"entityMetaData.success\": \"Success\",\n \"entityMetaData.success.information\":\n \"Your settings have been successfully saved\",\n \"entityMetaData.okay\": \"Okay\",\n \"entityMetaData.error\": \"Error\",\n \"entitiMetaData.numberLabel\": \"Number\",\n \"entityMetaData.number.placeholder\": \"Enter Number\",\n \"entityMetaData.textLabel\": \"Key\",\n \"entityMetaData.checkboxLabel\": \"Filter\",\n \"entityMetaData.searchable.checkboxLabel\": \"Searchable\",\n \"entityMetaData.private.checkboxLabel\": \"Private\",\n \"entityMetaData.checkboxMultivaluedLabel\": \"multivalued\",\n \"entityMetaData.text.placeholder\": \"Enter Key\",\n \"entitymetaData.textareaLabel\": \"Key\",\n \"entityMetaData.textarea.placeholder\": \"Enter Key\",\n \"entityMetaData.submitText\": \"Save\",\n \"entityMetaData.are.you.sure\": \"Are you sure?\",\n \"entityMetaData.this.key.will.be.deleted\": \"This key will be deleted\",\n \"entityMetaData.cancel\": \"Cancel\",\n \"entityMetaData.delete\": \"Delete\",\n \"entityMetaData.type\": \"Type\",\n \"entityMetaData.type.placeholder\": \"Select Type\",\n \"entityMetadata.add\": \"Add key\",\n\n \"picking.config.heading\": \"Picking Configuration\",\n \"picking.config.multiplePickingAllowed\": \"Allow multiple picking\",\n \"picking.config.partialPickingAllowed\": \"Allow partial picking\",\n \"picking.config.maxOrdersCanBePickedAtOnce\":\n \"Maximum number of orders can be picked at once\",\n \"picking.config.maxOrdersCanBePickedAtOnce.placeholder\":\n \"Enter the maximum number of orders can be picked at once\",\n \"picking.config.save\": \"Save\",\n\n \"wallet.config.heading\": \"Wallet Configuration\",\n \"wallet.config.cashbackPercentage\": \"Cashback Percentage\",\n \"wallet.config.cashbackPercentage.placeholder\":\n \"Enter the cashback percentage\",\n \"wallet.config.daysAfterOrderCompletionForCashback\":\n \"Days After Order Completion For Cashback\",\n \"wallet.config.daysAfterOrderCompletionForCashback.placeholder\":\n \"Enter the days after order completion for cashback\",\n\n \"store.min.stock.count\": \"Min buffer count\",\n \"product.restriction.days\": \"days\",\n \"product.restriction.hours\": \"hours\",\n \"store.max.purchaseable.qty\": \"Max Purchasable Quantity\",\n \"store.min.purchaseable.qty\": \"Min Purchasable Quantity\",\n \"store.actions\": \"Actions\",\n \"store.submit\": \"Submit\",\n \"store.store.label\": \"Store\",\n \"store.store.placeholder\": \"Select store\",\n \"store.clear\": \"Clear\",\n \"store.filters.name.heading\": \"Name\",\n \"store.filters.name.placeholder\": \"Search by Name\",\n \"store.filters.submitText\": \"Search\",\n \"store.configuraion.add.text\": \"Add configuration\",\n \"stores.empty.stock\": \"There are no configurations\",\n \"store.max.purchaseable.quantity\": \"Max Qty\",\n \"store.min.purchaseable.quantity\": \"Min Qty\",\n \"enitityMetaData.values\": \"Values\",\n \"enitityMetaData.values.placeholder\": \"Enter values\",\n \"entityMetaData.country\": \"Countries\",\n \"entityMetaData.country.placeholder\": \"Select countries\",\n \"search-configuration.header\": \"Search Overrides\",\n \"search-configuration.add.button.label\": \"Add Configuration\",\n \"search-configuration.header.image\": \"Image\",\n \"search-configuration.header.name\": \"Name\",\n \"search-configuration.header.mrp\": \"MRP\",\n \"search-configuration.header.position\": \"Position\",\n \"search-configuration.header.actions\": \"Actions\",\n \"search-configuration.emptystate.message\":\n \"Currently there are no configurations\",\n \"search-configuration.form.confirm\": \"Confirm\",\n \"search-configuration.form.cancel\": \"Cancel\",\n \"search-configuration.form.label.select.type\": \"Select Type\",\n \"search-configuration.form.label.select.category\": \"Select Category\",\n \"search-configuration.form.label.add.product\": \"Add Product\",\n \"search-configuration.form.label.select.position\": \"Position\",\n \"search-configuration.action.edit\": \"Edit\",\n \"search-configuration.action.delete\": \"Delete\",\n \"search-configuration.form.heading\": \"Add Configuration\",\n \"search-config.searchurls\": \"Add search keywords\",\n \"search-config.searchurls.placeholder\": \"Enter search keywords\",\n \"search-configuration.form.label.add.product.placeholder\":\n \"Enter product name\",\n \"search-configuration.form.label.select.position.placeholder\":\n \"Enter position\",\n \"sc.form.category.label\": \"Category\",\n \"sc.form.cat.placeholder\": \"Enter category\",\n \"sc.edit.heading\": \"Edit configuration\",\n \"search-configuration.search.header.name\": \"Search Keywords\",\n \"sc.header.pdtname\": \"Product\",\n \"sc.header.image\": \"Image\",\n\n \"communication.service.provider\": \"Service Provider\",\n \"communication.service.provider.placeholder\": \"Select Provider\",\n\n \"communication.enter.text\": \"Enter\",\n\n \"customer-service-tags.heading\": \"User Tags\",\n \"customer-service-tags.button\": \"Add Tag\",\n \"customer-service-tags.button.cancel\": \"Cancel\",\n \"customer-service-tags.form.edit.heading\": \"Edit Tag\",\n \"customer-service-tags.form.tag.name.label\": \"TAG NAME\",\n \"customer-service-tags.form.tag.name.placeholder\": \"Enter tag name\",\n \"customer-service-tags.form.tag.status.label\": \"Status\",\n \"customer-service-tags.form.tag.status.enabled.label\": \"Enabled\",\n \"customer-service-tags.form.tag.status.disabled.label\": \"Disabled\",\n \"customer-service-tags.form.description.label\": \"DESCRIPTION\",\n \"customer-service-tags.form.description.placeholder\":\n \"Enter description here\",\n \"customer-service-tags.table.name.header\": \"Name\",\n \"customer-service-tags.table.name.placeholder\": \"Enter table name\",\n \"customer-service-tags.table.status.header\": \"Status\",\n \"customer-service-tags.table.description.header\": \"Description\",\n \"customer-service-tags.table.actions.header\": \"Actions\",\n \"customer-service-tags.table.actions.edit\": \"Edit\",\n \"customer-service-tags.table.actions.delete\": \"Delete\",\n \"customer-service-tags.save\": \"Save\",\n \"customer-service-tags.form.otherdetails.placeholder\": \"Search tags to add\",\n \"customer-service-tags.form.search.tag.name.label\": \"Tag Name\",\n \"customer-service-tags.form.search.submitText.label\": \"Submit\",\n \"customer-service-tags.form.search.clearAll.label\": \"Clear All\",\n \"customer-service-tags.noTags\": \"No tags configured\",\n \"customer.service.tags.status.ENABLED\": \"Enabled\",\n \"customer.service.tags.status.DISABLED\": \"Disabled\",\n\n \"order.config.referenceNumber.heading\": \"Reference number\",\n \"order.config.generateRandomReferenceNumbers\":\n \"Generate random reference numbers\",\n \"order.config.orderTypes\": \"Order Types\",\n \"orderDetails.uploadFile\": \"Uploaded File\",\n \"orderPackageConfig.createNew.heading\": \"Create new package\",\n \"orderPackageConfig.length.label\": \"Package length (cm)\",\n \"orderPackageConfig.length.placeholder\": \"Enter package length in cm\",\n \"orderPackageConfig.breadth.label\": \"Package breadth (cm)\",\n \"orderPackageConfig.breadth.placeholder\": \"Enter package breadth in cm\",\n \"orderPackageConfig.height.label\": \"Package height (cm)\",\n \"orderPackageConfig.height.placeholder\": \"Enter package height in cm\",\n \"orderPackageConfig.type.label\": \"Package type\",\n \"orderPackageConfig.type.placeholder\": \"Enter the type of package\",\n \"orderPackageConfig.package.length\": \"Length\",\n \"orderPackageConfig.package.breadth\": \"Breadth\",\n \"orderPackageConfig.package.height\": \"Height\",\n \"orderPackageConfig.createPackage.errorMsg\": \"Cannot create package\",\n \"orderPackageConfig.createPackage.errorMsg.dsc\":\n \"Some error occurred while creating package\",\n \"orderPackageConfig.package.creating\": \"Creating package\",\n \"orderPackageConfig.createPackage.successMsg\": \"Package Created!\",\n \"orderPackageConfig.createPackage.successMsg.dsc\":\n \"Successfully created the package\",\n \"orderPackageConfig.deletePackage.heading\": \"Delete Package?\",\n \"orderPackageConfig.deletePackage.subHeading\":\n \"Are you sure, you want to delete the selected package?\",\n \"orderPackageConfig.editPackage.errorMsg.dsc\":\n \"Some error occurred while editing the selected package\",\n \"orderPackageConfig.editPackage.errorMsg\": \"Cannot edit package\",\n \"orderPackageConfig.editPackage.successMsg\": \"Package Edited!\",\n \"orderPackageConfig.editPackage.successMsg.dsc\":\n \"Successfully edited the package\",\n \"orderPackageConfig.editPackage.heading\": \"Edit package\",\n \"orderPackageConfig.package.editing\": \"Editing package\",\n \"orderPackageConfig.type.text.label\": \"Type\",\n \"orderPackageConfig.submit.text\": \"Submit\",\n \"orderPackageConfig.action.edit.text\": \"Edit\",\n \"orderPackageConfig.delete.text\": \"Delete\",\n \"orderPackageConfig.package.emptyMsg\": \"Create a new package to show here\",\n \"ok.text\": \"Ok\",\n \"extensions.courier.support.heading\": \"Courier Support\",\n \"courier.support.extension.toggle.text\": \"Use third party courier services\",\n \"shipping.courier.support.placeholder\": \"Select Courier Service\",\n \"delete.text\": \"Delete\",\n \"are.you.sure\": \"Are you sure?\",\n \"courier.support.SHIPROCKET.email\":\n \"On your Shiprocket account, navigate to Settings → API → Configure\",\n \"courier.support.SHIPROCKET.password\":\n \"On your Shiprocket account, navigate to Settings → API → Configure\",\n \"courier.support.DUNZO.clientId\":\n \"Register on Dunzo as a business or send an email to dunzoforbusiness@dunzo.in\",\n \"courier.support.DUNZO.clientSecret\":\n \"Register on Dunzo as a business or send an email to dunzoforbusiness@dunzo.in\",\n \"courier.support.DUNZO.webhook.url\":\n \"Share this over an email to the Dunzo team\",\n \"refferal.managemnet.referrer.heading\":\n \"Referrer (existing customer) Rewards\",\n \"refferal.managemnet.referee.heading\": \"Referee (new customer) Rewards\",\n \"referral.bonus.text\": \"Referral Bonus\",\n \"referral.maxBonus.text\": \"Maximum limit\",\n \"referral.bonus.description\": `Bonus will be credited to the referrer's wallet when the referred customers completes their first order.`,\n \"signup.bonus.text\": \"Signup Bonus\",\n \"signup.bonus.placeholder\": \"Enter the Amount\",\n \"signup.bonus.description\": `Money will be credited upon successful sign up using the referral code.`,\n \"referral.save.success.title\": \"Referral Successfully Configured\",\n \"referral.save.error.title\":\n \"Something unexpected occured while saving. Please try again later!\",\n \"referral.management.success.title\": \"Success\",\n \"referral.management.error.title\": \"Something Went Wrong!\",\n \"google.merchant.center.upload.label\":\n \"Upload the content-api-key.json file here :\",\n \"google.merchant.center.upload.change.label\":\n \"To change your Content API Key, Upload the new file here :\",\n \"google.merchant.center.description\":\n \"Go to Tools and Shipping > Content API > Authentication > New API Key and download the content-api-key.json\",\n \"google.merchant.center.error.msg\": \"Upload correct file\",\n \"google.merchant.center.error.title\": \"Invalid File\",\n \"google.merchant.center.success.description\":\n \"Your Google Merchant Center account is successfully linked to Zopping !\",\n \"google.merchant.center.success.msg\":\n \"SuccessFully content-api-key.json uploaded !\",\n \"operations.store.form.payment.COD\": \"COD\",\n \"operations.store.form.payment.WALLET\": \"WALLET\",\n \"operations.store.form.payment.ONLINE\": \"ONLINE\",\n \"operations.store.form.payment.APPLE_PAY\": \"APPLE PAY\",\n \"operations.store.form.payment.GIFTCARD\": \"GIFT CARD\",\n \"operations.store.form.payment.DEBIT-MADA\": \"DEBIT MADA\",\n \"operations.store.form.payment.CREDIT-MASTER\": \"CREDIT MASTER\",\n \"operations.store.form.payment.CREDIT-VISA\": \"CREDIT VISA\",\n \"operations.store.form.payment.CREDIT-AMEX\": \"CREDIT AMEX\",\n \"catalogue-service-product-restrictions.heading\":\n \"Purchase limit Restrictions\",\n \"product.restrictions.empty\": \"No Purchase limit Restrictions\",\n \"product.restrictions.add.text\": \"Add configuration\",\n \"error.title\": \"Something Went Wrong!\",\n \"store.stock.orderType\": \"Order Type\",\n \"themes.loadMoreType.seller\": \"Load more sellers using\",\n \"themes.loadMoreType.influencer\": \"Load more influencers using\",\n};\n\nexport default data;\n","const data = {\n \"input.requiredMessage\": \"This cannot be blank\",\n \"input.invalidFormatMessage\": \"Please check the format\",\n \"input.invalidEmailFormat\": \"Please enter a valid email address\",\n \"input.invalidUsernameFormat\": \"Please enter a valid username\",\n \"input.invalidPhoneFormat\": \"Please enter a valid phone number\",\n \"input.fileSizeExeeded\": \"File size exeeded\",\n \"input.invalidFileType\": \"File type is invalid.\",\n \"input.rangeOverflow\": \"Please enter a smaller value\",\n \"input.rangeUnderflow\": \"Please enter a larger value\",\n \"input.isUploading\": \"Please wait while the file is being sent to the server\",\n \"input.invalidNumber\": \"Enter a positive value\",\n \"datetime.date\": \"Date\",\n \"datetime.time\": \"Time\",\n};\n\nexport default data;\n","const data = {\n \"404.heading\": \"Work in Progress\",\n \"unexpected.error.heading\": \"Sorry!\",\n \"unexpected.error.description\": \"Something unexpected has happened\",\n \"unexpected.error.back\": \"Back\",\n};\n\nexport default data;\n","const data = {\n \"productUpload.csvDownloadText\": \"Download sample CSV\",\n \"productUpload.uploadFileText\": \"Click here to upload the file\",\n \"productUpload.addProduct\": \"Add Product\",\n \"productUpload.orText\": \"OR\",\n \"fileUpload.importCsv.heading\": \"Import CSV file\",\n \"fileUpload.importCsv.inprogress\": \"Imported Successfully\",\n \"fileUpload.importedCsv.heading\": \"Upload Now\",\n \"fileUpload.uploadedCsv.heading\":\n \"CSV File Uploaded Successfully! Products will appear after 15 minutes\",\n \"fileUpload.importKML.heading\": \"Import KML file\",\n \"fileUpload.importedKML.heading\": \"Upload Now\",\n \"fileUpload.uploadedKML.heading\": \"KML File Uploaded Successfully!\",\n \"category.upload.text\": \"Add Categories\",\n \"categories.import.successText\":\n \" CSV File Uploaded Successfully! Categories will be added and appear after 15 minutes\",\n \"category.heading\": \"Categories\",\n \"category.form.name.heading\": \"Name\",\n \"category.form.name.placeholder\": \"Category Name\",\n \"category.form.tagline.heading\": \"tag line\",\n \"category.form.tagline.placeholder\": \"Enter Tag Line\",\n \"category.form.submitText\": \"Save\",\n \"category.form.cancelText\": \"Cancel\",\n \"category.form.parentCategory.heading\": \"Parent Category\",\n \"category.form.parentCategory.placeholder\": \"Select Parent Category\",\n \"category.form.description.heading\": \"Description\",\n \"category.form.description.placeholder\": \"Type Category Description\",\n \"category.form.edit.heading\": \"Edit Category\",\n \"category.form.add.heading\": \"Add Category\",\n \"category.form.uploadImage.heading\": \"Upload Image\",\n \"category.form.hideText\": \"Hide\",\n \"category.form.enableText\": \"Enable\",\n \"category.form.deleteText\": \"Delete\",\n \"category.header.name\": \"Name\",\n \"category.header.parentCategory\": \"Parent Category\",\n \"category.header.productCount\": \"Product Count\",\n \"category.header.products\": \"Products\",\n \"category.header.status\": \"Status\",\n \"category.header.image\": \"Image\",\n \"category.header.actions\": \"Actions\",\n \"category.action.edit\": \"Edit\",\n \"category.action.delete\": \"Delete\",\n \"category.action.seeProducts\": \"See Products\",\n \"category.helpItems.title\": \"From the blog\",\n \"category.helpItems.ppo.title\": \"Principles of product categorization\",\n \"category.helpItems.ppo.description\":\n \"Websites with helpful description get free visitors from search engines like Google.\",\n \"category.helpItems.poc.title\": \"Pitfalls of over-categorization\",\n \"category.helpItems.poc.description\":\n \"Images improves your landing page appeal which directly correlates with better conversion.\",\n \"category.helpItems.seo.title\": \"SEO impact of product categorization\",\n \"category.helpItems.seo.description\":\n \"Content marketing is a form of marketing focused on creating, publishing and distributing content for a targeted audience online.\",\n \"category.add.text\": \"Add Category\",\n \"category.tree.title\": \"Category Tree\",\n \"category.icons.tree-title\": \"Tree view\",\n \"category.icons.table-title\": \"Table view\",\n \"category.helpItems.message\": \"Your categories will be shown here.\",\n \"category.helpItems.submessage\":\n \"Proper categorization improves customer’s experience.\",\n \"category.filters.name.heading\": \"Name\",\n \"category.filters.status.heading\": \"Status\",\n \"category.filters.name.placeholder\": \"Search by Name\",\n \"category.filters.submitText\": \"Search\",\n \"category.filters.clearFiltersText\": \"Clear All\",\n \"category.filters.status.label.all\": \"All\",\n \"category.filters.status.label.enabled\": \"Enabled\",\n \"category.filters.status.label.disabled\": \"Disabled\",\n \"category.delete\": \"Are you sure?\",\n \"category.delete.confirm\": \"The category will be deleted\",\n \"category.delete.close\": \"Cancel\",\n \"category.delete.okay\": \"Okay\",\n \"category.add\": \"Add\",\n \"category.view\": \"View categories\",\n \"navigation.sequencing.heading\": \"Navigation Sequencing\",\n \"navigation.add.button\": \"+ Add\",\n \"navigation.nosequence.display\": \"No Sequence to display\",\n \"navigation.dropdown.item.addLink\": \"Add Link\",\n \"navigation.dropdown.item.addTag\": \"Add Tag\",\n\n \"brand.heading\": \"Brands\",\n \"brand.add.text\": \"Add Brand\",\n \"brand.edit.text\": \"Edit Brand\",\n \"brand.helpItems.message\": \"Your brands will be shown here.\",\n \"brand.header.logo\": \"Logo\",\n \"brand.header.brand\": \"Brand\",\n \"brand.header.productCount\": \"Product Count\",\n \"brand.header.status\": \"Status\",\n \"brand.header.actions\": \"Actions\",\n \"brand.status.enabled\": \"Enabled\",\n \"brand.status.disabled\": \"Disabled\",\n \"brand.status.hidden\": \"Hidden\",\n \"brand.action.edit\": \"Edit\",\n \"brand.action.delete\": \"Delete\",\n \"brand.action.seeProducts\": \"See products\",\n \"brand.filters.name.heading\": \"Name\",\n \"brand.filters.status.heading\": \"Status\",\n \"brand.filters.name.placeholder\": \"Search by Name\",\n \"brand.filters.submitText\": \"Search\",\n \"brand.filters.clearFiltersText\": \"Clear All\",\n \"brand.filters.status.label.all\": \"All\",\n \"brand.filters.status.label.enabled\": \"Enabled\",\n \"brand.filters.status.label.hidden\": \"Hidden\",\n \"brand.form.name.heading\": \"Name\",\n \"brand.form.name.placeholder\": \"Enter brand name\",\n \"brand.form.tagline.heading\": \"tagline\",\n \"brand.form.tagline.placeholder\": \"Enter Tag Line\",\n \"brand.form.image.heading\": \"Image\",\n \"brand.form.image.placeholder\": \"Click here to upload, or drag your image\",\n \"brand.form.hideText\": \"Hide\",\n \"brand.form.enableText\": \"Enable\",\n \"brand.form.deleteText\": \"Delete\",\n \"brand.form.submitText\": \"Save\",\n \"brand.form.cancelText\": \"Cancel\",\n\n \"product.table.heading\": \"Products\",\n \"product.form.add.heading\": \"Add Product\",\n \"product.form.edit.heading\": \"Edit Product\",\n \"product.filters.name.heading\": \"Name\",\n \"product.filters.name.placeholder\": \"Search by Name\",\n \"product.filters.clientId.heading\": \"Client Id\",\n \"product.filters.clientId.placeholder\": \"Search by Id\",\n \"product.filters.category.heading\": \"Category\",\n \"product.filters.category.placeholder\": \"Search by Category\",\n \"product.filters.brand.heading\": \"Brand\",\n \"product.filters.brand.placeholder\": \"Search by Brand\",\n \"product.filters.tag.heading\": \"Tag\",\n \"product.filters.tag.placeholder\": \"Search by Tag\",\n \"product.filters.status.heading\": \"Status\",\n \"product.filters.status.label.all\": \"All\",\n \"product.filters.status.label.enabled\": \"Enabled\",\n \"product.filters.status.label.disabled\": \"Disabled\",\n \"product.filters.submitText\": \"Search\",\n \"product.filters.clearFiltersText\": \"Clear All\",\n \"product.helpItems.message\":\n \"You have to create a catalogue of products for customers to buy from.\",\n \"product.helpItems.submessage\":\n \"Here you can provide all information about the products including pricing and upload some nice images.\",\n \"product.add.text\": \"Add Product\",\n \"add.label.text\": \"Add\",\n \"search.label.text\": \"Search\",\n \"product.search.and.add.heading\": \"Search & Add\",\n \"product.add.single.text\": \"Single product\",\n \"product.search.and.add.text\": \"Search & Add\",\n \"product.search.and.add.text.placeholder\": \"Search Products\",\n \"product.add.bulk.text\": \"Bulk upload\",\n \"deliveryArea.kml.upload.text\": \"KML upload\",\n \"product.selectType\": \"SELECT TYPE\",\n \"product.selectStore\": \"SELECT STORE\",\n \"product.selectStores\": \"SELECT STORES\",\n \"product.type.catalogue\": \"Catalogue\",\n \"product.type.inventory\": \"Inventory Sheet\",\n \"product.downloadSuccessTitle\": \"Download {value}\",\n \"product.downloadOptionsTitle\": \"Download\",\n \"product.cancelDownloadCsv\": \"Cancel\",\n \"product.downloadDialogClose\": \"Okay\",\n \"product.downloadSuccessMessage\":\n \"Your {value} data will be sent to you via email in some time\",\n \"product.header.image\": \"Image\",\n \"product.header.name\": \"Name\",\n \"product.merchandise.id\": \"Merchandise Id\",\n \"product.header.primaryCategory\": \"Primary category\",\n \"product.header.sellername\": \"Seller\",\n \"product.header.status\": \"Status\",\n \"product.header.actions\": \"Actions\",\n \"product.action.edit\": \"Edit\",\n \"product.action.delete\": \"Delete\",\n \"product.action.enable\": \"Enable\",\n \"product.action.disable\": \"Hide\",\n \"product.action.view\": \"View\",\n \"product.heading\": \"Products\",\n \"product.request.approved\": \"Approved\",\n \"product.request.pending\": \"Pending\",\n \"product.request.rejected\": \"Rejected\",\n \"product.request.reject.form.heading\": \"Reject\",\n \"product.request.reject.form.label\": \"Enter your rejection reason*\",\n \"product.request.reject.form.placeholder\": \"Enter your Reason\",\n \"product.request.draft\": \"Draft\",\n \"product.form.name.heading\": \"Name\",\n \"product.form.name.placeholder\": \"Enter product name\",\n \"product.form.name.description\":\n \"Enter the name in the format 'product-name space number space kg/g/gm'\",\n \"product.form.brand.placeholder\": \"Brand name\",\n \"product.form.category.heading\": \"Category\",\n \"product.form.category.placeholder\": \"Enter category name\",\n \"product.form.category.addButton\": \"Add new category\",\n \"category.helper.text\": \"Group several products under one category\",\n \"product.form.category.requiredMessage\": \"This is not a valid category\",\n \"product.form.tag.heading\": \"Tag\",\n \"product.form.tag.placeholder\": \"Enter tag name\",\n \"product.form.tag.addButton\": \"Add new tag\",\n \"product.form.description.heading\": \"Description\",\n \"product.form.description.placeholder\": \"Enter product description\",\n \"product.form.variant.addButtonText\": \"Add Variant\",\n \"product.form.variant.editButtonText\": \"Edit\",\n \"product.form.variant.saveButton\": \"Save\",\n \"product.form.variant.cancelButton\": \"Cancel\",\n \"product.form.variant.name.heading\": \"Variant name\",\n \"product.form.variant.name.placeholder\": \"Variant\",\n \"product.form.variant.heading\": \"Variants\",\n \"product.form.variant.image.heading\": \"Upload product images\",\n \"product.form.variant.image.placeholder\":\n \"Click to upload, or drag images here\",\n \"product.form.variant.image.description\": \"\",\n \"product.form.variant.price.heading\": \"Price\",\n \"product.form.variant.price.placeholder\": \"0.00\",\n \"product.form.variant.discount.heading\": \"Discount\",\n \"product.form.variant.discount.placeholder\": \"0.00\",\n \"product.form.variant.sgst.placeholder\": \"0\",\n \"product.form.variant.barcodes.heading\": \"Barcodes\",\n \"product.form.variant.barcodes.placeholder\": \"Add Barcodes\",\n \"product.form.variant.availability.heading\": \"Availability\",\n \"product.form.variant.unlimitedAvailable.label\": \"Unlimited\",\n \"product.form.variant.stock.quantity.heading\": \"Quantity\",\n \"product.form.variant.availability.placeholder\": \"0\",\n \"product.form.variant.availability.label\": \"Available\",\n \"product.form.deleteText\": \"Delete\",\n \"product.form.submitText\": \"Save\",\n \"product.form.save.draft\": \"Save as Draft\",\n \"product.form.review.submission\": \"Submit for review\",\n \"product.form.cancelText\": \"Cancel\",\n \"product.form.delete.title\": \"\",\n \"product.form.delete.message\":\n \"Are you sure you want to delete this product?\",\n \"product.review.submission.successTitle\": \"Successful!\",\n \"product.review.submission.message\":\n \"Your changes have been successfully submitted for approval. Please await further review.\",\n \"product.draft.submission.message\": \"Saved as Draft\",\n \"product.review.submission.okText\": \"Ok\",\n \"product.form.delete.cancelText\": \"Cancel\",\n \"product.form.delete.confirmText\": \"Confirm\",\n \"product.form.variant.delete.title\": \"\",\n \"product.form.variant.delete.message\":\n \"Are you sure you want to remove this variant?\",\n \"product.form.all.variants.delete.message\":\n \"Are you sure you want to remove all variants?\",\n \"product.form.variant.delete.cancelText\": \"Cancel\",\n \"product.form.variant.delete.confirmText\": \"Confirm\",\n \"product.form.stores.fetchError\":\n \"Failed to load some stores. Click here to try again.\",\n \"product.form.variant.rack.heading\": \"Rack\",\n \"product.form.variant.aisle.heading\": \"Aisle\",\n \"product.form.variant.shelf.heading\": \"Shelf\",\n \"product.form.variant.position.placeholder\": \"Position\",\n \"product.form.variant.rack.placeholder\": \"Rack\",\n \"product.form.variant.aisle.placeholder\": \"Aisle\",\n \"product.form.variant.shelf.placeholder\": \"Shelf\",\n \"product.form.soldByWeight\": \"Sold by weight\",\n \"product.description.placeholder\": \"Describe yout product here\",\n \"recuring.product.label\": \"Recurring Product\",\n \"product.short.description.placeholder\": \"Short description of product\",\n \"save.text\": \"Save\",\n \"product.form.soldByWeight.enable\": \"Enable\",\n \"product.form.handlingDays.placeholder\": \"Enter pre-order handling days\",\n \"product.form.handlingDays.label\": \"pre-order handling days\",\n \"product.form.bulkThreshold.placeholder\": \"Enter bulk order threshold\",\n \"product.form.bulkThreshold.label\": \"bulk order threshold\",\n \"product.form.soldByWeight.pattern\": \"Incorrect name pattern\",\n \"product.form.packageType.pattern\": \"Incorrect type pattern\",\n \"product.form.variant.pattern\":\n \"Enter name in the format 'number space kg/g/gm' \",\n \"product.form.brand.addButton\": \"Add new brand\",\n \"product.form.enter\": \"Enter\",\n \"product.form.lowStock\": \"Low Stock Alert Quantity\",\n \"product.form.lowStock.placeholder\": \"Enter Low Stock\",\n \"product.form.select\": \"Select\",\n \"product.form.details.header\": \"Product Details\",\n \"product.form.other.details.heading\": \"Other Details\",\n \"product.form.seller.price\": \"Seller Price\",\n \"product.form.profit.margin\": \"Profit Margin\",\n \"product.form.suggested.retail.price.header\": \"Suggested Retail Price\",\n \"product.dealer.price.header\": \"Dealer Price\",\n \"product.min.profit.margin.header\": \"Minimum Profit Margin\",\n \"product.min.profit.margin.placeholder\": \"Enter Minimum Profit Margin\",\n \"product.form.variant.price.header\": \"Price\",\n \"product.form.profit.margin.percentage\": \"Percentage\",\n \"product.short.description.label\": \"short description\",\n \"product.form.variant.tax.header\": \"Tax\",\n \"product.form.variant.location.header\": \"Location\",\n cop: \"COP\",\n \"product.form.variant.stock.header\": \"Stock\",\n \"product.form.imageUpload.uploading\": \"Uploading...\",\n \"product.form.imageUploade.error\": \"Error in uploading\",\n \"product.form.secondarycategory.heading\": \"Secondary categories\",\n \"product.form.secondarycategory.placeholder\": \"Enter secondary categories\",\n \"product.form.discount.error\": \"Discount cannot be greater than price\",\n \"product.property.enable.text\": \"Enable Product Properties\",\n \"product.property.add.text\": \"Add Property\",\n \"product.property.add.placeholder\": \"Enter the Property Name\",\n \"product.property.add.success.text\": \"Property Name Added Successfully\",\n \"product.category.placeholder\": \"Search or add categories\",\n \"product.form.seller.price.heading\": \"Seller Pricing\",\n\n \"tag.heading\": \"Tags\",\n \"tag.add.text\": \"Add Tag\",\n \"tag.edit.text\": \"Edit Tag\",\n \"tag.helpItems.message\": \"Your product tags will appear here\",\n \"tag.form.name.heading\": \"Name\",\n \"tag.form.name.placeholder\": \"Enter tag name\",\n \"tag.form.tagline.heading\": \"tagline\",\n \"tag.form.tagline.placeholder\": \"Enter Tag Line\",\n \"tag.form.submitText\": \"Submit\",\n \"tag.form.cancelText\": \"Cancel\",\n \"tag.header.image\": \"Image\",\n \"tag.form.image.heading\": \"Image\",\n \"tag.form.image.placeholder\": \"Click here to upload, or drag your image\",\n \"tag.header.tag\": \"Tag\",\n \"tag.header.productCount\": \"Product Count\",\n \"tag.header.actions\": \"Actions\",\n \"tag.action.edit\": \"Edit\",\n \"tag.action.delete\": \"Delete\",\n \"tag.action.linkToProduct\": \"Link to products\",\n \"tag.action.seeProducts\": \"See products\",\n \"tag.action.viewOnWebsite\": \"View on Website\",\n \"tag.filters.name.heading\": \"Name\",\n \"tag.filters.name.placeholder\": \"Search by Name\",\n \"tag.filters.submitText\": \"Search\",\n \"tag.action.linkToProduct.heading\": \"Add '{name}' tag\",\n \"tag.linkToProduct.product.heading\": \"Product\",\n \"tag.linkToProduct.product.placeholder\": \"Enter a product name\",\n \"tag.linkToProduct.submitText\": \"Submit\",\n \"tag.linkToProduct.product.action.remove\": \"Remove\",\n \"tag.linkToProduct.product.action.retry\": \"Retry\",\n \"tag.filter.clear\": \"Clear All \",\n \"tag.import\": \"Import Tags\",\n\n \"substitutionGroup.heading\": \"Substitution Groups\",\n \"substitutionGroup.add.text\": \"Add group\",\n \"substitutionGroup.helpItems.message\":\n \"A substitution group includes products that are similar to each other and may act as replacements when required.\",\n \"substitutionGroup.header.name\": \"Name\",\n \"substitutionGroup.header.productCount\": \"Product count\",\n \"substitutionGroup.header.status\": \"Status\",\n \"substitutionGroup.header.actions\": \"Actions\",\n \"substitutionGroup.status.enabled\": \"Enabled\",\n \"substitutionGroup.status.disabled\": \"Disabled\",\n \"substitutionGroup.action.edit\": \"Edit\",\n \"substitutionGroup.action.delete\": \"Delete\",\n \"substitutionGroup.form.name.heading\": \"Name\",\n \"substitutionGroup.form.name.placeholder\": \"Name this substitution group\",\n \"substitutionGroup.form.percentageDeviation.heading\": \"Percentage Deviation\",\n \"substitutionGroup.form.percentageDeviation.placeholder\":\n \"Enter a value between 0 and 100\",\n \"substitutionGroup.form.product.heading\": \"Product\",\n \"substitutionGroup.form.product.placeholder\": \"Enter name of a product\",\n \"substitutionGroup.form.product.requiredMessage\":\n \"A substitution group must have at least one product\",\n \"substitutionGroup.form.deleteText\": \"Delete\",\n \"substitutionGroup.form.submitText\": \"Submit\",\n \"substitutionGroup.form.cancelText\": \"Cancel\",\n \"substitutionGroup.filters.name.heading\": \"Name\",\n \"substitutionGroup.filters.name.placeholder\": \"Search by name\",\n \"substitutionGroup.filters.status.heading\": \"Name\",\n \"substitutionGroup.filters.status.label.all\": \"All\",\n \"substitutionGroup.filters.status.label.enabled\": \"Enabled\",\n \"substitutionGroup.filters.status.label.disabled\": \"Disabled\",\n \"substitutionGroup.filters.submitText\": \"Search\",\n \"substitutionGroup.filters.clearFiltersText\": \"Clear All\",\n \"substitutionGroup.action.disable\": \"Disable\",\n \"substitutionGroup.action.enable\": \"Enable\",\n \"substitutionGroup.dialogs.disable.title\": \"Are you sure?\",\n \"substitutionGroup.dialogs.enable.title\": \"Are you sure?\",\n \"substitutionGroup.dialogs.disable.message\":\n \"This action will disable the substitution group\",\n \"substitutionGroup.dialogs.enable.message\":\n \"This action will enable the substitution group\",\n \"substitutionGroup.dialogs.confirmText\": \"Confirm\",\n \"substitutionGroup.dialogs.cancelText\": \"Cancel\",\n\n \"catalogue.dashboard.heading\": \"Dashboard\",\n \"catalogue.dashboard.helpItems.title\": \"From the blog\",\n \"catalogue.dashboard.helpItems.gp.title\":\n \"Good Product description saves money\",\n \"catalogue.dashboard.helpItems.gp.description\":\n \"Websites with helpful description get free visitors from search engines like Google.\",\n \"catalogue.dashboard.helpItems.uI.title\":\n \"Why uploading images are important?\",\n \"catalogue.dashboard.helpItems.uI.description\":\n \"Images improves your landing page appeal which directly correlates with better conversion. \",\n \"catalogue.dashboard.helpItems.cm.title\":\n \"Defining a content marketing stategy\",\n \"catalogue.dashboard.helpItems.cm.description\":\n \"Content marketing is a form of marketing focused on creating, publishing and distributing content for a targeted audience online.\",\n \"catalogue.dashboard.productsWithoutImages\":\n \"{count, plural, one{Product} other{Products} } without images\",\n \"catalogue.dashboard.productsWithoutDescription\":\n \"{count, plural, one{Product} other{Products} } without description\",\n \"catalogue.dashboard.categories\":\n \"{count, plural, one{Category} other{Categories} }\",\n \"catalogue.dashboard.products\":\n \"{count, plural, one{Product} other{Products} }\",\n \"catalogue.dashboard.brands\": \"{count, plural, one{Brand} other{Brands} }\",\n \"themes.bc.name\": \"Collection name\",\n \"themes.bc.name.placeholder\": \"Enter collection name\",\n \"themes.bc.blog.placeholder\": \"Enter blogs to show\",\n \"catalogue.product.restriction.image\": \"Image\",\n \"catalogue.product.restriction.name\": \"Name\",\n \"catalogue.product.restriction.startDate\": \"Start Date\",\n \"catalogue.product.restriction.endDate\": \"End Date\",\n \"catalogue.product.restriction.max.purchaseable.qty\":\n \"Max Purchasable Quantity\",\n \"catalogue.product.restriction.actions\": \"Actions\",\n \"catalogue.product.restriction.bulk.upload\": \"Bulk Upload\",\n \"product.filters.permissableSeller.heading\": \"Permissable Sellers\",\n \"product.seller.selection.heading\": \"Select Seller\",\n \"product.filters.sellerName.heading\": \"Seller Name\",\n \"product.filters.permissableSeller.placeholder\": \"Search by Sellers\",\n \"seller.filters.sellerName.heading\": \"Email\",\n \"seller.filters.seller.name.heading\": \"Seller Name\",\n \"seller.filters.permissableSeller.placeholder\": \"Search by Email\",\n \"user.filters.name.placeholder\": \"Search by User name\",\n \"user.filters.email.placeholder\": \"Search by User email\",\n \"user.filters.seller.placeholder\": \"Search by Seller name\",\n \"product.form.sellingMargin\": \"Selling Price: \",\n \"product.form.profitMargin\": \"Profit Margin: \",\n \"product.form.minimumProfitMargin.error\":\n \"Profit margin should be equal to or greater than {value}%\",\n};\n\nexport default data;\n","const data = {\n \"googleMaps.zeroResults.error\": \"Address not found\",\n \"googleMaps.addressMap.error\":\n \"Google Map API failed on Address Map with status\",\n \"store.add.email.description\":\n \"Necessary for shipping your orders through 3rd party courier services\",\n \"order.filters.referenceNumber.heading\": \"Order number\",\n \"order.filters.referenceNumber.placeholder\": \"Enter an order number here\",\n \"order.filters.status.heading\": \"Status\",\n \"order.filters.status.placeholder\": \"Choose order status\",\n \"order.filters.submitText\": \"Search\",\n \"order.filters.clearFiltersText\": \"Clear All\",\n \"order.filters.preorder\": \"Preorder\",\n \"order.emptyList.message\":\n \"Your orders will be shown here. Start selling now.\",\n \"order.click.collect.empty\":\n \"This store does not support click and collect orders\",\n \"order.helpItems.title\": \"How to get orders?\",\n \"order.helpItems.seo.title\": \"Search Engine Optimization\",\n \"order.helpItems.seo.description\":\n \"You will be able to target your customers using email and SMS after the import, which will potentially increase your revenue.\",\n \"order.helpItems.rcm.title\": \"Repeat Customer Marketing\",\n \"order.helpItems.rcm.description\":\n \"You can create a discount coupon for your customers and promote the online purchase.\",\n \"order.helpItems.nca.title\": \"New Customer Acquisition\",\n \"order.helpItems.nca.description\":\n \"You can put up a banner at a prominent place in your physical store. Include the promotional offer to create buzz.\",\n \"order.table.header.referenceNumber\": \"Order no.\",\n \"order.table.referenceNumber.prefix\": \"Z\",\n \"order.table.clientId.prefix\": \"#\",\n \"order.details.invoice.order\": \"Invoice \",\n \"order.table.header.customer\": \"Customer\",\n \"order.table.header.placedTime\": \"Placed time\",\n \"order.table.header.expectedTime\": \"Order Slot\",\n \"order.table.header.amount\": \"Amount\",\n \"order.table.header.status\": \"Status\",\n \"order.table.text.fillrate\": \"Fill Rate: \",\n \"order.table.header.completionTime\": \"Completion time\",\n \"order.table.header.courierAndCharge\": \"Courier & Charge\",\n \"order.action.dispatch\": \"Dispatch\",\n \"order.courier.select.heading\": \"Dispatch by\",\n \"order.courier.dispatch.success\": \"Order dispatch request sent successfully!\",\n \"order.courier.dispatch.table.header.name\": \"Courier Name\",\n \"order.courier.dispatch.no.vendor.found\": \"No courier vendor found\",\n \"order.courier.dispatch.table.header.pickup.estimate\": \"Pick Up Estimate\",\n \"order.courier.dispatch.table.header.delivery.estimate\": \"Delivery Estimate\",\n \"order.dispatch.label.courier.name\": \"COURIER NAME\",\n \"order.dispatch.label.courier.charges\": \"Charges\",\n \"order.dispatch.label.courier.tracking.id\": \"Tracking Id\",\n \"order.dispatch.placeholder.courier.name\": \"Ex: India Post\",\n \"order.dispatch.placeholder.courier.charges\": \"₹10\",\n \"order.dispatch.placeholder.courier.tracking.id\": \"AWB87987FRS\",\n \"order.table.courierCharge\": \"Courier Charges\",\n \"okay.text\": \"Okay\",\n \"order.vendor.shiprocket\": \"Shiprocket\",\n \"order.vendor.dunzo\": \"Dunzo\",\n \"order.vendor.other\": \"Other\",\n \"order.vendor.self\": \"Self\",\n \"order.table.header.actions\": \"Actions\",\n \"order.table.itemCount\": \"{count} Items\",\n \"order.table.pendingAmount\": \"{currency}{amount} Pending\",\n \"order.table.refundAmount\": \"{currency}{amount} Refund\",\n \"order.gridItem.status.title\": \"Order status\",\n \"order.status.completed\": \"Completed\",\n \"order.status.cancelled\": \"Cancelled\",\n \"order.status.pending\": \"Pending\",\n \"order.status.picked\": \"Picked\",\n \"order.status.checked\": \"Checked\",\n \"order.status.packed\": \"Packed\",\n \"order.action.viewDetails\": \"View Details\",\n \"order.action.complete\": \"Complete Order\",\n \"order.action.packed\": \"Pack Order\",\n \"order.action.cancel\": \"Cancel Order\",\n \"order.action.viewInvoice\": \"View Invoice\",\n \"order.action.printInvoice\": \"Print Invoice\",\n \"order.action.viewPayments\": \"Payment Details\",\n \"order.action.return\": \"Return Order\",\n \"order.status.picking\": \"Picking\",\n \"order.status.partiallypicked\": \"Partially picked\",\n \"order.status.checking\": \"Checking\",\n \"order.status.packing\": \"Packing\",\n \"order.status.dispatched\": \"Dispatched\",\n \"order.status.returned\": \"Returned\",\n \"order.details.packing.heading\": \"Packing Details\",\n \"order.packing.type\": \"Type\",\n \"order.packing.labels\": \"Labels\",\n \"order.packing.smallBags\": \"Small Bags\",\n \"order.packing.largeBags\": \"Large Bags\",\n \"order.packing.frozenBoxes\": \"Frozen Boxes\",\n \"order.packing.crates\": \"Crates\",\n \"order.packing.smallBoxes\": \"Small Boxes\",\n \"order.packing.mediumBoxes\": \"Medium Boxes\",\n \"order.packing.largeBoxes\": \"Large Boxes\",\n \"order.details.popup.heading\": \"Complete Order\",\n \"order.details.packing.title\": \"Your order contains the following packages.\",\n \"order.details.packing.type\": \"Package Type: \",\n PENDING: \"Pending\",\n PICKING: \"Picking\",\n CHECKING: \"Checking\",\n PICKED: \"Picked\",\n CHECKED: \"Checked\",\n PACKED: \"Packed\",\n DISPATCHED: \"Dispatched\",\n COMPLETED: \"Completed\",\n CANCELLED: \"Cancelled\",\n RETURNED: \"Returned\",\n\n \"order.details.heading\": \"Order\",\n \"order.details.invoice.buttonText\": \"View invoice\",\n \"order.details.invoice.indicator\": \"New\",\n \"order.details.invoice.printButtonText\": \"Print invoice\",\n \"order.details.cancel.optionText\": \"Cancel order\",\n \"order.details.complete.optionText\": \"Complete order\",\n \"order.details.original.optionText\": \"Original Invoice\",\n \"order.details.return.optionText\": \"Return Invoice\",\n \"order.details.returm.optionText\": \"Return order\",\n \"order.details.dispute.optionText\": \"File Dispute\",\n \"order.details.cancellation.title\": \"Are you sure?\",\n \"order.details.cancellation.message\": \"This action will cancel this order\",\n \"order.details.cancellation.cancelText\": \"Cancel\",\n \"order.details.cancellation.confirmText\": \"Confirm\",\n \"order.details.packed.title\": \"Are you sure?\",\n \"order.details.completion.title\": \"Are you sure?\",\n \"order.details.packed.message\":\n \"This action will move the order to packed status\",\n \"order.details.packed.item.return.message\":\n \"There are returned items in the order\",\n \"order.details.completion.message\": \"This action will complete this order\",\n \"order.details.completion.item.return.message\":\n \"There are returned items in the order\",\n \"order.details.return.title\": \"Are you sure?\",\n \"order.details.return.message\": \"This action will return the order\",\n \"order.details.pending.title\": \"Are you sure?\",\n \"order.details.pending.message\":\n \"This action will move the order to PENDING status\",\n \"order.action.moveToPending\": \"Move to pending\",\n \"order.action.editPackedOrder\": \"Edit Packed Order\",\n \"order.details.packed.cancelText\": \"Cancel\",\n \"order.details.packed.confirmText\": \"Confirm\",\n \"order.details.completion.cancelText\": \"Cancel\",\n \"order.details.completion.confirmText\": \"Confirm\",\n \"order.details.completion.confirmReturnItem\": \"confirm items\",\n \"order.details.device.desktop\": \"Desktop\",\n \"order.details.device.ios\": \"iOS\",\n \"order.details.device.android\": \"Android\",\n \"order.details.productSearch.placeholder\": \"Search a product to add\",\n \"order.details.removeItem.title\": \"Remove this item?\",\n \"order.details.removeItem.message\":\n \"Press confirm to remove this item from the order\",\n \"order.details.removeItem.cancelText\": \"Cancel\",\n \"order.details.removeItem.confirmText\": \"Confirm\",\n \"order.details.itemsTable.title\": \"Items in order\",\n \"order.details.itemsTable.header.image\": \"Image\",\n \"order.details.itemsTable.header.name\": \"Name\",\n \"order.details.itemsTable.header.quantity\": \"Original Quantity\",\n \"order.details.itemsTable.header.picked\": \"Final Quantity\",\n \"order.details.itemsTable.header.quantity.abbreviated\": \"Qty\",\n \"order.details.itemsTable.header.mrp\": \"Price\",\n \"order.details.itemsTable.header.tax\": \"Tax\",\n \"order.details.itemsTable.header.discount\": \"Discount\",\n \"order.details.itemsTable.header.amount\": \"Amount\",\n \"order.details.itemsTable.header.clientItemId\": \"Client Item Id\",\n \"order.details.itemsTable.clearingMessage\":\n \"All items are removed. Order will be cancelled.\",\n \"order.details.itemsTable.emptyMessage\": \"There are no items in this order.\",\n \"order.details.itemsTable.actions.confirmText\": \"Done\",\n \"order.details.itemsTable.actions.cancelText\": \"Cancel\",\n \"order.details.itemsTable.itemsInOrder.unavailabelText\": \"Item unavailable\",\n \"order.details.errors.onSave\": \"An error occurred. Click here to retry ⟳\",\n \"order.details.errors.onLoad\":\n \"Something went wrong. Click here to try again. ⟳\",\n \"order.details.edit-packed.heading\": \"Packed Order Editing\",\n \"order.details.packages.multi-text.label\": \"Packages\",\n \"order.details.packages.multi-text.placeholder\": \"Enter package label\",\n \"order.details.edit-packed.error\": \"Something went wrong\",\n \"order.details.edit-packed.error.closeDialog\": \"close\",\n \"order.details.edit-packed.error.dialog.label\": \"Error\",\n \"order.details.sample\": \"SAMPLE\",\n \"order.reg.payments.sample.heading\": \"Sample Applicable\",\n\n \"order.details.summary.taxTitle\": \"Tax summary\",\n \"order.details.summary.tax\": \"Tax\",\n \"order.details.summary.price\": \"Base Price\",\n \"order.details.summary.taxAmount\": \"Tax Amount\",\n \"order.details.summary.netAmount\": \"Net Amount\",\n \"order.details.summary.totalTax\": \"Total Tax\",\n\n \"order.details.summary.pendingAmount\": \"Pending amount\",\n \"order.details.summary.refundAmount\": \"Refund amount\",\n \"order.details.summary.totalAmount\": \"Total amount\",\n \"order.details.summary.orderAmount\": \"Order amount\",\n \"order.details.summary.coupondiscount\": \"Coupon discount\",\n \"order.details.summary.shippingCharge\": \"Shipping charge\",\n \"order.details.summary.shippingDiscount\": \"Shipping discount\",\n \"order.details.summary.collectionCharge\": \"Collection charge\",\n \"order.details.summary.collectionDiscount\": \"Collection discount\",\n \"order.details.summary.discount\": \"Discount\",\n \"order.details.summary.slotCharge\": \"Slot charge\",\n \"order.details.summary.slotDiscount\": \"Slot Discount\",\n \"order.details.location.delivery.pending.title\": \"Delivering to\",\n \"order.details.location.delivery.completed.title\": \"Delivered to\",\n \"order.details.location.billing.address.title\": \"Billing Address\",\n \"order.details.location.pickup.pending.title\": \"Pickup Details\",\n \"order.details.location.pickup.completed.title\": \"Pickup Details\",\n \"order.details.location.b2b.pending.title\": \"B2B Details\",\n \"order.details.location.b2b.completed.title\": \"B2B Details\",\n \"order.details.location.offline.pending.title\": \"Offline Details\",\n \"order.details.location.offline.completed.title\": \"Offline Details\",\n \"order.details.location.option.delivery\": \"Delivery\",\n \"order.details.location.option.pickup\": \"Pickup\",\n \"order.details.location.actions.confirmText\": \"Done\",\n \"order.details.location.actions.cancelText\": \"Cancel\",\n \"order.details.invoice.title\": \"Invoice\",\n \"order.details.invoice.taxDisclaimer\": \"* All prices are tax inclusive\",\n \"order.details.invoice.referenceNumber\": \"Order #{referenceNumber}\",\n \"order.details.payment.heading\": \"Payment Details\",\n \"order.details.payment.amount\": \"Amount\",\n \"order.details.payment.mode\": \"Mode\",\n \"order.details.payment.card\": \"Card\",\n \"order.details.payment.status\": \"Status\",\n \"order.details.payment.details\": \"Details\",\n \"order.details.payment.transactionId\": \"Transaction Id\",\n \"order.details.payment.ref\": \"Refund reference\",\n \"order.details.preferredDate\": \"Preferred date\",\n \"order.details.today\": \"Today\",\n \"order.details.tomorrow\": \"Tomorrow\",\n \"order.details.prefferdSlot\": \"Preferred Slot\",\n \"order.details.slot.heading\": \"Order Slot\",\n \"order.details.pickup.address\": \"Pickup Address: \",\n \"order.details.preorder\": \"Pre Ordered\",\n \"order.register.payments\": \"Register Payments\",\n \"order.heading\": \"Order\",\n \"order.paymentmode.COD\": \"COD\",\n \"order.paymentmode.LOYALTY\": \"Loyalty\",\n \"order.paymentmode.MSWIPE\": \"Mswipe\",\n \"order.paymentmode.ONLINE\": \"Online\",\n \"order.paymentmode.PENDING\": \"Pending\",\n \"order.paymentmode.PREPAID\": \"Prepaid\",\n \"order.register.payments.for\": \"Register payments for\",\n \"order.payment.paymentmode\": \"Payment Method\",\n \"order.payment.pendingamount\": \"Pending Amount\",\n \"order.payment.amount\": \"Amount\",\n \"order.payment.transactionid\": \"Transaction Id\",\n \"order.payment.submit\": \"Submit\",\n \"use.current.location\": \"Use current location\",\n \"order.add.text\": \"Create new order\",\n \"order.form.add.heading\": \"Place New Order\",\n \"order.form.customer.phone.heading\": \"Customer Phone Number\",\n \"order.form.productSearch.heading\": \"Search Product/Scan Barcode\",\n \"order.form.productSearch.placeholder\": \"Search Product/Scan Barcode\",\n \"order.form.paymentMode.heading\": \"Payment Option\",\n \"order.form.paymentMode.online\": \"Online\",\n \"order.form.paymentMode.cash\": \"Cash\",\n \"order.form.customer.phone.placeholder\": \"Enter Phone Number\",\n \"order.form.submit.text\": \"Place Order\",\n \"order.form.cancel.text\": \"Cancel\",\n \"order.form.customer.name.heading\": \"Customer Name\",\n \"order.form.customer.name.placeholder\": \"Enter Customer Name\",\n \"order.form.customer.email.heading\": \"Customer Email Address\",\n \"order.form.customer.email.placeholder\": \"Enter Customer Email\",\n \"order.form.save.error.closeText\": \"Ok\",\n \"order.form.search.text\": \"Search\",\n \"order.form.customerDetails.heading\": \"Enter Customer Details\",\n \"order.form.addProduct.heading\": \"Add Products\",\n \"order.form.orderType.heading\": \"Order Type\",\n \"order.form.orderType.pickup\": \"PICKUP\",\n \"order.form.paymentMode.delivery\": \"DELIVERY\",\n \"order.form.selectOrderType.heading\": \"Select Order Type\",\n \"order.form.pickupLocation.heading\": \"Pickup location\",\n \"order.form.customer.address.heading\": \"Address\",\n \"order.form.customer.landmark.heading\": \"Landmark\",\n \"order.form.customer.city.heading\": \"City\",\n \"order.form.customer.state.heading\": \"State\",\n \"order.form.customer.state.enterState\": \"Enter state\",\n \"order.form.customer.pincode.heading\": \"Pincode\",\n \"order.form.customer.address.placeholder\": \"Enter address\",\n \"order.form.customer.landmark.placeholder\": \"Enter landmark\",\n \"order.form.customer.pincode.placeholder\": \"Enter pincode\",\n \"order.form.customer.city.placeholder\": \"Enter city\",\n \"order.form.save.success.title\": \"Order placed successfully!\",\n \"order.form.save.success.closeText\": \"Ok\",\n \"order.form.cash.tendered\": \"Cash tendered\",\n \"order.form.balanceAmount\": \"Balance\",\n \"order.form.addAddress.heading\": \"Add Address\",\n \"order.form.deliveryArea.heading\": \"Select Delivery Address\",\n \"order.metaData.heading\": \"Order Custom Fields\",\n \"order.metaData.enter\": \"Enter\",\n \"order.form.date.heading\": \"Select Date\",\n \"order.form.slot.heading\": \"Select Slot\",\n \"order.form.slots.today\": \"Today\",\n \"order.form.slots.tomorrow\": \"Tomorrow\",\n \"order.form.slots.error.message\": \"Select a slot\",\n \"order.form.addressnotserved\":\n \"Address not served. Please select another address or store\",\n \"order.payment.cod\": \"COD\",\n \"order.payment.online\": \"Online\",\n \"order.payment.pending\": \"Pending\",\n \"order.payment.paid\": \"Paid\",\n \"order.payment.refund\": \"Refund\",\n \"order.type.picking\": \"Picking\",\n \"order.type.pickup\": \"Pickup\",\n \"order.type.delivery\": \"Delivery\",\n \"order.filters.payment.heading\": \"Payment Mode\",\n \"order.filters.payment.placeholder\": \"Select payment mode\",\n \"order.filters.paymentStatus\": \"Payment Status\",\n \"order.filters.paymentStatus.placeholder\": \"Select payment status\",\n \"order.filters.orderType\": \"Order Type\",\n \"order.filters.orderType.placeholder\": \"Select order type\",\n \"order.filters.customer\": \"Customer name\",\n \"order.filters.customer.placholder\": \"Enter customer name\",\n \"order.filters.clientId.heading\": \"Client Id\",\n \"order.filters.clientId.placeholder\": \"Enter client id\",\n \"order.filters.slot\": \"Order Slot\",\n \"order.filters.slot.placeholder\": \"Select order slot\",\n \"order.select\": \"Select\",\n \"order.filters.placedOn\": \"Placed On\",\n \"order.filter.placedOn.placeholder\": \"Date\",\n \"order.filters.preferredDate\": \"Preferred Date\",\n \"order.filters.slot.fetchTitle\": \"Wait! Fetching slots\",\n \"product.form.additional.details.heading\": \"Additional details\",\n\n \"order.log.itemName\": \"Item Name\",\n \"order.log.oldQuantity\": \"Old Quantity\",\n \"order.log.newQuantity\": \"New Quantity\",\n \"order.log.orderItemId\": \"Order Item ID\",\n \"order.action.order.logs.for\": \"Order logs for\",\n \"order.actions.logs\": \"View logs\",\n \"order.actions.trips\": \"View trips\",\n \"order.logs.emptyMeassage\": \"No order logs for this order\",\n \"order.log.mode\": \"Mode\",\n \"order.log.amount\": \"Amount\",\n \"order.log.status\": \"Status\",\n \"order.log.user\": \"by\",\n \"order.logs.heading\": \"Order Log \",\n \"order.logs.status\": \"Status\",\n \"order.logs.orderRef\": \"Ref.\",\n \"order.log.tripId\": \"Trip Id \",\n \"order.cancel\": \"Cancel\",\n \"order.submit\": \"Submit\",\n \"order.enter\": \"Enter\",\n CALL_TO_SUBSTITUTE: \"Call for Substitute\",\n SUBSTITUTION_DISABLED: \"No call No substitution\",\n SUBSTITUTION_ENABLED: \"Replace with equivalent\",\n \"order.log.reason\": \"Reason\",\n \"order.log.placedfrom\": \"Placed from\",\n\n \"order.log.payment.changed\": \"Payment Changed\",\n \"order.log.from\": \"From\",\n \"order.log.to\": \"To\",\n \"order.log.address.changed\": \"Address Changed\",\n \"order.log.shipping.charges\": \"Shipping Charges\",\n \"order.log.type.changed\": \"Type Changed\",\n \"order.log.amount.changed\": \"Amount Changed\",\n \"order.log.date.changed\": \"Date Changed\",\n \"order.log.status.changed\": \"Status Changed\",\n \"order.log.slot.changed\": \"Slot Changed\",\n \"order.log.return\": \"Order return\",\n \"order.log.transactionId\": \"Transaction Id\",\n \"order.log.payment.initiated\": \"Payment initiated\",\n \"order.log.payment.cancelled\": \"Payment cancelled\",\n \"order.log.payment.completed\": \"Payment completed\",\n \"order.log.refund.initiated\": \"Refund initiated\",\n\n \"customer.heading\": \"Customers\",\n \"customer.helpItems.message\":\n \"You will see your customers’ details here. Get customers now.\",\n \"customer.helpItems.title\": \"How to get Customers?\",\n \"customer.helpItems.iec.title\": \"Import your existing customers\",\n \"customer.helpItems.iec.description\":\n \"You will be able to target your customers using email and SMS after the import, which will potentially increase your revenue.\",\n \"customer.helpItems.rpo.title\": \"Run a promotional offer\",\n \"customer.helpItems.rpo.description\":\n \"You can create a discount coupon for your customers and promote the online purchase.\",\n \"customer.helpItems.om.title\": \"Offline Marketing\",\n \"customer.helpItems.om.description\":\n \"You can put up a banner at a prominent place in your physical store. Include the promotional offer to create buzz.\",\n \"customer.import.text\": \"Import Customers\",\n \"customer.modal.import.text\": \"Import Customers\",\n \"customer.import.successText\":\n \"CSV File Uploaded Successfully! Customers will be added and appear after 15 minutes\",\n \"customer.tags.import.successText\":\n \"CSV File Uploaded Successfully! Tags will be added and appear after 15 minutes\",\n \"customer.table.header.image\": \"Image\",\n \"customer.table.header.name\": \"Name\",\n \"customer.table.header.contact\": \"Contact\",\n \"customer.table.header.joinDate\": \"Join Date\",\n \"customer.table.header.lastPurchased\": \"Last Purchased\",\n \"customer.table.header.orders\": \"Orders\",\n \"customer.table.header.actions\": \"Actions\",\n \"customer.table.header.status\": \"Status\",\n \"customer.table.actions.enable\": \"Enable\",\n \"customer.table.actions.disable\": \"Disable\",\n \"customer.table.actions.enable.information\":\n \"You want to enable this customer ?\",\n \"customer.table.actions.disable.information\":\n \"You want to disable this customer ?\",\n \"customer.details.header.joined\": \"Joined\",\n \"customer.details.header.lastPurchase\": \"Last Purchase\",\n \"customer.table.header.joinDateLastPurchase\": \"Join Date / Last Purchase\",\n \"customer.enterCustomerEmail\": \"Enter Customer's Email\",\n \"customer.searchByEmail\": \"Search By Email\",\n \"customer.searchByClientId\": \"Search By Id\",\n \"customer.enterCustomerPhone\": \"Enter Customer's Phone\",\n \"customer.enterClientId\": \"Enter Client's Id\",\n \"customer.searchByPhone\": \"Search By Phone\",\n \"customer.filters.submittext\": \"Search\",\n \"customer.filters.clearFiltersText\": \"Clear All\",\n \"customer.details.pages.basicinfo\": \"Basic Info\",\n \"customer.details.pages.address\": \"Address\",\n \"customer.details.pages.phoneemail\": \"Phone / Email\",\n \"customer.details.pages.otherdetails\": \"Other Details\",\n \"customer.details.purchase.emptyText\":\n \"Currently there are no orders for this customer\",\n \"customer.joinedOn\": \"Joined On\",\n \"cutomer.joinedOn.placeholder\": \"Date\",\n \"customer.updatedAt\": \"Updated On\",\n \"customer.details.pages.basicinfo.totalorders\": \"Total Orders\",\n \"customer.details.pages.basicinfo.purchasesworth\": \"Purchase worth\",\n \"customer.details.pages.basicinfo.joined\": \"Joined On\",\n \"customer.details.pages.basicinfo.lastPurchase\": \"Last Purchase\",\n \"customer.details.pages.address.addAddress\": \"Add Address\",\n \"customer.details.pages.phonemail.addPhoneNumber\": \"Add Number\",\n \"customer.details.pages.phonemail.mailId\": \"Email Id\",\n \"customer.details.pages.phonemail.addEmailId\": \"Add Email ID\",\n \"customer.details.pages.address.viewOnMap\": \"View On Map\",\n \"customer.details.delete\": \"Delete\",\n \"customer.details.address.deleted\": \"Address has been successfully deleted\",\n \"customer.details.phone.deleted\":\n \"Phone number has been successfully deleted\",\n \"customer.details.order.status\": \"Order Status\",\n \"customer.details.email.send\":\n \"An email will be sent to the customer shortly.\",\n \"customer.details.call.call\": \"A call will be made to the customer shortly\",\n \"customer.details.sms.send\": \"An SMS will shortly be sent to the customer.\",\n \"customer.details.email.added\": \"Email added successfully\",\n \"customer.details.sendMessage\": \"Send Message\",\n \"customer.details.sendEmail\": \"Send email\",\n \"customer.details.call\": \"Call\",\n \"customer.details.address.added\": \"Address added successfully\",\n \"customer.details.phone.added\": \"Phone number added successfully\",\n \"customer.details.email.deleted\": \"Email id has been successfully deleted\",\n \"customer.details.order.purchase.history\": \"Purchase History\",\n \"customer.details.address.addAddress\": \"Add Address\",\n \"customer.details.address.landmark\": \"Landmark\",\n \"customer.details.address.pincode\": \"Pincode\",\n \"customer.details.address.city\": \"City\",\n \"customer.details.submitText.submit\": \"Submit\",\n \"customer.details.email.email\": \"Email\",\n \"customer.details.phone.phoneNumber\": \"Phone Number\",\n \"customer.details.call.option.lateDelivery\": \"Late Delivery\",\n \"customer.details.call.option.orderEdit\": \"Order Edit\",\n \"customer.details.call.option.paymentReminder\": \"Payment Reminder\",\n \"customer.details.call.option.rescheduling\": \"Rescheduling\",\n \"customer.details.call.option.orderConfirmation\": \"Order Confirmation\",\n \"customer.details.call.option.missedCallback\": \"Missed Callback\",\n \"customer.details.call.option.addressClarification\": \"Address Clarification\",\n \"customer.details.call.option.callToInternalEmployees\":\n \"Call To Internal Employees\",\n \"customer.details.call.option.tripEnquiry\": \"Trip Enquiry\",\n \"customer.details.call.option.surveyOnceShopped\": \"Survey - Once Shopped\",\n \"customer.details.call.option.retention\": \"Rentention\",\n \"customer.details.call.submitText.call\": \"Call\",\n \"customer.details.call.option.other\": \"Other\",\n \"customer.details.mail.subject\": \"Subject\",\n \"customer.details.mail.body\": \"Body\",\n \"customer.details.mail.submitText.send\": \"Send\",\n \"customer.details.sms.message\": \"Message\",\n \"customer.details.sms.submitText.send\": \"Send\",\n \"customer.address.delete.prompt.title\": \"Remove this address?\",\n \"customer.phone.delete.prompt.title\": \"Are you sure?\",\n \"customer.phone.delete.prompt.message\": \"This action will remove this number\",\n \"customer.email.delete.prompt.title\": \"Are you sure?\",\n \"customer.email.delete.prompt.message\":\n \"This action will remove this email ID\",\n \"customer.address.modal.heading\": \"Address\",\n \"customer.cancel.message\": \"No\",\n \"customer.confirm.message\": \"Yes\",\n \"customer.address.success\": \"Success\",\n \"customer.address.saved\": \"Address updated\",\n \"customer.address.okay\": \"Okay\",\n \"customer.action.reset.password\": \"Reset Password\",\n \"customer.save.success.title\": \"Password successfully changed!\",\n \"customer.save.success.closeText\": \"Okay\",\n \"customer.reset.password.title\": \"Are you sure ?\",\n \"customer.reset.password.message\": \"You want to reset customer's password ?\",\n \"customer.reset.password.cancelText\": \"No, Cancel\",\n \"customer.reset.password.confirmText\": \"Yes, Do it!\",\n \"customer.details.page.address.placeholder\": \"Enter address\",\n \"customer.details.address.landmark.placeholder\": \"Enter landmark\",\n \"customer.details.address.pincode.placeholder\": \"Enter pincode\",\n \"customer.details.address.city.placeholder\": \"Enter city\",\n \"customer.details.page.address.notServiceable.error\":\n \"Address is not serviceable\",\n\n \"customer.emailWidget.form.title\": \"Send email to\",\n \"customer.emailWidget.form.subject.heading\": \"Subject\",\n \"customer.emailWidget.form.subject.placeholder\": \"\",\n \"customer.emailWidget.form.body.heading\": \"Body\",\n \"customer.emailWidget.form.body.placeholder\": \"\",\n \"customer.emailWidget.form.submitText\": \"Submit\",\n \"customer.callWidget.form.title\": \"Call\",\n \"customer.smsWidget.form.title\": \"Send sms to\",\n \"customer.callWidget.form.reason.heading\": \"Reason\",\n \"customer.callWidget.form.reason.placeholder\": \"Please select an option\",\n \"customer.callWidget.form.reason.lateDelivery\": \"Late delivery\",\n \"customer.callWidget.form.reason.orderEdit\": \"Order edit\",\n \"customer.callWidget.form.reason.paymentReminder\": \"Payment reminder\",\n \"customer.callWidget.form.reason.rescheduling\": \"Rescheduling\",\n \"customer.callWidget.form.reason.orderConfirmation\": \"Order confirmation\",\n \"customer.callWidget.form.reason.missedCallback\": \"Missed call back\",\n \"customer.callWidget.form.reason.addressClarifiation\": \"Address clarifiation\",\n \"customer.callWidget.form.reason.internalCall\": \"Call to internal employees\",\n \"customer.callWidget.form.reason.tripEnquiry\": \"Trip Enquiry Call\",\n \"customer.callWidget.form.reason.survey\": \"Survey - Once Shopped\",\n \"customer.callWidget.form.reason.retention\": \"Retention\",\n \"customer.callWidget.form.reason.other\": \"Other\",\n \"customer.callWidget.form.otherReason.heading\": \"Other reason\",\n \"customer.callWidget.form.otherReason.placeholder\": \"\",\n \"customer.callWidget.form.submitText\": \"Submit\",\n \"customer.entityMetaData.successTitle\": \"Success\",\n \"customer.entityMetaData.successInformation\":\n \"Your settings have been successfully saved\",\n \"customer.entityMetaData.ok\": \"Okay\",\n \"customer.entityMetaData.errorTitle\": \"Error\",\n \"customer.entityMetaData.heading\": \"Custom fields\",\n \"customer.entityMetaData.enter\": \"Enter\",\n \"customer.entityMetaData.submit\": \"Save\",\n \"customer.entityMetaData.cancel\": \"Cancel\",\n \"customer.contact.details.default\": \"Default\",\n \"customer.contact.details.set.default\": \"Set as default\",\n \"customer.contact.details.delete\": \"Delete\",\n \"all.label.text\": \"All\",\n \"verified.label.text\": \"Verified\",\n \"not.verified.label.text\": \"Not Verified\",\n \"status.label.enabled\": \"Enabled\",\n \"disabled.text\": \"Disabled\",\n\n \"operations.dashboard.heading\": \"Operations dashboard\",\n \"operations.dashboard.sales\": \"Sales\",\n \"operations.dashboard.customerAcquired\": \"Customers acquired\",\n \"operations.dashboard.customersTransacted\": \"Customers transacted\",\n \"operations.dashboard.orders\": \"Orders\",\n \"operations.dashboard.yesterday\": \"Yesterday\",\n \"operations.dashboard.weeklyAvg\": \"Weekly avg.\",\n \"operations.dashboard.lastWeek\": \"Same day last week\",\n \"operations.dashboard.topProducts.heading\": \"Top Products\",\n \"operations.dashboard.count\": \"{count, plural, one{1 time} other{# times}}\",\n \"operations.dashboard.categories.heading\": \"Categories\",\n \"operations.dashboard.orderSlot.heading\": \"Orders Today\",\n \"operations.dashboard.slot\": \"Slot\",\n \"operations.dashboard.counts\": \"Count\",\n \"operations.dashboard.total\": \"Total\",\n \"order.log.editedBy\": \"Updated\",\n \"order.log.customerNA\": \"Customer not available\",\n \"order.log.leftAtDoorStep\": \"Order was left at doorstep\",\n \"operations.store.heading\": \"Stores\",\n \"operations.store.add.text\": \"Add store\",\n \"operations.store.table.header.name\": \"Name\",\n \"operations.store.table.header.clientId\": \"Client Id\",\n \"operations.store.table.header.address\": \"Address\",\n \"operations.store.table.header.deliveyHub\": \"Has Delivey Hub\",\n \"operations.store.table.header.picking\": \"Has Picking\",\n \"operations.store.table.header.status\": \"Status\",\n \"operations.store.table.row.picking.yes\": \"Yes\",\n \"operations.store.table.row.picking.no\": \"No\",\n \"operations.store.table.header.actions\": \"Actions\",\n \"operations.store.actions.edit\": \"Edit\",\n \"operations.store.actions.delete\": \"Delete\",\n \"operations.store.actions.enable\": \"Enable\",\n \"operations.store.actions.disable\": \"Disable\",\n \"operations.store.default\": \"Default\",\n \"operations.store.form.add.heading\": \"Add a store\",\n \"operations.store.form.edit.heading\": \"Edit store\",\n \"operations.store.form.name.heading\": \"Name\",\n \"operations.store.form.clientId.heading\": \"Client Id\",\n \"operations.store.form.clientId.placeholder\": \"Enter client Id\",\n \"operations.store.form.name.placeholder\": \"Enter your store's name\",\n \"operations.store.form.location.heading\": \"Location\",\n \"operations.store.form.location.placeholder\": \"Search for your location\",\n \"operations.store.form.location.requiredMessage\":\n \"Please set store's location\",\n \"operations.store.form.address.heading\": \"Address\",\n \"operations.store.form.address.placeholder\":\n \"Enter your store's complete address\",\n \"order.form.customer.address.line.one.heading\": \"Address line 1\",\n \"order.form.customer.address.line.two.heading\": \"Address line 2\",\n \"operations.store.form.submitText\": \"Submit\",\n \"operations.store.form.cancelText\": \"Cancel\",\n \"operations.store.form.metaData.heading\": \"Custom Fields\",\n \"operations.store.empty.message\": \"There are currently no stores configured\",\n \"operations.store.form.hasPicking\": \"Has Picking\",\n \"operations.store.form.hasDeliveryHub\": \"Has Delivery Hub\",\n \"operations.store.filters.clientId.heading\": \"Client Id\",\n \"operations.store.filters.clientId.placeholder\": \"Search by Client Id\",\n \"operations.store.form.businessHours.title\": \"Business Hours\",\n \"operations.store.form.businessHours.day\": \"Day\",\n \"operations.store.form.businessHours.alwaysOpen\": \"Always Open\",\n \"operations.store.form.businessHours.openingTime\": \"Opening Time\",\n \"operations.store.form.businessHours.closingTime\": \"Closing Time\",\n \"operations.store.form.hasPicking.label\": \"is picking done here?\",\n \"operations.store.form.store.level.payment\": \"store level payments setting\",\n \"operations.store.form.hasDeliveryHub.label\": \"is this a delivery hub?\",\n \"operations.store.form.hasClickCollect.label\": \"is this a collection center?\",\n \"operations.store.form.hasSelfCheckout.label\": \"self checkout\",\n \"operations.store.form.status.label\": \"Status\",\n \"operations.store.form.status.enable.label\": \"Enabled\",\n \"operations.store.form.status.disable.label\": \"Disabled\",\n \"operations.order.click.collect.customer.location\": \"Customer Location\",\n\n \"operations.pickingQueue.header.referenceNumber\": \"Order no.\",\n \"operations.pickingQueue.header.placedTime\": \"Placed time\",\n \"operations.pickingQueue.header.amount\": \"Amount\",\n \"operations.pickingQueue.header.status\": \"Status\",\n \"operations.pickingQueue.itemCount\":\n \"{count, plural, one{1 Item} other{# Items}}\",\n \"operations.pickingQueue.heading\": \"Picking Queue\",\n \"operations.pickingQueue.emptyList.message\":\n \"There are currently no orders for picking\",\n\n \"operations.prodStats.heading\": \"Best Sellers\",\n \"operations.prodStats.byQty.title\": \"By Quantity\",\n \"operations.prodStats.byAmt.title\": \"By Amount\",\n \"operations.prodStats.statTable.name\": \"Name\",\n \"operations.prodStats.statTable.qty\": \"Total Quantity\",\n \"operations.prodStats.statTable.amt\": \"Total Amount\",\n\n \"shifts.edit.heading\": \"Edit employee\",\n \"shifts.heading\": \"Employees\",\n \"shifts.edit\": \"Edit\",\n \"shifts.header.name\": \"Name\",\n \"shifts.header.offdays\": \"Weekly off\",\n \"shifts.header.timings\": \"Timings\",\n \"shifts.header.attendance\": \"Attendance\",\n \"shifts.header.actions\": \"Actions\",\n \"shifts.empty.message\": \"There are currently no users\",\n \"shifts.empty.submessage\": \"Users can be seen once added\",\n \"shifts.designation\": \"Designation\",\n \"shifts.select.designation\": \"Select designation\",\n \"shifts.form.name\": \"Name\",\n \"shifts.form.phone\": \"Phone\",\n \"shifts.form.weekly.off\": \"Weekly off\",\n \"shifts.form.startTime\": \"Shift Start time\",\n \"shifts.form.endTime\": \"Shift end time\",\n \"shifts.form.submitText\": \"Save\",\n \"shifts.form.cancel\": \"Cancel\",\n \"shifts.checkout\": \"Check Out\",\n \"shifts.checkin\": \"Check In\",\n \"shifts.designation.placeholder\": \"Enter designation\",\n \"shifts.filters.submitText\": \"Submit\",\n \"employee.checkedInAt\": \"Checked in at\",\n\n \"dispute.emptyMessage\": \"Currently there are no disputes\",\n \"dispute.view.heading\": \"Disputes for Order\",\n \"dispute.view\": \"View\",\n \"dispute.heading\": \"Disputed Orders\",\n \"dispute.referenceNumber\": \"Reference Number\",\n \"dispute.orderPlacedOn\": \"Placed on\",\n \"dispute.actions\": \"Action\",\n \"dispute.orderItem\": \"Order Item\",\n \"dispute.filingTime\": \"Filing Time\",\n \"dispute.disputedQuantity\": \"Quantity\",\n \"dispute.reason\": \"Reason\",\n \"dispute.status\": \"Status\",\n \"dispute.approveReject\": \"Approve/ Reject\",\n \"dispute.choose\": \"Choose\",\n \"dispute.approve\": \"Approve\",\n \"dispute.reject\": \"Reject\",\n \"dispute.pickup and refund\": \"Pickup and refund\",\n \"dispute.only deliver\": \"Only Deliver\",\n \"dispute.pickup and replace\": \"Pickup and replace\",\n \"dispute.only refund\": \"Only refund\",\n \"dispute.save\": \"Submit\",\n \"dispute.cancel\": \"Cancel\",\n \"dispute.approved\": \"Approved\",\n \"dispute.pending\": \"Pending\",\n \"dispute.rejected\": \"Rejected\",\n \"dispute.name\": \"Product name\",\n \"dispute.resolution\": \"Resolution\",\n \"dispute.quantity\": \"Quantity\",\n \"dispute.reason.placeholder\": \"Select Reason\",\n \"dispute.resolution.placeholder\": \"Select Resolution\",\n \"order.dispute.heading\": \"Dispute for order\",\n\n \"return.heading\": \"Returns\",\n \"returns.emptyMessage\": \"There are no returns\",\n \"return.view.heading\": \"Returns for order\",\n \"return.resolution\": \"Resolution\",\n \"return.wastagereason\": \"Wastage reason\",\n \"return.submit\": \"Submit\",\n \"return.toStore\": \"Store return\",\n \"return.markasWastage\": \"Wastage\",\n \"return.wastagereason.placeholder\": \"Select wastage reason\",\n \"return.cancel\": \"Cancel\",\n \"return.name\": \"Name\",\n \"return.item.name\": \"Product Name\",\n \"return.retunquantity\": \"Return Quantity\",\n \"return.totalquantity\": \"Total Quantity\",\n \"return.quantity\": \"Quantity\",\n \"return.settledQuantity\": \"Settled Quantity\",\n \"return.file.heading\": \"Return order for\",\n \"return.filter.referenceNumber\": \"Reference Number\",\n \"return.filter.referenceNumber.placeholder\": \"Enter order reference number\",\n \"return.filter.submit\": \"Submit\",\n \"return.move.order\": \"Move order to\",\n \"return.move.placeholder\": \"Select the status\",\n \"return.pending\": \"Pending\",\n \"return.return\": \"Returned\",\n \"return.completed\": \"Completed\",\n \"return.packed\": \"Packed\",\n \"return.are.you.sure\": \"Are you sure?\",\n \"return.heading.for\": \"Returns for\",\n \"return.reason.header\": \"Return reason\",\n \"return.reasons\": \"Select the reason\",\n \"return.no.items.to.return\": \"No items to return for this order\",\n \"return.refund.placeholder.refundAmount\": \"Enter Refund Amount\",\n \"return.refund.button.save\": \"Save\",\n \"return.refund.option.refundAmount\": \"Refund Amount\",\n \"return.popup.details.heading\": \"Refund Details\",\n \"picker.name\": \"Name\",\n \"picker.offDays\": \"Off days\",\n \"picker.timings\": \"Timings\",\n \"picker.timingsAndAttendance\": \"Timings / Attendance\",\n \"picker.status\": \"Current Status\",\n \"picker.attendance\": \"Attendance\",\n \"picker.actions\": \"Actions\",\n \"pickers.title\": \"Manage Pickers\",\n \"picker.edit\": \"Edit\",\n \"picker.editHeading\": \"Edit Picker\",\n \"picker.submit\": \"Save\",\n \"picker.cancel\": \"Cancel\",\n \"picker.weeklyOff\": \"Weekly off\",\n \"picker.phone\": \"Phone\",\n \"pickers.emptyMessage\": \"Currently there are no pickers\",\n \"picker.filter.name\": \"Name\",\n \"picker.filter.name.placeholder\": \"Enter name\",\n \"picker.filter.submit\": \"Search\",\n \"picker.filter.clear\": \"Clear All\",\n\n \"pickers.today.title\": \"Pickers Today\",\n \"pickers.today.slot\": \"Shift : \",\n \"pickers.today.order.slot\": \"Slot: \",\n \"pickers.today.slot.starttime\": \"Start: \",\n \"pickers.today.slot.estimate.time\": \"Est: \",\n \"pickers.today.slot.current.time\": \"Now: \",\n \"pickers.today.picking.item\": \"Picking \",\n \"pickers.today.packing.item\": \"Packing \",\n \"pickers.today.checking.item\": \"Checking \",\n \"pickers.today.packed.item\": \"Packed \",\n \"pickers.today.picking.item2\": \" items\",\n \"pickers.idle.header\": \"Idle Pickers\",\n \"pickers.active.header\": \"Active Pickers\",\n \"pickers.empty\": \"Currently there are no pickers available\",\n \"pickers.today.total.pickers\": \"Total Pickers\",\n \"pickers.today.active.pickers\": \"Active\",\n \"pickers.today.idle.pickers\": \"Idle\",\n \"pickers.today.checkin.time\": \"Checkin Time: \",\n \"pickers.today.late\": \"Late\",\n \"picker.today.order\": \"Order \",\n \"picker.dialog.error\": \"Error\",\n \"picker.dialog.okText\": \"Okay\",\n asapDurationStartText: \"Within\",\n asapDurationEndText: \"minutes\",\n\n \"cp.title\": \"Capacity Planning\",\n \"cp.edit\": \"Edit Rule\",\n \"cp.add\": \"Add Rule\",\n delivery: \"Delivery\",\n \"cp.type\": \"Type\",\n \"cp.area\": \"Area\",\n \"cp.actions\": \"Actions\",\n pickup: \"Pickup\",\n \"type.placeholder\": \"Select type\",\n \"zones.placeholder\": \"Select zone\",\n \"slots.placeholder\": \"Select slot\",\n \"cutoff.time\": \"Cutoff time\",\n \"cutoff.time.placeholder\": \"Select cutoff time\",\n \"capacity.placeholder\": \"Enter capacity\",\n \"rule.for\": \"Rule for\",\n \"day.placeholder\": \"Select day\",\n \"cp.empty\": \"There are no configurations set\",\n \"cp.today\": \"Capacity Planning Today\",\n \"cp.today.button\": \"Today\",\n \"cp.today.cutofftime\": \"Cutoff Time 1\",\n \"cp.today.table.slot\": \"Slot\",\n \"cp.today.delivery\": \"Delivery\",\n \"cp.today.pickup\": \"Pickup\",\n \"Thank you for shopping at \": \"Thank you for shopping at {name}\",\n \"Visit us at\": \"Visit us at {domain}\",\n \"orderDetails.uploadPrescription.prescription\": \"Prescription\",\n \"orderDetails.uploadPrescription.addPrescription\": \"Add Prescription\",\n \"orderDetails.uploadPrescription.uploadImagePlaceholderText\":\n \"Click here to upload or drag images\",\n \"orderDetails.uploadPrescription.enterDoctorName\": \"Enter Doctor's Name\",\n \"orderDetails.uploadPrescription.enterPatientName\": \"Enter Patient's Name\",\n \"orderDetails.uploadPrescription.patientName\": \"Patient's Name\",\n \"orderDetails.uploadPrescription.doctorName\": \"Doctor's Name\",\n \"orderDetails.uploadPrescription.upload\": \"Upload\",\n \"orderDetails.uploadPrescription.dr\": \"Dr.\",\n \"orderDetails.uploadPrescription.uploadedPrescription\":\n \"Uploaded Prescription\",\n \"orderDetails.uploadFile\": \"Uploaded File\",\n \"order.pack.select.package.label\": \"SELECT A PACKAGE\",\n \"order.pack.create.package\": \"Create Package\",\n \"order.pack.input.label.name.header\": \"LABEL NAME\",\n \"order.pack.input.label.name.placeholder\": \"Enter a label name\",\n \"order.pack.input.weight.header\": \"PACKAGE WEIGHT (in grams)\",\n \"order.pack.input.weight.placeholder\": \"Enter weight\",\n \"order.pack.request.success\": \"Order pack request sent successfully!\",\n \"type.text.label\": \"Type\",\n \"order.packing.weight\": \"Weight (in grams)\",\n \"order.add.bulk.text\": \"Bulk upload\",\n \"orderUpload.uploadedCsv.heading\": \"CSV File Uploaded Successfully!\",\n \"orderUpload.uploadFileText\": \"Click here to upload the file\",\n \"order.create.bulk.text\": \"Bulk upload\",\n \"orderUpload.csvDownloadText\": \"Download sample CSV\",\n \"delivery.area.kmlUpload.error.title\": \"Something went wrong\",\n \"delivery.area.kmlUpload.Success\": \"Zone added successfully\",\n \"product.restrictions.import.successText\":\n \"CSV File Uploaded Successfully! Restrictions will be added and appear after 15 minutes\",\n \"store.stock.orderType.placeholder\": \"Select order type\",\n \"user.filters.user.activity.entity\": \"Select Entity\",\n \"user.filters.user.activity.entity.placeholder\": \"Choose entity name\",\n \"user.filters.user.activity.store.name\": \"Select Store\",\n \"user.filters.user.activity.store.name.placeholder\": \"Choose store\",\n \"user.filters.user.activity.user.name\": \"Select User\",\n \"user.filters.user.activity.user.name.placeholder\": \"Choose user name\",\n \"user.filters.from.date\": \"Select Date from\",\n \"user.filters.to.date\": \"Select Date to\",\n \"user.filters.user.activity.dateRange.heading\": \"Select Date Range\",\n \"user.filters.user.activity.startDate.placeholder\": \"Start Date\",\n \"user.filters.user.activity.endDate.placeholder\": \"End Date\",\n};\n\nexport default data;\n","const data = {\n \"coupon.add.text\": \"Add Coupons\",\n \"coupon.helpItems.message\": \"There are no coupons shown here\",\n \"coupon.heading\": \"Coupons\",\n \"coupon.table.heading\": \"Coupons\",\n \"coupon.header.coupon\": \"Coupon\",\n \"coupon.header.discount\": \"Discount\",\n \"coupon.header.limit\": \"Limit\",\n \"coupon.header.validity\": \"Validity\",\n \"coupon.header.status\": \"Status\",\n \"coupon.header.actions\": \"Actions\",\n \"coupon.action.edit\": \"Edit\",\n \"coupon.action.disable\": \"Disable\",\n \"coupon.action.delete\": \"Delete\",\n \"coupon.action.details\": \"Details\",\n \"coupon.action.usageAnalytic\": \"Usages Analytic\",\n \"coupon.form.add.heading\": \"Coupons\",\n \"coupon.form.edit.heading\": \"Edit Coupons\",\n \"coupon.form.name.heading\": \"Coupon Code\",\n \"coupon.form.name.placeholder\": \"Coupon code\",\n \"coupon.header.validity.time.start\": \"Starts At\",\n \"coupon.header.validity.time.end\": \"Ends At\",\n \"coupon.form.discount\": \"Discount\",\n \"coupon.form.cashback\": \"Cashback\",\n \"coupon.form.comment.heading\": \"Comment\",\n \"coupon.form.maxSingleRedemption.heading\": \"Max. Redemption By Single User\",\n \"coupon.form.maxRedemption.heading\": \"Max. Redemption\",\n \"coupon.form.minOrderAmount.heading\": \"Min. Order Amount\",\n \"coupon.form.validOnUser.heading\": \"users\",\n \"coupon.form.allUsers\": \"All\",\n \"coupon.form.newUsers\": \"New\",\n \"coupon.form.validOnPayment.heading\": \"Payment Mode\",\n \"coupon.form.allPayments\": \"All\",\n \"coupon.form.onlinePayments\": \"Online\",\n \"coupon.form.codPayments\": \"COD\",\n \"coupon.form.comment.description\": \"(for internal reference only)\",\n \"coupon.form.submit.text\": \"Submit\",\n \"coupon.form.cancel.text\": \"Cancel\",\n \"coupon.form.discount.heading\": \"Coupon Gives\",\n \"coupon.form.limits.heading\": \"Limits\",\n \"coupon.form.conditions.heading\": \"Conditions\",\n \"coupon.form.days.heading\": \"Days\",\n \"coupon.form.dateRange.heading\": \"Validity\",\n \"coupon.form.discountType.heading\": \"Discount Type\",\n \"coupon.form.startDate.placeholder\": \"Start Date\",\n \"coupon.form.endDate.placeholder\": \"Expiry Date\",\n \"coupon.form.maxDiscountAmount.heading\": \"Max. Discount Amount\",\n \"coupon.form.stores.heading\": \"Applies To\",\n \"coupon.form.stores.placeholder\": \"Select Stores\",\n \"coupon.dialog.cancelText\": \"Cancel\",\n \"coupon.dialog.okText\": \"Ok\",\n \"coupon.dialog.title\": \"Are You sure\",\n \"coupon.disableDialog.information\": \"You want to disable this coupon\",\n \"coupon.enableDialog.information\": \"You want to enable this coupon\",\n \"coupon.filters.couponCode.heading\": \"Coupon\",\n \"coupon.filters.status.heading\": \"Status\",\n \"coupon.filters.status.label.all\": \"All\",\n \"coupon.filters.status.label.enabled\": \"Enabled\",\n \"coupon.filters.status.label.disabled\": \"Disabled\",\n \"coupon.filters.couponCode.placeholder\": \"Search by Coupon Code\",\n \"coupon.filters.submitText\": \"Search\",\n \"coupon.filters.clearFiltersText\": \"Clear All\",\n \"coupon.action.enable\": \"Enable\",\n \"coupon.download.form.error\":\n \"Could not find coupons for given prefix and suffix\",\n \"coupon.promocode.label\": \"Promocode\",\n \"coupon.promocode.placeholder\": \"Enter Promocode\",\n\n \"marketing.blog.add.text\": \"Write a new post\",\n \"marketing.blog.helpItems.message\": \"There are no blogs shown here\",\n \"marketing.blog.heading\": \"Blog\",\n \"marketing.form.add.heading\": \"Add blog post\",\n \"marketing.form.edit.heading\": \"Edit blog post\",\n \"marketing.blog.form.title.heading\": \"Post Title\",\n \"marketing.blog.form.title.placeholder\": \"Enter your title here\",\n \"marketing.blog.form.title.requiredMessage\": \"Your blog must have a title\",\n \"marketing.blog.form.content.placeholder\": \"Type here\",\n \"marketing.blog.form.submitText\": \"Publish\",\n \"marketing.blog.form.cancelText\": \"Cancel\",\n \"marketing.table.heading.title\": \"Title\",\n \"marketing.table.heading.publishTime\": \"Published at\",\n \"marketing.table.heading.author\": \"Written by\",\n \"marketing.table.heading.interaction\": \"Interaction\",\n \"marketing.table.heading.actions\": \"Actions\",\n \"marketing.table.heading.status\": \"Status\",\n \"marketing.blog.table.status.draft\": \"Draft\",\n \"marketing.blog.table.action.edit\": \"Edit\",\n \"marketing.blog.table.action.publish\": \"Publish\",\n \"marketing.blog.table.action.unpublish\": \"Unpublish\",\n \"marketing.blog.dialogs.publish.title\": \"Are you sure?\",\n \"marketing.blog.dialogs.unpublish.title\": \"Are you sure?\",\n \"marketing.blog.dialogs.publish.message\":\n \"This will publish the blog on the website\",\n \"marketing.blog.dialogs.unpublish.message\":\n \"This will remove the blog on the website and add it to drafts\",\n \"marketing.blog.dialogs.publish.cancelText\": \"Cancel\",\n \"marketing.blog.dialogs.publish.okText\": \"Publish\",\n \"marketing.blog.dialogs.unpublish.okText\": \"Unpublish\",\n \"marketing.blog.table.action.delete\": \"Delete\",\n \"marketing.blog.dialogs.delete.title\": \"Are you sure?\",\n \"marketing.blog.dialogs.delete.message\":\n \"This will publish the blog on the website\",\n \"marketing.blog.dialogs.delete.cancelText\": \"Cancel\",\n \"marketing.blog.dialogs.delete.okText\": \"Publish\",\n \"marketing.actions.text\": \"Actions\",\n \"cancel.text\": \"Cancel\",\n \"marketing.action.edit.text\": \"Edit\",\n \"marketing.title.heading.text\": \"Title\",\n \"marketing.blog.form.meta.description.title.heading\": \"Meta Description\",\n \"marketing.influencer.name\": \"Name\",\n \"marketing.influencer.description\": \"Description\",\n \"marketing.influencer.status\": \"Status\",\n \"marketing.influencer.action.text\": \"Action\",\n \"marketing.influencer.add.text\": \"Add Influencer\",\n\n \"review.individual.product.table.header.reviews\": \"Reviews\",\n \"marketing.action.REJECTED.status\": \"Disapprove\",\n \"marketing.action.APPROVED.status\": \"Approve\",\n \"marketing.influencer.helpItems.message\": \"There are no influencers to show\",\n \"marketing.influencer.form.edit.heading\": \"Edit Influencer\",\n \"marketing.influencer.form.add.heading\": \"Add Influencer\",\n \"marketing.influencer.form.title.heading\": \"Influencer Name\",\n \"marketing.influencer.form.title.placeholder\": \"Enter influencer name\",\n \"marketing.influencer.form.title.requiredMessage\":\n \"Influencer must have a name\",\n \"marketing.influencer.form.description.title.heading\":\n \"Influencer description\",\n \"marketing.influencer.form.description.title.placeholder\":\n \"Short description about influencer\",\n \"marketing.influencer.form.recipe.title.heading\": \"Add Recipes\",\n \"marketing.influencer.form.recipe.add.placeholder\": \"Search & add recipes\",\n \"marketing.influencer.socialmedia.type\": \"Social Media Type\",\n \"marketing.influencer.socialmedia.id\": \"Social Media Id\",\n \"marketing.influencer.select.socialmedia.placeholder\": \"Enter Type\",\n \"marketing.influencer.select.socialmediaId.placeholder\": \"Enter ID\",\n \"marketing.influencer.form.add.socialmedia\": \"Add Social Media\",\n \"marketing.influencer.table.action.enable\": \"Enable\",\n \"marketing.influencer.table.action.hide\": \"Hide\",\n \"marketing.influencer.dialogs.enable.message\":\n \"This will publish the influencer to the website\",\n \"marketing.influencer.dialogs.hide.message\":\n \"This will hide the influencer from the website\",\n \"marketing.influencer.form.default\": \"Default Social media\",\n\n \"marketing.blog.form.url.placeholder\": \"URL of the blog\",\n \"marketing.blog.form.more.description.title.heading\": \"More Description\",\n \"marketing.blog.form.more.description.title.placeholder\":\n \"Write a brief summary of your post\",\n \"marketing.blog.form.featured.image.title.heading\": \"Featured Image\",\n \"marketing.blog.form.assign.tag.placeholder\": \"Search or create a new tag\",\n \"marketing.blog.form.assign.tag.title.heading\": \"Assign Tag\",\n \"marketing.blog.form.alt.text.title.heading\": \"Alt Text\",\n \"marketing.blog.form.alt.text.title.placeholder\":\n \"Enter the alt text for the above featured image\",\n \"marketing.blog.form.meta.description.title.placeholder\":\n \"Write a brief summary of your post\",\n\n \"marketing.table.heading.recipe.description\": \"Recipe Description\",\n \"marketing.recipe.add.text\": \"Write a new Recipe\",\n \"marketing.recipe.helpItems.message\": \"There are no recipe's to show\",\n \"marketing.recipe.form.title.placeholder\": \"Enter your recipe name\",\n \"marketing.recipe.form.title.heading\": \"Recipe Name\",\n \"marketing.recipe.form.edit.heading\": \"Edit Recipe\",\n \"marketing.recipe.form.add.heading\": \"Add Recipe\",\n \"marketing.recipe.form.title.requiredMessage\": \"Your recipe must have a name\",\n \"marketing.recipe.form.description.title.heading\": \"Recipe description\",\n \"marketing.recipe.form.description.title.placeholder\":\n \"Short description of your recipe\",\n \"marketing.recipe.form.product.title.heading\": \"Add Products\",\n \"marketing.recipe.form.product.add.placeholder\": \"Search & add products\",\n \"marketing.recipe.form.submitText\": \"Save\",\n \"marketing.recipe.form.thumbnail.image.title.heading\": \"Thumbnail Image\",\n \"marketing.recipe.form.featured.image.title.heading\": \"Featured Image\",\n \"marketing.recipe.form.ingredients.placeholder\":\n \"List the delicious ingredients that make your recipe special! Use the text editing features to enhance the list\",\n \"marketing.recipe.form.ingredients.heading\": \"Ingredients\",\n \"marketing.recipe.form.directions.heading\": \"Directions\",\n \"marketing.recipe.form.metadata.heading\": \"Metadata\",\n \"marketing.recipe.form.metadata.placeholder\":\n \"Extra details /steps of your recipe\",\n \"marketing.recipe.form.directions.placeholder\":\n \"Share the step-by-step instructions to create your mouthwatering dish!\",\n \"marketing.recipe.dialogs.publish.message\":\n \"This will publish the recipe on the website\",\n \"marketing.recipe.dialogs.unpublish.message\":\n \"This will remove the recipe on the website and add it to drafts\",\n \"marketing.recipe.table.status.draft\": \"DRAFT\",\n \"influencer.recipe.check\": \"Influencer Recipe\",\n \"marketing.recipe.table.status.published\": \"PUBLISHED\",\n \"marketing.recipe.table.action.publish\": \"Publish\",\n \"marketing.recipe.table.action.unpublish\": \"Unpublish\",\n\n \"websitePage.table.heading\": \"Static Pages\",\n \"websitePage.add.text\": \"Add page\",\n \"websitePage.emptyList.message\": \"There are no static pages for your website\",\n \"websitePage.emptyList.submessage\": \"\",\n \"websitePage.status.enabled\": \"Enabled\",\n \"websitePage.status.disabled\": \"Disabled\",\n \"websitePage.table.title\": \"Title\",\n \"websitePage.table.url\": \"URL\",\n \"websitePage.table.status\": \"Status\",\n \"websitePage.table.actions\": \"Actions\",\n \"websitePage.table.action.edit\": \"Edit\",\n \"websitePage.table.action.disable\": \"Disable\",\n \"websitePage.table.action.enable\": \"Enable\",\n \"websitePage.dialogs.disable.title\": \"Are you sure?\",\n \"websitePage.dialogs.enable.title\": \"Are you sure?\",\n \"websitePage.dialogs.disable.message\": \"This action will disable this page\",\n \"websitePage.dialogs.enable.message\": \"This action will enable this page\",\n \"websitePage.dialogs.disable.cancelText\": \"Cancel\",\n \"websitePage.dialogs.disable.okText\": \"Confirm\",\n \"websitePage.form.add.heading\": \"Add static page\",\n \"websitePage.form.edit.heading\": \"Edit static page\",\n \"websitePage.form.title.heading\": \"Page Title\",\n \"websitePage.form.title.placeholder\": \"Please enter the title of your page\",\n \"websitePage.form.url.heading\": \"URL\",\n \"websitePage.form.url.placeholder\": \"URL of the page\",\n \"websitePage.form.title.requiredMessage\": \"Your page must have a title\",\n \"websitePage.form.content.placeholder\":\n \"What you type here will be shown as the content of this page on your website\",\n \"websitePage.form.submitText\": \"Publish\",\n \"websitePage.form.cancelText\": \"Cancel\",\n \"websitePage.delete\": \"Delete\",\n \"websitepage.edit\": \"Edit\",\n \"websitepage.form.addLayout\": \"Add Layout\",\n \"websitePage.dialog.title\": \"Are you sure?\",\n \"websitePage.dialog.information\": \"This layout will be deleted\",\n \"websitePage.add\": \"Add\",\n \"websitePage.popup.add\": \"Add layout\",\n \"websitePage.popup.imagewithtext.heading\": \"Edit image with text\",\n \"imagewithtext.title\": \"Title\",\n \"imagewithtext.placeholder\": \"Enter title\",\n \"imagewithtext.image\": \"Image\",\n \"layouts.save\": \"Save\",\n \"websitePage.popup.heading.image\": \"Edit Image\",\n \"image.title\": \"Image\",\n\n \"campaign.table.heading\": \"Campaigns\",\n \"campaign.form.add.heading\": \"New Campaign\",\n \"campaign.form.edit.heading\": \"Edit Campaign\",\n \"campaign.add.text\": \"Add Campaign\",\n \"campaign.helpItems.message\": \"There are no campaigns\",\n \"campaign.table.heading.name\": \"Name\",\n \"campaign.table.heading.status\": \"Status\",\n \"campaign.table.heading.runDate\": \"Run Date\",\n \"campaign.table.heading.actions\": \"Actions\",\n \"campaign.action.edit\": \"Edit\",\n \"campaign.form.name.heading\": \"Name\",\n \"campaign.form.name.placeholder\": \"Name\",\n \"campaign.form.submit.text\": \"Submit\",\n \"campaign.form.cancel.text\": \"Cancel\",\n \"campaign.form.emailSubject.heading\": \"Subject\",\n \"campaign.form.emailSubject.placeholder\": \"Subject\",\n \"campaign.form.emailBody.heading\": \"Body\",\n \"campaign.form.emailBody.placeholder\": \"Body\",\n \"campaign.form.sms.heading\": \"SMS\",\n \"campaign.form.sms.placeholder\": \"SMS\",\n \"campaign.form.pushSubject.heading\": \"NOTIFICATION TITLE\",\n \"campaign.form.pushSubject.placeholder\": \"Enter title here\",\n \"campaign.form.pushText.heading\": \"NOTIFICATION TEXT\",\n \"campaign.form.pushText.placeholder\": \"Enter text here\",\n \"campaign.form.pushUrl.placeholder\": \"Enter url here\",\n \"campaign.form.pushImage.heading\": \"ADD NOTIFICATION IMAGE\",\n \"campaign.form.pushImage.placeholder\": \"Add an image\",\n \"campaign.form.comment.heading\": \"Comment\",\n \"campaign.form.comment.placeholder\": \"Comment\",\n \"campaign.form.date.heading\": \"Date\",\n \"campaign.form.time.heading\": \"Time\",\n \"campaign.form.time.am\": \"AM\",\n \"campaign.form.time.pm\": \"PM\",\n \"campaign.action.delete\": \"Delete\",\n \"campaign.form.preview.heading\": \"Preview\",\n \"campaign.form.maxcharacters.description\": \"Max. 150 characters\",\n \"campaign.form.vairableList.heading\": \"List of available variables\",\n \"campaign.form.invalidDateTime\":\n \"Datetime should be greater than current datetime\",\n\n \"offer.all\": \"All\",\n \"offer.product\": \"Product\",\n \"offer.category\": \"Category\",\n \"offer.brand\": \"Brand\",\n \"offer.product.placeholder\": \"Select products\",\n \"offer.category.placeholder\": \"Select category\",\n \"offer.categories.placeholder\": \"Select Categories\",\n \"offer.brand.placeholder\": \"Select brand\",\n \"offer.brands.placeholder\": \"Select brands\",\n \"offer.entity\": \"Entity Type\",\n \"offer.edit\": \"Edit\",\n \"offer.type\": \"Type\",\n \"offer.entity.id\": \"Entity ID\",\n \"offer.entityid.placeholder\": \"Enter Entity ID\",\n \"offer.description\": \"Description\",\n \"offer.validFrom\": \"Valid From\",\n \"offer.validTill\": \"Valid Till\",\n \"offer.actions\": \"Actions\",\n \"offers.title\": \"Offers\",\n \"offer.add.text\": \"Add Offer\",\n \"offer.type.placeholder\": \"Select offer type\",\n \"offer.submit\": \"Submit\",\n \"offer.clear\": \"Clear\",\n \"offer.applicable.to.stores\": \"Applicable to store\",\n \"offer.applicable.to.store.placeholder\": \"Select store\",\n \"offer.enabled\": \"Enabled\",\n \"offer.disabled\": \"Disabled\",\n \"offer.disable\": \"Disable\",\n \"offer.enable\": \"Enable\",\n \"offer.status\": \"Status\",\n \"offer.add.heading\": \"Add offer\",\n \"offer.edit.heading\": \"Edit offer\",\n \"offer.cancel\": \"Cancel\",\n \"offer.alert.message\": \"Alert Message\",\n \"offer.alert.message.placeholder\": \"Enter alert message\",\n \"offer.max.redemption\": \"order level redemption\",\n \"offer.max.redemption.placeholder\": \"Enter order level redemption\",\n \"offer.customer.redemption\": \"Customer Redemption\",\n \"offer.customer.redemption.placeholder\": \"Enter customer redemption\",\n \"offer.total.redemption\": \"Total Redemption\",\n \"offer.total.redemption.placeholder\": \"Enter total redemption\",\n \"offer.delivery-date.start\": \"Start Date\",\n \"offer.delivery-date.end\": \"End Date\",\n \"offer.ordertype.label\": \"Order Type\",\n \"offer.ordertype.placeholder\": \"Select order type\",\n \"offer.ordertype.options.bulk\": \"Bulk\",\n \"offer.ordertype.options.delivery\": \"Delivery\",\n \"offer.ordertype.options.pickup\": \"Pickup\",\n \"offer.ordertype.options.offline\": \"Offline\",\n \"offer.image\": \"Image\",\n \"offer.description.placeholder\": \"Enter description\",\n \"offer.fixed\": \"Fixed\",\n \"offer.percentoff\": \"Percent off\",\n \"offer.absoluteoff\": \"Absolute off\",\n \"offer.all.stores\": \"All stores\",\n \"offer.selected.stores\": \"Selected stores\",\n \"offer.all.except.selected.stores\": \"All except selected stores\",\n \"offer.stores\": \"Stores\",\n \"offer.stores.placeholder\": \"Select stores\",\n \"offer.applies.to\": \"Applies to\",\n \"offer.applies.to.placeholder\": \"Select Stores\",\n \"offer.quantity\": \"Quantity\",\n \"offer.quantity.placeholder\": \"Enter quantity\",\n \"offer.discounttype\": \"Discount type\",\n \"offer.discounttype.placeholder\": \"Select discount type\",\n \"offer.discountvalue\": \"Discount value\",\n \"offer.maxdiscountvalue\": \"Max Discount\",\n \"offer.discountvalue.placeholder\": \"00\",\n \"offer.min.quantity\": \"Min quantity\",\n \"offer.min.quantity.placeholder\": \"Enter min quantity\",\n \"offer.time\": \"Valid from time\",\n \"offer.time.placeholder\": \"Select time\",\n \"offer.validto.time\": \"Valid till time\",\n \"offer.name\": \"Name\",\n \"offer.combo.discount\": \"Combo\",\n \"offer.individual.discount\": \"Individual\",\n \"offer.get\": \"Get\",\n \"offer.main.discount.type\": \"Type of discount\",\n \"offer.cartprice\": \"Cart Price\",\n \"offer.cartprice.placeholder\": \"Enter cart price\",\n \"offer.delete\": \"Delete\",\n \"offer.emptyMessage\": \"There are no offers\",\n \"offer.includeText\": \"to include\",\n \"offer.excludeText\": \"to exclude\",\n \"offer.min.amount.label\": \"Min Amount\",\n \"offer.min.amount.placeholder\": \"Enter min amount\",\n \"offer.select.placeholder\": \"Select\",\n \"offer.includes\": \"includes\",\n \"offer.min.amount\": \"Minimum Amount\",\n \"offer.payment.type\": \"Payment type\",\n \"offer.payment.type.placeholder\": \"Enter payment type\",\n \"offer.buy\": \"Buy\",\n \"offer.filter.clientId\": \"Client Id\",\n \"offer.filter.clientId.placeholder\": \"Search by Client Id\",\n \"offer.heading.deliveyDate\": \"Delivery Date\",\n \"offer.action.disable\": \"Disable\",\n \"offer.action.enable\": \"Enable\",\n \"offer.dialog.notification.label\": \"Notification\",\n \"offer.dialog.notification.message\":\n \"Promocodes has been sent to your email address\",\n \"offer.dialog.notification.close\": \"Close\",\n \"offer.field.hasUniquePromocode.label\": \"Has Unique Promocode\",\n \"offer.field.stackable.label\": \"Stackable\",\n \"offer.field.inInvisible.label\": \"Hide Offer\",\n \"offer.filter.searchbytag.placeholder\": \"Search by Tag\",\n \"offer.filter.searchbycategory.placeholder\": \"Search by Category\",\n \"offer.filter.searchbybrand.placeholder\": \"Search by Brand\",\n \"offer.filter.category.label\": \"Category\",\n \"offer.filter.brand.label\": \"Brand\",\n \"offer.filter.tag.label\": \"Tag\",\n \"offer.filter.product.label\": \"Product\",\n \"offer.dialog.clone.label\": \"Warning\",\n \"offer.dialog.clone.message\":\n \"This offer will be disabled and a new offer will be created with the remaining redemption\",\n \"offer.dialog.clone.proceed\": \"Continue\",\n \"offer.dialog.clone.close\": \"Cancel\",\n \"offer.dialog.disable.errorHead\": \"Error\",\n \"offer.dialog.disable.errorText\":\n \"Error occurred while disabling the offer. Please try agin.\",\n \"offer.dialog.disable.close\": \"Okay\",\n \"offer.clone.disableNClone\": \"Disable and create new\",\n \"offer.clone.copy\": \"Create similar\",\n \"offer.redeemedCount.placeholder\":\n \"Redeemed count of original offer: {count}\",\n\n \"banners.header\": \"Manage Banners\",\n \"banners.select.page.type\": \"Page Type\",\n \"banners.select.page.type.placeholder\": \"Select page type\",\n \"banners.select.search.term\": \"search term\",\n \"banners.select.search.term.placeholder\": \"Enter search term\",\n \"banners.select.category.heading\": \"category\",\n \"banners.select.category.placeholder\": \"Enter category name\",\n \"banners.select.brand.heading\": \"brand\",\n \"banners.select.brand.placeholder\": \"Enter brand name\",\n \"banners.select.tag.heading\": \"tag\",\n \"banners.select.tag.placeholder\": \"Enter tag name\",\n \"banners.radio.label.banners\": \"Banners\",\n \"banners.radio.option.active\": \"Active banners\",\n \"banners.radio.option.expired\": \"Expired banners\",\n \"banners.view.header\": \"Manage Banners\",\n \"banners.view.drag.text\": \"Drag to change the order\",\n \"banners.view.add.button\": \"Add Banner\",\n \"banners.editForm.header\": \"Edit Banner\",\n \"banners.addForm.header\": \"Add Banner\",\n \"banners.editForm.button.save\": \"Save\",\n \"banners.editForm.button.cancel\": \"Cancel\",\n \"banners.editForm.button.delete\": \"Delete\",\n \"banners.editForm.image.label\": \"Image\",\n \"banners.editForm.link.label\": \"Link URL\",\n \"banners.editForm.radio.label\": \"Scope\",\n \"banners.editForm.radio.option.global\": \"Global\",\n \"banners.editForm.radio.option.storeSpecific\": \"Store specific\",\n \"banners.editForm.validity.from\": \"Validity from\",\n \"banners.editForm.validity.to\": \"Validity to\",\n \"banners.editForm.link.placeholder\": \"URL to navigate on clicking\",\n \"banners.popup.banner.selection.heading\": \"Choose Banner\",\n \"banners.action.edit\": \"Edit\",\n \"banners.action.delete\": \"Delete\",\n \"banners.page.type.placeholder\": \"Select the page type\",\n \"banners.startTime.placeholder\": \"Start date\",\n \"banners.endTime.placeholder\": \"End date\",\n \"banners.header.image\": \"Image\",\n \"banners.header.actions\": \"Actions\",\n \"banners.message.invalidDate\": \"End date must be after the start date\",\n \"banners.empty.banner\": \"Currently there are no home page banners available\",\n \"banners.stores\": \"Store\",\n \"banners.stores.placeholder\": \"Select the store\",\n \"banners.form.category.heading\": \"category\",\n \"banners.form.brand.heading\": \"brand\",\n \"banners.form.tag.heading\": \"tag\",\n \"banners.form.category.placeholder\": \"Enter category name\",\n \"banners.form.brand.placeholder\": \"Enter brand name\",\n \"banners.form.tag.placeholder\": \"Enter tag name\",\n \"banners.form.sequence.placeholder\": \"Enter the sequence\",\n \"banners.form.sequence.label\": \"Sequence\",\n \"banners.table.view.on.web.url\": \"View on web\",\n \"banners.table.scope\": \"Scope:\",\n \"banners.table.validity\": \"Validity:\",\n \"banners.table.na\": \" N/A\",\n \"banners.form.search.term.label\": \"Search Term\",\n \"banners.form.search.term.placeholder\": \"Enter the search term\",\n \"banners.form.startTime\": \"Start Time\",\n \"banners.form.endTime\": \"End Time\",\n \"banners.form.startTime.placeholder\": \"Enter Start Time\",\n \"banners.form.endTime.placeholder\": \"Enter End Time\",\n \"banners.success.dialog.message\": \"Saved\",\n \"banners.default.page\": \"Home\",\n \"banners.pageType.home\": \"Home\",\n \"banners.pageType.category\": \"Category\",\n \"banners.pageType.brand\": \"Brand\",\n \"banners.pageType.productTag\": \"Product_tag\",\n \"banners.pageType.search\": \"Search\",\n \"banners.scope.global\": \"GLOBAL\",\n \"banners.scope.store\": \"STORE\",\n \"banners.languages\": \"Language\",\n \"banners.languages.placeholder\": \"Select the language\",\n\n \"coupon.action.viewAnalytics\": \"Analytics\",\n \"coupon.analytics.heading\": \"Coupon Analytics\",\n \"coupon.analytics.analyticsFor\": \"Analytics For\",\n \"coupon.analytics.uniqueUsers.heading\": \"Unique Users\",\n \"coupon.analytics.activeFor.heading\": \"Active For(Days)\",\n \"coupon.analytics.totalDiscount.heading\": \"Total Coupon Discount\",\n \"coupon.analytics.totalPurchases.heading\": \"Total Sales\",\n \"coupon.analytics.today.heading\": \"Today\",\n \"coupon.analytics.thisWeek.heading\": \"This Week\",\n \"coupon.analytics.paymentDistribution.heading\": \"Payment Distribution\",\n \"coupon.analytics.deviceDistribution.heading\": \"Device Distribution\",\n \"coupon.analytics.dailyDistribution.heading\": \"Daily Distribution\",\n \"coupon.analytics.selectDates.heading\": \"Select Dates\",\n \"coupon.analytics.status.heading\": \"Status\",\n \"campaign.analytics.heading\": \"Campaign Analytics\",\n \"campaign.analytics.subHeading\": \"User Engagement\",\n \"campaign.header.campaign\": \"Campaign\",\n \"campaign.analytics.tab.email\": \"Email\",\n \"campaign.analytics.tab.sms\": \"Sms\",\n \"campaign.action.viewAnalytics\": \"View Analytics\",\n \"campaign.analytics.zopLinkActivity.heading\": \"ZopLink Activity\",\n \"campaign.analytics.zopNowMissyou.message\": \"[ZopNow] We Miss You !\",\n \"campaign.analytics.table.heading\": \"Last 10 Opened\",\n \"campaign.analytics.emailTab.table.header.name\": \"Name\",\n \"campaign.analytics.emailTab.table.header.email\": \"Email\",\n \"campaign.analytics.emailTab.table.header.dateTime\": \"Date & Time\",\n \"campaign.analytics.emailTab.table.header.promotional\": \"Promotional\",\n \"campaign.analytics.smsTab.table.header.url\": \"Url\",\n \"campaign.analytics.smsTab.table.header.lastVisit\": \"Last visit\",\n \"campaign.analytics.smsTab.table.header.clicks\": \"Clicks (unique)\",\n \"coupon.analytics.emailTab.basedOnEmailsDelivered\":\n \"Based on emails delivered\",\n \"coupon.analytics.emailTab.basedOnEmailsOpened\": \"Based on emails opened\",\n \"coupon.analytics.emailTab.opened\": \"Opened\",\n \"coupon.analytics.emailTab.clickedThrough\": \"Clicked through\",\n \"coupon.analytics.smsTab.clicked\": \"Clicked\",\n \"coupon.analytics.smsTab.basedOnDelivered\": \"Based on delivered\",\n \"coupon.analytics.pieChart.DESKTOP_NA_WEB\": \"Desktop\",\n \"coupon.analytics.pieChart.MOBILE_ANDROID_WEB\": \"Android\",\n \"coupon.analytics.pieChart.MOBILE_IOS_WEB\": \"IOS\",\n};\n\nexport default data;\n","const data = {\n \"error.Unauthorized\": \"Unauthorized\",\n \"error.generic\": \"Something Went Wrong!\",\n \"error.server\": \"Something unexpected has occured. Please try again later.\",\n \"error.server.403\":\n \"You do not have sufficient permissions to view this page.\",\n};\nexport default data;\n","const data = {\n \"deleteDialog.title\": \"Are you sure?\",\n \"deleteDialog.information\": \"This action cannot be reverted\",\n\n \"dialog.okText\": \"Ok\",\n \"dialog.cancelText\": \"Cancel\",\n\n \"errorDialog.title\": \"Oops!\",\n \"errorDialog.delete.error.title\": \"Can not delete\",\n\n \"pagination.text\": \"Showing\",\n \"pagination.helperText\": \"of\",\n\n \"successDialog.title\": \"Success\",\n \"successDialog.information\": \"Changes successfully saved\",\n};\n\nexport default data;\n","const data = {\n \"user.accountBalance.heading\": \"Account Balance\",\n \"user.accountBalance.loader.text\": \"Fetching your balance. Please wait...\",\n \"user.accountBalance.availableBalance.label\": \"Available balance\",\n \"user.accountBalance.input.placeholder\": \"Enter your amount\",\n \"user.accountBalance.rechargeButton.text\": \"Recharge\",\n \"user.accountBalance.rechargeButton.processing\": \"Processing...\",\n \"user.transactions.emptyList.text\": \"You have no transactions yet\",\n \"user.transactions.header.billingInfo\": \"Billing info\",\n \"user.transactions.header.status\": \"Status\",\n \"user.transactions.header.payment\": \"Payment\",\n \"user.transactions.status.pending\": \"Processing\",\n \"user.transactions.status.completed\": \"Completed\",\n \"user.transactions.status.failed\": \"Failed\",\n \"user.payment.loader.text\": \"Verifying payment, please wait...\",\n \"user.payment.success.title\": \"Payment successful\",\n \"user.payment.fail.title\": \"Payment failed\",\n \"user.payment.redirect.link\": \"Click here to view account balance\",\n \"user.transactions.header.type\": \"Type\",\n\n \"leaves.team.employee\": \"Employee\",\n \"leaves.team.startson\": \"Starts On\",\n \"leaves.team.endson\": \"Ends On\",\n \"leaves.team.appliedon\": \"Applied On\",\n \"leaves.team.reason\": \"Reason\",\n \"leaves.team.type\": \"Type\",\n \"leaves.team.status\": \"Status\",\n \"leaves.team.actions\": \"Actions\",\n \"leaves.team.empty.message\": \"No leaves\",\n \"leaves.team.approveable\": \"Leaves applied by team members\",\n \"leaves.team.title\": \"Team leaves\",\n \"leaves.team.are.you.sure\": \"Are you sure?\",\n \"leaves.team.approve\": \"Approve\",\n \"leaves.team.approve.leave\": \"The leave will be approved\",\n \"leaves.team.cancel\": \"Cancel\",\n \"leaves.team.reject.leave\": \"This leave will be rejected\",\n \"leaves.team.reject\": \"Reject\",\n \"leaves.team.cancel.title\": \"Approved leaves that can be cancelled\",\n \"leaves.team.cancel.leave\": \"This leave will be cancelled\",\n \"leaves.team.okay\": \"Okay\",\n\n \"my.leaves.title\": \"My leaves\",\n \"leaves.header.status\": \"Status\",\n \"leaves.management.header\": \"Leave Management\",\n \"leaves.header.startsOn\": \"Starts On\",\n \"leaves.header.endsOn\": \"Ends On\",\n \"leaves.headers.appliedOn\": \"Applied On\",\n \"leaves.header.reason\": \"Reason\",\n \"leaves.header.type\": \"Type\",\n \"leaves.header.actions\": \"Actions\",\n \"leaves.dialog.title\": \"Are you sure?\",\n \"leaves.dialog.information\": \"Your leave will be cancelled\",\n \"leaves.dialog.cancel\": \"Cancel\",\n \"leaves.dialog.okText\": \"Okay\",\n \"leaves.cancel\": \"Cancel\",\n \"leaves.filter.username\": \"Name\",\n \"leaves.filter.username.placeholder\": \"Enter name\",\n \"leaves.filter.fromdate\": \"From\",\n \"leaves.filter.date\": \"Date\",\n \"leaves.filter.todate\": \"To\",\n \"leaves.filter.status.heading\": \"Status\",\n \"leaves.filter.status.all\": \"All\",\n \"leaves.filter.status.pending\": \"Pending\",\n \"leaves.filter.status.approved\": \"Approved\",\n \"leaves.filter.status.rejected\": \"Rejected\",\n \"leaves.filter.status.approvedcancelleble\": \"Cancellable\",\n \"leaves.filter.submit\": \"Submit\",\n \"leaves.filter.clearFiltersText\": \"Clear All\",\n \"leaves.form.duration\": \"Duration\",\n \"leaves.filters.from\": \"From\",\n \"leaves.filters.to\": \"To\",\n \"leaves.form.reason\": \"Reason\",\n \"leaves.form.reason.placeholder\": \"Enter reason\",\n \"leaves.form.type\": \"Type\",\n \"leaves.form.type.placeholder\": \"Choose type\",\n \"leaves.form.cancel\": \"Cancel\",\n \"leaves.apply\": \"Apply\",\n \"leaves.apply.new\": \"Apply for leave\",\n \"leaves.emptyMessage\": \"There are no leaves available\",\n \"leaves.filter.status.cancelled\": \"Cancelled\",\n \"leaves.filter.status.placeholder\": \"Choose Status\",\n\n \"user.leave-summary.heading\": \"Leave Summary\",\n \"user.leave-summary.button.today\": \"Today\",\n \"user.leave-summary.status.heading\": \"Status\",\n \"user.leave-summary.status.All\": \"All\",\n \"user.leave-summary.status.Earned\": \"Earned\",\n \"user.leave-summary.status.Paternity\": \"Paternity\",\n \"user.leave-summary.status.Maternity\": \"Maternity\",\n \"user.leave-summary.status.Sick\": \"Sick\",\n \"user.leave-summary.status.Halfday\": \"Halfday\",\n};\n\nexport default data;\n","const data = {\n \"vehicles.action.delete\": \"Delete\",\n \"vehicles.action.edit\": \"Edit\",\n \"vehicles.emptyState.helperText\":\n \"Here you will see a list of delivery vehicles available to you.\",\n \"vehicles.header.addText\": \"Add Vehicle\",\n \"vehicles.header.editText\": \"Edit Vehicle\",\n \"vehicles.header.number\": \"Number\",\n \"vehicles.header.onAction\": \"Actions\",\n \"vehicles.header.status\": \"Status\",\n \"vehicles.header.vendor\": \"Vendor\",\n \"vehicles.header.type\": \"Type\",\n \"vehicles.heading\": \"Manage Vehicles\",\n \"vehicles.type.2w\": \"2 Wheeler\",\n \"vehicles.type.4w\": \"4 Wheeler\",\n \"vehicles.type.drone\": \"Drone\",\n \"vehicles.status.disabled\": \"Disabled\",\n \"vehicles.status.enabled\": \"Enabled\",\n \"vehicles.enable.text\": \"Enable\",\n \"vehicles.disable.text\": \"Disable\",\n \"vehicles.filters.byNumber.title\": \"Number\",\n \"vehicles.filters.byNumber.placeholder\": \"Search by number\",\n \"vehicles.filters.byStatus.title\": \"Status\",\n \"vehicles.filters.byStatus.label.all\": \"All\",\n \"vehicles.filters.byStatus.label.enabled\": \"Enabled\",\n \"vehicles.filters.byStatus.label.disabled\": \"Disabled\",\n \"vehicles.filters.byVendor.title\": \"Vendor\",\n \"vehicles.filters.byVendor.placeholder\": \"Search by vendor\",\n \"vehicles.filters.submitText\": \"Search\",\n \"vehicles.filters.clearFiltersText\": \"Clear All\",\n \"vehicles.form.number.heading\": \"Number\",\n \"vehicles.form.number.placeholder\": \"Enter vehicle number\",\n \"vehicles.form.status.heading\": \"Status\",\n \"vehicles.form.status.label.enable\": \"Enabled\",\n \"vehicles.form.status.label.disable\": \"Disabled\",\n \"vehicles.form.cancelText\": \"Cancel\",\n \"vehicles.form.submitText\": \"Save\",\n \"vehicles.form.type.heading\": \"Type\",\n \"vehicles.form.type.label.2w\": \"2 Wheeler\",\n \"vehicles.form.type.label.4w\": \"4 Wheeler\",\n \"vehicles.form.type.label.drone\": \"Drone\",\n \"vehicles.form.vendor.addButton\": \"Add new vendor\",\n \"vehicles.form.vendor.heading\": \"Vendor\",\n \"vehicles.form.vendor.placeholder\": \"Enter vendor name\",\n \"vehicles.vendor.addButton\": \"Add Vendor\",\n \"vehicles.vendor.heading\": \"Vehicle Vendors\",\n \"vehicles.vendor.heading.name\": \"Vendor Name\",\n \"vehicles.vendor.heading.status\": \"Status\",\n \"vehicles.vendor.heading.action\": \"Action\",\n\n \"vehiclePlanner.filters.clearFiltersText\": \"Clear\",\n \"vehiclePlanner.heading\": \"Vehicle Planner\",\n \"vehiclePlanner.emptyState.message\": \"No planned shift found\",\n \"vehiclePlanner.addShift.heading\": \"Add Shift\",\n \"vehiclePlanner.editShift.heading\": \"Edit Shift\",\n \"vehiclePlanner.addShift.button\": \"Add Shift\",\n \"vehiclePlanner.checkout.button\": \"Check Out\",\n \"vehiclePlanner.checkin.button\": \"Add\",\n \"vehiclePlanner.checkin.form.addbutton\": \"Add\",\n \"vehiclePlanner.checkin.form.cancelbutton\": \"Cancel\",\n \"vehiclePlanner.replaceVehicle.popup.heading\": \"Replace Vehicle\",\n \"vehiclePlanner.error.dialog.okay\": \"Okay\",\n \"vehiclePlanner.action.edit\": \"Edit\",\n \"vehiclePlanner.action.delete\": \"Delete\",\n \"vehiclePlanner.vehicleList.novehicle\": \"No {type} vehicle checked in\",\n \"vehiclePlanner.vehicleList.replace\": \"Replace vehicle\",\n \"vehiclePlanner.checkin.form.select.plceholder\": \"Select vehicle\",\n \"vehiclePlanner.addShift.form.regular.label\": \"Regular Vehicle Count\",\n \"vehiclePlanner.addShift.form.adhoc.label\": \"Adhoc Vehicle Count\",\n \"vehiclePlanner.addShift.form.regular.count\": \"Enter vehicle count\",\n \"vehiclePlanner.addShift.form.adhoc.count\": \"Enter vehicle count\",\n \"vehiclePlanner.replaceVehicle.form.replaced.label\": \"Vehicle to be replaced\",\n \"vehiclePlanner.replaceVehicle.form.replacedBy.label\":\n \"Vehicle to be replaced by\",\n \"vehiclePlanner.replaceVehicle.form.replaced.placeHolder\":\n \"Select the vehicle\",\n \"vehiclePlanner.replaceVehicle.form.replacedBy.placeHolder\":\n \"Select the vehicle\",\n \"vehiclePlanner.vehicleShift.vehilceCount\": \"{type} Vehicle\",\n \"vehiclePlanner.vehicleShift.startTime\": \"Start Time: {time}\",\n \"vehiclePlanner.vehicleShift.endTime\": \"End Time: {time}\",\n\n \"manage-runner-executives.title\": \"Manage Runner Executives\",\n \"manage-runner-executives-emptyState.emptyMessage\":\n \"Currently there are no runner executives \",\n \"manage-runner-executives.editHeading\": \"Edit Runner Executive \",\n\n \"trips.heading\": \"Trips\",\n \"trips.action.close\": \"End Trip\",\n \"trips.action.fin_close\": \"Register Payments\",\n \"trips.action.viewDetails\": \"View Details\",\n \"trips.dialog.closeTrip.cancelButton\": \"Cancel\",\n \"trips.endTrip.submitButton\": \"Save\",\n \"trips.endTrip.label\": \"End Trip KM\",\n \"trips.endTrip.placeholder\": \"Enter the KM displayed on the odometer\",\n \"trips.action.vehicleOdometer\": \"Show Odometer Image\",\n \"trips.emptyState.helperText\":\n \"There are no trips {count, plural, one{from this store} other{}}\",\n \"trips.filter.byDeliveryAgent.heading\": \"Delivery Agent\",\n \"trips.filter.byDeliveryAgent.placeholder\": \"Search by delivery agent\",\n \"trips.filter.byVehicleNumber.heading\": \"Vehicle Number\",\n \"trips.filter.byVehicleNumber.placeholder\": \"Search by vehicle number\",\n \"trips.filter.byOrderNumber.heading\": \"Order Number\",\n \"trips.filter.byOrderNumber.placeholder\": \"Search by order number\",\n \"trips.filter.byRunnerExecutive.heading\": \"Runner Executive\",\n \"trips.filter.byRunnerExecutive.placeholder\": \"Search by runner executive\",\n \"trips.filter.byStatus.heading\": \"Status\",\n \"trips.filter.byStatus.all\": \"All\",\n \"trips.filter.byStatus.open\": \"Open\",\n \"trips.filter.byStatus.close\": \"Closed\",\n \"trips.filter.byStatus.completed\": \"Financially Closed\",\n \"trips.filter.byDates.heading\": \"Date\",\n \"trips.filters.submitText\": \"Search\",\n \"trips.filters.clearFiltersText\": \"Clear All\",\n \"trips.header.deliveryAgent\": \"Delivery Agent\",\n \"trips.header.type\": \"Type\",\n \"trips.header.vehicle\": \"Vehicle\",\n \"trips.header.distance\": \"Distance\",\n \"trips.header.startTime\": \"Start Time\",\n \"trips.header.endTime\": \"End Time\",\n \"trips.header.status\": \"Status\",\n \"trips.header.actions\": \"Actions\",\n \"trips.header.id\": \"ID\",\n \"trips.body.type.hub\": \"Hub Trip\",\n \"trips.body.type.store\": \"Store Trip\",\n \"trips.status.open\": \"Open\",\n \"trips.status.close\": \"Closed\",\n \"trips.status.fin_close\": \"Financially closed\",\n \"trips.paymentsForm.pendingAmount\": \"{mode} {currency}{amount}\",\n \"trips.paymentsForm.amount.label\": \"Order #{referenceNumber}\",\n \"trips.payment.orders\": \"Orders\",\n \"trips.payment.order.id\": \"Order #\",\n \"trips.paymentsForm.amount.placeholder\": \"Amount paid by the customer\",\n \"trips.paymentsForm.submitText\": \"Submit\",\n \"trips.details.heading\": \"Trip #{id}\",\n \"trip.details.startedAt\": \"Started at\",\n \"trip.details.endedAt\": \"Ended at\",\n \"trip.details.tripIsActive\": \"Trip is active\",\n \"trips.pickuppending\": \"Pickup pending items\",\n \"trip.details.orderList.heading\": \"Orders\",\n \"trip.details.odometerImage\": \"Odometer Image\",\n \"trip.details.km\": \"km\",\n \"trip.details.orderList.singleOrder.heading\": \"Order\",\n \"trip.details.orderList.withthistrip\": \"with this trip\",\n \"trips.details.orderList.serialNumber\": \"S.N\",\n \"trips.details.orderList.completedTime\": \"Completed Time\",\n \"trips.details.orderList.referenceNumber\": \"Reference No\",\n \"trips.details.orderList.orderTime\": \"Order Time\",\n \"trips.details.orderList.amount\": \"Amount\",\n \"trips.details.orderList.preferredSlot\": \"Preferred Slot\",\n \"trips.details.orderList.location\": \"Location\",\n \"trips.details.orderList.transactionId\": \"Transaction Id\",\n \"trips.details.orderList.transactionId.na\": \"NA\",\n \"trips.details.orderList.view.on.map\": \"View On Map\",\n \"trips.payment.order\": \"Pending payments for Order\",\n \"trips.details.customerImage\": \"Customer signature\",\n \"trips.details.invalid-id\": \"Invalid Trip Id\",\n \"trips.startOdometer\": \"Trip start odometer image\",\n \"trip.endOdometer\": \"Trip end odometer image\",\n\n \"tripPlanner.heading\": \"Trip Planner\",\n \"tripPlanner.emptyState.helperText\":\n \"There are no orders to be delivered {count, plural, one{from this store} other{}}\",\n \"tripPlanner.orderCount\":\n \"{count, plural, =0{No Orders} one{1 Order} other{# Orders}}\",\n \"tripPlanner.unassignedOrders.placeholder\":\n \"Drop orders here that are not ready for a trip\",\n \"tripPlanner.unassignedOrders.title\": \"Orders not ready for trips\",\n \"tripPlanner.start\": \"Start\",\n \"tripPlanner.draft\": \"Draft\",\n \"tripPlanner.assign\": \"Assign To\",\n \"tripPlanner.runner.executive\": \"Runner Executives\",\n \"tripPlanner.runner.vehicle\": \"Vehicles\",\n \"tripPlanner.trip.started\": \"Trip started successfully\",\n \"tripPlanner.trip.storeLocation.error\":\n \"Store must have proper latitude-longitude.\",\n \"tripPlanner.table.heading\": \"Trip Summary\",\n \"tripPlanner.orderNumber\": \"Order Number\",\n \"tripPlanner.items\": \"Items count\",\n \"tripPlanner.orderPlacedTime\": \"Placed at\",\n \"tripPlanner.orderPlacedDate\": \"Created At\",\n \"tripPlanner.slots.startTime\": \"Slot Start\",\n \"tripPlanner.slot.endTime\": \"Slot End\",\n \"tripPlanner.order.lat\": \"Latitude\",\n \"tripPlanner.order.lng\": \"Longitude\",\n \"tripPlanner.order.distance\": \"Distance(km)\",\n \"tripPlanner.picker.name\": \"Picker\",\n \"tripPlanner.picker.startTime\": \"Picking start\",\n \"tripPlanner.picker.endTime\": \"Picking end\",\n \"tripPlanner.orderSeq\": \"Sequence\",\n \"tripPlanner.arrival\": \"ETA\",\n \"tripPlanner.waiting\": \"Wait\",\n \"tripPlanner.complete\": \"Completion\",\n \"tripPlanner.vehicle\": \"Vehicle\",\n \"tripPlanner.vehicle.shiftStart\": \"Vehicle Shift Start\",\n \"tripPlanner.vehicle.shiftEnd\": \"Vehicle Shift End\",\n \"tripPlanner.tripNo\": \"Trip Number\",\n \"tripPlanner.tripStart\": \"Trip Start\",\n \"tripPlanner.tripEnd\": \"Trip End\",\n \"tripPlanner.tableView\": \"Trip Summary\",\n \"tripPlanner.status\": \"Status\",\n \"tripPlanner.download.summary.text\": \"Download CSV\",\n\n \"logistics.config.heading\": \"Logistics Settings\",\n \"logistics.config.reseesOrders\": \"How does the RE see the orders?\",\n \"logistics.config.resees.placeholder\": \"Select one option\",\n \"logistics.config.oneByone\": \"One by one\",\n \"logistics.config.allOrders\": \"All orders at a time\",\n \"logistics.config.leaveAtDoorstep\": \"Can RE leave the order at doorstep?\",\n \"logistics.config.orderOtpValidation\":\n \"Is OTP required for order completion?\",\n \"logistics.config.yes\": \"Yes\",\n \"logistics.config.no\": \"No\",\n \"logistics.config.deliveryFee\": \"Delivery Fees\",\n \"logistics.config.deliveryFee.placeholder\": \"Enter delivery fees\",\n \"logistics.config.tripGeneration\": \"Trip generation method\",\n \"logistics.config.tripGeneration.placeholder\":\n \"Select the trip generation method\",\n \"logistics.config.orderBreakingMethod\": \"Order breaking method\",\n \"logistics.config.orderBreakingMethod.placeholder\":\n \"Select the order breaking method\",\n \"logistics.config.tripGeneration.automated\": \"Automated\",\n \"logistics.config.tripGeneration.basic\": \"Basic\",\n \"logistics.config.orderBreakingMethod.clustering\": \"Clustering\",\n \"logistics.config.orderBreakingMethod.zoning\": \"Zoning\",\n \"logistics.save\": \"Save\",\n \"logistics.cancel\": \"Cancel\",\n \"logistics.config.shouldCaptureOdometer\":\n \"Should the RE capture the odometer image?\",\n};\nexport default data;\n","const data = {\n \"designations.empty.message\": \"There are no designations\",\n \"designations.header.name\": \"Name\",\n \"designations.header.timingType\": \"Timing Type\",\n \"designations.header.timing\": \"Timing\",\n \"designations.header.manager\": \"Manager\",\n \"designations.header.actions\": \"Actions\",\n \"designations.edit\": \"Edit\",\n \"designations.view.employees\": \"View employees\",\n \"designations.title\": \"Designations\",\n \"designations.add\": \"Add Designation\",\n \"designations.form.name\": \"Name\",\n \"designations.form.name.placeholder\": \"Enter name\",\n \"designations.form.manager\": \"Manager\",\n \"designations.form.manager.placeholder\": \"Enter manager designation\",\n \"designations.form.timingtype\": \"Timing type\",\n \"designations.form.timingtype.fixed\": \"Fixed\",\n \"designations.form.timingtype.flexible\": \"Flexible\",\n \"designations.form.save\": \"Save\",\n \"designations.form.cancel\": \"Cancel\",\n \"designations.delete\": \"Delete\",\n \"designations.addheader\": \"Add designation\",\n \"designations.editheader\": \"Edit designation\",\n \"designations.form.submit\": \"Submit\",\n \"designations.form.clearFiltersText\": \"Clear All\",\n \"designations.form.roles\": \"Mapped to roles\",\n \"designations.form.roles.placeholder\": \"Enter roles\",\n\n \"attendance.label.notCheckedIn\": \"Not Checked In\",\n \"attendance.label.noDesignation\": \"No Designation\",\n \"attendance.summary.title\": \"Attendance Summary\",\n \"attendance.summary.empty.message\": \"No attendance detail found\",\n \"attendance.summary.table.employee.name\": \"Employee Name\",\n \"attendance.summary.table.to\": \"To\",\n \"attendance.summary.table.na\": \"N/A\",\n \"attendance.summary.table.PRESENT\": \"Present\",\n \"attendance.summary.table.WEEKLY_OFF\": \"Weekly Off\",\n \"attendance.summary.table.ON_LEAVE\": \"On Leave\",\n \"attendance.summary.table.ABSENT\": \"Absent\",\n \"attendance.summary.table.HALFDAY\": \"Halfday\",\n \"attendance.summary.filter.form.employee.name\": \"Employee\",\n \"attendance.summary.filter.form.employee.placeholder\":\n \"Enter an employee name\",\n\n \"shifts.edit.heading\": \"Edit Employee\",\n \"shifts.heading\": \"Employees\",\n \"shifts.edit\": \"Edit\",\n \"shifts.header.name\": \"Name\",\n \"shifts.header.offdays\": \"Weekly off\",\n \"shifts.header.offdaysAndStores\": \"Weekly off / Stores\",\n \"shifts.header.timingsAndAttendance\": \"Timings / Attendance\",\n \"shifts.header.blankHeading\": \" \",\n \"shifts.header.timings\": \"Timings\",\n \"shifts.header.attendance\": \"Attendance\",\n \"shifts.header.actions\": \"Actions\",\n \"shifts.empty.message\": \"There are currently no employees\",\n \"shifts.empty.submessage\": \"Users can be seen once added\",\n \"shifts.designation\": \"Designation\",\n \"shifts.select.designation\": \"Select designation\",\n \"shifts.form.name\": \"Name\",\n \"shifts.form.phone\": \"Phone\",\n \"shifts.form.weekly.off\": \"Weekly off\",\n \"shifts.form.startTime\": \"Shift Start time\",\n \"shifts.form.endTime\": \"Shift end time\",\n \"shifts.form.submitText\": \"Save\",\n \"shifts.form.cancel\": \"Cancel\",\n \"shifts.checkout\": \"Check-out\",\n \"shifts.checkin\": \"Check-in\",\n \"shifts.designation.placeholder\": \"Enter designation\",\n \"shifts.filters.submitText\": \"Submit\",\n \"shifts.filters.clearFiltersText\": \"Clear All\",\n \"employee.add\": \"Add Employee\",\n \"shifts.form.name.placeholder\": \"Enter name\",\n \"shifts.phone.placeholder\": \"Enter phone number\",\n \"shifts.form.email\": \"Email\",\n \"shifts.form.email.placeholder\": \"Enter email ID\",\n \"shifts.form.toolAccess\": \"Allow employee to access the dashboard portal\",\n \"shifts.employee\": \"Employee\",\n \"shifts.employee.placeholder\": \"Enter name\",\n \"shifts.enterEmployeeEmail\": \"Employee's Email\",\n \"shifts.searchByEmail\": \"Search By Email\",\n \"shifts.stores\": \"Store\",\n \"shifts.stores.placeholder\": \"Select Store\",\n \"shifts.form.weekly.off.placeholder\": \"Select weekly offs\",\n \"shifts.header.stores\": \"Stores\",\n \"shifts.resetpassword\": \"Reset password\",\n \"shifts.newPassword\": \"New Password\",\n \"shifts.newPassword.placeholder\": \"Enter new password\",\n \"shifts.reset.title\": \"Reset password for\",\n \"shifts.reset.success.title\": \"Success\",\n \"shifts.reset.success.information\": \"Password has been successfully reset\",\n \"shifts.confirmpassword\": \"Confirm Password\",\n \"shifts.confirmpassword.placeholder\": \"Enter the password again\",\n \"shifts.passwords.dont.match\": \"Passwords do not match\",\n \"shifts.reset\": \"Okay\",\n \"shifts.delete\": \"Delete\",\n Monday: \"Mon\",\n Tuesday: \"Tue\",\n Wednesday: \"Wed\",\n Thursday: \"Thu\",\n Friday: \"Fri\",\n Saturday: \"Sat\",\n Sunday: \"Sun\",\n \"Monday.all\": \" All Mondays\",\n \"Tuesday.all\": \"All Tuesdays\",\n \"Wednesday.all\": \"All Wednesdays\",\n \"Thursday.all\": \"All Thursdays\",\n \"Friday.all\": \"All Fridays\",\n \"Saturday.all\": \"All Saturdays\",\n \"Sunday.all\": \"All Sundays\",\n\n \"role.add.heading\": \"Add Role\",\n \"role.edit.heading\": \"Edit Role\",\n \"role.heading\": \"Roles\",\n \"role.add\": \"Add Role\",\n \"role.edit\": \"Edit\",\n \"role.name\": \"Name\",\n \"role.action\": \"Action\",\n \"role.submit\": \"Submit\",\n \"role.cancel\": \"Cancel\",\n \"role.name.placeholder\": \"Enter name\",\n \"role.delete\": \"Delete\",\n};\n\nexport default data;\n","const data = {\n \"slots.store.page.title\": \"Store slot configuration\",\n \"slots.store.blocking.title\": \"Store slot blocking\",\n \"slots.store.editHeading\": \"Edit Slot Rule\",\n \"slots.store.addHeading\": \"Add Slot Rule\",\n \"slots.status\": \"Status\",\n \"slots.enabled\": \"Enabled\",\n \"slots.enable\": \"Enable\",\n \"slots.save\": \"Save\",\n \"slots.cancel\": \"Cancel\",\n \"slots.timing\": \"Timings\",\n \"slots.disabled\": \"Disabled\",\n \"slots.disable\": \"Disable\",\n \"slots.cutoff\": \"Cutoff time\",\n \"slots.cutoff.mins\": \"Cutoff in mins\",\n \"slots.cutoff.placeholder\": \"Enter cutoff time in mins\",\n \"slots.add.rule\": \"Add slot rule\",\n \"slots.store.emptyMessage\":\n \"There are no slot rules configured for this store\",\n \"slots.edit\": \"Edit\",\n \"slot.configure\": \"Configure\",\n \"slots.name.heading\": \"Slot\",\n \"slots.blocking.empty.message\": \"There are no slots configured for blocking\",\n \"slots.DELIVERY.empty\": \"No Delivery slots to configure\",\n \"slots.PICKUP.empty\": \"No Pickup slots to configure\",\n};\n\nexport default data;\n","const data = {\n \"customerSupport.search.noCustomer\": \"No customer found\",\n \"customerSupport.search.noOrder\": \"No order found\",\n \"order.action.fileDispute\": \"File dispute\",\n \"dispute.submit\": \"Submit\",\n \"calls.action.success.title\": \"Success\",\n \"calls.close\": \"Okay\",\n \"calls.action.success.info\": \"Added Successfully\",\n \"calls.action.form.heading\": \"Add Reason & Summary\",\n \"calls.table.heading.type\": \"Type\",\n \"calls.table.heading.from\": \"From\",\n \"calls.table.heading.to\": \"To\",\n \"calls.table.heading.startTime\": \"Start Time\",\n \"calls.table.heading.reason\": \"Reason\",\n \"calls.table.heading.recording\": \"Recording\",\n \"calls.emptyState.text\": \"No Calls Found\",\n \"calls.form.reason.placeholder\": \"Enter Call Reason\",\n \"calls.form.summary.label\": \"Summary\",\n \"calls.form.summary.placeholder\": \"Enter call summary\",\n \"calls.form.submitText\": \"Save\",\n \"calls.form.cancel\": \"Cancel\",\n \"calls.filters.submitText\": \"Submit\",\n \"calls.filters.clearFiltersText\": \"Clear All\",\n \"calls.filters.phone.label\": \"Phone\",\n \"calls.filters.phone.placeholder\": \"Enter Phone number\",\n \"calls.filters.type.label\": \"Type\",\n \"calls.filters.status.label\": \"Status\",\n \"calls.filters.tag.label\": \"Tag\",\n \"calls.filters.tag.placeholder\": \"All\",\n \"calls.filters.employee.label\": \"Employee\",\n \"calls.filters.employee.placeholder\": \"Enter Name\",\n \"calls.filters.customer.label\": \"Customer\",\n \"calls.filters.customer.placeholder\": \"Enter Name\",\n \"calls.filters.type.label.all\": \"All\",\n \"calls.filters.status.label.all\": \"All\",\n \"calls.filters.type.option.inbound\": \"Inbound\",\n \"calls.filters.type.option.outbound\": \"Outbound\",\n \"calls.filters.status.option.picked\": \"Picked\",\n \"calls.filters.status.option.missed\": \"Missed\",\n \"calls.filters.tag.option.cs\": \"CS\",\n \"calls.filters.tag.option.store\": \"Store\",\n \"calls.filters.tag.option.others\": \"Others\",\n};\n\nexport default data;\n","const data = {\n \"analytics.reports.heading\": \"Reports\",\n \"analytics.report.modal.title\": \"Download Report\",\n \"analytics.report.send.email\": \"Send to Email\",\n \"analytics.report.processing\": \"Processing\",\n \"analytics.report.recent\": \"Recent Reports\",\n \"analytics.report.dateRange\": \"Select Date Range\",\n};\n\nexport default data;\n","const data = {\n \"choose.theme.placeholder\": \"Select theme\",\n \"choose.theme.device.placeholder\": \"Select device\",\n \"industry.selection.error.message\":\n \"Some error occurred while fetching Industries\",\n \"onboarding.basicInfo.heading\": \"Provide Store Information\",\n \"onboarding.basicInfo.sencondaryHeading\":\n \"Enter your store information below and you can\",\n \"onboarding.basicInfo.subDomain.text\": \"subdomain\",\n \"onboarding.basicInfo.storeurl.description\":\n \"Your store URL is provided free of cost at smartstore.express. If you already own a domain\",\n \"onboarding.basicInfo.clickHere.text\": \"click here\",\n \"onboarding.basicInfo.register.text\": \"register\",\n \"onboarding.basicInfo.newOne.text\": \"a new one\",\n \"onboarding.basicInfo.useIt.text\": \"to use it or\",\n \"onboarding.industry.heading\": \"What is your industry?\",\n \"onboarding.industry.sencondaryHeading\": \"Select an industry below\",\n \"onboarding.products.heading\": \"Add products to your website\",\n \"onboarding.products.sencondaryHeading1\":\n \"Use below 10 sample products to create your\",\n \"onboarding.products.sencondaryHeading2\": \"website now and you can\",\n \"onboarding.theme.heading\": \"Choose your theme\",\n \"onboarding.theme.sencondaryHeading1\": \"Here is your default theme for your\",\n \"onboarding.theme.sencondaryHeading2\": \"website and you can\",\n \"onboarding.continue.text\": \"Continue\",\n \"onboarding.back.text\": \"Back\",\n \"onboarding.createWebsite.text\": \"Create your website now\",\n \"onboarding.seeMoreIndustries.text\": \"See more industries here\",\n \"onboarding.changeLater.text\": \"change later here\",\n \"onboarding.basicinfo.url.subtext\": \"Or use\",\n};\n\nexport default data;\n","const data = {\n \"sellers.seller.table.action.name\": \"Name\",\n \"sellers.seller.table.action.contact\": \"Contact\",\n \"sellers.seller.table.action.address\": \"Address\",\n \"sellers.seller.table.action.status\": \"Status\",\n \"sellers.seller.table.action.actions\": \"Actions\",\n \"sellers.seller.helpItems.message\": \"No Seller Yet\",\n \"sellers.seller.form.edit.heading\": \"Edit Seller\",\n \"sellers.seller.form.add.heading\": \"Add Seller\",\n \"seller.seller.form.add.text\": \"Add Sellers\",\n \"sellers.seller.form.add.bulk.text\": \"Bulk Upload\",\n \"sellers.import.successText\":\n \"CSV File Uploaded Successfully! Sellers will be added and appear after 15 minutes\",\n \"sellerUpload.csvDownloadText\": \"Download Sample CSV\",\n \"sellerUpload.uploadFileText\": \"Click here to upload the file\",\n \"sellers.seller.form.title.heading\": \"SELLER NAME\",\n \"sellers.seller.form.title.placeholder\": \"Enter seller name\",\n \"sellers.seller.form.title.requiredMessage\": \"Your seller must have a name\",\n \"sellers.seller.form.phone.heading\": \"Support Phone\",\n \"sellers.seller.form.phone.placeholder\": \"Enter Phone\",\n \"sellers.seller.form.email.heading\": \"Support Email\",\n \"sellers.seller.form.email.placeholder\": \"Enter Email\",\n \"sellers.seller.form.address.heading\": \"Complete Address\",\n \"sellers.seller.form.address.placeholder\": \"Enter Your Address\",\n \"sellers.seller.form.description.title.heading\": \"Description\",\n \"sellers.seller.form.description.title.pleaceholder\":\n \"Like Your Vision Mission etc\",\n \"sellers.seller.form.image.logo.heading\": \"LOGO\",\n \"sellers.confirm.text\": \"Confirm\",\n \"sellers.cancel.text\": \"Cancel\",\n \"seller.status.active\": \"Activate\",\n \"seller.status.inactive\": \"Inactivate\",\n \"seller.status.edit\": \"Edit\",\n \"seller.status.delete\": \"Delete\",\n \"sellers.user.password.heading\": \"password\",\n \"sellers.user.password.placeholder\": \"Enter Password\",\n \"sellers.user.add.text\": \"Add User\",\n \"sellers.user.add.nouser.text\": \"No User Yet\",\n \"sellers.user.edit.text\": \"Edit User\",\n \"sellers.user.form.name.heading\": \"Name\",\n \"sellers.user.form.name.pleceholder\": \"Enter Name\",\n \"sellers.user.form.sellername.heading\": \"Seller Name\",\n \"sellers.user.form.sellername.placeholder\": \"Enter Seller Name\",\n \"sellers.user.form.phone.heading\": \"Phone Number\",\n \"sellers.user.form.phone.placeholder\": \"Enter Phone Number\",\n \"sellers.user.form.email.heading\": \"Email\",\n \"sellers.user.form.email.placeholder\": \"Enter Email\",\n \"sellers.user.table.name\": \"Name\",\n \"sellers.user.table.sellername\": \"Seller Name\",\n \"sellers.user.table.email\": \"Email id\",\n \"sellers.user.table.action\": \"Actions\",\n \"user.action.edit\": \"Edit\",\n \"user.action.delete\": \"Delete\",\n \"user.action.reset.password\": \"Reset Password\",\n \"users.save.text\": \"Save\",\n \"seller.user.edit.text\": \"Edit User\",\n \"users.reset.title\": \"Reset password for\",\n \"users.reset.success.title\": \"Success\",\n \"users.reset.success.information\": \"Password has been successfully reset\",\n \"users.reset\": \"Okay\",\n};\nexport default data;\n","import loginStrings from \"./login.js\";\nimport resetPasswordStrings from \"./resetPassword.js\";\nimport changePasswordStrings from \"./changePassword.js\";\nimport menuStrings from \"./menu.js\";\nimport signupStrings from \"./signup.js\";\nimport settingsStrings from \"./settings.js\";\nimport validationStrings from \"./validations.js\";\nimport error404Strings from \"./404.js\";\nimport catalogueStrings from \"./catalogue.js\";\nimport operationsStrings from \"./operations.js\";\nimport marketingStrings from \"./marketing.js\";\nimport errorStrings from \"./errors.js\";\nimport listingPageStrings from \"./listingPage.js\";\nimport userStrings from \"./user.js\";\nimport logisticsStrings from \"./logistics\";\nimport hrStrings from \"./hr\";\nimport storeStrings from \"./stores\";\nimport csStrings from \"./customer-support\";\nimport analytics from \"./analytics\";\nimport onboarding from \"./onboarding\";\nimport sellersString from './sellers.js'\n\nconst allStrings = Object.assign(\n {},\n loginStrings,\n resetPasswordStrings,\n validationStrings,\n signupStrings,\n error404Strings,\n settingsStrings,\n changePasswordStrings,\n menuStrings,\n catalogueStrings,\n operationsStrings,\n marketingStrings,\n listingPageStrings,\n userStrings,\n errorStrings,\n logisticsStrings,\n hrStrings,\n storeStrings,\n csStrings,\n analytics,\n onboarding,\n sellersString\n);\n\nexport default allStrings;\n","// import arabic from './arabic' // uncomment this to enable arabic option in the language selector dropdown\n// const data = Object.assign({}, arabic) // uncomment this to enable arabic option in the language selector dropdown\n\nconst data = {};\n\nexport default data;\n","import defaultStrings from \"./default\";\nimport downloadedLanguages from \"./downloaded\";\n\nconst defaultLangs = {\n en: {\n language: \"English\",\n strings: defaultStrings,\n },\n};\n\n// Preserve default strings in case external dataset doesn't contain them\nconst data = Object.assign(\n {},\n defaultLangs,\n ...Object.keys(downloadedLanguages).map((isoCode) => {\n let downloadedLanguage = downloadedLanguages[isoCode];\n let strings = downloadedLanguage.strings;\n if (isoCode in defaultLangs) {\n strings = Object.assign(\n {},\n defaultLangs[isoCode][\"strings\"],\n downloadedLanguage.strings\n );\n }\n return {\n [isoCode]: Object.assign({}, downloadedLanguages[isoCode], { strings }),\n };\n })\n);\n\nexport default data;\n","import dataset from \"./dataset/index.js\";\nimport MessageFormat from \"messageformat\";\n\nfunction getMessage(key, params = {}) {\n if (!Boolean(key)) {\n return \"\";\n }\n let lang = getLocale()[\"language\"];\n let msg = key;\n if (lang in dataset && key in dataset[lang].strings) {\n msg = dataset[lang][\"strings\"][key];\n } else if (key in dataset[\"en\"].strings) {\n msg = dataset[\"en\"][\"strings\"][key];\n }\n return new MessageFormat(lang).compile(msg)(params);\n}\n\nfunction setLocale({ language }) {\n if (language) {\n window.localStorage.setItem(\"language\", language);\n }\n}\n\nfunction getLocale() {\n return {\n language: window.localStorage.getItem(\"language\"),\n };\n}\n\nfunction getSupportedLanguages() {\n return Object.keys(dataset).map((isoCode) => ({\n isoCode,\n language: dataset[isoCode].language,\n }));\n}\n\nexport { getMessage, setLocale, getLocale, getSupportedLanguages };\n","import React, { useState, useRef, useEffect } from \"react\";\nimport {\n cloneMutables,\n getNestedState,\n updateStateRecursively,\n} from \"../../lib/stateManagement/\";\nimport helperIcon from \"./helper_icon.svg\";\n\nimport {\n Input as _Input,\n Select as _Select,\n Upload as _Upload,\n ImageUpload as _ImageUpload,\n Textarea as _Textarea,\n Phone as _Phone,\n Checkbox as _Checkbox,\n Radio as _Radio,\n Searchable as _Searchable,\n CheckboxGroup as _CheckboxGroup,\n DateRangePicker as _DateRangePicker,\n SingleDatePicker as _SingleDatePicker,\n MultiLevelCheckbox as _MultiLevelCheckbox,\n MultiSelect as _MultiSelect,\n MultiTextInput as _MultiTextInput,\n Toggle as _Toggle,\n SelectSearch as _SelectSearch,\n ProductSearch as _ProductSearch,\n BrandSearch as _BrandSearch,\n DateTime as _DateTime,\n CategorySearch as _CategorySearch,\n CustomerTagSearch as _CustomerTagSearch,\n TimePicker as _TimePicker,\n RichTextEditorQuill as _RichTextEditorQuill,\n} from \"./Inputs\";\n\nimport \"./form.css\";\n\nconst VALIDATION_TYPES = {\n ALWAYS: \"ALWAYS\",\n ONCHANGE: \"ONCHANGE\",\n ONBLUR: \"ONBLUR\",\n ONSUBMIT: \"ONSUBMIT\",\n};\n\n// A helper method to easily register input events like change, blur, etc.\n// NOTE: Context of this method should be bound to the respective form\nfunction generateStateMappers({\n formatValue = (value) => value,\n formatChange = (value) => value,\n defaultValue,\n validationType = VALIDATION_TYPES.ONSUBMIT,\n stateKeys,\n loseEmphasisOnFill = false,\n}) {\n let showErrors = false;\n if (validationType) {\n switch (validationType) {\n case VALIDATION_TYPES.ALWAYS:\n showErrors = true;\n break;\n case VALIDATION_TYPES.ONCHANGE:\n showErrors = this.validationScenarios.validateOnChange(stateKeys);\n break;\n case VALIDATION_TYPES.ONBLUR:\n showErrors = this.validationScenarios.validateOnBlur(stateKeys);\n break;\n case VALIDATION_TYPES.ONSUBMIT:\n showErrors = this.validationScenarios.validateOnSubmit();\n break;\n default:\n break;\n }\n }\n let emphasize = true;\n if (loseEmphasisOnFill) {\n // emphasize = false only if value is non-empty\n let value = this.getState(stateKeys);\n if (value === undefined || value === null) {\n emphasize = true;\n } else {\n let type = typeof value;\n switch (type) {\n case \"boolean\":\n emphasize = false;\n break;\n case \"object\":\n if (\n (Array.isArray(value) && value.length) ||\n Object.keys(value).length\n ) {\n emphasize = false;\n }\n break;\n case \"number\":\n if (value || value === 0) {\n emphasize = false;\n }\n break;\n default:\n if (value) {\n emphasize = false;\n }\n break;\n }\n }\n }\n let value = this.getState(stateKeys);\n if (value !== 0 && !value) {\n value = defaultValue;\n }\n return {\n value: formatValue(value),\n onChange: (value, error) => {\n value = formatChange(value);\n this.updateState(stateKeys, value);\n updateStateRecursively.call(this, [\"blurred\", ...stateKeys], false);\n },\n onValidation: (error) => {\n this.registerValidation(stateKeys, error);\n },\n onBlur: () => {\n updateStateRecursively.call(this, [\"blurred\", ...stateKeys], true);\n },\n // Whether the input should be emphasized (with bold label, etc)\n emphasize,\n showErrors,\n };\n}\n\nexport default function Form(props) {\n return
;\n}\n\nclass BaseForm extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n values: props.value ? cloneMutables(props.value) : {}, // Use immutable objects instead\n touched: {},\n blurred: {},\n validations: {},\n submitting: props.submitting || false,\n pressedSubmitWithCurrentData: false,\n };\n this._submitHandler = this._submitHandler.bind(this);\n this.generateStateMappers = generateStateMappers.bind(this);\n this.beforeSubmit = this.beforeSubmit.bind(this);\n this.buttons = {\n SubmitButton: (props) => (\n \n ),\n CancelButton: (props) => (\n \n {props.children}\n \n ),\n ClearButton: (props) => (\n \n {props.children}\n \n ),\n };\n this.components = {\n Form: (props) => (\n \n {props.children}\n \n ),\n };\n\n // Some validation helpers\n this.validationScenarios = {\n validateOnChange: (stateKeys) =>\n getNestedState.call(this, [\"touched\", ...stateKeys]),\n validateOnBlur: (stateKeys) =>\n getNestedState.call(this, [\"blurred\", ...stateKeys]),\n validateOnSubmit: () => this.state.pressedSubmitWithCurrentData,\n };\n }\n getState(keys) {\n return getNestedState.call(this, [\"values\", ...keys]);\n }\n updateState(keys, value, registerAsUserInput = true) {\n this.setState({\n pressedSubmitWithCurrentData: false,\n });\n updateStateRecursively.call(this, [\"values\", ...keys], value);\n if (registerAsUserInput) {\n // False value implies that this value was modified programatically, so don't modify 'touched' value\n updateStateRecursively.call(this, [\"touched\", ...keys], true);\n }\n }\n registerValidation(keys, error) {\n updateStateRecursively.call(this, [\"validations\", ...keys], error);\n }\n isFormValid(validationObj) {\n let validations = validationObj || this.state.validations;\n if (!validations) {\n validations = {};\n }\n if (\"valid\" in validations) {\n return validations.valid;\n }\n return Object.keys(validations)\n .map((name) =>\n Array.isArray(validations[name])\n ? // If this field has more fields nested in it\n validations[name]\n .map((validation) => this.isFormValid(validation))\n .reduce((value, acc) => value && acc, true)\n : \"valid\" in validations[name]\n ? validations[name].valid\n : !(\n typeof validations[name] === \"object\" &&\n Object.keys(validations[name]).length === 0\n ) &&\n typeof Object.values(Object.values(validations[name])[0])[0] ===\n \"boolean\"\n ? this.isFormValid(validations[name])\n : Object.values(validations[name])\n .map((validation) => this.isFormValid(validation))\n .reduce((value, acc) => value && acc, true)\n )\n .reduce((value, acc) => value && acc, true);\n }\n beforeSubmit() {\n // Update this method if you want to do something before submission happens\n // E.g. Navigate to an input with an error in the page\n }\n onSubmit(data) {\n // Form submission logic. This is the function that the user would define\n }\n _submitHandler(e) {\n e && e.preventDefault();\n this.beforeSubmit();\n this.setState({\n pressedSubmitWithCurrentData: true,\n });\n let isValid = this.isFormValid();\n if (isValid) {\n if (this.props.onSubmit) {\n let values = cloneMutables(this.state.values); // Use immutable objects instead\n this.props.onSubmit(values);\n } else {\n this.onSubmit(this.state.values);\n }\n }\n }\n componentWillReceiveProps(newProps) {\n if (newProps.value) {\n let values = cloneMutables(newProps.value); // Use immutable objects instead\n this.setState({\n values: values,\n submitting: newProps.submitting,\n });\n }\n }\n resetForm = () => {\n this.setState({\n touched: {},\n blurred: {},\n validations: {},\n pressedSubmitWithCurrentData: false,\n submitting: false,\n });\n };\n render() {\n let { Form } = this.components;\n return
;\n }\n}\n\nconst HelperText = (props) => {\n const [show, setShow] = useState(false);\n const wrapperRef = useRef(null);\n\n useEffect(() => {\n function handleClickOutside(event) {\n if (wrapperRef.current && !wrapperRef.current.contains(event.target)) {\n setShow(false);\n return;\n }\n if (event.target.className === \"helperIcon\") {\n setShow((show) => !show);\n }\n }\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [wrapperRef]);\n\n return (\n
\n \"\"\n {show &&
{props.helperTextMsg}
}\n
\n );\n};\n\n// HoC to wrap Inputs, providing them form-related styling and functionality\nconst wrapInput = (Component) => {\n const InputWrapper = ({ className, ...props }) => {\n if (!props.label) {\n return ;\n }\n const label = props.label.trim?.();\n return (\n
\n
\n \n {label && (\n \n {label}\n {props.required && {\" *\"}}\n \n )}\n {props.secondaryLabel && props.secondaryLabel()}\n \n {props.helperTextMsg && }\n
\n \n {props.children &&
{props.children}
}\n
\n );\n };\n return InputWrapper;\n};\n\nconst Input = wrapInput(_Input);\nconst Upload = wrapInput(_Upload);\nconst Select = wrapInput(_Select);\nconst ImageUpload = wrapInput(_ImageUpload);\nconst Textarea = wrapInput(_Textarea);\nconst Phone = wrapInput(_Phone);\nconst Checkbox = wrapInput(_Checkbox);\nconst Radio = wrapInput(_Radio);\nconst Searchable = wrapInput(_Searchable);\nconst CheckboxGroup = wrapInput(_CheckboxGroup);\nconst DateRangePicker = wrapInput(_DateRangePicker);\nconst SingleDatePicker = wrapInput(_SingleDatePicker);\nconst MultiLevelCheckbox = wrapInput(_MultiLevelCheckbox);\nconst MultiSelect = wrapInput(_MultiSelect);\nconst MultiTextInput = wrapInput(_MultiTextInput);\nconst Toggle = wrapInput(_Toggle);\nconst SelectSearch = wrapInput(_SelectSearch);\nconst ProductSearch = wrapInput(_ProductSearch);\nconst BrandSearch = wrapInput(_BrandSearch);\nconst CustomerTagSearch = wrapInput(_CustomerTagSearch);\nconst DateTime = wrapInput(_DateTime);\nconst CategorySearch = wrapInput(_CategorySearch);\nconst TimePicker = wrapInput(_TimePicker);\nconst RichTextEditorQuill = wrapInput(_RichTextEditorQuill);\n\nexport {\n BaseForm,\n VALIDATION_TYPES,\n Input,\n Select,\n Upload,\n ImageUpload,\n Textarea,\n Phone,\n Checkbox,\n Radio,\n Searchable,\n CheckboxGroup,\n DateRangePicker,\n SingleDatePicker,\n MultiLevelCheckbox,\n MultiSelect,\n MultiTextInput,\n Toggle,\n SelectSearch,\n ProductSearch,\n BrandSearch,\n DateTime,\n CategorySearch,\n CustomerTagSearch,\n TimePicker,\n RichTextEditorQuill,\n HelperText,\n};\n","import { getMessage } from \"../translator\";\nimport moment from \"moment\";\n\n// takes Date-time as \"2018-11-08 11:05:35\" and returns as 8 Nov 2018, 11:05 AM\n// if only date is passed ex. 2018-11-08, return it as 8 Nov 2018, 00:00 AM\nfunction getPrintableTime(time) {\n if (!time) {\n return \"\";\n }\n time = time.trim();\n\n let dateString;\n\n if (time.includes(\" \")) {\n dateString = moment(time, \"YYYY-MM-DD HH:mm:ss\");\n dateString = dateString.format(\"DD MMM YYYY, hh:mm A\");\n } else {\n dateString = moment(time, \"YYYY-MM-DD\");\n dateString = dateString.format(\"DD MMM YYYY\");\n }\n\n return dateString;\n}\n\n// gets time and date in utc and return local time\nfunction utcToLocalTime(time) {\n const t = new Date(time.replace(/ /g, \"T\")).getTime();\n const offset = new Date().getTimezoneOffset() * -60 * 1000;\n let final = new Date(t + offset);\n return final;\n}\n\nfunction localTimeToUtc(time) {\n const t = new Date(time.replace(/ /g, \"T\")).getTime();\n const offset = new Date().getTimezoneOffset() * -60 * 1000;\n let final = new Date(t - offset);\n return final;\n}\n\n// accepts 2 args, date time converter function and date time in \"YYYY-MM-DD HH-MM-SS\" and return in standrad format \"YYYY-MM-DD HH-MM-SS\"\nfunction getStandradDateTime(dateTimeConverter, dateTime) {\n if (dateTime.includes(\"T\")) {\n const newDate = dateTime.split(/[TZ]/);\n dateTime = `${newDate[0]} ${newDate[1]}`;\n }\n return moment(dateTimeConverter(dateTime), \"YYYY-MM-DD HH:mm:ss\").format(\n \"YYYY-MM-DD HH:mm:ss\"\n );\n}\n\n// accepts 2 args, time in \"YYYY-MM-DD HH-MM-SS\" and return in Hours\nfunction getDifferenceInHours(start, end) {\n const startTime = new Date(start).getTime();\n const endTime = new Date(end).getTime();\n const diff = Math.floor(Math.abs(startTime - endTime) / 3600000);\n return `${diff} Hours`;\n}\n\nfunction formatSlotTime(date, time) {\n if (!time || !date) {\n return null;\n }\n const t1 = new Date(`${date} ${time}`).getTime();\n const offset = new Date().getTimezoneOffset() * -60 * 1000;\n let final = new Date(t1 + offset).toTimeString();\n time = final.split(\" \")[0];\n let parts = time.split(\":\");\n if (parts[0] === \"00\") {\n return `12:${parts[1]} AM`;\n }\n if (parts[0] === \"12\") {\n return `${Number(parts[0])}:${parts[1]} PM`;\n }\n if (parts[0] > 12) {\n return `${String(Number(parts[0]) - 12)}:${parts[1]} PM`;\n }\n return `${Number(parts[0])}:${parts[1]} AM`;\n}\n\nconst convertToMilitaryTime = (time, meridian) => {\n if (!time || !meridian) {\n return null;\n }\n return moment(`${time} ${meridian}`, [\"h:mm A\"]).format(\"HH:mm:ss\");\n};\n\nfunction slotTimes() {\n let timeStrings = [];\n for (let i = 0; i <= 23; i++) {\n if (i < 10) {\n timeStrings.push(`0${i}:00:00`);\n timeStrings.push(`0${i}:30:00`);\n } else {\n timeStrings.push(`${i}:00:00`);\n timeStrings.push(`${i}:30:00`);\n }\n }\n return timeStrings;\n}\n\n//gets the date and time and return the boolean depends on current time\nfunction timeRangeDisable(date, time) {\n if (date) {\n if (`${date} ${time}` < `${moment().format(\"YYYY-MM-DD HH:mm:ss\")}`) {\n return true;\n }\n }\n return false;\n}\n\n// gets date in YYYY-MM-DD and return in format 20th Nov 2017\nfunction formatDate(dateString) {\n if (!dateString) {\n return null;\n }\n let monthNames = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ];\n let parts = dateString.split(\"-\");\n let suffix = \"\";\n switch (parts[2]) {\n case \"01\":\n case \"21\":\n case \"31\":\n suffix = \"st\";\n break;\n case \"03\":\n case \"23\":\n suffix = \"rd\";\n break;\n case \"02\":\n case \"22\":\n suffix = \"nd\";\n break;\n default:\n suffix = \"th\";\n }\n return `${parts[2].replace(/^0+/, \"\")}${suffix} ${monthNames[parts[1] - 1]} ${\n parts[0]\n }`;\n}\n// take time in 23:59:59 format and return 11:59 PM\nfunction formatTime(time) {\n if (!time) {\n return null;\n }\n let parts = time.split(\":\");\n if (parts[0] === \"00\") {\n return `12:${parts[1]} AM`;\n }\n if (parts[0] === \"12\") {\n return `${Number(parts[0])}:${parts[1]} PM`;\n }\n if (parts[0] > 12) {\n return `${String(Number(parts[0]) - 12)}:${parts[1]} PM`;\n }\n return `${Number(parts[0])}:${parts[1]} AM`;\n}\n\nfunction getOrdinal(n) {\n let s = [\"th\", \"st\", \"nd\", \"rd\"];\n let v = n % 100;\n return n + (s[(v - 20) % 10] || s[v] || s[0]);\n}\n\n// Returns day of a week when a valid date is provided\nfunction getPrintableDay(date) {\n const days = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ];\n date = new Date(date);\n return days[date.getDay()];\n}\n\n// Returns an array with current months first and end dates\nfunction getMonthStartEnd(date = false) {\n date = date ? new Date(date) : new Date();\n return [\n getDateInSQL(new Date(date.getFullYear(), date.getMonth(), 1)),\n getDateInSQL(new Date(date.getFullYear(), date.getMonth() + 1, 0)),\n ];\n}\n\n// Returns date in the form of YYYY-MM-DD for a given valid date\nfunction getDateInSQL(date) {\n date = new Date(date);\n let month = \"\" + (date.getMonth() + 1);\n let day = \"\" + date.getDate();\n let year = date.getFullYear();\n\n if (month.length < 2) month = \"0\" + month;\n if (day.length < 2) day = \"0\" + day;\n\n return [year, month, day].join(\"-\");\n}\n\n// Returns previous month from a given date\nfunction getPrevMonth(date) {\n return new Date(date.setMonth(date.getMonth() - 1));\n}\n\n// Returns next month from a given date\nfunction getNextMonth(date) {\n return new Date(date.setMonth(date.getMonth() + 1));\n}\n\nfunction getDaysOfWeek({ full = false }) {\n return [\n {\n text: full ? getMessage(\"Monday.all\") : getMessage(\"Monday\"),\n value: \"Monday\",\n },\n {\n text: full ? getMessage(\"Tuesday.all\") : getMessage(\"Tuesday\"),\n value: \"Tuesday\",\n },\n {\n text: full ? getMessage(\"Wednesday.all\") : getMessage(\"Wednesday\"),\n value: \"Wednesday\",\n },\n {\n text: full ? getMessage(\"Thursday.all\") : getMessage(\"Thursday\"),\n value: \"Thursday\",\n },\n {\n text: full ? getMessage(\"Friday.all\") : getMessage(\"Friday\"),\n value: \"Friday\",\n },\n {\n text: full ? getMessage(\"Saturday.all\") : getMessage(\"Saturday\"),\n value: \"Saturday\",\n },\n {\n text: full ? getMessage(\"Sunday.all\") : getMessage(\"Sunday\"),\n value: \"Sunday\",\n },\n ];\n}\n\n// 02:00:00 to 120 mins\nfunction getMinutes(his) {\n if (!his) {\n return null;\n }\n var a = his.split(\":\");\n return +a[0] * 60 + +a[1];\n}\n\n// 2018-09-10T12:31:40Z to 12:31:40 and converts it to local time\nfunction formatIsoTime(dateTime) {\n if (!dateTime) {\n return null;\n }\n return formatTime(moment(dateTime).format(\"HH:mm:ss\"));\n}\n\nfunction convertIsoToHHmmss(dateTime) {\n if (!dateTime) {\n return null;\n }\n return moment(dateTime).format(\"HH:mm:ss\");\n}\n\nfunction formatIsoDate(dateTime) {\n if (!dateTime) {\n return null;\n }\n let date = moment(dateTime);\n return formatDate(date.format(\"YYYY-MM-DD\"));\n}\n\n// Gets time difference in hrs plus minutes betn 2 times\n// 16:00:00 and 22:00:00 gives 6h 00 mins\nfunction getRemainingTime(startTime, endTime) {\n if (!startTime || !endTime) {\n return null;\n }\n try {\n let start = moment.utc(startTime, \"HH:mm:ss\");\n let end = moment.utc(endTime, \"HH:mm:ss\");\n if (end.isBefore(start)) {\n end.add(1, \"day\");\n }\n let diff = moment.duration(end.diff(start));\n diff = moment.utc(+diff).format(\"HH:mm\").split(\":\");\n diff[0] = Number(diff[0]);\n diff[1] = Number(diff[1]);\n diff = diff.join(\" h \").concat(\" m\");\n return diff;\n } catch (error) {\n console.error(error);\n return null;\n }\n}\n\nfunction getTimes() {\n let times = [];\n for (let i = 0; i <= 23; i++) {\n if (i < 10) {\n times.push({ text: `0${i}:00`, value: `0${i}:00:00` });\n times.push({ text: `0${i}:30`, value: `0${i}:30:00` });\n } else {\n times.push({ text: `${i}:00`, value: `${i}:00:00` });\n times.push({ text: `${i}:30`, value: `${i}:30:00` });\n }\n }\n return times;\n}\n\nexport {\n getPrintableTime,\n formatDate,\n formatTime,\n getOrdinal,\n getMonthStartEnd,\n getPrintableDay,\n getDateInSQL,\n getPrevMonth,\n getNextMonth,\n getDaysOfWeek,\n getMinutes,\n formatIsoTime,\n convertIsoToHHmmss,\n formatIsoDate,\n getRemainingTime,\n getTimes,\n utcToLocalTime,\n localTimeToUtc,\n getStandradDateTime,\n convertToMilitaryTime,\n formatSlotTime,\n slotTimes,\n getDifferenceInHours,\n timeRangeDisable,\n};\n","// Features:\n// 1. accept token\n// 2. save token to storage\n// 3. auto-load token from storage\n\nconst saveSession = function (sessionData) {\n for (let key in sessionData) {\n if (sessionData[key]) {\n if (key === \"user\") {\n savePermissions(sessionData[key].endpointPermissions);\n delete sessionData[key].endpointPermissions;\n }\n window.localStorage.setItem(\n key,\n typeof sessionData[key] === \"object\"\n ? JSON.stringify(sessionData[key])\n : sessionData[key]\n );\n }\n }\n};\n\n// Checks if user has permissions to make a request to server\n// For endpoint like order-service/order-log with method PUT\n// service = order, endpoint = orrder-log, method = put/PUT\nconst hasPermissions = (service, endpoint, method) => {\n if (!service || !endpoint || !method) {\n return false;\n }\n let permissions = JSON.parse(\n window.localStorage.getItem(\"formattedPermissions\")\n );\n if (!permissions) {\n permissions = getAllPermissions();\n window.localStorage.setItem(\n \"formattedPermissions\",\n JSON.stringify(permissions)\n );\n }\n let key = `${service}-service/${endpoint}`;\n return permissions[key] && permissions[key][method.toUpperCase()];\n};\n\nconst savePermissions = function (permissions = []) {\n let formatted = Object.assign(\n {},\n ...permissions.map((permission) => {\n return {\n [permission.url]: permission,\n };\n })\n );\n window.localStorage.setItem(\"permissions\", JSON.stringify(formatted));\n let formattedPermissions = getAllPermissions();\n window.localStorage.setItem(\n \"formattedPermissions\",\n JSON.stringify(formattedPermissions)\n );\n};\n\nconst getPermissions = function (endpoints = []) {\n let permissions = window.localStorage.getItem(\"permissions\");\n if (!permissions) {\n return false;\n }\n permissions = JSON.parse(permissions);\n return Object.assign(\n {},\n ...endpoints.map((endpoint) => {\n if (endpoint in permissions) {\n return {\n [endpoint]: permissions[endpoint].allowedMethods,\n };\n } else {\n return {\n [endpoint]: false,\n };\n }\n })\n );\n};\n\nconst getAllPermissions = function () {\n let permissions = JSON.parse(window.localStorage.getItem(\"permissions\"));\n\n // if permissions is null or undefiend return empty object\n if (!permissions) {\n return {};\n }\n\n return Object.assign(\n {},\n ...Object.keys(permissions).map((endpoint) => ({\n [endpoint]: permissions[endpoint][\"allowedMethods\"],\n }))\n );\n};\n\n// get permission for endpoint like order-service/order-log\n// service = order-service, endpoint = order-log\nconst getPermissionObject = (service, endpoint) => {\n const permissions = JSON.parse(window.localStorage.getItem(\"permissions\"));\n return permissions[`${service}/${endpoint}`];\n};\n\nconst getAuthToken = function () {\n let token = window.localStorage.getItem(\"token\");\n return token;\n};\n\nconst getSession = function () {\n return {\n organization: JSON.parse(window.localStorage.getItem(\"organization\")),\n user: JSON.parse(window.localStorage.getItem(\"user\")),\n };\n};\n\nconst getStores = () => {\n return JSON.parse(window.localStorage.getItem(\"stores\"));\n};\n\nconst sortStores = (storesArr) => {\n return storesArr.sort((a, b) => {\n if (a.text > b.text) {\n return 1;\n } else if (b.text > a.text) {\n return -1;\n } else {\n return 0;\n }\n });\n};\n\nconst setStores = (stores) => {\n return window.localStorage.setItem(\"stores\", JSON.stringify(stores));\n};\n\nconst clearSession = function () {\n let organizationName = window.localStorage.getItem(\"organization-name\");\n let language = window.localStorage.getItem(\"language\");\n window.localStorage.clear();\n if (organizationName && organizationName !== \"null\") {\n window.localStorage.setItem(\"organization-name\", organizationName);\n }\n window.localStorage.setItem(\"language\", language);\n};\n\nconst isLoggedIn = function () {\n return Boolean(getAuthToken());\n};\n\nconst isAccountVerified = function () {\n let session = getSession();\n return session.user.verified;\n};\n\nconst verifyAccount = function () {\n let session = getSession();\n session.user.verified = true;\n saveSession(session);\n};\n\nconst isExtensionEnabled = function (slugOrId) {\n let organization = JSON.parse(window.localStorage.getItem(\"organization\"));\n if (!organization) {\n return false;\n }\n let enabled;\n if (typeof slugOrId === \"string\") {\n let slug = slugOrId;\n enabled =\n (organization.extension || []).findIndex((ext) => ext.slug === slug) > -1;\n } else {\n let id = slugOrId;\n enabled =\n (organization.extension || []).findIndex((ext) => ext.id === id) > -1;\n }\n return enabled;\n};\n\nconst disableExtension = function (extension) {\n let organization = JSON.parse(window.localStorage.getItem(\"organization\"));\n if (!organization.extension) {\n organization.extension = [];\n }\n organization.extension = organization.extension.filter(\n (ext) => ext.id !== extension.id\n );\n window.localStorage.setItem(\"organization\", JSON.stringify(organization));\n};\n\nconst enableExtension = function (extension) {\n let organization = JSON.parse(window.localStorage.getItem(\"organization\"));\n if (!organization.extension) {\n organization.extension = [];\n }\n organization.extension.push(extension);\n window.localStorage.setItem(\"organization\", JSON.stringify(organization));\n};\n\nconst isEnterprise = () => {\n let userInfo = getSession();\n return Boolean(userInfo.organization && userInfo.organization.isEnterprise);\n};\nexport const isERCOrComplete = () => {\n const userObject = getSession()?.user;\n if (!userObject?.isOwner) {\n const { roles } = userObject?.designation || userObject;\n const DFR_COMPLETE = [\"ERC ORDER\", \"COMPLETE ORDER\"];\n const hasDFRCompleteRole = roles?.some((role) =>\n DFR_COMPLETE.includes(role?.name)\n );\n return hasDFRCompleteRole;\n }\n return false;\n};\n\nexport const canAccessReports = (name) => {\n if (!isERCOrComplete()) return true;\n\n const { permissions = {} } =\n getPermissionObject(\"report-service\", \"reports\")?.metaData || {};\n\n const reportAccessMap = {\n \"DFR Report\": \"canAccessDFRReport\",\n \"Order Sales Report\": \"canAccessOrderSalesReport\",\n \"Item Sales Report\": \"canAccessItemSalesReport\",\n \"Payment Raw Data Report\": \"canAccessPaymentRawDataReport\",\n };\n\n if (name) {\n return permissions[reportAccessMap[name]] ?? false;\n }\n\n return Object.values(reportAccessMap).some((key) => permissions[key]);\n};\n\nconst modifyMenuForEnterprise = (menu) => {\n let newMenu = { ...menu };\n if (!isExtensionEnabled(\"Marketing\")) {\n delete newMenu.marketing;\n }\n if (!canAccessReports()) {\n newMenu.analytics = menu?.analytics?.filter(\n (item) => !item.includes(\"reports\")\n );\n if (!newMenu?.analytics?.length) delete newMenu.analytics;\n }\n newMenu.operations = menu.operations?.filter(\n (item) => !item.includes(\"click-collect-orders\")\n ); // remove click and collect order from menu\n newMenu.user = menu.user?.filter((item) => item !== \"account-balance\"); // remove account balance from menu\n return newMenu;\n};\n// TODO: Get this from API response\n// const configureableExtensions = [\n// 'MultiUserSupport',\n// 'MultiStoreSupport',\n// 'InStoreProcessing',\n// 'LogisticsSupport',\n// 'DeliveryAreaSupport',\n// 'Analytics',\n// 'TawkToLiveChat',\n// 'Seo',\n// 'OnlinePaymentSupport',\n// 'EntityMetaData',\n// 'DeliverySlots',\n// 'CustomerTags',\n// 'StockOverride',\n// 'SearchOverride'\n// ]\n\nconst getConfigureableExtensions = () => {\n let extensions = [];\n if (hasPermissions(\"account\", \"store\", \"get\")) {\n extensions.push(\"MultiStoreSupport\");\n }\n if (hasPermissions(\"account\", \"user\", \"get\")) {\n extensions.push(\"MultiUserSupport\");\n }\n if (hasPermissions(\"account\", \"extension\", \"get\")) {\n extensions.push(\"InStoreProcessing\");\n }\n if (hasPermissions(\"logistics\", \"delivery-area\", \"get\")) {\n extensions.push(\"DeliveryAreaSupport\");\n }\n if (hasPermissions(\"account\", \"config\", \"get\")) {\n extensions.push(\"LogisticsSupport\");\n }\n if (hasPermissions(\"account\", \"config\", \"get\")) {\n extensions.push(\"Analytics\");\n }\n if (hasPermissions(\"account\", \"extension\", \"get\")) {\n extensions.push(\"TawkToLiveChat\");\n }\n if (hasPermissions(\"account\", \"seo\", \"get\")) {\n extensions.push(\"Seo\");\n }\n if (hasPermissions(\"config\", \"meta-data\", \"get\")) {\n extensions.push(\"EntityMetaData\");\n }\n if (\n hasPermissions(\"account\", \"extension\", \"get\") &&\n hasPermissions(\"order\", \"slot\", \"get\")\n ) {\n extensions.push(\"DeliverySlots\");\n }\n if (hasPermissions(\"customer\", \"tag\", \"get\")) {\n extensions.push(\"CustomerTags\");\n }\n if (hasPermissions(\"catalogue\", \"stock-override\", \"get\")) {\n extensions.push(\"StockOverride\");\n }\n if (hasPermissions(\"catalogue\", \"product-ranking\", \"get\")) {\n extensions.push(\"SearchOverride\");\n }\n if (hasPermissions(\"logistics\", \"courier\", \"get\")) {\n extensions.push(\"ShipRocket\");\n }\n if (hasPermissions(\"catalogue\", \"product-restriction\", \"get\")) {\n extensions.push(\"ProductRestrictions\");\n }\n if (hasPermissions(\"account\", \"store-history\", \"get\")) {\n extensions.push(\"UserLogs\");\n }\n return extensions;\n};\n\nconst slugs = {\n MultiUserSupport: \"users\",\n MultiStoreSupport: \"stores\",\n InStoreProcessing: \"instore\",\n DeliveryAreaSupport: \"delivery-area\",\n Analytics: \"analytics\",\n TawkToLiveChat: \"tawk\",\n Seo: \"seo\",\n OnlinePaymentSupport: \"payment-configuration\",\n EntityMetaData: \"metadata\",\n DeliverySlots: \"slots\",\n LogisticsSupport: \"logistics-configuration\",\n CustomerTags: \"customer-tags\",\n StockOverride: \"store-configuration\",\n SearchOverride: \"search-configuration\",\n ShipRocket: \"courier-support\",\n RefferalManagement: \"referral-management\",\n GoogleMerchantCenter: \"google-merchant-center\",\n MultiVariantSupport: \"product-variant-support\",\n ProductRestrictions: \"product-restrictions\",\n UserLogs: \"user-activity-logs\",\n};\n\nlet firstSubmenu = \"\";\n\nconst modifyEnterprisePermissions = () => {\n let extensions =\n getSession().organization && getSession().organization.extension;\n let configureableExtensions = getConfigureableExtensions();\n let menu = extensions\n .map((extension, index) => {\n if (configureableExtensions.indexOf(extension.slug) > -1) {\n if (firstSubmenu === \"\") {\n firstSubmenu = slugs[extension.slug];\n }\n return {\n slug: slugs[extension.slug],\n extensions: [extension.slug],\n };\n }\n return null;\n })\n .filter(Boolean);\n\n if (\n getSession().organization.domain &&\n hasPermissions(\"account\", \"theme\", \"get\") &&\n hasPermissions(\"website\", \"layout\", \"get\")\n ) {\n menu.push({\n slug: \"themes\",\n });\n }\n if (hasPermissions(\"config\", \"config\", \"GET\")) {\n menu.push({\n slug: \"communication-configuration\",\n });\n }\n if (hasPermissions(\"order\", \"package\", \"get\")) {\n menu.push({\n slug: \"order-package-config\",\n });\n }\n if (\n hasPermissions(\"account\", \"config\", \"get\") &&\n hasPermissions(\"config\", \"config\", \"get\")\n ) {\n menu.push({\n slug: \"order-config\",\n });\n }\n return menu;\n};\nconst getExtensionDetails = (slug) => {\n let organization = JSON.parse(window.localStorage.getItem(\"organization\"));\n if (!organization) {\n return null;\n }\n let index;\n index = (organization.extension || []).findIndex((ext) => ext.slug === slug);\n if (index > -1) {\n return organization.extension[index];\n }\n return null;\n};\n\nconst saveEntityMetaData = (entityMetaDataConfig) => {\n window.localStorage.setItem(\n \"entityMetaDataConfig\",\n JSON.stringify(entityMetaDataConfig)\n );\n};\n\nconst getEntityMetaData = () => {\n return JSON.parse(window.localStorage.getItem(\"entityMetaDataConfig\"));\n};\n\nconst getStoreSelect = () => {\n let stores = getStores();\n let data =\n stores &&\n stores.map((store) => {\n return {\n text: store.name,\n value: store.id,\n };\n });\n return data;\n};\n\nconst getStoreIds = () => {\n let stores = getStores();\n let data = stores && stores.map((store) => store.id);\n return data;\n};\n\nconst extensionRoutes = {\n OnlinePaymentSupport: \"/settings/payment-configuration\",\n Seo: \"/settings/seo\",\n DeliveryAreaSupport: \"/settings/delivery-area\",\n MultiStoreSupport: \"/settings/stores\",\n MultiUserSupport: \"/settings/users\",\n DeliverySlots: \"/settings/slots\",\n LogisticsSupport: \"/settings/logistics-configuration\",\n CustomerTags: \"/settings/customer-tags\",\n StockOverride: \"/settings/store-configuration\",\n SearchOverride: \"/settings/search-configuration\",\n MultipleAndPartialOrderPicking: \"/settings/picking-configuration\",\n Wallet: \"/settings/wallet-configuration\",\n ShipRocket: \"/settings/courier-support\",\n ReferralManagement: \"/settings/referral-management\",\n GoogleMerchantCenter: \"/settings/google-merchant-center\",\n MultiVariantSupport: \"/settings/product-variant-support\",\n ProductRestrictions: \"/settings/product-restrictions\",\n};\n\nexport {\n clearSession,\n disableExtension,\n enableExtension,\n getAllPermissions,\n getAuthToken,\n getPermissions,\n getSession,\n isExtensionEnabled,\n isLoggedIn,\n isAccountVerified,\n saveSession,\n verifyAccount,\n isEnterprise,\n modifyMenuForEnterprise,\n saveEntityMetaData,\n getEntityMetaData,\n getExtensionDetails,\n extensionRoutes,\n modifyEnterprisePermissions,\n firstSubmenu,\n getStores,\n setStores,\n hasPermissions,\n getStoreSelect,\n getStoreIds,\n sortStores,\n getPermissionObject,\n};\n","import { getAuthToken, isExtensionEnabled, getSession } from \"../auth\";\nimport checkHttpResponseCode from \"../../utils/isApiCallSuccessfull\";\nimport { GO_HOST } from \"../../config/app.js\";\nimport { get, set } from \"../storage\";\nimport axios from \"axios\";\n\nconst ServiceHostMapping = {\n \"account-service\": GO_HOST,\n \"billing-service\": GO_HOST,\n \"blog-service\": GO_HOST,\n \"recipe-service\": GO_HOST,\n \"catalogue-service\": GO_HOST,\n \"communication-service\": GO_HOST,\n \"customer-service\": GO_HOST,\n \"logistics-service\": GO_HOST,\n \"media-service\": GO_HOST,\n \"order-service\": GO_HOST,\n \"promo-service\": GO_HOST,\n \"ticket-service\": GO_HOST,\n \"website-service\": GO_HOST,\n \"public-service\": GO_HOST,\n \"offer-service\": GO_HOST,\n \"inventory-service\": GO_HOST,\n \"config-service\": GO_HOST,\n \"analytics-service\": GO_HOST,\n \"report-service\": GO_HOST,\n};\n\n/**\n * @description\n * Checking redirect form internal dashboard or not\n */\nexport const isInternal = () => {\n return get(\"redirectedFrom\") === \"internal_dashboard\";\n};\n\n/**\n * @description\n * adding organizationId to every request when login throw internal dashboard\n */\nconst getParams = (params, api) => {\n let organization = getSession().organization;\n const organizationId =\n new URL(window.location).searchParams.get(\"organizationId\") ||\n (organization && organization.id);\n if (api.includes(\"/account-service/user\")) {\n params.isOwner = 1;\n }\n params.organizationId = organizationId + \"\";\n let parameters = { ...params };\n return parameters;\n};\n\n// const possibleExceptions = ['validation exception', 'auth exception', 'model exception', 'resource not found', 'invalid request', 'server error']\nclass API {\n constructor({ url }) {\n this.signal = axios.CancelToken.source();\n this.guid = new URL(window.location).searchParams.get(\"guid\");\n if (url && url[0] === \"/\") {\n // Get the host based on the service\n const service = url.split(\"/\")[1];\n const api = ServiceHostMapping[service];\n this.url = api + url;\n } else {\n this.url = url;\n }\n }\n get(params = {}, headers = {}) {\n if (this.guid) {\n params.guid = this.guid;\n }\n return call(this.url, \"GET\", params, this.signal.token, headers);\n }\n post(params = {}, headers = {}) {\n return call(this.url, \"POST\", params, this.signal.token, headers);\n }\n put(params = {}, headers = {}) {\n return call(this.url, \"PUT\", params, this.signal.token, headers);\n }\n delete(params = {}, headers = {}) {\n return call(this.url, \"DELETE\", params, this.signal.token, headers);\n }\n cancel() {\n return this.signal.cancel(\"API call cancelling\");\n }\n}\n\nfunction call(api, method, params, signal, headers) {\n if (isInternal() && !(params instanceof FormData)) {\n params = { ...params, ...getParams(params, api) };\n }\n let options = {\n method: method,\n headers: {},\n };\n if (\n isExtensionEnabled(\"MultiLingualSupport\") &&\n api &&\n api.includes(\"/catalogue-service/\")\n ) {\n options.headers[\"Accept-Language\"] = get(\"dataLang\") || \"en\";\n }\n if (\n isExtensionEnabled(\"MultiLingualSupport\") &&\n api &&\n api.includes(\"/account-service/store\")\n ) {\n options.headers[\"Accept-Language\"] = get(\"dataLang\") || \"en\";\n }\n if (\n isExtensionEnabled(\"MultiLingualSupport\") &&\n api &&\n api.includes(\"/recipe-service/\")\n ) {\n options.headers[\"Accept-Language\"] = get(\"dataLang\") || \"en\";\n }\n options.headers = { ...options.headers, ...headers };\n\n switch (method) {\n case \"GET\":\n let querystring = \"\";\n if (params) {\n for (let key in params) {\n if (params[key]) {\n querystring +=\n (querystring.length ? \"&\" : \"\") +\n key +\n \"=\" +\n encodeURIComponent(params[key]);\n }\n }\n }\n options.headers[\"Content-Type\"] =\n \"application/x-www-form-urlencoded;charset=UTF-8\";\n api = api + (querystring ? \"?\" + querystring : \"\");\n break;\n case \"PUT\":\n options.headers[\"Content-Type\"] = \"application/json\";\n options.body = JSON.stringify(params);\n break;\n case \"POST\":\n options.headers[\"Content-Type\"] = \"application/json\";\n options.body = JSON.stringify(params);\n if (params instanceof FormData) {\n delete options.headers[\"Content-Type\"];\n options.body = params;\n }\n break;\n case \"DELETE\":\n options.headers[\"Content-Type\"] = \"application/json\";\n options.body = JSON.stringify(params);\n break;\n default:\n break;\n }\n\n let host = api.split(\"/\", 3).join(\"/\") + \"/api\";\n let sendAccessToken = host === GO_HOST;\n let accessToken = getAuthToken();\n\n if (api.includes(\"/logistics-service/delivery-area\")) {\n options.headers[\"X-API-VERSION\"] = 2;\n }\n\n if (params?.guid) {\n options.headers[\"Authorization\"] = \"Bearer \" + params.guid;\n set(\"token\", params.guid);\n } else if (sendAccessToken && accessToken) {\n options.headers[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n return axios({\n url: api,\n method: method.toLowerCase(),\n headers: options.headers,\n data: options.body,\n validateStatus: (status) => {\n return checkHttpResponseCode(status);\n },\n responseType: \"json\",\n cancelToken: signal,\n })\n .then((response) => {\n return Promise.resolve(response.data);\n })\n .catch((error) => {\n if (axios.isCancel(error)) {\n return Promise.reject({\n message: \"cancelled\",\n });\n }\n return Promise.reject({\n code: error.response && error.response.data && error.response.data.code,\n message:\n error.response && error.response.data && error.response.data.message,\n url: api,\n method: method,\n });\n });\n}\n\nexport default API;\n","import React, { Component } from \"react\";\nimport \"./style.css\";\n\nimport HELLIP from \"./horizontal-ellipsis.svg\";\nimport VELLIP from \"./vertical-ellipsis.svg\";\n\nclass DropDown extends Component {\n constructor(props) {\n super(props);\n this.state = {\n expanded: false,\n };\n this.toggle = this.toggle.bind(this);\n this.handleClick = this.handleClick.bind(this);\n }\n toggle(e) {\n e && e.preventDefault();\n this.setState({\n expanded: !this.state.expanded,\n });\n }\n hide(e) {\n e && e.preventDefault();\n this.setState({\n expanded: false,\n });\n }\n handleClick(e) {\n if (this.dropdownRef.contains(e.target)) {\n if (this.toggleRef.contains(e.target)) {\n // The toggle handle was clicked\n this.toggle();\n } else if (e.target.classList.contains(\"dropdown-item\")) {\n // An item was clicked\n this.hide();\n }\n } else if (this.state.expanded) {\n // Click was outside the dropdown. Close the menu if it was open\n this.hide();\n }\n }\n componentDidMount() {\n window.addEventListener(\"click\", this.handleClick);\n }\n componentWillUnmount() {\n window.removeEventListener(\"click\", this.handleClick);\n }\n render() {\n const { dropdownHeading, children } = this.props;\n let icon = (\n {\n this.toggleRef = node;\n }}\n >\n ▼\n \n );\n if (this.props.icon) {\n icon = (\n {\n this.toggleRef = node;\n }}\n >\n {this.props.value || \"\"}\n {this.props.icon}\n \n );\n }\n return (\n {\n this.dropdownRef = node;\n }}\n onClick={this.props?.onClick}\n >\n {icon}\n \n {dropdownHeading}\n
{children}
\n \n \n );\n }\n}\n\nfunction DropDownItem(props) {\n const additionalClassName = props.className ? props.className : \"\";\n return (\n \n {props.children}\n \n );\n}\n\nconst ICONS = {\n HELLIP,\n VELLIP,\n};\n\nexport { DropDown, DropDownItem, ICONS };\n","import Dialog from \"./Dialog\";\nimport Popup from \"./Popup\";\n\nexport { Dialog, Popup };\n","const set = (key, data) => {\n if (key && data) {\n window.localStorage.setItem(key, data);\n return true;\n }\n console.error(\"Parameter Error - Please check set method\");\n return false;\n};\n\nconst get = (key) => {\n if (key) {\n return window.localStorage.getItem(key);\n }\n console.error(\"Parameter Error - Please check get method.\");\n return false;\n};\n\nconst unset = (key) => {\n if (key) {\n window.localStorage.removeItem(key);\n return true;\n }\n console.error(\"Parameter Error - Please check unset method.\");\n return false;\n};\n\nexport { set, get, unset };\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport \"./style.css\";\n\nconst Loader = function (props) {\n let radiusMapping = {\n sm: 10,\n md: 15,\n lg: 25,\n };\n let size = props.size && props.size in radiusMapping ? props.size : \"lg\";\n let r = radiusMapping[size];\n return (\n
\n \n \n \n
\n );\n};\n\nLoader.propTypes = {\n size: PropTypes.oneOf([\"sm\", \"md\", \"lg\"]),\n};\n\nexport default Loader;\n","import moment from \"moment\";\nimport { getMessage } from \"../translator\";\nimport { isExtensionEnabled, getStores } from \"../auth\";\nimport { getStandradDateTime, utcToLocalTime } from \"../datetime\";\nimport isEmpty from \"lodash.isempty\";\nimport { getPrintableTime } from \"../datetime\";\nimport { getSession } from \"../auth\";\nimport { get } from \"../storage\";\n\nfunction sortSlotTypesAvailability(slots) {\n if (!slots) {\n return null;\n }\n return slots.sort((slot1, slot2) => {\n if (slot1.interval < slot2.interval) {\n return -1;\n } else {\n return 1;\n }\n });\n}\n\nfunction sortSlotsAvailability(slots) {\n if (!slots) {\n return null;\n }\n if (!Array.isArray(slots)) {\n return slots;\n }\n let asapSlots = slots.filter((slot) => slot.type === \"ASAP\");\n let stdSlots = slots.filter((slot) => slot.type === \"STANDARD\");\n asapSlots = sortSlotTypesAvailability(asapSlots);\n stdSlots = sortSlotTypesAvailability(stdSlots);\n return asapSlots.concat(stdSlots);\n}\n\nfunction sortAsapSlots(slots) {\n if (!slots) {\n return null;\n }\n return slots.sort((slot1, slot2) => {\n if (slot1.endTime < slot2.endTime) {\n return -1;\n } else {\n return 1;\n }\n });\n}\n\nfunction sortStandardSlots(slots) {\n if (!slots) {\n return null;\n }\n return slots.sort((slot1, slot2) => {\n if (slot1.startTime < slot2.startTime) {\n return -1;\n } else {\n return 1;\n }\n });\n}\n\nfunction sortSlots(slots) {\n if (!slots) {\n return null;\n }\n if (!Array.isArray(slots)) {\n return slots;\n }\n let asapSlots = slots.filter((slot) => slot.type === \"ASAP\");\n let stdSlots = slots.filter((slot) => slot.type === \"STANDARD\");\n asapSlots = sortAsapSlots(asapSlots);\n stdSlots = sortStandardSlots(stdSlots);\n return asapSlots.concat(stdSlots);\n}\n\nfunction getDisplaySlot(slot) {\n if (!slot) {\n return null;\n }\n if (slot.type === \"ASAP\") {\n return `${getMessage(\"asapDurationStartText\")} ${getMinutes(\n slot.endTime\n )} ${getMessage(\"asapDurationEndText\")}`;\n } else {\n return `${\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${slot.startTime}`\n )\n ).split(\",\")[1]\n } - ${\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${slot.endTime}`\n )\n ).split(\",\")[1]\n }`;\n }\n}\n\n// Takes array of slot objects and returns the text and value needed for select options\nfunction slotSelectOptions(slots) {\n if (!slots) {\n return [];\n }\n slots = sortSlots(slots);\n return slots.map((slot) => {\n return {\n text: getDisplaySlot(slot),\n value: slot.id,\n };\n });\n}\n\n// Takes time in 01:40:00 and returns 100 (60 + 40 mins)\nfunction getMinutes(his) {\n if (!his) {\n return \"\";\n }\n var a = his.split(\":\");\n return +a[0] * 60 + +a[1];\n}\n\nfunction getAsapDuration(startTime, endTime) {\n if (!startTime || !endTime) {\n return \"\";\n }\n let momentStartTime = moment(startTime, \"h:mma\");\n let momentEndTime = moment(endTime, \"h:mma\");\n if (momentStartTime.isBefore(momentEndTime)) {\n return `${getMessage(\"asapDurationStartText\")} ${momentEndTime.diff(\n momentStartTime,\n \"minutes\"\n )} ${getMessage(\"asapDurationEndText\")}`;\n } else {\n return `${getMessage(\"asapDurationStartText\")} ${\n 1440 - momentStartTime.diff(momentEndTime, \"minutes\")\n } ${getMessage(\"asapDurationEndText\")}`;\n }\n}\n\nfunction getTimes() {\n let times = [];\n for (let i = 0; i <= 23; i++) {\n if (i < 10) {\n times.push(`0${i}:00`);\n times.push(`0${i}:30`);\n } else {\n times.push(`${i}:00`);\n times.push(`${i}:30`);\n }\n }\n return times;\n}\n\nfunction getDisplayAddress(givenAddress, sequence) {\n if (!givenAddress) {\n return null;\n }\n // Todo: Find an efficient way to do this for all keys\n let fieldsToDelete = [\n \"id\",\n \"latitude\",\n \"longitude\",\n \"clientId\",\n \"metaData\",\n \"FirstName\",\n \"LastName\",\n ];\n let address = Object.assign({}, givenAddress);\n let pin = address.pincode;\n pin = pin && pin.toString().padStart(6, 0);\n let endAddress = {\n address: address.address || \"\",\n landmark: address.landmark,\n city: address.city,\n pincode: pin,\n };\n if (isExtensionEnabled(\"EntityMetaData\")) {\n if (sequence && address.metaData) {\n let seqAddress = {};\n sequence.forEach((key) => {\n if (key === \"Address\") {\n seqAddress.address = givenAddress.address;\n }\n seqAddress[key] = address.metaData[key];\n });\n address = Object.assign({}, { ...seqAddress }, endAddress);\n } else {\n address = Object.assign({}, { ...address.metaData }, endAddress);\n }\n } else {\n address = Object.assign({}, endAddress);\n }\n fieldsToDelete.forEach((field) => {\n delete address[field];\n });\n return Object.values(address).filter(Boolean).join(\", \");\n}\n\n// converts camelcase to regular english sentence\nfunction camelToReading(word) {\n if (!word) {\n return \"\";\n }\n return word\n .replace(/([A-Z])/g, \" $1\")\n .replace(/^./, (str) => str.toUpperCase());\n}\n\n// converts word another word to Word Another Word\nfunction toTitleCase(word) {\n if (!word) {\n return \"\";\n }\n return word\n .toLowerCase()\n .split(\" \")\n .map((s) => s.charAt(0).toUpperCase() + s.substring(1))\n .join(\" \");\n}\n\nfunction storeSelection() {\n const stores = getStores() || [];\n return stores.map((store) => {\n return {\n text: store.name,\n value: store.id,\n };\n });\n}\n\nfunction getProductName(product) {\n if (!product) {\n return \"\";\n }\n let name = product.fullName || product.name;\n if (product.brand) {\n return `${product.brand.name} ${name}`;\n } else {\n return name;\n }\n}\n\nfunction getProductImage(product) {\n if (!product) {\n return \"\";\n }\n if (product.images && product.images.length) {\n return product.images[0];\n }\n let variant =\n product.variants && product.variants.filter((variant) => variant.images)[0];\n if (variant) {\n return variant.images && variant.images[0];\n }\n return \"\";\n}\n\n// All sorted order status that are there\nconst getSortedOrderStatus = () => {\n let sortedStatues = [\"PENDING\"];\n if (isExtensionEnabled(\"InStoreProcessing\")) {\n sortedStatues = sortedStatues.concat([\n \"PICKING\",\n \"PICKED\",\n \"CHECKING\",\n \"CHECKED\",\n \"PACKING\",\n \"PACKED\",\n ]);\n }\n if (isExtensionEnabled(\"LogisticsSupport\")) {\n sortedStatues = sortedStatues.concat([\"DISPATCHED\"]);\n }\n sortedStatues = sortedStatues.concat([\"COMPLETED\", \"CANCELLED\"]);\n if (isExtensionEnabled(\"OrderReturns\")) {\n sortedStatues = sortedStatues.concat([\"RETURNED\"]);\n }\n return sortedStatues;\n};\n\nconst allStatuses = [\n \"PENDING\",\n \"PICKING\",\n \"PARTIALLY-PICKED\",\n \"PICKED\",\n \"CHECKING\",\n \"CHECKED\",\n \"PACKING\",\n \"PACKED\",\n \"DISPATCHED\",\n \"COMPLETED\",\n \"CANCELLED\",\n \"RETURNED\",\n];\n\nconst getSelectOrderStatus = () => {\n let allStatuses = getSortedOrderStatus();\n return allStatuses.map((status) => {\n return {\n text: getMessage(status),\n value: status,\n };\n });\n};\n\n// If we give an array of statuses then this function gives the statuses in sequence\nconst sortOrderStatus = (statuses = []) => {\n const allStatuses = getSortedOrderStatus();\n return allStatuses\n .map((status) => {\n if (statuses.indexOf(status) > -1) {\n return status;\n }\n return false;\n })\n .filter(Boolean);\n};\n\nfunction hasDuplicates(array) {\n return new Set(array).size !== array.length;\n}\n\nconst getCountryList = () => {\n return [\n { name: \"Afghanistan\", code: \"AF\" },\n { name: \"Ã…land Islands\", code: \"AX\" },\n { name: \"Albania\", code: \"AL\" },\n { name: \"Algeria\", code: \"DZ\" },\n { name: \"American Samoa\", code: \"AS\" },\n { name: \"AndorrA\", code: \"AD\" },\n { name: \"Angola\", code: \"AO\" },\n { name: \"Anguilla\", code: \"AI\" },\n { name: \"Antarctica\", code: \"AQ\" },\n { name: \"Antigua and Barbuda\", code: \"AG\" },\n { name: \"Argentina\", code: \"AR\" },\n { name: \"Armenia\", code: \"AM\" },\n { name: \"Aruba\", code: \"AW\" },\n { name: \"Australia\", code: \"AU\" },\n { name: \"Austria\", code: \"AT\" },\n { name: \"Azerbaijan\", code: \"AZ\" },\n { name: \"Bahamas\", code: \"BS\" },\n { name: \"Bahrain\", code: \"BH\" },\n { name: \"Bangladesh\", code: \"BD\" },\n { name: \"Barbados\", code: \"BB\" },\n { name: \"Belarus\", code: \"BY\" },\n { name: \"Belgium\", code: \"BE\" },\n { name: \"Belize\", code: \"BZ\" },\n { name: \"Benin\", code: \"BJ\" },\n { name: \"Bermuda\", code: \"BM\" },\n { name: \"Bhutan\", code: \"BT\" },\n { name: \"Bolivia\", code: \"BO\" },\n { name: \"Bosnia and Herzegovina\", code: \"BA\" },\n { name: \"Botswana\", code: \"BW\" },\n { name: \"Bouvet Island\", code: \"BV\" },\n { name: \"Brazil\", code: \"BR\" },\n { name: \"British Indian Ocean Territory\", code: \"IO\" },\n { name: \"Brunei Darussalam\", code: \"BN\" },\n { name: \"Bulgaria\", code: \"BG\" },\n { name: \"Burkina Faso\", code: \"BF\" },\n { name: \"Burundi\", code: \"BI\" },\n { name: \"Cambodia\", code: \"KH\" },\n { name: \"Cameroon\", code: \"CM\" },\n { name: \"Canada\", code: \"CA\" },\n { name: \"Cape Verde\", code: \"CV\" },\n { name: \"Cayman Islands\", code: \"KY\" },\n { name: \"Central African Republic\", code: \"CF\" },\n { name: \"Chad\", code: \"TD\" },\n { name: \"Chile\", code: \"CL\" },\n { name: \"China\", code: \"CN\" },\n { name: \"Christmas Island\", code: \"CX\" },\n { name: \"Cocos (Keeling) Islands\", code: \"CC\" },\n { name: \"Colombia\", code: \"CO\" },\n { name: \"Comoros\", code: \"KM\" },\n { name: \"Congo\", code: \"CG\" },\n { name: \"Congo, The Democratic Republic of the\", code: \"CD\" },\n { name: \"Cook Islands\", code: \"CK\" },\n { name: \"Costa Rica\", code: \"CR\" },\n { name: \"Cote D'Ivoire\", code: \"CI\" },\n { name: \"Croatia\", code: \"HR\" },\n { name: \"Cuba\", code: \"CU\" },\n { name: \"Cyprus\", code: \"CY\" },\n { name: \"Czech Republic\", code: \"CZ\" },\n { name: \"Denmark\", code: \"DK\" },\n { name: \"Djibouti\", code: \"DJ\" },\n { name: \"Dominica\", code: \"DM\" },\n { name: \"Dominican Republic\", code: \"DO\" },\n { name: \"Ecuador\", code: \"EC\" },\n { name: \"Egypt\", code: \"EG\" },\n { name: \"El Salvador\", code: \"SV\" },\n { name: \"Equatorial Guinea\", code: \"GQ\" },\n { name: \"Eritrea\", code: \"ER\" },\n { name: \"Estonia\", code: \"EE\" },\n { name: \"Ethiopia\", code: \"ET\" },\n { name: \"Falkland Islands (Malvinas)\", code: \"FK\" },\n { name: \"Faroe Islands\", code: \"FO\" },\n { name: \"Fiji\", code: \"FJ\" },\n { name: \"Finland\", code: \"FI\" },\n { name: \"France\", code: \"FR\" },\n { name: \"French Guiana\", code: \"GF\" },\n { name: \"French Polynesia\", code: \"PF\" },\n { name: \"French Southern Territories\", code: \"TF\" },\n { name: \"Gabon\", code: \"GA\" },\n { name: \"Gambia\", code: \"GM\" },\n { name: \"Georgia\", code: \"GE\" },\n { name: \"Germany\", code: \"DE\" },\n { name: \"Ghana\", code: \"GH\" },\n { name: \"Gibraltar\", code: \"GI\" },\n { name: \"Greece\", code: \"GR\" },\n { name: \"Greenland\", code: \"GL\" },\n { name: \"Grenada\", code: \"GD\" },\n { name: \"Guadeloupe\", code: \"GP\" },\n { name: \"Guam\", code: \"GU\" },\n { name: \"Guatemala\", code: \"GT\" },\n { name: \"Guernsey\", code: \"GG\" },\n { name: \"Guinea\", code: \"GN\" },\n { name: \"Guinea-Bissau\", code: \"GW\" },\n { name: \"Guyana\", code: \"GY\" },\n { name: \"Haiti\", code: \"HT\" },\n { name: \"Heard Island and Mcdonald Islands\", code: \"HM\" },\n { name: \"Holy See (Vatican City State)\", code: \"VA\" },\n { name: \"Honduras\", code: \"HN\" },\n { name: \"Hong Kong\", code: \"HK\" },\n { name: \"Hungary\", code: \"HU\" },\n { name: \"Iceland\", code: \"IS\" },\n { name: \"India\", code: \"IN\" },\n { name: \"Indonesia\", code: \"ID\" },\n { name: \"Iran, Islamic Republic Of\", code: \"IR\" },\n { name: \"Iraq\", code: \"IQ\" },\n { name: \"Ireland\", code: \"IE\" },\n { name: \"Isle of Man\", code: \"IM\" },\n { name: \"Israel\", code: \"IL\" },\n { name: \"Italy\", code: \"IT\" },\n { name: \"Jamaica\", code: \"JM\" },\n { name: \"Japan\", code: \"JP\" },\n { name: \"Jersey\", code: \"JE\" },\n { name: \"Jordan\", code: \"JO\" },\n { name: \"Kazakhstan\", code: \"KZ\" },\n { name: \"Kenya\", code: \"KE\" },\n { name: \"Kiribati\", code: \"KI\" },\n { name: \"Korea, Democratic People'S Republic of\", code: \"KP\" },\n { name: \"Korea, Republic of\", code: \"KR\" },\n { name: \"Kuwait\", code: \"KW\" },\n { name: \"Kyrgyzstan\", code: \"KG\" },\n { name: \"Lao People'S Democratic Republic\", code: \"LA\" },\n { name: \"Latvia\", code: \"LV\" },\n { name: \"Lebanon\", code: \"LB\" },\n { name: \"Lesotho\", code: \"LS\" },\n { name: \"Liberia\", code: \"LR\" },\n { name: \"Libyan Arab Jamahiriya\", code: \"LY\" },\n { name: \"Liechtenstein\", code: \"LI\" },\n { name: \"Lithuania\", code: \"LT\" },\n { name: \"Luxembourg\", code: \"LU\" },\n { name: \"Macao\", code: \"MO\" },\n { name: \"Macedonia, The Former Yugoslav Republic of\", code: \"MK\" },\n { name: \"Madagascar\", code: \"MG\" },\n { name: \"Malawi\", code: \"MW\" },\n { name: \"Malaysia\", code: \"MY\" },\n { name: \"Maldives\", code: \"MV\" },\n { name: \"Mali\", code: \"ML\" },\n { name: \"Malta\", code: \"MT\" },\n { name: \"Marshall Islands\", code: \"MH\" },\n { name: \"Martinique\", code: \"MQ\" },\n { name: \"Mauritania\", code: \"MR\" },\n { name: \"Mauritius\", code: \"MU\" },\n { name: \"Mayotte\", code: \"YT\" },\n { name: \"Mexico\", code: \"MX\" },\n { name: \"Micronesia, Federated States of\", code: \"FM\" },\n { name: \"Moldova, Republic of\", code: \"MD\" },\n { name: \"Monaco\", code: \"MC\" },\n { name: \"Mongolia\", code: \"MN\" },\n { name: \"Montserrat\", code: \"MS\" },\n { name: \"Morocco\", code: \"MA\" },\n { name: \"Mozambique\", code: \"MZ\" },\n { name: \"Myanmar\", code: \"MM\" },\n { name: \"Namibia\", code: \"NA\" },\n { name: \"Nauru\", code: \"NR\" },\n { name: \"Nepal\", code: \"NP\" },\n { name: \"Netherlands\", code: \"NL\" },\n { name: \"Netherlands Antilles\", code: \"AN\" },\n { name: \"New Caledonia\", code: \"NC\" },\n { name: \"New Zealand\", code: \"NZ\" },\n { name: \"Nicaragua\", code: \"NI\" },\n { name: \"Niger\", code: \"NE\" },\n { name: \"Nigeria\", code: \"NG\" },\n { name: \"Niue\", code: \"NU\" },\n { name: \"Norfolk Island\", code: \"NF\" },\n { name: \"Northern Mariana Islands\", code: \"MP\" },\n { name: \"Norway\", code: \"NO\" },\n { name: \"Oman\", code: \"OM\" },\n { name: \"Pakistan\", code: \"PK\" },\n { name: \"Palau\", code: \"PW\" },\n { name: \"Palestinian Territory, Occupied\", code: \"PS\" },\n { name: \"Panama\", code: \"PA\" },\n { name: \"Papua New Guinea\", code: \"PG\" },\n { name: \"Paraguay\", code: \"PY\" },\n { name: \"Peru\", code: \"PE\" },\n { name: \"Philippines\", code: \"PH\" },\n { name: \"Pitcairn\", code: \"PN\" },\n { name: \"Poland\", code: \"PL\" },\n { name: \"Portugal\", code: \"PT\" },\n { name: \"Puerto Rico\", code: \"PR\" },\n { name: \"Qatar\", code: \"QA\" },\n { name: \"Reunion\", code: \"RE\" },\n { name: \"Romania\", code: \"RO\" },\n { name: \"Russian Federation\", code: \"RU\" },\n { name: \"RWANDA\", code: \"RW\" },\n { name: \"Saint Helena\", code: \"SH\" },\n { name: \"Saint Kitts and Nevis\", code: \"KN\" },\n { name: \"Saint Lucia\", code: \"LC\" },\n { name: \"Saint Pierre and Miquelon\", code: \"PM\" },\n { name: \"Saint Vincent and the Grenadines\", code: \"VC\" },\n { name: \"Samoa\", code: \"WS\" },\n { name: \"San Marino\", code: \"SM\" },\n { name: \"Sao Tome and Principe\", code: \"ST\" },\n { name: \"Saudi Arabia\", code: \"SA\" },\n { name: \"Senegal\", code: \"SN\" },\n { name: \"Serbia and Montenegro\", code: \"CS\" },\n { name: \"Seychelles\", code: \"SC\" },\n { name: \"Sierra Leone\", code: \"SL\" },\n { name: \"Singapore\", code: \"SG\" },\n { name: \"Slovakia\", code: \"SK\" },\n { name: \"Slovenia\", code: \"SI\" },\n { name: \"Solomon Islands\", code: \"SB\" },\n { name: \"Somalia\", code: \"SO\" },\n { name: \"South Africa\", code: \"ZA\" },\n { name: \"South Georgia and the South Sandwich Islands\", code: \"GS\" },\n { name: \"Spain\", code: \"ES\" },\n { name: \"Sri Lanka\", code: \"LK\" },\n { name: \"Sudan\", code: \"SD\" },\n { name: \"Suriname\", code: \"SR\" },\n { name: \"Svalbard and Jan Mayen\", code: \"SJ\" },\n { name: \"Swaziland\", code: \"SZ\" },\n { name: \"Sweden\", code: \"SE\" },\n { name: \"Switzerland\", code: \"CH\" },\n { name: \"Syrian Arab Republic\", code: \"SY\" },\n { name: \"Taiwan, Province of China\", code: \"TW\" },\n { name: \"Tajikistan\", code: \"TJ\" },\n { name: \"Tanzania, United Republic of\", code: \"TZ\" },\n { name: \"Thailand\", code: \"TH\" },\n { name: \"Timor-Leste\", code: \"TL\" },\n { name: \"Togo\", code: \"TG\" },\n { name: \"Tokelau\", code: \"TK\" },\n { name: \"Tonga\", code: \"TO\" },\n { name: \"Trinidad and Tobago\", code: \"TT\" },\n { name: \"Tunisia\", code: \"TN\" },\n { name: \"Turkey\", code: \"TR\" },\n { name: \"Turkmenistan\", code: \"TM\" },\n { name: \"Turks and Caicos Islands\", code: \"TC\" },\n { name: \"Tuvalu\", code: \"TV\" },\n { name: \"Uganda\", code: \"UG\" },\n { name: \"Ukraine\", code: \"UA\" },\n { name: \"United Arab Emirates\", code: \"AE\" },\n { name: \"United Kingdom\", code: \"GB\" },\n { name: \"United States\", code: \"US\" },\n { name: \"United States Minor Outlying Islands\", code: \"UM\" },\n { name: \"Uruguay\", code: \"UY\" },\n { name: \"Uzbekistan\", code: \"UZ\" },\n { name: \"Vanuatu\", code: \"VU\" },\n { name: \"Venezuela\", code: \"VE\" },\n { name: \"Viet Nam\", code: \"VN\" },\n { name: \"Virgin Islands, British\", code: \"VG\" },\n { name: \"Virgin Islands, U.S.\", code: \"VI\" },\n { name: \"Wallis and Futuna\", code: \"WF\" },\n { name: \"Western Sahara\", code: \"EH\" },\n { name: \"Yemen\", code: \"YE\" },\n { name: \"Zambia\", code: \"ZM\" },\n { name: \"Zimbabwe\", code: \"ZW\" },\n ];\n};\n\nconst getLanguages = () => {\n return [\n {\n name: \"Arabic\",\n code: \"ar\",\n },\n {\n name: \"Pashto\",\n code: \"ps\",\n },\n {\n name: \"Swedish\",\n code: \"sv\",\n },\n {\n name: \"Albanian\",\n code: \"sq\",\n },\n {\n name: \"Catalan\",\n code: \"ca\",\n },\n {\n name: \"Portuguese\",\n code: \"pt\",\n },\n {\n name: \"Spanish\",\n code: \"es\",\n },\n {\n name: \"Armenian\",\n code: \"hy\",\n },\n {\n name: \"Dutch\",\n code: \"nl\",\n },\n {\n name: \"German\",\n code: \"de\",\n },\n {\n name: \"Azerbaijani\",\n code: \"az\",\n },\n {\n name: \"Bengali\",\n code: \"bn\",\n },\n {\n name: \"Belarusian\",\n code: \"be\",\n },\n {\n name: \"French\",\n code: \"fr\",\n },\n {\n name: \"Dzongkha\",\n code: \"dz\",\n },\n {\n name: \"Bosnian\",\n code: \"bs\",\n },\n {\n name: \"Norwegian\",\n code: \"no\",\n },\n {\n name: \"Malay\",\n code: \"ms\",\n },\n {\n name: \"Bulgarian\",\n code: \"bg\",\n },\n {\n name: \"Khmer\",\n code: \"km\",\n },\n {\n name: \"Chinese\",\n code: \"zh\",\n },\n {\n name: \"Croatian\",\n code: \"hr\",\n },\n {\n name: \"Greek (modern)\",\n code: \"el\",\n },\n {\n name: \"Czech\",\n code: \"cs\",\n },\n {\n name: \"Danish\",\n code: \"da\",\n },\n {\n name: \"Tigrinya\",\n code: \"ti\",\n },\n {\n name: \"Estonian\",\n code: \"et\",\n },\n {\n name: \"Amharic\",\n code: \"am\",\n },\n {\n name: \"Faroese\",\n code: \"fo\",\n },\n {\n name: \"Finnish\",\n code: \"fi\",\n },\n {\n name: \"Georgian\",\n code: \"ka\",\n },\n {\n name: \"Kalaallisut\",\n code: \"kl\",\n },\n {\n name: \"Latin\",\n code: \"la\",\n },\n {\n name: \"Hungarian\",\n code: \"hu\",\n },\n {\n name: \"Icelandic\",\n code: \"is\",\n },\n {\n name: \"Hindi\",\n code: \"hi\",\n },\n {\n name: \"Indonesian\",\n code: \"id\",\n },\n {\n name: \"Persian (Farsi)\",\n code: \"fa\",\n },\n {\n name: \"Irish\",\n code: \"ga\",\n },\n {\n name: \"Hebrew (modern)\",\n code: \"he\",\n },\n {\n name: \"Italian\",\n code: \"it\",\n },\n {\n name: \"Japanese\",\n code: \"ja\",\n },\n {\n name: \"Kazakh\",\n code: \"kk\",\n },\n {\n name: \"Kyrgyz\",\n code: \"ky\",\n },\n {\n name: \"Lao\",\n code: \"lo\",\n },\n {\n name: \"Latvian\",\n code: \"lv\",\n },\n {\n name: \"Lithuanian\",\n code: \"lt\",\n },\n {\n name: \"Macedonian\",\n code: \"mk\",\n },\n {\n name: \"Malaysian\",\n code: \"null\",\n },\n {\n name: \"Divehi\",\n code: \"dv\",\n },\n {\n name: \"Maltese\",\n code: \"mt\",\n },\n {\n name: \"Romanian\",\n code: \"ro\",\n },\n {\n name: \"Mongolian\",\n code: \"mn\",\n },\n {\n name: \"Serbian\",\n code: \"sr\",\n },\n {\n name: \"Burmese\",\n code: \"my\",\n },\n {\n name: \"Nepali\",\n code: \"ne\",\n },\n {\n name: \"Korean\",\n code: \"ko\",\n },\n {\n name: \"Polish\",\n code: \"pl\",\n },\n {\n name: \"Russian\",\n code: \"ru\",\n },\n {\n name: \"Kinyarwanda\",\n code: \"rw\",\n },\n {\n name: \"Samoan\",\n code: \"sm\",\n },\n {\n name: \"Slovak\",\n code: \"sk\",\n },\n {\n name: \"Slovene\",\n code: \"sl\",\n },\n {\n name: \"Somali\",\n code: \"so\",\n },\n {\n name: \"Afrikaans\",\n code: \"af\",\n },\n {\n name: \"Sinhalese\",\n code: \"si\",\n },\n {\n name: \"Tajik\",\n code: \"tg\",\n },\n {\n name: \"Swahili\",\n code: \"sw\",\n },\n {\n name: \"Thai\",\n code: \"th\",\n },\n {\n name: \"Turkish\",\n code: \"tr\",\n },\n {\n name: \"Turkmen\",\n code: \"tk\",\n },\n {\n name: \"Ukrainian\",\n code: \"uk\",\n },\n {\n name: \"Uzbek\",\n code: \"uz\",\n },\n {\n name: \"Bislama\",\n code: \"bi\",\n },\n {\n name: \"Vietnamese\",\n code: \"vi\",\n },\n {\n name: \"Tamil\",\n code: \"ta\",\n },\n {\n name: \"Tamil (India)\",\n code: \"ta-IN\",\n },\n {\n name: \"Gujarati\",\n code: \"gu\",\n },\n {\n name: \"Gujarati (India)\",\n code: \"gu-IN\",\n },\n {\n name: \"Kannada\",\n code: \"kn\",\n },\n {\n name: \"Kannada (India)\",\n code: \"kn-IN\",\n },\n {\n name: \"Marathi\",\n code: \"mr\",\n },\n {\n name: \"Marathi (India)\",\n code: \"mr-IN\",\n },\n {\n name: \"Punjabi\",\n code: \"pa\",\n },\n {\n name: \"Punjabi (India)\",\n code: \"pa-IN\",\n },\n {\n name: \"Sanskrit\",\n code: \"sa\",\n },\n {\n name: \"Sanskrit (India)\",\n code: \"sa-IN\",\n },\n {\n name: \"Telugu\",\n code: \"te\",\n },\n {\n name: \"Telugu (India)\",\n code: \"te-IN\",\n },\n {\n name: \"Malayalam\",\n code: \"ml\",\n },\n ];\n};\nconst roleMapping = [\n {\n name: \"PICKER\",\n redirect: \"/operations/picking-queue\",\n },\n {\n name: \"CHECKER\",\n redirect: \"/operations/picking-queue\",\n },\n {\n name: \"PACKER\",\n redirect: \"/operations/picking-queue\",\n },\n {\n name: \"DELIVERY AGENT\",\n redirect: \"/logistics/vehicles\",\n },\n {\n name: \"CS AGENT\",\n redirect: \"customer-support/dashboard\",\n },\n {\n name: \"CS MANAGER\",\n redirect: \"customer-support/dashboard\",\n },\n {\n name: \"Transport Coordinator\",\n redirect: \"/logistics/vehicles\",\n },\n {\n name: \"OPS Manager\",\n redirect: \"/operations/dashboard\",\n },\n {\n name: \"CONTENT MANAGER\",\n redirect: \"/catalogue/dashboard\",\n },\n {\n name: \"CONTENT WRITER\",\n redirect: \"/marketing/blog\",\n },\n {\n name: \"HR MANAGER\",\n redirect: \"/hr/employees\",\n },\n {\n name: \"MARKETING MANAGER\",\n redirect: \"/marketing/pages\",\n },\n {\n name: \"MARKETING EXECUTIVE\",\n redirect: \"/marketing/pages\",\n },\n {\n name: \"LOGISTICS MANAGER\",\n redirect: \"/logistics/vehicles\",\n },\n {\n name: \"STORE MANAGER\",\n redirect: \"/catalogue/dashboard\",\n },\n {\n name: \"PICKING MANAGER\",\n redirect: \"/operations/picking-queue\",\n },\n {\n name: \"Transport Coordinator\",\n redirect: \"/logistics/vehicles\",\n },\n {\n name: \"CASHIER\",\n redirect: \"/operations/orders\",\n },\n {\n name: \"ERC ORDER\",\n redirect: \"/operations/orders\",\n },\n {\n name: \"COMPLETE ORDER\",\n redirect: \"/operations/orders\",\n },\n];\n\nconst getStepValue = (num) => {\n if (num) {\n let stringifiedNum = String(num);\n\n let decimalDigits = stringifiedNum.split(\".\");\n\n if (decimalDigits.length > 1) {\n let decimalPlaces = decimalDigits[1].length;\n\n return 1 / Math.pow(10, decimalPlaces);\n }\n }\n};\n\nconst isAllRulesValid = (\n rules = [],\n requiredFields = [],\n itemDiscountType = \"COMBO_DISCOUNT\"\n) => {\n for (let i = 0; i < rules.length; i++) {\n for (let j = 0; j < requiredFields.length; j++) {\n if (\n itemDiscountType !== \"COMBO_DISCOUNT\" &&\n requiredFields[j] === \"total\"\n )\n continue;\n let value = rules[i][requiredFields[j]];\n if (!value) {\n return false;\n } else if (typeof value === \"object\" && isEmpty(value)) {\n return false;\n }\n }\n if (itemDiscountType !== \"COMBO_DISCOUNT\") {\n let products = rules[i].product;\n return products.every((product) => product.q && product.t && product.v);\n }\n }\n\n return true;\n};\n\nconst getNestedValues = function (obj, keys) {\n let stateReference = obj;\n while (keys.length) {\n if (\n stateReference &&\n [\"boolean\", \"string\", \"number\"].indexOf(typeof stateReference[keys[0]]) >\n -1\n ) {\n return stateReference[keys[0]];\n } else if (\n stateReference &&\n (stateReference[keys[0]] || stateReference[keys[0]] === \"\")\n ) {\n stateReference = stateReference[keys.shift()];\n } else {\n return null;\n }\n }\n return stateReference;\n};\n\nconst getSingularPluralForm = (number, singularForm = \"\", pluralForm) => {\n if (!number) {\n number = 0;\n }\n\n number = Number(number);\n\n const text =\n number +\n \" \" +\n (number > 1 ? pluralForm || `${singularForm}s` : singularForm);\n\n return text;\n};\n\nconst truncateToTwoDecimal = (num) =>\n parseFloat(num.toString().match(/^-?\\d+(?:\\.\\d{0,2})?/)?.[0]).toFixed(2);\n\nconst convertToISODuration = (data) => {\n const { type, frequency } = data;\n let duration = \"P\";\n\n switch (type) {\n case \"Year\":\n duration += `${frequency}Y`;\n break;\n case \"Month\":\n duration += `${frequency}M`;\n break;\n case \"Week\":\n duration += `${frequency}W`;\n break;\n case \"Day\":\n duration += `${frequency}D`;\n break;\n default:\n throw new Error(\"Invalid type\");\n }\n\n return duration;\n};\n\nconst parseISODuration = (duration) => {\n const regex = /^P(?:(\\d+)Y)?(?:(\\d+)M)?(?:(\\d+)W)?(?:(\\d+)D)?$/;\n const match = duration.match(regex);\n\n if (!match) {\n throw new Error(\"Invalid ISO 8601 duration format\");\n }\n\n const [, years, months, weeks, days] = match;\n\n if (years) {\n return { type: \"Year\", frequency: parseInt(years, 10) };\n } else if (months) {\n return { type: \"Month\", frequency: parseInt(months, 10) };\n } else if (weeks) {\n return { type: \"Week\", frequency: parseInt(weeks, 10) };\n } else if (days) {\n return { type: \"Day\", frequency: parseInt(days, 10) };\n } else {\n throw new Error(\"No valid duration found in the input string\");\n }\n};\n\nconst getSiteURL = () => {\n const sessionData = getSession();\n const organization = sessionData.organization;\n let siteUrl = organization?.domain;\n if (siteUrl) {\n let isHttpsEnabled = JSON.parse(get(\"organization\")).httpsEnabled;\n let protocol = isHttpsEnabled ? \"https://\" : \"http://\";\n const isPrefixInSiteUrl = siteUrl?.includes(\"http\");\n siteUrl = isPrefixInSiteUrl ? siteUrl : `${protocol}${siteUrl}`;\n }\n return siteUrl;\n};\n\nexport {\n roleMapping,\n getAsapDuration,\n sortAsapSlots,\n sortStandardSlots,\n sortSlots,\n getTimes,\n getCountryList,\n getDisplayAddress,\n getDisplaySlot,\n getMinutes,\n camelToReading,\n storeSelection,\n toTitleCase,\n getProductName,\n getProductImage,\n getLanguages,\n slotSelectOptions,\n sortSlotsAvailability,\n getSortedOrderStatus,\n getSelectOrderStatus,\n sortOrderStatus,\n allStatuses,\n hasDuplicates,\n getStepValue,\n isAllRulesValid,\n getNestedValues,\n getSingularPluralForm,\n truncateToTwoDecimal,\n convertToISODuration,\n parseISODuration,\n getSiteURL,\n};\n","import React, { Component } from \"react\";\nimport { getMessage } from \"../../../lib/translator\";\nimport \"./style.css\";\nimport ViewIcon from \"./view-icon.svg\";\nimport { getSession } from \"../../../lib/auth\";\nimport { get } from \"../../../lib/storage\";\n\nclass WebsiteLink extends Component {\n constructor(props) {\n super(props);\n this.getSiteUrl = this.getSiteUrl.bind(this);\n this.state = {\n siteUrl: \"\",\n };\n }\n\n getSiteUrl() {\n const organization = getSession().organization;\n let url = this.props.frontendUrl ?? organization?.domain;\n if (url) {\n let isHttpsEnabled = JSON.parse(get(\"organization\")).httpsEnabled;\n let protocol = isHttpsEnabled ? \"https://\" : \"http://\";\n this.setState({\n siteUrl: protocol + url,\n });\n }\n }\n\n componentDidMount() {\n this.getSiteUrl();\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.frontendUrl !== prevProps.frontendUrl) {\n this.getSiteUrl();\n }\n }\n\n render() {\n if (this.state.siteUrl) {\n return (\n \n
\n
\n
\n {getMessage(\"menu.item.website-link\")}{\" \"}\n
\n \"\"\n
\n
\n {this.state.siteUrl.split(\"/\")[2]}\n
\n
\n \n );\n }\n return null;\n }\n}\n\nexport default WebsiteLink;\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { getMessage } from \"../../lib/translator\";\nimport WebsiteLink from \"./WebsiteLink\";\n\nfunction createSlugFromName(name) {\n return name.replace(/\\s+/g, \"-\").toLowerCase();\n}\n\nfunction mouseEventListener(event) {\n let receivedElementName = event.target.nodeName;\n let hiddenSubmenuUlOffsetHeight = document.querySelector(\n \"#menu #hidden-menu .submenu ul\"\n )\n ? parseInt(\n document.querySelector(\"#menu #hidden-menu .submenu ul\").offsetHeight,\n 10\n )\n : 0;\n let hiddenSubmenuUl = document.querySelector(\n \"#menu #hidden-menu .submenu ul\"\n );\n let hiddenSubmenu = document.querySelector(\"#menu #hidden-menu .submenu\");\n if (receivedElementName === \"LI\") {\n if (event.target.querySelector(\".submenu ul\")) {\n let hoverSubmenuHeight = event.target.querySelector(\".submenu ul\")\n ? parseInt(event.target.querySelector(\".submenu ul\").offsetHeight, 10)\n : 0;\n let item = event.target.querySelector(\".submenu ul\")\n ? event.target.querySelector(\".submenu ul\").cloneNode(true)\n : null;\n if (item && hiddenSubmenuUlOffsetHeight < hoverSubmenuHeight) {\n hiddenSubmenuUl.remove();\n hiddenSubmenu.appendChild(item);\n }\n }\n } else if (receivedElementName === \"A\") {\n let parent = event.target.parentElement;\n if (parent) {\n let hoverSubmenuHeight = parent.querySelector(\".submenu ul\")\n ? parseInt(parent.querySelector(\".submenu ul\").offsetHeight, 10)\n : 0;\n let item = parent.querySelector(\".submenu ul\")\n ? parent.querySelector(\".submenu ul\").cloneNode(true)\n : null;\n if (item && hiddenSubmenuUlOffsetHeight < hoverSubmenuHeight) {\n hiddenSubmenuUl.remove();\n hiddenSubmenu.appendChild(item);\n }\n }\n }\n}\n\nexport default class MenuItem extends Component {\n /*\n TODO - It may be easier to use NavLink instead of Link, if we can refactor the html/css to use markup\n such that active class is added on links instead of list. If we can do this, then we can remove the higher\n order component WithRouter from Menu, as that is used just for active links calculation - NavLink directly\n provides this method.\n\n */\n constructor(props) {\n super(props);\n this.getSubmenu = this.getSubmenu.bind(this);\n }\n\n getSubmenu(activeText) {\n const { props } = this;\n const active = props.active.split(\"/\");\n return (\n
\n {props.info && }\n {\n
    \n {props.subMenu &&\n props.subMenu.map((text) => {\n let queryParam = \"\";\n if (text.includes(\"?\")) {\n const splitText = text.split(\"?\");\n queryParam = splitText[1];\n text = splitText[0];\n }\n return (\n \n \n {getMessage(`menu.item.${text}`)}\n \n \n );\n })}\n
  • \n \n
  • \n
\n }\n
\n );\n }\n\n render() {\n const { props } = this;\n let text = props.text;\n if (!text) {\n text = \"home\";\n }\n const className = \"icon-\" + createSlugFromName(text);\n const active = props.active.split(\"/\");\n const submenu = this.getSubmenu(text);\n\n return (\n \n \n {props.text ? getMessage(`menu.item.${props.text}`) : \"home\"}\n \n {submenu}\n \n );\n }\n}\n","import React from \"react\";\nimport menuIcon from \"./hamburger.svg\";\n\nexport default function NavigationDrawer(props) {\n return (\n \n );\n}\n","import React, { Component } from \"react\";\nimport { DropDown, DropDownItem } from \"../../DropDown\";\nimport { Link, Redirect } from \"react-router-dom\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { getSession, saveSession, isEnterprise } from \"../../../lib/auth\";\nimport API from \"../../../lib/api\";\nimport userImage from \"../images/customer-image-placeholder.svg\";\nimport { Upload } from \"../../Form\";\n\nimport \"./style.css\";\n\nfunction UserActions(props) {\n const className = props.active.split(\"/\")[1] === \"user\" ? \"active\" : \"\";\n const user = getSession().user;\n const enterprise = isEnterprise();\n if (!user) {\n return ;\n }\n let styles = {};\n if (user.imageUrl) {\n styles = {\n backgroundImage: `url(${user.imageUrl})`,\n backgroundSize: \"28px\",\n };\n }\n\n return (\n \n \n {props.userMenu && props.userMenu.length > 1 && (\n \n -1\n ? \"/user/change-password\"\n : \"/user\"\n }\n >\n {getMessage(\"menu.item.my-account\")}\n \n \n )}\n \n {getMessage(\"menu.item.logout\")}\n \n \n \n );\n}\n\nclass UserInfo extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showModal: false,\n };\n this.saveUser = this.saveUser.bind(this);\n }\n saveUser(value, error) {\n if (error) {\n console.error(error);\n }\n const userAPI = new API({ url: \"/account-service/me\" });\n userAPI\n .put({\n imageUrl: value,\n })\n .then(\n (response) => {\n saveSession({\n user: response.data.user,\n });\n this.setState({\n showModal: false,\n });\n },\n (error) => {\n console.error(error);\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n render() {\n const user = getSession().user;\n if (!user) {\n return ;\n }\n const email =\n user && user.emails && !!user.emails.length && user.emails[0].email;\n return (\n
\n
\n \n \n \n
\n
{user.name}
\n {email &&
{email}
}\n
\n );\n }\n}\n\nexport { UserActions, UserInfo };\n","import React, { Component } from \"react\";\nimport { DropDown, DropDownItem } from \"../../DropDown\";\nimport {\n setLocale,\n getLocale,\n getSupportedLanguages,\n getMessage,\n} from \"../../../lib/translator\";\nimport \"./style.css\";\nimport { withRouter } from \"react-router-dom\";\n\nclass LanguageSelector extends Component {\n changeLanguage(value) {\n setLocale({\n language: value,\n });\n const { history, location } = this.props;\n history.replace(location.pathname);\n }\n\n render() {\n let currentLang = getLocale()[\"language\"];\n let options = getSupportedLanguages();\n const dropdownHeading = (\n
\n {getMessage(\"menu.selectLanguage.heading\")}\n
\n );\n\n return (\n
\n \n
\n {options.map((option, index) => (\n \n {option.language}\n \n ))}\n
\n
\n
\n );\n }\n}\nexport default withRouter(LanguageSelector);\n","import React from \"react\";\nimport closeIcon from \"./close-icon.svg\";\nimport \"./style.css\";\n\nconst NotificationBox = (props) => {\n return (\n
\n
\n

{props.title}

\n \n
\n
{props.children}
\n
\n );\n};\n\nexport default NotificationBox;\n","import React, { Component, Fragment } from \"react\";\nimport NotificationBox from \"./NotificationBox\";\nimport Image from \"../../Image\";\nimport { getMessage } from \"../../../lib/translator\";\nimport notificationImage from \"./notification-empty.svg\";\nimport \"./style.css\";\n\nexport default class Notification extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showModal: false,\n };\n this.modalClose = this.modalClose.bind(this);\n this.showModal = this.showModal.bind(this);\n this.handleClick = this.handleClick.bind(this);\n }\n\n modalClose(event) {\n if (event) {\n event.stopPropagation();\n }\n this.setState({\n showModal: false,\n });\n }\n\n showModal() {\n this.state.showModal\n ? this.modalClose()\n : this.setState({ showModal: true });\n }\n\n handleClick(e) {\n if (\n !(\n this.toggleRef.contains(e.target) && e.target.className !== \"close-icon\"\n )\n ) {\n this.modalClose();\n }\n }\n\n componentDidMount() {\n window.addEventListener(\"click\", this.handleClick);\n }\n componentWillUnmount() {\n window.removeEventListener(\"click\", this.handleClick);\n }\n\n render() {\n return (\n \n {\n this.toggleRef = node;\n }}\n onClick={this.showModal}\n >\n {this.state.showModal ? (\n \n
\n
\n \n
\n
\n

{getMessage(\"menu.notificationToday.empty\")}

\n
\n
\n
\n ) : null}\n \n
\n );\n }\n}\n","import React, { Component } from \"react\";\nimport { DropDown, DropDownItem } from \"../../components/DropDown\";\nimport icon from \"./drop-down-arrow.svg\";\nimport { withRouter } from \"react-router-dom\";\nimport { isExtensionEnabled, getExtensionDetails } from \"../../lib/auth\";\nimport { getLanguages } from \"../../lib/commonlyused\";\nimport API from \"../../lib/api\";\nimport \"./style.css\";\n\nconst eng = { id: 0, name: \"English\", code: \"en\" };\nconst emptyArr = [];\n\nclass LanguageSelector extends Component {\n constructor(props) {\n super(props);\n this.state = {\n language: eng.code,\n };\n }\n changeLanguage(code) {\n if (code) {\n window.localStorage.setItem(\"dataLang\", code);\n }\n const { history, location } = this.props;\n history.replace(location.pathname);\n }\n componentDidMount() {\n let currentLang = window.localStorage.getItem(\"dataLang\");\n currentLang && this.setState({ language: currentLang });\n const extension = getExtensionDetails(\"MultiLingualSupport\");\n const id = extension && extension.id;\n if (id) {\n const api = new API({ url: `/account-service/extension/${id}` });\n api\n .get()\n .then((response) => {\n let availableLangs = [eng];\n let savedLangs =\n response.data.extension.config.globalConfig.languages;\n savedLangs &&\n savedLangs.map((lng, i) => {\n let language = getLanguages().find((lang) => lang.code === lng);\n if (language && language.name !== \"english\") {\n availableLangs.push({ id: i + 1, ...language });\n }\n return null;\n });\n this.setState({ availableLangs });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n componentWillMount() {\n if (isExtensionEnabled(\"MultiLingualSupport\")) {\n let allSubmenus = document.querySelectorAll(\n \"#menu ul.menu-items li .submenu\"\n );\n if (allSubmenus.length) {\n [].forEach.call(allSubmenus, (submenu) => {\n submenu.style.top = \"108px\";\n });\n }\n let userHoverSubmenu = document.querySelector(\".user-hover .submenu\");\n if (userHoverSubmenu) {\n userHoverSubmenu.style.top = \"108px\";\n }\n }\n }\n\n render() {\n let selectedLanguage = \"\";\n if (isExtensionEnabled(\"MultiLingualSupport\")) {\n let allSubmenus = document.querySelectorAll(\n \"#menu ul.menu-items li .submenu\"\n );\n if (allSubmenus.length) {\n [].forEach.call(allSubmenus, (submenu) => {\n submenu.style.top = \"108px\";\n });\n }\n let userHoverSubmenu = document.querySelector(\".user-hover .submenu\");\n if (userHoverSubmenu) {\n userHoverSubmenu.style.top = \"108px\";\n }\n selectedLanguage = (this.state.availableLangs || emptyArr).find(\n (lang) => lang.code === this.state.language\n );\n selectedLanguage = selectedLanguage && selectedLanguage.name;\n }\n return (\n isExtensionEnabled(\"MultiLingualSupport\") && (\n
\n
\n {selectedLanguage || eng.name}\n
\n } drop>\n {(this.state.availableLangs || emptyArr).map(\n ({ id, name, code }) => (\n this.changeLanguage(code)}\n >\n {name}\n \n )\n )}\n \n
\n )\n );\n }\n}\n\nexport default withRouter(LanguageSelector);\n","import React, { Component } from \"react\";\nimport \"./menu.css\";\nimport MenuItem from \"./menuItem\";\nimport { withRouter } from \"react-router-dom\";\nimport NavigationDrawer from \"./NavigationDrawer\";\nimport { UserActions, UserInfo } from \"./UserActions\";\nimport LanguageSelector from \"./LanguageSelector\";\nimport Notification from \"./Notification\";\nimport { GIT_HASH, GIT_TAG } from \"../../config/app\";\nimport { get, set } from \"./../../lib/storage\";\nimport StoreSelector, { getDefaultStore } from \"../../containers/StoreSelector\";\nimport LanguageDropDown from \"../../containers/LanguageDropDown\";\n\nclass Menu extends Component {\n componentDidMount() {\n const el = document.querySelector(\".menu-items\");\n const sidebar = document.querySelector(\".sidebar-content\");\n const activeLi = document.querySelector(\n \".sidebar-content ul.menu-items>li.active\"\n );\n el.addEventListener(\"mouseover\", (e) => {\n if (e.target.className === \"menu-items\") {\n if (get(\"zopsmart-menu-collapse\") === \"collapse-out\") {\n sidebar.classList.toggle(\"shrink\");\n } else {\n activeLi && activeLi.classList.toggle(\"showSubmenu\");\n }\n }\n });\n el.addEventListener(\"mouseout\", (e) => {\n if (e.target.className === \"menu-items\") {\n if (get(\"zopsmart-menu-collapse\") === \"collapse-out\") {\n sidebar.classList.toggle(\"shrink\");\n } else {\n activeLi && activeLi.classList.toggle(\"showSubmenu\");\n }\n }\n });\n }\n render() {\n const activeText = this.props.location.pathname.split(\"/\")[1];\n const activeSubMenu = this.props.items && this.props.items[activeText];\n const hoverSubmenuInfo = activeText === \"user\" ? UserInfo : null;\n const { props } = this;\n const menu = Object.keys(props.items).map((key) => {\n const subMenuInfo = key === \"user\" ? UserInfo : null;\n return (\n \n );\n });\n\n const MENU_KEY = \"zopsmart-menu-collapse\";\n\n return (\n
\n = 1024\n : window.innerWidth >= 1024\n }\n onClick={(e) => {\n set(MENU_KEY, e.target.checked ? \"collapse-in\" : \"collapse-out\");\n }}\n />\n
\n
    \n \n {menu}\n
\n
\n \n
\n
{GIT_TAG || GIT_HASH}
\n
\n \n \n \n
    \n \n
\n
\n
\n {props.stores && (\n props.onChange(e)}\n />\n )}\n {props.showLanguageDropDown && }\n
    \n \n
\n
\n
\n
\n );\n }\n}\n\nconst MenuWithRouter = withRouter(Menu); // Using Higher-order component to add router properties like location.\n\nexport default MenuWithRouter;\n\nexport { NavigationDrawer };\n","import React, { Component } from \"react\";\nimport { Redirect } from \"react-router-dom\";\nimport Menu, { NavigationDrawer } from \"../../components/Menu\";\nimport { getMessage } from \"../../lib/translator\";\nimport ErrorBoundary, { notifyBugsnag } from \"../../components/ErrorBoundary\";\nimport {\n isExtensionEnabled,\n getStores,\n setStores,\n getSession,\n} from \"../../lib/auth\";\nimport { set, get } from \"../../lib/storage\";\nimport API from \"../../lib/api\";\n// import VerifyEmailWarning from \"../../components/VerifyEmailWarning\";\n\nconst httpStatusMessages = {\n 403: getMessage(\"error.server.403\"),\n};\nexport default class AuthenticatedPage extends Component {\n constructor(props) {\n super(props);\n this.state = {\n error: \"\",\n httpStatus: 200,\n frontendUrl: \"\",\n };\n this.title = props.title;\n this.handleError = this.handleError.bind(this);\n }\n componentWillMount() {\n window.addEventListener(\"unhandledrejection\", this.handleError);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"unhandledrejection\", this.handleError);\n }\n\n componentDidMount() {\n if (isExtensionEnabled(\"MultiStoreSupport\")) {\n if (!getStores()) {\n const api = new API({ url: \"/account-service/store\" });\n api\n .get({ paginate: \"false\" })\n .then((response) => {\n let stores = response.data.store.reverse();\n let user = getSession() && getSession().user;\n if (user && user.stores && user.stores.length > 0) {\n stores = user.stores.reverse();\n setStores(stores);\n set(\"store\", stores[0].id);\n }\n setStores(stores);\n set(\"store\", stores[0].id);\n this.setState({\n stores,\n storeId: stores[0].id,\n });\n this.props.setApiParam && this.props.setApiParam(stores[0].id);\n })\n .catch((error) => {\n console.error(error);\n });\n } else {\n this.setState({\n stores: getStores(),\n });\n }\n } else {\n if (!get(\"store\")) {\n const orgId = getSession().organization && getSession().organization.id;\n if (orgId) {\n const api = new API({\n url: `/account-service/organization/${orgId}`,\n });\n api\n .get()\n .then((response) => {\n const storeId =\n response.data.organization.defaultStore &&\n response.data.organization.defaultStore.id;\n const stores = [response.data.organization.defaultStore];\n set(\"store\", storeId);\n setStores(stores);\n this.setState({\n storeId: storeId,\n stores,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n } else {\n this.setState({\n stores: getStores(),\n storeId: get(\"store\"),\n });\n }\n }\n this.basicConfigApi = new API({ url: \"/config-service/config/basic\" });\n this.basicConfigApi\n .get()\n .then((response) => {\n this.setState({\n frontendUrl: response?.data?.basic?.frontendUrl,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n handleError(e) {\n e.preventDefault();\n const newState = Object.assign({}, this.state);\n if (e.reason.code === 401) {\n newState.redirectToLogin = true;\n } else if (e.reason.message === \"cancelled\") {\n // do nothing\n } else {\n newState.httpStatus = e.reason.code;\n newState.error = e.reason.message;\n if (e.reason.code !== 401 && e.reason.code !== 403) {\n notifyBugsnag(e.reason.message || e, e.reason);\n }\n }\n console.error(e.reason.message);\n this.setState(newState);\n }\n\n updateStore(storeId) {\n this.setState(\n {\n storeId: storeId,\n },\n () => this.props.onChange && this.props.onChange()\n );\n }\n\n render() {\n const { props } = this;\n let menuProps = {\n items: props.menu,\n };\n if (props.storeDependent && isExtensionEnabled(\"MultiStoreSupport\")) {\n menuProps.stores = this.state.stores;\n menuProps.storeId = this.state.storeId;\n }\n if (props.showLanguageDropDown) {\n menuProps.showLanguageDropDown = true;\n }\n // const userData = JSON.parse(get(\"user\")) || {};\n // const isUserVerified =\n // userData?.isOwner &&\n // (userData?.verified || userData?.emails?.[0].verified);\n\n return this.state.redirectToLogin ? (\n \n ) : (\n
\n {/* {userData?.id && !isUserVerified && } */}\n \n {props.menu ? (\n this.updateStore(e)}\n />\n ) : null}\n
\n {props.menu ? : null}\n \n {this.state.error ? (\n
\n

{this.title}

\n {httpStatusMessages[this.state.httpStatus] ||\n getMessage(\"error.server\")}\n
\n ) : (\n props.children\n )}\n
\n
\n
\n \n );\n }\n}\n","import React from \"react\";\nimport placeholder from \"./image-placeholder.svg\";\n\nimport \"./style.css\";\n\nexport default function Image(props) {\n return (\n \n {props.alt}\n \n );\n}\n","/*\n This file exists in src/ folder due to limitations set by create-react-app\n*/\n\nlet GO_HOST = `${window.location.origin}/api`;\nif (window.location.host.includes(\"localhost\")) {\n GO_HOST = process.env.REACT_APP_API_HOST || \"https://staging.zopping.com/api\";\n}\n\nlet IS_STAGING = GO_HOST.includes(\"staging\");\nconst ZOPSMART_URL = \"https://zopsmart.com\";\nconst GOOGLE_MAP_DEFAULT_KEY = \"AIzaSyA6YlEVc6ic84ZWAh2RtlOVsZh8S3fA2pY\";\nlet GOOGLE_MAPS_URL = `https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places,drawing&key=`;\nconst WEBSOCKET_URL =\n process.env.REACT_APP_EVENTS_URL || \"wss://events.zopsmart.com/ws/store\";\nconst WEBSOCKET_BASE_URL =\n process.env.REACT_APP_INVOICE_EVENT_URL ||\n (IS_STAGING\n ? \"wss://events.staging.shop.tamimimarkets.com/ws/order-invoices\"\n : \"wss://events.shop.tamimimarkets.com/ws/order-invoices\");\nconst BUGSNAG_KEY = process.env.REACT_APP_BUGSNAG_KEY || \"\";\nconst ZOPSMART_MAPS_URL =\n process.env.REACT_APP_MAPS_URL || \"https://maps.zopping.com\";\nconst GIT_HASH = process.env.REACT_APP_GIT_HASH;\nconst GIT_TAG = process.env.REACT_APP_GIT_TAG;\nconst FARO_APP_NAME = IS_STAGING\n ? process.env.REACT_APP_FARO_APP_NAME || \"zopping-enterprise-admin-ui-stage\"\n : process.env.REACT_APP_FARO_APP_NAME || \"zopping-enterprise-admin-ui\";\nconst FARO_APP_URL =\n process.env.REACT_APP_FARO_APP_URL ||\n \"https://grafana-agent.observability-prod.gcp.zopsmart.com/collect\";\n\nexport {\n GO_HOST,\n ZOPSMART_URL,\n GOOGLE_MAPS_URL,\n BUGSNAG_KEY,\n WEBSOCKET_URL,\n ZOPSMART_MAPS_URL,\n GIT_HASH,\n GIT_TAG,\n IS_STAGING,\n GOOGLE_MAP_DEFAULT_KEY,\n FARO_APP_NAME,\n FARO_APP_URL,\n WEBSOCKET_BASE_URL,\n};\n","import React from \"react\";\nimport { SelectSearch } from \"../../../components/Form\";\nimport \"./style.css\";\nimport icon from \"../drop-down-arrow.svg\";\nimport { get } from \"../../../lib/storage\";\n\nclass StoreSelectorForm extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n defaultStore: this.props.selectedStore,\n selectedValue: \"\",\n showSelectSearch: false,\n options: this.props.stores || [],\n };\n\n this.handleClickOutside = this.handleClickOutside.bind(this);\n this.setWrapperRef = this.setWrapperRef.bind(this);\n this.onChange = this.onChange.bind(this);\n this.showSelectSearch = this.showSelectSearch.bind(this);\n this.hideSelectSearch = this.hideSelectSearch.bind(this);\n }\n\n setWrapperRef(node) {\n this.wrapperRef = node;\n }\n\n showSelectSearch() {\n this.setState({\n showSelectSearch: true,\n });\n }\n\n hideSelectSearch() {\n this.setState({\n selectedValue: \"\",\n showSelectSearch: false,\n });\n }\n\n handleClickOutside(event) {\n if (this.wrapperRef && !this.wrapperRef.contains(event.target)) {\n this.hideSelectSearch();\n }\n }\n\n onChange(val) {\n this.setState({\n selectedValue: val,\n });\n\n if (val) {\n let selectedStore = this.props.stores.filter(\n (store) => Number(store.id) === Number(val)\n );\n if (selectedStore && selectedStore.length > 0) {\n if (selectedStore[0].id === Number(get(\"store\"))) {\n this.hideSelectSearch();\n this.setState({\n defaultStore: selectedStore[0].name,\n });\n return;\n }\n this.props.updateStore(selectedStore[0].id, this.props.onChange);\n this.setState({\n defaultStore: selectedStore[0].name,\n });\n this.hideSelectSearch();\n }\n }\n }\n\n componentDidMount() {\n document.addEventListener(\"mousedown\", this.handleClickOutside);\n }\n\n componentWillUnmount() {\n document.removeEventListener(\"mousedown\", this.handleClickOutside);\n }\n\n render() {\n return this.state.showSelectSearch ? (\n \n
\n {this.state.defaultStore}\n
\n \n \n ) : (\n \n \n {this.state.defaultStore}\n \"dropdown\"\n \n \n );\n }\n}\n\nexport default StoreSelectorForm;\n","import React, { Component } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport Loader from \"../../components/Loader\";\nimport { DropDown, DropDownItem } from \"../../components/DropDown\";\nimport API from \"../../lib/api\";\nimport { isExtensionEnabled, getStores } from \"../../lib/auth\";\nimport { get, set } from \"../../lib/storage\";\nimport StoreSelectorForm from \"./Form\";\n\nimport icon from \"./drop-down-arrow.svg\";\nimport \"./style.css\";\n\nfunction makestoreDependentComponent(OriginalComponent) {\n return class storeDependentComponent extends Component {\n constructor(props) {\n super(props);\n this.hasMultiStoreSupport = isExtensionEnabled(\"MultiStoreSupport\");\n if (this.hasMultiStoreSupport) {\n this.state = {\n loading: false,\n error: false,\n stores: null,\n };\n }\n }\n componentWillMount() {\n if (this.hasMultiStoreSupport) {\n if (get(\"stores\")) {\n this.setState({\n stores: JSON.parse(get(\"stores\")),\n });\n } else {\n if (get(\"user\")) {\n let user = JSON.parse(get(\"user\"));\n if (user.stores && user.stores.length > 0) {\n this.setState({\n stores: user.stores,\n });\n } else {\n let api = new API({ url: \"/account-service/store\" });\n api\n .get({ paginate: \"false\" })\n .then((response) => {\n this.setState({ stores: response.data.store.reverse() });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n } else {\n let api = new API({ url: \"/account-service/store\" });\n api\n .get({ paginate: \"false\" })\n .then((response) => {\n this.setState({ stores: response.data.store.reverse() });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n }\n }\n render() {\n if (!this.hasMultiStoreSupport) {\n return ;\n }\n if (this.state.loading) {\n return ;\n }\n if (this.state.stores) {\n return ;\n }\n return null;\n }\n };\n}\n\nfunction getDefaultStore(stores) {\n let result = {};\n let orgStores = getStores();\n if (stores && stores.length && get(\"store\")) {\n let store = get(\"store\");\n result = {\n storeId: Number(store),\n };\n return result;\n }\n if (stores && stores.length) {\n result = {\n storeId: stores?.[0]?.id,\n };\n }\n if (orgStores && orgStores.length) {\n result = {\n storeId: orgStores?.[0]?.id,\n };\n }\n return result;\n}\n\nfunction updateStore(id, onChange) {\n set(\"store\", id);\n onChange(id);\n}\n\nexport default class StoreSelector extends Component {\n componentWillMount() {\n let allSubmenus = document.querySelectorAll(\n \"#menu ul.menu-items li .submenu\"\n );\n if (allSubmenus.length) {\n [].forEach.call(allSubmenus, (submenu) => {\n submenu.style.top = \"108px\";\n });\n }\n let userHoverSubmenu = document.querySelector(\".user-hover .submenu\");\n if (userHoverSubmenu) {\n userHoverSubmenu.style.top = \"108px\";\n }\n }\n\n render() {\n if (!this.props.stores || !this.props.value) {\n return null;\n }\n let stores = this.props.stores || [];\n const logistics = window.location.pathname.includes(\"logistics\");\n if (logistics) {\n stores = stores.filter((store) => store.hasDeliveryHub);\n }\n const operations = window.location.pathname.includes(\"operations\");\n if (operations) {\n stores = stores.filter(\n (store) => store?.hasPicking || store?.hasClickCollect\n );\n }\n let allSubmenus = document.querySelectorAll(\n \"#menu ul.menu-items li .submenu\"\n );\n if (allSubmenus.length) {\n [].forEach.call(allSubmenus, (submenu) => {\n submenu.style.top = \"108px\";\n });\n }\n let userHoverSubmenu = document.querySelector(\".user-hover .submenu\");\n if (userHoverSubmenu) {\n userHoverSubmenu.style.top = \"108px\";\n }\n let selectedStore = stores.filter(\n ({ id }) => id === Number(this.props.value)\n )[0];\n if (!selectedStore) {\n selectedStore = stores[0];\n selectedStore && set(\"store\", selectedStore.id);\n }\n if (!selectedStore) {\n selectedStore = {};\n }\n return ReactDOM.createPortal(\n stores && stores.length < 5 ? (\n
\n
\n {selectedStore.name}\n
\n } drop>\n {stores.map(({ id, name }) => (\n {\n if (parseInt(this.props.value, 10) === id) {\n return;\n }\n updateStore(id, this.props.onChange);\n }}\n >\n {name}\n \n ))}\n \n
\n ) : (\n \n ),\n document.getElementById(\"store-selector\")\n );\n }\n}\n\nexport { getDefaultStore, makestoreDependentComponent };\n","import cloneDeep from \"lodash.clonedeep\";\n\n/* State change bindings */\n// When using these methods, bind them to component's own context\nconst getNestedState = function (keys) {\n let stateReference = this.state;\n while (keys.length) {\n if (\n stateReference &&\n [\"boolean\", \"string\", \"number\"].indexOf(typeof stateReference[keys[0]]) >\n -1\n ) {\n return stateReference[keys[0]];\n } else if (\n stateReference &&\n (stateReference[keys[0]] || stateReference[keys[0]] === \"\")\n ) {\n stateReference = stateReference[keys.shift()];\n } else {\n return null;\n }\n }\n return stateReference;\n};\n\nconst updateStateRecursively = function (keys, value) {\n /*\n Just a method that can be used to update deeply nested state as well\n For example\n this.state['variants']['0']['price'] = value\n can be written as\n updateStateRecursively(['variants', 0, 'price'], value)\n */\n keys = keys.reverse();\n let _this = this;\n this.setState(function (prevState) {\n let newState = Object.assign({}, prevState);\n let propertyToChange = newState;\n while (keys.length) {\n if (keys.length === 1) {\n let lastKey = keys.pop();\n propertyToChange[lastKey] = value;\n break;\n } else {\n let key = keys.pop();\n // If the next key doesn't exist in the object, create an empty obj/arr\n let nextKey = keys.slice(-1).shift();\n if (\n nextKey !== undefined &&\n (propertyToChange[key] === undefined ||\n propertyToChange[key] === null)\n ) {\n if (typeof nextKey === \"number\") {\n propertyToChange[key] = [];\n } else {\n propertyToChange[key] = {};\n }\n }\n propertyToChange = propertyToChange[key];\n }\n }\n if (_this.props.events && _this.props.events.onChange) {\n _this.props.events.onChange(_this.state.values);\n }\n return newState;\n });\n};\n/* End of state change bindings */\n\n// Method to compare 2 values, including objects\nfunction compareValues(x, y) {\n // Compare primitives, or NaN\n if (Object.is(x, y)) {\n return true;\n }\n\n // Compare built-ins\n if (\n (typeof x === \"function\" && typeof y === \"function\") ||\n (x instanceof Date && y instanceof Date) ||\n (x instanceof RegExp && y instanceof RegExp) ||\n (x instanceof String && y instanceof String) ||\n (x instanceof Number && y instanceof Number)\n ) {\n return x.toString() === y.toString();\n }\n\n // Finally compare objects\n if (x instanceof Object && y instanceof Object) {\n let xkeys = Object.keys(x);\n let ykeys = Object.keys(y);\n if (xkeys.length !== ykeys.length) {\n return false;\n } else {\n return xkeys.reduce((acc, key) => {\n return acc && compareValues(x[key], y[key]);\n }, true);\n }\n }\n\n return false;\n}\n\nfunction cloneMutables(sourceValues) {\n // TODO: Get a way around this 'hack' to leave immutable structures untouched\n let result = Object.assign(\n {},\n ...Object.keys(sourceValues).map((key) => {\n if (\n sourceValues[key] instanceof Object &&\n \"_immutable\" in sourceValues[key]\n ) {\n return {\n [key]: sourceValues[key],\n };\n }\n return {\n [key]: cloneDeep(sourceValues[key]),\n };\n })\n );\n return result;\n}\n\nexport { cloneMutables, compareValues, getNestedState, updateStateRecursively };\n","import React from \"react\";\n\nfunction getValidationObj(DomNode) {\n let validationObj = DomNode.validity;\n let errors = {};\n for (let key in validationObj) {\n errors[key] = validationObj[key];\n }\n return errors;\n}\n\nclass Input extends React.Component {\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.runValidation = this.runValidation.bind(this);\n }\n runValidation(DomNode) {\n let transform =\n this.props.transformValidationHook ||\n function (_, validationObj) {\n return validationObj;\n };\n this.props.onValidation &&\n this.props.onValidation(transform(DomNode, getValidationObj(DomNode)));\n }\n handleChange(e) {\n e.preventDefault();\n let value =\n this.props.type === \"number\" && e.target.value\n ? Number(e.target.value)\n : e.target.value;\n this.props.onChange && this.props.onChange(value);\n this.runValidation(e.target);\n }\n handleBlur(e) {\n e.preventDefault();\n this.props.onBlur && this.props.onBlur();\n }\n componentDidMount() {\n this.runValidation(this.inputRef);\n }\n componentDidUpdate(prevProps) {\n if (prevProps.value !== this.props.value) {\n this.runValidation(this.inputRef);\n }\n if (prevProps.required !== this.props.required) {\n this.runValidation(this.inputRef);\n }\n if (prevProps.pattern !== this.props.pattern) {\n this.runValidation(this.inputRef);\n }\n }\n render() {\n let { props } = this;\n const icon = props.icon ? \" icon icon-\" + props.icon : \"\";\n let value = props.value;\n if (value !== 0 && !value) {\n value = \"\";\n }\n return (\n \n {props.prefix && (\n {props.prefix}\n )}\n {props.siblings && props.siblings.before ? props.siblings.before : null}\n {\n this.inputRef = node;\n }}\n className={props.readOnly ? \"focus-none\" : \"\"}\n />\n {props.siblings && props.siblings.after ? props.siblings.after : null}\n {props.suffix && {props.suffix}}\n \n );\n }\n}\n\nexport default Input;\n","import React, { Component } from \"react\";\nimport { Popup } from \"../../../Popup\";\nimport API from \"../../../../lib/api\";\nimport getFileExtensionFromUrl from \"../../../../utils/getFileExtensionFromUrl\";\nimport \"./style.css\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nfunction getValidationObj(props, image) {\n let valueMissing = props.required && !image;\n let result = {\n valueMissing,\n valid: !valueMissing,\n };\n return result;\n}\n\nclass Upload extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showImagePreviewModal: false,\n fileUploading: false,\n file: \"\",\n fileBlob: \"\",\n showError: false,\n errorMessage: \"\",\n };\n this.readURL = this.readURL.bind(this);\n this.handleModalClose = this.handleModalClose.bind(this);\n this.confirmFileUpload = this.confirmFileUpload.bind(this);\n this.runValidation = this.runValidation.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.handleClick = this.handleClick.bind(this);\n }\n\n runValidation(image) {\n this.props.onValidation &&\n this.props.onValidation(getValidationObj(this.props, image));\n }\n\n componentDidMount() {\n this.runValidation(this.props.value);\n }\n\n handleBlur(e) {\n e.preventDefault();\n this.props.onBlur && this.props.onBlur();\n }\n\n readURL(e) {\n e.preventDefault();\n e.stopPropagation();\n if (e.target.files && e.target.files[0]) {\n const file = e.target.files[0];\n let reader = new window.FileReader();\n reader.onloadend = () => {\n let state = {\n fileBlob: reader.result,\n showImagePreviewModal: true,\n file: file,\n };\n // file validations\n if (\n file.size > this.props.maxFileSize ||\n !this.props?.accept?.split(\",\")?.includes(file.type)\n ) {\n state[\"showError\"] = true;\n state[\"errorMessage\"] =\n file.size > this.props.maxFileSize\n ? this.props.validationStrings?.fileSizeExeeded\n : this.props.validationStrings?.invalidFileType;\n } else {\n state[\"showError\"] = false;\n }\n this.setState(state);\n };\n reader.readAsDataURL(file);\n }\n }\n\n handleClick() {\n this.uploadInputRef.value = null;\n }\n\n handleModalClose() {\n this.setState({\n showImagePreviewModal: false,\n showError: false,\n });\n }\n\n confirmFileUpload(e) {\n e.preventDefault();\n const { fileUpload, resolutions } = this.props;\n const file = this.state.file;\n const isVideoUpload = file.type.includes(\"video\");\n\n this.setState({\n fileUploading: true,\n });\n\n const api = new API({ url: \"/media-service/image-upload\" });\n const videoApi = new API({ url: \"/media-service/video-upload\" });\n const fileUploadApi = new API({ url: \"/media-service/file\" });\n\n // Handle multiple resolution groups (array) or a single resolution group\n const resolutionGroups = Array.isArray(resolutions?.[0])\n ? resolutions\n : [resolutions];\n\n const createFormData = resolutionGroup => {\n let data = new window.FormData();\n data.append(\"imageUpload\", file);\n if (this.props.resize === false) {\n data.append(\"resize\", false);\n }\n if (resolutionGroup) {\n data.append(\"resolutions\", JSON.stringify(resolutionGroup));\n }\n return data;\n };\n\n let data = new window.FormData();\n if (fileUpload) {\n data.append(\"fileUpload\", file);\n } else if( file.type === \"image/gif\"){\n data.append(\"fileUpload\", file);\n data.append(\"bucketType\", \"public\");\n }else if (isVideoUpload) {\n data.append(\"videoUpload\", file);\n } else {\n data.append(\"imageUpload\", file);\n }\n if (this.props.resize === false) {\n data.append(\"resize\", false);\n }\n\n // Function to handle API error\n const handleError = error => {\n if (error.code === 401) {\n throw error;\n }\n this.setState({\n showError: true,\n errorMessage: error.message ?? \"Error while uploading file\",\n fileUploading: false,\n });\n };\n\n if (fileUpload || file.type === \"image/gif\") {\n fileUploadApi.post(data).then((response) => {\n this.props.onChange(response.data);\n this.setState({\n showImagePreviewModal: false,\n showError: false,\n fileUploading: false,\n });\n this.runValidation(response.data.accessUrl);\n }, handleError);\n } else if (isVideoUpload) {\n videoApi.post(data).then(response => {\n const res = response.data?.videoUrl?.url || \"\";\n this.props.onChange(res);\n this.setState({\n showImagePreviewModal: false,\n showError: false,\n fileUploading: false,\n });\n this.runValidation(res);\n }, handleError);\n } else if (resolutions) {\n const uploadPromises = resolutionGroups?.map(resolutionGroup =>\n api.post(createFormData(resolutionGroup))\n );\n\n Promise.all(uploadPromises)\n .then(responses => {\n const successResults = responses.map(response =>\n resolutions ? response.data : response.data.imageUpload.url\n );\n\n const data = {\n imageUpload: {\n url: successResults[0]?.imageUpload?.url ?? successResults?.[0],\n resizedUrls: {\n ...(successResults[0]?.imageUpload?.resizedUrls ?? null),\n ...(successResults[1]?.imageUpload?.resizedUrls ?? null),\n },\n },\n };\n this.props.onChange(data);\n this.setState({\n showImagePreviewModal: false,\n showError: false,\n fileUploading: false,\n });\n this.runValidation(successResults.length ? successResults : null);\n })\n .catch(error => {\n handleError(error);\n });\n } else {\n api.post(data).then(response => {\n //passing response.data to onChange if we have different resized images for different resolutions\n let res;\n res = response.data.imageUpload.url;\n this.props.onChange(res);\n this.setState({\n showImagePreviewModal: false,\n showError: false,\n fileUploading: false,\n });\n this.runValidation(res);\n }, handleError);\n }\n }\n\n render() {\n const {\n name,\n required,\n placeholder,\n value,\n accept,\n fileUpload,\n resolutions,\n showCloseIcon,\n handleRemove,\n } = this.props;\n const uploadedImageUrl = resolutions\n ? value?.imageUpload?.url ?? value ?? \"\"\n : value?.accessUrl ?? value?.imageUpload?.url ?? value ?? \"\";\n const isVideo = this.state?.file?.type?.includes(\"video\");\n const previewBlob = this.state?.fileBlob;\n return (\n
\n \n {this.state.showError && (\n
\n {this.state.errorMessage}\n
\n )}\n {fileUpload && this.state.file.type === \"application/pdf\" ? (\n \n ) : isVideo ? (\n
\n );\n }\n}\n\nUpload.defaultProps = {\n accept:\n \"image/jpeg,image/jpg,image/png,image/webp,video/mp4,video/mov,video/mkv,image/gif\",\n maxFileSize: \"10485760\",\n validationStrings: {\n fileSizeExeeded: getMessage(\"input.fileSizeExeeded\"),\n invalidFileType: getMessage(\"input.invalidFileType\"),\n },\n};\n\nexport default Upload;\n","import React, { Component } from \"react\";\nimport previousIcon from \"./previous.svg\";\nimport nextIcon from \"./next.svg\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport debounce from \"lodash/debounce\";\n\nclass ImageSlider extends Component {\n constructor(props) {\n super(props);\n this.state = {\n images: this.props.images || [],\n currentIndex: 0,\n scrollWidth: 0,\n };\n this.goToImage = this.goToImage.bind(this);\n this.setWidth = this.setWidth.bind(this);\n this.resizeWidth = debounce(this.resizeWidth.bind(this), 350);\n this.handleTouchMove = this.handleTouchMove.bind(this);\n this.handleTouchEnd = this.handleTouchEnd.bind(this);\n this.handleTouchStart = this.handleTouchStart.bind(this);\n }\n handleTouchEnd() {\n let { start, end } = this.state;\n if (start && end) {\n // to avoid nextslide call on single touch\n if (start - end < 0) {\n this.goToImage(\"previous\");\n } else {\n this.goToImage(\"next\");\n }\n }\n this.setState({\n start: 0,\n end: 0,\n });\n }\n\n handleTouchStart(event) {\n this.setState({ start: event.touches[0].clientX });\n }\n\n handleTouchMove(event) {\n this.setState({ end: event.touches[event.touches.length - 1].clientX });\n }\n goToImage(button) {\n const sliderContainer = this.refs.slider;\n const containerOffsetWidth = sliderContainer.offsetWidth;\n const containerScrollWidth = sliderContainer.scrollWidth;\n if (containerScrollWidth < 254) {\n return;\n }\n if (button === \"next\") {\n if (\n containerOffsetWidth + Math.abs(this.state.scrollWidth) <=\n containerScrollWidth\n ) {\n this.setState(\n {\n scrollWidth: this.state.scrollWidth - 254,\n currentIndex: this.state.currentIndex + 1,\n },\n () => {\n sliderContainer.style.transform = `translateX(${this.state.scrollWidth}px)`;\n }\n );\n }\n } else {\n if (this.state.scrollWidth < 0) {\n this.setState(\n {\n scrollWidth: this.state.scrollWidth + 254,\n currentIndex: this.state.currentIndex - 1,\n },\n () => {\n sliderContainer.style.transform = `translateX(${this.state.scrollWidth}px)`;\n }\n );\n }\n }\n }\n\n setWidth() {\n const sliderContainer = this.refs.slider;\n const containerOffsetWidth = sliderContainer.offsetWidth;\n const containerScrollWidth = sliderContainer.scrollWidth;\n this.setState({\n containerOffsetWidth: containerOffsetWidth,\n containerScrollWidth: containerScrollWidth,\n });\n }\n\n resizeWidth() {\n this.setWidth();\n }\n\n componentDidMount() {\n this.setWidth();\n window.addEventListener(\"resize\", this.resizeWidth, false);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.resizeWidth, false);\n }\n\n componentWillReceiveProps({ images }) {\n this.setWidth();\n this.setState({ images: images });\n }\n\n render() {\n const {\n containerOffsetWidth,\n containerScrollWidth,\n scrollWidth,\n currentIndex,\n } = this.state;\n return (\n
\n {containerOffsetWidth < containerScrollWidth ||\n this.state.images.length > 2 ? (\n this.goToImage(\"previous\")}\n disabled={scrollWidth === 0}\n >\n \"previous\"\n \n ) : (\n \n )}\n
\n \n {this.state.images &&\n this.state.images.map((data, index, arr) => (\n
\n {data.uploading ? (\n
\n {getMessage(\"product.form.imageUpload.uploading\")}\n
\n ) : null}\n {data.error ? (\n
\n {getMessage(\"product.form.imageUpload.error\")}\n
\n ) : null}\n {\n if (\n arr.length - 1 === index ||\n arr.length - 2 === index\n ) {\n this.setState(\n { scrollWidth: this.state.scrollWidth + 254 },\n this.goToImage()\n );\n }\n this.props.removeItem(index);\n }}\n >\n ×\n
\n \"\"\n
\n ))}\n
\n \n {containerOffsetWidth < containerScrollWidth ||\n this.state.images.length > 2 ? (\n this.goToImage(\"next\")}\n disabled={\n (containerOffsetWidth + Math.abs(scrollWidth) >=\n containerScrollWidth &&\n this.state.images.length < 2) ||\n (currentIndex === this.state.images.length - 2 &&\n (containerOffsetWidth === 492 || containerOffsetWidth === 0))\n }\n >\n \"next\"\n \n ) : (\n \n )}\n \n );\n }\n}\n\nexport default ImageSlider;\n","import React, { Component } from \"react\";\nimport { Popup } from \"../../../Popup\";\nimport API from \"../../../../lib/api\";\nimport { compareValues } from \"../../../../lib/stateManagement\";\n\nimport \"./style.css\";\nimport placeholderIcon from \"./imageUpload.svg\";\nimport ImageSlider from \"../../../../pages/catalogue/Products/Form/ImageSlider\";\n\n/* TODOs\n 1. If any image is uploading, mark it as invalid. validity.isUploading = true (?)\n*/\n\nfunction getValidationObj(props, value) {\n // Initial value for reduce method\n let initialState = {\n valueMissing: Boolean(props.required),\n isUploading: false,\n };\n initialState.valid = !initialState.valueMissing && !initialState.isUploading;\n let individualValidations = value.map((data) => {\n let isUploading = Boolean(data.uploading);\n let valid = !isUploading;\n return {\n isUploading,\n valid,\n };\n });\n let validation = individualValidations.reduce((validation, acc) => {\n let valueMissing = false; // False, because this loop ran because there was an item\n let isUploading = validation.isUploading || acc.isUploading;\n let valid = !valueMissing && !isUploading;\n return {\n valueMissing,\n isUploading,\n valid,\n };\n }, initialState);\n return validation;\n}\n\nfunction upload(file) {\n // Upload file to server\n return new Promise((resolve, reject) => {\n let data = new window.FormData();\n data.append(\"imageUpload\", file);\n const api = new API({ url: \"/media-service/image-upload\" });\n api\n .post(data)\n .then((response) => {\n resolve(response.data.imageUpload.url);\n }, reject)\n .catch((error) => {\n console.error(error);\n reject(error);\n });\n });\n}\n\n/* Use this method to test image upload without making a call to the server */\n// function upload (file) {\n// return new Promise((resolve, reject) => {\n// window.setTimeout(() => {\n// console.log('Image was uploaded to server')\n// resolve(placeholderIcon)\n// }, 2000)\n// })\n// }\n\nclass ImageUpload extends Component {\n constructor(props) {\n super(props);\n this.state = this.deriveStateFromProps(props, {\n images: [],\n });\n this.handleFileSelection = this.handleFileSelection.bind(this);\n this.confirmFileSelection = this.confirmFileSelection.bind(this);\n this.resetInputRef = this.resetInputRef.bind(this);\n this.clearFileSelection = this.clearFileSelection.bind(this);\n this.removeItem = this.removeItem.bind(this);\n this.uploadFiles = this.uploadFiles.bind(this);\n this.triggerValidation = this.triggerValidation.bind(this);\n this.registerChange = this.registerChange.bind(this);\n }\n triggerValidation() {\n let validation = getValidationObj(this.props, this.state.images);\n this.props.onValidation && this.props.onValidation(validation);\n }\n registerChange() {\n this.props.onChange &&\n this.props.onChange(\n this.state.images.map((data) => data.url).filter(Boolean)\n );\n this.triggerValidation();\n }\n parseFile(file) {\n return new Promise((resolve, reject) => {\n var reader = new window.FileReader();\n reader.onloadend = () => {\n resolve({\n file,\n blob: reader.result,\n });\n };\n reader.onerror = reject;\n reader.readAsDataURL(file);\n });\n }\n handleFileSelection(e) {\n e && e.preventDefault();\n // When user has selected files from file browser\n let files = Array.prototype.slice.call(e.target.files);\n // Parse files as data URLs and show them in a dialog window to confirm\n if (files.length) {\n Promise.all(files.map(this.parseFile)).then((selectedFiles) => {\n this.setState({ selectedFiles });\n });\n }\n }\n resetInputRef() {\n this.inputRef.value = null;\n }\n confirmFileSelection(e) {\n e && e.preventDefault();\n // First set these items into current state\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n if (this.props.singleImage) {\n newState.images = [\n Object.assign({}, prevState.selectedFiles[0], {\n uploading: false,\n uid: Symbol(\"uid\"),\n }),\n ];\n } else {\n prevState.selectedFiles.forEach((selectedFile) => {\n newState.images.push(\n Object.assign({}, selectedFile, {\n uploading: false,\n uid: Symbol(\"uid\"),\n })\n );\n });\n }\n newState.selectedFiles = null;\n return newState;\n }, this.uploadFiles);\n this.resetInputRef();\n }\n uploadFiles() {\n let filesToUpload = this.state.images.filter(\n (image) => !image.url && !image.uploading\n );\n filesToUpload.forEach((image) => {\n this.setState(\n (prevState) => {\n let newState = Object.assign({}, prevState);\n let index = prevState.images.findIndex(\n (data) => data.uid === image.uid\n );\n if (index > -1) {\n newState.images[index].uploading = true;\n }\n return newState;\n },\n () => {\n this.triggerValidation();\n upload(image.file).then(\n (url) => {\n let { uid } = image;\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n let index = prevState.images.findIndex(\n (image) => image.uid === uid\n );\n if (index > -1) {\n newState.images[index].url = url;\n newState.images[index].uploading = false;\n }\n return newState;\n }, this.registerChange);\n },\n (error) => {\n let { uid } = image;\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n let index = prevState.images.findIndex(\n (image) => image.uid === uid\n );\n if (index > -1) {\n newState.images[index].uploading = false;\n newState.images[index].error = error;\n }\n return newState;\n }, this.triggerValidation);\n }\n );\n }\n );\n });\n }\n clearFileSelection(e) {\n e && e.preventDefault();\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.selectedFiles = null;\n return newState;\n });\n this.resetInputRef();\n }\n removeItem(index) {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.images = [\n ...prevState.images.slice(0, index),\n ...prevState.images.slice(index + 1),\n ];\n return newState;\n }, this.registerChange);\n }\n deriveStateFromProps(props, oldState) {\n let newState = Object.assign({}, oldState);\n // How to update a given state from an updated set up of props\n if (props.value) {\n let newValues;\n if (Array.isArray(props.value)) {\n newValues = props.value;\n } else {\n newValues = [props.value];\n }\n if (!props.multiple) {\n newValues = newValues.slice(0, 1);\n }\n newState.images = newValues.map((value) => {\n // If an image in the props exists in the state, merge the data\n // from both sources, else just accept new image URL\n let objInState = oldState.images.find(({ url }) => url === value);\n let result = Object.assign({}, objInState, {\n url: value,\n uploading: false,\n });\n return result;\n });\n // If any images are still uploading, keep them in the state\n newState.images = [\n ...newState.images,\n ...oldState.images.filter(({ uploading }) => uploading),\n ];\n } else {\n newState.images = [];\n }\n return newState;\n }\n componentWillReceiveProps(newProps) {\n // Update current state depending on change of `props.value`\n if (!compareValues(newProps.value, this.props.value)) {\n // TODO: Use immutable data structures to do this in a better way\n this.setState((prevState) =>\n this.deriveStateFromProps(newProps, prevState)\n );\n }\n }\n componentDidMount() {\n this.triggerValidation();\n }\n render() {\n // TODO: Add support for replacing default messages with localized strings\n const { singleImage, disabled } = this.props;\n const { images } = this.state;\n return (\n
\n \n {singleImage && images?.[0] ? null : (\n
\n {\n this.inputRef = inputRef;\n }}\n type=\"file\"\n name=\"logo\"\n required={this.props.required}\n multiple={this.props.multiple}\n onChange={this.handleFileSelection}\n disabled={disabled}\n />\n
\n
\n \n
\n {this.props.placeholder +\n ((this.props.required && !this.props.label && \" *\") ||\n \"\")}\n
\n
\n
\n
\n )}\n {this.state.images.length ? (\n !this.props.isProductCreatePage ? (\n
\n {this.state.images.map((data, index) => (\n
\n {data.uploading ? (\n
Uploading...
\n ) : null}\n {data.error ? (\n
Error in uploading
\n ) : null}\n {!disabled && (\n {\n this.removeItem(index);\n }}\n >\n ×\n
\n )}\n \"\"\n
\n ))}\n
\n ) : (\n \n )\n ) : null}\n {this.state.selectedFiles ? (\n \n
\n {this.state.selectedFiles.map((image, index) => (\n \"\"\n ))}\n
\n
\n \n Confirm\n \n
\n \n ) : null}\n \n \n );\n }\n}\n\nexport default ImageUpload;\n","import React, { Component } from \"react\";\nimport _Phone from \"react-phone-number-input\";\nimport \"react-phone-number-input/style.css\";\nimport { getSession } from \"../../../../lib/auth\";\nimport \"./override.css\";\n\nfunction getValidationObj(props, value) {\n let valueMissing = props.required ? !value : false;\n return {\n valueMissing,\n valid: !valueMissing,\n };\n}\n\nclass Phone extends Component {\n constructor(props) {\n super(props);\n this.org = getSession().organization || {};\n this.handleChange = this.handleChange.bind(this);\n this.runValidation = this.runValidation.bind(this);\n this.state = {\n defaultCountryCode: this.org?.countryCode || \"IN\",\n };\n }\n\n handleChange(value) {\n this.props.onChange && this.props.onChange(value);\n this.runValidation(value);\n }\n\n runValidation(value) {\n this.props.onValidation &&\n this.props.onValidation(getValidationObj(this.props, value));\n }\n\n componentDidMount() {\n this.runValidation(this.props.value);\n }\n\n componentDidUpdate(prevProps, prevState) {\n const updatedLocalOrgData = getSession().organization || {};\n if (prevState.defaultCountryCode !== updatedLocalOrgData?.countryCode) {\n this.setState({ defaultCountryCode: updatedLocalOrgData?.countryCode });\n }\n }\n\n render() {\n let {\n emphasize,\n onValidation,\n showErrors,\n onChange,\n country,\n required = false,\n label,\n placeholder,\n ...props\n } = this.props;\n let PhoneInput = _Phone;\n return (\n \n );\n }\n}\n\nexport default Phone;\n","import React, { Component } from \"react\";\nimport Loader from \"../../../../components/Loader\";\nimport searchIcon from \"./icon-search.svg\";\nimport \"./style.css\";\nimport API from \"../../../../lib/api\";\nimport debounce from \"../../../../lib/debounce\";\nimport { isEqual } from \"lodash\";\nimport {\n SortableContainer,\n SortableElement,\n arrayMove,\n} from \"react-sortable-hoc\";\n\nfunction getValidationObj(props, value) {\n let valueMissing = props.required && !value;\n if (props.required && props.multiple) {\n valueMissing = valueMissing || !value || !value.length;\n }\n let result = {\n valueMissing,\n valid: !valueMissing,\n };\n return result;\n}\n\nconst SortableItem = SortableElement((props) => {\n return (\n
\n \n \n {props.displaySelectedValue\n ? props.displaySelectedValue(props.value)\n : props.value[props.nameKey]}\n \n \n {\n props.onSelect(props.value);\n }}\n />\n
\n );\n});\n\nconst SortableList = SortableContainer((props) => {\n const items = props.items || [];\n return (\n
    \n {items &&\n Array.isArray(items) &&\n items.map((value, index) => (\n \n ))}\n
\n );\n});\n\nclass Searchable extends Component {\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n this.runValidation = this.runValidation.bind(this);\n this.state = {\n options: [],\n searchText: \"\",\n selectedValue: props.value,\n loading: false,\n creating: false,\n };\n this.api = new API({ url: props.searchUrl });\n this.selectSearch = debounce(this.selectSearch.bind(this), 300);\n this.search = this.selectSearch;\n this.onSelect = this.onSelect.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n this.onSortEnd = this.onSortEnd.bind(this);\n this.apiHeaders = this.props.apiHeaders || {};\n }\n\n onSortEnd({ oldIndex, newIndex }) {\n this.setState(\n ({ selectedValue }) => ({\n selectedValue: arrayMove(selectedValue, oldIndex, newIndex),\n }),\n () => {\n this.props.onChange(this.state.selectedValue);\n }\n );\n }\n\n runValidation(value) {\n this.props.onValidation &&\n this.props.onValidation(getValidationObj(this.props, value));\n }\n\n onSelect(option) {\n let selectedValue = option;\n if (this.props.multiple) {\n selectedValue = [...(this.state.selectedValue || [])];\n // This should toggle the option from selectedValue\n let index = selectedValue.findIndex(\n (listOption) =>\n listOption[this.props.valueKey] === option[this.props.valueKey]\n );\n if (index > -1) {\n selectedValue.splice(index, 1);\n } else {\n selectedValue = [...selectedValue, option];\n }\n }\n this.setState(\n {\n options: [],\n lastRequest: \"\",\n searchText: \"\",\n pressedEnter: false,\n },\n () => {\n this.props.onChange(selectedValue);\n this.runValidation(selectedValue);\n }\n ); // When props.multiple === false\n }\n\n componentDidMount() {\n this.runValidation(this.state.selectedValue);\n }\n\n componentDidUpdate(prevProps) {\n if (!isEqual(prevProps.value, this.props.value)) {\n this.runValidation(this.state.selectedValue);\n }\n }\n\n addNewItem(name) {\n this.setState({ creating: true }, () => {\n this.api\n .post({ name }, this.apiHeaders)\n .then((response) => {\n this.onSelect(\n response.data[this.props.responseKey] || response.data[\"name\"]\n );\n this.setState({ creating: false });\n })\n .catch((error) => {\n console.error(error);\n });\n });\n }\n\n selectSearch(api, value, searchkey, searchUrl) {\n let paramsDefault = {};\n paramsDefault[searchkey] = value;\n const params = this.props.transformRequest\n ? this.props.transformRequest(this.state.searchText, paramsDefault)\n : paramsDefault;\n\n if (value !== \"\") {\n api\n .get(params, this.apiHeaders)\n .then((response) => {\n let data = [];\n if (this.props.asyncTransform) {\n data = this.props.transformResponse\n ? this.props.transformResponse(response).then((data) => {\n this.setState({\n options: data,\n lastRequest: value,\n });\n })\n : response.data;\n } else {\n data = this.props.transformResponse\n ? this.props.transformResponse(response)\n : response.data;\n if (\n this.props.selectOnEnter &&\n this.state.pressedEnter &&\n data &&\n data.length > 0\n ) {\n this.onSelect(data[0]);\n } else {\n this.setState({\n options: data,\n lastRequest: value,\n });\n }\n }\n })\n .catch((error) => {\n console.error(error);\n if (error.code === 401) throw error;\n this.setState({\n error:\n error.message || \"Something went wrong, please try again later\",\n });\n });\n }\n }\n\n onKeyDown(e) {\n if (!this.props.multiple && (e.keyCode === 8 || e.keyCode === 46)) {\n if (this.state.selectedValue) {\n this.onSelect(\"\");\n }\n }\n if (this.props.selectOnEnter && this.state.searchText && e.keyCode === 13) {\n e.preventDefault();\n this.setState({\n pressedEnter: true,\n });\n } else if (this.state.pressedEnter) {\n this.setState({\n pressedEnter: false,\n });\n }\n }\n\n handleChange(e) {\n e.preventDefault();\n const { searchKey, searchUrl } = this.props;\n this.setState({\n searchText: e.target.value,\n error: null,\n });\n const searchkey = searchKey || \"term\";\n this.search(this.api, e.target.value, searchkey, searchUrl);\n }\n\n componentWillReceiveProps(nextProps) {\n var newValue, oldValue;\n if (this.props.multiple) {\n newValue = nextProps.value;\n oldValue = this.props.value;\n } else {\n newValue = nextProps.value\n ? nextProps.value[this.props.nameKey] || nextProps.value[\"name\"] || \"\"\n : \"\";\n oldValue = this.props.value\n ? this.props.value[this.props.nameKey] || this.props.value[\"name\"] || \"\"\n : \"\";\n }\n if (oldValue !== newValue) {\n this.setState({\n searchText: \"\",\n selectedValue: nextProps.value || (this.props.multiple ? [] : \"\"),\n });\n }\n }\n\n render() {\n const {\n type,\n name,\n placeholder,\n required,\n valueKey,\n nameKey,\n createButton = false,\n readOnly,\n label,\n } = this.props;\n let options = this.state.options || [];\n\n let selectableValues = options.length\n ? options.map((suggestion, index) => {\n var suggestionAllowed;\n if (this.props.multiple) {\n suggestionAllowed =\n this.state.selectedValue && this.state.selectedValue.length\n ? this.state.selectedValue.findIndex(\n (option) => suggestion[valueKey] === option[valueKey]\n ) === -1\n : true;\n } else {\n suggestionAllowed = this.state.selectedValue\n ? this.state.selectedValue[valueKey] !== suggestion[valueKey]\n : true;\n }\n return suggestionAllowed ? (\n this.props.renderListElement ? (\n this.props.renderListElement(\n suggestion,\n valueKey,\n nameKey,\n this.onSelect\n )\n ) : (\n this.onSelect(suggestion)}\n >\n {suggestion[nameKey]}\n \n )\n ) : (\n \"\"\n );\n })\n : \"\";\n return (\n \n
\n \n \"\"\n
\n {this.state.error && (\n
{this.state.error}
\n )}\n {this.state.searchText && (\n
\n \n {createButton &&\n this.state.options.findIndex(\n (option) =>\n option[nameKey].toLowerCase() ===\n this.state.searchText.toLowerCase()\n ) === -1 ? (\n
  • \n {this.state.searchText}\n {this.state.creating ? (\n \n ) : (\n {\n this.addNewItem(this.state.searchText);\n }}\n >\n + {createButton || \"Create\"}\n \n )}\n
  • \n ) : null}\n {selectableValues}\n \n
    \n )}\n {this.props.multiple ? (\n this.props.draggable ? (\n
    \n \n
    \n ) : (\n (this.state.selectedValue || []).map((value) => (\n
    \n \n \n {this.props.displaySelectedValue\n ? this.props.displaySelectedValue(value)\n : value[nameKey]}\n \n \n {!readOnly && (\n {\n this.onSelect(value);\n }}\n />\n )}\n
    \n ))\n )\n ) : null}\n \n );\n }\n}\n\nSearchable.defaultProps = {\n nameKey: \"name\",\n valueKey: \"value\",\n draggable: false,\n};\n\nexport default Searchable;\n","import React, { Component } from \"react\";\nimport { DateRangePicker } from \"react-dates\";\nimport moment from \"moment\";\nimport \"react-dates/initialize\";\nimport \"react-dates/lib/css/_datepicker.css\";\nimport \"./style.css\";\nimport calenderIcon from \"./calender-icon.svg\";\n\nexport default class DateRangePickerWrapper extends Component {\n constructor(props) {\n super(props);\n this.state = {\n focusedInput: null,\n };\n }\n\n render() {\n const { focusedInput } = this.state;\n let {\n startDate,\n endDate,\n displayFormat,\n transForm,\n required,\n onDatesChange,\n startDatePlaceholder,\n endDatePlaceholder,\n minimumNights,\n isOutsideRange,\n openDirection,\n readOnly,\n } = this.props;\n const smallDevice = window.matchMedia(\"(max-width: 600px)\").matches;\n const orientation = smallDevice ? \"vertical\" : \"horizontal\";\n\n startDate = (startDate && moment(startDate, transForm)) || null;\n endDate = (endDate && moment(endDate, transForm)) || null;\n return (\n
    \n \n onDatesChange(\n startDate && moment(startDate).format(transForm),\n endDate && moment(endDate).format(transForm)\n )\n }\n focusedInput={focusedInput}\n onFocusChange={(focusedInput) => {\n this.setState({ focusedInput });\n }}\n startDateId=\"startDate\"\n endDateId=\"endDate\"\n displayFormat={displayFormat}\n required={required}\n startDatePlaceholderText={startDatePlaceholder}\n endDatePlaceholderText={endDatePlaceholder}\n customInputIcon={\"\"}\n orientation={orientation}\n minimumNights={minimumNights}\n isOutsideRange={isOutsideRange}\n openDirection={openDirection}\n readOnly={readOnly}\n disabled={readOnly}\n />\n
    \n );\n }\n}\nDateRangePickerWrapper.defaultProps = {\n displayFormat: \"YYYY-MM-DD\",\n className: \"\",\n transForm: \"YYYY-MM-DD\",\n minimumNights: 1,\n};\n","import React, { Component } from \"react\";\nimport DateRangePickerWrapper from \"../../../DateRangePickerWrapper\";\nimport \"./style.css\";\n\nfunction getValidationObj(props, dateRange) {\n let valueMissing =\n props.required &&\n (!dateRange || !dateRange.startDate || !dateRange.endDate);\n let result = {\n valueMissing,\n valid: !valueMissing,\n };\n return result;\n}\n\nexport default class DateRangePicker extends Component {\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n this.runValidation = this.runValidation.bind(this);\n }\n\n runValidation(dateRange) {\n this.props.onValidation &&\n this.props.onValidation(getValidationObj(this.props, dateRange));\n }\n\n handleChange(startDate, endDate) {\n const dateRange = { startDate: startDate, endDate: endDate };\n this.props.onChange(dateRange);\n this.runValidation(dateRange);\n }\n\n componentDidMount() {\n this.runValidation(this.props.value);\n }\n\n render() {\n let {\n value,\n displayFormat,\n required,\n startDatePlaceholder,\n endDatePlaceholder,\n minimumNights,\n isOutsideRange,\n openDirection,\n readOnly,\n } = this.props;\n return (\n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport crossIcon from \"../../cross_gray.svg\";\n\nexport default class SelectValue extends Component {\n constructor(props) {\n super(props);\n this.remove = this.remove.bind(this);\n }\n\n remove() {\n this.props.onRemove(this.props.option);\n }\n\n render() {\n const { option, readOnly } = this.props;\n return (\n
    \n \n {option.text}\n \n \n \"\"\n \n
    \n );\n }\n}\n","import React, { Component } from \"react\";\nimport arrowIcon from \"./arrow.svg\";\nimport \"./style.css\";\nimport SelectValue from \"./SelectValue\";\nimport { isEqual } from \"lodash\";\n\nfunction getValidationObj(props, selectedValues) {\n let valueMissing =\n props.required && (!selectedValues || selectedValues.length === 0);\n let result = {\n valueMissing,\n valid: !valueMissing,\n };\n return result;\n}\n\nexport default class MultiSelect extends Component {\n constructor(props) {\n super(props);\n this.state = {\n expanded: false,\n };\n [\n \"onSelect\",\n \"onRemove\",\n \"expand\",\n \"setWrapperRef\",\n \"handleClickOutside\",\n \"runValidation\",\n ].forEach((fn) => {\n this[fn] = this[fn].bind(this);\n });\n }\n\n runValidation(values) {\n this.props.onValidation &&\n this.props.onValidation(getValidationObj(this.props, values));\n }\n\n expand() {\n this.setState({ expanded: true });\n }\n\n componentDidMount() {\n window.addEventListener(\"mousedown\", this.handleClickOutside);\n this.runValidation(this.props.value);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"mousedown\", this.handleClickOutside);\n }\n\n componentDidUpdate(prevProps) {\n if (!isEqual(prevProps.value, this.props.value)) {\n this.runValidation(this.props.value);\n }\n }\n\n // set wrapper ref\n setWrapperRef(node) {\n this.wrapperRef = node;\n }\n // close dropdown if clicked outside the wrapper\n handleClickOutside(event) {\n if (this.wrapperRef && !this.wrapperRef.contains(event.target)) {\n this.setState({ expanded: false });\n }\n }\n // on select of an option , add it to array of selected values\n onSelect(option) {\n if (this.props.readOnly) {\n return;\n }\n const valueKey = this.props.valueKey;\n const value = option && option[valueKey];\n let selectedValues =\n (Array.isArray(this.props.value) && this.props.value) || [];\n if (option && !selectedValues.some((val) => val === value)) {\n selectedValues.push(value);\n }\n this.props.onChange && this.props.onChange(selectedValues);\n this.runValidation(selectedValues);\n }\n // on remove of an option, remove it from array of selected values\n onRemove(option) {\n if (this.props.readOnly) {\n return;\n }\n const { valueKey, value: values } = this.props;\n const selectedValue = option && option[valueKey];\n let selectedValues = values;\n if (Array.isArray(values) && values.some((val) => val === selectedValue)) {\n selectedValues = selectedValues.filter((e) => e !== selectedValue);\n this.props.onChange && this.props.onChange(selectedValues);\n }\n }\n\n render() {\n const {\n type,\n name,\n placeholder,\n required,\n options,\n value,\n valueKey,\n nameKey,\n readOnly,\n dontDisplaySelected,\n label,\n } = this.props;\n const { expanded } = this.state;\n\n let selectableValues = [];\n let selectedValues = [];\n if (options.length) {\n options.forEach((option, index) => {\n let suggestionAllowed = !(\n value &&\n Array.isArray(value) &&\n value.some((val) => val === option[valueKey])\n );\n if (suggestionAllowed) {\n // Do not show selected values in options dropdown\n selectableValues.push(\n this.onSelect(option)}\n >\n {option[nameKey]}\n \n );\n } else {\n // Render all the selected values as SelectValue component\n selectedValues.push(\n \n );\n }\n });\n }\n\n return (\n \n
    \n
    \n \n \"\"\n
    \n
    \n {expanded && selectableValues.length > 0 && !readOnly && (\n
    \n
      {selectableValues}
    \n
    \n )}\n {!dontDisplaySelected && selectedValues}\n \n );\n }\n}\n\nMultiSelect.defaultProps = {\n nameKey: \"text\",\n valueKey: \"value\",\n readOnly: false,\n};\n","import React, { Component } from \"react\";\nimport crossIcon from \"../../cross_gray.svg\";\n\nexport default class TagValue extends Component {\n constructor(props) {\n super(props);\n this.remove = this.remove.bind(this);\n }\n\n remove() {\n this.props.onRemove(this.props.value);\n }\n\n render() {\n const { value, readOnly } = this.props;\n return (\n
    \n \n {value}\n \n \n \"\"\n \n
    \n );\n }\n}\n","import React, { Component } from \"react\";\nimport \"./style.css\";\nimport TagValue from \"./TagValue\";\n\nfunction getValidationObj(props, values) {\n let valueMissing = props.required && (!values || values.length === 0);\n let result = {\n valueMissing,\n valid: !valueMissing,\n };\n return result;\n}\n\nexport default class MultiTextInput extends Component {\n constructor(props) {\n super(props);\n [\n \"onKeyDown\",\n \"runValidation\",\n \"onRemove\",\n \"addValue\",\n \"handleChange\",\n ].forEach((fn) => {\n this[fn] = this[fn].bind(this);\n });\n }\n\n runValidation(values) {\n this.props.onValidation &&\n this.props.onValidation(getValidationObj(this.props, values));\n }\n\n componentDidMount() {\n this.runValidation(this.props.value);\n }\n\n onRemove(value) {\n const { value: values } = this.props;\n let selectedValues = values;\n if (Array.isArray(values) && values.some((val) => val === value)) {\n selectedValues = selectedValues.filter((e) => e !== value);\n this.props.onChange && this.props.onChange(selectedValues);\n this.runValidation(selectedValues);\n }\n }\n\n addValue(value) {\n const { value: values } = this.props;\n let selectedValues = (Array.isArray(values) && values) || [];\n if (value && !selectedValues.some((val) => val === value)) {\n selectedValues.push(value);\n this.props.onChange && this.props.onChange(selectedValues);\n this.runValidation(selectedValues);\n }\n }\n handleChange(e) {\n e.preventDefault();\n this.addValue(e.target.value);\n e.target.value = \"\";\n }\n onKeyDown(e) {\n if (e.keyCode === 13) {\n // whenever enter is pressed then create a tag with text input\n e.preventDefault(); // prevent submission of form on Enter\n this.addValue(e.target.value);\n e.target.value = \"\";\n }\n }\n\n render() {\n const {\n name,\n required,\n value: values,\n placeholder,\n readOnly,\n label,\n } = this.props;\n const tags =\n values && values.length > 0\n ? values.map((value, index) => (\n \n ))\n : null;\n return (\n
    \n
    \n \n
    \n \n {tags}\n
    \n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport debounce from \"../../../../lib/debounce\";\nimport searchIcon from \"./icon-search.svg\";\n\nfunction getValidationObj(props, value) {\n let valueMissing = props.required && !value;\n if (props.required && props.multiple) {\n valueMissing = valueMissing || !value || !value.length;\n }\n let result = {\n valueMissing,\n valid: !valueMissing,\n };\n return result;\n}\n\nclass SelectSearch extends Component {\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n this.runValidation = this.runValidation.bind(this);\n const options = props.options || [];\n const selectedOption = options.filter(\n (opt) => opt[props.valueKey] === props.value\n )[0];\n const searchText = selectedOption ? selectedOption[props.nameKey] : \"\";\n this.state = {\n options: options,\n searchText: searchText,\n selectedValue: props.value,\n loading: false,\n selectableOptions: props.defaultSelectableOptions ? props.options : [],\n };\n this.selectSearch = debounce(this.selectSearch.bind(this), 300);\n this.search = this.selectSearch;\n this.onSelect = this.onSelect.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n }\n\n handleChange(e) {\n e.preventDefault();\n this.setState({\n searchText: e.target.value,\n });\n this.search(e.target.value);\n }\n\n runValidation(value) {\n this.props.onValidation &&\n this.props.onValidation(getValidationObj(this.props, value));\n }\n\n selectSearch(value) {\n const options = this.state.options;\n let searchKey = this.props.valueKey;\n if (this.props.searchByName) {\n searchKey = this.props.nameKey;\n }\n let searchOptions = options.filter((opt) =>\n opt[searchKey].toLowerCase().includes(value.toLowerCase())\n );\n this.setState({\n selectableOptions: searchOptions,\n lastSearch: value,\n });\n }\n\n componentWillReceiveProps(nextProps) {\n var newValue, oldValue;\n const options = this.state.options || [];\n const selectedOption = options.filter(\n (opt) => opt[this.props.valueKey] === nextProps.value\n )[0];\n const name = selectedOption ? selectedOption[this.props.nameKey] : \"\";\n if (this.props.multiple) {\n newValue = nextProps.value;\n oldValue = this.props.value;\n } else {\n newValue = nextProps.value ? nextProps.value || \"\" : \"\";\n oldValue = this.props.value ? this.props.value || \"\" : \"\";\n }\n if (oldValue !== newValue) {\n let searchText;\n if (this.props.multiple) {\n searchText = \"\";\n } else {\n searchText = name;\n }\n this.setState({\n searchText: searchText,\n selectedValue: nextProps.value || (this.props.multiple ? [] : \"\"),\n });\n }\n }\n\n onSelect(option) {\n let selectedValue = option;\n if (this.props.multiple) {\n selectedValue = [...(this.state.selectedValue || [])];\n let index = selectedValue.findIndex(\n (listOption) =>\n listOption[this.props.valueKey] === option[this.props.valueKey]\n );\n if (index > -1) {\n selectedValue.splice(index, 1);\n } else {\n selectedValue = [...selectedValue, option];\n }\n }\n this.setState(\n {\n selectableOptions: [],\n searchText:\n option && !this.props.multiple ? option[this.props.nameKey] : \"\",\n lastSearch: \"\",\n selectedValue,\n },\n () => {\n this.props.onChange(\n this.props.multiple\n ? selectedValue\n : selectedValue[this.props.valueKey]\n );\n this.runValidation(selectedValue);\n }\n );\n }\n\n onKeyDown(e) {\n if (!this.props.multiple && (e.keyCode === 8 || e.keyCode === 46)) {\n if (this.state.selectedValue) {\n this.onSelect(\"\");\n }\n }\n }\n\n render() {\n const {\n name,\n placeholder,\n required,\n renderListElement,\n type,\n nameKey,\n valueKey,\n readOnly,\n autoFocus,\n defaultSelectableOptions,\n dontDisplaySelected,\n label,\n autoComplete,\n } = this.props;\n let { selectableOptions, searchText, selectedValue, error, lastSearch } =\n this.state;\n let selectableValues = selectableOptions.length\n ? selectableOptions.map((suggestion, index) => {\n let suggestionAllowed;\n if (this.props.multiple) {\n suggestionAllowed =\n selectedValue && selectedValue.length\n ? selectedValue.findIndex(\n (option) => suggestion[valueKey] === option[valueKey]\n ) === -1\n : true;\n } else {\n suggestionAllowed = selectedValue\n ? selectedValue[valueKey] !== suggestion[valueKey]\n : true;\n }\n return suggestionAllowed ? (\n renderListElement ? (\n renderListElement(suggestion, this.onSelect)\n ) : (\n this.onSelect(suggestion)}\n >\n {suggestion[nameKey]}\n \n )\n ) : (\n \"\"\n );\n })\n : \"\";\n return (\n
    \n
    \n \n \"\"\n
    \n {error &&
    {error}
    }\n {searchText && !defaultSelectableOptions && (\n
    \n \n {selectableValues}\n \n
    \n )}\n {defaultSelectableOptions && (\n
    \n
      \n {selectableValues}\n
    \n
    \n )}\n {!dontDisplaySelected && this.props.multiple ? (\n
    \n {(this.state.selectedValue || []).map((value) => (\n
    \n \n {value[nameKey]}\n \n {\n this.onSelect(value);\n }}\n />\n
    \n ))}\n
    \n ) : null}\n
    \n );\n }\n}\nSelectSearch.defaultProps = {\n nameKey: \"text\",\n valueKey: \"value\",\n defaultSelectableOptions: false,\n};\nexport default SelectSearch;\n","import React, { Component } from \"react\";\nimport { Select, Searchable } from \"../../../Form\";\nimport Image from \"../../../Image\";\nimport API from \"../../../../lib/api\";\nimport { getSession } from \"../../../../lib/auth\";\nimport { getDefaultStore } from \"../../../../containers/StoreSelector\";\nimport { getProductImage } from \"../../../../lib/commonlyused\";\n\nimport \"./style.css\";\n\nfunction getValidationObj(props, value) {\n let valueMissing = props.required && !value;\n if (props.required && props.multiple) {\n valueMissing = valueMissing || !value || !value.length;\n }\n let result = {\n valueMissing,\n valid: !valueMissing,\n };\n return result;\n}\n\nclass ProductSearch extends Component {\n constructor(props) {\n super(props);\n this.selectOptions = [\n {\n text: \"Name\",\n value: \"name\",\n },\n {\n text: \"Barcode\",\n value: \"barcode\",\n },\n {\n text: \"Client Id\",\n value: \"clientId\",\n },\n ];\n this.state = {\n selectionKey: \"name\",\n };\n this.handleChange = this.handleChange.bind(this);\n this.getInventoryDetails = this.getInventoryDetails.bind(this);\n this.renderSearchableList = this.renderSearchableList.bind(this);\n this.generateProductsFromVariants =\n this.generateProductsFromVariants.bind(this);\n this.getDetails = this.getDetails.bind(this);\n }\n\n runValidation(value) {\n this.props.onValidation &&\n this.props.onValidation(getValidationObj(this.props, value));\n }\n\n handleChange(e) {\n this.setState({\n selectionKey: e,\n });\n }\n\n renderSearchableList(item, valueKey, nameKey, onSelect) {\n const includeInventory = this.props.includeInventory ? \"\" : \"no-inventory\";\n const currency = getSession().organization.currency.symbol;\n return (\n onSelect(item)}\n >\n \n \n
    \n {item.brand && {item.brand.name} }\n {item.fullName ? item.fullName : item.name}\n
    \n {this.props.includeInventory && (\n
    \n \n {currency} {item.amount.toFixed(2)}{\" \"}\n \n {item.discount > 0 && (\n {item.mrp.toFixed(2)}\n )}\n
    \n )}\n \n \n );\n }\n\n getInventoryDetails(products, callback) {\n let params = \"\";\n if (!products || products.length <= 0) {\n return [];\n }\n products.forEach((pdt) => {\n params += `${pdt.id},`;\n });\n const api = new API({\n url: `/inventory-service/item?storeId=${\n Number(this.props.storeId) || getDefaultStore().storeId\n }&productId=${params}`,\n });\n return api\n .get()\n .then((response) => {\n let inventoryData = response.data;\n return products\n .map((pdt, index) => {\n let pdtInventory = inventoryData[index];\n if (\n pdtInventory &&\n (Boolean(pdtInventory.stock) || pdtInventory.unlimitedStock) &&\n pdtInventory.mrp > 0\n ) {\n pdt.storeSpecificData = {\n discount: pdtInventory.discount || 0,\n mrp: pdtInventory.mrp,\n amount: pdtInventory.mrp - (pdtInventory.discount || 0),\n };\n pdt.discount = pdtInventory.discount || 0;\n pdt.mrp = pdtInventory.mrp;\n pdt.amount = pdtInventory.mrp - pdt.discount;\n return pdt;\n }\n return false;\n })\n .filter(Boolean);\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n generateProductsFromVariants(product) {\n let products =\n product.variants &&\n product.variants.map((variant) => {\n let pdt = Object.assign({}, product);\n pdt.name = variant.fullName;\n pdt.brand = product.brand;\n pdt.images = variant.images;\n pdt.id = variant.id;\n pdt.soldByWeight = product.soldByWeight;\n pdt.status = variant.status;\n return pdt;\n });\n return products;\n }\n\n getDetails(pdtWithVariants) {\n pdtWithVariants = pdtWithVariants\n .map((product) => {\n let variantCount = (product.variants && product.variants.length) || 0;\n let productWithVariants = null;\n if (variantCount > 0) {\n productWithVariants = this.generateProductsFromVariants(product);\n return productWithVariants.filter(Boolean);\n }\n return false;\n })\n .filter(Boolean);\n pdtWithVariants = (pdtWithVariants && [].concat(...pdtWithVariants)) || [];\n return pdtWithVariants;\n }\n\n render() {\n const {\n multiple,\n value,\n onChange,\n getVariantData,\n includeInventory,\n placeholder,\n name,\n readOnly,\n required,\n selectOnEnter,\n withoutDropDown,\n } = this.props;\n const { selectionKey } = this.state;\n return (\n \n {!withoutDropDown && (\n \n )}\n {\n return pdt.brand\n ? `${pdt.brand.name} ${pdt.fullName || pdt.name}`\n : pdt.fullName || pdt.name;\n }}\n transformResponse={(response) => {\n let products = response.data.product || [];\n if (!getVariantData) {\n return new Promise((resolve) => {\n resolve(products);\n });\n }\n let pdtWithVariants = products.filter(\n (pdt) => Boolean(pdt.hasVariants) === true\n );\n let pdtWithoutVariants = products.filter(\n (pdt) => Boolean(pdt.hasVariants) === false\n );\n if (includeInventory) {\n pdtWithVariants = this.getDetails(pdtWithVariants) || [];\n products = pdtWithVariants.concat(pdtWithoutVariants);\n let productsWithInventory = this.getInventoryDetails(products);\n return new Promise((resolve) => {\n resolve(productsWithInventory);\n });\n } else if (pdtWithVariants.length > 0 && getVariantData) {\n pdtWithVariants = this.getDetails(pdtWithVariants);\n return new Promise((resolve) => {\n resolve(pdtWithVariants.concat(pdtWithoutVariants));\n });\n } else {\n return new Promise((resolve) => {\n resolve(products);\n });\n }\n }}\n multiple={multiple}\n value={value}\n onChange={onChange}\n />\n \n );\n }\n}\n\nProductSearch.defaultProps = {\n selectionKey: \"name\",\n getVariantData: true,\n};\n\nexport default ProductSearch;\n","import React, { Component } from \"react\";\nimport { SingleDatePicker, Select } from \"../../Inputs\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { getTimes } from \"../../../../lib/datetime\";\nimport \"./style.css\";\n\nfunction getValidationObj(props, value) {\n let valueMissing = props.required && !value;\n if (props.required && props.multiple) {\n valueMissing = valueMissing || !value || !value.length;\n }\n let result = {\n valueMissing,\n valid: !valueMissing,\n };\n return result;\n}\n\nclass DateTime extends Component {\n constructor(props) {\n super(props);\n this.handleDateChange = this.handleDateChange.bind(this);\n this.runValidation = this.runValidation.bind(this);\n this.handleTimeChange = this.handleTimeChange.bind(this);\n const value = this.props.value || \"\";\n this.state = {\n date: value.split(\" \")[0],\n time: value.split(\" \")[1],\n };\n }\n\n handleDateChange(e) {\n this.setState({\n date: e,\n });\n const time = this.state.time;\n if (time) {\n this.props.onChange(`${e} ${time}:00`);\n } else {\n this.props.onChange(`${e}`);\n }\n }\n\n runValidation(date) {\n this.props.onValidation &&\n this.props.onValidation(getValidationObj(this.props, date));\n }\n\n handleTimeChange(e) {\n this.setState({\n time: e,\n });\n const date = this.state.date;\n if (date) {\n this.props.onChange(`${date} ${e}`);\n } else {\n this.props.onChange(` ${e}`);\n }\n }\n\n render() {\n const {\n name,\n dateplaceholder,\n timePlaceholder,\n required,\n value,\n ...props\n } = this.props;\n return (\n
    \n \n \n
    \n );\n }\n}\n\nexport default DateTime;\n","import React from \"react\";\nimport Searchable from \"../Searchable\";\n\nconst getChain = (category) => {\n let chain = [];\n let reference = category;\n while (reference) {\n chain.push(reference.name);\n reference = reference.parentCategory;\n }\n return chain.reverse().join(\" > \");\n};\n\nexport default function CategorySearch(props) {\n let newProps = Object.assign({}, props, {\n searchUrl: \"/catalogue-service/category\",\n valueKey: \"id\",\n nameKey: \"displayName\",\n searchKey: \"name\",\n displaySelectedValue: (category) => {\n return props.dontShowChain ? category.name : getChain(category);\n },\n transformRequest: (searchText, paramsDefault) => {\n let params = Object.assign({}, paramsDefault);\n params.name = `%${params.name}`;\n return params;\n },\n transformResponse: (response) => {\n return (props.appendElement ? props.appendElement : []).concat(\n response.data.category.map((category) => {\n category.displayName = getChain(category);\n return category;\n })\n );\n },\n });\n return ;\n}\n","import TimePicker from \"rc-time-picker\";\nimport \"rc-time-picker/assets/index.css\";\nimport React from \"react\";\nimport moment from \"moment\";\n\nconst iconStyle = {\n position: \"absolute\",\n width: \"24px\",\n right: 0,\n top: 0,\n bottom: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n};\n\n/* Can also be use to add an input ICON if necessary ' */\n// const starPath =\n// 'M908.1 353.1l-253.9-36.9L540.7 86.1c-3' +\n// '.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L3' +\n// '69.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3-12.3 12' +\n// '.7-12.1 32.9 0.6 45.3l183.7 179.1-43.4 252.9c-1.2 6.9' +\n// '-0.1 14.1 3.2 20.3 8.2 15.6 27.6 21.7 43.2 13.4L512 7' +\n// '54l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-' +\n// '19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3' +\n// ' 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3zM664.8 561.6l36.1' +\n// ' 210.3L512 672.7 323.1 772l36.1-210.3-152.8-149L417.6' +\n// ' 382 512 190.7 606.4 382l211.2 30.7-152.8 148.9z'\n\nconst redoPath =\n \"M758.2 839.1C851.8 765.9 912 651.9 912\" +\n \" 523.9 912 303 733.5 124.3 512.6 124 291.4 123.7 112 \" +\n \"302.8 112 523.9c0 125.2 57.5 236.9 147.6 310.2 3.5 2.\" +\n \"8 8.6 2.2 11.4-1.3l39.4-50.5c2.7-3.4 2.1-8.3-1.2-11.1\" +\n \"-8.1-6.6-15.9-13.7-23.4-21.2-29.4-29.4-52.5-63.6-68.6\" +\n \"-101.7C200.4 609 192 567.1 192 523.9s8.4-85.1 25.1-12\" +\n \"4.5c16.1-38.1 39.2-72.3 68.6-101.7 29.4-29.4 63.6-52.\" +\n \"5 101.7-68.6C426.9 212.4 468.8 204 512 204s85.1 8.4 1\" +\n \"24.5 25.1c38.1 16.1 72.3 39.2 101.7 68.6 29.4 29.4 52\" +\n \".5 63.6 68.6 101.7 16.7 39.4 25.1 81.3 25.1 124.5s-8.\" +\n \"4 85.1-25.1 124.5c-16.1 38.1-39.2 72.3-68.6 101.7-9.3\" +\n \" 9.3-19.1 18-29.3 26L668.2 724c-4.1-5.3-12.5-3.5-14.1\" +\n \" 3l-39.6 162.2c-1.2 5 2.6 9.9 7.7 9.9l167 0.8c6.7 0 1\" +\n \"0.5-7.7 6.3-12.9l-37.3-47.9z\";\n\nclass TimePickerWrapper extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n open: false,\n useIcon: true,\n value: this.props.defaultValue\n ? moment(this.props.defaultValue, \"HH:mm:ss\")\n : null,\n };\n\n this.getIcon = this.getIcon.bind(this);\n this.setOpen = this.setOpen.bind(this);\n this.toggleOpen = this.toggleOpen.bind(this);\n this.toggleIcon = this.toggleIcon.bind(this);\n this.onChange = this.onChange.bind(this);\n }\n\n getIcon(path, style = {}) {\n return (\n \n \n \n \n \n );\n }\n\n setOpen({ open }) {\n this.setState({ open });\n }\n\n toggleOpen() {\n const { open } = this.state;\n this.setState({\n open: !open,\n });\n }\n\n toggleIcon() {\n const { useIcon } = this.state;\n this.setState({\n useIcon: !useIcon,\n });\n }\n\n onChange(value) {\n this.setState({\n value: value,\n });\n this.props.onChange(value && value.format(\"HH:mm:ss\"));\n }\n\n render() {\n // const inputIcon = this.getIcon(starPath, iconStyle)\n const { useIcon, open, value } = this.state;\n const { disabled, placeholder, showSecond, minuteStep } = this.props;\n const clearIcon = this.getIcon(redoPath, { ...iconStyle, right: 0 });\n return (\n
    \n \n
    \n );\n }\n}\n\nexport default TimePickerWrapper;\n","import React, { Component } from \"react\";\nimport TimePickerWrapper from \"../../../TimePickerWrapper\";\n\nfunction getValidationObj(props, time) {\n let valueMissing = props.required && !time;\n let result = {\n valueMissing,\n valid: !valueMissing,\n };\n return result;\n}\n\nexport default class TimePicker extends Component {\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n this.runValidation = this.runValidation.bind(this);\n }\n\n runValidation(time) {\n this.props.onValidation &&\n this.props.onValidation(getValidationObj(this.props, time));\n }\n\n handleChange(time) {\n this.props.onChange(time);\n this.runValidation(time);\n }\n\n componentDidMount() {\n this.runValidation(this.props.value);\n }\n\n render() {\n const { label, required, placeholder, disabled } = this.props;\n return (\n \n );\n }\n}\n","import React, { useEffect } from \"react\";\nimport Quill from \"quill\";\nimport imageUpload from \"quill-plugin-image-upload\";\nimport API from \"../../../../lib/api\";\nimport \"quill/dist/quill.core.css\";\nimport \"quill/dist/quill.snow.css\";\nimport \"./RichTextEditorQuill.css\";\nconst DirectionAttribute = Quill.import(\"attributors/attribute/direction\");\nQuill.register(DirectionAttribute, true);\nconst AlignClass = Quill.import(\"attributors/class/align\");\nQuill.register(AlignClass, true);\nconst BackgroundClass = Quill.import(\"attributors/class/background\");\nQuill.register(BackgroundClass, true);\nconst ColorClass = Quill.import(\"attributors/class/color\");\nQuill.register(ColorClass, true);\nconst DirectionClass = Quill.import(\"attributors/class/direction\");\nQuill.register(DirectionClass, true);\nconst FontClass = Quill.import(\"attributors/class/font\");\nQuill.register(FontClass, true);\nconst SizeClass = Quill.import(\"attributors/class/size\");\nQuill.register(SizeClass, true);\nconst AlignStyle = Quill.import(\"attributors/style/align\");\nQuill.register(AlignStyle, true);\nconst BackgroundStyle = Quill.import(\"attributors/style/background\");\nQuill.register(BackgroundStyle, true);\nconst ColorStyle = Quill.import(\"attributors/style/color\");\nQuill.register(ColorStyle, true);\nconst DirectionStyle = Quill.import(\"attributors/style/direction\");\nQuill.register(DirectionStyle, true);\nconst FontStyle = Quill.import(\"attributors/style/font\");\nQuill.register(FontStyle, true);\nconst SizeStyle = Quill.import(\"attributors/style/size\");\nSizeStyle.whitelist = [\"14px\", \"16px\", \"18px\", \"24px\", \"30px\", \"36px\"];\nQuill.register(SizeStyle, true);\n\n// register quill-plugin-image-upload\nQuill.register(\"modules/imageUpload\", imageUpload);\n\nfunction upload(file) {\n // Upload file to server\n return new Promise((resolve, reject) => {\n let data = new window.FormData();\n data.append(\"imageUpload\", file);\n const api = new API({ url: \"/media-service/image-upload\" });\n api\n .post(data)\n .then((response) => {\n resolve(response.data.imageUpload.url);\n }, reject)\n .catch((error) => {\n console.error(error);\n reject(error);\n });\n });\n}\n\nconst emailBodyImageStyle = `max-width: 100%; object-fit: cover; object-position: center`;\n\nconst quillOptions = (toolbar) => {\n return {\n modules: {\n toolbar: toolbar || [\"image\"],\n imageUpload: {\n // uses quill-plugin-image-upload to upload the image and returns the url\n upload: (file) => {\n return new Promise((resolve, reject) => {\n upload(file)\n .then((url) => resolve(url))\n .catch(reject);\n });\n },\n },\n },\n theme: \"snow\",\n };\n};\n\nexport default function RichTextEditorQuill(props) {\n const {\n name,\n onFocus,\n onChange,\n placeholder,\n readOnly,\n toolbar,\n value,\n imgStyled,\n } = props;\n\n useEffect(() => {\n const quill = new Quill(`#${name}`, {\n ...quillOptions(toolbar),\n readOnly,\n placeholder,\n });\n if (quill.root.innerHTML === \"


    \" && value) {\n quill.root.innerHTML = value;\n }\n quill.on(\"editor-change\", () => {\n // on any change in the editor it will be fired\n const quillContents = quill.getContents(); // fetches content after every change\n if (imgStyled) {\n let appendQuillContent = ``;\n quillContents.ops.forEach((quillContent) => {\n if (quillContent.insert.hasOwnProperty(\"imageUpload\")) {\n // if content is image appending img tag else appending text content\n appendQuillContent += ``;\n } else {\n appendQuillContent += quillContent.insert;\n }\n });\n onChange(appendQuillContent); // passing appended html content for preview\n } else {\n onChange(quill.root.innerHTML);\n }\n\n quill.hasFocus() && onFocus && onFocus({ id: name });\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [name, quillOptions, onFocus]);\n\n return
    ;\n}\n","import React from \"react\";\nimport _Input from \"./Input\";\nimport _Select from \"./Select\";\nimport _Upload from \"./Upload/\";\nimport _ImageUpload from \"./ImageUpload/\";\nimport _Textarea from \"./Textarea\";\nimport _Phone from \"./Phone/\";\nimport _Checkbox from \"./Checkbox/\";\nimport _Radio from \"./Radio\";\nimport _Searchable from \"./Searchable/\";\nimport _CheckboxGroup from \"./CheckboxGroup/\";\nimport _DateRangePicker from \"./DateRangePicker/\";\nimport _SingleDatePicker from \"./SingleDatePicker\";\nimport _MultiLevelCheckbox from \"./MultiLevelCheckbox/\";\nimport _MultiSelect from \"./MultiSelect/\";\nimport _MultiTextInput from \"./MultiTextInput/\";\nimport _Toggle from \"./Toggle\";\nimport _SelectSearch from \"./SelectSearch\";\nimport _ProductSearch from \"./ProductSearch\";\nimport _BrandSearch from \"./BrandSearch\";\nimport _CustomerTagSearch from \"./CustomerTagSearch\";\nimport _DateTime from \"./DateTime\";\nimport _CategorySearch from \"./CategorySearch\";\nimport _TimePicker from \"./TimePicker\";\nimport _RichTextEditorQuill from \"./RichTextEditorQuill\";\n\nimport \"./style.css\";\n\nconst getValidationString = function (validationObj, stringsObj) {\n stringsObj = stringsObj || {};\n if (validationObj && !validationObj.valid) {\n if (validationObj.valueMissing) {\n return stringsObj.valueMissing || \"This field is required\";\n }\n if (validationObj.typeMismatch) {\n return stringsObj.typeMismatch || \"Incorrect data format\";\n }\n if (validationObj.tooShort) {\n return stringsObj.tooShort || \"Too short\";\n }\n if (validationObj.tooLong) {\n return stringsObj.tooLong || \"Too long\";\n }\n if (validationObj.rangeOverflow) {\n return stringsObj.rangeOverflow || \"Number exceeds range\";\n }\n if (validationObj.rangeUnderflow) {\n return stringsObj.rangeUnderflow || \"Number is below the range\";\n }\n if (validationObj.patternMismatch) {\n return stringsObj.patternMismatch || \"Incorrect Value\";\n }\n if (validationObj.stepMismatch) {\n return stringsObj.stepMismatch || \"Step mismatch\";\n }\n if (validationObj.isUploading) {\n return stringsObj.isUploading || \"File upload in process\";\n }\n }\n};\n\n// HoC to wrap Inputs with validation methods\nconst addValidations = (Component) => {\n class InputValidator extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n validations: {},\n };\n }\n render() {\n let error =\n this.props.error ||\n getValidationString(\n this.state.validations,\n this.props.validationStrings\n );\n let showErrors = this.props.showErrors === true;\n let newProps = Object.assign({}, this.props);\n newProps.onValidation = (validations) => {\n this.setState({ validations });\n this.props.onValidation && this.props.onValidation(validations);\n };\n return (\n \n \n {error && (\n
    \n {showErrors ? error : null}\n
    \n )}\n
    \n );\n }\n }\n return InputValidator;\n};\n\nconst Input = addValidations(_Input);\nconst Select = addValidations(_Select);\nconst Upload = addValidations(_Upload);\nconst ImageUpload = addValidations(_ImageUpload);\nconst Textarea = addValidations(_Textarea);\nconst Phone = addValidations(_Phone);\nconst Checkbox = addValidations(_Checkbox);\nconst Radio = addValidations(_Radio);\nconst Searchable = addValidations(_Searchable);\nconst CheckboxGroup = addValidations(_CheckboxGroup);\nconst DateRangePicker = addValidations(_DateRangePicker);\nconst SingleDatePicker = addValidations(_SingleDatePicker);\nconst MultiLevelCheckbox = addValidations(_MultiLevelCheckbox);\nconst MultiSelect = addValidations(_MultiSelect);\nconst MultiTextInput = addValidations(_MultiTextInput);\nconst Toggle = addValidations(_Toggle);\nconst SelectSearch = addValidations(_SelectSearch);\nconst ProductSearch = addValidations(_ProductSearch);\nconst BrandSearch = addValidations(_BrandSearch);\nconst CustomerTagSearch = addValidations(_CustomerTagSearch);\nconst DateTime = addValidations(_DateTime);\nconst CategorySearch = addValidations(_CategorySearch);\nconst TimePicker = addValidations(_TimePicker);\nconst RichTextEditorQuill = addValidations(_RichTextEditorQuill);\n\nexport {\n Input,\n Select,\n Upload,\n ImageUpload,\n Textarea,\n Phone,\n Checkbox,\n Radio,\n Searchable,\n CheckboxGroup,\n DateRangePicker,\n SingleDatePicker,\n MultiLevelCheckbox,\n MultiSelect,\n MultiTextInput,\n Toggle,\n SelectSearch,\n ProductSearch,\n BrandSearch,\n DateTime,\n CategorySearch,\n CustomerTagSearch,\n TimePicker,\n RichTextEditorQuill,\n};\n","import React from \"react\";\nimport { Searchable } from \"../../Inputs\";\n\nexport default function BrandSearch(props) {\n let newProps = Object.assign({}, props, {\n searchUrl: \"/catalogue-service/brand\",\n valueKey: \"id\",\n nameKey: \"name\",\n searchKey: \"name\",\n transformRequest: (searchText, paramsDefault) => {\n let params = Object.assign({}, paramsDefault);\n params.name = `%${params.name}`;\n return params;\n },\n transformResponse: (response) => {\n return (\n (props.appendElement ? props.appendElement : []).concat(\n response.data.brand\n ) || []\n );\n },\n });\n return ;\n}\n","import React from \"react\";\nimport { Searchable } from \"../../Inputs\";\nimport API from \"../../../../lib/api\";\nimport propTypes from \"prop-types\";\n\nexport default function CustomerTagSearch(props) {\n let newProps = Object.assign({}, props, {\n onChange: (event) => {\n if (!props.customerId) {\n return;\n }\n if (props.tags.length < event.length) {\n // Tag Added\n let resultingArr = event.filter((item) => props.tags.indexOf(item) < 0);\n if (resultingArr.length > 0 && resultingArr[0].id) {\n let postApi = new API({\n url: `/customer-service/customer/${props.customerId}/tag`,\n });\n let params = {\n tagids: [resultingArr[0].id],\n };\n postApi\n .post(params)\n .then((response) => {\n props.onChange(event);\n })\n .catch((error) => {\n console.error(error);\n });\n }\n } else {\n // Tag Removed\n let resultingArr = props.tags.filter((item) => event.indexOf(item) < 0);\n if (resultingArr.length > 0 && resultingArr[0].id) {\n let api = new API({\n url: `/customer-service/customer/${props.customerId}/tag/${resultingArr[0].id}`,\n });\n api\n .delete()\n .then((response) => {\n props.onChange(event);\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n },\n searchUrl: `/customer-service/tag`,\n valueKey: \"id\",\n nameKey: \"name\",\n searchKey: \"name\",\n transformRequest: (searchText, paramsDefault) => {\n let params = Object.assign({}, paramsDefault);\n params.name = `%${params.name}`;\n return params;\n },\n transformResponse: (response) => {\n return response.data.tag || [];\n },\n });\n return ;\n}\nCustomerTagSearch.propTypes = {\n customerId: propTypes.number.isRequired,\n};\n","import React from \"react\";\nimport \"./style.css\";\nimport PopupModal from \"../Modal\";\n\nexport default class Dialog extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n submitting: false,\n };\n this.handleOk = this.handleOk.bind(this);\n }\n handleOk() {\n const { onOk } = this.props;\n this.setState({ submitting: true }, onOk);\n }\n componentWillReceiveProps() {\n // Enable okay button for the second time\n if (this.props.show === false && this.state.submitting === true) {\n this.setState({ submitting: false });\n }\n }\n render() {\n const {\n show,\n title,\n message,\n information,\n close,\n closeText,\n className,\n onOk,\n okText,\n } = this.props;\n return (\n \n
    \n
    \n
    \n
    {title}
    \n
    {message}
    \n {information &&

    {information}

    }\n {close && (\n \n )}\n {onOk && (\n \n {okText}\n \n )}\n
    \n
    \n \n );\n }\n}\n","const checkHttpResponseCode = (code) => {\n return code >= 200 && code < 300;\n};\n\nexport default checkHttpResponseCode;\n","import React, { Component } from \"react\";\nimport _Toggle from \"react-toggle\";\nimport \"./style.css\";\n\nfunction getValidationObj(props, value) {\n let valueMissing = props.required ? !value : false;\n return {\n valueMissing,\n valid: !valueMissing,\n };\n}\n\nclass Toggle extends Component {\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n }\n\n handleChange(e) {\n this.props.onChange && this.props.onChange(e.target.checked);\n }\n\n runValidation() {\n this.props.onValidation &&\n this.props.onValidation(getValidationObj(this.props, this.props.value));\n }\n\n componentDidMount() {\n this.runValidation();\n }\n\n render() {\n let {\n emphasize,\n onValidation,\n className,\n showErrors,\n onChange,\n label,\n ...props\n } = this.props;\n let ToggleInput = _Toggle;\n let defaultChecked = false;\n let checked = props.value || defaultChecked;\n return (\n
    \n \n \n
    \n );\n }\n}\nexport default Toggle;\n","import React from \"react\";\nimport Modal from \"../Modal/index\";\nimport \"./style.css\";\n\nexport default function Popup(props) {\n return (\n \n
    \n
    \n

    {props.heading}

    \n
    \n
    {props.children}
    \n
    \n
    \n );\n}\n","import React, { Component } from \"react\";\nimport { ZOPSMART_URL } from \"../../config/app.js\";\nimport logo from \"./zopsmart-final-logo.svg\";\nimport zopsmartLogo from \"./zopsmartlogo.svg\";\nimport \"./style.css\";\n\nexport default class Header extends Component {\n constructor(props) {\n super(props);\n this.state = {\n expanded: false,\n };\n this.handleClick = this.handleClick.bind(this);\n this.toggle = this.toggle.bind(this);\n this.hide = this.hide.bind(this);\n }\n componentDidMount() {\n window.addEventListener(\"click\", this.handleClick);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"click\", this.handleClick);\n }\n\n toggle() {\n this.setState(\n (prevState) => {\n return {\n expanded: !this.state.expanded,\n };\n },\n () => {\n document.body.style.overflow = this.state.expanded ? \"hidden\" : \"auto\";\n }\n );\n }\n\n hide() {\n this.setState({\n expanded: false,\n });\n document.body.style.overflow = \"auto\";\n }\n\n handleClick(e) {\n if (this.toggleRef.contains(e.target)) {\n this.toggle();\n } else {\n this.hide();\n }\n }\n render() {\n let { current, eazy } = this.props;\n const { expanded } = this.state;\n let image = eazy ? logo : zopsmartLogo;\n return (\n
    \n
    \n
    \n \n \"ZopSmart\n \n
    \n {\n this.toggleRef = node;\n }}\n >\n \n \n \n
    \n \n
    \n
    \n
    \n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport { ZOPSMART_URL } from \"../../config/app.js\";\nimport { Link } from \"react-router-dom\";\nimport logo from \"./smart-store-logo-easy.svg\";\nimport enterpriseLogo from \"./enterprise-logo.svg\";\nimport \"./style.css\";\n\nexport default class EazyHeader extends Component {\n constructor(props) {\n super(props);\n this.state = {\n expanded: false,\n };\n this.handleClick = this.handleClick.bind(this);\n this.toggle = this.toggle.bind(this);\n this.hide = this.hide.bind(this);\n }\n\n componentDidMount() {\n window.addEventListener(\"click\", this.handleClick);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"click\", this.handleClick);\n }\n\n handleClick(e) {\n if (this.toggleRef && this.toggleRef.contains(e.target)) {\n this.toggle();\n } else {\n this.hide();\n }\n }\n\n toggle() {\n this.setState({\n expanded: !this.state.expanded,\n });\n }\n\n hide() {\n this.setState({\n expanded: false,\n });\n }\n\n render() {\n let { current, links, hiddenHeader, enterprise } = this.props;\n const { expanded } = this.state;\n return (\n
    \n
    \n
    \n
    \n \n \n \n
    \n {!enterprise && (\n
    \n {\n this.toggleRef = node;\n }}\n >\n \n \n \n
    \n \n
      \n
    • \n \n HOME\n \n
    • \n
    • \n \n FEATURES\n \n
    • \n
    • \n \n PRICING\n \n
    • \n
    \n \n
    \n {links &&\n links.map((a, index) => (\n \n {a.label}\n \n ))}\n
    \n
    \n )}\n
    \n \n
    \n );\n }\n}\n","import React from \"react\";\nimport Header from \"../../components/ZopSmartHeader\";\nimport SmartStoreHeader from \"../../components/SmartstoreHeader\";\nimport { Provider } from \"../Context\";\n\nimport vehicle from \"./vehicle.svg\";\nimport \"./style.css\";\n\nexport default function PublicPage(props) {\n let enterprise = true;\n let subDomain = window.location.hostname.split(\".\")[0];\n if (subDomain === \"dashboard\" || subDomain === \"localhost\") {\n enterprise = false;\n }\n return (\n \n
    \n {props.showHeader && (\n
    \n
    \n \n
    \n )}\n
    {props.children}
    \n
    \n \"zopsmart-vehicle\"\n
    \n
    \n
    \n );\n}\nPublicPage.defaultProps = {\n showHeader: true,\n};\n","module.exports = __webpack_public_path__ + \"static/media/edit-icon.6e9962e5.svg\";","import React from \"react\";\n\nconst { Provider, Consumer } = React.createContext(false);\n\nexport { Provider, Consumer };\n","module.exports = __webpack_public_path__ + \"static/media/trip-upload.761eb3d1.svg\";","import React, { Component } from \"react\";\n\nimport \"./style.css\";\n\nclass Checkbox extends Component {\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n }\n\n handleChange(e) {\n this.props.onChange && this.props.onChange(e.target.checked);\n }\n\n render() {\n const {\n name,\n value = false,\n inlineLabel,\n className = \"\",\n controlled = false,\n disabled,\n } = this.props;\n return (\n \n \n \n \n );\n }\n}\n\nexport default Checkbox;\n","module.exports = __webpack_public_path__ + \"static/media/delete.e70f6e09.svg\";","import React, { Component } from \"react\";\n\nimport \"./style.css\";\n\nfunction getValidationObj(props, checkedValues) {\n let valueMissing =\n props.required && (!checkedValues || checkedValues.length === 0);\n let result = {\n valueMissing,\n valid: !valueMissing,\n };\n return result;\n}\n\nclass CheckboxGroup extends Component {\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n this.runValidation = this.runValidation.bind(this);\n }\n\n runValidation(values) {\n this.props.onValidation &&\n this.props.onValidation(getValidationObj(this.props, values));\n }\n\n handleChange(e) {\n const checked = e.target.checked;\n let checkedValues =\n (Array.isArray(this.props.value) && this.props.value) || [];\n if (checked && !checkedValues.includes(e.target.value)) {\n checkedValues.push(e.target.value);\n } else if (!checked) {\n checkedValues = checkedValues.filter(function (i) {\n return i !== e.target.value;\n });\n }\n this.props.onChange && this.props.onChange(checkedValues);\n this.runValidation(checkedValues);\n }\n\n componentDidMount() {\n this.runValidation(this.props.value);\n }\n\n render() {\n let { value, options } = this.props;\n return (\n
    \n {(options || []).map((option, index) => (\n \n {this.props.skin === SKINS.WITH_ICONS && option.icon && (\n
    \n \"\"\n
    \n )}\n \n {option.text}\n \n ))}\n
    \n );\n }\n}\n\nconst SKINS = {\n DEFAULT: \"default-skin\",\n WITH_ICONS: \"icons-skin\",\n};\n\nCheckboxGroup.defaultProps = {\n value: \"\",\n options: [],\n skin: SKINS.DEFAULT,\n};\n\nexport default CheckboxGroup;\nexport { SKINS };\n","module.exports = __webpack_public_path__ + \"static/media/delete.a868c1c7.svg\";","import React, { Component } from \"react\";\n\nimport \"./style.css\";\n\nfunction getValidationObj(DomNode) {\n if (!DomNode) {\n return {};\n }\n let validationObj = DomNode.validity;\n let errors = {};\n for (let key in validationObj) {\n errors[key] = validationObj[key];\n }\n return errors;\n}\n\nclass Radio extends Component {\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n // this.handleBlur = this.handleBlur.bind(this)\n // this.runValidation = this.runValidation.bind(this)\n }\n runValidation(DomNode) {\n this.props.onValidation &&\n this.props.onValidation(getValidationObj(DomNode));\n }\n handleChange(e) {\n e.preventDefault();\n this.props.onChange && this.props.onChange(e.target.value);\n this.runValidation(e.target);\n }\n componentDidMount() {\n this.runValidation(this.inputRef);\n }\n render() {\n let { props } = this;\n return (\n
    \n {(props.options || []).map((option, index) => (\n \n {\n if (index === 0) {\n this.inputRef = node;\n }\n }}\n disabled={props.readOnly || option.disabled}\n />\n \n {option.text}\n \n \n ))}\n
    \n );\n }\n}\n\nconst SKINS = {\n DEFAULT: \"\",\n BORDERLESS: \"borderless-skin\",\n ONE_PER_LINE: \"block-skin\",\n};\n\nRadio.defaultProps = {\n value: \"\",\n options: [],\n skin: SKINS.DEFAULT,\n};\n\nexport default Radio;\nexport { SKINS };\n","function debounce(func, wait, immediate) {\n let timeout;\n return function () {\n let context = this;\n let args = arguments;\n let later = function () {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n let callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\n\nexport default debounce;\n","import React, { Component } from \"react\";\nimport { SingleDatePicker, isInclusivelyBeforeDay } from \"react-dates\";\nimport moment from \"moment\";\nimport \"react-dates/initialize\";\nimport \"react-dates/lib/css/_datepicker.css\";\n\nimport calenderIcon from \"./calender-icon.svg\";\n\nexport default class SingleDatePickerWrapper extends Component {\n constructor(props) {\n super(props);\n this.state = {\n focusedInput: false,\n };\n }\n\n render() {\n const { focusedInput } = this.state;\n let {\n date,\n displayFormat,\n transForm,\n required,\n onDateChange,\n placeholder,\n numberOfMonths,\n isOutsideRange,\n enableToday,\n allowAllDates,\n openDirection,\n readOnly,\n disabled,\n key,\n name,\n customIsOutsideRange,\n } = this.props;\n const smallDevice = window.matchMedia(\"(max-width: 600px)\").matches;\n const orientation = smallDevice ? \"vertical\" : \"horizontal\";\n\n date = (date && moment(date, transForm)) || null;\n\n return (\n
    \n \n onDateChange(date && moment(date).format(transForm))\n }\n readOnly={readOnly}\n isOutsideRange={\n customIsOutsideRange\n ? isOutsideRange\n : isOutsideRange\n ? (day) => !isInclusivelyBeforeDay(day, moment())\n : allowAllDates\n ? () => false\n : enableToday\n ? undefined\n : (day) => isInclusivelyBeforeDay(day, moment())\n }\n onFocusChange={(focusedInput) => {\n this.setState({ focusedInput });\n }}\n displayFormat={displayFormat}\n required={required}\n placeholder={placeholder}\n customInputIcon={\"\"}\n orientation={orientation}\n numberOfMonths={numberOfMonths}\n openDirection={openDirection}\n disabled={disabled}\n />\n
    \n );\n }\n}\nSingleDatePickerWrapper.defaultProps = {\n displayFormat: \"YYYY-MM-DD\",\n className: \"\",\n transForm: \"YYYY-MM-DD\",\n numberOfMonths: 1,\n isOutsideRange: false,\n readOnly: false,\n disabled: false,\n};\n","import React, { Component } from \"react\";\nimport SingleDatePickerWrapper from \"../../../SingleDatePickerWrapper\";\n\nimport \"react-dates/initialize\";\nimport \"react-dates/lib/css/_datepicker.css\";\nimport \"./override.css\";\n\nfunction getValidationObj(props, date) {\n let valueMissing = props.required && !date;\n let result = {\n valueMissing,\n valid: !valueMissing,\n };\n return result;\n}\n\nexport default class SingleDatePicker extends Component {\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n this.runValidation = this.runValidation.bind(this);\n }\n\n runValidation(date) {\n this.props.onValidation &&\n this.props.onValidation(getValidationObj(this.props, date));\n }\n\n handleChange(date) {\n this.props.onChange(date);\n this.runValidation(date);\n }\n\n componentDidMount() {\n this.runValidation(this.props.value);\n }\n\n render() {\n let {\n value,\n displayFormat,\n required,\n placeholder,\n numberOfMonths,\n isOutsideRange,\n enableToday,\n allowAllDates,\n openDirection,\n readOnly,\n disabled,\n name,\n key,\n showError,\n customIsOutsideRange,\n label,\n } = this.props;\n return (\n \n );\n }\n}\n","module.exports = __webpack_public_path__ + \"static/media/vehicle-icon.ce2a9b78.svg\";","const toTitleCase = (str) => {\n return str.replace(/\\w\\S*/g, (txt) => {\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n });\n};\n\nexport default toTitleCase;\n","import React, { Component } from \"react\";\n\nimport \"./style.css\";\nclass MultiLevelCheckbox extends Component {\n render() {\n let options = this.props.options || [];\n return (\n
    \n {renderCheckboxes(options, this.props.value, this.props.onChange)}\n
    \n );\n }\n}\n\nfunction Checkbox(props) {\n return (\n
    \n \n \n
    \n );\n}\n\nfunction renderCheckboxes(options, value, onChange, depth = 1) {\n options = options || [];\n if (value === undefined || value === null) {\n value = getInitialState(options);\n }\n return (\n
    \n {options.map(({ name, label, children }) => {\n let thisValue = computeChecked(value[name]);\n return (\n
    \n {\n let changedValue = Object.assign({}, value);\n changedValue[name] = toggleAll(value[name], !thisValue);\n onChange(changedValue);\n }}\n value={thisValue}\n />\n
    \n {children\n ? renderCheckboxes(\n children,\n value[name],\n (changedValue) => {\n onChange(\n Object.assign({}, value, {\n [name]: changedValue,\n })\n );\n },\n depth + 1\n )\n : null}\n
    \n
    \n );\n })}\n
    \n );\n}\n\nfunction computeChecked(value) {\n if (value instanceof Object) {\n return Object.values(value).reduce(\n (acc, value) => acc && computeChecked(value),\n true\n );\n }\n return value;\n}\n\nfunction toggleAll(obj, value) {\n if (!(value instanceof Object || typeof value === \"boolean\")) {\n return obj;\n }\n if (obj instanceof Object) {\n let updatedObj = Object.assign({}, obj);\n for (let key in updatedObj) {\n updatedObj[key] = toggleAll(obj[key], value);\n }\n return updatedObj;\n }\n return value;\n}\n\nfunction getInitialState(options) {\n return Object.assign(\n {},\n ...options.map((obj) => {\n return {\n [obj.name]: obj.children ? getInitialState(obj.children) : false,\n };\n })\n );\n}\n\nexport default MultiLevelCheckbox;\nexport { getInitialState, computeChecked, toggleAll };\n","module.exports = __webpack_public_path__ + \"static/media/settings-inactive.0d3e731d.svg\";","module.exports = __webpack_public_path__ + \"static/media/empty.3f67be2f.svg\";","import React from \"react\";\nimport PublicPage from \"../../../containers/PublicPage/index\";\nimport { withRouter } from \"react-router-dom\";\nimport { getMessage as t } from \"../../../lib/translator\";\n\nimport \"./style.css\";\n\nconst ErrorPage = function (props) {\n return (\n \n {props.title &&

    {props.title}

    }\n
    \n

    {t(\"unexpected.error.heading\")}

    \n

    \n {t(\"unexpected.error.description\")}\n

    \n

    \n {\n props.history.goBack();\n }}\n >\n {t(\"unexpected.error.back\")}\n \n

    \n
    \n
    \n );\n};\n\nexport default withRouter(ErrorPage);\n","import React, { Component } from \"react\";\nimport { BUGSNAG_KEY, GIT_HASH, GIT_TAG, IS_STAGING } from \"../../config/app\";\nimport bugsnag from \"@bugsnag/js\";\nimport bugsnagReact from \"@bugsnag/plugin-react\";\nimport ErrorPage from \"../../pages/others/ErrorPage\";\nimport { withRouter } from \"react-router-dom\";\nimport { getSession } from \"../../lib/auth\";\nimport { getDefaultStore } from \"../../containers/StoreSelector\";\n\nlet organization = getSession().organization || {};\norganization = {\n name: organization.name,\n enterprise: organization.isEnterprise,\n id: organization.id,\n};\nlet user = getSession().user || {};\nuser = {\n name: user.name,\n id: user.id,\n};\n\nfunction generateConfigs(error, info) {\n let releaseStage = IS_STAGING ? \"staging\" : \"production\";\n let configurations = {\n apiKey: BUGSNAG_KEY,\n autoNotify: false,\n user: user,\n autoCaptureSessions: false,\n releaseStage: releaseStage,\n maxEvents: 5,\n metaData: {\n info: info,\n organization: organization,\n hash: GIT_HASH,\n error: error,\n storeId: getDefaultStore().storeId,\n },\n beforeSend: (report) => {\n if (\n error === \"cancelled\" ||\n error === \"Not Authorised\" ||\n report.errorMessage === \"Not Authorised\" ||\n report.errorMessage === \"cancelled\" ||\n report.errorMessage === \"API call cancelling\" ||\n error === \"Request failed with status code 401\" ||\n error === \"API call cancelling\" ||\n report.errorMessage === \"Request failed with status code 401\"\n ) {\n return false;\n }\n },\n };\n if (GIT_TAG) {\n configurations.appVersion = GIT_TAG;\n }\n return configurations;\n}\n\nfunction notifyBugsnag(error, info = null) {\n if (!BUGSNAG_KEY) return;\n const bugsnagClient = bugsnag(generateConfigs(error, info));\n bugsnagClient.use(bugsnagReact, React);\n bugsnagClient.notify(new Error(error));\n}\n\nclass DefaultErrorBoundary extends Component {\n constructor(props) {\n super(props);\n this.state = { hasError: false };\n const { history } = props;\n history.listen((location, action) => {\n if (this.state.hasError) {\n this.setState({\n hasError: false,\n });\n }\n });\n }\n\n componentDidCatch(error, info) {\n this.setState({ hasError: true, error, info });\n }\n\n render() {\n if (this.state.hasError) {\n return (\n \n );\n }\n return this.props.children;\n }\n}\n\nconst bugsnagClient = BUGSNAG_KEY ? bugsnag(generateConfigs(null, null)) : null;\nbugsnagClient && bugsnagClient.use(bugsnagReact, React);\nif (bugsnagClient) {\n bugsnagClient.user = user;\n bugsnagClient.metaData = {\n organization: organization,\n hash: GIT_HASH,\n storeId: getDefaultStore().storeId,\n };\n}\nconst ErrorBoundary = bugsnagClient\n ? bugsnagClient.getPlugin(\"react\")\n : withRouter(DefaultErrorBoundary);\nconst errorBoundaryWrapper = (props) => {\n return (\n (\n \n )}\n {...props}\n />\n );\n};\nexport default errorBoundaryWrapper;\nexport { notifyBugsnag };\n","module.exports = __webpack_public_path__ + \"static/media/sms.18a28a12.svg\";","module.exports = __webpack_public_path__ + \"static/media/mail.e886f956.svg\";","import React, { Component } from 'react'\nimport { isEqual } from 'lodash'\nimport './style.css'\n\nfunction getValidationObj (DomNode) {\n let validationObj = DomNode.validity\n let errors = {}\n for (let key in validationObj) {\n errors[key] = validationObj[key]\n }\n return errors\n}\n\nclass Select extends Component {\n constructor (props) {\n super(props)\n this.handleChange = this.handleChange.bind(this)\n this.handleBlur = this.handleBlur.bind(this)\n this.runValidation = this.runValidation.bind(this)\n }\n runValidation (DomNode) {\n this.props.onValidation && this.props.onValidation(getValidationObj(DomNode))\n this.props.validationObject && this.props.validationObject(DomNode)\n }\n handleChange (e) {\n e.preventDefault()\n let value = e.target.value\n if (this.props.type === 'number') {\n value = Number(value)\n }\n this.props.onChange && this.props.onChange(value)\n this.runValidation(e.target)\n }\n handleBlur (e) {\n e.preventDefault()\n this.props.onBlur && this.props.onBlur()\n }\n componentDidMount () {\n this.runValidation(this.inputRef)\n }\n\n componentDidUpdate (prevProps) {\n if (!isEqual(prevProps.value, this.props.value)) {\n this.runValidation(this.inputRef)\n }\n if (prevProps.required !== this.props.required) {\n this.runValidation(this.inputRef, 'zone')\n }\n }\n\n handleDisabledOptions = (value)=>{\n return this.props.handleOptionDisable? this.props.handleOptionDisable(value) : false\n }\n\n render () {\n let { props } = this\n let value = (Array.isArray(props.value) ? props.value[0] : props.value) || ''\n if (props.type === 'number' && value) {\n value = Number(value)\n }\n return (\n \n { this.inputRef = node }}\n title={props.title}\n >\n \n {props.options.map(option => {\n if (typeof option === 'object' && !option.text) {\n return null\n }\n return \n {option.text ? option.text : option}\n \n })}\n \n \n )\n }\n}\n\nSelect.defaultProps = {\n options: [],\n disabled: false\n}\n\nexport default Select\n","import React, { Component } from \"react\";\nimport ReactDOM from \"react-dom\";\n\nexport default class PopupModal extends Component {\n constructor() {\n super();\n this.checkESC = this.checkESC.bind(this);\n this.checkClick = this.checkClick.bind(this);\n }\n checkESC(event) {\n // Check if ESC key is pressed\n if (event.which === 27) {\n this.props.close();\n }\n }\n checkClick(event) {\n // Check if the target is modal-backdrop\n if (this.modalRef === event.target) {\n this.props.close();\n }\n }\n componentWillMount() {\n if (this.props.show) {\n document.body.style.overflow = \"hidden\"; // Todo: Figure out a better way without touching the DOM\n }\n }\n componentDidMount() {\n if (this.props.show) {\n this.modalRef && this.modalRef.focus();\n }\n }\n componentDidUpdate(prevProps, prevState) {\n if (this.props.show !== prevProps.show) {\n this.modalRef && this.modalRef.focus();\n }\n }\n componentWillUnmount() {\n document.body.style.overflow = \"auto\";\n }\n\n render() {\n const { props } = this;\n if (props.show) {\n return ReactDOM.createPortal(\n {\n this.modalRef = node;\n }}\n onKeyDown={this.checkESC}\n onClick={this.checkClick}\n tabIndex=\"0\"\n >\n {props.children}\n ,\n document.getElementById(\"portal\")\n );\n }\n return null;\n }\n}\n","const getFileExtensionFromUrl = (url) => {\n return (\n typeof url === \"string\" && url.split(/[#?]/)[0].split(\".\").pop().trim()\n );\n};\n\nexport default getFileExtensionFromUrl;\n","import React, { Component } from \"react\";\n\nfunction getValidationObj(DomNode) {\n let validationObj = DomNode.validity;\n let errors = {};\n for (let key in validationObj) {\n errors[key] = validationObj[key];\n }\n return errors;\n}\n\nclass Textarea extends Component {\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.runValidation = this.runValidation.bind(this);\n }\n runValidation(DomNode) {\n this.props.onValidation &&\n this.props.onValidation(getValidationObj(DomNode));\n this.props.validationObject && this.props.validationObject(DomNode);\n }\n handleChange(e) {\n e.preventDefault();\n this.props.onChange && this.props.onChange(e.target.value);\n this.runValidation(e.target);\n }\n handleBlur(e) {\n e.preventDefault();\n this.props.onBlur && this.props.onBlur();\n }\n componentDidMount() {\n this.runValidation(this.inputRef);\n }\n componentDidUpdate(prevProps) {\n if (prevProps.value !== this.props.value) {\n this.runValidation(this.inputRef);\n }\n }\n render() {\n let { props } = this;\n return (\n \n {\n this.inputRef = node;\n }}\n />\n \n );\n }\n}\n\nexport default Textarea;\n","module.exports = __webpack_public_path__ + \"static/media/cross_gray.b2f7c29e.svg\";","module.exports = __webpack_public_path__ + \"static/media/image-placeholder.8158bda2.svg\";","module.exports = __webpack_public_path__ + \"static/media/drop-down-arrow.66b89c60.svg\";","module.exports = __webpack_public_path__ + \"static/media/customer-image-placeholder.cac3463f.svg\";","module.exports = __webpack_public_path__ + \"static/media/csv-icon.d7b1e0c0.svg\";","module.exports = __webpack_public_path__ + \"static/media/upload-products.09548b05.svg\";","module.exports = __webpack_public_path__ + \"static/media/categories-empty.f0c4c7b6.svg\";","module.exports = __webpack_public_path__ + \"static/media/csv-icon.d7b1e0c0.svg\";","module.exports = __webpack_public_path__ + \"static/media/import-customers.4cde618d.svg\";","module.exports = __webpack_public_path__ + \"static/media/info-icon.4465d420.svg\";","module.exports = __webpack_public_path__ + \"static/media/delete.a868c1c7.svg\";","module.exports = __webpack_public_path__ + \"static/media/phone.7143db4e.svg\";","module.exports = __webpack_public_path__ + \"static/media/customer-image-placeholder.cac3463f.svg\";","module.exports = __webpack_public_path__ + \"static/media/userImage.cac3463f.svg\";","module.exports = __webpack_public_path__ + \"static/media/2-wheeler.0b8beba7.svg\";","module.exports = __webpack_public_path__ + \"static/media/4-wheeler.c6d487d0.svg\";","module.exports = __webpack_public_path__ + \"static/media/drone.94758dcd.svg\";","module.exports = __webpack_public_path__ + \"static/media/vehicles-empty.ece2e3b7.svg\";","module.exports = __webpack_public_path__ + \"static/media/image.20f79380.png\";","module.exports = __webpack_public_path__ + \"static/media/coupons-empty.d35d3575.svg\";","module.exports = __webpack_public_path__ + \"static/media/download.8f3e3602.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-dustbin.4d0081db.svg\";","module.exports = __webpack_public_path__ + \"static/media/clock-icon.84da2519.svg\";","module.exports = __webpack_public_path__ + \"static/media/pickup.0d1477b8.svg\";","import React, { Suspense, lazy } from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport Loader from \"../../components/Loader\";\n\nexport const LazyComponent = (dynamicImport) => {\n const Component = lazy(dynamicImport);\n Component.preLoad = dynamicImport;\n return Component;\n};\n\nconst LazyComponentLoader = ({ Component, ...props }) => {\n return (\n }>\n \n \n );\n};\n\nexport default withRouter(LazyComponentLoader);\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAUCAYAAAHdIKxzAAAAAXNSR0IArs4c6QAAAE1JREFUGBljaJw215OJAQjABIgBBQ1T5z6GMFFZjFCuDEwhAx4RsBQjI0MayHSZ//8ZZsF1wRnkqUG39AkTyBqgoU9AGMqG24GdQR8zAAlCNYPIAoCXAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/plus-green.54d2bc2b.svg\";","module.exports = __webpack_public_path__ + \"static/media/genericCard.eba039ab.svg\";","module.exports = __webpack_public_path__ + \"static/media/dropdown.0f1b1397.svg\";","module.exports = __webpack_public_path__ + \"static/media/add-button-icon.040345a5.svg\";","module.exports = __webpack_public_path__ + \"static/media/image.6a1bdb45.png\";","module.exports = __webpack_public_path__ + \"static/media/image.20f79380.png\";","module.exports = __webpack_public_path__ + \"static/media/banner.5041f9f7.svg\";","module.exports = __webpack_public_path__ + \"static/media/attendance-empty.7c8129b1.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-marker-default.666d531d.svg\";","module.exports = __webpack_public_path__ + \"static/media/plus.54d2bc2b.svg\";","module.exports = __webpack_public_path__ + \"static/media/zopsmart-final-logo.b20801f8.svg\";","module.exports = __webpack_public_path__ + \"static/media/zopsmartlogo.b67443c6.svg\";","module.exports = __webpack_public_path__ + \"static/media/smart-store-logo-easy.e8980541.svg\";","module.exports = __webpack_public_path__ + \"static/media/enterprise-logo.a1106b57.svg\";","module.exports = __webpack_public_path__ + \"static/media/vehicle.54951654.svg\";","module.exports = __webpack_public_path__ + \"static/media/helper_icon.b24d0ec4.svg\";","module.exports = __webpack_public_path__ + \"static/media/imageUpload.db9df051.svg\";","module.exports = __webpack_public_path__ + \"static/media/previous.fe8f21bb.svg\";","module.exports = __webpack_public_path__ + \"static/media/next.4f5d0b6d.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-search.b8e6dc6f.svg\";","module.exports = __webpack_public_path__ + \"static/media/calender-icon.4bac9d55.svg\";","module.exports = __webpack_public_path__ + \"static/media/calender-icon.4bac9d55.svg\";","module.exports = __webpack_public_path__ + \"static/media/arrow.4a7636d4.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-search.b8e6dc6f.svg\";","module.exports = __webpack_public_path__ + \"static/media/horizontal-ellipsis.e1857e9d.svg\";","module.exports = __webpack_public_path__ + \"static/media/vertical-ellipsis.22d3550b.svg\";","module.exports = __webpack_public_path__ + \"static/media/view-icon.c6d411a6.svg\";","module.exports = __webpack_public_path__ + \"static/media/hamburger.939648f0.svg\";","module.exports = __webpack_public_path__ + \"static/media/close-icon.5f8ad35e.svg\";","module.exports = __webpack_public_path__ + \"static/media/notification-empty.0f5be6fb.svg\";","module.exports = __webpack_public_path__ + \"static/media/drop-down-arrow.66b89c60.svg\";","module.exports = __webpack_public_path__ + \"static/media/verified.b5cf15b7.svg\";","module.exports = __webpack_public_path__ + \"static/media/notVerified.f424d9c1.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-left-arrow.9e4016c3.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-right-arrow.535b07a4.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-dustbin.4d0081db.svg\";","module.exports = __webpack_public_path__ + \"static/media/shop.df3ca24b.svg\";","module.exports = __webpack_public_path__ + \"static/media/edit.6e9962e5.svg\";","module.exports = __webpack_public_path__ + \"static/media/download.8f3e3602.svg\";","module.exports = __webpack_public_path__ + \"static/media/products-empty.3f67be2f.svg\";","module.exports = __webpack_public_path__ + \"static/media/helpcard1.565d9553.svg\";","module.exports = __webpack_public_path__ + \"static/media/helpcard2.dd5ac81c.svg\";","module.exports = __webpack_public_path__ + \"static/media/helpcard3.59c3da67.svg\";","module.exports = __webpack_public_path__ + \"static/media/table-active.166b4dd9.svg\";","module.exports = __webpack_public_path__ + \"static/media/tree-view-inactive.43df8e73.svg\";","module.exports = __webpack_public_path__ + \"static/media/table-inactive.12da0745.svg\";","module.exports = __webpack_public_path__ + \"static/media/tree-view-active.9e04a756.svg\";","module.exports = __webpack_public_path__ + \"static/media/delete.a868c1c7.svg\";","module.exports = __webpack_public_path__ + \"static/media/brands-empty.1e592f74.svg\";","module.exports = __webpack_public_path__ + \"static/media/products.565d9553.svg\";","module.exports = __webpack_public_path__ + \"static/media/uploading-images.dd5ac81c.svg\";","module.exports = __webpack_public_path__ + \"static/media/content-marketing.59c3da67.svg\";","module.exports = __webpack_public_path__ + \"static/media/delete.a868c1c7.svg\";","module.exports = __webpack_public_path__ + \"static/media/csv-icon.d7b1e0c0.svg\";","module.exports = __webpack_public_path__ + \"static/media/import-customers.4cde618d.svg\";","module.exports = __webpack_public_path__ + \"static/media/info-icon.4465d420.svg\";","module.exports = __webpack_public_path__ + \"static/media/sample-tags.aacbe5a4.csv\";","module.exports = __webpack_public_path__ + \"static/media/tags-empty.73422e25.svg\";","module.exports = __webpack_public_path__ + \"static/media/delete.a868c1c7.svg\";","module.exports = __webpack_public_path__ + \"static/media/empty.cc212d35.svg\";","module.exports = __webpack_public_path__ + \"static/media/customer-image-placeholder.cac3463f.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon.85e6a5d3.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon.e886f956.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon.db927619.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-search.b8e6dc6f.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-marker.666d531d.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-search.b8e6dc6f.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-marker.666d531d.svg\";","module.exports = __webpack_public_path__ + \"static/media/store-marker.8cd2e1f4.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon.8f2575f2.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIoAAACKCAYAAAB1h9JkAAAABGdBTUEAALGPC/xhBQAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAiqADAAQAAAABAAAAigAAAAAT2uG1AAAMIklEQVR4Ae3deWwV1R4H8N/tQneobdmhLO2jtFqEgDxR//ApIaLiFozEBh8QhD/QGEMUNRpB4xKihj9M8B9jMKIxUSviFo1gjGKXyBPQFqvQFmSvBbrvffd74AzT23tv5947Z+4sv0l658zMmds5v/NhzsyZM8VHPEUfgb20mAbpM/8XpEX/Jbbes5989F/6D+302fow7XxwHkKCamAo0WD0GBKGwkiCRUBrbvQb+Yyij8ZIaQ+eSWRIGIqMxEhzDyNBaBjKSECw3eNIEAKGgiiEmxiJiA5DYSSinyRcGLCNoYSKEJ9JhkSGoQwJx+UFRjIsKgwlMCSMJDAiYpmh6MPCSPTRGJJmKDIcjERGIuicoSAsjCQoDv1KhsJI9B5Cpr0NhZGEhBG4wbtQGEmghbDL3oTCSMKiCLbRe1AYSTAHI67zFhRGMiKIUBm8A4WRhDJgaL03oDASQxjCZXI/FEYSrv4Nb3M3FEZiGMJIGd0LhZGMVPcRbXcnFEYSEQIjmd0HhZEYqfeI87gLCiOJGIDRHdwDhZEYrfOo8rkDCiOJqvIj2Skhksy2zKsIyR25d9iluEHfBbb64JwNRRGSDZM30OdzPqflY5dbXR+Bv88WSHBQzm16FCFZM3ENvT37bVFhRzqPUElVCfUM9ARWoBXLtkGCwjrzjKIICQJyqucUZmIqSCugRyY/IhetnNsKCQruvDOKQiRSQnlpOd2Td49YPN93ngorCqm5t1luVj23HRIUOFF1qU39fguQ4HgrWipo3aR1lJyQTGkJaZSakEpfN39talFCfJktkeBYnQNFEZL7xt5Hrf2t1NLfotXdxb6LIn3rVbeK+fys+fTBmQ+ouU/pWcW2SBAEZ0BRhAR3NzuKd9D6Sev9f9xxkKpbq6l/sF/gqGytpAfGPUC5ybmU6EukqSlT6cOzH4ptCj5sjQTltT8URUjWTlxLbxW9Jep8VMIowtljxfgVhDudPzv/FGDqOuto5YSVIk9xRjHtubCHjnUdE8smftgeCcpq77seRUhQcFykBk6FaYX0xZwvaPec3YQ7nm+av6GPzn2kZXu94HX/1b+p1/+OQIIA2PeMsodwgbDb/6Pkj/3WdtTSTdk30cy0mYgDtfe3E84smGalzxLNUWpiKm07vo1WT1wttk1OmSzONofaD4l8MX44BgnKaeo/jxgDd2V3xUjkLypOL6YDCw9Qsi9Z9J+sql1FL854kRaOXiiz0PHu43Sm5wwtyFog1qHpKaosoq6BLi1PFAlHIUH57HdGUYTkztw7qamviToHOrV6beptotGJo+mGMTdQVmIWNXY1UllNmThrXDf6OhqTNEb8TEqZpO2Dde0D7fTjxR+1dREmHIcE5bPXNYoiJLi7wXVH3b/r6OFJD1OC70qxX2h4QeuN3Zi/kaakTKGdZ3ZSUUURPVf/nGiSAiFMS5kWuMrosiORoHD2OaMoQoKOs+1F20VFpiem07K8ZbQ0Zyn92vYrnew5ST2DPaJpQX8KmqBxo8bRJ+c+ob7BPvrhwg/0zql3KCc5h67NvJZ8Ph+9e/pdWle3TtxOG9VxOZ9jkeD47QFFERIU8ET3CcpOzqa5mXNFRWMdLkpxe4wmZV/LPqpsqaTFOYspPzWfSjNL6avmr8R+yNvW30a7mnbR7qbdAtbGIxtpYHAAmyKZHI0EBY3/xaxCJPqaLM0opdcKX6MlOUv0q+mf3n/o6aNP0y+tv1DV/CrRubbv4j66cf+NQ/LFsOB4JCh7fKFYhERfybfl3CbAXJ1xtX41VbVcQoLuekwrfl9hRk+sK5AgHvGDoggJOsSK0osIdy3Hu46Lbnn0kegndMmj6dkyYwuNHzVev0lLN3Q1UHFlcSy3wa5BgqDEB4oiJHfn3S0uXCeOmqhVOJ7dfNr0Ka3/Y71oZrQN/gRuiZ+a9hQ9PvVx8ZRYvw3pB2seFA8DA9cbWHYVEpTXeiiKkLw5603CbXCoCRe1K2tX0t7ze4dlwQO/lwteprLxZf6AXAoJ7m5WH17tyQvXYQHyr7AWiiIkm/I30asFr4ry4Qyy4/QOOtl9kuZkzqG78u7Syo27leW/L6fyc+XaOn0Cva9vFL5B9V31jEQfGH/aOiiKkOAWt3FRIyX5kqijv0PcraCPRE5bC7bSE/lPiMXf2n+jW/53C53rPSc3B53jrIJhBxFOrmtu9OW/0kWpX2t2WhESHOaqCasEEqS3HtsqOtKQxoRu+8emPCbSeiSZiZmiB1ZsCPLBSIYHRT2UGJCg6Xgy/8nhR61bgw4yOX17/luZFEg+vuZj8dRXjwRDCSrmV4inw1rm2BKuPpPI0CTJhJJ5jEi+m/sd5SXnEbreN9dvDnqIuHORk0zjTBIMCS5aqxdUU3ZStmha8CwnxskTSBAjdV34MSABDFQonrtgujn7ZtH9/v2F78Wy/mNe5jzx9BfrMGwR412DIcF2NCnoO8F0tvcsbT9x6RmQWBH5h2eQIDRqmp4YkOCgcFH6aN2j4sEcljE9P/152jxjs0jrP/Sj45fmLhVPiTEASd/cyPwYkCSn/a37ZTKauaeQIEDmn1FiRCJrraajhmrbawlPdeWwgGBnFtzK3p57u3jQJ/fFvLS6dMjdDXpj3yt5j6anThfZXmp8iWraa0Q6wg/PIUF8zIViEhJZcUax4AnwQxMeopSEFLkrlWSUaHdAc7PmUvk15bRozCKxHaPpMQ4lismTSBAn8/pRTEair8T7x91P75e8r90GY9uWhi1DLnDR7ODaBC9shZswim1e9bygg6vD7eff5lkkiIs5ZxSFSHCQaCIOdxyme8feG7IZ+qvzLzGOBE+HcVcTbPrp4k+05MASwhDICCdPI0GsYoeiGImsUCNY8IL59pPb6e/uvykzKZPQsYbXMqpaq+iZo8/QpiObhrwRKL97hLnnkSA+sTU9MSBBZ9qu0l10uuc0HWg7oP0cajskXvEMVXlGmqFQ+0axnpFcDlr0UGJEIjvTAisPfR1HO48KOAfbDmqAGvzjQ2TXukVYGImucqKDEgMS/G48f9n2r226wxg52dLXQgfbr8DBCDX5HEfuHXiBK9dHMWckAUGL/BolRiT4/RjM3D3YTYuvWhxwOES9g71i3GrgBtz6YvAzXs7CSPrrR18fmCVsD+6wzKFXMJIgsYkMiglI5DHgBapALGhaNtRtoGfrn6WfW34W40LwslVWUhZlJGbIXcPO0SmHMw/ukqKYGEmIoBlvekxEoj8WDEV8ZeYr2ioMLlr7x1rxPo220p/A8EZcAOP9GjmfnT57SN8K8vPINH3UzEsbg6IIiSyGUSwyv5yjOcL7w8CDHzRbePXCi+/dyJiomo8MRTESWbBoscj9Y5hzc2MgeOGvUSxCguMMvGbB65vLcpeJvyagH9pooEyRZGEkBqMVGoqFSOSxWoyFkcjAG5gHhxIHJPJYLcLCSGTADc6HQ4kjEnnMirEwEhnoCOZDodgAiTx2RVgYiQxwhPMrUGyERJYhGBY8DcafoYhiYiRRBE3ucgmKDZHIA9RjQWfamsNrtIeDMo+BOSMxEKRwWXxkYyT6A8crGF82f8mdafqgWJgGlA7/7ws/ftDCAzL5V/GZxKSA4nUNRmJSMN38NWre64l/xPhMYnIduBEKIzEZCb7ObVAYiQIkboPCSBQhcRMURqIQiVugMBLFSNwAhZFYgMTpUBiJRUicDIWRWIjEqVAYicVInAiFkcQBidOgMJI4IXESFEYSRyROgcJI4ozECVAYiQ2Q2B0KI7EJEjtDYSQ2QmJXKIzEZkjsCIWR2BCJ3aAwEpsisRMURmJjJHaBwkhsjsQOUBiJA5DEGwojcQiSeEJhJA5CEi8ojMRhSOIBhZE4EInVUBiJQ5FYCYWROBiJVVAYicORWAGFkbgAiWoojMQlSFRCYSQuQqIKCiNxGRIVUBiJC5GYDYWRuBSJmVAYiYuRmAWFkbgciRlQGIkHkMQKhZF4BEksUBiJh5BEC4WReAxJNFAYiQeRRAqFkXgUSSRQGImHkRiFwkg8jsQIFEbCSEQEwv2nCYyEkWgRCAWFkWgh4gQiEAwKI2EbwyIQCIWRDAsRr0AE9FAYCZsIGQEJhZGEDBFvuBSBPdRHe6mMw8ERCB8BRhI+PryVI8ARMB6B/wOUPyFzN0NtzQAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/L-shape.7562d91a.svg\";","module.exports = __webpack_public_path__ + \"static/media/pickup.9fa75006.svg\";","module.exports = __webpack_public_path__ + \"static/media/delivery.22217079.svg\";","module.exports = __webpack_public_path__ + \"static/media/offline.91595dcf.svg\";","module.exports = __webpack_public_path__ + \"static/media/b2b.5c7beee3.svg\";","module.exports = __webpack_public_path__ + \"static/media/no-orders.e965e22a.svg\";","module.exports = __webpack_public_path__ + \"static/media/rcm.9320a483.svg\";","module.exports = __webpack_public_path__ + \"static/media/seo.00c0661e.svg\";","module.exports = __webpack_public_path__ + \"static/media/new-customer.80f0302d.svg\";","module.exports = __webpack_public_path__ + \"static/media/csv-icon.d7b1e0c0.svg\";","module.exports = __webpack_public_path__ + \"static/media/upload-products.09548b05.svg\";","module.exports = __webpack_public_path__ + \"static/media/cx-phone-icon.3772bf78.svg\";","module.exports = __webpack_public_path__ + \"static/media/cx-email-icon.e886f956.svg\";","module.exports = __webpack_public_path__ + \"static/media/verified.9e238b58.svg\";","module.exports = __webpack_public_path__ + \"static/media/address-inactive.ab726fbe.svg\";","module.exports = __webpack_public_path__ + \"static/media/delete-icon.48130b94.svg\";","module.exports = __webpack_public_path__ + \"static/media/total-orders.4e4fcd24.svg\";","module.exports = __webpack_public_path__ + \"static/media/purchase-worth.21bac666.svg\";","module.exports = __webpack_public_path__ + \"static/media/joined-on.2c671ee0.svg\";","module.exports = __webpack_public_path__ + \"static/media/last-purchase.fed73444.svg\";","module.exports = __webpack_public_path__ + \"static/media/purchase-history.23b71583.svg\";","module.exports = __webpack_public_path__ + \"static/media/no-customers.1f148eb3.svg\";","module.exports = __webpack_public_path__ + \"static/media/offers.63ce91a9.svg\";","module.exports = __webpack_public_path__ + \"static/media/offline-marketing.ef996382.svg\";","module.exports = __webpack_public_path__ + \"static/media/target-customer.91aa1b86.svg\";","module.exports = __webpack_public_path__ + \"static/media/preorder.08ebd589.svg\";","module.exports = __webpack_public_path__ + \"static/media/visa.e1940f06.svg\";","module.exports = __webpack_public_path__ + \"static/media/mastercard.7c8813a8.svg\";","module.exports = __webpack_public_path__ + \"static/media/americanExpress.da735f1f.svg\";","module.exports = __webpack_public_path__ + \"static/media/returns-empty.a9d4c6d7.svg\";","module.exports = __webpack_public_path__ + \"static/media/analytics_empty.385a52f4.png\";","module.exports = __webpack_public_path__ + \"static/media/add-icon.2ff32335.svg\";","module.exports = __webpack_public_path__ + \"static/media/subtract-icon.8e6392eb.svg\";","module.exports = __webpack_public_path__ + \"static/media/delete-icon.4d0081db.svg\";","module.exports = __webpack_public_path__ + \"static/media/map-marker.c5d70af8.svg\";","module.exports = __webpack_public_path__ + \"static/media/store-marker.8cd2e1f4.svg\";","module.exports = __webpack_public_path__ + \"static/media/vehicle-marker.942007a8.svg\";","module.exports = __webpack_public_path__ + \"static/media/order-log-empty.a60e3b43.svg\";","module.exports = __webpack_public_path__ + \"static/media/customer-image-placeholder.cac3463f.svg\";","module.exports = __webpack_public_path__ + \"static/media/employeeEmpty.a2018a9a.svg\";","module.exports = __webpack_public_path__ + \"static/media/picker-empty.701716d4.svg\";","module.exports = __webpack_public_path__ + \"static/media/picker.7c7a6bbb.svg\";","module.exports = __webpack_public_path__ + \"static/media/picker-empty.701716d4.svg\";","module.exports = __webpack_public_path__ + \"static/media/seller-empty.71e76a3b.svg\";","module.exports = __webpack_public_path__ + \"static/media/user-empty.89038852.svg\";","module.exports = __webpack_public_path__ + \"static/media/vehicles-empty.ece2e3b7.svg\";","module.exports = __webpack_public_path__ + \"static/media/4-wheeler.c6d487d0.svg\";","module.exports = __webpack_public_path__ + \"static/media/no-trips.377ec071.svg\";","module.exports = __webpack_public_path__ + \"static/media/ribbon.551f6b7b.svg\";","module.exports = __webpack_public_path__ + \"static/media/call-inactive.02ae57af.svg\";","module.exports = __webpack_public_path__ + \"static/media/cash-icon.158b282f.svg\";","module.exports = __webpack_public_path__ + \"static/media/signature.628e9cd9.svg\";","module.exports = __webpack_public_path__ + \"static/media/shop-icon.eb98f58e.svg\";","module.exports = __webpack_public_path__ + \"static/media/address-inactive.8ed296f1.svg\";","module.exports = __webpack_public_path__ + \"static/media/address-active.e76ab4fe.svg\";","module.exports = __webpack_public_path__ + \"static/media/clock-image.59bf414f.svg\";","module.exports = __webpack_public_path__ + \"static/media/expand-plus.e985ae67.svg\";","module.exports = __webpack_public_path__ + \"static/media/expand-minus.bb7a8ab3.svg\";","module.exports = __webpack_public_path__ + \"static/media/agent-icon.32cd6c34.svg\";","module.exports = __webpack_public_path__ + \"static/media/no-trips.377ec071.svg\";","module.exports = __webpack_public_path__ + \"static/media/runner_executives.3879a785.svg\";","module.exports = __webpack_public_path__ + \"static/media/image.20f79380.png\";","module.exports = __webpack_public_path__ + \"static/media/form_place_holder.93598c75.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABDQAAAEsCAIAAACzMXR8AAAABGdBTUEAALGPC/xhBQAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAENKADAAQAAAABAAABLAAAAADuExfZAAAjOUlEQVR4Ae3d7XLjuJkGUOvbdqcz2cnWVuX+rypXsH82ySQ9tvXtfSWn1IpFSTQJSQR0upIpmSJB4EBl+zEIoLf48dcH/wgQIECAAAECBAgQIHBrgf6tK+D+BAgQIECAAAECBAgQ2AgIJz4HBAgQIECAAAECBAh0QkA46UQ3qAQBAgQIECBAgAABAsKJzwABAgQIECBAgAABAp0QEE460Q0qQYAAAQIECBAgQICAcOIzQIAAAQIECBAgQIBAJwSEk050g0oQIECAAAECBAgQICCc+AwQIECAAAECBAgQINAJAeGkE92gEgQIECBAgAABAgQICCc+AwQIECBAgAABAgQIdEJAOOlEN6gEAQIECBAgQIAAAQLCic8AAQIECBAgQIAAAQKdEBBOOtENKkGAAAECBAgQIECAgHDiM0CAAAECBAgQIECAQCcEhJNOdINKECBAgAABAgQIECAgnPgMECBAgAABAgQIECDQCQHhpBPdoBIECBAgQIAAAQIECAgnPgMECBAgQIAAAQIECHRCQDjpRDeoBAECBAgQIECAAAECwonPAAECBAgQIECAAAECnRAQTjrRDSpBgAABAgQIECBAgIBw4jNAgAABAgQIECBAgEAnBISTTnSDShAgQIAAAQIECBAgIJz4DBAgQIAAAQIECBAg0AkB4aQT3aASBAgQIECAAAECBAgIJz4DBAgQIECAAAECBAh0QkA46UQ3qAQBAgQIECBAgAABAsKJzwABAgQIECBAgAABAp0QEE460Q0qQYAAAQIECBAgQICAcOIzQIAAAQIECBAgQIBAJwSEk050g0oQIECAAAECBAgQICCc+AwQIECAAAECBAgQINAJAeGkE92gEgQIECBAgAABAgQICCc+AwQIECBAgAABAgQIdEJAOOlEN6gEAQIECBAgQIAAAQLCic8AAQIECBAgQIAAAQKdEBBOOtENKkGAAAECBAgQIECAgHDiM0CAAAECBAgQIECAQCcEhJNOdINKECBAgAABAgQIECAgnPgMECBAgAABAgQIECDQCQHhpBPdoBIECBAgQIAAAQIECAgnPgMECBAgQIAAAQIECHRCQDjpRDeoBAECBAgQIECAAAECQwQECBC4W4H//duPu227hmch8Jc/f8+inipJgACBVAJGTlJJKocAAQIECBAgQIAAgVYCwkkrPhcTIECAAAECBAgQIJBKQDhJJakcAgQIECBAgAABAgRaCQgnrfhcTIAAAQIECBAgQIBAKgHhJJWkcggQIECAAAECBAgQaCUgnLTiczEBAgQIECBAgAABAqkEhJNUksohQIAAAQIECBAgQKCVgHDSis/FBAgQIECAAAECBAikEhBOUkkqhwABAgQIECBAgACBVgLCSSs+FxMgQIAAAQIECBAgkEpAOEklqRwCBAgQIECAAAECBFoJCCet+FxMgAABAgQIECBAgEAqAeEklaRyCBAgQIAAAQIECBBoJdBb/PhrqwJcTIAAAQIECBAgQIAAgRQCRk5SKCqDAAECBAgQIECAAIHWAsJJa0IFECBAgAABAgQIECCQQkA4SaGoDAIECBAgQIAAAQIEWgsIJ60JFUCAAAECBAgQIECAQAoB4SSFojIIECBAgAABAgQIEGgtIJy0JlQAAQIECBAgQIAAAQIpBISTFIrKIECAAAECBAgQIECgtYBw0ppQAQQIECBAgAABAgQIpBAQTlIoKoMAAQIECBAgQIAAgdYCwklrQgUQIECAAAECBAgQIJBCQDhJoagMAgQIECBAgAABAgRaCwgnrQkVQIAAAQIECBAgQIBACgHhJIWiMggQIECAAAECBAgQaC0gnLQmVAABAgQIECBAgAABAikEhJMUisogQIAAAQIECBAgQKC1gHDSmlABBAgQIECAAAECBAikEBBOUigqgwABAgQIECBAgACB1gLCSWtCBRAgQIAAAQIECBAgkEJAOEmhqAwCBAgQIECAAAECBFoLDFuXoAACBAgQePjxOqNA4EPg+/MEBQECBAg0EzBy0szNVQQIECBAgAABAgQIJBYQThKDKo4AAQIECBAgQIAAgWYCwkkzN1cRIECAAAECBAgQIJBYQDhJDKo4AgQIECBAgAABAgSaCQgnzdxcRYAAAQIECBAgQIBAYgHhJDGo4ggQIECAAAECBAgQaCYgnDRzcxUBAgQIECBAgAABAokFhJPEoIojQIAAAQIECBAgQKCZgHDSzM1VBAgQIECAAAECBAgkFhBOEoMqjgABAgQIECBAgACBZgLCSTM3VxEgQIAAAQIECBAgkFhAOEkMqjgCBAgQIECAAAECBJoJCCfN3FxFgAABAgQIECBAgEBigWHi8hRHgACBuxT4/jy5y3ZrNAECBAgQSClg5CSlprIIECBAgAABAgQIEGgsIJw0pnMhAQIECBAgQIAAAQIpBYSTlJrKIkCAAAECBAgQIECgsYBw0pjOhQQIECBAgAABAgQIpBQQTlJqKosAAQIECBAgQIAAgcYCwkljOhcSIECAAAECBAgQIJBSQDhJqaksAgQIECBAgAABAgQaCwgnjelcSIAAAQIECBAgQIBASgHhJKWmsggQIECAAAECBAgQaCwgnDSmcyEBAgQIECBAgAABAikFhJOUmsoiQIAAAQIECBAgQKCxgHDSmM6FBAgQIECAAAECBAikFBBOUmoqiwABAgQIECBAgACBxgLCSWM6FxIgQIAAAQIECBAgkFJAOEmpqSwCBAgQIECAAAECBBoLCCeN6VxIgAABAgQIECBAgEBKAeEkpaayCBAgQIAAAQIECBBoLCCcNKZzIQECBAgQIECAAAECKQWEk5SayiJAgAABAgQIECBAoLGAcNKYzoUECBAgQIAAAQIECKQUEE5SaiqLAAECBAgQIECAAIHGAsJJYzoXEiBAgAABAgQIECCQUkA4SampLAIECBAgQIAAAQIEGgsIJ43pXEiAAAECBAgQIECAQEoB4SSlprIIECBAgAABAgQIEGgsIJw0pnMhAQIECBAgQIAAAQIpBYSTlJrKIkCAAAECBAgQIECgsYBw0pjOhQQIECBAgAABAgQIpBQQTlJqKosAAQIECBAgQIAAgcYCwkljOhcSIECAAAECBAgQIJBSQDhJqaksAgQIECBAgAABAgQaCwgnjelcSIAAAQIECBAgQIBASgHhJKWmsggQIECAAAECBAgQaCwgnDSmcyEBAgQIECBAgAABAikFhJOUmsoiQIAAAQIECBAgQKCxgHDSmM6FBAgQIECAAAECBAikFBBOUmoqiwABAgQIECBAgACBxgLCSWM6FxIgQIAAAQIECBAgkFJAOEmpqSwCBAgQIECAAAECBBoLCCeN6VxIgAABAgQIECBAgEBKAeEkpaayCBAgQIAAAQIECBBoLCCcNKZzIQECBAgQIECAAAECKQWEk5SayiJAgACBxXI1nS3X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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABDQAAAEsCAIAAACzMXR8AAAABGdBTUEAALGPC/xhBQAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAENKADAAQAAAABAAABLAAAAADuExfZAAAaxklEQVR4Ae3d+1IbRxYHYHRBXGzsxEm2at//qfwEu7VrOzEEDLqxjVkjRNTDaBgpp5vPf8SSRt1z5jtd5flFmtFgdvHxwB8CBAgQIECAAAECBAj83QLDv7sA+ydAgAABAgQIECBAgMCdgHBiHRAgQIAAAQIECBAgEEJAOAnRBkUQIECAAAECBAgQICCcWAMECBAgQIAAAQIECIQQEE5CtEERBAgQIECAAAECBAgIJ9YAAQIECBAgQIAAAQIhBISTEG1QBAECBAgQIECAAAECwok1QIAAAQIECBAgQIBACAHhJEQbFEGAAAECBAgQIECAgHBiDRAgQIAAAQIECBAgEEJAOAnRBkUQIECAAAECBAgQICCcWAMECBAgQIAAAQIECIQQEE5CtEERBAgQIECAAAECBAgIJ9YAAQIECBAgQIAAAQIhBISTEG1QBAECBAgQIECAAAECwok1QIAAAQIECBAgQIBACAHhJEQbFEGAAAECBAgQIECAgHBiDRAgQIAAAQIECBAgEEJAOAnRBkUQIECAAAECBAgQICCcWAMECBAgQIAAAQIECIQQEE5CtEERBAgQIECAAAECBAgIJ9YAAQIECBAgQIAAAQIhBISTEG1QBAECBAgQIECAAAECwok1QIAAAQIECBAgQIBACAHhJEQbFEGAAAECBAgQIECAgHBiDRAgQIAAAQIECBAgEEJAOAnRBkUQIECAAAECBAgQICCcWAMECBAgQIAAAQIECIQQEE5CtEERBAgQIECAAAECBAgIJ9YAAQIECBAgQIAAAQIhBISTEG1QBAECBAgQIECAAAECwok1QIAAAQIECBAgQIBACAHhJEQbFEGAAAECBAgQIECAgHBiDRAgQIAAAQIECBAgEEJAOAnRBkUQIECAAAECBAgQICCcWAMECBAgQIAAAQIECIQQEE5CtEERBAgQIECAAAECBAgIJ9YAAQIECBAgQIAAAQIhBISTEG1QBAECBAgQIECAAAECwok1QIAAAQIECBAgQIBACAHhJEQbFEGAAAECBAgQIECAgHBiDRAgQIAAAQIECBAgEEJAOAnRBkUQIECAAAECBAgQICCcWAMECBAgQIAAAQIECIQQEE5CtEERBAgQIECAAAECBAgIJ9YAAQIECBAgQIAAAQIhBISTEG1QBAECBAgQIECAAAECwok1QIAAAQIECBAgQIBACAHhJEQbFEGAAAECBAgQIECAgHBiDRAgQIAAAQIECBAgEEJAOAnRBkUQIECAAAECBAgQICCcWAMECBAgQIAAAQIECIQQEE5CtEERBAgQIECAAAECBAgIJ9YAAQIECBAgQIAAAQIhBISTEG1QBAECBAgQIECAAAECwok1QIAAAQIECBAgQIBACAHhJEQbFEGAAAECBAgQIECAgHBiDRAgQIAAAQIECBAgEEJAOAnRBkUQIECAAAECBAgQICCcWAMECBAgQIAAAQIECIQQEE5CtEERBAgQIECAAAECBAgIJ9YAAQIECBAgQIAAAQIhBISTEG1QBAECBAgQIECAAAECwok1QIAAAQIECBAgQIBACAHhJEQbFEGAAAECBAgQIECAgHBiDRAgQIAAAQIECBAgEEJAOAnRBkUQIECAAAECBAgQICCcWAMECBAgQIAAAQIECIQQEE5CtEERBAgQIECAAAECBAgIJ9YAAQIECBAgQIAAAQIhBISTEG1QBAECBAgQIECAAAECwok1QIAAAQIECBAgQIBACAHhJEQbFEGAAAECBAgQIECAgHBiDRAgQIAAAQIECBAgEEJAOAnRBkUQIECAAAECBAgQICCcWAMECBAgQIAAAQIECIQQEE5CtEERBAgQIECAAAECBAgIJ9YAAQIECBAgQIAAAQIhBISTEG1QBAECBAgQIECAAAECwok1QIAAAQIECBAgQIBACAHhJEQbFEGAAAECBAgQIECAgHBiDRAgQIAAAQIECBAgEEJAOAnRBkUQIECAAAECBAgQICCcWAMECBAgQIAAAQIECIQQEE5CtEERBAgQIECAAAECBAgIJ9YAAQIECBAgQIAAAQIhBISTEG1QBAECBAgQIECAAAECwok1QIAAAQIECBAgQIBACAHhJEQbFEGAAAECBAgQIECAgHBiDRAgQIAAAQIECBAgEEJAOAnRBkUQIECAAAECBAgQICCcWAMECBAgQIAAAQIECIQQEE5CtEERBAgQIECAAAECBAgIJ9YAAQIECBAgQIAAAQIhBISTEG1Q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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/Mobile2.f0e97c84.svg\";","module.exports = __webpack_public_path__ + \"static/media/gridBlank.93b72dce.png\";","module.exports = __webpack_public_path__ + \"static/media/ImageCollection.1b4e1f77.png\";","module.exports = __webpack_public_path__ + \"static/media/blogs-empty.61d2f8fd.svg\";","module.exports = __webpack_public_path__ + \"static/media/recipe-empty.61d2f8fd.svg\";","module.exports = __webpack_public_path__ + \"static/media/influencer-empty.61d2f8fd.svg\";","module.exports = __webpack_public_path__ + \"static/media/pages-empty.14e222f0.svg\";","module.exports = __webpack_public_path__ + \"static/media/campaigns-empty.14e222f0.svg\";","module.exports = __webpack_public_path__ + \"static/media/delete-icon.4d0081db.svg\";","module.exports = __webpack_public_path__ + \"static/media/info-icon.4465d420.svg\";","module.exports = __webpack_public_path__ + \"static/media/banners_empty.c529dfd5.svg\";","module.exports = __webpack_public_path__ + \"static/media/image-placeholder.8158bda2.svg\";","module.exports = __webpack_public_path__ + \"static/media/increase-icon.94eb8155.svg\";","module.exports = __webpack_public_path__ + \"static/media/decrease-icon.25e1e98b.svg\";","module.exports = __webpack_public_path__ + \"static/media/store-empty.5f79f1c1.svg\";","module.exports = __webpack_public_path__ + \"static/media/picking-queue.c1bb2ebf.svg\";","module.exports = __webpack_public_path__ + \"static/media/dispute-empty.0d578a73.svg\";","module.exports = __webpack_public_path__ + \"static/media/capacityplanner.52ffecb1.svg\";","module.exports = __webpack_public_path__ + \"static/media/Arrow-right.98750ce7.svg\";","module.exports = __webpack_public_path__ + \"static/media/Arrow-left.e2b88920.svg\";","module.exports = __webpack_public_path__ + \"static/media/pickup.9fa75006.svg\";","module.exports = __webpack_public_path__ + \"static/media/delivery.22217079.svg\";","module.exports = __webpack_public_path__ + \"static/media/offline.91595dcf.svg\";","module.exports = __webpack_public_path__ + \"static/media/b2b.5c7beee3.svg\";","module.exports = __webpack_public_path__ + \"static/media/click-collect-empty.ecc25003.svg\";","module.exports = __webpack_public_path__ + \"static/media/designation.d5dd3867.svg\";","module.exports = __webpack_public_path__ + \"static/media/delete.a868c1c7.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAANCAYAAAH9DC8dAAAAAXNSR0IArs4c6QAAANNJREFUGBljYACBVatWMYMZeInG6fNTmRj+//+Dqqph2twMhsbpc2tRhYG8pmnzC+CCrdPn6DCBeI0zFzryykvdZmiYOtetr28VJ1jJ/PnzOWBqmZ78YvDoWwWRYQSJNkxfaMbK8ushTAVDy5yl8mAZuAhY1XwHxv9/ueESDdPmuTAyMij/Z/q9uCE9/Rtj49S5yf8ZGRnlORmXJCYm/oDpZmH8//8/AwPjl1+/fv2FCYJosFFAOUag552ZmBjV2Bi5l1akh32E2wFT3TZjnhZQrxcA3wFHE1AdavEAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAANCAYAAAH9DC8dAAAAAXNSR0IArs4c6QAAANdJREFUGBljaJo2z54BARqmze8H8xqnzV3E0DR9fgRCrm/OKiGmn79+/4cINc2cr9s0fV4eQgGQ1T9/vgDDpCVL+Bqmzm9HkQFzGqfNewITZQQxGqfOPSbBoo9wQsPUuRDzgUrPgJU2TJt7GaYHlQbKvG6cNj8UVZSBAWxyx8xFcj/+/NnJyMiwsS4zsZKRkfE/WAKmum/VKs5Pbz6vAKoXYYIJgmjGr1/ZgZQEw3+GcywggbaFC4V/ffm75+P3/3saspLNQWIsQMun//r691VDdpIhSAAGACuETyJU/AN8AAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/add-button.dc79b51a.svg\";","module.exports = __webpack_public_path__ + \"static/media/delete.a868c1c7.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-marker-orange.f7b81029.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-marker-seagreen.fb1bf860.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-marker-darkmagenta.88739104.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-marker-darkvoilet.dffd7141.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-marker-maroon.f15044a4.svg\";","module.exports = __webpack_public_path__ + \"static/media/kml.fe0572f5.svg\";","module.exports = __webpack_public_path__ + \"static/media/dropdown arrow.e12127c1.svg\";","module.exports = __webpack_public_path__ + \"static/media/cx-delete-icon.48130b94.svg\";","module.exports = __webpack_public_path__ + \"static/media/announcementBar-close-icon.0281d090.svg\";","module.exports = __webpack_public_path__ + \"static/media/highlight.30773000.png\";","module.exports = __webpack_public_path__ + \"static/media/Tag-icon.294ceef1.svg\";","module.exports = __webpack_public_path__ + \"static/media/Link-icon.29d5ec1f.svg\";","module.exports = __webpack_public_path__ + \"static/media/empty.887913fe.svg\";","module.exports = __webpack_public_path__ + \"static/media/tooltip.0b860776.svg\";","module.exports = __webpack_public_path__ + \"static/media/rackEmpty.9cc57645.svg\";","module.exports = __webpack_public_path__ + \"static/media/empty.887913fe.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/tags-empty.73422e25.svg\";","module.exports = __webpack_public_path__ + \"static/media/cancelledLeave.54cd3dc0.svg\";","module.exports = __webpack_public_path__ + \"static/media/teamLeave.ece47195.svg\";","module.exports = __webpack_public_path__ + \"static/media/transactionEmptyState.b42262fe.svg\";","module.exports = __webpack_public_path__ + \"static/media/my-leaves-empty.c0db57b7.svg\";","module.exports = __webpack_public_path__ + \"static/media/customer-image-placeholder.cac3463f.svg\";","module.exports = __webpack_public_path__ + \"static/media/left-arrow.4f24da88.svg\";","module.exports = __webpack_public_path__ + \"static/media/right-arrow.22275133.svg\";","module.exports = __webpack_public_path__ + \"static/media/search.b8e6dc6f.svg\";","module.exports = __webpack_public_path__ + \"static/media/noOrder.2ed7deae.svg\";","module.exports = __webpack_public_path__ + \"static/media/dropdown.0f1b1397.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-dustbin.4d0081db.svg\";","module.exports = __webpack_public_path__ + \"static/media/empty.8820d60e.svg\";","module.exports = __webpack_public_path__ + \"static/media/csv-icon.d8647110.svg\";","module.exports = __webpack_public_path__ + \"static/media/import-customers.4cde618d.svg\";","module.exports = __webpack_public_path__ + \"static/media/sample.7fb97e87.csv\";","module.exports = __webpack_public_path__ + \"static/media/logs-empty.a60e3b43.svg\";","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Phone,\n VALIDATION_TYPES,\n} from \"../../../components/Form\";\nimport API from \"../../../lib/api\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { withRouter } from \"react-router-dom\";\nimport Loader from \"../../../components/Loader\";\n\nclass Signup extends BaseForm {\n constructor(props) {\n super(props);\n this.state.values = {\n // states are name of form fields\n email: \"\",\n phone: \"\",\n name: \"\",\n };\n this.state.formError = \"\";\n this.state.loading = false;\n this.handleSignup = this.handleSignup.bind(this);\n }\n\n handleSignup(formData) {\n if (formData.phone === \"\") {\n delete formData.phone;\n }\n this.api = new API({ url: \"/account-service/me\" });\n this.api\n .post(formData)\n .then((response) => {\n this.props.history.push(\"/account-created\");\n })\n .catch((e) => {\n this.setState({\n submitting: false,\n formError: e.message && e.message.split(\":\")[1],\n });\n console.error(e);\n });\n }\n\n onSubmit(data) {\n this.setState({\n submitting: true,\n });\n this.handleSignup(data);\n }\n\n componentDidMount() {\n this.setState({\n loading: true,\n });\n const api = new API({ url: \"/account-service/country\" });\n api\n .get()\n .then(\n (response) => {\n this.isoCode = response.data.country.isoCode;\n this.setState({\n loading: false,\n });\n },\n (error) => {\n this.setState({\n countryError: error,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n componentWillUnmount() {\n this.api && this.api.cancel();\n }\n\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n return this.state.loading ? (\n \n ) : (\n \n {this.state.formError && (\n
    {this.state.formError}
    \n )}\n \n\n \n\n {\n this.updateState([\"phone\"], value);\n }}\n />\n\n
    \n \n {getMessage(\"signup.submitText\")}\n \n
    \n \n );\n }\n}\n\nexport default withRouter(Signup);\n","import React, { Fragment } from \"react\";\nimport PublicPage from \"../../../containers/PublicPage/index\";\nimport { getMessage } from \"../../../lib/translator\";\nimport SignUpForm from \"./form\";\nimport { Link, Redirect } from \"react-router-dom\";\nimport { Consumer } from \"../../../containers/Context\";\n\nexport default function SignUp(props) {\n return (\n \n \n {(isEnterprise) =>\n isEnterprise ? (\n \n ) : (\n \n
    \n

    {getMessage(\"signup.heading\")}

    \n

    \n {getMessage(\"signup.subheading\")}\n

    \n
    \n
    \n \n

    \n {getMessage(\"signup.oldUser.message\")}{\" \"}\n \n {getMessage(\"signup.oldUser.signinText\")}\n \n

    \n
    \n
    \n )\n }\n
    \n
    \n );\n}\n","import React from \"react\";\n\nexport default function HidePassword() {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nexport default function ShowPassword() {\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport { BaseForm, Input, VALIDATION_TYPES } from \"../../../components/Form\";\nimport { Link, withRouter } from \"react-router-dom\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { saveSession } from \"../../../lib/auth\";\nimport { set, get } from \"../../../lib/storage\";\nimport API from \"../../../lib/api\";\nimport { roleMapping } from \"../../../lib/commonlyused\";\nimport { GOOGLE_MAP_DEFAULT_KEY } from \"../../../config/app\";\nimport { getSession } from \"../../../lib/auth\";\nimport HidePassword from \"../../../components/Form/icons/HidePassword\";\nimport ShowPassword from \"../../../components/Form/icons/ShowPassword\";\nimport { GO_HOST } from \"../../../config/app\";\n\nconst version2auth = () => {\n if (GO_HOST.includes(\"wesellit.ph\")) return true;\n return false;\n};\n\nclass LoginForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.values = {\n username: \"\",\n password: \"\",\n remember: false,\n };\n if (this.props.enterprise) {\n this.state.values.organization = get(\"organization-name\");\n }\n this.state.formError = \"\";\n this.state.showPassword = false;\n this.handleLogin = this.handleLogin.bind(this);\n this.autoFillAction = this.autoFillAction.bind(this);\n this.handleRedirect = this.handleRedirect.bind(this);\n }\n\n handleLogin(formData) {\n this.api = new API({ url: \"/account-service/auth\" });\n this.api\n .post(formData, version2auth() && { \"X-API-VERSION\": 2 })\n .then((response) => {\n let token = response.data.user.accessToken;\n delete response.data.user.accessToken;\n saveSession({\n token: token,\n organization: response.data.organization,\n user: response.data.user,\n });\n this.setState({ submitting: false }, () => {\n // let configApi = new API({ url: '/config-service/config/backOffice' })\n const websiteConfigApi = new API({\n url: \"/config-service/config/website\",\n });\n const websitemeApi = new API({\n url: \"/account-service/me\",\n });\n Promise.all([websiteConfigApi.get(), websitemeApi.get()])\n .then(([websiteConfigResponse, websitemeApiResponse]) => {\n const key = websiteConfigResponse?.data?.website?.googleApisKey;\n saveSession({\n user: websitemeApiResponse?.data?.user,\n });\n set(\"googleMapAPIkey\", key || GOOGLE_MAP_DEFAULT_KEY);\n this.handleRedirect(response);\n })\n .catch((error) => {\n console.error(error);\n if (error.code === 401) {\n throw error;\n } else {\n set(\"googleMapAPIkey\", GOOGLE_MAP_DEFAULT_KEY);\n this.handleRedirect(response);\n }\n });\n });\n })\n .catch((e) => {\n console.error(e);\n this.setState({\n submitting: false,\n formError: e.message && e.message.split(\":\")[1],\n });\n });\n }\n handleRedirect(response) {\n const { history, location } = this.props;\n let role =\n response.data.user.designation &&\n response.data.user.designation.roles &&\n response.data.user.designation.roles[0]\n ? response.data.user.designation.roles[0]\n : {};\n let roleObject = roleMapping.find((mapping) => mapping.name === role.name);\n let roleRedirect = roleObject ? roleObject.redirect : null;\n const { organization } = getSession();\n roleRedirect = !organization?.industry ? \"/onboarding\" : roleRedirect;\n roleRedirect = roleRedirect || \"/\";\n if (location.state && location.state.from) {\n history.push(location.state.from.pathname);\n } else {\n history.push(roleRedirect);\n }\n this.props.enterprise &&\n set(\"organization-name\", response.data.organization.name);\n }\n\n onSubmit(data) {\n this.setState({\n submitting: true,\n });\n this.handleLogin(data);\n }\n\n autoFillAction(e) {\n this.setState({ autoFill: true });\n }\n\n componentDidMount() {\n window.addEventListener(\"animationstart\", this.autoFillAction);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"animationstart\", this.autoFillAction);\n this.api && this.api.cancel();\n }\n\n handleShowPassword = (e) => {\n e.preventDefault();\n this.setState((prevState) => ({\n showPassword: !prevState.showPassword,\n }));\n };\n\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n const { enterprise } = this.props;\n const { showPassword } = this.state;\n const PasswordIcon = showPassword ? ShowPassword : HidePassword;\n\n return (\n
    \n {this.state.formError && (\n
    {this.state.formError}
    \n )}\n
    \n \n \n {enterprise &&
    @
    }\n {enterprise && (\n \n )}\n
    \n
    \n \n
    \n \n
    \n
    \n\n
    \n {\n this.updateState([\"remember\"], e.target.checked);\n }}\n />\n \n {!enterprise && (\n \n {getMessage(\"login.forgotPassword\")}\n \n )}\n
    \n
    \n {enterprise ? (\n \n {getMessage(\"login.submitText\")}\n \n ) : (\n \n {getMessage(\"login.submitText\")}\n \n )}\n
    \n \n \n );\n }\n}\n\nexport default withRouter(LoginForm);\n","import React, { Fragment } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport PublicPage from \"../../../containers/PublicPage/index\";\nimport LoginForm from \"./form\";\nimport { Consumer } from \"../../../containers/Context\";\n\nimport { getMessage } from \"../../../lib/translator\";\n\nexport default class Login extends React.Component {\n render() {\n return (\n \n \n {(isEnterprise) => (\n \n
    \n

    {getMessage(\"login.heading\")}

    \n

    {getMessage(\"login.subheading\")}

    \n
    \n
    \n \n {!isEnterprise && (\n

    \n {getMessage(\"login.newUser.message\")}{\" \"}\n \n {getMessage(\"login.newUser.signupText\")}\n \n

    \n )}\n
    \n
    \n )}\n
    \n
    \n );\n }\n}\n","import React from \"react\";\nimport { BaseForm, Input, VALIDATION_TYPES } from \"../../../components/Form\";\nimport { withRouter } from \"react-router-dom\";\n\nimport { getMessage } from \"../../../lib/translator\";\n\nimport { GO_HOST } from \"../../../config/app\";\n\nclass ResetPasswordForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.values = {\n username: \"\",\n submitting: false,\n };\n this.state.formError = \"\";\n this.handleReset = this.handleReset.bind(this);\n }\n\n handleReset(formData) {\n window\n .fetch(GO_HOST + \"/account-service/reset-password\", {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(formData),\n })\n .then((response) => {\n response.json().then((response) => {\n if (response.status === \"SUCCESS\") {\n this.setState({ submitting: false });\n this.props.onSuccess && this.props.onSuccess();\n } else {\n this.setState({\n submitting: false,\n formError: response.message.split(\":\")[1],\n });\n }\n });\n })\n .catch((error) => {\n this.setState({\n submitting: false,\n formError: getMessage(\"error.server\"),\n });\n console.error(error)\n });\n }\n\n onSubmit(data) {\n this.setState({\n submitting: true,\n });\n this.handleReset(data);\n }\n\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n return (\n
    \n {this.state.formError && (\n
    {this.state.formError}
    \n )}\n
    \n \n
    \n \n {getMessage(\"resetPassword.buttonText\")}\n \n
    \n \n
    \n );\n }\n}\n\nexport default withRouter(ResetPasswordForm);\n","import React, { Component, Fragment } from \"react\";\nimport PublicPage from \"../../../containers/PublicPage/index\";\nimport ResetPasswordForm from \"./form\";\nimport { Link, Redirect } from \"react-router-dom\";\nimport { Consumer } from \"../../../containers/Context\";\n\nimport { getMessage } from \"../../../lib/translator\";\n\nexport default class ResetPassword extends Component {\n constructor(props) {\n super(props);\n this.state = {\n success: false,\n };\n this.onReset = this.onReset.bind(this);\n }\n onReset() {\n this.setState({\n success: true,\n });\n }\n render() {\n return (\n \n \n {(isEnterprise) =>\n isEnterprise ? (\n \n ) : (\n \n {!this.state.success ? (\n
    \n

    \n {getMessage(\"resetPassword.heading\")}\n

    \n

    \n {getMessage(\"resetPassword.subheading\")}\n

    \n
    \n ) : null}\n
    \n {!this.state.success ? (\n
    \n \n

    \n {getMessage(\"resetPassword.oldUserText\")}{\" \"}\n \n {getMessage(\"resetPassword.login\")}\n \n

    \n
    \n ) : (\n
    \n {getMessage(\"resetPassword.successMessage\")}\n
    \n \n {getMessage(\"resetPassword.loginLinkText\")}\n \n
    \n
    \n )}\n
    \n
    \n )\n }\n
    \n
    \n );\n }\n}\n","import { Component } from \"react\";\nimport { withRouter } from \"react-router-dom\";\n\nimport { clearSession } from \"../../../lib/auth\";\n\nclass Logout extends Component {\n constructor(props) {\n super(props);\n const { history } = props;\n clearSession();\n history.push(\"/login\");\n }\n render() {\n return null;\n }\n}\n\nexport default withRouter(Logout);\n","import React from \"react\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage/index\";\nimport { getMessage } from \"../../../lib/translator\";\n\nexport default function NotDone(props) {\n return (\n \n

    {getMessage(\"404.heading\")}

    \n

    \n We are still working on {props.location.pathname}\n

    \n
    \n );\n}\n","import React from \"react\";\nimport PublicPage from \"../../../containers/PublicPage/index\";\n\nexport default function MissingPage(props) {\n return (\n \n
    \n

    Missing Page

    \n

    Are you lost?

    \n
    \n
    \n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport PublicPage from \"../../../containers/PublicPage/index\";\nimport API from \"../../../lib/api\";\nimport { getMessage } from \"../../../lib/translator\";\nimport Loader from \"../../../components/Loader\";\nimport VerifiedImage from \"./images/verified.svg\";\nimport NotVerifiedImg from \"./images/notVerified.svg\";\nimport \"./verify.css\";\n\nexport default function Verify(props) {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(\"\");\n const [submitting, setSubmitting] = useState(false);\n const [formError, setFormError] = useState(\"\");\n const [formSuccess, setFormSuccess] = useState(\"\");\n\n useEffect(() => {\n const {\n location: { search = \"\" },\n } = props;\n if (search.includes(\"?e=\")) {\n const verifyApi = new API({ url: \"/account-service/verify\" });\n const params = { hash: decodeURIComponent(search.split(\"=\")[1]) };\n setLoading(true);\n verifyApi\n .get(params)\n .then((response) => {\n setLoading(false);\n })\n .catch((error) => {\n console.error(error);\n const errorMessage =\n error.message?.split(\":\")?.[1] ??\n error.message ??\n getMessage(\"error.generic\");\n setLoading(false);\n setError(errorMessage);\n });\n }\n }, [props]);\n\n const handleResendClick = () => {\n setSubmitting(true);\n setFormSuccess(\"\");\n setFormError(\"\");\n const api = new API({ url: \"/account-service/resend-verification-email\" });\n api\n .post({})\n .then((response) => {\n setSubmitting(false);\n setFormSuccess(response?.message);\n })\n .catch((error) => {\n console.error(error);\n setSubmitting(false);\n setFormError(error?.message ?? getMessage(\"error.generic\"));\n });\n };\n\n const verifyImgSrc = error ? NotVerifiedImg : VerifiedImage;\n const verifyImgAlt = error\n ? getMessage(\"email.not.verified.text\")\n : getMessage(\"email.verified.text\");\n const verifyEmailText = error ? error : getMessage(\"email.verified\");\n\n return (\n \n {loading ? (\n \n ) : (\n
    \n {verifyImgAlt}\n
    \n \n {verifyEmailText}\n \n {!error && (\n

    \n {getMessage(\"password.sent.to.mobile\")}\n

    \n )}\n
    \n {error ? (\n <>\n \n {(formError || formSuccess) && (\n \n {formError ? formError : formSuccess}\n
    \n )}\n \n ) : (\n \n {getMessage(\"login.submitText\")}\n \n )}\n \n )}\n
    \n );\n}\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport PublicPage from \"../../../containers/PublicPage/index\";\nimport { Consumer } from \"../../../containers/Context\";\nimport { getMessage } from \"../../../lib/translator\";\nimport LoginForm from \"../Login/form\";\nimport \"../Verify/verify.css\";\n\nexport default function AccountCreated() {\n return (\n \n
    \n
    \n

    {getMessage(\"account.created\")}

    \n

    \n {getMessage(\"verification.email.sent\")}\n

    \n
    \n
    \n \n {(isEnterprise) => (\n
    \n
    \n {getMessage(\"use.password.sent.to.registered.mobile\")}\n
    \n \n {!isEnterprise && (\n

    \n {getMessage(\"login.newUser.message\")}{\" \"}\n {getMessage(\"signup.buttonText\")}\n

    \n )}\n
    \n )}\n
    \n
    \n );\n}\n","import React, { Component } from \"react\";\nimport { Link, withRouter } from \"react-router-dom\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport API from \"../../../lib/api\";\nimport { getMessage } from \"../../../lib/translator\";\n\nimport \"./style.css\";\n\nclass PaymentResponse extends Component {\n constructor(props) {\n super(props);\n this.state = {\n verified: false,\n verificationData: {},\n };\n let queryString = this.props.router.location.search.slice(1); // Slice to remove '?' character\n this.query = Object.assign(\n {},\n ...queryString.split(\"&\").map((keyVal) => {\n keyVal = keyVal.split(\"=\");\n return {\n [keyVal[0]]: keyVal[1],\n };\n })\n );\n this.verifyPayment = this.verifyPayment.bind(this);\n }\n verifyPayment() {\n let api = new API({ url: \"/billing-service/verify-payment\" });\n return api.post(this.query);\n }\n componentDidMount() {\n this.verifyPayment()\n .then((response) => {\n this.setState({\n verified: true,\n verificationData: response.data.onlinepayment,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n render() {\n return (\n \n {!this.state.verified ? (\n
    \n
    {getMessage(\"user.payment.loader.text\")}
    \n
    \n ) : (\n
    \n {this.state.verificationData.status === \"COMPLETED\" ? (\n

    \n {getMessage(\"user.payment.success.title\")}\n

    \n ) : (\n

    \n {getMessage(\"user.payment.fail.title\")}\n

    \n )}\n \n {getMessage(\"user.payment.redirect.link\")}\n \n
    \n )}\n
    \n );\n }\n}\n\nexport default withRouter(({ location, history, match, ...props }) => (\n \n));\n","import React, { Component } from \"react\";\n\nexport default class WithoutMenuPage extends Component {\n render() {\n const { props } = this;\n return
    {props.children}
    ;\n }\n}\n","import React from \"react\";\n\nimport \"./style.css\";\n\nexport default function EmptyState(props) {\n let views = props.additionalViews || [];\n return (\n
    \n \"No\n

    {props.message}

    \n
    {props.submessage}
    \n {views.map((View, index) => (\n \n ))}\n
    \n );\n}\n","import React from \"react\";\n\nexport default function Row(props) {\n let data = props.items || [];\n return (\n
    \n {data.map((header, index) =>\n typeof header === \"string\" ? (\n
    \n {header}\n
    \n ) : (\n \n {header.name}\n
    \n )\n )}\n {props.children}\n \n );\n}\n","import React from \"react\";\n\nexport default function Row(props) {\n return (\n
    \n {props.children}\n
    \n );\n}\n","import React from \"react\";\n\nexport default function Cell(props) {\n let alignmentClass = props.align === \"right\" ? \" align-right\" : \"\";\n return (\n \n {props.children}\n \n );\n}\n","import React from \"react\";\nimport Header from \"./Header\";\nimport Row from \"./Row\";\nimport Cell from \"./Cell\";\n\nimport \"./style.css\";\n\nexport default function Table(props) {\n return (\n \n {props.children}\n \n );\n}\n\nexport { Header, Row, Cell };\n","import React from \"react\";\nimport \"./style.css\";\n\nexport default function HelpCard(props) {\n let onAction = props.onAction;\n return (\n \n
    \n \"\"\n {onAction ? (\n
    {props.title}
    \n ) : (\n
    {props.title}
    \n )}\n
    \n

    {props.children}

    \n \n );\n}\n","import React from \"react\";\nimport \"./style.css\";\n\nexport default function HelpWidget(props) {\n return (\n
    \n

    {props.title}

    \n
    {props.children}
    \n
    \n );\n}\n","import React from \"react\";\n\nimport \"./style.css\";\nimport leftArrow from \"./icon-left-arrow.svg\";\nimport rightArrow from \"./icon-right-arrow.svg\";\n\n/* TODO: Logic to selectively show page numbers if there are too many pages */\n\nconst noop = () => {};\n\nexport default function Pagination(props) {\n let { total, current } = props;\n if (!Number.isInteger(total) || !Number.isInteger(current)) {\n return null;\n }\n let pageNumbers = Array(total)\n .fill(0)\n .map((_, index) => index + 1);\n let spliced = pageNumbers.splice(1, current - 3);\n if (spliced.length) {\n pageNumbers.splice(1, 0, \"...\");\n }\n spliced = pageNumbers.splice(5, pageNumbers.length - 6);\n if (spliced.length) {\n pageNumbers.splice(5, 0, \"...\");\n }\n let leftDisabled = current === 1;\n let rightDisabled = current === total;\n let clickHandler = props.onSelect || noop;\n let ellipsis = ;\n\n let pageNumberNotEditable = Boolean(props.pageNumberNotEditable); // Props for unwanted page number edit\n\n const visitPageDirectly = (e) => {\n if (e.which === 13) {\n if (e.target.value >= 1 && e.target.value <= total) {\n clickHandler(e.target.value);\n }\n }\n };\n\n const createClickHandler = (value) => (e) => {\n e && e.preventDefault();\n clickHandler(value);\n };\n\n return (\n
    \n \n \"Previous\"\n \n {pageNumbers.map((number, index) => (\n \n {Number.isFinite(number) ? (\n number === current && !pageNumberNotEditable ? (\n \n ) : (\n number\n )\n ) : (\n ellipsis\n )}\n \n ))}\n \n \"Next\"\n \n
    \n );\n}\n","import React from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport PropTypes from \"prop-types\";\nimport AuthenticatedPage from \"../AuthenticatedPage\";\nimport WithoutMenuPage from \"../WithoutMenuPage\";\nimport EmptyState from \"../../components/EmptyState\";\nimport Table, { Header } from \"../../components/Table\";\nimport HelpCard from \"../../components/HelpCard\";\nimport HelpWidget from \"../../components/HelpWidget\";\nimport Loader from \"../../components/Loader\";\nimport Pagination from \"../../components/Pagination\";\nimport { Popup as Modal, Dialog } from \"../../components/Popup\";\nimport API from \"../../lib/api\";\nimport { getMessage } from \"../../lib/translator\";\nimport { get } from \"../../lib/storage\";\nimport { getDefaultStore } from \"../StoreSelector\";\nimport { isExtensionEnabled, isEnterprise } from \"../../lib/auth\";\nimport { compareValues } from \"../../lib/stateManagement\";\n\nimport \"./style.css\";\n\nexport const TABLE_ACTIONS = {\n ADD: \"ADD\",\n EDIT: \"EDIT\",\n VIEW: \"VIEW\",\n DELETE: \"DELETE\",\n FILTER: \"FILTER\",\n REFRESH: \"REFRESH\",\n UPDATE: \"UPDATE\",\n SET_API_PARAMS: \"SET_API_PARAMS\",\n};\nconst SUCCESS_STATUS_CODE = [200, 201, 204];\n\nconst NullComponent = () => null;\n\nclass ListingPage extends React.Component {\n constructor(props) {\n super(props);\n let searchParams = Object.assign(\n {},\n ...this.props.router.location.search\n .slice(1)\n .split(\"&\")\n .filter(Boolean)\n .map((keystr) => {\n keystr = keystr.split(\"=\");\n return {\n [keystr[0]]: decodeURIComponent(keystr[1]),\n };\n })\n );\n if (Object.keys(searchParams).length > 0) {\n let item = window.localStorage.getItem(this.props.className);\n if (!item) {\n window.localStorage.setItem(this.props.className, 1);\n }\n }\n let apiParams = {};\n let apiHeaders = {};\n\n if (props.api) {\n if (props.api.params) {\n apiParams = props.api.params;\n }\n if (props.api.headers) {\n apiHeaders = props.api.headers;\n }\n if (\n props.storeDependent &&\n isExtensionEnabled(\"MultiStoreSupport\") &&\n (get(\"store\") || getDefaultStore().storeId)\n ) {\n apiParams.storeId = Number(get(\"store\") || getDefaultStore().storeId);\n }\n }\n this.state = {\n data: {\n items: null,\n paging: null,\n filters: searchParams || {}, // Corresponds to the filters applied to the API\n viewItems: null,\n },\n filters: {\n // Corresponds to the state of the 'filters' view\n shown:\n Object.keys(searchParams).length > 0 ||\n (this.props.filters && this.props.filters.showFiltersOnLoad),\n },\n apiParams: apiParams,\n apiHeaders: apiHeaders,\n loaders: {\n data: false,\n updatingApiParams: false,\n },\n form: {\n shown: false,\n rowIndex: -1, // The row being edited\n data: null,\n },\n deleteDialog: {\n shown: false,\n data: {},\n },\n errorDialog: {\n shown: false,\n message: \"\",\n title: \"\",\n },\n successDialog: false,\n firstLoadDone: false, // Indicate that we have gotten results from API at least once\n };\n\n this.primaryKey = this.props.primaryKey || \"id\";\n\n if (props.api && props.api.url) {\n this.api = new API({ url: props.api.url });\n }\n\n /* Default hooks */\n // Method to extract data from the API call made\n this._transformResponse = (response) => response;\n this._transformSubmit = (form) => form;\n\n /* Hook overrides */\n if (props.api && props.api.transform) {\n this._transformResponse = props.api.transform;\n }\n if (props.form && props.form.transformSubmit) {\n this._transformSubmit = props.form.transformSubmit;\n }\n if (props.updateView) {\n this.updateView = this.updateView.bind(this);\n }\n\n this._showDataLoader = this._showDataLoader.bind(this);\n this._hideDataLoader = this._hideDataLoader.bind(this);\n this.changePage = this.changePage.bind(this);\n this.performAction = this.performAction.bind(this);\n this._showForm = this._showForm.bind(this);\n this._hideForm = this._hideForm.bind(this);\n this._showFilters = this._showFilters.bind(this);\n this._hideFilters = this._hideFilters.bind(this);\n this._toggleFilters = this._toggleFilters.bind(this);\n this.createResource = this.createResource.bind(this);\n this.modifyResource = this.modifyResource.bind(this);\n this.getResource = this.getResource.bind(this);\n this.applyFilters = this.applyFilters.bind(this);\n this.clearFilters = this.clearFilters.bind(this);\n this.confirmDelete = this.confirmDelete.bind(this);\n this.throwError = this.throwError.bind(this);\n this._showDeleteDialog = this._showDeleteDialog.bind(this);\n this._hideDeleteDialog = this._hideDeleteDialog.bind(this);\n this._showErrorDialog = this._showErrorDialog.bind(this);\n this._hideErrorDialog = this._hideErrorDialog.bind(this);\n this.setApiParam = this.setApiParam.bind(this);\n this._showSuccesDialog = this._showSuccesDialog.bind(this);\n this.updateApiUrl = this.updateApiUrl.bind(this);\n }\n // Some data lookup methods\n _getRow(data) {\n let result = {\n data: null,\n index: -1,\n };\n if (!data && this.props.noId) {\n return result;\n }\n let { items } = this.state.data;\n for (let i = 0, len = items.length; i < len; i++) {\n let item = items[i];\n let matched = true;\n for (let key in data) {\n if (!(key in item) || item[key] !== data[key]) {\n matched = false;\n break;\n }\n }\n if (matched) {\n result.data = item;\n result.index = i;\n break;\n }\n }\n return result;\n }\n // Some utility methods to manage states\n _showDataLoader() {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.loaders.data = true;\n return newState;\n });\n }\n _hideDataLoader() {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.loaders.data = false;\n newState.loaders.updatingApiParams = false;\n return newState;\n });\n }\n _showForm(rowIndex, data) {\n // If rowIndex is specified, then a particular row is being edited\n if (this.props.form && this.props.form.component) {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.form.shown = true;\n newState.form.rowIndex = isFinite(rowIndex) ? rowIndex : -1;\n if (data) {\n newState.form.data = data;\n }\n return newState;\n });\n }\n }\n _hideForm() {\n // Clear the form and hide it\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.form.shown = false;\n newState.form.rowIndex = -1;\n newState.form.data = null;\n return newState;\n });\n }\n _showFilters() {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.filters.shown = true;\n return newState;\n });\n }\n _hideFilters() {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.filters.shown = false;\n return newState;\n });\n }\n _toggleFilters() {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.filters.shown = !prevState.filters.shown;\n return newState;\n });\n }\n _hideDeleteDialog() {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.deleteDialog.shown = false;\n return newState;\n });\n }\n _showDeleteDialog() {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.deleteDialog.shown = true;\n return newState;\n });\n }\n _hideErrorDialog() {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.errorDialog.shown = false;\n newState.errorDialog.message = \"\";\n newState.errorDialog.title = \"\";\n return newState;\n });\n }\n _showErrorDialog() {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.errorDialog.shown = true;\n return newState;\n });\n }\n _showSuccesDialog() {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.successDialog = !prevState.successDialog;\n return newState;\n });\n }\n\n updateApiUrl(url) {\n if (this.api && this.api.url) {\n this.api = new API({ url: url });\n }\n }\n // Methods to manage data via API\n /**\n * Makes API call to create the resource\n * @param {object} data - Data to be created in DB\n * @return {Oject} newState - updated state [Immutated]\n */\n createResource(data) {\n let api = new API({\n url: this.props.api.url,\n });\n let params =\n this.props.form && this.props.form.overwriteWithApiParams === false\n ? Object.assign({}, this.state.apiParams, this._transformSubmit(data))\n : Object.assign({}, this._transformSubmit(data), this.state.apiParams);\n if (params.storeId) {\n params.storeId = Number(params.storeId);\n }\n let headers = this.state.apiHeaders;\n return api\n .post(params, headers)\n .then(\n (response) => {\n if (SUCCESS_STATUS_CODE?.includes(response?.code)) {\n this._showSuccesDialog();\n }\n let data = this._transformResponse(response);\n /* Show new entry at top of the table */\n if (this.props.form && this.props.form.filterBeforeAdding) {\n let filterBeforeAdding = this.props.form.filterBeforeAdding;\n data = filterBeforeAdding(data, this);\n }\n if (data) {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n let updatedItems = newState.data.items;\n this.props.addNewItemToLast\n ? updatedItems.push(data)\n : updatedItems.unshift(data);\n newState.data.items = updatedItems;\n const updatedPaging = newState.data.paging;\n updatedPaging.count = (updatedPaging.count || 0) + 1;\n newState.data.paging = updatedPaging;\n return newState;\n });\n }\n this._hideForm();\n },\n (error) => {\n this.throwError(error);\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n modifyResource(data) {\n // Make an API call to update the resource\n let x = !this.props.noId ? data[this.primaryKey] : \"X\";\n let api = new API({\n url: this.props.api.url + \"/\" + x,\n });\n let params =\n this.props.form && this.props.form.overwriteWithApiParams === false\n ? Object.assign({}, this.state.apiParams, this._transformSubmit(data))\n : Object.assign({}, this._transformSubmit(data), this.state.apiParams);\n let headers = this.state.apiHeaders;\n return api\n .put(params, headers)\n .then(\n (response) => {\n /* Update the table row */\n if (SUCCESS_STATUS_CODE?.includes(response?.code)) {\n this._showSuccesDialog();\n }\n if (this.props.form && this.props.form.filterBeforeAdding) {\n let filterBeforeAdding = this.props.form.filterBeforeAdding;\n data = filterBeforeAdding(data, this);\n }\n let row, updatedRow;\n if (data.id) {\n updatedRow = this.state.data.items.find(\n (item) => Number(item.id) === Number(data.id)\n );\n delete data.id;\n updatedRow = Object.assign({}, updatedRow, data);\n row = this._getRow({\n [this.primaryKey]: updatedRow?.id ?? \"\",\n });\n } else {\n updatedRow = this._transformResponse(response);\n row = this._getRow({\n [this.primaryKey]: updatedRow[this.primaryKey],\n });\n }\n if (data) {\n if (row.index > -1) {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n let updatedItems = newState.data.items;\n updatedItems.splice(row.index, 1, updatedRow);\n newState.data.items = updatedItems;\n return newState;\n });\n } else if (this.props.noId) {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n let updatedItems = newState.data.items;\n this.props.addNewItemToLast\n ? updatedItems.push(updatedRow)\n : updatedItems.unshift(updatedRow);\n newState.data.items = updatedItems;\n const updatedPaging = newState.data.paging;\n updatedPaging.count = (updatedPaging.count || 0) + 1;\n newState.data.paging = updatedPaging;\n return newState;\n });\n }\n } else {\n if (row.index > -1) {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n let updatedItems = newState.data.items;\n updatedItems.splice(row.index, 1);\n newState.data.items = updatedItems;\n const updatedPaging = newState.data.paging;\n updatedPaging.count = updatedPaging.count - 1;\n newState.data.paging = updatedPaging;\n return newState;\n });\n }\n }\n this.props.api &&\n this.props.api.afterSubmit &&\n this.props.api.afterSubmit(response);\n this._hideForm();\n },\n (error) => {\n this.throwError(error);\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n /**\n * Makes API call to delete the resource\n * @param {object} data - Data to be deleted from DB\n * @return {Oject} newState - updated state [Immutated]\n */\n deleteResource(data) {\n let api = new API({\n url: this.props.api.url + \"/\" + data[this.primaryKey],\n });\n let params =\n this.props.api.overWriteDeleteParams === false\n ? Object.assign({}, this.state.apiParams, data)\n : Object.assign({}, data, this.state.apiParams);\n let headers = this.state.apiHeaders;\n api\n .delete(params, headers)\n .then(\n (response) => {\n /* Update the table row */\n let row = this._getRow({\n [this.primaryKey]: data[this.primaryKey],\n });\n if (row.index > -1) {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n let updatedItems = newState.data.items;\n updatedItems.splice(row.index, 1);\n newState.data.items = updatedItems;\n const updatedPaging = newState.data.paging;\n updatedPaging.count = updatedPaging.count - 1;\n newState.data.paging = updatedPaging;\n return newState;\n });\n }\n if (SUCCESS_STATUS_CODE?.includes(response?.code)) {\n this._showSuccesDialog();\n }\n },\n (error) => {\n this.throwError(error, getMessage(\"errorDialog.delete.error.title\"));\n }\n )\n .then(this._hideForm)\n .catch((error) => {\n console.error(error);\n });\n }\n\n getResource(data) {\n let api = new API({\n url: this.props.api.url + \"/\" + data[this.primaryKey],\n });\n let params = Object.assign(\n {},\n this._transformSubmit(data),\n this.state.apiParams\n );\n let headers = this.state.apiHeaders;\n api\n .get(params, headers)\n .then(\n (response) => {\n /* Update the table row */\n let updatedRow = this._transformResponse(response);\n let row = this._getRow({\n [this.primaryKey]: updatedRow[this.primaryKey],\n });\n if (row.index > -1) {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n let updatedItems = newState.data.items;\n updatedItems.splice(row.index, 1, updatedRow);\n newState.data.items = updatedItems;\n return newState;\n });\n }\n this.props.api &&\n this.props.api.afterSubmit &&\n this.props.api.afterSubmit(response);\n this._hideForm();\n },\n (error) => {\n this.throwError(error);\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n fetchTableData(params = {}) {\n if (!this.api) {\n return;\n }\n this._showDataLoader();\n if (Object.keys(params).length > 0) {\n params = Object.assign({}, this.state.apiParams, params);\n } else {\n params = Object.assign({}, params, this.state.apiParams);\n }\n if (params?.dateRange) {\n params = { ...params, ...params.dateRange };\n delete params.dateRange;\n }\n if (this.props.storeDependent && isExtensionEnabled(\"MultiStoreSupport\")) {\n if (this.props.sethubId) {\n params.hubId = params.storeId;\n }\n if (!params.storeId) {\n return null;\n }\n }\n let headers = this.state.apiHeaders;\n return this.api\n .get(params, headers)\n .then((response) => {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.data.items = this._transformResponse(response);\n if (this.props.updateView) {\n newState.data.viewItems = this._transformResponse(response);\n }\n newState.data.paging = (({ count, limit, offset }) => ({\n count,\n limit,\n offset,\n }))(response.data || {});\n newState.firstLoadDone = true;\n return newState;\n });\n })\n .then(() => {\n if (this.props.api.transformResponseAsync) {\n return this.props.api\n .transformResponseAsync(this.state.data.items)\n .then((items) => {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.data.items = items;\n return newState;\n });\n });\n }\n })\n .then(this._hideDataLoader)\n .catch((error) => {\n this._hideDataLoader();\n console.error(error);\n this.throwError(error);\n });\n }\n changePage(page) {\n window.localStorage.setItem(this.props.className, page); // necessary for pagination\n if (Object.keys(this.state.data.filters).length) {\n this.applyFilters(this.state.data.filters, page);\n } else {\n this.fetchTableData({ page });\n }\n }\n applyFilters(filters, page = 1) {\n window.localStorage.setItem(this.props.className, page); // necessary for pagination\n var transformedFilters = filters;\n if (this.props.filters && this.props.filters.transformSubmit) {\n transformedFilters = this.props.filters.transformSubmit(filters);\n }\n let params = Object.assign(\n {\n offset: 0, // Reset page to 1 if applying filters\n page: page,\n },\n transformedFilters\n );\n this.setState(\n (prevState) => {\n let newState = Object.assign({}, prevState);\n newState.data.filters = filters;\n return newState;\n },\n () => {\n this.fetchTableData(params);\n }\n );\n }\n clearFilters() {\n window.localStorage.setItem(this.props.className, 1);\n let { onClear } = this.props;\n this.setState(\n (prevState) => {\n let newState = Object.assign({}, prevState);\n newState.data.filters = {};\n newState.filters = { shown: true };\n return newState;\n },\n () => {\n onClear ? onClear() : this.fetchTableData();\n }\n );\n }\n confirmDelete() {\n this.deleteResource(this.state.deleteDialog.data);\n this._hideDeleteDialog();\n }\n throwError(error, title) {\n if (error.code === 400 || error.code === 409) {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.errorDialog.message = error.message; // if string does not have a colon\n newState.errorDialog.title = title || getMessage(\"error.title\");\n return newState;\n }, this._showErrorDialog());\n } else {\n throw error;\n }\n }\n performAction(action, data, updates, deleteRow = false) {\n // action: (string) Action to perform\n // data: The data needed to search a specific a row\n // updates: The data to update the row with\n // deleteRow: delete the row from view without making api call\n if (action in TABLE_ACTIONS) {\n switch (action) {\n case TABLE_ACTIONS.ADD:\n if (this.props.form) {\n this._showForm(-1, data);\n }\n break;\n case TABLE_ACTIONS.EDIT:\n if (this.props.form) {\n // Lookup row number for given data and send that row number\n let row = this._getRow(data);\n if (row.index >= 0) {\n if (updates) {\n // If there are updates, just update row instead of showing form\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n let updatedItems = newState.data.items;\n updatedItems.splice(\n row.index,\n 1,\n Object.assign({}, row.data, updates)\n );\n newState.data.items = updatedItems;\n return newState;\n });\n } else {\n this._showForm(row.index);\n }\n } else {\n if (this.props.noId && row.index >= 0) {\n this._showForm(row.index, data);\n } else if (this.props.noId) {\n this._showForm(-1, data);\n }\n }\n }\n break;\n case TABLE_ACTIONS.UPDATE:\n let row = this._getRow(data);\n if (row.index >= 0 && updates) {\n let params = Object.assign({}, data, updates);\n return this.modifyResource(params);\n }\n break;\n case TABLE_ACTIONS.DELETE:\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.deleteDialog.data = data;\n return newState;\n });\n this._showDeleteDialog();\n break;\n case TABLE_ACTIONS.FILTER:\n // To the user, search & filters are mutually exclusive, but internally,\n // both are implemented as filters\n this.applyFilters(data);\n break;\n case TABLE_ACTIONS.REFRESH:\n let params = {};\n if (data && deleteRow) {\n // If data and delete row are not empty, simply delete the row from the view\n let row = this._getRow(data);\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n let updatedItems = newState.data.items.slice();\n updatedItems.splice(row.index, 1);\n newState.data.items = updatedItems;\n return newState;\n });\n return;\n } else if (data && updates) {\n // If 'data' and 'updates' are not empty, simply update the view by pushing 'updates' into the state\n let row = this._getRow(data);\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n let updatedItems = newState.data.items;\n updatedItems.splice(\n row.index,\n 1,\n Object.assign({}, row.data, updates)\n );\n newState.data.items = updatedItems;\n return newState;\n });\n } else if (data) {\n // TODO: If 'data' is not empty, fetch details for that row and update the data for that row\n this.getResource(data);\n return;\n } else if (this.state.data && this.state.data.filters) {\n // if filters are applied on the table then refresh the page with filters\n params = Object.assign(\n {\n offset: 0, // Reset page to 1 if applying filters\n },\n this.state.data.filters\n );\n }\n this.fetchTableData(params);\n break;\n case TABLE_ACTIONS.SET_API_PARAMS:\n this.setState((prevState) => {\n return {\n apiParams: Object.assign({}, prevState.apiParams, data),\n };\n }, this.fetchTableData);\n break;\n default:\n break;\n }\n } else if (\n this.props.tableProperties.actions &&\n action in this.props.tableProperties.actions\n ) {\n // Perform custom action\n }\n }\n componentDidMount() {\n this.props.dontSavePagination &&\n window.localStorage.setItem(this.props.className, 1);\n let configs = { page: window.localStorage.getItem(this.props.className) };\n if (\n this.props.filters &&\n this.props.filters.transformFilter &&\n this.state.data.filters\n ) {\n let transformedFilters = this.props.filters.transformFilter(\n this.state.data.filters\n );\n this.fetchTableData({\n ...transformedFilters,\n ...configs,\n \"includes[0]\": \"reReturns\",\n });\n } else {\n this.fetchTableData({ ...this.state.data.filters, ...configs });\n }\n }\n\n componentWillReceiveProps(nextProps) {\n if (\n !compareValues(this.props.api.params, nextProps.api.params) &&\n this.props.api &&\n this.props.api.updateApiParams\n ) {\n let loaders = Object.assign({}, this.state.loaders);\n loaders.updatingApiParams = true;\n this.setState({\n loaders,\n });\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n const api = this.props.api;\n if (api && api.updateApiParams) {\n let updates = api.updateApiParams(\n prevProps.api.params,\n this.props.api.params,\n prevState.apiParams,\n this.state.apiParams\n );\n if (updates && updates.shouldUpdate) {\n this.setState(\n (prevState) => {\n let loaders = Object.assign({}, prevState.loaders);\n loaders.updatingApiParams = true;\n return {\n loaders,\n };\n },\n () => {\n this.performAction(TABLE_ACTIONS.SET_API_PARAMS, updates.params);\n }\n );\n }\n }\n // if (\n // this.state.apiParams.storeId &&\n // prevState.apiParams.storeId !== this.state.apiParams.storeId\n // ) {\n // console.log(prevState.apiParams, this.state.apiParams);\n // this.fetchTableData();\n // }\n }\n\n componentWillUnmount() {\n this.api && this.api.cancel();\n }\n\n updateView(data, key) {\n if (this.props.updateView) {\n let newView = this.props.updateView(data, key);\n let newData = Object.assign({}, this.state.data);\n newData.viewItems = newView;\n this.setState({\n data: newData,\n });\n }\n }\n setApiParam(storeId) {\n let apiParams = JSON.parse(JSON.stringify(this.state.apiParams));\n if (\n !apiParams.storeId &&\n this.props.storeDependent &&\n isExtensionEnabled(\"MultiStoreSupport\")\n ) {\n apiParams.storeId = Number(storeId);\n this.setState({ apiParams });\n }\n }\n\n render() {\n // TODO: Add support for replacing default messages with localized strings\n let { props } = this;\n let view = null;\n let data = this.state.data;\n let filtersCount = Object.keys(data.filters).filter((key) =>\n Boolean(data.filters[key])\n ).length;\n let filtersApplied = filtersCount > 0;\n let emptyStateShown = false;\n if (\n !this.api ||\n (data.paging &&\n data.paging.count === 0 &&\n !(data.items && data.items.length > 0)) ||\n (data.items && data.items.length === 0) ||\n props.showEmptyState\n ) {\n if (filtersApplied && !props.showEmptyState) {\n view =
    No results found
    ;\n } else {\n emptyStateShown = true;\n let emptyStateProps = Object.assign({}, props.emptyState);\n let emptyState = ;\n let helpItems = null;\n if (props.helpItems && !isEnterprise()) {\n helpItems = (\n \n {props.helpItems.instructions.map((instruction, index) => (\n \n {instruction.description}\n \n ))}\n \n );\n }\n view = (\n
    \n {emptyState}\n {helpItems}\n
    \n );\n }\n } else if (\n data.items &&\n props.tableProperties.row &&\n !this.state.loaders.updatingApiParams\n ) {\n let Row = props.tableProperties.row;\n let { count, offset, limit } = data.paging;\n count = Number(count);\n offset = Number(offset);\n limit = Number(limit);\n let totalPages = Math.ceil(count / limit);\n const page = window.localStorage.getItem(this.props.className);\n const viewData = props.updateView\n ? data.viewItems && data.viewItems.length > 0\n ? data.viewItems\n : data.items\n : data.items;\n view = (\n
    \n \n {props.tableProperties.headers ? (\n
    \n ) : null}\n {viewData\n .filter((row) => Boolean(row))\n .map((row, index) => (\n \n ))}\n {props.addToTable && (\n \n )}\n
    \n
    \n
    {`${getMessage(\n \"pagination.text\"\n )} ${offset + 1} - ${\n limit > 0 && offset >= 0 ? Math.min(offset + limit, count) : count\n } ${getMessage(\"pagination.helperText\")} ${count}`}
    \n {totalPages > 1 ? (\n \n ) : null}\n
    \n
    \n );\n }\n let HeaderActions = this.props.headerActions || NullComponent;\n const Form = props.form\n ? props.form.component || NullComponent\n : NullComponent;\n const Filters = props.filters\n ? props.filters.component || NullComponent\n : NullComponent;\n const allowDelete = props.form && props.form.allowDelete; // to allow delete action from inside the form\n if (emptyStateShown) {\n HeaderActions =\n props.emptyState && props.emptyState.actions\n ? props.emptyState.actions\n : NullComponent;\n }\n let WrapperComponent = this.props.menu\n ? AuthenticatedPage\n : WithoutMenuPage;\n return (\n {\n this.performAction(TABLE_ACTIONS.SET_API_PARAMS, {\n storeId: Number(get(\"store\")),\n });\n this.props.api &&\n this.props.api.onUpdateStore &&\n this.props.api.onUpdateStore();\n }}\n >\n
    \n {props.title &&

    {props.title}

    }\n {(!emptyStateShown && this.state.firstLoadDone) ||\n (this.props.filters && this.props.filters.forceShow) ? (\n
    \n {this.props.filters ? (\n
    \n \n {/* {filtersCount || null} */}\n
    \n ) : null}\n \n
    \n ) : (\n emptyStateShown && (\n
    \n \n
    \n )\n )}\n
    \n {this.props.additionalViews\n ? this.props.additionalViews.map((View, index) => (\n \n ))\n : null}\n {!this.props.showEmptyState && !props.customLoading && (\n \n \n \n )}\n {this.state.form.shown ? (\n -1\n ? this.props.editHeading ||\n (this.props.getEditHeading &&\n this.props.getEditHeading(\n this.state.data.items[this.state.form.rowIndex]\n ))\n : this.props.addHeading ||\n (this.props.getAddHeading &&\n this.props.getAddHeading(this.state.form.data))\n }\n className={\n this.props.modalClassName ||\n (this.props.getModalClassName &&\n ((this.state.form.data &&\n this.props.getModalClassName(this.state.form.data)) ||\n (this.state.form.rowIndex > -1 &&\n this.props.getModalClassName(\n this.state.data.items[this.state.form.rowIndex]\n )))) ||\n \"\"\n }\n show={this.state.form.shown}\n close={this._hideForm}\n >\n -1\n ? this.state.data.items[this.state.form.rowIndex]\n : this.state.form.data\n }\n onSubmit={\n this.state.form.rowIndex > -1\n ? this.modifyResource\n : this.props.noId\n ? this.modifyResource\n : this.createResource\n }\n onCancel={this._hideForm}\n method={this.state.form.rowIndex > -1 ? \"edit\" : \"add\"}\n options={this.props.form && this.props.form.options}\n onDelete={\n allowDelete\n ? () =>\n this.performAction(\n \"DELETE\",\n this.state.data.items[this.state.form.rowIndex]\n )\n : null\n }\n />\n \n ) : null}\n {this.state.deleteDialog.shown && (\n \n )}\n {this.state.errorDialog.shown && (\n \n )}\n {this.state.successDialog && (\n \n )}\n\n {this.state.loaders.data || props.customLoading ? : view}\n {!emptyStateShown && this.props.additionalViewsBottom\n ? this.props.additionalViewsBottom.map((View, index) => (\n \n ))\n : null}\n \n );\n }\n}\n\nListingPage.propTypes = {\n title: PropTypes.string,\n api: PropTypes.shape({\n url: PropTypes.string.isRequired,\n transform: PropTypes.func,\n }),\n};\n\nexport default withRouter(({ location, history, match, ...props }) => (\n \n));\n","import React, { Component } from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport ListingPage from \"./index\";\nimport AuthenticatedPage from \"../AuthenticatedPage\";\nimport Loader from \"../../components/Loader\";\nimport API from \"../../lib/api\";\nimport { getMessage } from \"../../lib/translator\";\nimport { Dialog } from \"../../components/Popup\";\n\nclass FormContainer extends Component {\n constructor(props) {\n super(props);\n this.state = {\n loading: false,\n data: null,\n errorDialog: {\n shown: false,\n message: \"\",\n },\n notFoundError: null,\n };\n this.headers = this.props.apiHeaders;\n if (props.url) {\n this.api = new API({\n url:\n this.props.url +\n (this.props.resourceId ? \"/\" + this.props.resourceId : \"\"),\n });\n }\n this._transformResponse = (response) => response;\n\n /* Default hooks */\n // Method to extract data from the API call made\n this._transformResponse = (response) => response;\n this._transformSubmit = (form) => form;\n\n /* Hook overrides */\n if (props.transformResponse) {\n this._transformResponse = props.transformResponse;\n }\n if (props.transformSubmit) {\n this._transformSubmit = props.transformSubmit;\n }\n\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleDelete = this.handleDelete.bind(this);\n this.hideErrorDialog = this.hideErrorDialog.bind(this);\n }\n componentDidMount() {\n if (this.api && this.props.resourceId) {\n this.setState({\n loading: true,\n });\n let params = this.props.apiParams;\n this.api\n .get(params, this.headers)\n .then((response) => {\n this.setState(\n {\n data: this._transformResponse(response),\n },\n () => {\n this.setState({\n loading: false,\n });\n }\n );\n })\n .catch((error) => {\n console.error(error);\n if (error.code === 404) {\n this.setState({\n notFoundError: error.message,\n loading: false,\n });\n } else {\n throw error;\n }\n });\n }\n }\n handleSubmit(data) {\n // this.setState({ loading: true });\n let api = new API({\n url:\n this.props.url +\n (this.props.resourceId ? \"/\" + this.props.resourceId : \"\"),\n });\n let method = this.props.resourceId ? \"put\" : \"post\";\n let { overwriteWithApiParams } = this.props;\n let dataToSubmit =\n overwriteWithApiParams === false\n ? Object.assign({}, this.props.apiParams, this._transformSubmit(data))\n : Object.assign({}, this._transformSubmit(data), this.props.apiParams);\n // let dataToSubmit = Object.assign(this._transformSubmit(data), this.props.apiParams)\n Object.assign(this._transformSubmit(data), this.props.apiParams);\n api[method](dataToSubmit, this.headers)\n .then(\n (response) => {\n this.props.afterSubmit && this.props.afterSubmit(response);\n },\n (error) => {\n if (error.code === 400 || error.code === 403) {\n const errorDialog = { ...this.state.errorDialog };\n errorDialog.shown = true;\n errorDialog.message = error.message;\n this.setState({\n errorDialog,\n loading: false,\n });\n } else {\n throw error;\n }\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n handleDelete() {\n let api = new API({\n url:\n this.props.url +\n (this.props.resourceId ? \"/\" + this.props.resourceId : \"\"),\n });\n api\n .delete()\n .then(this.props.afterSubmit)\n .catch((error) => {\n console.error(error);\n });\n }\n\n hideErrorDialog() {\n const errorDialog = { ...this.state.errorDialog };\n errorDialog.shown = false;\n errorDialog.message = \"\";\n this.setState({\n errorDialog,\n });\n }\n\n render() {\n const Form = this.props.form;\n const { errorDialog } = this.state;\n if (this.state.loading) {\n return ;\n } else if (!this.state.data && this.props.method === \"edit\") {\n return this.state.notFoundError ? (\n

    {this.state.notFoundError}

    \n ) : null;\n }\n return (\n
    \n \n {errorDialog.shown && (\n \n )}\n
    \n );\n }\n}\n\nclass ListingPageWithRoutes extends Component {\n render() {\n const { router, form, secondaryActions } = this.props;\n const { overwriteWithApiParams } = form;\n const action = router.match.params.action;\n let WrapperComponent = this.props.menu\n ? AuthenticatedPage\n : ({ menu, ...props }) =>
    ;\n this.apiHeaders = this.props.api?.headers || {};\n if (action === \"add\" && form && form.component) {\n const Form = form.component;\n const {\n api: { url, params = {} },\n } = this.props;\n const formApiUrl = form.url || url;\n const apiParams = form.apiParams || params;\n return (\n \n

    {this.props.addHeading || \"Add\"}

    \n {\n this.props.form &&\n this.props.form.afterSubmit &&\n this.props.form.afterSubmit(response);\n router.history.push(\n router.location.pathname.replace(/(\\/add)|(\\/edit\\/.*)$/, \"\")\n );\n }}\n onCancel={() => {\n router.history.push(\n router.location.pathname.replace(/(\\/add)|(\\/edit\\/.*)$/, \"\")\n );\n }}\n />\n \n );\n } else if (action === \"edit\" && form && form.component) {\n const Form = form.component;\n const {\n api: { url, params = {} },\n } = this.props;\n const formApiUrl = form.url || url;\n const apiParams = form.apiParams || params;\n return (\n \n

    {this.props.editHeading || \"Edit\"}

    \n {\n router.history.push(\n router.location.pathname.replace(/(\\/add)|(\\/edit\\/.*)$/, \"\")\n );\n }}\n onCancel={() => {\n router.history.push(\n router.location.pathname.replace(/(\\/add)|(\\/edit\\/.*)$/, \"\")\n );\n }}\n />\n \n );\n } else if (action === \"view\" && form && form.component) {\n const Details = form.component;\n const {\n api: { url, transform },\n } = this.props;\n return (\n \n \n \n );\n } else if (\n secondaryActions?.component &&\n action === secondaryActions.component.action\n ) {\n const Component = secondaryActions.component.Component;\n return ;\n } else if (\n secondaryActions?.form &&\n action === secondaryActions.form.action\n ) {\n const { Component, secondaryOptions } = secondaryActions.form;\n const Form = Component ? Component : form.component;\n const {\n api: { url, params = {} },\n isPrevCourierOrders,\n } = this.props;\n const formApiUrl = form.url || url;\n const apiParams = form.apiParams || params;\n let options = form.options;\n options = { ...options, ...secondaryOptions };\n\n return (\n \n

    {this.props.addHeading || \"Add\"}

    \n {\n isPrevCourierOrders\n ? router.history.goBack()\n : router.history.push(\n router.location.pathname.replace(\n /(\\/add-product\\/\\d+)|(\\/add)|(\\/edit\\/.*)$/,\n \"\"\n )\n );\n }}\n onCancel={() => {\n router.history.push(\n router.location.pathname.replace(\n /(\\/add-product\\/\\d+)|(\\/add)|(\\/edit\\/.*)$/,\n \"\"\n )\n );\n }}\n />\n \n );\n }\n return ;\n }\n}\n\nexport default withRouter(({ location, history, match, ...props }) => (\n \n));\n","import React, { Component } from \"react\";\nimport \"./style.css\";\nimport API from \"../../lib/api\";\n\nclass FileUpload extends Component {\n constructor(props) {\n super(props);\n this.state = {\n fileUploading: false,\n file: \"\",\n uploadError: \"\",\n fileUploaded: false,\n };\n this.readFile = this.readFile.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.handleFileUpload = this.handleFileUpload.bind(this);\n this.cancleFileUpload = this.cancleFileUpload.bind(this);\n }\n\n readFile(e) {\n e.preventDefault();\n e.stopPropagation();\n if (e.target.files && e.target.files[0]) {\n const file = e.target.files[0];\n let state = {\n file: file,\n };\n // file validations\n if (\n this.props.accept !== \".*\" &&\n file.type &&\n !this.props.accept\n .split(\",\")\n .map((str) => str.trim())\n .includes(file.type)\n ) {\n state[\"uploadError\"] =\n this.props.validationStrings.invalidFileType || \"Invalid File Type\";\n } else {\n state[\"uploadError\"] = \"\";\n }\n this.setState(state);\n }\n }\n\n cancleFileUpload() {\n this.setState({\n file: \"\",\n uploadError: \"\",\n });\n }\n\n handleFileUpload() {\n let data = new window.FormData();\n const file = this.state.file;\n const uploadUrl = this.props.uploadUrl;\n\n if (this.props?.storeId) {\n data.append(\"storeId\", this.props.storeId);\n }\n if (this.props?.userId) {\n data.append(\"userId\", this?.props?.userId);\n }\n if (this.props?.organizationId) {\n data.append(\"organizationId\", this?.props?.organizationId);\n }\n data = this.props.transformSubmit ? this.props.transformSubmit(data) : data;\n\n if (this.props.uploadKey === \"inventoryFile\") {\n const reader = new FileReader();\n\n reader.onload = (event) => {\n const csvContent = event.target.result;\n const rows = csvContent\n .split(\"\\n\")\n .map((row) => row.trim())\n .filter((row) => row !== \"\");\n\n if (rows.length === 0) {\n console.error(\"The uploaded CSV file is empty.\");\n return;\n }\n\n const headers = rows[0].split(\",\").map((header) => header.trim());\n const dataRows = rows.slice(1);\n const newHeaders = [...headers, \"Store ID\"];\n const newRows = dataRows.flatMap((row) =>\n this.props?.storeIds?.map((storeId) => `${row},${storeId}`)\n );\n\n const transformedCsv = [newHeaders.join(\",\"), ...newRows].join(\"\\n\");\n\n const transformedFile = new File([transformedCsv], file.name, {\n type: \"text/csv\",\n });\n data.append(this.props.uploadKey || \"fileUpload\", transformedFile);\n\n this.uploadFile(data, uploadUrl);\n };\n\n reader.onerror = (error) => {\n console.error(\"Error reading file:\", error);\n };\n\n reader.readAsText(file);\n } else {\n data.append(this.props.uploadKey || \"fileUpload\", file);\n this.uploadFile(data, uploadUrl);\n }\n }\n\n uploadFile(data, uploadUrl) {\n this.setState(\n {\n fileUploading: true,\n fileUploaded: false,\n },\n () => {\n const api = new API({ url: uploadUrl });\n api\n .post(data)\n .then(\n (response) => {\n this.setState(\n {\n fileUploading: false,\n fileUploaded: true,\n uploadError: \"\",\n },\n this.props.successCallback\n ? () => this.props.successCallback(response)\n : null\n );\n },\n (error) => {\n let { code } = error;\n if (code === 401 || code === 403) {\n throw error;\n }\n this.setState(\n {\n file: \"\",\n uploadError: error.message,\n fileUploading: false,\n fileUploaded: false,\n },\n this.props.errorCallback\n ? (response) => this.props.errorCallback(error)\n : null\n );\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n );\n }\n\n handleClick() {\n this.uploadInputRef.value = null;\n }\n\n render() {\n const {\n name,\n required,\n placeholder,\n accept,\n uploadButtonText,\n cancelText,\n icon,\n disableUpload,\n } = this.props;\n const { file, uploadError, fileUploaded, fileUploading } = this.state;\n\n let title = (this.props.strings && this.props.strings.defaultMessage) || \"\";\n if (file.name && !uploadError && !fileUploaded) {\n title = (this.props.strings && this.props.strings.progressMessage) || \"\";\n } else if (fileUploaded) {\n title =\n (this.props.strings && this.props.strings.completionMessage) || \"\";\n }\n\n return (\n \n
    {title}
    \n {(!file.name || uploadError) && !fileUploaded && (\n
    \n
    \n {placeholder || \"Click here to upload the file\"}\n
    \n {\n this.uploadInputRef = node;\n }}\n onClick={this.handleClick}\n disabled={disableUpload}\n />\n
    \n )}\n {uploadError ? (\n
    {uploadError}
    \n ) : (\n file.name && (\n
    \n
    \n {icon && (\n
    \n \"\"\n
    \n )}\n
    {file.name}
    \n
    \n {!fileUploaded && (\n
    \n \n {cancelText}\n \n \n {fileUploading ? \"...\" : uploadButtonText}\n \n
    \n )}\n
    \n )\n )}\n
    \n );\n }\n}\n\nFileUpload.defaultProps = {\n accept: \".csv,text/csv\",\n};\n\nexport default FileUpload;\n","import React, { Component } from \"react\";\n\nimport Upload from \"../../../../components/FileUpload\";\nimport API from \"../../../../lib/api\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { isExtensionEnabled } from \"../../../../lib/auth\";\nimport { Link } from \"react-router-dom\";\nimport csvIcon from \"./csv-icon.svg\";\nimport uploadIcon from \"./upload-products.svg\";\nimport { getSession } from \"../../../../lib/auth\";\nimport { isSellerSection } from \"..\";\nimport \"./style.css\";\n\nfunction downloadCsv(data, uploadType) {\n let csv = \"\";\n csv += data.join(\",\");\n csv += \"\\n\";\n var hiddenElement = document.createElement(\"a\");\n hiddenElement.href = \"data:text/csv;charset=utf-8,\" + encodeURI(csv);\n hiddenElement.target = \"_blank\";\n hiddenElement.download =\n uploadType === \"inventory\" ? \"inventory.csv\" : \"product.csv\";\n hiddenElement.click();\n}\n\nexport default class ProductUpload extends Component {\n constructor(props) {\n super(props);\n this.getSampleCsv = this.getSampleCsv.bind(this);\n }\n\n getSampleCsv(e) {\n e.preventDefault();\n const { bulkUploadType } = this.props;\n if (bulkUploadType === \"catalogue\") {\n const api = new API({ url: \"/catalogue-service/product-upload\" });\n api\n .get()\n .then(\n (response) => {\n downloadCsv(response.data.fileUpload || [], bulkUploadType);\n },\n (error) => {\n this.setState({ uploadError: error.message });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n } else if (bulkUploadType === \"inventory\") {\n const country = new API({\n url: `/account-service/country?isoCode=${\n getSession().organization.countryCode\n }`,\n });\n country\n .get()\n .then((response) => {\n const taxHeaders = response.data.country.tax.split(\",\");\n const inventoryCsvHeaders = [\n \"Store ID\",\n \"Item ID\",\n \"Price\",\n \"Discount\",\n ...taxHeaders,\n \"Stock\",\n ].concat(\n isExtensionEnabled(\"InStoreProcessing\")\n ? [\"Rack\", \"Aisle\", \"Shelf\"]\n : []\n );\n downloadCsv(inventoryCsvHeaders, bulkUploadType);\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n\n render() {\n let { hideAddButton, disableUpload, bulkUploadType } = this.props;\n return (\n
    \n {!hideAddButton ? (\n
    \n \n + {getMessage(\"product.add.text\")}\n \n
    \n ) : null}\n
    \n
    \n \"\"\n
    \n {!hideAddButton ? (\n \n {getMessage(\"productUpload.orText\")}\n \n ) : null}\n \n
    \n
    \n \n {getMessage(\"productUpload.csvDownloadText\")}\n \n
    \n
    \n );\n }\n}\n","import React from \"react\";\nimport { BaseForm, Input, Select } from \"../../../../../components/Form\";\nimport API from \"../../../../../lib/api\";\nimport { getMessage } from \"../../../../../lib/translator\";\n// import { DEVELOPER_TOKEN } from \"../../../../../../src/config/app\";\nimport \"./style.css\";\nimport { Dialog } from \"../../../../../components/Popup\";\nimport { faro } from \"@grafana/faro-web-sdk\";\nimport { isExtensionEnabled } from \"../../../../../lib/auth\";\n\nexport default class ProductFiltersForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n indusrtyNames: [],\n selectedIndustry: \"All\",\n showErrorDialog: false,\n formError: \"\",\n values: {\n tagId: null,\n },\n };\n this.isMarketPlaceEntensionEnabled = isExtensionEnabled(\"MarketPlace\");\n }\n handleGetIndustry = () => {\n return this.state.indusrtyNames.map((val) => ({\n text: val.name,\n value: val.name,\n }));\n };\n componentDidMount() {\n this.getIndustryApi = new API({\n url: \"/account-service/industry\",\n });\n if (!this.isMarketPlaceEntensionEnabled) {\n Promise.all([this.getIndustryApi.get()])\n .then(([industryApiResponse]) => {\n const allObject = {\n name: \"All\",\n id: \"All\",\n };\n const availableIndustryProvider = [\n allObject,\n ...industryApiResponse.data?.industry,\n ];\n this.setState({ indusrtyNames: availableIndustryProvider });\n })\n .catch((error) => {\n if (faro?.api?.pushError) {\n faro.api.pushError(error);\n }\n this.setState({ formError: error.message, showErrorDialog: true });\n });\n }\n }\n handleGetTagId = (tag) => {\n this.getTagApi = new API({\n url: \"/catalogue-service/tag\",\n });\n this.getTagApi\n .get(\n {\n name: tag,\n }\n // {\n // \"Developer-token\": DEVELOPER_TOKEN,\n // restrictAutherizationToken: true,\n // }\n )\n .then((tagApiResponse) => {\n const tagArr = tagApiResponse.data.tag;\n if (tagArr?.length) {\n const tagCurrent = tagArr.filter((obj) => obj.name === tag);\n const tagNumber = tagCurrent[0].id;\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.values.tagId = tagNumber;\n return newState;\n });\n }\n })\n .catch((error) => {\n if (faro?.api?.pushError) {\n faro.api.pushError(error);\n }\n this.setState({ formError: error.message, showErrorDialog: true });\n });\n };\n handleSelectChange = (value) => {\n if (value !== \"All\") {\n this.handleGetTagId(value);\n }\n\n this.setState({ selectedIndustry: value });\n };\n closeDialogs = () => {\n this.setState({\n showErrorDialog: false,\n formError: \"\",\n });\n };\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n return (\n <>\n \n
    \n \n {!this.isMarketPlaceEntensionEnabled && (\n \n )}\n \n
    \n {getMessage(\"search.label.text\")}\n \n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport ListingPage from \"../../../../containers/ListingPage\";\nimport { Cell, Row } from \"../../../../components/Table\";\nimport Image from \"../../../../components/Image\";\nimport { Link } from \"react-router-dom\";\nimport find from \"lodash.find\";\nimport \"./style.css\";\nimport ProductFiltersForm from \"./Form\";\nimport { isExtensionEnabled } from \"../../../../lib/auth\";\nimport { isSellerSection } from \"..\";\n\nconst tableProperties = () => {\n return {\n row: (props) => {\n const { id, images, brand, name, variants, productExist } = props;\n let image = images && images.length && images[0];\n if (!image && variants && variants.length) {\n let varImage = variants.filter((variant) => variant.images)[0];\n if (varImage && varImage.images) {\n image = varImage.images[0];\n }\n }\n let urlParams = new URL(document.location).searchParams;\n let sellerId = parseInt(urlParams.get(\"sellerId\"));\n const isOwnerCreatingRequest = Boolean(sellerId);\n const link = !isOwnerCreatingRequest\n ? `/catalogue/products/add-product/${id}`\n : `/catalogue/seller-catalogue/add-product/${id}?sellerId=${sellerId}`;\n\n return (\n \n \n \n \n \n
    \n {brand ? {brand.name} : null}\n {name}\n
    \n
    \n\n \n {productExist ? (\n \n ) : (\n \n {getMessage(\"add.label.text\")}\n \n )}\n \n
    \n );\n },\n };\n};\nexport default class SearchAndAdd extends Component {\n getAPIUrl = () => {\n let urlParams = new URL(document.location).searchParams;\n let sellerId = parseInt(urlParams.get(\"sellerId\"));\n if (isExtensionEnabled(\"MarketPlace\") && (isSellerSection() || sellerId)) {\n return \"/catalogue-service/permissible-seller\";\n }\n return \"/catalogue-service/product\";\n };\n\n updateProductsList = (products, permissibleSellers) => {\n const productsIdResponse = permissibleSellers;\n products.forEach((product) => {\n if (\n productsIdResponse.some((productIdObj) => {\n return (\n String(productIdObj.productId) === String(product.id) &&\n productIdObj.sellerProductRequestIds\n );\n })\n ) {\n product.productExist = true;\n } else {\n product.productExist = false;\n }\n });\n return products;\n };\n render() {\n const apiUrl = this.getAPIUrl();\n let urlParams = new URL(document.location).searchParams;\n let sellerId = parseInt(urlParams.get(\"sellerId\"));\n return (\n {\n let products = response.data.product || [];\n let permissibleSellers = response.data.permissibleSellers || [];\n if (Array.isArray(products)) {\n products.forEach((item) => {\n if (!item.images && item.hasVariants) {\n const variantWithImages = find(\n item.variants,\n (v) => v.images !== null\n );\n item.images = variantWithImages && variantWithImages.images;\n }\n });\n products = this.updateProductsList(products, permissibleSellers);\n products.sort((x, y) => {\n return x.productExist === y.productExist\n ? 0\n : !x.productExist\n ? -1\n : 1;\n });\n }\n return products;\n },\n }}\n filters={{\n component: ProductFiltersForm,\n transformSubmit: (formData) => {\n return formData;\n },\n }}\n tableProperties={tableProperties()}\n />\n );\n }\n}\n","import React from \"react\";\nimport {\n SelectSearch,\n Input,\n Textarea,\n Select,\n MultiSelect,\n Checkbox,\n SingleDatePicker,\n DateTime,\n Upload,\n} from \"../Form\";\nimport { getMessage } from \"../../lib/translator\";\nimport { getCountryList } from \"../../lib/commonlyused\";\nimport \"./style.css\";\n\nfunction commonGenerateStateMappers(\n _this,\n key,\n stateVar,\n loseEmphasisOnFill = false\n) {\n let stateKeys = stateVar || [\"metaData\"];\n stateKeys = stateKeys.slice();\n stateKeys.push(key);\n return _this.generateStateMappers\n ? _this.generateStateMappers({\n stateKeys,\n loseEmphasisOnFill,\n })\n : {};\n}\n\nexport default function MetaDataFormFields(props) {\n let {\n metaDataWithType,\n title,\n className,\n _this,\n readOnly,\n metaData,\n onChange,\n noContainer,\n stateKeys,\n preserveSequence,\n } = props;\n let arr = [];\n\n let tempArr = [];\n metaDataWithType &&\n Object.entries(metaDataWithType).map(([key, details], i) => {\n if (!details) {\n return null;\n }\n if (details.type === \"string\") {\n let data = (\n onChange(key, e)\n : commonGenerateStateMappers(_this, key, stateKeys).onChange\n }\n />\n );\n preserveSequence ? arr.push(data) : tempArr.unshift(data);\n } else if (details.type === \"number\") {\n let data = (\n onChange(key, e)\n : commonGenerateStateMappers(_this, key, stateKeys).onChange\n }\n />\n );\n preserveSequence ? arr.push(data) : arr.unshift(data);\n } else if (details.type === \"boolean\") {\n let data = (\n
    \n onChange(key, e)\n : commonGenerateStateMappers(_this, key, stateKeys).onChange\n }\n />\n
    \n );\n preserveSequence ? arr.push(data) : arr.unshift(data);\n } else if (\n details.type === \"enum\" ||\n details.type === \"multiValued Enum\"\n ) {\n let Comp = details.type === \"enum\" ? Select : MultiSelect;\n let data = (\n {\n return {\n text: getMessage(opt),\n value: opt,\n };\n })}\n {...commonGenerateStateMappers(_this, key, stateKeys, true)}\n value={\n metaData\n ? metaData[key]\n : commonGenerateStateMappers(_this, key, stateKeys).value\n }\n onChange={\n onChange\n ? (e) => onChange(key, e)\n : commonGenerateStateMappers(_this, key, stateKeys).onChange\n }\n />\n );\n preserveSequence ? arr.push(data) : arr.unshift(data);\n } else if (details.type === \"country\") {\n let data = (\n onChange(key, e)\n : commonGenerateStateMappers(_this, key, stateKeys).onChange\n }\n />\n );\n preserveSequence ? arr.push(data) : arr.unshift(data);\n } else if (details.type === \"date\") {\n let data = (\n onChange(key, e)\n : commonGenerateStateMappers(_this, key, stateKeys).onChange\n }\n />\n );\n preserveSequence ? arr.push(data) : arr.push(data);\n } else if (details.type === \"dateTime\") {\n let data = (\n onChange(key, e)\n : commonGenerateStateMappers(_this, key, stateKeys).onChange\n }\n />\n );\n preserveSequence ? arr.push(data) : arr.push(data);\n } else if (details.type === \"text\") {\n let data = (\n onChange(key, e)\n : commonGenerateStateMappers(_this, key, stateKeys).onChange\n }\n />\n );\n preserveSequence ? arr.push(data) : tempArr.push(data);\n } else if (details.type === \"file\") {\n let data = (\n onChange(key, e)\n : commonGenerateStateMappers(_this, key, stateKeys).onChange\n }\n readOnly={readOnly}\n />\n );\n preserveSequence ? arr.push(data) : tempArr.push(data);\n } else if (details.type === \"group\") {\n const members = details?.members;\n let data = (\n
    \n
    Dimensions in cms
    \n
    \n {Object.entries(members).map((mem, index) => {\n const subKey = mem[0];\n return (\n onChange(subKey, e)\n : commonGenerateStateMappers(_this, subKey, stateKeys)\n .onChange\n }\n readOnly={readOnly}\n />\n );\n })}\n
    \n
    \n );\n preserveSequence ? arr.push(data) : arr.unshift(data);\n } else if (details.type === \"percentage\") {\n let data = (\n
    \n onChange(key, e)\n : commonGenerateStateMappers(_this, key, stateKeys).onChange\n }\n readOnly={readOnly}\n />\n
    \n );\n preserveSequence ? arr.push(data) : arr.unshift(data);\n }\n return null;\n });\n arr = arr.concat(tempArr);\n return !noContainer ? (\n
    \n {arr.length > 0 && title && }\n {arr}\n </div>\n ) : (\n <React.Fragment>\n {arr.length > 0 && title && <title />}\n {arr}\n </React.Fragment>\n );\n}\n\nMetaDataFormFields.defaultProps = {\n preserveSequence: false,\n};\n","import React, { Component } from \"react\";\nimport \"./style.css\";\n\nexport default class Tabs extends Component {\n constructor(props) {\n super(props);\n this.state = {\n activeTab: props.default || props.active || 0,\n };\n this.createClickHandler = this.createClickHandler.bind(this);\n }\n\n componentWillReceiveProps(newProps) {\n if (\n Number.isInteger(newProps.active) &&\n newProps.active !== this.state.activeTab\n ) {\n this.setState({\n activeTab: newProps.active,\n });\n }\n }\n\n createClickHandler(currentTab) {\n return (e) => {\n e && e.preventDefault();\n if (this.state.activeTab !== currentTab) {\n this.setState({\n activeTab: currentTab,\n });\n this.props.onClick && this.props.onClick(currentTab);\n }\n };\n }\n\n render() {\n const props = this.props;\n const { nameKey, valueKey } = props;\n const state = this.state;\n const align = props.align ? props.align : \"\";\n const component =\n nameKey && valueKey ? (\n <div className={\"tabs \" + align}>\n {props.items.map((item) => {\n return (\n <button\n key={item[valueKey]}\n className={\n (state.activeTab === item[valueKey] ? \"active \" : \"\") +\n (state.activeTab - 1 === item[valueKey] ? \"previous \" : \"\") +\n \"tab\"\n }\n onClick={this.createClickHandler(item[valueKey])}\n >\n {item[nameKey]}\n </button>\n );\n })}\n </div>\n ) : (\n <div className={\"tabs \" + align}>\n {props.items.map((item, index) => {\n return (\n <button\n key={index}\n className={\n (state.activeTab === index ? \"active \" : \"\") +\n (state.activeTab - 1 === index ? \"previous \" : \"\") +\n \"tab\"\n }\n onClick={this.createClickHandler(index)}\n >\n {item}\n </button>\n );\n })}\n </div>\n );\n return component;\n }\n}\n","import { getStores } from \"../../lib/auth\";\nimport { get } from \"../../lib/storage\";\n\nfunction getDefaultStore(stores) {\n let result = {};\n let orgStores = getStores();\n if (stores && stores.length && get(\"store\")) {\n let store = get(\"store\");\n result = {\n storeId: Number(store),\n };\n return result;\n }\n if (stores && stores.length) {\n result = {\n storeId: stores[0].id,\n };\n }\n if (orgStores && orgStores.length) {\n result = {\n storeId: orgStores[0].id,\n };\n }\n return result;\n}\n\nexport default getDefaultStore;\n","import React, { Component } from \"react\";\nimport JoditEditor from \"jodit-react\";\nimport \"./style.css\";\nexport default class RichEditor extends Component {\n constructor(props) {\n super(props);\n this.onChange = this.onChange.bind(this);\n }\n\n onChange(newContent) {\n this.props.onChange(newContent);\n }\n\n config = {\n showPlaceholder: true,\n placeholder: this.props.placeholder || \"\",\n disablePlugins: \"add-new-line\",\n useSearch: false,\n spellcheck: false,\n enter: \"P\",\n defaultMode: \"1\",\n toolbarAdaptive: false,\n toolbarSticky: false,\n showCharsCounter: false,\n showWordsCounter: false,\n showXPathInStatusbar: false,\n minHeight: 350,\n buttons: [\n \"bold\", \"italic\", \"underline\", \"strikethrough\", \"|\",\n \"superscript\", \"subscript\", \"|\", \"paragraph\", \"font\", \"fontsize\", \"brush\", \"|\",\n \"ul\", \"ol\", \"outdent\", \"indent\", \"|\", \"align\", \"|\",\n \"image\", \"link\", \"|\", \"eraser\", \"copyformat\", \"|\",\n \"selectall\", \"print\", \"|\", \"source\", \"|\", \"undo\", \"redo\", \"|\",\n ],\n };\n\n render() {\n return (\n <div className=\"RichEditor\">\n <JoditEditor\n value={this.props.value || \"\"}\n onChange={this.onChange}\n config={this.config}\n className=\"jodit-editor\"\n />\n </div>\n );\n }\n}\n\nexport function importText(value) {\n return value || \"\";\n}\n\nexport function exportText(content) {\n return content;\n}\n","import { getSession, isExtensionEnabled } from \"../auth\";\n\nexport const isMarketPlaceSeller = () => {\n const userInfo = getSession()?.user;\n const isSellerAdmin = (userInfo?.roles || []).some(\n (role) => role.name === \"SELLER ADMIN\"\n );\n const isOwner = userInfo?.isOwner;\n const isMarketplaceEnabled = isExtensionEnabled(\"MarketPlace\");\n\n return !isOwner && isMarketplaceEnabled && isSellerAdmin;\n};\n\nexport const isMarketPlaceOwner = () => {\n const userInfo = getSession()?.user;\n const isSellerAdmin = (userInfo?.roles || []).some(\n (role) => role.name === \"SELLER ADMIN\"\n );\n const isMarketplaceEnabled = isExtensionEnabled(\"MarketPlace\");\n return !isSellerAdmin && isMarketplaceEnabled;\n};\n","import React from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport {\n BaseForm,\n CategorySearch,\n Input,\n ImageUpload,\n Checkbox,\n Searchable,\n MultiTextInput,\n BrandSearch,\n VALIDATION_TYPES,\n Toggle,\n Textarea,\n Select,\n} from \"../../../../components/Form\";\nimport MetaDataFormFields from \"../../../../components/MetaDataFormFields\";\nimport Tabs from \"../../../../components/Tabs\";\nimport Loader from \"../../../../components/Loader\";\nimport { Dialog, Popup } from \"../../../../components/Popup\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport cloneDeep from \"lodash.clonedeep\";\nimport isEmpty from \"lodash.isempty\";\nimport {\n getSession,\n isExtensionEnabled,\n getStores,\n} from \"../../../../lib/auth\";\nimport API from \"../../../../lib/api\";\nimport { get, unset } from \"../../../../lib/storage\";\nimport getDefaultStore from \"../../../../containers/StoreSelector/getDefaultStore\";\n\nimport deleteIcon from \"./icon-dustbin.svg\";\nimport shopIcon from \"./shop.svg\";\nimport editIcon from \"./edit.svg\";\nimport \"./style.css\";\nimport RichEditor, {\n exportText,\n importText,\n} from \"../../../../components/RichEditor\";\nimport {\n isMarketPlaceOwner,\n isMarketPlaceSeller,\n} from \"../../../../lib/marketPlace\";\nimport { getProductRequestStatus, isSellerSection } from \"..\";\nimport {\n convertToISODuration,\n parseISODuration,\n} from \"../../../../lib/commonlyused\";\n\nconst FREQUENCY_TYPE = [\n {\n text: \"Day\",\n value: \"Day\",\n },\n {\n text: \"Month\",\n value: \"Month\",\n },\n {\n text: \"Year\",\n value: \"Year\",\n },\n];\n\nexport const fetchClientItemLabel = (code) => {\n let label;\n switch (code) {\n case \"PH\":\n label = \"SKU Code\";\n break;\n default:\n label = \"Client Item Id\";\n break;\n }\n return label;\n};\n\nexport default class ProductForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.selectedVariant = 0;\n this.state.variantName = \"\";\n this.state.variantFields = [];\n this.state.editVariantFields = [];\n this.state.productVariantProperties = null;\n this.state.editVariant = false;\n this.state.variants = [];\n this.state.variantToggle = false;\n this.state.selectedStore = getDefaultStore().storeId;\n this.state.allStoresLoaded = false;\n this.state.cancelEditVariantName = \"\";\n this.state.apiError = null;\n this.state.showErrorDialog = false;\n this.state.status = isExtensionEnabled(\"MultiStoreSupport\");\n this.state.taxes = [];\n this.state.isRecurringProduct = false;\n this.state.values.purchaseFrequencyData = {\n type: \"Day\",\n frequency: 0,\n };\n this.addVariant = this.addVariant.bind(this);\n this.removeVariant = this.removeVariant.bind(this);\n this.showProductDeleteConfirmation =\n this.showProductDeleteConfirmation.bind(this);\n this.hideProductDeleteConfirmation =\n this.hideProductDeleteConfirmation.bind(this);\n this.showVariantDeleteConfirmation =\n this.showVariantDeleteConfirmation.bind(this);\n this.hideVariantDeleteConfirmation =\n this.hideVariantDeleteConfirmation.bind(this);\n this.deleteProduct = this.deleteProduct.bind(this);\n this.getStores = this.getStores.bind(this);\n this.getEntityMetaData = this.getEntityMetaData.bind(this);\n this.getInventoryData = this.getInventoryData.bind(this);\n this.onSelectStore = this.onSelectStore.bind(this);\n this.hideApiErrorDialog = this.hideApiErrorDialog.bind(this);\n this.onToggleChange = this.onToggleChange.bind(this);\n this.toggleIsRecurringProduct = this.toggleIsRecurringProduct.bind(this);\n this.showAllVariantsDeleteConfirmation =\n this.showAllVariantsDeleteConfirmation.bind(this);\n this.hideAllVariantsDeleteConfirmation =\n this.hideAllVariantsDeleteConfirmation.bind(this);\n this.removeAllVariant = this.removeAllVariant.bind(this);\n this.status = {\n \"Save as Draft\": \"DRAFT\",\n \"Submit for review\": \"PENDING\",\n };\n this.isMarketPlaceSeller = isMarketPlaceSeller();\n this.isInputEditable = isSellerSection();\n this.isMarketPlaceOwner = isMarketPlaceOwner();\n this.isSellerSection = isSellerSection();\n let urlParams = new URL(document.location).searchParams;\n let sellerId = parseInt(urlParams.get(\"sellerId\"));\n this.isOwnerCreatingRequest =\n this.isSellerSection &&\n this.isMarketPlaceOwner &&\n this.props.method === \"add\" &&\n Boolean(sellerId);\n this.isProductSubscriptionEnabled = isExtensionEnabled(\n \"SubscriptionProducts\"\n );\n }\n addVariant() {\n if (!this.state.variantName) {\n return;\n }\n\n const { productVariantProperties, variantFields } = this.state;\n const variantProperties = (\n productVariantProperties?.productProperties || []\n ).map((data, index) => {\n return {\n propertyId: data.id,\n value: variantFields[index],\n };\n });\n\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n if (Array.isArray(newState.values.variants)) {\n if (newState.values.variants?.length) {\n if (newState.values.variants.length === 1) {\n if (!newState.values.variants[0].name) {\n newState.values.variants[0].name = this.state.variantName;\n if (!isEmpty(variantProperties)) {\n newState.values.variants[0].properties = variantProperties;\n }\n newState.variantName = \"\";\n newState.variantFields = [];\n } else {\n newState.values.variants.push({\n name: this.state.variantName,\n ...(variantProperties.length > 0 && {\n properties: variantProperties,\n }),\n });\n newState.variantName = \"\";\n newState.variantFields = [];\n }\n } else {\n newState.values.variants.push({\n name: this.state.variantName,\n ...(variantProperties?.length > 0 && {\n properties: variantProperties,\n }),\n });\n newState.variantName = \"\";\n newState.variantFields = [];\n }\n }\n } else {\n newState.values.variants = [\n {\n name: this.state.variantName,\n ...(variantProperties?.length > 0 && {\n properties: variantProperties,\n }),\n },\n ];\n newState.variantName = \"\";\n newState.variantFields = [];\n }\n return newState;\n });\n }\n removeVariant(index) {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.values.variants.splice(index, 1);\n newState.validations.variants.splice(index, 1);\n if (newState.values.variants?.length === 1) {\n // Remove validation of 'variant name' field as it is no longer shown\n delete newState.validations.variants[0].name;\n } else if (!newState.values.variants?.length) {\n newState.values.variants.push({});\n }\n newState.selectedVariant = Math.max(prevState.selectedVariant - 1, 0);\n return newState;\n }, this.hideVariantDeleteConfirmation);\n }\n\n onToggleChange() {\n if (\n this.state.values &&\n this.state.values.variants &&\n this.state.values.variants.length > 1\n ) {\n this.setState({ deleteAllVariantsDialogShown: true });\n } else {\n this.setState({\n variantToggle: !this.state.variantToggle,\n });\n }\n }\n showAllVariantsDeleteConfirmation() {\n this.setState({\n deleteAllVariantsDialogShown: true,\n });\n }\n hideAllVariantsDeleteConfirmation() {\n this.setState({\n deleteAllVariantsDialogShown: false,\n });\n }\n removeAllVariant() {\n this.setState(\n (prevState) => {\n let newState = Object.assign({}, prevState);\n newState.values.variants.splice(1);\n newState.validations.variants.splice(1);\n if (this.props.method === \"add\") {\n if (\n newState.values.variants &&\n newState.values.variants.length === 1\n ) {\n delete newState.values.variants[0].name;\n }\n } else {\n if (\n newState.values.variants &&\n newState.values.variants.length === 1\n ) {\n if (!newState.values.variants[0].productId) {\n delete newState.values.variants[0].name;\n } else {\n delete newState.values.variants[0].name;\n delete newState.values.variants[0].fullName;\n delete newState.values.variants[0].id;\n delete newState.values.variants[0].productId;\n delete newState.values.variants[0].status;\n }\n }\n }\n return newState;\n },\n () => {\n this.setState({ variantToggle: false, selectedVariant: 0 });\n this.hideAllVariantsDeleteConfirmation();\n }\n );\n }\n showProductDeleteConfirmation(e) {\n e && e.preventDefault();\n this.setState({\n deleteProductDialogShown: true,\n });\n }\n hideProductDeleteConfirmation() {\n this.setState({\n deleteProductDialogShown: false,\n });\n }\n showVariantDeleteConfirmation() {\n this.setState({\n deleteVariantDialogShown: true,\n });\n }\n hideVariantDeleteConfirmation() {\n this.setState({\n deleteVariantDialogShown: false,\n });\n }\n hideApiErrorDialog() {\n this.setState({\n showErrorDialog: false,\n });\n }\n deleteProduct() {\n this.props.onDelete && this.props.onDelete();\n }\n beforeSubmit() {\n // Since variants are tabbed, when errors are there, navigate to the first tab with errors\n let index = -1;\n if (\n this.state.validations &&\n this.state.validations.variants &&\n this.state.validations.variants.length\n ) {\n index = this.state.validations.variants.findIndex(\n (variant) => !this.isFormValid(variant)\n );\n }\n if (index > -1) {\n this.setState({ selectedVariant: index });\n }\n }\n\n changeParamsDataType(param) {\n let params = Object.assign({}, param);\n if (params.discount !== undefined) {\n params.discount = parseFloat(params.discount);\n }\n if (params.mrp !== undefined) {\n params.mrp = parseFloat(params.mrp);\n }\n if (params.stock !== undefined) {\n params.stock = Number(params.stock);\n }\n if (!params.stock) {\n params.stock = 0;\n }\n if (\n params.unlimitedStock !== undefined &&\n params.unlimitedStock &&\n isExtensionEnabled(\"StockManagement\")\n ) {\n params.stock = 0;\n }\n if (params.status === undefined) {\n params.status = isExtensionEnabled(\"MultiStoreSupport\")\n ? \"HIDDEN\"\n : \"ENABLED\";\n }\n return params;\n }\n\n toggleIsRecurringProduct() {\n this.setState((prev) => ({\n isRecurringProduct: !prev.isRecurringProduct,\n }));\n }\n\n transformSubmit(formData) {\n const brandsEnabled = isExtensionEnabled(\"MultiBrandSupport\");\n const entityMetaDataEnabled = isExtensionEnabled(\"EntityMetaData\");\n let marginMetadata = null;\n // return null\n let modifiedData = Object.assign({}, formData);\n modifiedData.description = exportText(\n importText(this.state.values.description)\n );\n if (formData.categories) {\n modifiedData.primaryCategoryId = formData.categories[0].id;\n modifiedData.categoryIds = formData.categories.map(\n (category) => category.id\n );\n }\n delete modifiedData.primaryCategory;\n delete modifiedData.secondaryCategories;\n delete modifiedData.categories;\n\n if (\n !(\n isExtensionEnabled(\"MultiVariantSupport\") && this.state.variantToggle\n ) &&\n modifiedData.variants &&\n modifiedData.variants.length > 0\n ) {\n if (isExtensionEnabled(\"MarketPlace\")) {\n marginMetadata =\n modifiedData.variants?.[0]?.metaData[\"Minimum Profit Margin\"];\n }\n delete modifiedData.variants[0].name;\n delete modifiedData.variants[0].fullName;\n delete modifiedData.variants[0].metaData;\n Object.assign(modifiedData, modifiedData.variants[0]);\n // delete modifiedData.variants\n modifiedData.variants = [];\n if (modifiedData.hasOwnProperty(\"hasVariants\")) {\n modifiedData.hasVariants = 0;\n }\n }\n\n if (brandsEnabled && modifiedData.brand) {\n if (modifiedData.brand.name === modifiedData.brandName) {\n modifiedData.brandId = modifiedData.brand.id;\n delete modifiedData.brandName;\n }\n modifiedData.brandId = modifiedData.brand.id;\n }\n if (brandsEnabled && !modifiedData.brand) {\n modifiedData.brandId = \"\";\n }\n delete modifiedData.brand;\n if (modifiedData.tags) {\n modifiedData.tagIds = formData.tags.map((tag) => tag.id);\n delete modifiedData.tags;\n }\n if (modifiedData.metaData) {\n if (!entityMetaDataEnabled) {\n delete modifiedData.metaData;\n } else {\n let metaData = Object.assign({}, modifiedData.metaData);\n if (Object.keys(metaData)[0] === \"0\") {\n metaData = metaData[\"0\"];\n }\n Object.keys(metaData).forEach((key) => {\n if (metaData[key] === \"\") {\n delete metaData[key];\n }\n });\n if (Object.keys(metaData).length) {\n modifiedData.metaData = metaData;\n\n if (isExtensionEnabled(\"MarketPlace\")) {\n modifiedData.metaData[\"Minimum Profit Margin\"] = marginMetadata;\n }\n } else {\n delete modifiedData.metaData;\n }\n }\n }\n\n if (modifiedData?.variants?.length) {\n (modifiedData?.variants || []).forEach((variant) => {\n if (!entityMetaDataEnabled) {\n delete variant?.metaData;\n }\n });\n }\n modifiedData.soldByWeight = modifiedData.soldByWeight ? 1 : 0;\n modifiedData.handlingDays = modifiedData.handlingDays || 0;\n modifiedData.bulkOrderThreshold = modifiedData.bulkOrderThreshold || 0;\n delete modifiedData.madeUp;\n return modifiedData;\n }\n\n pendingActionAddProduct = (id) => {\n const api = new API({ url: `/account-service/pending-action/${id}` });\n api\n .put({ status: \"COMPLETED\" })\n .then((response) => {\n unset(\"AddProductPendingAction\");\n })\n .catch((error) => {\n console.error(error);\n throw error;\n });\n };\n\n onSubmitOwnerRequest(values, storeData, statusKey) {\n const statusMap = {\n Approve: \"APPROVED\",\n Reject: \"REJECTED\",\n };\n let urlParams = new URL(document.location).searchParams;\n let requestId = parseInt(urlParams.get(\"requestId\"));\n const putApi = new API({\n url: `/catalogue-service/seller-product-request/${requestId}/approval`,\n });\n const { id, variants } = values;\n if (variants && variants.length > 1) {\n // to be removed in future after correcting DB design\n this.setState({\n submitting: false,\n });\n return;\n }\n const storeId = Object.keys(storeData[0]?.product)[0];\n const { sellingPrice, sellerDiscount } = storeData[0]?.product[storeId];\n\n const params = {\n organizationId: getSession()?.organization?.id?.toString(),\n storeId: Number(storeId),\n status: statusMap[statusKey],\n description: exportText(importText(this.state.values.description)),\n shortDescription: values.metaData?.[\"Short Description\"],\n discount: sellerDiscount,\n sellingPrice,\n images: values.variants[0]?.images || [],\n productId: id,\n rejectionReason: this.state.rejectionReason,\n };\n\n this.submitApprovalStatus = (newParams) => {\n putApi\n .put({ ...params, ...newParams })\n .then((response) => {\n this.props.onCancel();\n })\n .catch((error) => {\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n this.setState({\n apiError: error.message,\n showErrorDialog: true,\n });\n console.error(error);\n })\n .finally(() => {\n this.setState({ providersLoading: false, submitting: false });\n });\n };\n\n if (statusMap[statusKey] === \"REJECTED\" && !this.state.rejectionReason) {\n this.state.showRejectReasonForm = true;\n return;\n }\n\n this.submitApprovalStatus();\n }\n\n onSubmitRequest = (values, storeData, statusKey) => {\n const { isMinimumProfitMargin } = this.state;\n const { id, variants } = values;\n\n const requestId = new URLSearchParams(window.location.search).get(\n \"requestId\"\n );\n\n const isAddProductPage = window.location.pathname\n .split(\"/\")\n .includes(\"add-product\");\n const isApproved = this.state?.currentRequestStatus === \"APPROVED\";\n\n const apiUrl =\n isApproved || isAddProductPage\n ? `/catalogue-service/seller-product-request`\n : `/catalogue-service/seller-product-request/${requestId}`;\n\n const apiMethod = isApproved || isAddProductPage ? \"post\" : \"put\";\n\n const api = new API({ url: apiUrl });\n\n if (\n isMinimumProfitMargin ||\n (variants && variants.length > 1) ||\n (apiMethod === \"put\" && !requestId)\n ) {\n // Added for WSI, future after correcting DB design\n this.setState({\n submitting: false,\n });\n return;\n }\n\n const storeId = Object.keys(storeData[0]?.product)[0];\n const { sellingPrice, sellerDiscount } = storeData[0]?.product[storeId];\n const params = {\n organizationId: getSession()?.organization?.id?.toString(),\n storeId: Number(storeId),\n status: this.status[statusKey],\n description: exportText(importText(this.state.values.description)),\n shortDescription: values.metaData?.[\"Short Description\"],\n discount: sellerDiscount,\n sellingPrice,\n images: values.variants[0]?.images || [],\n productId: id,\n };\n if (this.isOwnerCreatingRequest) {\n let urlParams = new URL(document.location).searchParams;\n let sellerId = parseInt(urlParams.get(\"sellerId\"));\n params.sellerID = sellerId + \"\";\n params.status = \"PENDING\";\n }\n api[apiMethod](params)\n .then(() => {\n const message =\n params.status === \"PENDING\"\n ? \"product.review.submission.message\"\n : \"product.draft.submission.message\";\n this.setState({\n showReviewSubmissionDialog: true,\n requestSubmissionMessage: message,\n });\n })\n .catch((error) => {\n if (error.code === 401 || error.code === 403) throw error;\n this.setState({\n apiError: error.message,\n showErrorDialog: true,\n });\n console.error(error);\n })\n .finally(() => {\n this.setState({ submitting: false });\n });\n };\n\n async onSubmit(values, storeData) {\n // this.props.onSubmit(values)\n const putApi = new API({ url: `/catalogue-service/product/${values.id}` });\n const postApi = new API({ url: `/catalogue-service/product` });\n const inventoryApi = new API({ url: `/inventory-service/item` });\n\n const param = this.transformSubmit(values);\n const hasBrands = this.props.options && this.props.options.brands;\n const hasTags = this.props.options && this.props.options.tags;\n function updateInventoryAlert(productId, threshold) {\n const inventoryPutApi = new API({\n url: `/inventory-service/item/${productId}/alert`,\n });\n return inventoryPutApi.put({ threshold }).catch((error) => {\n console.error(error);\n });\n }\n if (this.props.method === \"add\") {\n if (this.props.options?.masterCatelogue) {\n if (!hasTags) {\n delete param.tagIds;\n }\n if (!hasBrands) {\n param.brandId = \"\";\n }\n if (param.variants && param.variants.length > 0) {\n param.variants.forEach((variant) => {\n delete variant.id;\n });\n }\n param.clientItemId = String(param.id);\n delete param.id;\n delete param.createdAt;\n delete param.productId;\n }\n postApi\n .post(param)\n .then(async (response) => {\n if (get(\"AddProductPendingAction\")) {\n this.pendingActionAddProduct(\"PRODUCT_ADDITION\");\n }\n\n if (storeData.length === 1 && storeData[0].product) {\n let data = storeData[0].product;\n await Promise.all(\n Object.keys(data).map(async (storeId) => {\n let params = data[storeId];\n params = this.changeParamsDataType(params);\n if (\n (params.mrp !== 0 && !params.mrp) ||\n (params.stock !== 0 && !params.stock)\n ) {\n console.warn(\"Invalid params\", params);\n return;\n }\n params.productId = response.data?.product?.id;\n params.storeId = Number(storeId);\n if (isExtensionEnabled(\"MarketPlace\")) {\n const dealerPrice = params?.dealerPrice;\n const mrp = params?.mrp;\n const discount = mrp - dealerPrice;\n params.discount = discount;\n delete params?.dealerPrice;\n }\n try {\n await inventoryApi.post(params);\n } catch (error) {\n console.error(error);\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n this.setState({\n apiError: error.message,\n showErrorDialog: true,\n });\n }\n })\n );\n if (isMarketPlaceOwner()) {\n const { variants } = response.data?.product;\n const productId = response.data?.product?.id;\n this.handlePermissableSellerSubmit(\n values.permissableSellers,\n productId\n );\n\n if (!variants || (variants && variants?.length === 0)) {\n await updateInventoryAlert(productId, Number(param?.threshold));\n } else {\n const updatePromises = variants.map((variant) => {\n const matchingVariant = param.variants.find(\n (v) => v.id === variant.id\n );\n return updateInventoryAlert(\n variant.id,\n Number(matchingVariant?.threshold)\n );\n });\n await Promise.all(updatePromises);\n }\n }\n } else {\n await Promise.all(\n storeData.map(async (variant) => {\n await Promise.all(\n Object.keys(variant).map(async (variantName) => {\n if (!variantName) return;\n\n if (variant[variantName]) {\n await Promise.all(\n Object.keys(variant[variantName]).map(\n async (storeId) => {\n let params = variant[variantName][storeId];\n const foundVariant =\n response.data?.product?.variants?.find(\n (v) => v.name === variantName\n );\n params.productId = foundVariant\n ? foundVariant.id\n : null;\n params.storeId = Number(storeId);\n params = this.changeParamsDataType(params);\n if (isExtensionEnabled(\"MarketPlace\")) {\n const dealerPrice = params?.dealerPrice;\n const mrp = params?.mrp;\n const discount = mrp - dealerPrice;\n params.discount = discount;\n delete params?.dealerPrice;\n }\n if (\n (params.mrp !== 0 && !params.mrp) ||\n (params.stock !== 0 && !params.stock)\n ) {\n console.warn(\"Invalid params\", params);\n return;\n }\n try {\n await inventoryApi.post(params);\n } catch (error) {\n console.error(error);\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n this.setState({\n apiError: error.message,\n showErrorDialog: true,\n });\n }\n }\n )\n );\n }\n })\n );\n })\n );\n if (isMarketPlaceOwner()) {\n const { variants } = response.data?.product;\n const productId = response.data?.product?.id;\n this.handlePermissableSellerSubmit(\n values.permissableSellers,\n productId\n );\n\n if (variants || (variants && variants?.length === 0)) {\n await updateInventoryAlert(productId, Number(param?.threshold));\n } else {\n const updatePromises = variants.map((variant) => {\n const matchingVariant = param.variants.find(\n (v) => v.id === variant.id\n );\n return updateInventoryAlert(\n variant.id,\n Number(matchingVariant?.threshold)\n );\n });\n await Promise.all(updatePromises);\n }\n }\n }\n\n if (this.isProductSubscriptionEnabled) {\n const productId = response?.data?.product?.id;\n const productSubscriptionApi = new API({\n url: `/catalogue-service/product/${productId}/subscription`,\n });\n const formattedData = convertToISODuration(\n values.purchaseFrequencyData\n );\n const params = { frequency: formattedData };\n await productSubscriptionApi\n .put(params)\n .then(() => {})\n .catch((error) => {\n console.error(error);\n });\n }\n\n if (param.status === \"PENDING\") {\n this.setState({\n showReviewSubmissionDialog: true,\n });\n } else {\n this.props.onCancel();\n }\n })\n .catch((error) => {\n console.error(error);\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n this.setState({\n apiError: error.message,\n showErrorDialog: true,\n submitting: false,\n });\n });\n } else {\n param.variants &&\n param.variants.forEach((variant) => {\n if (variant.id && !variant.productId) {\n delete variant.id;\n }\n });\n\n try {\n const response = await putApi.put(param);\n if (get(\"AddProductPendingAction\")) {\n this.pendingActionAddProduct(\"PRODUCT_ADDITION\");\n }\n await Promise.all(\n storeData.map(async (variant) => {\n await Promise.all(\n Object.keys(variant).map(async (variantName) => {\n if (variant[variantName]) {\n await Promise.all(\n Object.keys(variant[variantName]).map(async (storeId) => {\n let params = variant[variantName][storeId];\n if (params.productId) {\n params.productId = variant.id;\n } else if (\n !response.data?.product?.variants ||\n (response.data.product?.variants &&\n response.data.product.variants?.length === 0)\n ) {\n params.productId = response.data?.product?.id;\n } else {\n const foundVariant =\n response.data.product?.variants?.find(\n (v) => v.name === variantName\n );\n params.productId = foundVariant\n ? foundVariant.id\n : null;\n }\n\n params.storeId = Number(storeId);\n params = this.changeParamsDataType(params);\n if (isExtensionEnabled(\"MarketPlace\")) {\n const dealerPrice = params?.dealerPrice;\n const mrp = params?.mrp;\n const discount = mrp - dealerPrice;\n params.discount = discount;\n delete params?.dealerPrice;\n }\n if (\n (params.mrp !== 0 && !params.mrp) ||\n (params.stock !== 0 && !params.stock)\n ) {\n console.error(\"Invalid params\", params);\n return;\n }\n\n if (!isExtensionEnabled(\"StockManagement\")) {\n params.unlimitedStock = false;\n }\n\n try {\n await inventoryApi.post(params);\n } catch (error) {\n console.error(error);\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n this.setState({\n apiError: error.message,\n showErrorDialog: true,\n });\n }\n })\n );\n }\n })\n );\n })\n );\n\n if (isMarketPlaceOwner()) {\n const { variants } = response.data?.product;\n const productId = response.data?.product?.id;\n this.handlePermissableSellerSubmit(\n values.permissableSellers,\n productId\n );\n\n if (!variants || (variants && variants?.length === 0)) {\n await updateInventoryAlert(productId, Number(param?.threshold));\n } else {\n const updatePromises = variants.map((variant) => {\n const matchingVariant = param.variants.find(\n (v) => v.id === variant.id\n );\n return updateInventoryAlert(\n variant.id,\n Number(matchingVariant?.threshold)\n );\n });\n await Promise.all(updatePromises);\n }\n }\n\n this.setState({ submitting: false });\n\n if (this.isProductSubscriptionEnabled) {\n const { id, variants = [] } = values;\n const productId = variants.length > 0 ? variants[0]?.id : id;\n if (productId) {\n const productSubscriptionApi = new API({\n url: `/catalogue-service/product/${productId}/subscription`,\n });\n const formattedData = convertToISODuration(\n values.purchaseFrequencyData\n );\n const params = { frequency: formattedData };\n await productSubscriptionApi\n .put(params)\n .then(() => {})\n .catch((error) => {\n console.error(error);\n });\n }\n }\n\n if (param.status === \"PENDING\") {\n this.setState({\n showReviewSubmissionDialog: true,\n });\n } else {\n this.props.onCancel();\n }\n } catch (error) {\n console.error(error);\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n this.setState({\n apiError: error.message,\n showErrorDialog: true,\n submitting: false,\n });\n }\n }\n }\n\n handlePermissableSellerSubmit = (permissableSellers = null, id) => {\n if (!permissableSellers) return;\n\n const addedSellers = this.state?.permissableSellers || [];\n const permissablePayload = permissableSellers.map((seller) => ({\n sellerID: seller.id,\n status: \"ENABLED\",\n }));\n\n const existingSellerIDs = new Set(\n permissablePayload.map((item) => item.sellerID)\n );\n\n addedSellers.forEach((seller) => {\n if (!existingSellerIDs.has(seller.id)) {\n permissablePayload.push({ sellerID: seller.id, status: \"DISABLED\" });\n }\n });\n\n const permissableApi = new API({\n url: `/catalogue-service/product/${id}/permissible-seller`,\n });\n\n permissableApi\n .put({ permissibleProductSeller: permissablePayload })\n .then((res) => {})\n .catch((error) => {\n console.error(error);\n });\n };\n\n _submitHandler(e) {\n e && e.preventDefault();\n this.beforeSubmit();\n this.setState({\n pressedSubmitWithCurrentData: true,\n submitting: true,\n });\n let isValid = this.isFormValid();\n let storeData = [];\n\n if (isValid) {\n const values = JSON.parse(JSON.stringify(this.state.values));\n values.variants &&\n values.variants.forEach((variant) => {\n if (variant.name) {\n storeData.push({ [variant.name]: variant.storeSpecificData });\n }\n if (!variant.name) {\n storeData.push({ product: variant.storeSpecificData });\n }\n delete variant.storeSpecificData;\n });\n\n // submission function\n if (this.isMarketPlaceSeller || this.isOwnerCreatingRequest) {\n this.onSubmitRequest(\n values,\n storeData,\n e?.nativeEvent?.submitter?.value\n );\n } else if (this.isMarketPlaceOwner && this.isSellerSection()) {\n this.onSubmitOwnerRequest(\n values,\n storeData,\n e?.nativeEvent?.submitter?.value\n );\n } else {\n this.onSubmit(values, storeData);\n }\n } else {\n this.setState({ submitting: false });\n }\n }\n getStores() {\n if (this.props.options && this.props.options.multipleStores) {\n this.setState({\n loadingStores: true,\n failedLoadingStores: false,\n });\n this.props.options\n .getStores()\n .then((stores) => {\n this.setState(\n (prevState) => {\n let newState = Object.assign({}, prevState, {\n stores,\n loadingStores: false,\n failedLoadingStores: false,\n });\n return newState;\n },\n () => {\n // const location = window.location.pathname.split(\"/\");\n if (window.location.pathname.split(\"/\").includes(\"add\")) {\n if (this.props.options?.masterCatelogue && this.state.stores) {\n const defaultStore = this.state.stores.filter(\n (store) => store.default === true\n );\n this.getInventoryData(defaultStore[0]?.id);\n }\n return null;\n }\n (this.state.stores || [{ id: getDefaultStore().storeId }]).map(\n (store) =>\n (store.hasPicking || store.hasSelfCheckout) &&\n this.getInventoryData(store.id)\n );\n }\n );\n })\n .catch((error) => {\n this.setState({\n loadingStores: false,\n failedLoadingStores: true,\n });\n console.error(error);\n });\n } else {\n this.setState(\n (prevState) => {\n let newState = Object.assign({}, prevState, {\n stores: getStores(),\n });\n return newState;\n },\n () => {\n if (this.props.method === \"add\") {\n if (this.props.options?.masterCatelogue && this.state.stores) {\n const defaultStore = this.state.stores.filter(\n (store) => store.default === true\n );\n this.getInventoryData(defaultStore[0]?.id);\n }\n return null;\n }\n this.getInventoryData(get(\"store\"));\n }\n );\n }\n }\n\n onSelectStore(storeId) {\n this.setState({ selectedStore: storeId });\n }\n\n handleUpdateMetaData = (metaValue, metaResponse) => {\n let metaData = metaValue;\n if (!metaData) {\n metaData = {};\n metaResponse &&\n Object.keys(metaResponse).forEach((mt) => {\n metaData[mt] = \"\";\n });\n metaValue = {\n ...metaData,\n };\n } else {\n let newMetaData = {};\n metaResponse &&\n Object.keys(metaResponse).forEach((mt) => {\n newMetaData[mt] = metaData[mt] || \"\";\n });\n metaValue = {\n ...metaData,\n };\n }\n return metaValue;\n };\n\n getEntityMetaData() {\n let { props } = this;\n if (\n props.options &&\n props.options.entityMetaData &&\n props.options.getProductMetaData\n ) {\n this.setState({\n loadingProductMetaData: true,\n });\n props.options.getProductMetaData().then((metaDataResponse) => {\n const productMetaData = metaDataResponse.product;\n const variantMetaData = metaDataResponse?.variant;\n this.productMetaDataWithType = metaDataResponse;\n\n if (isExtensionEnabled(\"MarketPlace\")) {\n this.marketPlaceVariantMetadata = {\n \"Minimum Profit Margin\":\n metaDataResponse.product?.[\"Minimum Profit Margin\"],\n };\n this.marketPlaceProductMetadata = {\n \"Short Description\":\n metaDataResponse.product?.[\"Short Description\"],\n };\n if (variantMetaData?.metaData)\n variantMetaData[\"Minimum Profit Margin\"] =\n metaDataResponse.product[\"Minimum Profit Margin\"];\n\n delete productMetaData?.[\"Minimum Profit Margin\"];\n delete productMetaData?.[\"Short Description\"];\n }\n\n let values = Object.assign({}, this.state.values);\n\n values.metaData = this.handleUpdateMetaData(\n values.metaData,\n productMetaData\n );\n\n if (values?.variants?.length) {\n values.variants.forEach((variant, index) => {\n variant.metaData = this.handleUpdateMetaData(\n variant?.metaData,\n variantMetaData\n );\n });\n }\n\n this.setState({\n values,\n loadingProductMetaData: false,\n });\n });\n }\n }\n\n getInventoryData(storeId) {\n const variants = Object.assign({}, this.state.values.variants);\n let ids = [];\n Object.values(variants).forEach((variant) => {\n ids.push(variant.id);\n });\n this.props.options.getInventoryData &&\n this.props.options.getInventoryData(storeId, ids).then(\n (response) => {\n // let variants = this.state.values && this.state.values.variants && Object.assign({}, this.state.values.variants)\n let newValues = this.state.values && cloneDeep(this.state.values);\n let variants = newValues.variants;\n variants &&\n variants?.length === response?.data?.length &&\n variants.forEach((variant, index) => {\n variant.storeSpecificData = variant.storeSpecificData || {};\n variant.storeSpecificData[storeId] = response.data?.[index] || {\n location: {},\n tax: {},\n };\n if (isExtensionEnabled(\"MarketPlace\")) {\n const mrp = variant.storeSpecificData[storeId]?.mrp;\n const discount = variant.storeSpecificData[storeId]?.discount;\n const dealerPrice = mrp - discount;\n variant.storeSpecificData[storeId].dealerPrice = dealerPrice;\n }\n });\n this.setState({ values: newValues });\n },\n (error) => {\n this.setState({ error });\n }\n );\n }\n\n updateItemData = (item) => {\n this.props.options\n .updateItem(item.url, item.name)\n .then((response) => {\n const dataItem = response?.data?.[item.keyName];\n\n if (item.keyName === \"brand\") {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.values.brand = dataItem;\n return newState;\n });\n } else {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.values[item.stateKeyName] = [dataItem];\n return newState;\n });\n }\n })\n .catch((error) => {\n console.error(error.message);\n });\n };\n\n handleVariantName = () => {\n const { variantFields } = this.state;\n const filteredName = variantFields.filter((str) => str !== undefined);\n const concatinatedName = filteredName.join(\"-\");\n this.setState({\n variantName: concatinatedName,\n });\n };\n\n handleCancelEditVariant = () => {\n this.setState(\n (prevState) => {\n let newState = Object.assign({}, prevState);\n newState.values.variants = this.state.variants;\n newState.values.variants[this.state.selectedVariant].name =\n this.state.cancelEditVariantName;\n return newState;\n },\n () => {\n this.setState({\n editVariant: !this.state.editVariant,\n });\n }\n );\n };\n handleEditVariantName = () => {\n const {\n editVariantFields,\n selectedVariant,\n productVariantProperties,\n values,\n } = this.state;\n\n if (isEmpty(productVariantProperties?.productProperties)) {\n this.setState(\n (prevState) => {\n let newState = Object.assign({}, prevState);\n newState.values.variants = this.state.variants;\n return newState; // should return newState instead of prevState\n },\n () => {\n this.setState({\n editVariant: !this.state.editVariant,\n });\n }\n );\n } else {\n const filteredName = editVariantFields.filter((str) => str !== undefined);\n const concatinatedName = filteredName.join(\"-\");\n\n const variantProperties = (\n productVariantProperties?.productProperties || []\n ).map((data, index) => {\n return {\n id: data.variantId,\n propertyId: data.id,\n value: editVariantFields[index],\n };\n });\n\n let valueCopy = cloneDeep(values);\n valueCopy.variants[selectedVariant].name = concatinatedName;\n valueCopy.variants[selectedVariant].properties = variantProperties;\n\n this.setState({\n values: valueCopy,\n editVariant: !this.state.editVariant, // removed second call to setState\n editVariantFields: [],\n });\n }\n };\n\n handleVariantFieldChange = (value, index) => {\n this.setState((prevState) => {\n const variantFields = [...prevState.variantFields];\n variantFields[index] = value;\n return { variantFields };\n }, this.handleVariantName);\n };\n\n handleEditVariantFieldChange = (value, index) => {\n if (this.state.editVariantFields) {\n this.setState((prevState) => {\n const editVariantFields = [...prevState.editVariantFields];\n editVariantFields[index] = value;\n return { editVariantFields };\n }, this.handleVariantName);\n }\n };\n\n getItemData = () => {\n const brandName = this.props.value?.brand?.name;\n const categoryName = this.props.value?.categories?.[0]?.name;\n const tagName = this.props.value?.tags?.[0]?.name;\n const hasBrands = this.props.options && this.props.options.brands;\n const hasTags = this.props.options && this.props.options.tags;\n\n const itemList = [\n {\n url: \"/catalogue-service/category\",\n name: categoryName,\n keyName: \"category\",\n stateKeyName: \"categories\",\n enable: true,\n },\n {\n url: \"/catalogue-service/tag\",\n name: tagName,\n keyName: \"tag\",\n stateKeyName: \"tags\",\n enable: hasTags,\n },\n {\n url: \"/catalogue-service/brand\",\n name: brandName,\n keyName: \"brand\",\n stateKeyName: \"brand\",\n enable: hasBrands,\n },\n ];\n itemList\n .filter((item) => item.enable)\n .forEach((item) => {\n item.name &&\n this.props.options\n .getItem(item.url, item.name)\n .then((response) => {\n const dataList = response?.data?.[item.keyName]?.filter(\n (data) => data.name === item.name\n );\n\n if (dataList.length) {\n if (item.keyName === \"brand\") {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.values.brand = dataList[0];\n return newState;\n });\n } else {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.values[item.stateKeyName] = dataList;\n return newState;\n });\n }\n } else {\n this.updateItemData(item);\n }\n })\n .catch((error) => {\n console.error(error.message);\n });\n });\n };\n\n fetchThreshold = async (id) => {\n try {\n const response = await this.getInventoryAlert(id).get();\n return response?.data?.threshold;\n } catch (error) {\n console.error(error);\n return null;\n }\n };\n\n getInventoryAlert = (productId) => {\n const inventoryPutApi = new API({\n url: `/inventory-service/item/${productId}/alert`,\n });\n return inventoryPutApi;\n };\n\n fetchAllThresholds = async (valueFromProps) => {\n const productIds =\n valueFromProps.variants.length === 0\n ? [valueFromProps.id]\n : valueFromProps.variants.map((variant) => variant.id);\n\n try {\n const thresholds = await Promise.all(\n productIds.map(async (id) => await this.fetchThreshold(id))\n );\n\n const thresholdsByVariantId = {};\n\n productIds.forEach((id, index) => {\n thresholdsByVariantId[id] = thresholds?.[index];\n });\n\n // Update thresholds inside the variants array\n const updatedVariants = valueFromProps.variants.map((variant) => ({\n ...variant,\n threshold: thresholdsByVariantId[variant.id],\n }));\n\n this.setState((prevState) => ({\n values: {\n ...prevState.values,\n variants: updatedVariants,\n },\n }));\n } catch (error) {\n console.error(\"Error fetching thresholds:\", error);\n }\n };\n\n getRefactorPermissableSellers = (response = []) => {\n let permissibleSellers = [];\n permissibleSellers = response?.map((seller) => {\n return {\n id: seller.sellerId,\n name: seller.name,\n };\n });\n return permissibleSellers;\n };\n\n getPermissableSellers = () => {\n const productId = this.state.values.id;\n if (productId) {\n const permissableApi = new API({\n url: `/catalogue-service/permissible-seller?productId=${productId}&status=ENABLED`,\n });\n permissableApi\n .get()\n .then((response) => {\n let values = Object.assign({}, this.state.values);\n const permissableSellers = this.getRefactorPermissableSellers(\n response?.data?.permissibleSellers\n );\n values.permissableSellers = permissableSellers;\n this.setState({\n values,\n permissableSellers,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n };\n\n fetchSellerRequestData = () => {\n const requestId = new URLSearchParams(window.location.search).get(\n \"requestId\"\n );\n\n if (!requestId) return;\n\n const api = new API({\n url: `/catalogue-service/seller-product-request/${parseInt(requestId)}`,\n });\n\n api\n .get()\n .then(({ data: { request } }) => {\n const {\n images: imagesArr,\n description,\n shortDescription,\n sellingPrice,\n discount,\n status,\n } = request;\n\n if (this.isSellerSection()) {\n this.setState(\n (prevState) => {\n const updatedVariants = prevState.values.variants.map(\n (item, index) => {\n if (index !== 0) return item;\n\n const storeKey = Object.keys(item.storeSpecificData)[0];\n const storeData = item.storeSpecificData[storeKey];\n\n return {\n ...item,\n images: imagesArr ?? item.images,\n storeSpecificData: {\n ...item.storeSpecificData,\n [storeKey]: {\n ...storeData,\n sellingPrice: sellingPrice,\n sellerDiscount: discount,\n },\n },\n };\n }\n );\n\n return {\n currentRequestStatus: status,\n ...prevState,\n values: {\n ...prevState.values,\n sellerName: request?.sellerName,\n description: description ?? prevState.values.description,\n variants: updatedVariants,\n metaData: {\n ...prevState.values.metaData,\n \"Short Description\":\n shortDescription ??\n prevState?.values?.metaData?.[\"Short Description\"],\n },\n },\n };\n },\n () => {\n const storeKey = Object.keys(\n this.state.values.variants[0].storeSpecificData\n )[0];\n this.handleSellingAndProfitMargin(0, storeKey);\n }\n );\n }\n })\n .catch(console.error);\n };\n\n fetchSubscriptionData = () => {\n const { id, variants = [] } = this.state.values;\n const productId = variants.length > 0 ? variants[0]?.id : id;\n\n const productSubscriptionApi = new API({\n url: `/catalogue-service/product/${productId}/subscription`,\n });\n\n productSubscriptionApi\n .get()\n .then((resp) => {\n const formattedTime = parseISODuration(\n resp.data.productSubscription?.frequency\n );\n const updatedValues = {\n ...this.state.values,\n purchaseFrequencyData: formattedTime,\n };\n\n this.setState({\n isRecurringProduct: true,\n values: updatedValues,\n });\n })\n .catch((error) => {\n console.error(\"Error fetching subscription data:\", error);\n });\n };\n\n async componentDidMount() {\n const location = window.location.pathname.split(\"/\");\n let urlParams = new URL(document.location).searchParams;\n let requestId = parseInt(urlParams.get(\"requestId\"));\n if (isMarketPlaceOwner() && !isSellerSection()) {\n this.getPermissableSellers();\n }\n const valueFromProps = this.props.value;\n if (\n isExtensionEnabled(\"MarketPlace\") &&\n (this.props.method === \"edit\" || location.includes(\"add-product\")) &&\n valueFromProps\n ) {\n await this.fetchAllThresholds(valueFromProps);\n }\n let inventoryConfig = new API({ url: `/config-service/config/inventory` });\n inventoryConfig\n .get()\n .then((response) => {\n let taxArray = response.data?.inventory?.taxes || [];\n this.setState({ taxArray });\n if (response.data?.inventory?.taxes === null) {\n const country = new API({\n url: `/account-service/country?isoCode=${\n getSession().organization.countryCode\n }`,\n });\n country.get(\"\", { \"X-API-VERSION\": 2 }).then((response) => {\n this.setState({ taxes: response.data?.country?.[0]?.tax });\n });\n }\n })\n .catch((error) => {\n console.error(error);\n });\n\n if (isExtensionEnabled(\"MultiVariantSupport\")) {\n const getProductProperties = new API({\n url: `/catalogue-service/product-properties`,\n });\n getProductProperties\n .get()\n .then((response) => {\n this.setState({\n productVariantProperties: response.data,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n if (\n this.props.options?.masterCatelogue &&\n this.props.method === \"add\" &&\n this.props.value\n ) {\n // get the category, tag, brand for state.values\n // as masterCatelogue has different id these\n this.getItemData();\n }\n if (\n this.props.method === \"edit\" &&\n valueFromProps &&\n valueFromProps.variants\n ) {\n if (\n valueFromProps.variants.length === 1 &&\n valueFromProps.variants[0].name\n ) {\n this.setState({ variantToggle: true });\n }\n if (valueFromProps.variants.length > 1) {\n this.setState({ variantToggle: true });\n }\n }\n this.getStores();\n this.getEntityMetaData();\n let tabs = {\n description: getMessage(\"product.form.description.heading\"),\n otherDetails: getMessage(\"product.form.other.details.heading\"),\n };\n if (!isExtensionEnabled(\"EntityMetaData\")) {\n delete tabs.otherDetails;\n }\n this.setState({ selected: tabs.description, tabs: tabs });\n const supportVariants =\n (this.props.options &&\n this.props.options.variants &&\n this.props.method === \"add\") ||\n (this.props.options &&\n this.props.options.variants &&\n this.props.value &&\n this.props.value.variants &&\n this.props.value.variants.length > 0);\n if (\n supportVariants &&\n this.props.method === \"edit\" &&\n this.getState([\"variants\"]).length > 1\n ) {\n this.setState({ variantToggle: true });\n }\n // this.getInventoryData(getDefaultStore().storeId)\n const storeId = get(\"store\");\n if (storeId) {\n this.updateState(\n [\"variants\", 0, \"storeSpecificData\", storeId, \"status\"],\n \"ENABLED\"\n );\n }\n if (isSellerSection() && requestId) {\n this.fetchSellerRequestData();\n }\n if (this.isProductSubscriptionEnabled && this.props.method === \"edit\") {\n this.fetchSubscriptionData();\n }\n }\n\n handleEditBtnClick = () => {\n const { productVariantProperties, selectedVariant, values } = this.state;\n const oldVariant =\n this.state.values?.variants[this.state.selectedVariant]?.name;\n this.setState({\n cancelEditVariantName: oldVariant,\n });\n if (isEmpty(productVariantProperties?.productProperties)) {\n this.setState({\n editVariant: !this.state.editVariant,\n variants: this.state.values.variants,\n });\n return;\n }\n\n const { productProperties } = productVariantProperties;\n const selectedVariantObj = values.variants[selectedVariant];\n const { name } = selectedVariantObj;\n const variantNameArray = name?.split(\"-\");\n\n const formattedName = variantNameArray?.filter(\n (ele, index) => index < productProperties.length\n );\n\n this.setState(\n {\n editVariantFields: formattedName,\n },\n this.setState({\n editVariant: !this.state.editVariant,\n })\n );\n };\n\n handleSellingPrice = (e, variantIndex, storeId, type) => {\n const value = e;\n this.setState(\n (prevState) => {\n const newState = { ...prevState };\n const newVariant = [...newState.values.variants];\n const storeSpecificData = {\n ...newVariant[variantIndex].storeSpecificData,\n };\n const storeData = { ...storeSpecificData[storeId] };\n storeData[type] = value;\n\n storeSpecificData[storeId] = storeData;\n newVariant[variantIndex].storeSpecificData = storeSpecificData;\n newState.values.variants = newVariant;\n return newState;\n },\n () => {\n this.handleSellingAndProfitMargin(variantIndex, storeId);\n }\n );\n };\n\n handleSellingAndProfitMargin = (variantIndex, storeId) => {\n const sellingPrice =\n this.state.values.variants[variantIndex].storeSpecificData[storeId]\n .sellingPrice || 0;\n const sellerDiscount =\n this.state.values.variants[variantIndex].storeSpecificData[storeId]\n .sellerDiscount || 0;\n const sellingMargin = sellingPrice - sellerDiscount;\n const mrp =\n this.state.values.variants[variantIndex].storeSpecificData[storeId].mrp ||\n 0;\n const discount =\n this.state.values.variants[variantIndex].storeSpecificData[storeId]\n .discount || 0;\n const dealerPrice = mrp - discount;\n const profitMargin = ((sellingMargin - dealerPrice) / dealerPrice) * 100;\n const minimumProfitMargin =\n this.state.values.variants[variantIndex].metaData[\n \"Minimum Profit Margin\"\n ];\n this.setState({\n profitMargin: profitMargin.toFixed(2),\n isMinimumProfitMargin: Number(profitMargin) < Number(minimumProfitMargin),\n sellingMargin,\n });\n };\n\n render() {\n const { SubmitButton, CancelButton } = this.buttons;\n const { Form } = this.components;\n // Allow user to create more variants if the product already had variants\n const supportVariants =\n (this.props.options &&\n this.props.options.variants &&\n this.props.method === \"add\") ||\n (this.props.options &&\n this.props.options.variants &&\n this.props.value &&\n this.props.value.variants &&\n this.props.value.variants.length > 0);\n const booleanStock =\n this.props.options &&\n this.props.options.stockStrategy === STOCK_STRATEGIES.BOOLEAN;\n // const hasMultipleStores = this.props.options && this.props.options.multipleStores\n const hasTags = this.props.options && this.props.options.tags;\n const hasInstoreProcessing =\n this.props.options && this.props.options.inStoreProcessing;\n const hasSoldByWeight =\n this.props.options && this.props.options.soldByWeight;\n const preOrderSupport =\n this.props.options && this.props.options.preOrderSupport;\n const bulkOrderSuppport =\n this.props.options && this.props.options.bulkOrderSuppport;\n const namepattern = \"[a-zA-Z0-9\\\\s]+([0-9]+\\\\s+(kg|g|gm))$\";\n const variantpattern = \"([a-zA-Z0-9]\\\\s*)*([0-9]+\\\\s+(kg|g|gm))$\";\n const namePattern =\n this.state.values.soldByWeight && !this.state.values.variants\n ? namepattern\n : \".*\";\n const variantPattern = this.state.values.soldByWeight\n ? variantpattern\n : \".*\";\n const enabledSoldByWeight = this.state.values.soldByWeight;\n let stores = this.state.stores && this.state.stores.slice();\n stores =\n stores &&\n stores.filter((store) => store.hasPicking || store.hasSelfCheckout);\n stores =\n stores &&\n Object.assign({}, ...stores.map((item) => ({ [item[\"id\"]]: item })));\n let { tabs, selected } = this.state;\n const checkEditStatus = (variantIndex) => {\n if (this.props?.value?.variants) {\n if (this.props?.value?.variants[variantIndex]?.clientItemId) {\n return true;\n } else {\n return false;\n }\n } else {\n return false;\n }\n };\n const countryCode = getSession().organization.countryCode || \"IN\";\n const clientItemLabel = fetchClientItemLabel(countryCode);\n\n const checkLowStockEditStatus = (variantIndex) => {\n if (!isMarketPlaceOwner()) {\n if (this.props?.value?.variants) {\n if (this.props?.value?.variants[variantIndex]?.clientItemId) {\n return true;\n } else {\n return false;\n }\n } else {\n return false;\n }\n }\n };\n\n const getVariantInputFields = (variantIndex) => {\n const { productVariantProperties, variantFields } = this.state;\n if (isEmpty(productVariantProperties?.productProperties)) {\n return (\n <Input\n className=\"variant-name\"\n label={getMessage(\"product.form.variant.name.heading\")}\n placeholder={getMessage(\"product.form.variant.name.placeholder\")}\n name={`variant-${variantIndex}-name`}\n type=\"text\"\n required\n pattern={variantPattern}\n suffix={\n supportVariants ? (\n <button\n type=\"button\"\n className=\"add-variant-link\"\n onClick={this.addVariant}\n >\n <span>+</span>{\" \"}\n {getMessage(\"product.form.variant.addButtonText\")}\n </button>\n ) : null\n }\n value={this.state.variantName}\n readOnly={this.state.editVariant}\n onChange={(value) => this.setState({ variantName: value })}\n onKeyPress={(event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n }\n }}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n >\n {enabledSoldByWeight\n ? getMessage(\"product.form.variant.pattern\")\n : \"\"}\n </Input>\n );\n }\n\n const variantFieldsLength = variantFields.reduce(\n (count, currentValue) => {\n if (Boolean(currentValue && currentValue.trim())) {\n return count + 1;\n }\n return count;\n },\n 0\n );\n\n const { productProperties } = productVariantProperties;\n\n return (\n <>\n {productProperties.map((data, index) => (\n <Input\n key={index} // Add a key prop to the Input component to avoid a warning\n className=\"variant-name\"\n placeholder={data?.name}\n name={`variant-${variantIndex}-name`}\n type=\"text\"\n required\n pattern={variantPattern}\n suffix={null}\n value={this.state.variantFields[index]}\n readOnly={this.state.editVariant}\n onChange={(value) => this.handleVariantFieldChange(value, index)}\n onKeyPress={(event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n }\n }}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n >\n {enabledSoldByWeight\n ? getMessage(\"product.form.variant.pattern\")\n : \"\"}\n </Input>\n ))}\n <button\n type=\"button\"\n className=\"add-variant-link\"\n onClick={this.addVariant}\n disabled={variantFieldsLength !== productProperties.length}\n >\n <span>+</span> {getMessage(\"product.form.variant.addButtonText\")}\n </button>\n </>\n );\n };\n\n this.isSellerSection = () => {\n const location = window.location.pathname.split(\"/\");\n if (isExtensionEnabled(\"MarketPlace\")) {\n if (isMarketPlaceSeller() || location.includes(\"seller-catalogue\")) {\n return true;\n }\n }\n return false;\n };\n\n const getEditVariantInputs = () => {\n const { productVariantProperties, selectedVariant, editVariantFields } =\n this.state;\n if (isEmpty(productVariantProperties?.productProperties)) {\n return (\n <>\n <div>\n {Array.isArray(this.state.values.variants)\n ? this.state.values.variants.map((variant, index, arr) => {\n return (\n <Input\n key={`variant-${index}`}\n value={this.state.variants[index].name}\n onChange={(value) => {\n this.setState((prevState) => {\n let newState = cloneDeep(prevState);\n newState.variants[index].name = value;\n return newState;\n });\n }}\n readOnly={this.state.selectedVariant !== index}\n onKeyPress={(event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n }\n }}\n />\n );\n })\n : null}\n </div>\n <div>\n <button\n type=\"button\"\n className=\"primary variant-save\"\n // disabled={variantFieldsLength !== productProperties.length}\n onClick={() => {\n this.handleEditVariantName();\n }}\n >\n {getMessage(\"save.text\")}\n </button>\n\n <button\n type=\"button\"\n className=\"button variant-cancel\"\n onClick={() => {\n this.handleCancelEditVariant();\n }}\n >\n {getMessage(\"cancel.text\")}\n </button>\n </div>\n </>\n );\n }\n\n const variantFieldsLength = editVariantFields?.reduce(\n (count, currentValue) => {\n if (Boolean(currentValue && currentValue.trim())) {\n return count + 1;\n }\n return count;\n },\n 0\n );\n\n const { productProperties } = productVariantProperties;\n return (\n <>\n <div>\n {productProperties?.map((data, index) => (\n <Input\n key={index} // Add a key prop to the Input component to avoid a warning\n className=\"variant-name\"\n placeholder={data?.name}\n name={`variant-${selectedVariant}-name`}\n type=\"text\"\n required\n pattern={variantPattern}\n suffix={null}\n value={\n (this.state?.editVariantFields &&\n this.state?.editVariantFields[index]) ||\n null\n }\n onChange={(value) =>\n this.handleEditVariantFieldChange(value, index)\n }\n onKeyPress={(event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n }\n }}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n >\n {enabledSoldByWeight\n ? getMessage(\"product.form.variant.pattern\")\n : \"\"}\n </Input>\n ))}\n </div>\n\n <div>\n <button\n type=\"button\"\n className=\"primary variant-save\"\n disabled={variantFieldsLength !== productProperties.length}\n onClick={() => {\n this.handleEditVariantName();\n }}\n >\n {getMessage(\"save.text\")}\n </button>\n\n <button\n type=\"button\"\n className=\"button variant-cancel\"\n onClick={() => {\n this.setState({\n variants: this.getState([\"variants\"]),\n editVariant: !this.state.editVariant,\n });\n }}\n >\n {getMessage(\"cancel.text\")}\n </button>\n </div>\n </>\n );\n };\n const currentTab = getProductRequestStatus()[get(`productPage-tabIndex`)];\n const showApproveBtn =\n this.state?.currentRequestStatus !== \"APPROVED\" &&\n !this.isOwnerCreatingRequest;\n\n const showRejectBtn =\n this.isMarketPlaceOwner &&\n this.isSellerSection() &&\n currentTab === \"PENDING\" &&\n !this.isOwnerCreatingRequest;\n\n return (\n <div>\n <Helmet\n title={\n this.props.method === \"edit\"\n ? \"Zopping - Edit Product\"\n : \"Zopping - Add Product\"\n }\n />\n <Dialog\n show={this.state.deleteProductDialogShown}\n title={\"\"}\n information={getMessage(\"product.form.delete.message\")}\n onOk={this.deleteProduct}\n close={this.hideProductDeleteConfirmation}\n closeText={getMessage(\"cancel.text\")}\n okText={getMessage(\"product.form.delete.confirmText\")}\n />\n <Dialog\n show={this.state.showReviewSubmissionDialog}\n className=\"success\"\n title={getMessage(\"product.review.submission.successTitle\")}\n information={getMessage(this.state.requestSubmissionMessage)}\n okText={getMessage(\"product.review.submission.okText\")}\n onOk={() => {\n this.setState({ showReviewSubmissionDialog: false }, () => {\n this.props.onCancel();\n });\n }}\n />\n <Dialog\n show={this.state.deleteVariantDialogShown}\n title={\"\"}\n information={getMessage(\"product.form.variant.delete.message\")}\n onOk={() => {\n this.removeVariant(this.state.selectedVariant);\n }}\n close={this.hideVariantDeleteConfirmation}\n closeText={getMessage(\"cancel.text\")}\n okText={getMessage(\"product.form.delete.confirmText\")}\n />\n <Popup\n show={this.state.showRejectReasonForm}\n heading={getMessage(\"product.request.reject.form.heading\")}\n close={() => {\n this.setState({ showRejectReasonForm: false, submitting: false });\n }}\n className=\"rejection-form\"\n >\n <form\n onSubmit={(e) => {\n e && e.preventDefault();\n this.submitApprovalStatus({\n rejectionReason: this.state.values?.rejectionReason,\n });\n }}\n >\n <Textarea\n label={getMessage(\"product.request.reject.form.label\")}\n placeholder={getMessage(\n \"product.request.reject.form.placeholder\"\n )}\n {...this.generateStateMappers({\n stateKeys: [\"rejectionReason\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n <button\n className=\"button image-selection-button reject-button\"\n type=\"submit\"\n disabled={!this.state.values?.rejectionReason}\n >\n {getMessage(\"product.request.reject.form.heading\")}\n </button>\n <button\n className=\"button\"\n onClick={() => {\n this.setState({\n showRejectReasonForm: false,\n submitting: false,\n });\n }}\n >\n {getMessage(\"category.form.cancelText\")}\n </button>\n </form>\n </Popup>\n <Dialog\n show={this.state.deleteAllVariantsDialogShown}\n title={\"\"}\n information={getMessage(\"product.form.all.variants.delete.message\")}\n onOk={this.removeAllVariant}\n close={this.hideAllVariantsDeleteConfirmation}\n closeText={getMessage(\"cancel.text\")}\n okText={getMessage(\"product.form.delete.confirmText\")}\n />\n <Dialog\n show={this.state.showErrorDialog}\n information={this.state.apiError}\n close={this.hideApiErrorDialog}\n closeText={getMessage(\"okay.text\")}\n />\n <Form className=\"product-form\">\n <div className=\"basic-section form-row\">\n <span className=\"product-details-header\">\n {getMessage(\"product.form.details.header\")}\n </span>\n <div className=\"flex-around\">\n <Input\n className=\"product-name\"\n label={getMessage(\"product.form.name.heading\")}\n placeholder={getMessage(\"product.form.name.placeholder\")}\n name=\"name\"\n type=\"text\"\n required\n pattern={namePattern}\n siblings={\n this.props.options && this.props.options.brands\n ? {\n before: [\n <BrandSearch\n key=\"brand-name\"\n className=\"brand-name\"\n responseKey=\"brand\"\n placeholder={getMessage(\n \"product.form.brand.placeholder\"\n )}\n name=\"brand\"\n createButton={!isExtensionEnabled(\"MarketPlace\")}\n {...this.generateStateMappers({\n stateKeys: [\"brand\"],\n loseEmphasisOnFill: true,\n })}\n readOnly={this.isInputEditable}\n />,\n ],\n }\n : null\n }\n {...this.generateStateMappers({\n stateKeys: [\"name\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n patternMismatch: getMessage(\n \"product.form.soldByWeight.pattern\"\n ),\n }}\n readOnly={this.isInputEditable}\n >\n {enabledSoldByWeight && !this.state.values.variants\n ? getMessage(\"product.form.name.description\")\n : \"\"}\n </Input>\n <CategorySearch\n label={getMessage(\"product.filters.category.heading\")}\n placeholder={getMessage(\"product.category.placeholder\")}\n name=\"category\"\n required\n responseKey=\"category\"\n createButton={!isExtensionEnabled(\"MarketPlace\")}\n {...this.generateStateMappers({\n stateKeys: [\"categories\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\n \"product.form.category.requiredMessage\"\n ),\n }}\n readOnly={this.isInputEditable}\n multiple\n />\n {hasTags ? (\n <Searchable\n label={getMessage(\"product.filters.tag.heading\")}\n placeholder={getMessage(\"product.form.tag.placeholder\")}\n name=\"tag\"\n searchUrl=\"/catalogue-service/tag\"\n valueKey=\"id\"\n responseKey=\"tag\"\n nameKey=\"name\"\n searchKey=\"name\"\n transformResponse={(response) => response.data?.tag || []}\n createButton={!isExtensionEnabled(\"MarketPlace\")}\n multiple\n {...this.generateStateMappers({\n stateKeys: [\"tags\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n readOnly={this.isInputEditable}\n />\n ) : null}\n {isMarketPlaceOwner() && !isSellerSection() && (\n <Searchable\n label={getMessage(\n \"product.filters.permissableSeller.heading\"\n )}\n placeholder={getMessage(\n \"product.filters.permissableSeller.placeholder\"\n )}\n name=\"seller\"\n searchUrl=\"/account-service/seller\"\n valueKey=\"id\"\n responseKey=\"seller\"\n nameKey=\"name\"\n searchKey=\"name\"\n transformResponse={(response) => response.data?.seller}\n multiple\n {...this.generateStateMappers({\n stateKeys: [\"permissableSellers\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n )}\n {isSellerSection() &&\n !isMarketPlaceSeller() &&\n !this.isOwnerCreatingRequest && (\n <Input\n label={getMessage(\"product.filters.sellerName.heading\")}\n name=\"sellerName\"\n {...this.generateStateMappers({\n stateKeys: [\"sellerName\"],\n loseEmphasisOnFill: true,\n })}\n readOnly\n />\n )}\n {preOrderSupport && (\n <Input\n className=\"handling-days\"\n label={getMessage(\"product.form.handlingDays.label\")}\n placeholder={getMessage(\n \"product.form.handlingDays.placeholder\"\n )}\n name=\"handling-days\"\n type=\"number\"\n min={0}\n {...this.generateStateMappers({\n stateKeys: [\"handlingDays\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n readOnly={this.isInputEditable}\n />\n )}\n {bulkOrderSuppport && (\n <Input\n className=\"bulk-threshold\"\n label={getMessage(\"product.form.bulkThreshold.label\")}\n placeholder={getMessage(\n \"product.form.bulkThreshold.placeholder\"\n )}\n name=\"bulk-order-threshold\"\n type=\"number\"\n min={0}\n {...this.generateStateMappers({\n stateKeys: [\"bulkOrderThreshold\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n readOnly={this.isInputEditable}\n />\n )}\n {hasSoldByWeight ? (\n <Checkbox\n label={getMessage(\"\")}\n inlineLabel={getMessage(\"Sold By Weight\")}\n name={`sold-by-weight`}\n {...this.generateStateMappers({\n stateKeys: [\"soldByWeight\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n readOnly={this.isInputEditable}\n />\n ) : null}\n </div>\n </div>\n {tabs && (\n <div className=\"description-tabs\">\n {Object.keys(tabs).map((key) => {\n return (\n <span\n key={key}\n className={selected === tabs[key] ? \"selected\" : \"\"}\n onClick={() => {\n this.setState({ selected: tabs[key] });\n }}\n >\n {tabs[key]}\n </span>\n );\n })}\n </div>\n )}\n {tabs && selected === tabs.description && (\n <div className=\"flex-item\">\n {isExtensionEnabled(\"MarketPlace\") && (\n <MetaDataFormFields\n metaDataWithType={this.marketPlaceProductMetadata}\n className=\"metadata-section\"\n page=\"product-form\"\n _this={this}\n />\n )}\n <RichEditor\n placeholder={getMessage(\"product.description.placeholder\")}\n value={importText(this.state.values.description)}\n onChange={(value) => this.updateState([\"description\"], value)}\n />\n </div>\n )}\n {tabs && selected === tabs.otherDetails && (\n <>\n {isExtensionEnabled(\"SubscriptionProducts\") && (\n <div className=\"recurring-product-container\">\n <Checkbox\n className=\"extension-toggle\"\n inlineLabel={getMessage(\"recuring.product.label\")}\n name=\"shipRocketExtension\"\n controlled\n value={this.state?.isRecurringProduct}\n onChange={this.toggleIsRecurringProduct}\n disabled={this.isInputEditable}\n />\n\n {this.state.isRecurringProduct && (\n <Input\n className=\"purchase-frequency\"\n label={getMessage(\"Purchase Frequency\")}\n placeholder={getMessage(\"Enter Frequency\")}\n name=\"purchase-frequency\"\n type=\"number\"\n min={0}\n siblings={{\n after: [\n <div\n key=\"purchase-frequency-type\"\n className=\"purchase-frequency-select\"\n >\n <Select\n className=\"frequency-type-select\"\n name=\"type\"\n options={FREQUENCY_TYPE}\n {...this.generateStateMappers({\n stateKeys: [\"purchaseFrequencyData\", \"type\"],\n })}\n />\n </div>,\n ],\n }}\n {...this.generateStateMappers({\n stateKeys: [\"purchaseFrequencyData\", \"frequency\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n readOnly={this.isInputEditable}\n />\n )}\n </div>\n )}\n <MetaDataFormFields\n metaDataWithType={this.productMetaDataWithType?.product}\n className={`metadata-section other-details ${\n this.isInputEditable && \"not-editable\"\n }`}\n page=\"product-form\"\n _this={this}\n />\n </>\n )}\n <div className={supportVariants ? \"variant-section\" : \"no-variants\"}>\n <div className={supportVariants ? \"variant-details\" : null}>\n {supportVariants && (\n <div className=\"toggle-section\">\n <span>{getMessage(\"product.form.variant.heading\")}</span>\n <Toggle\n name=\"variant\"\n className=\"variant-toggle\"\n value={this.state.variantToggle}\n onChange={this.onToggleChange}\n icons={false}\n readOnly={this.isInputEditable}\n />\n </div>\n )}\n {(this.getState([\"variants\"]) || [{}]).map(\n (variant, variantIndex, arr) => (\n <div\n key={`variant-${variant._key || variantIndex}`}\n className={\n variantIndex === this.state.selectedVariant\n ? \"\"\n : \"hidden\"\n }\n >\n {this.state.variantToggle && !this.isMarketPlaceSeller && (\n <div className=\"variant-add-section\">\n <div className=\"variant-input-section\">\n {supportVariants\n ? getVariantInputFields(variantIndex)\n : null}\n </div>\n <div className=\"edit-variant-container\">\n {this.state.editVariant && (\n <div className=\"edit-variant\">\n {getEditVariantInputs()}\n </div>\n )}\n </div>\n {!this.state.editVariant && (\n <div className=\"flex-around variants-tab\">\n {supportVariants &&\n ((this.props.method === \"add\" &&\n (this.getState([\"variants\"]) || []).length > 0) ||\n (this.props.method === \"edit\" &&\n ((this.getState([\"variants\"]) || []).length >\n 1 ||\n ((this.getState([\"variants\"]) || [])\n .length === 1 &&\n this.getState([\"variants\"])[0].name)))) ? (\n <React.Fragment>\n <Tabs\n items={(\n this.getState([\"variants\"]) || []\n ).map((variant, index, arr) => (\n <span>\n {variant.name || \"*\"}\n {arr.length > 1 &&\n this.state.selectedVariant === index ? (\n <span\n alt=\"x\"\n onClick={\n this.showVariantDeleteConfirmation\n }\n className=\"variant-delete-icon\"\n >\n ×\n </span>\n ) : null}\n </span>\n ))}\n active={this.state.selectedVariant}\n onClick={(selectedVariant) => {\n this.setState({ selectedVariant });\n }}\n />\n <button\n type=\"button\"\n className=\"variant-edit\"\n onClick={() => {\n this.handleEditBtnClick();\n }}\n >\n <img src={editIcon} alt=\"edit-variant\" />\n </button>\n </React.Fragment>\n ) : null}\n </div>\n )}\n </div>\n )}\n <div className=\"image-updload-section\">\n {([\"add\", \"edit\"].includes(this.props.method) ||\n this.getState([\n \"variants\",\n variantIndex,\n \"clientItemId\",\n ])) && (\n <Input\n type=\"text\"\n name={`variant-client-item.id-${variantIndex}`}\n label={clientItemLabel}\n placeholder={`Enter ${clientItemLabel}`}\n readOnly={\n checkEditStatus(variantIndex) ||\n this.isInputEditable\n }\n className=\"client-item-id-field\"\n {...this.generateStateMappers({\n stateKeys: this.getState([\"variants\"])\n ? [\"variants\", variantIndex, \"clientItemId\"]\n : [\"clientItemId\"],\n loseEmphasisOnFill: true,\n })}\n />\n )}\n <MultiTextInput\n label={getMessage(\n \"product.form.variant.barcodes.heading\"\n )}\n placeholder={getMessage(\n \"product.form.variant.barcodes.heading\"\n )}\n name=\"barcodes\"\n className=\"barcodes-field\"\n {...this.generateStateMappers({\n stateKeys: [\"variants\", variantIndex, \"barcodes\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n readOnly={this.isInputEditable}\n />\n {isExtensionEnabled(\"MarketPlace\") && (\n <MetaDataFormFields\n metaDataWithType={this.marketPlaceVariantMetadata}\n className=\"metadata-section\"\n page=\"product-form\"\n readOnly={this.isInputEditable}\n stateKeys={\n this.getState([\"variants\"])\n ? [\"variants\", variantIndex, \"metaData\"]\n : [\"metaData\"]\n }\n _this={this}\n />\n )}\n {isExtensionEnabled(\"MarketPlace\") && (\n <Input\n type=\"text\"\n name={`variant-low-stock.id-${variantIndex}`}\n label={getMessage(\"product.form.lowStock\")}\n placeholder={getMessage(\n \"product.form.lowStock.placeholder\"\n )}\n readOnly={\n checkLowStockEditStatus(variantIndex) ||\n this.isInputEditable\n }\n className=\"low-stock-field\"\n {...this.generateStateMappers({\n stateKeys: this.getState([\"variants\"])\n ? [\"variants\", variantIndex, \"threshold\"]\n : [\"threshold\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n )}\n {this.state.variantToggle &&\n this.productMetaDataWithType?.variant ? (\n <div className=\"additional-variant\">\n <div className=\"heading\">\n {getMessage(\n \"product.form.additional.details.heading\"\n )}\n </div>\n <div className=\"content\">\n <MetaDataFormFields\n metaDataWithType={\n this.productMetaDataWithType?.variant\n }\n className={`metadata-section ${\n this.isInputEditable && \"not-editable\"\n }`}\n page=\"product-form\"\n stateKeys={[\"variants\", variantIndex, \"metaData\"]}\n _this={this}\n />\n </div>\n </div>\n ) : null}\n\n <ImageUpload\n className=\"variant-image\"\n label={getMessage(\"product.form.variant.image.heading\")}\n placeholder={getMessage(\n \"product.form.variant.image.placeholder\"\n )}\n name={`variant-${variantIndex}-image`}\n multiple\n isProductCreatePage\n {...this.generateStateMappers({\n stateKeys: [\"variants\", variantIndex, \"images\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n isUploading: getMessage(\"input.isUploading\"),\n }}\n ></ImageUpload>\n </div>\n <div className=\"store-related-details\">\n {\n // hasMultipleStores ? (\n // variant.storeSpecificData || []\n // ) : (\n // variant.storeSpecificData && variant.storeSpecificData.length\n // ? variant.storeSpecificData\n // : [{}]\n // )\n // (variant.storeSpecificData && Object.keys(variant.storeSpecificData)) || []\n ((stores && Object.keys(stores)) || []).map(\n (storeId, storeIndex) => (\n <div\n key={storeIndex}\n className=\"store-details-row form-row\"\n >\n {stores &&\n stores[storeId] &&\n stores[storeId].name ? (\n <div className=\"store-name-container\">\n <img src={shopIcon} alt=\"shop-icon\" />\n <span className=\"store-name\">\n {stores[storeId].name}\n </span>\n <span className=\"store-toggle\">\n <Toggle\n className={\"product-status\"}\n name={\n this.getState([\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"status\",\n ]) === \"ENABLED\"\n ? \"ENABLED\"\n : \"HIDDEN\"\n }\n icons={false}\n value={\n this.getState([\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"status\",\n ]) === \"ENABLED\" ||\n (!isExtensionEnabled(\n \"MultiStoreSupport\"\n ) &&\n !this.getState([\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"status\",\n ]))\n ? true\n : undefined\n }\n onChange={() => {\n let status =\n this.getState([\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"status\",\n ]) === \"ENABLED\" ||\n (!isExtensionEnabled(\n \"MultiStoreSupport\"\n ) &&\n !this.getState([\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"status\",\n ]));\n this.setState(\n { status: !status },\n () => {\n this.updateState(\n [\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"status\",\n ],\n this.state.status\n ? \"ENABLED\"\n : \"HIDDEN\"\n );\n }\n );\n }}\n readOnly={this.isInputEditable}\n />\n </span>\n </div>\n ) : null}\n {isExtensionEnabled(\"MarketPlace\") && (\n <>\n <div className=\"store-specific-details stock-related-details\">\n <div className=\"heading stock-helper\">\n {getMessage(\n \"product.dealer.price.header\"\n )}\n </div>\n <div className=\"details\">\n <Input\n label={getMessage(\n \"product.form.variant.price.header\"\n )}\n placeholder={getMessage(\n \"product.form.variant.sgst.placeholder\"\n )}\n name={`variant-${variantIndex}-store-${storeIndex}-availability`}\n type=\"number\"\n // required\n min={0}\n prefix={\n getSession().organization.currency\n .symbol\n }\n {...this.generateStateMappers({\n stateKeys: [\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"dealerPrice\",\n ],\n validationType:\n VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\n \"input.requiredMessage\"\n ),\n }}\n readOnly={this.isInputEditable}\n />\n </div>\n </div>\n <div className=\"store-specific-details stock-related-details\">\n <div className=\"heading stock-helper\">\n {getMessage(\"Suggested Retail Price\")}\n </div>\n <div className=\"details\">\n <Input\n label={getMessage(\n \"product.form.variant.price.header\"\n )}\n placeholder={getMessage(\n \"product.form.variant.sgst.placeholder\"\n )}\n name={`variant-${variantIndex}-store-${storeIndex}-availability`}\n type=\"number\"\n // required\n min={0}\n prefix={\n getSession().organization.currency\n .symbol\n }\n {...this.generateStateMappers({\n stateKeys: [\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"mrp\",\n ],\n validationType:\n VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\n \"input.requiredMessage\"\n ),\n }}\n readOnly={this.isInputEditable}\n />\n </div>\n </div>\n </>\n )}\n {!isExtensionEnabled(\"MarketPlace\") && (\n <div className=\"store-specific-details price-related-details\">\n <div className=\"heading\">\n {getMessage(\n \"product.form.variant.price.header\"\n )}\n </div>\n <div className=\"details\">\n <Input\n label={getMessage(\n \"product.form.variant.price.heading\"\n )}\n placeholder={getMessage(\n \"product.form.variant.price.placeholder\"\n )}\n name={`variant-${variantIndex}-store-${storeIndex}-price`}\n type=\"number\"\n step=\"0.01\"\n min={0}\n // required\n prefix={\n getSession().organization.currency\n .symbol\n }\n {...this.generateStateMappers({\n stateKeys: [\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"mrp\",\n ],\n validationType:\n VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\n \"input.requiredMessage\"\n ),\n }}\n />\n <Input\n label={getMessage(\n \"product.form.variant.discount.heading\"\n )}\n placeholder={getMessage(\n \"product.form.variant.price.placeholder\"\n )}\n name={`variant-${variantIndex}-store-${storeIndex}-discount`}\n type=\"number\"\n step=\"0.01\"\n min={0}\n max={this.getState([\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"mrp\",\n ])}\n prefix={\n getSession().organization.currency\n .symbol\n }\n {...this.generateStateMappers({\n stateKeys: [\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"discount\",\n ],\n validationType:\n VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\n \"input.requiredMessage\"\n ),\n rangeOverflow: getMessage(\n \"product.form.discount.error\"\n ),\n }}\n />\n </div>\n </div>\n )}\n {this.isSellerSection() && storeIndex === 0 && (\n <div className=\"store-specific-details price-related-details\">\n <div className=\"heading\">\n {getMessage(\n \"product.form.seller.price.heading\"\n )}\n </div>\n <div className=\"details selling-price\">\n <Input\n label={getMessage(\n \"product.form.variant.price.heading\"\n )}\n placeholder={getMessage(\n \"product.form.variant.price.placeholder\"\n )}\n name={`variant-${variantIndex}-store-${storeIndex}-price`}\n type=\"number\"\n step=\"0.01\"\n min={0}\n required={this.isSellerSection()}\n prefix={\n getSession().organization.currency\n .symbol\n }\n {...this.generateStateMappers({\n stateKeys: [\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"sellingPrice\",\n ],\n validationType:\n VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\n \"input.requiredMessage\"\n ),\n }}\n value={\n this.state.values.variants?.[\n variantIndex\n ]?.storeSpecificData?.[storeId]\n ?.sellingPrice\n }\n onChange={(e) =>\n this.handleSellingPrice(\n e,\n variantIndex,\n storeId,\n \"sellingPrice\"\n )\n }\n />\n <Input\n label={getMessage(\n \"product.form.variant.discount.heading\"\n )}\n placeholder={getMessage(\n \"product.form.variant.price.placeholder\"\n )}\n name={`variant-${variantIndex}-store-${storeIndex}-discount`}\n type=\"number\"\n step=\"0.01\"\n min={0}\n max={this.getState([\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"mrp\",\n ])}\n prefix={\n getSession().organization.currency\n .symbol\n }\n {...this.generateStateMappers({\n stateKeys: [\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"sellerDiscount\",\n ],\n loseEmphasisOnFill: true,\n })}\n value={\n this.state.values.variants?.[\n variantIndex\n ]?.storeSpecificData?.[storeId]\n ?.sellerDiscount\n }\n onChange={(e) =>\n this.handleSellingPrice(\n e,\n variantIndex,\n storeId,\n \"sellerDiscount\"\n )\n }\n />\n </div>\n <div className=\"selling-price-profit-seller-margin-wrp\">\n <div className=\"selling-price-profit-margin\">\n {getMessage(\"product.form.sellingMargin\")}\n {\n getSession().organization.currency\n .symbol\n }\n {this.state.sellingMargin}\n </div>\n <div className=\"selling-price-profit-margin\">\n {getMessage(\"product.form.profitMargin\")}\n {this.state.profitMargin}%\n </div>\n <div className=\"selling-price-profit-margin minimum-profit-margin\">\n {this.state.isMinimumProfitMargin && (\n <>\n {getMessage(\n \"product.form.minimumProfitMargin.error\",\n {\n value:\n this.state.values.variants?.[0]\n ?.metaData[\n \"Minimum Profit Margin\"\n ],\n }\n )}\n </>\n )}\n </div>\n </div>\n </div>\n )}\n {getSession().organization.currency.name ===\n \"INR\" && (\n <div className=\"store-specific-details tax-related-details\">\n <div className=\"heading\">\n {getMessage(\n \"product.form.variant.tax.header\"\n )}\n </div>\n <div className=\"details\">\n {this.state?.taxes?.map((tax) => {\n return (\n <Input\n label={tax}\n placeholder={getMessage(\n \"product.form.variant.sgst.placeholder\"\n )}\n name={`variant-${variantIndex}-store-${storeIndex}-${tax}`}\n key={tax}\n type=\"number\"\n step=\"0.01\"\n min={0}\n max={100}\n className=\"tax-field\"\n suffix=\"%\"\n {...this.generateStateMappers({\n stateKeys: [\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"tax\",\n tax.toLowerCase(),\n ],\n loseEmphasisOnFill: true,\n validationType:\n VALIDATION_TYPES.ONSUBMIT,\n })}\n readOnly={this.isInputEditable}\n />\n );\n })}\n </div>\n </div>\n )}\n {getSession().organization.currency.name !==\n \"INR\" &&\n this.state.taxArray &&\n this.state.taxArray.length > 0 && (\n <div className=\"store-specific-details tax-related-details\">\n <div className=\"heading\">\n {getMessage(\n \"product.form.variant.tax.header\"\n )}\n </div>\n <div className=\"details\">\n {this.state.taxArray.map((tax, i) => {\n return (\n <Input\n label={tax.toUpperCase()}\n placeholder={getMessage(\n \"product.form.variant.sgst.placeholder\"\n )}\n name={`variant-${variantIndex}-store-${storeIndex}-${tax}`}\n key={`variant-${variantIndex}-store-${storeIndex}-${tax}`}\n type=\"number\"\n step=\"0.01\"\n min={0}\n max={100}\n className=\"tax-field\"\n suffix=\"%\"\n {...this.generateStateMappers({\n stateKeys: [\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"tax\",\n tax,\n ],\n loseEmphasisOnFill: true,\n })}\n readOnly={this.isInputEditable}\n />\n );\n })}\n </div>\n </div>\n )}\n {getSession().organization.currency.name !==\n \"INR\" &&\n this.state.taxes &&\n this.state.taxes.length > 0 && (\n <div className=\"store-specific-details tax-related-details\">\n <div className=\"heading\">\n {getMessage(\n \"product.form.variant.tax.header\"\n )}\n </div>\n <div className=\"details\">\n {this.state.taxes.map((tax, i) => {\n return (\n <Input\n label={tax.toUpperCase()}\n placeholder={getMessage(\n \"product.form.variant.sgst.placeholder\"\n )}\n name={`variant-${variantIndex}-store-${storeIndex}-${tax}`}\n key={`variant-${variantIndex}-store-${storeIndex}-${tax}`}\n type=\"number\"\n step=\"0.01\"\n min={0}\n max={100}\n className=\"tax-field\"\n suffix=\"%\"\n {...this.generateStateMappers({\n stateKeys: [\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"tax\",\n tax,\n ],\n loseEmphasisOnFill: true,\n })}\n readOnly={this.isInputEditable}\n />\n );\n })}\n </div>\n </div>\n )}\n {hasInstoreProcessing && (\n <div className=\"store-specific-details product-location-details\">\n <div className=\"heading\">\n {getMessage(\n \"product.form.variant.location.header\"\n )}\n </div>\n <div className=\"details\">\n <Input\n label={getMessage(\n \"product.form.variant.aisle.heading\"\n )}\n placeholder={getMessage(\n \"product.form.variant.aisle.heading\"\n )}\n name={`variant-${variantIndex}-store-${storeIndex}-aisle`}\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"location\",\n \"aisle\",\n ],\n validationType:\n VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n readOnly={this.isInputEditable}\n />\n <Input\n label={getMessage(\n \"product.form.variant.rack.heading\"\n )}\n placeholder={getMessage(\n \"product.form.variant.rack.heading\"\n )}\n name={`variant-${variantIndex}-store-${storeIndex}-rack`}\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"location\",\n \"rack\",\n ],\n validationType:\n VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n readOnly={this.isInputEditable}\n />\n <Input\n label=\"position\"\n placeholder={getMessage(\n \"position.text.label\"\n )}\n name={`variant-${variantIndex}-store-${storeIndex}-position`}\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"location\",\n \"position\",\n ],\n validationType:\n VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n </div>\n </div>\n )}\n <div className=\"store-specific-details stock-related-details\">\n <div className=\"heading stock-helper\">\n {getMessage(\n \"product.form.variant.stock.header\"\n )}\n </div>\n <div className=\"details\">\n {booleanStock ? (\n <Checkbox\n label={getMessage(\n \"product.form.variant.availability.heading\"\n )}\n inlineLabel={getMessage(\n \"product.form.variant.availability.label\"\n )}\n name={`variant-${variantIndex}-store-${storeIndex}-availability`}\n {...this.generateStateMappers({\n stateKeys: [\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"stock\",\n ],\n validationType:\n VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n controlled\n readOnly={this.isInputEditable}\n />\n ) : (\n <React.Fragment>\n <Input\n label={getMessage(\n \"product.form.variant.stock.quantity.heading\"\n )}\n placeholder={getMessage(\n \"product.form.variant.sgst.placeholder\"\n )}\n name={`variant-${variantIndex}-store-${storeIndex}-availability`}\n type=\"number\"\n // required\n min={0}\n {...this.generateStateMappers({\n stateKeys: [\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"stock\",\n ],\n validationType:\n VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\n \"input.requiredMessage\"\n ),\n }}\n readOnly={\n this.isInputEditable ||\n this.getState([\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"unlimitedStock\",\n ])\n }\n />\n <Checkbox\n label={getMessage(\n \"product.form.variant.unlimitedAvailable.label\"\n )}\n className=\"unlimited-stock\"\n name={`variant-${variantIndex}-store-${storeIndex}-unlimitedAvailable`}\n {...this.generateStateMappers({\n stateKeys: [\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"unlimitedStock\",\n ],\n validationType:\n VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n onChange={(event) => {\n this.updateState(\n [\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"unlimitedStock\",\n ],\n event\n );\n this.updateState(\n [\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"stock\",\n ],\n 0\n );\n }}\n controlled\n value={\n this.getState([\n \"variants\",\n variantIndex,\n \"storeSpecificData\",\n storeId,\n \"unlimitedStock\",\n ]) || false\n }\n disabled={this.isInputEditable}\n />\n </React.Fragment>\n )}\n </div>\n </div>\n </div>\n )\n )\n }\n {this.state.loadingStores ? <Loader size=\"sm\" /> : null}\n {this.state.failedLoadingStores ? (\n <div\n className=\"stores-error-text\"\n onClick={this.getStores}\n >\n {getMessage(\"product.form.stores.fetchError\")}\n </div>\n ) : null}\n </div>\n </div>\n )\n )}\n </div>\n </div>\n <div className=\"form-actions\">\n {this.state.values.id && !this.isSellerSection() ? (\n <button\n className=\"product-delete-button\"\n onClick={this.showProductDeleteConfirmation}\n >\n <img src={deleteIcon} alt=\"x\" className=\"product-delete-icon\" />\n <span className=\"product-delete-button-text\">\n {getMessage(\"product.form.deleteText\")}\n </span>\n </button>\n ) : null}\n <div className=\"form-buttons\">\n {(!isExtensionEnabled(\"MarketPlace\") ||\n (this.isMarketPlaceOwner && !this.isSellerSection()) ||\n this.isOwnerCreatingRequest) && (\n <SubmitButton disabled={this.state.submitting}>\n {getMessage(\"product.form.submitText\")}\n </SubmitButton>\n )}\n {isMarketPlaceSeller() && (\n <>\n <SubmitButton disabled={this.state.submitting}>\n {getMessage(\"product.form.review.submission\")}\n </SubmitButton>\n <div className=\"draft-btn-wrp\">\n <SubmitButton disabled={this.state.submitting}>\n {getMessage(\"product.form.save.draft\")}\n </SubmitButton>\n </div>\n </>\n )}\n\n {isMarketPlaceOwner() && this.isSellerSection() && (\n <>\n {showApproveBtn && (\n <SubmitButton disabled={this.state.submitting}>\n {getMessage(\"Approve\")}\n </SubmitButton>\n )}\n {showRejectBtn && (\n <div className=\"reject-btn-wrp\">\n <SubmitButton disabled={this.state.submitting}>\n {getMessage(\"Reject\")}\n </SubmitButton>\n </div>\n )}\n </>\n )}\n\n <CancelButton>\n {getMessage(\"product.form.cancelText\")}\n </CancelButton>\n </div>\n </div>\n </Form>\n </div>\n );\n }\n}\n\nexport const STOCK_STRATEGIES = {\n BOOLEAN: \"boolean\",\n NUMERIC: \"numeric\",\n};\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Radio,\n Searchable,\n BrandSearch,\n CategorySearch,\n} from \"../../../../components/Form\";\n// import ProductsMetaDataSearch from './ProductsMetaDataSearch'\n\nimport { getMessage } from \"../../../../lib/translator\";\n\nimport \"./style.css\";\n\nexport default class ProductFiltersForm extends BaseForm {\n render() {\n const { SubmitButton, ClearButton } = this.buttons;\n const { Form } = this.components;\n const isSeller = this.props?.options?.seller || false;\n return (\n <Form className=\"product-filter-form\">\n <div className=\"form-fields\">\n {isSeller && (\n <Searchable\n label={getMessage(\"product.filters.sellerName.heading\")}\n placeholder={getMessage(\n \"product.filters.permissableSeller.placeholder\"\n )}\n name=\"seller\"\n searchUrl=\"/account-service/seller\"\n valueKey=\"id\"\n responseKey=\"seller\"\n nameKey=\"name\"\n searchKey=\"name\"\n transformResponse={(response) => response.data.seller}\n {...this.generateStateMappers({\n stateKeys: [\"seller\"],\n })}\n />\n )}\n\n <Input\n label={getMessage(\"product.filters.name.heading\")}\n placeholder={getMessage(\"product.filters.name.placeholder\")}\n name=\"name\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [!isSeller ? \"name\" : \"productName\"],\n })}\n />\n <CategorySearch\n label={getMessage(\"product.filters.category.heading\")}\n placeholder={getMessage(\"product.filters.category.placeholder\")}\n name=\"category\"\n {...this.generateStateMappers({\n stateKeys: [\"category\"],\n })}\n />\n {this.props.options && this.props.options.brands ? (\n <BrandSearch\n label={getMessage(\"product.filters.brand.heading\")}\n placeholder={getMessage(\"product.filters.brand.placeholder\")}\n name=\"brand\"\n {...this.generateStateMappers({\n stateKeys: [\"brand\"],\n })}\n />\n ) : null}\n {this.props.options && this.props.options.tags ? (\n <Searchable\n label={getMessage(\"product.filters.tag.heading\")}\n placeholder={getMessage(\"product.filters.tag.placeholder\")}\n name=\"brand\"\n searchUrl=\"/catalogue-service/tag\"\n valueKey=\"id\"\n nameKey=\"name\"\n searchKey=\"name\"\n transformResponse={(response) => response.data.tag}\n {...this.generateStateMappers({\n stateKeys: [\"tag\"],\n })}\n />\n ) : null}\n <Input\n label={getMessage(\"barcode\")}\n placeholder={getMessage(\"Enter Barcode\")}\n name=\"barcode\"\n {...this.generateStateMappers({\n stateKeys: [\"barcode\"],\n })}\n />\n <Input\n label={getMessage(\"product.filters.clientId.heading\")}\n placeholder={getMessage(\"product.filters.clientId.placeholder\")}\n name=\"clientId\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"clientId\"],\n })}\n />\n <Radio\n className=\"product-status\"\n label={getMessage(\"product.filters.status.heading\")}\n name=\"status\"\n options={[\n {\n text: getMessage(\"product.filters.status.label.all\"),\n value: \"\",\n },\n {\n text: getMessage(\"product.filters.status.label.enabled\"),\n value: \"ENABLED\",\n },\n {\n text: getMessage(\"product.filters.status.label.disabled\"),\n value: \"HIDDEN\",\n },\n ]}\n {...this.generateStateMappers({\n stateKeys: [\"status\"],\n defaultValue: \"\",\n })}\n />\n {/* {this.props.options && this.props.options.entityMetaData ? (<ProductsMetaDataSearch _this={this} />) : null } */}\n </div>\n <SubmitButton>{getMessage(\"product.filters.submitText\")}</SubmitButton>\n <ClearButton>\n {getMessage(\"product.filters.clearFiltersText\")}\n </ClearButton>\n </Form>\n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport ListingPageWithRoutes from \"../../../containers/ListingPage/listingRouter\";\nimport ProductUpload from \"./ProductUpload\";\nimport SearchAndAdd from \"./SearchAndAdd\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport Image from \"../../../components/Image\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport ProductForm, { STOCK_STRATEGIES } from \"./Form\";\nimport ProductFilters from \"./Filters\";\nimport { Popup, Dialog } from \"../../../components/Popup\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { isExtensionEnabled, getSession } from \"../../../lib/auth\";\nimport API from \"../../../lib/api\";\nimport { get, unset } from \"../../../lib/storage\";\nimport find from \"lodash.find\";\nimport Toggle from \"../../../components/Form/Inputs/Toggle\";\nimport {\n Radio,\n BaseForm,\n Textarea,\n Searchable,\n MultiSelect,\n Checkbox,\n} from \"../../../components/Form\";\nimport Tabs from \"../../../components/Tabs\";\nimport {\n isMarketPlaceOwner,\n isMarketPlaceSeller,\n} from \"../../../lib/marketPlace\";\nimport downloadIcon from \"./download.svg\";\nimport emptyIcon from \"./products-empty.svg\";\n\nimport \"./style.css\";\nimport { GO_HOST } from \"../../../config/app\";\nconst emptyState = {\n icon: emptyIcon,\n message: getMessage(\"product.helpItems.message\"),\n submessage: getMessage(\"product.helpItems.submessage\"),\n additionalViews: [ProductUpload],\n};\nconst showConfig = () => {\n if (GO_HOST.includes(\"tamimimarkets.com\")) return false;\n return true;\n};\n\nconst API_HEADER = {\n // \"Developer-token\": DEVELOPER_TOKEN,\n \"Accept-Language\": \"en\",\n restrictAutherizationToken: true,\n};\n// const MASTER_CATELOGUE_STORE_ID = 1;\nexport const getProductRequestStatus = () => {\n const requestStatusTabs = [\"APPROVED\", \"PENDING\", \"REJECTED\"];\n if (isMarketPlaceSeller()) {\n requestStatusTabs.push(\"DRAFT\");\n }\n\n return requestStatusTabs;\n};\n\nexport const isSellerSection = () => {\n const location = window.location.pathname.split(\"/\");\n if (isExtensionEnabled(\"MarketPlace\")) {\n if (isMarketPlaceSeller() || location.includes(\"seller-catalogue\")) {\n return true;\n }\n }\n return false;\n};\n\nclass HeaderActions extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n openModal: false,\n showDownloadOptions: false,\n showDownloadComplete: false,\n showSellerSelectionForm: false,\n allSelected: false,\n storeOptions: [...JSON.parse(get(\"stores\"))].map((store) => {\n return { text: store.name, value: store.id };\n }),\n };\n this.showModal = this.showModal.bind(this);\n this.hideModal = this.hideModal.bind(this);\n this.showDownloadModal = this.showDownloadModal.bind(this);\n this.hideDownloadModal = this.hideDownloadModal.bind(this);\n this.csvDownload = this.csvDownload.bind(this);\n this.toggleShowSellerSelectionForm =\n this.toggleShowSellerSelectionForm.bind(this);\n this.isMarketPlaceOwner = isMarketPlaceOwner();\n this.isMarketPlaceSeller = isMarketPlaceSeller();\n this.isSellerSection = isSellerSection();\n this.handleSelectAll = this.handleSelectAll.bind(this);\n }\n\n handleSelectAll(value) {\n let currentState = JSON.parse(JSON.stringify(this.state));\n let { values } = currentState;\n\n if (value) {\n values.storeId = this.state?.storeOptions?.map((store) => store?.value);\n this.state.storeOptions && this.setState({ values, allSelected: true });\n } else {\n values.storeId = [];\n this.setState({ values, allSelected: false });\n }\n }\n\n toggleShowSellerSelectionForm() {\n this.setState((prev) => ({\n showSellerSelectionForm: !prev.showSellerSelectionForm,\n }));\n }\n\n handleSelectedSeller = (data) => {\n this.setState({\n selectedSellerData: data,\n });\n };\n\n showModal() {\n this.setState({\n openModal: true,\n values: {\n bulkUploadType: \"catalogue\",\n },\n });\n }\n\n hideModal() {\n this.setState({\n openModal: false,\n });\n }\n\n showDownloadModal(e) {\n e && e.preventDefault();\n this.setState({\n showDownloadOptions: true,\n values: {\n downloadType: \"catalogue\",\n },\n });\n }\n\n hideDownloadModal(message) {\n if (typeof message === \"string\") {\n this.setState({\n showDownloadOptions: false,\n showDownloadComplete: true,\n });\n } else {\n this.setState({\n showDownloadOptions: false,\n });\n }\n }\n\n csvDownload(e) {\n e.preventDefault();\n if (this.state.values && this.state.values.downloadType === \"catalogue\") {\n const api = new API({\n url: \"/catalogue-service/product-upload?type=file\",\n });\n api\n .get()\n .then((response) => {\n this.hideDownloadModal(response.data);\n })\n .catch((error) => {\n console.error(error);\n });\n } else if (\n this.state.values &&\n this.state.values.downloadType === \"inventory\" &&\n this.state.values.storeId\n ) {\n const { storeId } = this.state.values;\n const { email } = { ...JSON.parse(get(\"user\")) }.emails[0];\n const api = new API({ url: \"/inventory-service/inventory-file\" });\n api\n .get({ storeId, email })\n .then((response) => {\n this.hideDownloadModal(response.data);\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n\n getAddProductOptions = () => {\n const dropDown = [\n <DropDownItem key=\"1\">\n <Link\n to={\n isMarketPlaceOwner()\n ? `/catalogue/master-catalogue/add`\n : `/catalogue/products/add`\n }\n >\n {getMessage(\"product.add.single.text\")}\n </Link>\n </DropDownItem>,\n <DropDownItem onClick={this.showModal} key=\"2\">\n {getMessage(\"product.add.bulk.text\")}\n </DropDownItem>,\n ];\n\n if (\n isExtensionEnabled(\"MarketPlace\") &&\n (this.isMarketPlaceSeller || this.isSellerSection)\n ) {\n dropDown.splice(\n 0,\n 2,\n <DropDownItem key=\"3\">\n {this.isMarketPlaceOwner ? (\n <div onClick={this.toggleShowSellerSelectionForm}>\n {getMessage(\"product.search.and.add.text\")}\n </div>\n ) : (\n <Link to=\"/catalogue/products/search-and-add\">\n {getMessage(\"product.search.and.add.text\")}\n </Link>\n )}\n </DropDownItem>\n );\n }\n return dropDown;\n };\n\n render() {\n const { storeOptions } = this.state;\n const bulkUploadType =\n this.state.values && this.state.values[\"bulkUploadType\"];\n const downloadType = this.state.values && this.state.values.downloadType;\n const location = window.location.pathname.split(\"/\");\n const isSellerCatalogue = location.includes(\"seller-catalogue\");\n\n return (\n <div className=\"flex\">\n {this.state.showSellerSelectionForm && (\n <Popup\n heading={getMessage(\"Select Seller\")}\n show={this.state.showSellerSelectionForm}\n close={this.toggleShowSellerSelectionForm}\n className=\"seller-selection-form\"\n >\n <div>\n <Searchable\n label={getMessage(\"product.seller.selection.heading\")}\n placeholder={getMessage(\n \"product.filters.permissableSeller.placeholder\"\n )}\n name=\"seller\"\n searchUrl=\"/account-service/seller\"\n valueKey=\"id\"\n responseKey=\"seller\"\n nameKey=\"name\"\n searchKey=\"name\"\n transformResponse={(response) => response.data.seller}\n onChange={(val) => this.handleSelectedSeller(val)}\n value={this.state.selectedSellerData}\n />\n\n <Link\n to={`/catalogue/products/search-and-add${\n this.state.selectedSellerData &&\n \"?sellerId=\" + this.state.selectedSellerData.id\n }`}\n className={`button image-selection-button select-seller-button ${\n !this.state.selectedSellerData &&\n \"select-seller-button-disabled\"\n }`}\n >\n {getMessage(\"Continue\")}\n </Link>\n <button\n className=\"button\"\n onClick={() => this.toggleShowSellerSelectionForm()}\n >\n {getMessage(\"category.form.cancelText\")}\n </button>\n </div>\n </Popup>\n )}\n {this.state.openModal && (\n <Popup\n heading={getMessage(\"product.add.bulk.text\")}\n show={this.state.openModal}\n close={this.hideModal}\n className=\"bulk-upload\"\n >\n <Radio\n className=\"product-type\"\n label={getMessage(\"product.selectType\")}\n name=\"bulkUploadType\"\n options={[\n {\n text: getMessage(\"product.type.catalogue\"),\n value: \"catalogue\",\n },\n {\n text: getMessage(\"product.type.inventory\"),\n value: \"inventory\",\n },\n ]}\n {...this.generateStateMappers({\n stateKeys: [\"bulkUploadType\"],\n })}\n />\n {this.state.values &&\n this.state.values[\"bulkUploadType\"] === \"inventory\" && (\n <React.Fragment>\n <div className=\"horizontal-line\">\n <hr />\n </div>\n <MultiSelect\n className=\"product-type stores\"\n label={getMessage(\"product.selectStore\")}\n placeholder={\"product.selectStore\"}\n name=\"storeId\"\n options={storeOptions}\n {...this.generateStateMappers({\n stateKeys: [\"storeId\"],\n })}\n readOnly={this.state.allSelected}\n secondaryLabel={() => (\n <Checkbox\n inlineLabel={getMessage(\"select all\")}\n name=\"selectAllStores\"\n value={this.state.allSelected}\n onChange={(value) => this.handleSelectAll(value)}\n className=\"checkLabel\"\n />\n )}\n />\n </React.Fragment>\n )}\n <ProductUpload\n hideAddButton\n disableUpload={!bulkUploadType}\n bulkUploadType={bulkUploadType}\n storeIds={this.state?.values?.storeId || null}\n />\n </Popup>\n )}\n {this.state.showDownloadOptions && (\n <Popup\n heading={getMessage(\"product.downloadOptionsTitle\")}\n show={this.state.showDownloadOptions}\n close={this.hideDownloadModal}\n className=\"download-options\"\n >\n <Radio\n className=\"product-type\"\n label={getMessage(\"product.selectType\")}\n name=\"downloadType\"\n options={[\n {\n text: getMessage(\"product.type.catalogue\"),\n value: \"catalogue\",\n },\n {\n text: getMessage(\"product.type.inventory\"),\n value: \"inventory\",\n },\n ]}\n {...this.generateStateMappers({\n stateKeys: [\"downloadType\"],\n })}\n />\n {this.state.values &&\n this.state.values[\"downloadType\"] === \"inventory\" && (\n <React.Fragment>\n <div className=\"horizontal-line\">\n <hr />\n </div>\n <Radio\n className=\"product-type stores\"\n label={getMessage(\"product.selectStore\")}\n name=\"storeId\"\n options={storeOptions}\n {...this.generateStateMappers({\n stateKeys: [\"storeId\"],\n })}\n />\n </React.Fragment>\n )}\n <div>\n <button\n type=\"button\"\n className=\"button\"\n onClick={this.hideDownloadModal}\n >\n {getMessage(\"product.cancelDownloadCsv\")}\n </button>\n <input\n type=\"submit\"\n className=\"primary\"\n value={getMessage(\"product.downloadOptionsTitle\")}\n onClick={this.csvDownload}\n disabled={\n !(\n this.state.values.downloadType === \"catalogue\" ||\n (this.state.values.downloadType === \"inventory\" &&\n this.state.values.storeId)\n )\n }\n />\n </div>\n </Popup>\n )}\n <Dialog\n className=\"success\"\n show={this.state.showDownloadComplete}\n title={getMessage(\"product.downloadSuccessTitle\", {\n value:\n downloadType &&\n downloadType\n .charAt(0)\n .toUpperCase()\n .concat(downloadType.slice(1)),\n })}\n information={getMessage(\"product.downloadSuccessMessage\", {\n value: downloadType,\n })}\n closeText={getMessage(\"product.downloadDialogClose\")}\n close={() =>\n this.setState({\n showDownloadComplete: false,\n })\n }\n />\n {!isSellerSection() && (\n <button className=\"download-button\" onClick={this.showDownloadModal}>\n <img src={downloadIcon} alt={getMessage(\"product.add.text\")} />\n </button>\n )}\n {(!isSellerCatalogue || isMarketPlaceOwner) && (\n <DropDown\n className=\"bulk-upload-dropdown\"\n icon={\n <button className=\"button primary add-product-dropdown-button\">\n + <span className=\"text\">{getMessage(\"product.add.text\")}</span>\n </button>\n }\n >\n {this.getAddProductOptions().map((item) => item)}\n </DropDown>\n )}\n </div>\n );\n }\n}\n\nconst getEditPath = (pId, id) => {\n if (isMarketPlaceOwner() && !isSellerSection()) {\n return `/catalogue/master-catalogue/edit/${pId}`;\n } else if (isSellerSection() && !isMarketPlaceSeller()) {\n return `/catalogue/seller-catalogue/edit/${pId}?requestId=${id}`;\n } else if (isSellerSection() && isMarketPlaceSeller()) {\n return `/catalogue/products/edit/${pId}?requestId=${id}`;\n } else {\n return `/catalogue/products/edit/${pId}`;\n }\n};\n\nconst tableProperties = (_this) => {\n const { handleRequestApproval } = _this;\n const textAlignment = get(\"dataLang\") === \"ar\" ? \"right\" : \"\";\n const sellerColumn = {\n name: getMessage(\"product.header.sellername\"),\n dir: textAlignment,\n };\n const statusColumn = {\n name: getMessage(\"product.header.status\"),\n dir: textAlignment,\n };\n const merchandiseColumn = {\n name: getMessage(\"product.merchandise.id\"),\n dir: textAlignment,\n };\n const headers = [\n getMessage(\"product.header.image\"),\n {\n name: getMessage(\"product.header.name\"),\n dir: textAlignment,\n },\n {\n name: getMessage(\"product.header.primaryCategory\"),\n dir: textAlignment,\n },\n getMessage(\"product.header.actions\"),\n ];\n\n if (isSellerSection() && isMarketPlaceOwner()) {\n headers.splice(4, 0, sellerColumn);\n }\n if (!(isSellerSection() || isMarketPlaceSeller())) {\n headers.splice(4, 0, statusColumn);\n }\n if (!showConfig()) {\n headers.splice(2, 0, merchandiseColumn);\n }\n\n return {\n headers,\n row: ({\n id,\n productId,\n images,\n brand,\n name,\n slug,\n primaryCategory,\n status,\n variants,\n onAction,\n product,\n sellerName,\n sellerID,\n metaData,\n }) => {\n let image = images && images.length && images[0];\n const { merchandise = \"\" } = metaData || {};\n if (!image && variants && variants.length) {\n let varImage = variants.filter((variant) => variant.images)[0];\n if (varImage && varImage.images) {\n image = varImage.images[0];\n }\n }\n const showApproveBtn =\n isMarketPlaceOwner() &&\n isSellerSection() &&\n [\"PENDING\", \"REJECTED\"].includes(status);\n\n const showRejectBtn =\n isMarketPlaceOwner() && isSellerSection() && status === \"PENDING\";\n const pId = product ? productId : id;\n const sessionData = getSession();\n const organization = sessionData.organization;\n let siteUrl = organization?.domain;\n\n if (siteUrl) {\n let isHttpsEnabled = JSON.parse(get(\"organization\")).httpsEnabled;\n let protocol = isHttpsEnabled ? \"https://\" : \"http://\";\n const isPrefixInSiteUrl = siteUrl?.includes(\"http\");\n siteUrl = isPrefixInSiteUrl ? siteUrl : `${protocol}${siteUrl}`;\n }\n let productStoreLink = isSellerSection()\n ? `${siteUrl}/product/${product?.slug}/${sellerID}`\n : `${siteUrl}/product/${slug}`;\n return (\n <Row>\n <Cell>\n <Image src={image} size=\"sm\" bordered />\n </Cell>\n <Cell align={textAlignment}>\n <Link to={getEditPath(pId, id)} className=\"product-name\">\n <div>\n {brand ? (\n <span className=\"brand-name\">{brand.name} </span>\n ) : null}\n {name ?? product?.name}\n </div>\n </Link>\n </Cell>\n {!showConfig() && (\n <Cell className=\"primary-category\" align={textAlignment}>\n <small>{merchandise}</small>\n </Cell>\n )}\n <Cell className=\"primary-category\" align={textAlignment}>\n <small className=\"text-muted not-mobile\">\n {(primaryCategory ? primaryCategory.name : null) ||\n product?.primaryCategory}\n </small>\n <span className=\"text-muted only-mobile\">\n {`${getMessage(\"product.header.primaryCategory\")}: `}\n <small className=\"product-text-muted\">\n {(primaryCategory ? primaryCategory.name : null) ||\n product?.primaryCategory}\n </small>\n </span>\n </Cell>\n {isSellerSection() && isMarketPlaceOwner() && (\n <Cell className=\"seller-name\">\n <small className={`${sellerName} not-mobile`}>{sellerName}</small>\n <small className={`${sellerName} only-mobile`}>\n {sellerName}\n </small>\n </Cell>\n )}\n {!(isSellerSection() || isMarketPlaceSeller()) && (\n <Cell className=\"product-status\" align={textAlignment}>\n <small className=\"text-muted product-status not-mobile\">\n {status ? status.toLowerCase() : null}\n </small>\n <Toggle\n className={`${status} only-mobile`}\n name={status}\n value={status === \"ENABLED\"}\n icons={false}\n onChange={() => {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n { status: status === \"ENABLED\" ? \"HIDDEN\" : \"ENABLED\" }\n );\n }}\n />\n </Cell>\n )}\n <Cell className=\"product-actions\">\n <DropDown icon={<img src={ICONS.VELLIP} alt=\"â‹®\" />}>\n <DropDownItem>\n <Link to={getEditPath(pId, id)}>\n {getMessage(\"product.action.edit\")}\n </Link>\n </DropDownItem>\n {!isSellerSection() && (\n <DropDownItem\n onClick={() => {\n onAction(TABLE_ACTIONS.DELETE, { id });\n }}\n >\n {getMessage(\"product.action.delete\")}\n </DropDownItem>\n )}\n {!isSellerSection() &&\n (!(status === \"ENABLED\") ? (\n <DropDownItem\n onClick={() => {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n { status: \"ENABLED\" }\n );\n }}\n >\n {getMessage(\"product.action.enable\")}\n </DropDownItem>\n ) : (\n <DropDownItem\n onClick={() => {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n { status: \"HIDDEN\" }\n );\n }}\n >\n {getMessage(\"product.action.disable\")}\n </DropDownItem>\n ))}\n\n <DropDownItem>\n <a\n href={productStoreLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {getMessage(\"View in website\")}\n </a>\n </DropDownItem>\n\n {showApproveBtn && (\n <DropDownItem\n onClick={() => {\n handleRequestApproval(\n id,\n { status: \"APPROVED\", productId },\n () => onAction(TABLE_ACTIONS.REFRESH)\n );\n }}\n >\n {getMessage(\"Approve\")}\n </DropDownItem>\n )}\n {showRejectBtn && (\n <DropDownItem\n onClick={() => {\n handleRequestApproval(\n id,\n { status: \"REJECTED\", productId },\n () => {\n onAction(TABLE_ACTIONS.REFRESH);\n _this.setState({\n showRejectReasonForm: false,\n });\n }\n );\n }}\n >\n {getMessage(\"Reject\")}\n </DropDownItem>\n )}\n </DropDown>\n </Cell>\n </Row>\n );\n },\n };\n};\nexport default class Products extends Component {\n constructor(props) {\n super(props);\n this.state = {\n requestTab: window.localStorage?.getItem(`productPage-tabIndex`) || 0,\n queryParams: null,\n };\n this.productRequestTabStatus = getProductRequestStatus();\n }\n\n fetchTableDataOnStatus = (tab) => {\n let queryParams = null;\n if (this.isSellerSection()) queryParams = { status: tab };\n return queryParams;\n };\n\n changeTab = (tab) => {\n window.localStorage.setItem(`productPage-tabIndex`, tab);\n unset(\"products-page\");\n this.props.history.push({ search: \"\" });\n this.setState({\n requestTab: tab,\n });\n };\n\n getAPIUrl = () => {\n if (isExtensionEnabled(\"MarketPlace\")) {\n const location = window.location.pathname.split(\"/\");\n if (\n this.isSellerSection() &&\n !location.includes(\"add-product\") &&\n !location.includes(\"edit\")\n ) {\n return \"/catalogue-service/seller-product-request\";\n }\n }\n return \"/catalogue-service/product\";\n };\n\n isSellerSection = () => {\n const location = window.location.pathname.split(\"/\");\n if (isExtensionEnabled(\"MarketPlace\")) {\n if (isMarketPlaceSeller() || location.includes(\"seller-catalogue\")) {\n return true;\n }\n }\n return false;\n };\n\n handleRequestApproval = (reqId, params, cb) => {\n const putApi = new API({\n url: `/catalogue-service/seller-product-request/${reqId}/approval`,\n });\n\n this.submitApprovalStatus = (newParams) => {\n putApi\n .put({ ...params, ...newParams })\n .then((response) => {\n cb();\n })\n .catch((error) => {\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n this.setState({\n apiError: error.message,\n showErrorDialog: true,\n });\n console.error(error);\n })\n .finally(() => {\n this.setState({ providersLoading: false });\n });\n };\n\n if (params.status === \"REJECTED\" && !this.state.rejectionReason) {\n this.setState({\n showRejectReasonForm: true,\n });\n return;\n }\n\n this.submitApprovalStatus();\n };\n\n render() {\n let props = this.props;\n const variantsEnabled = isExtensionEnabled(\"MultiVariantSupport\");\n const brandsEnabled = isExtensionEnabled(\"MultiBrandSupport\");\n const storesEnabled = isExtensionEnabled(\"MultiStoreSupport\");\n const stockStrategy = isExtensionEnabled(\"StockManagement\")\n ? STOCK_STRATEGIES.NUMERIC\n : STOCK_STRATEGIES.BOOLEAN;\n const tagsEnabled = isExtensionEnabled(\"ProductTagSupport\");\n const inStoreProcessing = isExtensionEnabled(\"InStoreProcessing\");\n const soldByWeightEnabled = isExtensionEnabled(\"SoldByWeightSupport\");\n const entityMetaDataEnabled = isExtensionEnabled(\"EntityMetaData\");\n const preOrderSupportEnabled = isExtensionEnabled(\"PreOrderSupport\");\n const bulkOrderEnabled = isExtensionEnabled(\"BulkOrderSupport\");\n const tab = this.productRequestTabStatus[this.state.requestTab];\n const queryParams = this.fetchTableDataOnStatus(tab);\n const apiUrl = this.getAPIUrl();\n\n return (\n <>\n <Popup\n show={this.state.showRejectReasonForm}\n heading={getMessage(\"product.request.reject.form.heading\")}\n close={() => {\n this.setState({ showRejectReasonForm: false, submitting: false });\n }}\n className=\"rejection-form\"\n >\n <form\n onSubmit={(e) => {\n e && e.preventDefault();\n this.submitApprovalStatus({\n rejectionReason: this.state.rejectionReason,\n });\n }}\n >\n <Textarea\n label={getMessage(\"product.request.reject.form.label\")}\n placeholder={getMessage(\n \"product.request.reject.form.placeholder\"\n )}\n value={this.state?.rejectionReason || \"\"}\n onChange={(value) => {\n // console.log(\"okok : \", value);\n this.setState({\n rejectionReason: value,\n });\n }}\n />\n <button\n className=\"button image-selection-button reject-button\"\n type=\"submit\"\n disabled={!this.state.rejectionReason}\n >\n {getMessage(\"product.request.reject.form.heading\")}\n </button>\n <button\n className=\"button\"\n onClick={() => {\n this.setState({\n showRejectReasonForm: false,\n submitting: false,\n });\n }}\n >\n {getMessage(\"category.form.cancelText\")}\n </button>\n </form>\n </Popup>\n <ListingPageWithRoutes\n menu={props.menu}\n className=\"products-page\"\n title={getMessage(\"product.table.heading\")}\n addHeading={getMessage(\"product.form.add.heading\")}\n editHeading={getMessage(\"product.form.edit.heading\")}\n api={{\n url: apiUrl,\n params: queryParams,\n transform: (response) => {\n let products = response.data.product\n ? response.data.product\n : response.data.requests || [];\n\n Array.isArray(products) &&\n products.forEach((item) => {\n if (!item.images && item.hasVariants) {\n const variantWithImages = find(\n item.variants,\n (v) => v.images !== null\n );\n item.images = variantWithImages && variantWithImages.images;\n }\n });\n return products;\n },\n }}\n showLanguageDropDown\n emptyState={emptyState}\n headerActions={HeaderActions}\n additionalViews={[\n () => {\n return (\n this.isSellerSection() && (\n <div className=\"tab-wrp\">\n <Tabs\n items={this.productRequestTabStatus.map((tab) =>\n getMessage(`product.request.${tab.toLowerCase()}`)\n )}\n default={Number(this.state.requestTab)}\n onClick={(index) => {\n this.changeTab(index);\n }}\n />\n </div>\n )\n );\n },\n ]}\n form={{\n url: \"/catalogue-service/product\",\n apiParams: {},\n component: ProductForm,\n options: {\n tags: tagsEnabled,\n variants: variantsEnabled,\n brands: brandsEnabled,\n stockStrategy: stockStrategy,\n multipleStores: storesEnabled,\n inStoreProcessing: inStoreProcessing,\n soldByWeight: soldByWeightEnabled,\n entityMetaData: entityMetaDataEnabled,\n preOrderSupport: preOrderSupportEnabled,\n bulkOrderSuppport: bulkOrderEnabled,\n getStores: function () {\n const stores = JSON.parse(get(\"stores\"));\n return new Promise((resolve) => {\n resolve(stores);\n });\n },\n getProductMetaData: () => {\n if (isExtensionEnabled(\"EntityMetaData\")) {\n return new Promise((resolve, reject) => {\n const api = new API({ url: `/config-service/meta-data` });\n api.get().then((response) => {\n resolve(response.data.config.entityMetaData);\n }, reject);\n }).catch((error) => {\n console.error(error);\n });\n }\n return null;\n },\n getInventoryData: (storeId, ids) => {\n return new Promise((resolve, reject) => {\n const api = new API({\n url: `/inventory-service/item?storeId=${storeId}&productId=${ids.join(\n \",\"\n )}`,\n });\n api.get().then((response) => {\n resolve(response);\n }, reject);\n }).catch((error) => {\n console.error(error);\n });\n },\n },\n transformResponse: (response) => {\n let product = response.data.product;\n // For each product, assume single variant, single store (at least)\n // Depending on organization settings, transform submit data correspondingly\n let modifiedProduct = Object.assign({}, product);\n if (\n !product.variants ||\n (Array.isArray(product.variants) &&\n product.variants.length === 0)\n ) {\n modifiedProduct.variants = [{}];\n if (product.images) {\n modifiedProduct.variants[0].images = product.images;\n // delete modifiedProduct.images\n }\n if (product.barcodes) {\n modifiedProduct.variants[0].barcodes = product.barcodes;\n // delete product.barcodes\n }\n if (product.clientItemId) {\n modifiedProduct.variants[0].clientItemId =\n product.clientItemId;\n modifiedProduct.madeUp = true;\n // delete product.clientItemId\n }\n\n if (isExtensionEnabled(\"MarketPlace\")) {\n modifiedProduct.variants[0].metaData = {};\n modifiedProduct.variants[0].metaData[\n \"Minimum Profit Margin\"\n ] = product.metaData?.[\"Minimum Profit Margin\"];\n delete product.metaData?.[\"Minimum Profit Margin\"];\n }\n\n modifiedProduct.variants[0].id = product.id;\n }\n // Primary category and secondary categories merged as categories\n modifiedProduct.categories =\n modifiedProduct.secondaryCategories.length > 0\n ? [...modifiedProduct.secondaryCategories]\n : [];\n // Primary category as the first element in categories\n if (modifiedProduct.primaryCategory)\n modifiedProduct.categories.unshift(\n modifiedProduct.primaryCategory\n );\n delete modifiedProduct.primaryCategory;\n delete modifiedProduct.secondaryCategories;\n return modifiedProduct;\n },\n }}\n filters={{\n component: ProductFilters,\n options: {\n brands: brandsEnabled,\n tags: tagsEnabled,\n entityMetaData: entityMetaDataEnabled,\n seller: isSellerSection(),\n },\n transformSubmit: (formData) => {\n let filters = Object.assign({}, formData);\n if (formData.category) {\n filters.slugCategory = formData.category.slug;\n delete filters.category;\n }\n if (formData.brand) {\n filters.slugBrand = formData.brand.slug;\n delete filters.brand;\n }\n if (formData.tag) {\n filters.tagId = formData.tag.id;\n delete filters.tag;\n }\n if (formData.name) {\n filters.sorting = \"RELEVANCE\";\n }\n if (formData.seller) {\n filters.sellerID = formData.seller.id;\n delete filters.seller;\n }\n return filters;\n },\n }}\n secondaryActions={{\n component: {\n action: \"search-and-add\",\n Component: SearchAndAdd,\n },\n form: {\n action: \"add-product\",\n secondaryOptions: {\n headers: API_HEADER,\n masterCatelogue: true,\n getInventoryData: (storeId, ids) => {\n return new Promise((resolve, reject) => {\n const api = new API({\n url: `/inventory-service/item?storeId=${storeId}&productId=${ids.join(\n \",\"\n )}`,\n });\n api.get({}, API_HEADER).then((response) => {\n resolve(response);\n }, reject);\n });\n },\n getItem: (url, name) => {\n return new Promise((resolve, reject) => {\n const api = new API({\n url: url,\n });\n const params = { name: name };\n api.get(params).then((response) => {\n resolve(response);\n }, reject);\n });\n },\n updateItem: (url, name) => {\n return new Promise((resolve, reject) => {\n const api = new API({\n url: url,\n });\n const params = { name: name };\n api.post(params).then((response) => {\n resolve(response);\n }, reject);\n });\n },\n },\n },\n }}\n tableProperties={tableProperties(this)}\n />\n </>\n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Upload,\n VALIDATION_TYPES,\n CategorySearch,\n} from \"../../../../components/Form\";\n\nimport { getMessage } from \"../../../../lib/translator\";\n\nimport deleteIcon from \"../delete.svg\";\n\nexport default class CategoryForm extends BaseForm {\n constructor(props) {\n super(props);\n this.delete = this.delete.bind(this);\n this.changeStatus = this.changeStatus.bind(this);\n }\n\n transformResponse(response) {\n return response.data ? response.data.category : \"\";\n }\n\n delete() {\n this.props.onDelete();\n }\n\n changeStatus(status) {\n const { value } = this.props;\n if (value && value.id) {\n this.props.onSubmit({ id: value.id, status: status });\n }\n }\n\n render() {\n const { SubmitButton, CancelButton } = this.buttons;\n const { Form } = this.components;\n const { props } = this;\n return (\n <div className=\"CategoriesForm\">\n <Form>\n <Input\n label={getMessage(\"category.form.name.heading\")}\n placeholder={getMessage(\"category.form.name.placeholder\")}\n name=\"category-name\"\n type=\"text\"\n required\n {...this.generateStateMappers({\n stateKeys: [\"name\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n <Input\n label={getMessage(\"category.form.tagline.heading\")}\n placeholder={getMessage(\"category.form.tagline.placeholder\")}\n name=\"tagline\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"tagLine\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n <CategorySearch\n label={getMessage(\"category.form.parentCategory.heading\")}\n placeholder={getMessage(\"category.form.parentCategory.placeholder\")}\n name=\"parentCategory\"\n {...this.generateStateMappers({\n stateKeys: [\"parentCategory\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n <Upload\n label={getMessage(\"brand.form.image.heading\")}\n placeholder={getMessage(\"brand.form.image.placeholder\")}\n {...this.generateStateMappers({\n stateKeys: [\"image\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n <div className={`actions ${props.method}`}>\n {props.method &&\n props.method === \"edit\" &&\n !this.props.addFromTree && (\n <button\n className=\"delete-button\"\n type=\"button\"\n onClick={this.delete}\n >\n <img src={deleteIcon} alt=\"delete\" />\n <span>{getMessage(\"category.form.deleteText\")}</span>\n </button>\n )}\n {props.method && props.method === \"edit\" && (\n <div className=\"hide-delete-buttons flex\">\n {props.value && props.value.status === \"ENABLED\" ? (\n <button\n className=\"button\"\n type=\"button\"\n onClick={() => this.changeStatus(\"HIDDEN\")}\n >\n {getMessage(\"category.form.hideText\")}\n </button>\n ) : (\n <button\n className=\"button\"\n type=\"button\"\n onClick={() => this.changeStatus(\"ENABLED\")}\n >\n {getMessage(\"category.form.enableText\")}\n </button>\n )}\n </div>\n )}\n {(!props.method || props.method !== \"edit\") && (\n <CancelButton>\n {getMessage(\"category.form.cancelText\")}\n </CancelButton>\n )}\n <SubmitButton>\n {getMessage(\"category.form.submitText\")}\n </SubmitButton>\n </div>\n </Form>\n </div>\n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Radio,\n VALIDATION_TYPES,\n CategorySearch,\n} from \"../../../../components/Form\";\n\nimport { getMessage } from \"../../../../lib/translator\";\n\nexport default class CategoryFiltersForm extends BaseForm {\n render() {\n const { SubmitButton, ClearButton } = this.buttons;\n const { Form } = this.components;\n return (\n <Form>\n <div className=\"form-fields\">\n <CategorySearch\n label={getMessage(\"category.filters.name.heading\")}\n placeholder={getMessage(\"category.filters.name.placeholder\")}\n name=\"name\"\n {...this.generateStateMappers({\n stateKeys: [\"category\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n showChain\n />\n <Radio\n label={getMessage(\"category.filters.status.heading\")}\n name=\"status\"\n options={[\n {\n text: getMessage(\"category.filters.status.label.all\"),\n value: \"\",\n },\n {\n text: getMessage(\"category.filters.status.label.enabled\"),\n value: \"ENABLED\",\n },\n {\n text: getMessage(\"category.filters.status.label.disabled\"),\n value: \"HIDDEN\",\n },\n ]}\n {...this.generateStateMappers({\n stateKeys: [\"status\"],\n defaultValue: \"\",\n })}\n />\n </div>\n <SubmitButton>{getMessage(\"category.filters.submitText\")}</SubmitButton>\n <ClearButton>\n {getMessage(\"category.filters.clearFiltersText\")}\n </ClearButton>\n </Form>\n );\n }\n}\n","import React, { Component } from \"react\";\nimport Upload from \"../../../../components/FileUpload\";\nimport API from \"../../../../lib/api\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport csvIcon from \"../../../catalogue/Products/ProductUpload/csv-icon.svg\";\nimport uploadIcon from \"../../../catalogue/Products/ProductUpload/upload-products.svg\";\nimport \"./style.css\";\n\nfunction downloadCsv(data) {\n let csv = \"\";\n csv += data.join(\",\");\n csv += \"\\n\";\n var hiddenElement = document.createElement(\"a\");\n hiddenElement.href = \"data:text/csv;charset=utf-8,\" + encodeURI(csv);\n hiddenElement.target = \"_blank\";\n hiddenElement.download = \"categories.csv\";\n hiddenElement.click();\n}\n\nexport default class CategoryUpload extends Component {\n constructor(props) {\n super(props);\n this.getSampleCsv = this.getSampleCsv.bind(this);\n }\n\n getSampleCsv(e) {\n e && e.preventDefault();\n const api = new API({ url: \"/catalogue-service/category-upload\" });\n api\n .get()\n .then(\n (response) => {\n downloadCsv(response.data.fileUpload || []);\n },\n (error) => {\n this.setState({ uploadError: error.message });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n render() {\n return (\n <div className=\"category-upload\">\n <div className=\"bordered-box\">\n <div className=\"text-center\">\n <img src={uploadIcon} width=\"140\" alt=\"\" />\n </div>\n <Upload\n name=\"categoryUpload\"\n accept=\".csv, text/csv, text/comma-separated-values, application/csv, application/excel, application/vnd.ms-excel, application/vnd.msexcel\"\n placeholder={getMessage(\"productUpload.uploadFileText\")}\n uploadButtonText=\"Upload\"\n cancelText=\"Cancel\"\n uploadUrl=\"/catalogue-service/category-upload\"\n validationStrings={{\n invalidFileType: getMessage(\"input.invalidFileType\"),\n }}\n strings={{\n defaultMessage: getMessage(\"fileUpload.importCsv.heading\"),\n progressMessage: getMessage(\"fileUpload.importedCsv.heading\"),\n completionMessage: getMessage(\"categories.import.successText\"),\n }}\n icon={csvIcon}\n />\n </div>\n <div className=\"text-center\">\n <button className=\"download-link\" onClick={this.getSampleCsv}>\n {getMessage(\"productUpload.csvDownloadText\")}\n </button>\n </div>\n </div>\n );\n }\n}\n","import React, { Component } from \"react\";\nimport { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport ListingPageWithRoutes from \"../../../containers/ListingPage/listingRouter\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport Image from \"../../../components/Image\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport CategoryForm from \"./Form\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { Link } from \"react-router-dom\";\nimport CategoryFilters from \"./Filters\";\n\nimport emptyIcon from \"./categories-empty.svg\";\nimport helpCard1Icon from \"./helpcard1.svg\";\nimport helpCard2Icon from \"./helpcard2.svg\";\nimport helpCard3Icon from \"./helpcard3.svg\";\nimport tableActive from \"./table-active.svg\";\nimport treeViewInactive from \"./tree-view-inactive.svg\";\n\nimport \"./style.css\";\nimport { Popup } from \"../../../components/Popup\";\nimport CategoryUpload from \"./CategoryUpload\";\n\nconst emptyState = {\n icon: emptyIcon,\n message: getMessage(\"category.helpItems.message\"),\n submessage: getMessage(\"category.helpItems.submessage\"),\n actions: ({ onAction }) => (\n <button\n className=\"primary button\"\n onClick={() => {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n + {getMessage(\"category.add.text\")}\n </button>\n ),\n};\n\nconst tableProperties = () => {\n return {\n headers: [\n getMessage(\"category.header.image\"),\n getMessage(\"category.header.name\"),\n getMessage(\"category.header.parentCategory\"),\n getMessage(\"category.header.productCount\"),\n getMessage(\"category.header.status\"),\n getMessage(\"category.header.actions\"),\n ],\n row: ({\n id,\n name,\n parentCategory,\n productsCount,\n status,\n image,\n onAction,\n slug,\n }) => (\n <Row>\n <Cell>\n <Image size=\"sm\" src={image} bordered />\n </Cell>\n <Cell>\n <span\n className=\"category-name\"\n onClick={() => {\n onAction(TABLE_ACTIONS.EDIT, { id });\n }}\n >\n {name}\n </span>\n </Cell>\n <Cell className=\"parent-category\">\n <span className=\"text-muted\">\n <span className=\"category-header-mobileview\">{`${getMessage(\n \"category.header.parentCategory\"\n )}: `}</span>\n <small className=\"text-category-name\">\n {parentCategory ? parentCategory.name : null}\n </small>\n </span>\n </Cell>\n <Cell className=\"product-count text-right\">\n <span className=\"text-muted\">\n <span className=\"category-productcount-mobileview\">{`${getMessage(\n \"category.header.productCount\"\n )}: `}</span>\n <small className=\"text-product-count\">{`${productsCount}`}</small>\n </span>\n </Cell>\n <Cell className=\"category-status\">\n <small className=\"text-muted\">{status}</small>\n </Cell>\n <Cell className=\"category-actions\">\n <DropDown icon={<img src={ICONS.VELLIP} alt=\"â‹®\" />}>\n <DropDownItem\n onClick={() => {\n onAction(TABLE_ACTIONS.EDIT, { id });\n }}\n >\n {getMessage(\"category.action.edit\")}\n </DropDownItem>\n <DropDownItem\n onClick={() => {\n onAction(TABLE_ACTIONS.DELETE, { id });\n }}\n >\n {getMessage(\"category.action.delete\")}\n </DropDownItem>\n <DropDownItem>\n <Link to={`/catalogue/products?slugCategory=${slug}`}>\n {\" \"}\n {getMessage(\"category.action.seeProducts\")}\n </Link>\n </DropDownItem>\n </DropDown>\n </Cell>\n </Row>\n ),\n };\n};\nconst helpItems = {\n title: getMessage(\"category.helpItems.title\"),\n instructions: [\n {\n icon: helpCard1Icon,\n title: getMessage(\"category.helpItems.ppo.title\"),\n description: getMessage(\"category.helpItems.ppo.description\"),\n },\n {\n icon: helpCard2Icon,\n title: getMessage(\"category.helpItems.poc.title\"),\n description: getMessage(\"category.helpItems.poc.description\"),\n },\n {\n icon: helpCard3Icon,\n title: getMessage(\"category.helpItems.seo.title\"),\n description: getMessage(\"category.helpItems.seo.description\"),\n },\n ],\n};\n\nexport default class Categories extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n mountListingPage: true,\n showPopup: false,\n };\n }\n\n refreshingData = () => {\n /**\n * Todo: To figure out a better way to update more than one rows of Listing page without remounting\n */\n this.setState({ mountListingPage: false });\n this.setState({ mountListingPage: true });\n };\n\n handleModalState = () => this.setState({ showPopup: !this.state.showPopup });\n\n render() {\n let props = this.props;\n const { mountListingPage } = this.state;\n if (mountListingPage)\n return (\n <ListingPageWithRoutes\n menu={props.menu}\n className=\"categories-page\"\n addHeading={getMessage(\"category.form.add.heading\")}\n editHeading={getMessage(\"category.form.edit.heading\")}\n title={getMessage(\"category.heading\")}\n api={{\n url: \"/catalogue-service/category\",\n transform: (response) => response.data.category,\n afterSubmit: () => {\n this.refreshingData();\n },\n }}\n showLanguageDropDown\n emptyState={emptyState}\n helpItems={helpItems}\n headerActions={({ onAction }) => (\n <div className=\"category-header\">\n <div className=\"image-wrapper\">\n <img\n src={tableActive}\n alt=\"table view\"\n title={getMessage(\"category.icons.table-title\")}\n />\n <Link to=\"/catalogue/categories/tree-view\">\n <img\n src={treeViewInactive}\n alt=\"tree view\"\n title={getMessage(\"category.icons.tree-title\")}\n />\n </Link>\n </div>\n\n <div className=\"text-center\">\n <Popup\n heading={getMessage(\"product.add.bulk.text\")}\n show={this.state.showPopup}\n close={this.handleModalState}\n className=\"bulk-upload\"\n >\n <CategoryUpload />\n </Popup>\n <DropDown\n className=\"bulk-upload-dropdown\"\n icon={\n <button className=\"button primary add-seller-dropdown-button\">\n +{\" \"}\n <span className=\"text\">\n {getMessage(\"category.upload.text\")}\n </span>\n </button>\n }\n >\n <DropDownItem\n onClick={() => {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n <span className=\"text\">\n {getMessage(\"category.add.text\")}\n </span>\n </DropDownItem>\n <DropDownItem onClick={this.handleModalState}>\n {getMessage(\"sellers.seller.form.add.bulk.text\")}\n </DropDownItem>\n </DropDown>\n </div>\n </div>\n )}\n form={{\n component: CategoryForm,\n transformSubmit: (formData) => {\n let result = Object.assign({}, formData);\n if (formData.parentCategory) {\n result.parentCategoryId = formData.parentCategory.id;\n delete result.parentCategory;\n }\n if (!formData.parentCategory) {\n delete result.parentCategoryId;\n }\n return result;\n },\n allowDelete: true,\n }}\n tableProperties={tableProperties(\n this.state && this.state.isMobileView\n )}\n filters={{\n component: CategoryFilters,\n transformSubmit: (formData) => {\n let data = Object.assign({}, formData);\n if (data.category) {\n data.name = data.category.name;\n delete data.category;\n }\n return data;\n },\n }}\n />\n );\n return null;\n }\n}\n","import React, { Component } from \"react\";\nimport SortableTree, {\n getTreeFromFlatData,\n removeNodeAtPath,\n addNodeUnderParent,\n changeNodeAtPath,\n getVisibleNodeCount,\n} from \"react-sortable-tree\";\nimport \"react-sortable-tree/style.css\";\nimport \"./style.css\";\n\nexport default class Tree extends Component {\n render() {\n const {\n data,\n onChange,\n onMoveNode,\n getNodeKey,\n removeNodeAtPath,\n addNodeUnderParent,\n generateNodeProps,\n canDrag,\n className,\n onDragStateChanged,\n canDrop,\n onVisibilityToggle,\n } = this.props;\n const count = getVisibleNodeCount({ treeData: data });\n return (\n <div className=\"sortable-tree\">\n <SortableTree\n style={{ height: count * 70 + 150 }}\n className={className}\n treeData={data}\n onChange={onChange}\n getNodeKey={getNodeKey}\n onMoveNode={onMoveNode}\n removeNodeAtPath={removeNodeAtPath}\n addNodeUnderParent={addNodeUnderParent}\n generateNodeProps={generateNodeProps}\n canDrag={canDrag}\n canDrop={canDrop}\n onDragStateChanged={onDragStateChanged}\n onVisibilityToggle={onVisibilityToggle}\n />\n </div>\n );\n }\n}\n\nexport {\n getTreeFromFlatData,\n removeNodeAtPath,\n addNodeUnderParent,\n changeNodeAtPath,\n};\n\nTree.defaultProps = {\n getNodeKey: ({ node }) => node.id,\n canDrag: true,\n treeData: [],\n};\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport Tree, {\n removeNodeAtPath,\n addNodeUnderParent,\n changeNodeAtPath,\n} from \"../../../../components/Tree\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../../components/DropDown\";\nimport CategoryForm from \"../Form\";\nimport API from \"../../../../lib/api\";\nimport Loader from \"../../../../components/Loader\";\nimport AuthenticatedPage from \"../../../../containers/AuthenticatedPage\";\nimport \"./style.css\";\nimport { Popup, Dialog } from \"../../../../components/Popup\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport Image from \"../../../../components/Image\";\nimport ImagePlaceHolder from \"../../../../components/Image/image-placeholder.svg\";\nimport tableInctive from \"./table-inactive.svg\";\nimport treeViewActive from \"./tree-view-active.svg\";\nimport emptyIcon from \"../categories-empty.svg\";\nimport EmptyState from \"../../../../components/EmptyState\";\n\nfunction generateCategoryTree(data, parent = null) {\n data.map((item) => {\n if (item.subCategories === null) {\n item.title = item.name;\n item.children = null;\n item.parentCategory = parent && { name: parent.name, id: parent.id };\n } else {\n item.title = item.name;\n item.children = generateCategoryTree([...item.subCategories], item);\n item.parentCategory = parent && { name: parent.name, id: parent.id };\n }\n return item;\n });\n return data;\n}\n\nfunction filterHiddenCategories(data) {\n var result = (data || []).filter(function filterCategory(category) {\n if (category.status !== \"HIDDEN\") {\n if (category.children) {\n return (category.children = category.children.filter(filterCategory));\n }\n return true;\n } else {\n return false;\n }\n });\n return result;\n}\n\nclass CategoryTree extends Component {\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n treeData: [],\n getNodeKey: ({ node }) => node.id,\n done: true,\n };\n this.changeParent = this.changeParent.bind(this);\n this.addCategory = this.addCategory.bind(this);\n this.deleteCategory = this.deleteCategory.bind(this);\n this.editCategory = this.editCategory.bind(this);\n this.fetchData = this.fetchData.bind(this);\n }\n\n changeParent(node, parentNode) {\n this.setState({\n done: false,\n });\n this.api = new API({ url: `/catalogue-service/category/${node.id}` });\n let params = {};\n if (parentNode) {\n params.parentCategoryId = parentNode.id;\n } else {\n params.parentCategoryId = \"\";\n }\n this.api\n .put(params)\n .then(\n (response) => {\n this.treeData = null;\n this.setState({\n done: true,\n error: null,\n });\n },\n (error) => {\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n this.setState(\n {\n error: error.message,\n done: true,\n treeData: this.treeData,\n },\n () => {\n this.treeData = null;\n }\n );\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n componentWillUnmount() {\n this.api && this.api.cancel();\n }\n\n componentDidMount() {\n this.fetchData();\n }\n\n fetchData() {\n this.setState({\n loading: true,\n });\n\n this.api = new API({ url: \"/catalogue-service/category\" });\n this.api\n .get({ paginate: \"false\", hierarchy: true })\n .then((response) => {\n let categories = response.data.category || [];\n let generateTree = [];\n let empty = false;\n if (categories.length > 0) {\n generateTree = generateCategoryTree(categories);\n } else {\n empty = true;\n }\n this.setState({\n loading: false,\n treeData: generateTree,\n empty,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n editCategory(formData) {\n this.setState({\n submitting: true,\n });\n let params = Object.assign({}, formData);\n this.api = new API({ url: `/catalogue-service/category/${params.id}` });\n if (params.parentCategory) {\n params.parentCategoryId = params.parentCategory.id;\n } else if (params.parentCategory === \"\") {\n params.parentCategoryId = \"\";\n } else {\n delete params.parentCategoryId;\n }\n delete params.parentCategory;\n this.api\n .put(params)\n .then(\n (response) => {\n const category = response.data.category;\n this.setState(\n (state) => ({\n treeData: changeNodeAtPath({\n treeData: state.treeData,\n path: state.path,\n getNodeKey: state.getNodeKey,\n newNode: { ...category, title: category.name },\n }),\n submitting: false,\n value: null,\n showForm: false,\n error: null,\n done: true,\n path: null,\n }),\n () => this.fetchData()\n );\n },\n (error) => {\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n this.setState({\n submitting: false,\n error: error.message,\n done: true,\n path: null,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n addCategory(formData) {\n this.setState({\n submitting: true,\n });\n this.api = new API({ url: \"/catalogue-service/category\" });\n let params = Object.assign({}, formData);\n const path = this.state.path;\n if (path) {\n params.parentCategoryId = path[path.length - 1];\n } else {\n params.parentCategoryId = null;\n }\n if (formData.parentCategory) {\n params.parentCategoryId = formData.parentCategory.id;\n }\n this.api\n .post(params)\n .then((response) => {\n let category = response.data.category;\n let parentCategoryId =\n category.parentCategory && category.parentCategory.id;\n let newNode = { ...category, title: category.name };\n this.setState((state) => ({\n showForm: false,\n value: null,\n submitting: false,\n path: null,\n done: true,\n treeData: addNodeUnderParent({\n treeData: state.treeData,\n parentKey: parentCategoryId,\n expandParent: true,\n getNodeKey: state.getNodeKey,\n newNode: newNode,\n addAsFirstChild: true,\n }).treeData,\n }));\n })\n .catch((error) => {\n console.error(error);\n });\n }\n deleteCategory() {\n this.setState({\n done: false,\n });\n const path = this.state.path;\n const id = path[path.length - 1];\n this.api = new API({ url: `/catalogue-service/category/${id}` });\n this.api\n .delete()\n .then(\n (response) => {\n this.setState((prevState) => ({\n treeData: removeNodeAtPath({\n treeData: prevState.treeData,\n path: prevState.path,\n getNodeKey: prevState.getNodeKey,\n }),\n path: null,\n done: true,\n showDelete: false,\n error: null,\n }));\n },\n (error) => {\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n this.setState({\n error: error.message,\n path: null,\n done: true,\n showDelete: false,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n render() {\n const { loading, done, error, empty } = this.state;\n let { treeData } = this.state;\n // treeData = filterHiddenCategories(treeData)\n return (\n <AuthenticatedPage menu={this.props.menu} className=\"category-tree\">\n <div className=\"heading\">\n <h1 className=\"title\">{getMessage(\"category.tree.title\")}</h1>\n <div className=\"heading-links\">\n <Link to=\"/catalogue/categories\">\n <img\n src={tableInctive}\n alt=\"table view\"\n title={getMessage(\"category.icons.table-title\")}\n />\n </Link>\n <img\n src={treeViewActive}\n alt=\"tree view\"\n title={getMessage(\"category.icons.tree-title\")}\n />\n <button\n className=\"button primary\"\n onClick={() =>\n this.setState({\n showForm: true,\n addFromTree: false,\n path: null,\n })\n }\n >\n + <span className=\"text\">{getMessage(\"category.add.text\")}</span>\n </button>\n </div>\n </div>\n {loading ? (\n <Loader />\n ) : (\n <React.Fragment>\n {error && <div className=\"form-error\">{error}</div>}\n <Popup\n className=\"add-category-tree-popup\"\n title={getMessage(\"category.add\")}\n show={this.state.showForm}\n close={() => this.setState({ showForm: false, value: null })}\n >\n <CategoryForm\n onCancel={() => this.setState({ showForm: false })}\n onSubmit={(formData) =>\n this.state.value\n ? this.editCategory(formData)\n : this.addCategory(formData)\n }\n value={this.state.value}\n addFromTree={this.state.addFromTree}\n method={this.state.value ? \"edit\" : \"add\"}\n />\n </Popup>\n <Dialog\n show={this.state.showDelete}\n title={getMessage(\"category.delete\")}\n close={() => this.setState({ showDelete: false, path: null })}\n information={getMessage(\"category.delete.confirm\")}\n closeText={getMessage(\"category.delete.close\")}\n okText={getMessage(\"category.delete.okay\")}\n onOk={this.deleteCategory}\n />\n {!empty ? (\n <Tree\n data={treeData}\n className=\"category-tree\"\n canDrag={done}\n onDragStateChanged={({ isDragging }) => {\n if (isDragging) {\n this.treeData = this.state.treeData;\n }\n }}\n getNodeKey={({ node }) => node.id}\n onMoveNode={({ node, nextParentNode }) =>\n this.changeParent(node, nextParentNode)\n }\n onChange={(e) => this.setState({ treeData: e })}\n generateNodeProps={({ node, path }) => ({\n buttons: [\n <div className=\"node-div\">\n <Image\n src={\n node.image && typeof node.image === \"string\"\n ? node.image\n : ImagePlaceHolder\n }\n alt=\"\"\n bordered\n />\n </div>,\n <div className=\"node-div\">{node.status}</div>,\n <DropDown icon={<img src={ICONS.VELLIP} alt=\"â‹®\" />}>\n <DropDownItem\n onClick={() => {\n this.setState({\n showForm: true,\n path,\n addFromTree: true,\n });\n }}\n >\n {getMessage(\"category.add\")}\n </DropDownItem>\n <DropDownItem\n onClick={() => {\n this.setState({\n value: node,\n showForm: true,\n addFromTree: true,\n path,\n });\n }}\n >\n {getMessage(\"category.action.edit\")}\n </DropDownItem>\n <DropDownItem>\n <Link to={`/catalogue/products?categoryId=${node.id}`}>\n {\" \"}\n {getMessage(\"category.action.seeProducts\")}\n </Link>\n </DropDownItem>\n </DropDown>,\n <button\n className=\"remove-button\"\n onClick={() => {\n this.setState({\n showDelete: true,\n path,\n });\n }}\n >\n Delete Category\n </button>,\n ],\n })}\n />\n ) : (\n <EmptyState\n icon={emptyIcon}\n message={getMessage(\"category.helpItems.message\")}\n submessage={getMessage(\"category.helpItems.submessage\")}\n />\n )}\n </React.Fragment>\n )}\n </AuthenticatedPage>\n );\n }\n}\n\nexport default CategoryTree;\n\nexport { generateCategoryTree, filterHiddenCategories };\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Upload,\n VALIDATION_TYPES,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport deleteIcon from \"./delete.svg\";\nimport \"./style.css\";\n\nexport default class BrandForm extends BaseForm {\n constructor(props) {\n super(props);\n this.delete = this.delete.bind(this);\n this.changeStatus = this.changeStatus.bind(this);\n }\n\n transformResponse(response) {\n return response.data ? response.data.brand : \"\";\n }\n\n delete() {\n this.props.onDelete();\n }\n\n changeStatus(status) {\n const { value } = this.props;\n if (value && value.id) {\n this.props.onSubmit({ id: value.id, status: status });\n }\n }\n\n render() {\n const { SubmitButton, CancelButton } = this.buttons;\n const { Form } = this.components;\n const { props } = this;\n return (\n <div className=\"BrandForm\">\n <Form>\n <Input\n label={getMessage(\"brand.form.name.heading\")}\n placeholder={getMessage(\"brand.form.name.placeholder\")}\n name=\"name\"\n type=\"text\"\n required\n {...this.generateStateMappers({\n stateKeys: [\"name\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n <Input\n label={getMessage(\"brand.form.tagline.heading\")}\n placeholder={getMessage(\"brand.form.tagline.placeholder\")}\n name=\"tagline\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"tagLine\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n <Upload\n label={getMessage(\"brand.form.image.heading\")}\n placeholder={getMessage(\"brand.form.image.placeholder\")}\n {...this.generateStateMappers({\n stateKeys: [\"image\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n <div className={`form-actions ${props.method}`}>\n {props.method && props.method === \"edit\" && (\n <button\n className=\"delete-button\"\n type=\"button\"\n onClick={this.delete}\n >\n <img src={deleteIcon} alt=\"delete\" />\n <span>{getMessage(\"brand.form.deleteText\")}</span>\n </button>\n )}\n {props.method && props.method === \"edit\" && (\n <div className=\"hide-delete-buttons flex\">\n {props.value && props.value.status === \"ENABLED\" ? (\n <button\n className=\"button\"\n type=\"button\"\n onClick={() => this.changeStatus(\"HIDDEN\")}\n >\n {getMessage(\"brand.form.hideText\")}\n </button>\n ) : (\n <button\n className=\"button\"\n type=\"button\"\n onClick={() => this.changeStatus(\"ENABLED\")}\n >\n {getMessage(\"brand.form.enableText\")}\n </button>\n )}\n </div>\n )}\n {(!props.method || props.method !== \"edit\") && (\n <CancelButton>{getMessage(\"brand.form.cancelText\")}</CancelButton>\n )}\n <SubmitButton>{getMessage(\"brand.form.submitText\")}</SubmitButton>\n </div>\n </Form>\n </div>\n );\n }\n}\n","import React from \"react\";\nimport { BaseForm, Radio, BrandSearch } from \"../../../../components/Form\";\n\nimport { getMessage } from \"../../../../lib/translator\";\n\nexport default class BrandFiltersForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.values.status = \"\";\n }\n render() {\n const { SubmitButton, ClearButton } = this.buttons;\n const { Form } = this.components;\n return (\n <Form>\n <div className=\"form-fields\">\n <BrandSearch\n label={getMessage(\"product.filters.brand.heading\")}\n placeholder={getMessage(\"product.filters.brand.placeholder\")}\n name=\"brand\"\n {...this.generateStateMappers({\n stateKeys: [\"brand\"],\n })}\n />\n <Radio\n label={getMessage(\"brand.filters.status.heading\")}\n name=\"status\"\n options={[\n {\n text: getMessage(\"brand.filters.status.label.all\"),\n value: \"\",\n },\n {\n text: getMessage(\"brand.filters.status.label.enabled\"),\n value: \"ENABLED\",\n },\n {\n text: getMessage(\"brand.filters.status.label.hidden\"),\n value: \"HIDDEN\",\n },\n ]}\n {...this.generateStateMappers({\n stateKeys: [\"status\"],\n })}\n />\n </div>\n <SubmitButton>{getMessage(\"brand.filters.submitText\")}</SubmitButton>\n <ClearButton>\n {getMessage(\"brand.filters.clearFiltersText\")}\n </ClearButton>\n </Form>\n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport Image from \"../../../components/Image\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport BrandForm from \"./Form\";\nimport BrandFilters from \"./Filters\";\nimport { getMessage } from \"../../../lib/translator\";\nimport \"./style.css\";\n\nimport emptyIcon from \"./brands-empty.svg\";\nimport Toggle from \"../../../components/Form/Inputs/Toggle\";\n\nconst emptyState = {\n icon: emptyIcon,\n message: getMessage(\"brand.helpItems.message\"),\n actions: ({ onAction }) => (\n <button\n className=\"primary button\"\n onClick={() => {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n + {getMessage(\"brand.add.text\")}\n </button>\n ),\n};\n\nconst tableProperties = () => {\n return {\n headers: [\n getMessage(\"brand.header.logo\"),\n getMessage(\"brand.header.brand\"),\n getMessage(\"brand.header.productCount\"),\n getMessage(\"brand.header.status\"),\n getMessage(\"brand.header.actions\"),\n ],\n row: ({ id, name, image, productsCount, status, onAction, slug }) => (\n <Row>\n <Cell>\n <Image size=\"sm\" src={image} bordered />\n </Cell>\n <Cell className=\"brand-name\">\n <span\n className=\"brand-name-heading\"\n onClick={() => {\n onAction(TABLE_ACTIONS.EDIT, { id });\n }}\n >\n {name}\n </span>\n </Cell>\n <Cell className=\"product-count\">\n <span className=\"text-muted\">\n <span className=\"brand-header-mobileview\">{`${getMessage(\n \"brand.header.productCount\"\n )}: `}</span>\n <small>{`${productsCount}`}</small>\n </span>\n </Cell>\n <Cell className=\"brand-status\">\n <small className=\"text-muted brand-enable\">\n {[\"ENABLED\", \"HIDDEN\"].indexOf(status) > -1\n ? getMessage(`brand.status.${status.toLowerCase()}`)\n : status}\n </small>\n <Toggle\n className={`${status} brand-enable-mobileview`}\n name={status}\n value={status === \"ENABLED\"}\n icons={false}\n onChange={() => {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n { status: status === \"ENABLED\" ? \"HIDDEN\" : \"ENABLED\" }\n );\n }}\n />\n </Cell>\n <Cell className=\"brand-actions\">\n <DropDown icon={<img src={ICONS.VELLIP} alt=\"â‹®\" />}>\n <DropDownItem\n onClick={() => {\n onAction(TABLE_ACTIONS.EDIT, { id });\n }}\n >\n {getMessage(\"brand.action.edit\")}\n </DropDownItem>\n <DropDownItem\n onClick={() => {\n onAction(TABLE_ACTIONS.DELETE, { id });\n }}\n >\n {getMessage(\"brand.action.delete\")}\n </DropDownItem>\n <DropDownItem>\n <Link to={`/catalogue/products?slugBrand=${slug}`}>\n {getMessage(\"brand.action.seeProducts\")}\n </Link>\n </DropDownItem>\n </DropDown>\n </Cell>\n </Row>\n ),\n };\n};\n\nexport default class Brands extends Component {\n render() {\n let props = this.props;\n return (\n <ListingPage\n menu={props.menu}\n className=\"brands-page\"\n addHeading={getMessage(\"brand.add.text\")}\n editHeading={getMessage(\"brand.edit.text\")}\n title={getMessage(\"brand.heading\")}\n api={{\n url: \"/catalogue-service/brand\",\n transform: (response) => response.data.brand,\n }}\n showLanguageDropDown\n emptyState={emptyState}\n tableProperties={tableProperties()}\n headerActions={({ onAction }) => (\n <button\n className=\"primary button\"\n onClick={() => {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n + <span className=\"text\">{getMessage(\"brand.add.text\")}</span>\n </button>\n )}\n form={{\n component: BrandForm,\n allowDelete: true,\n }}\n filters={{\n component: BrandFilters,\n transformSubmit: (formData) => {\n let data = Object.assign({}, formData);\n if (data.brand) {\n data.name = data.brand.name;\n delete data.brand;\n }\n return data;\n },\n }}\n />\n );\n }\n}\n","import React from \"react\";\nimport \"./style.css\";\nimport { Link } from \"react-router-dom\";\n\nexport default function Warning(props) {\n const { textToBold, sentence, helpLink, tooltipText } = props;\n return (\n <div className=\"Warning\">\n <div className=\"title\">\n <span>{textToBold}</span> {sentence}\n </div>\n {helpLink ? (\n <Link to={helpLink}>\n <div className=\"tooltip\" />\n </Link>\n ) : (\n <div className=\"tooltip\">\n {tooltipText && <div className=\"tooltiptext\">{tooltipText}</div>}\n </div>\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport \"./style.css\";\nexport default function NameValueCard(props) {\n const color = props.color || \"gray\";\n return (\n <div className=\"nameValueCard\">\n <div className={`light${color} value`}>{props.value}</div>\n <div className={`${color} name`}>{props.name}</div>\n </div>\n );\n}\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage/index\";\nimport { getMessage } from \"../../../lib/translator\";\nimport HelpWidget from \"../../../components/HelpWidget\";\nimport HelpCard from \"../../../components/HelpCard\";\nimport Warning from \"../../../components/Warning\";\nimport { isEnterprise } from \"../../../lib/auth\";\n\nimport productsIcon from \"./products.svg\";\nimport uploadingImagesIcon from \"./uploading-images.svg\";\nimport contentMarketingIcon from \"./content-marketing.svg\";\n\nimport API from \"../../../lib/api\";\nimport Loader from \"../../../components/Loader\";\nimport NameValueCard from \"../../../components/NameValueCard\";\n\nimport \"./style.css\";\n\nconst helpItems = {\n title: getMessage(\"catalogue.dashboard.helpItems.title\"),\n instructions: [\n {\n icon: productsIcon,\n title: getMessage(\"catalogue.dashboard.helpItems.gp.title\"),\n description: getMessage(\"catalogue.dashboard.helpItems.gp.description\"),\n },\n {\n icon: uploadingImagesIcon,\n title: getMessage(\"catalogue.dashboard.helpItems.uI.title\"),\n description: getMessage(\"catalogue.dashboard.helpItems.uI.description\"),\n },\n {\n icon: contentMarketingIcon,\n title: getMessage(\"catalogue.dashboard.helpItems.cm.title\"),\n description: getMessage(\"catalogue.dashboard.helpItems.cm.description\"),\n },\n ],\n};\n\nexport default class Dashboard extends Component {\n constructor(props) {\n super(props);\n this.api = null;\n this.state = {\n showLoader: false,\n catalogueCountData: [],\n productsData: {},\n apiError: \"\",\n };\n this.colors = [\"green\", \"gray\", \"blue\"];\n }\n\n componentDidMount() {\n this.setState({\n showLoader: true,\n });\n this.api = new API({ url: \"/catalogue-service/stats\" });\n this.api\n .get()\n .then(\n (response) => {\n const catalogueCountData = [];\n const productsData = response.data[\"products\"] || {};\n let index = 0;\n for (var key in response.data) {\n if (response.data[key][\"count\"] >= 0) {\n catalogueCountData.push({\n name: key,\n value: response.data[key][\"count\"],\n color: this.colors[index++],\n });\n }\n }\n this.setState({\n catalogueCountData,\n productsData,\n showLoader: false,\n });\n },\n (error) => {\n if (error.message === \"cancelled\") {\n return;\n }\n if (error.code === 401) {\n throw error;\n }\n this.setState({\n apiError: error.message,\n showLoader: false,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n componentWillUnmount() {\n this.api && this.api.cancel();\n }\n\n render() {\n const { menu } = this.props;\n const { showLoader, catalogueCountData, productsData } = this.state;\n const cards = catalogueCountData.map(({ name, ...data }, index) => (\n <NameValueCard\n key={`item-${index}`}\n name={\n <Link className=\"pages-link\" to={`/catalogue/${name}`}>\n {getMessage(\"catalogue.dashboard.\" + name, {\n count: this.state.catalogueCountData[index][\"value\"],\n })}\n </Link>\n }\n {...data}\n />\n ));\n\n return (\n <AuthenticatedPage\n menu={menu}\n showLanguageDropDown\n className=\"catalogue-dashboard\"\n title={getMessage(\"catalogue.dashboard.heading\")}\n >\n <h1 className=\"title\">{getMessage(\"catalogue.dashboard.heading\")}</h1>\n {showLoader ? (\n <Loader />\n ) : (\n <div>\n {this.state.apiError && (\n <div className=\"api-error\">{getMessage(\"error.generic\")}</div>\n )}\n <div className=\"count-info\">{cards}</div>\n\n <div className=\"products-info\">\n {productsData.withoutImagesCount > 0 && (\n <Warning\n textToBold={productsData.withoutImagesCount}\n sentence={getMessage(\n \"catalogue.dashboard.productsWithoutImages\",\n { count: productsData.withoutImagesCount }\n )}\n tooltipText={getMessage(\n \"catalogue.dashboard.helpItems.uI.description\"\n )}\n />\n )}\n {productsData.withoutDescriptionCount > 0 && (\n <Warning\n textToBold={productsData.withoutDescriptionCount}\n sentence={getMessage(\n \"catalogue.dashboard.productsWithoutDescription\",\n { count: productsData.withoutDescriptionCount }\n )}\n tooltipText={getMessage(\n \"catalogue.dashboard.helpItems.gp.description\"\n )}\n />\n )}\n </div>\n </div>\n )}\n {!isEnterprise() && (\n <HelpWidget title={getMessage(\"catalogue.dashboard.helpItems.title\")}>\n {helpItems.instructions.map((instruction, index) => (\n <HelpCard\n icon={instruction.icon}\n title={instruction.title}\n key={index}\n >\n {instruction.description}\n </HelpCard>\n ))}\n </HelpWidget>\n )}\n </AuthenticatedPage>\n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n VALIDATION_TYPES,\n Upload,\n Checkbox,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport deleteIcon from \"./delete.svg\";\n\nimport \"./style.css\";\n\nexport default class TagForm extends BaseForm {\n constructor(props) {\n super(props);\n this.delete = this.delete.bind(this);\n if (props.method === \"add\") {\n this.state.values.filterable = true;\n }\n }\n delete() {\n this.props.onDelete();\n }\n\n render() {\n const { SubmitButton, CancelButton } = this.buttons;\n const { Form } = this.components;\n return (\n <div className=\"TagForm\">\n <Form>\n <Input\n label={getMessage(\"tag.form.name.heading\")}\n placeholder={getMessage(\"tag.form.name.placeholder\")}\n name=\"name\"\n type=\"text\"\n required\n {...this.generateStateMappers({\n stateKeys: [\"name\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n <Input\n label={getMessage(\"tag.form.tagline.heading\")}\n placeholder={getMessage(\"tag.form.tagline.placeholder\")}\n name=\"tagline\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"tagLine\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n <Upload\n label={getMessage(\"tag.form.image.heading\")}\n placeholder={getMessage(\"tag.form.image.placeholder\")}\n {...this.generateStateMappers({\n stateKeys: [\"image\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n <Checkbox\n name=\"filterble\"\n inlineLabel={getMessage(\"Filterable\")}\n {...this.generateStateMappers({\n stateKeys: [\"filterable\"],\n loseEmphasisOnFill: true,\n })}\n />\n <div className={`form-actions ${this.props.method}`}>\n {this.props.method && this.props.method === \"edit\" && (\n <button\n className=\"delete-button\"\n type=\"button\"\n onClick={this.delete}\n >\n <img src={deleteIcon} alt=\"delete\" />\n <span>{getMessage(\"brand.form.deleteText\")}</span>\n </button>\n )}\n {(!this.props.method || this.props.method !== \"edit\") && (\n <CancelButton>{getMessage(\"brand.form.cancelText\")}</CancelButton>\n )}\n <SubmitButton>{getMessage(\"tag.form.submitText\")}</SubmitButton>\n </div>\n </Form>\n </div>\n );\n }\n}\n","import React from \"react\";\nimport { BaseForm, Input, VALIDATION_TYPES } from \"../../../../components/Form\";\n\nimport { getMessage } from \"../../../../lib/translator\";\n\nexport default class TagFiltersForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.values.status = \"\";\n }\n render() {\n const { SubmitButton, ClearButton } = this.buttons;\n const { Form } = this.components;\n return (\n <Form>\n <div className=\"form-fields\">\n <Input\n label={getMessage(\"tag.filters.name.heading\")}\n placeholder={getMessage(\"tag.filters.name.placeholder\")}\n name=\"name\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"name\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n </div>\n <SubmitButton>{getMessage(\"tag.filters.submitText\")}</SubmitButton>\n <ClearButton>{getMessage(\"tag.filter.clear\")}</ClearButton>\n </Form>\n );\n }\n}\n","import React from \"react\";\nimport { BaseForm, ProductSearch } from \"../../../../components/Form\";\nimport API from \"../../../../lib/api\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nimport \"./style.css\";\n\nfunction handleError(err) {\n if (err.code === 401) {\n throw err;\n }\n}\n\nexport default class ProductLinkingForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state = Object.assign(this.state, {\n products: [],\n });\n this.linkProductToTag = this.linkProductToTag.bind(this);\n this.unlinkProductFromTag = this.unlinkProductFromTag.bind(this);\n }\n linkProductToTag(product) {\n this.setState(\n (prevState) => {\n let index = prevState.products.findIndex(({ id }) => id === product.id);\n if (index === -1) {\n index = prevState.products.length;\n }\n let products = [...prevState.products];\n products.splice(\n index,\n 1,\n Object.assign({}, product, { _status: \"adding\" })\n );\n return { products };\n },\n () => {\n let api = new API({ url: `/catalogue-service/product/${product.id}` });\n api\n .get()\n .then((response) => Promise.resolve(response.data.product))\n .then((product) => {\n let tags = product.tags || [];\n delete product.tags;\n let tagIds = tags.map(({ id }) => id);\n let promise = null;\n let index = tagIds.indexOf(this.props.tagId);\n if (index === -1) {\n tagIds.push(this.props.tagId);\n promise = api.put(Object.assign({}, product, { tagIds }));\n } else {\n promise = Promise.resolve();\n }\n promise.then(() => {\n this.setState((prevState) => {\n let products = [...prevState.products];\n let index = products.findIndex(({ id }) => id === product.id);\n let selectedProduct = Object.assign({}, products[index], {\n _status: \"added\",\n });\n products.splice(index, 1, selectedProduct);\n return { products };\n });\n });\n })\n .catch((err) => {\n console.error(err);\n handleError(err);\n this.setState((prevState) => {\n let products = [...prevState.products];\n let index = products.findIndex(({ id }) => id === product.id);\n let selectedProduct = Object.assign({}, products[index], {\n _status: \"failed\",\n });\n products.splice(index, 1, selectedProduct);\n return { products };\n });\n });\n }\n );\n }\n unlinkProductFromTag(product) {\n this.setState(\n (prevState) => {\n let index = prevState.products.findIndex(({ id }) => id === product.id);\n if (index === -1) {\n index = prevState.products.length;\n }\n let products = [...prevState.products];\n products.splice(\n index,\n 1,\n Object.assign({}, product, { _status: \"removing\" })\n );\n return { products };\n },\n () => {\n let api = new API({ url: `/catalogue-service/product/${product.id}` });\n api\n .get()\n .then((response) => Promise.resolve(response.data.product))\n .then((product) => {\n let tags = product.tags || [];\n delete product.tags;\n let tagIds = tags.map(({ id }) => id);\n let promise = null;\n let index = tagIds.indexOf(this.props.tagId);\n if (index > -1) {\n tagIds.splice(index, 1);\n promise = api.put(Object.assign({}, product, { tagIds }));\n } else {\n promise = Promise.resolve();\n }\n promise.then(() => {\n this.setState((prevState) => {\n let products = [...prevState.products];\n let index = products.findIndex(({ id }) => id === product.id);\n products.splice(index, 1);\n return { products };\n });\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n );\n }\n render() {\n const { Form } = this.components;\n const statusButtonTexts = {\n added: getMessage(\"tag.linkToProduct.product.action.remove\"),\n failed: getMessage(\"tag.linkToProduct.product.action.retry\"),\n };\n return (\n <Form className=\"product-linking-form\">\n <ProductSearch\n label=\"Product\"\n value={this.getState([\"products\"])}\n getVariantData={false}\n onChange={this.linkProductToTag}\n />\n <div>\n {this.state.products.map((product) => (\n <div\n className={`product-row status-${product._status}`}\n onClick={() => {\n switch (product._status) {\n case \"added\":\n this.unlinkProductFromTag(product);\n break;\n case \"failed\":\n this.linkProductToTag(product);\n break;\n default:\n break;\n }\n }}\n key={product.id}\n >\n <div className=\"product-name\">{product.name}</div>\n <div className=\"action-text\">\n {statusButtonTexts[product._status] || \"\"}\n </div>\n </div>\n ))}\n </div>\n </Form>\n );\n }\n}\n","import React, { Component } from \"react\";\nimport {\n Checkbox,\n SingleDatePicker,\n TimePicker,\n} from \"../../../../components/Form\";\nimport Upload from \"../../../../components/FileUpload\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport csvIcon from \"./csv-icon.svg\";\nimport uploadIcon from \"./import-customers.svg\";\nimport infoIcon from \"./info-icon.svg\";\nimport sampleTags from \"./sample-tags.csv\";\nimport moment from \"moment\";\nimport { localTimeToUtc, getStandradDateTime } from \"../../../../lib/datetime\";\n\nimport \"./style.css\";\n\nfunction downloadCsv() {\n var hiddenElement = document.createElement(\"a\");\n hiddenElement.href = sampleTags;\n hiddenElement.target = \"_blank\";\n hiddenElement.download = \"sample-tags.csv\";\n hiddenElement.click();\n}\n\nexport default class TagsImport extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isScheduled: false,\n };\n this.getSampleCsv = this.getSampleCsv.bind(this);\n this.transformSubmit = this.transformSubmit.bind(this);\n }\n\n getSampleCsv(e) {\n e.preventDefault();\n downloadCsv();\n }\n transformSubmit(data) {\n // let data = Object.assign({}, fileData)\n if (\n this.state.isScheduled &&\n this.state.scheduleDate &&\n this.state.scheduleTime\n ) {\n let dateTime = moment().add(5, \"minutes\");\n let selectedDateTime = moment(\n this.state.scheduleDate + \" \" + this.state.scheduleTime\n );\n dateTime = selectedDateTime > dateTime ? selectedDateTime : dateTime;\n\n dateTime = getStandradDateTime(\n localTimeToUtc,\n dateTime.format(\"YYYY-MM-DD HH:mm\")\n );\n const formattedTimestamp = dateTime?.slice(0, -3);\n data.append(\"scheduledDateTime\", formattedTimestamp);\n }\n return data;\n }\n\n render() {\n return (\n <div className=\"product-upload\">\n <div className=\"bordered-box\">\n <div className=\"text-center\">\n <img src={uploadIcon} width=\"140\" alt=\"\" />\n </div>\n <Upload\n name=\"tagsImport\"\n accept=\".csv, text/csv, text/comma-separated-values, application/csv, application/excel, application/vnd.ms-excel, application/vnd.msexcel\"\n placeholder={getMessage(\"productUpload.uploadFileText\")}\n uploadButtonText=\"Upload\"\n cancelText=\"Cancel\"\n uploadKey=\"uploadfile\"\n uploadUrl={this.props.uploadUrl}\n validationStrings={{\n invalidFileType: getMessage(\"input.invalidFileType\"),\n }}\n transformSubmit={this.transformSubmit}\n strings={{\n defaultMessage: getMessage(\"fileUpload.importCsv.heading\"),\n progressMessage: getMessage(\"fileUpload.importedCsv.heading\"),\n completionMessage: getMessage(\"customer.tags.import.successText\"),\n }}\n icon={csvIcon}\n />\n <div className=\"cx-import-tooltip\">\n <img src={infoIcon} alt=\"note\" />\n NOTE\n <div className=\"tooltiptext\">\n <div className=\"tooltip-title\">Note:</div>\n <div className=\"instruction\">\n * The column 'action' takes the values 'A' or 'D', for\n add/delete{\" \"}\n </div>\n </div>\n </div>\n </div>\n <div className=\"text-center download-sample-text\">\n <button className=\"download-link\" onClick={this.getSampleCsv}>\n {getMessage(\"productUpload.csvDownloadText\")}\n </button>\n </div>\n <div className=\"text-center schedule-checkbox\">\n <Checkbox\n className=\"entity-checkbox\"\n inlineLabel={`Schedule later`}\n name={`isScheduled`}\n value={this.state.isScheduled}\n onChange={() => {\n this.setState({ isScheduled: !this.state.isScheduled });\n }}\n />\n </div>\n {this.state.isScheduled && (\n <div className=\"dateTimeSelect\">\n <SingleDatePicker\n enableToday\n name=\"scheduleDate\"\n key=\"scheduleDate\"\n label={getMessage(\"Select Date\")}\n value={this.state.scheduleDate}\n onChange={(v) => this.setState({ scheduleDate: v })}\n />\n <TimePicker\n name=\"scheduleTime\"\n key=\"scheduleTime\"\n label={getMessage(\"Select Time\")}\n placeholder={getMessage(\"offer.time.placeholder\")}\n value={this.state.scheduleTime}\n onChange={(v) => this.setState({ scheduleTime: v })}\n showSecond={false}\n minuteStep={15}\n />\n </div>\n )}\n </div>\n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport TagForm from \"./Form\";\nimport TagFilters from \"./Filters\";\nimport ProductLinkingForm from \"./ProductLinkingForm\";\nimport { Popup } from \"../../../components/Popup\";\nimport { getMessage } from \"../../../lib/translator\";\nimport TagsImport from \"./TagsImport\";\nimport { getSession } from \"../../../lib/auth\";\nimport { get } from \"../../../lib/storage\";\nimport API from \"../../../lib/api\";\nimport { IS_STAGING } from \"../../../config/app\";\n\nimport \"./style.css\";\n\nimport emptyIcon from \"./tags-empty.svg\";\nimport Image from \"../../../components/Image\";\n\nconst readBasicConfig = () => {\n let config = window.localStorage.getItem(\"config-basic\");\n if (config) {\n return JSON.parse(config);\n } else {\n return null;\n }\n};\n\nconst emptyState = {\n icon: emptyIcon,\n message: getMessage(\"tag.helpItems.message\"),\n actions: ({ onAction }) => (\n <button\n className=\"primary button\"\n onClick={() => {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n + {getMessage(\"tag.add.text\")}\n </button>\n ),\n};\n\nconst tableProperties = () => {\n return {\n headers: [\n getMessage(\"tag.header.image\"),\n getMessage(\"tag.header.tag\"),\n getMessage(\"tag.header.productCount\"),\n getMessage(\"tag.header.actions\"),\n ],\n row: class TagsTableRow extends Component {\n constructor(props) {\n super(props);\n this.state = {\n productLinkingForm: false,\n };\n\n this.domain = getSession().organization.domain;\n this.config = readBasicConfig();\n this.isHttpsEnabled = JSON.parse(get(\"organization\")).httpsEnabled;\n this.isEnterprise = JSON.parse(get(\"organization\")).isEnterprise;\n this.showLinkingForm = this.showLinkingForm.bind(this);\n this.hideLinkingForm = this.hideLinkingForm.bind(this);\n }\n showLinkingForm() {\n this.setState({ productLinkingForm: true });\n }\n hideLinkingForm() {\n this.setState({ productLinkingForm: false });\n }\n render() {\n const { id, name, productsCount, onAction, image, slug } = this.props;\n return (\n <Row>\n <Cell>\n <Image size=\"sm\" src={image} bordered alt=\"tag-image\" />\n </Cell>\n <Cell>\n <span\n className=\"tag-name\"\n onClick={() => {\n onAction(TABLE_ACTIONS.EDIT, { id });\n }}\n >\n {name}\n </span>\n </Cell>\n <Cell className=\"product-count\">\n <span className=\"text-muted\">\n <span className=\"tag-header-mobileview\">{`${getMessage(\n \"brand.header.productCount\"\n )}: `}</span>\n <small className=\"tag-product-count\">{`${productsCount}`}</small>\n </span>\n </Cell>\n <Cell className=\"tag-actions\">\n <Popup\n show={this.state.productLinkingForm}\n close={this.hideLinkingForm}\n heading={getMessage(\"tag.action.linkToProduct.heading\", {\n name,\n })}\n >\n <ProductLinkingForm\n onSubmit={this.linkProductToTag}\n tagId={id}\n />\n </Popup>\n <DropDown icon={<img src={ICONS.VELLIP} alt=\"â‹®\" />}>\n <DropDownItem\n onClick={() => {\n onAction(TABLE_ACTIONS.EDIT, { id });\n }}\n >\n {getMessage(\"tag.action.edit\")}\n </DropDownItem>\n <DropDownItem\n onClick={() => {\n onAction(TABLE_ACTIONS.DELETE, { id });\n }}\n >\n {getMessage(\"tag.action.delete\")}\n </DropDownItem>\n <DropDownItem onClick={this.showLinkingForm}>\n {getMessage(\"tag.action.linkToProduct\")}\n </DropDownItem>\n <DropDownItem>\n <Link to={`/catalogue/products?tagId=${id}`}>\n {getMessage(\"tag.action.seeProducts\")}\n </Link>\n </DropDownItem>\n <DropDownItem>\n <a\n href={`${\n IS_STAGING\n ? \"http://\"\n : this.isEnterprise\n ? \"https://\"\n : this.isHttpsEnabled\n ? \"https://\"\n : \"http://\"\n }${\n (this.config && this.config.frontendUrl) || this.domain\n }/tag/${slug}`}\n target={\"_blank\"}\n rel=\"noopener noreferrer\"\n >\n {getMessage(\"tag.action.viewOnWebsite\")}\n </a>\n </DropDownItem>\n </DropDown>\n </Cell>\n </Row>\n );\n }\n },\n };\n};\nclass ImportAction extends Component {\n constructor(props) {\n super(props);\n this.state = {\n modalShown: false,\n };\n this.hideModal = this.hideModal.bind(this);\n }\n\n hideModal() {\n this.setState({\n modalShown: false,\n });\n }\n\n render() {\n return (\n <div className=\"import-tags-button\">\n {this.state.modalShown && (\n <Popup\n heading={getMessage(\"Import Tags\")}\n show={this.state.modalShown}\n close={this.hideModal}\n className=\"tags-import-popup\"\n >\n <TagsImport uploadUrl=\"/catalogue-service/product-tag-file\" />\n </Popup>\n )}\n <button\n className=\"primary button\"\n onClick={(e) => {\n this.setState({\n modalShown: true,\n });\n }}\n >\n + <span className=\"text\">{getMessage(\"Import Tags\")}</span>\n </button>\n </div>\n );\n }\n}\n\nexport default class Tags extends Component {\n componentDidMount() {\n const api = new API({ url: `/config-service/config/basic` });\n api\n .get()\n .then((res) => {\n let data = res.data && res.data.basic;\n window.localStorage.setItem(\"config-basic\", JSON.stringify(data));\n })\n .catch((err) => {\n console.error(err);\n if (err.code === 401) throw err;\n });\n }\n render() {\n let props = this.props;\n return (\n <ListingPage\n menu={props.menu}\n className=\"tags-page\"\n title={getMessage(\"tag.heading\")}\n addHeading={getMessage(\"tag.add.text\")}\n editHeading={getMessage(\"tag.edit.text\")}\n api={{\n url: \"/catalogue-service/tag\",\n transform: (response) => response.data.tag,\n }}\n showLanguageDropDown\n emptyState={emptyState}\n tableProperties={tableProperties(this.state && this.state.isMobileView)}\n headerActions={({ onAction }) => (\n <React.Fragment>\n <ImportAction />\n <button\n className=\"primary button\"\n onClick={() => {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n + <span className=\"text\">{getMessage(\"tag.add.text\")}</span>\n </button>\n </React.Fragment>\n )}\n form={{\n component: TagForm,\n allowDelete: true,\n transformSubmit: (formData) => {\n let data = Object.assign({}, formData);\n data.name = data.name.trim();\n delete data.productsCount;\n return data;\n },\n }}\n filters={{\n component: TagFilters,\n }}\n />\n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n VALIDATION_TYPES,\n ProductSearch,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nimport \"./style.css\";\nimport Table, { Header, Row, Cell } from \"../../../../components/Table\";\nimport { getProductImage, getProductName } from \"../../../../lib/commonlyused\";\nimport Image from \"../../../../components/Image\";\nimport DeleteIcon from \"./delete.svg\";\n\nconst ProductList = (props) => {\n const { products, onDelete } = props;\n return (\n <Table>\n {(products || []).length > 0 && (\n <Header>\n <Cell>{getMessage(\"Image\")}</Cell>\n <Cell>{getMessage(\"Name\")}</Cell>\n <Cell />\n </Header>\n )}\n {(products || []).map((product, index) => (\n <Row className=\"pdt-row\" key={product.id}>\n <Cell>\n <Image size=\"sm\" src={getProductImage(product)} />\n </Cell>\n <Cell>{getProductName(product)}</Cell>\n <Cell>\n <button\n className=\"del-button\"\n type=\"button\"\n onClick={() => onDelete(index)}\n >\n <img src={DeleteIcon} alt=\"delete\" />\n </button>\n </Cell>\n </Row>\n ))}\n </Table>\n );\n};\n\nexport default class SubstitutionGroupForm extends BaseForm {\n constructor(props) {\n super(props);\n this.delete = this.delete.bind(this);\n this.changeStatus = this.changeStatus.bind(this);\n this.addProduct = this.addProduct.bind(this);\n this.onDelete = this.onDelete.bind(this);\n }\n\n delete() {\n this.props.onDelete();\n }\n\n changeStatus(status) {\n const { value } = this.props;\n if (value && value.id) {\n this.props.onSubmit({ id: value.id, status: status });\n }\n }\n\n addProduct(product) {\n let values = JSON.parse(JSON.stringify(this.state.values));\n let pdts = (values.products || []).slice();\n if (pdts.filter((p) => p.id === product[0].id).length > 0) {\n return null;\n }\n pdts.push(product[0]);\n values.products = pdts;\n this.setState({\n values,\n });\n }\n\n onDelete(index) {\n let values = JSON.parse(JSON.stringify(this.state.values));\n let products = values.products;\n products.splice(index, 1);\n values.products = products;\n this.setState({\n values,\n });\n }\n\n render() {\n const { SubmitButton, CancelButton } = this.buttons;\n const { Form } = this.components;\n const { props } = this;\n const { products } = this.state.values;\n return (\n <div className=\"substitution-groups-form\">\n <Form>\n <Input\n label={getMessage(\"substitutionGroup.form.name.heading\")}\n placeholder={getMessage(\"substitutionGroup.form.name.placeholder\")}\n name=\"name\"\n type=\"text\"\n required\n {...this.generateStateMappers({\n stateKeys: [\"name\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n rangeOverflow: getMessage(\"input.rangeOverflow\"),\n rangeUnderflow: getMessage(\"input.rangeUnderflow\"),\n }}\n />\n <Input\n label={getMessage(\n \"substitutionGroup.form.percentageDeviation.heading\"\n )}\n placeholder={getMessage(\n \"substitutionGroup.form.percentageDeviation.placeholder\"\n )}\n name=\"percentage-deviation\"\n type=\"number\"\n required\n min={0}\n max={100}\n {...this.generateStateMappers({\n stateKeys: [\"percentageDeviation\"],\n formatChange: Number,\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n <ProductSearch\n label={\"Product\"}\n getVariantData={false}\n multiple\n name=\"products\"\n onChange={this.addProduct}\n />\n <ProductList products={products} onDelete={this.onDelete} />\n <div className={`form-actions ${props.method}`}>\n <div className=\"form-buttons\">\n <SubmitButton>\n {getMessage(\"substitutionGroup.form.submitText\")}\n </SubmitButton>\n <CancelButton>\n {getMessage(\"substitutionGroup.form.cancelText\")}\n </CancelButton>\n </div>\n </div>\n </Form>\n </div>\n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Radio,\n VALIDATION_TYPES,\n} from \"../../../../components/Form\";\n\nimport { getMessage } from \"../../../../lib/translator\";\n\nexport default class SubstitutionGroupFiltersForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.values.status = \"\";\n }\n render() {\n const { SubmitButton, ClearButton } = this.buttons;\n const { Form } = this.components;\n return (\n <Form>\n <div className=\"form-fields\">\n <Input\n label={getMessage(\"substitutionGroup.filters.name.heading\")}\n placeholder={getMessage(\n \"substitutionGroup.filters.name.placeholder\"\n )}\n name=\"name\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"name\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n <Radio\n label={getMessage(\"substitutionGroup.filters.status.heading\")}\n name=\"status\"\n options={[\n {\n text: getMessage(\"substitutionGroup.filters.status.label.all\"),\n value: \"\",\n },\n {\n text: getMessage(\n \"substitutionGroup.filters.status.label.enabled\"\n ),\n value: \"ENABLED\",\n },\n {\n text: getMessage(\n \"substitutionGroup.filters.status.label.disabled\"\n ),\n value: \"DISABLED\",\n },\n ]}\n {...this.generateStateMappers({\n stateKeys: [\"status\"],\n })}\n />\n </div>\n <SubmitButton>\n {getMessage(\"substitutionGroup.filters.submitText\")}\n </SubmitButton>\n <ClearButton>\n {getMessage(\"substitutionGroup.filters.clearFiltersText\")}\n </ClearButton>\n </Form>\n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport ListingPage from \"../../../containers/ListingPage/listingRouter\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport SubstitutionGroupForm from \"./Form\";\nimport SubstitutionGroupFilters from \"./Filters\";\nimport { Dialog } from \"../../../components/Popup\";\nimport Toggle from \"../../../components/Form/Inputs/Toggle\";\nimport API from \"../../../lib/api\";\nimport { getMessage } from \"../../../lib/translator\";\n\nimport emptyIcon from \"./empty.svg\";\n\nimport \"./style.css\";\n\nconst emptyState = {\n icon: emptyIcon,\n message: getMessage(\"substitutionGroup.helpItems.message\"),\n actions: ({ onAction }) => (\n <Link className=\"primary button\" to=\"/catalogue/substitution-groups/add\">\n + {getMessage(\"substitutionGroup.add.text\")}\n </Link>\n ),\n};\n\nclass TableActions extends Component {\n constructor(props) {\n super(props);\n this.state = {\n statusToggleConfirmation: false,\n };\n this.toggleStatus = this.toggleStatus.bind(this);\n }\n toggleStatus() {\n let { id, status } = this.props;\n status = status === \"ENABLED\" ? \"DISABLED\" : \"ENABLED\";\n let api = new API({ url: `/catalogue-service/substitution-group/${id}` });\n return api\n .put({ id, status })\n .then((response) => {\n this.props.onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n response.data.substitutionGroup\n );\n })\n .then(() => {\n this.setState({ statusToggleConfirmation: false });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n render() {\n const { id, status, onAction } = this.props;\n const toggledAction = status === \"ENABLED\" ? \"disable\" : \"enable\";\n return (\n <div>\n <Dialog\n show={this.state.statusToggleConfirmation}\n title={getMessage(`substitutionGroup.dialogs.${toggledAction}.title`)}\n information={getMessage(\n `substitutionGroup.dialogs.${toggledAction}.message`\n )}\n onOk={this.toggleStatus}\n okText={getMessage(`substitutionGroup.dialogs.confirmText`)}\n close={() => {\n this.setState({ statusToggleConfirmation: false });\n }}\n closeText={getMessage(`substitutionGroup.dialogs.cancelText`)}\n />\n <DropDown icon={<img src={ICONS.VELLIP} alt=\"â‹®\" />}>\n <DropDownItem>\n <Link to={`/catalogue/substitution-groups/edit/${id}`}>\n {getMessage(\"substitutionGroup.action.edit\")}\n </Link>\n </DropDownItem>\n <DropDownItem\n onClick={() => {\n this.setState({ statusToggleConfirmation: true });\n }}\n >\n {getMessage(`substitutionGroup.action.${toggledAction}`)}\n </DropDownItem>\n <DropDownItem\n onClick={() => {\n onAction(TABLE_ACTIONS.DELETE, { id });\n }}\n >\n {getMessage(\"substitutionGroup.action.delete\")}\n </DropDownItem>\n </DropDown>\n </div>\n );\n }\n}\n\nconst tableProperties = (isMobileView) => {\n return {\n headers: [\n getMessage(\"substitutionGroup.header.name\"),\n getMessage(\"substitutionGroup.header.productCount\"),\n getMessage(\"substitutionGroup.header.status\"),\n getMessage(\"substitutionGroup.header.actions\"),\n ],\n row: ({ id, name, image, productsCount, status, onAction }) => (\n <Row>\n <Cell>\n <Link\n className=\"group-name\"\n to={`/catalogue/substitution-groups/edit/${id}`}\n >\n {name}\n </Link>\n </Cell>\n <Cell className=\"product-count\">\n <span className=\"text-muted\">\n <span className=\"substitution-header-mobileview\">{`${getMessage(\n \"brand.header.productCount\"\n )}: `}</span>\n <small className=\"substitution-text-muted\">{`${productsCount}`}</small>\n </span>\n </Cell>\n <Cell className=\"substitutionGroup-status\">\n <small className=\"text-muted not-mobile\">\n {[\"ENABLED\", \"DISABLED\"].indexOf(status) > -1\n ? getMessage(`brand.status.${status.toLowerCase()}`)\n : status}\n </small>\n <Toggle\n className={`${status} only-mobile`}\n name={status}\n value={status === \"ENABLED\"}\n icons={false}\n onChange={() => {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n { status: status === \"ENABLED\" ? \"DISABLED\" : \"ENABLED\" }\n );\n }}\n />\n </Cell>\n <Cell className=\"substitutionGroup-actions\">\n <TableActions id={id} status={status} onAction={onAction} />\n </Cell>\n </Row>\n ),\n };\n};\n\nexport default class SubstitutionGroups extends Component {\n render() {\n let props = this.props;\n return (\n <ListingPage\n menu={props.menu}\n className=\"substitution-groups-page\"\n title={getMessage(\"substitutionGroup.heading\")}\n api={{\n url: \"/catalogue-service/substitution-group\",\n transform: (response) => response.data.substitutionGroup,\n }}\n showLanguageDropDown\n emptyState={emptyState}\n tableProperties={tableProperties(this.state && this.state.isMobileView)}\n headerActions={({ onAction }) => (\n <button className=\"button primary\">\n <Link to=\"/catalogue/substitution-groups/add\" className=\"primary\">\n +{\" \"}\n <span className=\"text\">\n {getMessage(\"substitutionGroup.add.text\")}\n </span>\n </Link>\n </button>\n )}\n form={{\n component: SubstitutionGroupForm,\n transformResponse: (response) => response.data.substitutionGroup,\n transformSubmit: ({ products, ...formData }) => {\n let request = Object.assign({}, formData, {\n productIds: products && products.map(({ id }) => id),\n });\n return request;\n },\n allowDelete: true,\n }}\n filters={{\n component: SubstitutionGroupFilters,\n }}\n />\n );\n }\n}\n","import React, { Component } from \"react\";\nimport Loader from \"../../../../../../components/Loader\";\nimport { AreaChart, Area, Tooltip, XAxis } from \"recharts\";\n\nexport default class SimpleAreaChart extends Component {\n render() {\n if (this.props.chartData) {\n if (this.props.chartData.length > 0) {\n return (\n <div className=\"simple-area-chart\">\n <AreaChart\n width={this.props.width}\n height={this.props.height}\n data={this.props.chartData}\n margin={{ left: 5, right: 5 }}\n >\n <XAxis dataKey=\"name\" />\n <Tooltip />\n <Area\n x={0}\n y={50}\n type=\"monotone\"\n dataKey={this.props.type}\n stroke={\n this.props.chartColor ? this.props.chartColor : \"#8884d8\"\n }\n fill={this.props.chartColor ? this.props.chartColor : \"#8884d8\"}\n />\n </AreaChart>\n </div>\n );\n } else {\n return (\n <div className=\"nodata-warning\">\n <small>No data available</small>\n </div>\n );\n }\n } else {\n return <Loader />;\n }\n }\n}\n","import React, { Component } from \"react\";\nimport SimpleAreaChart from \"./area-chart\";\nimport \"./style.css\";\n\nexport default class AnalyticDisplayWidget extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n chartData: null,\n };\n this.generateChartData = this.generateChartData.bind(this);\n }\n\n generateChartData(dailyusage, type) {\n let keys = Object.keys(dailyusage);\n let splitString = \"total\";\n let propertyType = type;\n if (type.indexOf(splitString) !== -1) {\n type =\n \"Total \" +\n type.slice(1, type.indexOf(splitString)) +\n type.slice(type.indexOf(splitString) + splitString.length, type.length);\n }\n let chartData = [];\n chartData = keys.map((key) => {\n let ob = {};\n ob.name = key;\n ob[type] = dailyusage[key][propertyType];\n return ob;\n });\n return chartData;\n }\n\n componentDidMount() {\n let chartData = this.generateChartData(\n this.props.dailyusage,\n this.props.type\n );\n this.setState({\n chartData: chartData,\n });\n }\n\n componentDidUpdate(prevProps) {\n if (\n prevProps.dailyusage !== this.props.dailyusage ||\n prevProps.type !== this.props.type\n ) {\n let chartData = this.generateChartData(\n this.props.dailyusage,\n this.props.type\n );\n this.setState({\n chartData: chartData,\n });\n }\n }\n\n render() {\n let type = this.props.type;\n let splitString = \"total\";\n if (this.props.type && type.indexOf(splitString) !== -1) {\n type =\n \"Total \" +\n type.slice(1, type.indexOf(splitString)) +\n type.slice(type.indexOf(splitString) + splitString.length, type.length);\n }\n return (\n <section className=\"analytic-display-widget\">\n {(this.props.count === 0 || this.props.count) && (\n <div className=\"top-data\">\n <span>{this.props.count.toLocaleString()}</span>\n <span>{this.props.itemType}</span>\n </div>\n )}\n <SimpleAreaChart\n height={120}\n width={300}\n chartColor={this.props.chartColor}\n chartData={this.state.chartData}\n type={type}\n />\n <div className=\"details\">\n <div>\n <span>\n {(this.props.bottomLeftData === 0 || this.props.bottomLeftData) &&\n this.props.bottomLeftData}\n </span>\n <span>{this.props.bottomLeftType}</span>\n </div>\n <div>\n <span>\n {(this.props.bottomRightData === 0 ||\n this.props.bottomRightData) &&\n this.props.bottomRightData}\n </span>\n <span>{this.props.bottomRightType}</span>\n </div>\n </div>\n </section>\n );\n }\n}\n","import React, { Component } from \"react\";\nimport { BaseForm } from \"../../../../../components/Form\";\nimport \"./style.css\";\nimport { PieChart, Pie, Cell, Sector, Legend } from \"recharts\";\nimport Loader from \"../../../../../components/Loader\";\nimport { getMessage } from \"../../../../../lib/translator\";\n\nfunction validData(data) {\n if (data.length > 0) {\n let val = data.reduce((acc, curr) => acc + curr.value, 0);\n return !!val;\n }\n return false;\n}\n\nconst renderActiveShape = (props) => {\n const RADIAN = Math.PI / 180;\n const {\n cx,\n cy,\n midAngle,\n innerRadius,\n outerRadius,\n startAngle,\n endAngle,\n fill,\n payload,\n percent,\n value,\n } = props;\n const sin = Math.sin(-RADIAN * midAngle);\n const cos = Math.cos(-RADIAN * midAngle);\n const sx = cx + (outerRadius + 10) * cos;\n const sy = cy + (outerRadius + 10) * sin;\n const mx = cx + (outerRadius + 30) * cos;\n const my = cy + (outerRadius + 30) * sin;\n const ex = mx + (cos >= 0 ? 1 : -1) * 22;\n const ey = my;\n const textAnchor = cos >= 0 ? \"start\" : \"end\";\n\n return (\n <g>\n <text x={cx} y={cy} dy={8} textAnchor=\"middle\" fill={fill}>\n {payload.name}\n </text>\n <Sector\n cx={cx}\n cy={cy}\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n startAngle={startAngle}\n endAngle={endAngle}\n fill={fill}\n />\n <Sector\n cx={cx}\n cy={cy}\n startAngle={startAngle}\n endAngle={endAngle}\n innerRadius={outerRadius + 6}\n outerRadius={outerRadius + 10}\n fill={fill}\n />\n <path\n d={`M${sx},${sy}L${mx},${my}L${ex},${ey}`}\n stroke={fill}\n fill=\"none\"\n />\n <circle cx={ex} cy={ey} r={2} fill={fill} stroke=\"none\" />\n <text\n x={ex + (cos >= 0 ? 1 : -1) * 12}\n y={ey}\n textAnchor={textAnchor}\n fill=\"#333\"\n >{`${value}`}</text>\n <text\n x={ex + (cos >= 0 ? 1 : -1) * 12}\n y={ey}\n dy={18}\n textAnchor={textAnchor}\n fill=\"#999\"\n >\n {`${(percent * 100).toFixed(2)}%`}\n </text>\n </g>\n );\n};\n\nclass TwoLevelPieChart extends Component {\n constructor(props) {\n super(props);\n this.state = {\n activeIndex: 0,\n };\n this.getInitialState = this.getInitialState.bind(this);\n this.onPieEnter = this.onPieEnter.bind(this);\n }\n getInitialState() {\n return {\n activeIndex: 0,\n };\n }\n\n onPieEnter(data, index) {\n this.setState({\n activeIndex: index,\n });\n }\n\n render() {\n let COLORS = this.props.colors;\n if (this.props.showLoader) {\n return <Loader />;\n } else {\n if (!validData(this.props.data)) {\n return (\n <div className=\"nodata-warning\">\n <small>No data available</small>\n </div>\n );\n }\n return (\n <PieChart width={600} height={400}>\n <Pie\n activeIndex={this.state.activeIndex}\n activeShape={renderActiveShape}\n data={this.props.data}\n cx={300}\n cy={160}\n innerRadius={75}\n outerRadius={145}\n fill=\"#888d8\"\n onMouseEnter={this.onPieEnter}\n dataKey=\"value\"\n >\n {this.props.data.map((entry, index) => (\n <Cell key={index} fill={COLORS[index % COLORS.length]} />\n ))}\n </Pie>\n <Legend iconType=\"circle\" />\n </PieChart>\n );\n }\n }\n}\n\nfunction formObject(chartData) {\n let keys = Object.keys(chartData);\n let values = Object.values(chartData);\n\n let reqArr = null;\n reqArr = keys.reduce((accumalator, curr, index) => {\n let ob = { value: values[index] };\n if (curr === \"DESKTOP_NA_WEB\") {\n ob.name = getMessage(\"coupon.analytics.pieChart.DESKTOP_NA_WEB\");\n } else if (curr === \"MOBILE_ANDROID_WEB\") {\n ob.name = getMessage(\"coupon.analytics.pieChart.MOBILE_ANDROID_WEB\");\n } else if (curr === \"MOBILE_IOS_WEB\") {\n ob.name = getMessage(\"coupon.analytics.pieChart.MOBILE_IOS_WEB\");\n } else {\n let splitString = curr.split(\"_\");\n let currval = splitString.length > 1 ? splitString.join(\" \") : curr;\n ob.name = currval.charAt(0).toUpperCase() + currval.slice(1);\n }\n accumalator.push(ob);\n return accumalator;\n }, []);\n return reqArr;\n}\n\nexport default class AnalyticPieChart extends BaseForm {\n render() {\n const colors = this.props.colors;\n let reqData = null;\n if (this.props.chartData) {\n reqData = formObject(this.props.chartData);\n }\n\n return (\n <section className=\"analytic-pie-chart\">\n <h5>{this.props.heading}</h5>\n {reqData && (\n <div className=\"piechart-display\">\n <TwoLevelPieChart\n data={reqData}\n colors={colors}\n showLoader={this.state.showLoader}\n />\n </div>\n )}\n </section>\n );\n }\n}\n","import React, { Component } from \"react\";\nimport {\n BarChart,\n Bar,\n XAxis,\n YAxis,\n Tooltip,\n Legend,\n ResponsiveContainer,\n} from \"recharts\";\nimport Loader from \"../../../../../components/Loader\";\n\nexport default class SimpleBarChart extends Component {\n render() {\n if (this.props.showLoader) {\n return <Loader />;\n } else {\n if (this.props.data.length > 0) {\n let bars = this.props.dataKeys.map((dataKey, index) => {\n return (\n <Bar\n barSize={6}\n key={index}\n dataKey={dataKey}\n fill={this.props.colors[index]}\n />\n );\n });\n\n return (\n <ResponsiveContainer height={300} width={\"100%\"}>\n <BarChart\n data={this.props.data}\n margin={{ top: 5, right: 30, left: -20, bottom: 5 }}\n barGap={4}\n barCategoryGap={0}\n >\n <XAxis dataKey=\"Name\" />\n <YAxis allowDecimals={false} />\n <Tooltip />\n <Legend iconType=\"circle\" />\n {bars}\n </BarChart>\n </ResponsiveContainer>\n );\n } else {\n return (\n <div className=\"nodata-warning\">\n <small>No data available</small>\n </div>\n );\n }\n }\n }\n}\n","import React from \"react\";\nimport {\n Radio,\n DateRangePicker,\n BaseForm,\n} from \"../../../../../components/Form\";\nimport SimpleBarChart from \"./simple-bar-chart\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport \"./style.css\";\n\nfunction sortDateArray(data, type) {\n let dates = Object.keys(data);\n let sortedDates = dates.sort(function (a, b) {\n return new Date(b) - new Date(a);\n });\n let reqArr = sortedDates.map(function (eachDate) {\n let newob = {};\n for (var property in data[eachDate][type]) {\n if (data[eachDate][type].hasOwnProperty(property)) {\n let newProperty = \"\";\n if (property === \"DESKTOP_NA_WEB\") {\n newProperty = getMessage(\"coupon.analytics.pieChart.DESKTOP_NA_WEB\");\n } else if (property === \"MOBILE_ANDROID_WEB\") {\n newProperty = getMessage(\n \"coupon.analytics.pieChart.MOBILE_ANDROID_WEB\"\n );\n } else if (property === \"MOBILE_IOS_WEB\") {\n newProperty = getMessage(\"coupon.analytics.pieChart.MOBILE_IOS_WEB\");\n } else {\n let splitString = property.split(\"_\");\n newProperty =\n splitString.length > 1 ? splitString.join(\" \") : property;\n }\n newob[newProperty] = data[eachDate][type][property];\n }\n }\n\n let ob = { Name: eachDate, ...newob };\n return ob;\n });\n\n return reqArr;\n}\n\nfunction fetchingDataKeys(data) {\n let arr = data.map((element, index) => {\n return Object.keys(element);\n });\n\n let dataKeys = [];\n arr.map((element) => {\n return element.map(function (elem) {\n if (elem !== \"Name\" && !dataKeys.includes(elem)) {\n dataKeys.push(elem);\n }\n return dataKeys;\n });\n });\n return dataKeys;\n}\n\nfunction generatingRadioOptions(data) {\n let radioOptions = [{ text: \"All\", value: \"\" }];\n data.map((val) => {\n let value = val.toLowerCase();\n return radioOptions.push({\n text: value.charAt(0).toUpperCase() + value.slice(1),\n value: val,\n });\n });\n\n return radioOptions;\n}\n\nexport default class AnalyticBarChart extends BaseForm {\n constructor(props) {\n super(props);\n\n this.state = {\n values: {\n dateRange: {\n startDate: this.props.startDate,\n endDate: this.props.endDate,\n },\n },\n };\n this.onChange = this.onChange.bind(this);\n }\n\n onChange(dates) {\n let values = JSON.parse(JSON.stringify(this.state.values));\n values.dateRange.startDate = dates && dates.startDate;\n values.dateRange.endDate = dates && dates.endDate;\n\n this.setState({\n values,\n });\n this.props.onChange(values.dateRange);\n }\n\n componentDidUpdate(prevProps) {\n if (\n prevProps.startDate !== this.props.startDate ||\n prevProps.endDate !== this.props.endDate\n ) {\n let values = JSON.parse(JSON.stringify(this.state.values));\n values.dateRange.startDate = this.props.startDate;\n values.dateRange.endDate = this.props.endDate;\n this.setState({\n values,\n });\n }\n }\n\n render() {\n let reqArr = sortDateArray(this.props.chartData, this.props.chartType);\n let dataKeys = fetchingDataKeys(reqArr);\n let radioOptions = generatingRadioOptions(dataKeys);\n let gadgetSelected =\n this.state && this.state.values && this.state.values[\"options-select\"]\n ? this.state.values[\"options-select\"]\n : null;\n\n let filteredData = [];\n if (gadgetSelected && gadgetSelected !== \"\") {\n reqArr.map((item, index) => {\n let ob = {};\n ob.Name = item.Name;\n ob[gadgetSelected] = item[gadgetSelected];\n filteredData[index] = ob;\n return filteredData;\n });\n } else {\n filteredData = reqArr;\n }\n\n return (\n <section className=\"analytic-bar-chart\">\n <header>\n <h5>{this.props.heading}</h5>\n </header>\n <div className=\"filter\">\n <div className=\"date-selector\">\n <DateRangePicker\n openDirection=\"up\"\n minimumNights={0}\n isOutsideRange={(date) => date > new Date()}\n label={getMessage(\"coupon.analytics.selectDates.heading\")}\n {...this.generateStateMappers({\n stateKeys: [\"dateRange\"],\n })}\n onChange={this.onChange}\n />\n <input\n className=\"primary\"\n type=\"submit\"\n value=\"Submit\"\n onClick={() =>\n this.props.onClickSubmit({\n startDate: this.state.values.dateRange\n ? this.state.values.dateRange.startDate\n : null,\n endDate: this.state.values.dateRange\n ? this.state.values.dateRange.endDate\n : null,\n })\n }\n />\n </div>\n <div className=\"options-selector\">\n <Radio\n label={getMessage(\"coupon.analytics.status.heading\")}\n options={radioOptions}\n name=\"options-select\"\n {...this.generateStateMappers({\n stateKeys: [\"options-select\"],\n })}\n />\n </div>\n </div>\n <SimpleBarChart\n data={filteredData}\n showLoader={this.props.barChartLoader}\n dataKeys={dataKeys}\n colors={this.props.colors}\n />\n </section>\n );\n }\n}\n","import React, { Component } from \"react\";\nimport moment from \"moment\";\nimport AuthenticatedPage from \"../../../../containers/AuthenticatedPage/index\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport API from \"../../../../lib/api\";\nimport AnalyticDisplayWidget from \"./analytic-display-widget\";\nimport AnalyticPieChart from \"./analytic-pie-chart\";\nimport AnalyticBarChart from \"./analytic-bar-chart\";\nimport \"./style.css\";\nimport Loader from \"../../../../components/Loader\";\nimport { Dialog } from \"../../../../components/Popup\";\nimport checkHttpResponseCode from \"../../../../utils/isApiCallSuccessfull\";\n\nfunction activeFor(startDate, expiryDate) {\n let momentExpiryDate = moment(expiryDate);\n let start = moment(startDate);\n if (!expiryDate || momentExpiryDate.isAfter(moment())) {\n let end = moment(new Date());\n return end.diff(start, \"days\");\n } else {\n let start = moment(startDate);\n return momentExpiryDate.diff(start, \"days\");\n }\n}\n\nfunction calDiscountToday(data) {\n let totalDiscount = 0;\n let today = new Date().toISOString().split(\"T\")[0];\n if (data.hasOwnProperty(today)) {\n totalDiscount = data[today].totalDiscount;\n }\n return totalDiscount;\n}\n\nfunction calDiscountForWeek(data) {\n let totalDiscountForWeek = 0;\n for (let i = 0; i < 7; i++) {\n let date = moment(new Date());\n let dateFormat = date.subtract(i, \"days\").format(\"YYYY-MM-DD\");\n if (data.hasOwnProperty(dateFormat)) {\n totalDiscountForWeek = data[dateFormat].totalDiscount;\n }\n }\n return totalDiscountForWeek;\n}\n\nfunction calPurchaseToday(data) {\n let totalPurchase = 0;\n let today = moment(new Date()).format(\"YYYY-MM-DD\");\n if (data.hasOwnProperty(today)) {\n totalPurchase = data[today].totalOrderAmount;\n }\n\n return totalPurchase;\n}\n\nfunction calPurchaseForWeek(data) {\n let totalPurchaseForWeek = 0;\n for (let i = 0; i < 7; i++) {\n let date = moment(new Date());\n let dateFormat = date.subtract(i, \"days\").format(\"YYYY-MM-DD\");\n if (data.hasOwnProperty(dateFormat)) {\n totalPurchaseForWeek = data[dateFormat].totalOrderAmount;\n }\n }\n return totalPurchaseForWeek;\n}\n\nexport default class CouponAnalytics extends Component {\n constructor(props) {\n super(props);\n this.api = null;\n this.state = {\n data: null,\n showLoader: true,\n widgetChartData: null,\n apiError: \"\",\n barChartLoader: false,\n errorDialog: false,\n dateRange: {\n startDate: moment().subtract(7, \"d\").format(\"YYYY-MM-DD\"),\n endDate: moment().format(\"YYYY-MM-DD\"),\n },\n };\n this.onClickSubmit = this.onClickSubmit.bind(this);\n this.hideErrorDialog = this.hideErrorDialog.bind(this);\n this.showErrorDialog = this.showErrorDialog.bind(this);\n this.onChange = this.onChange.bind(this);\n }\n\n onChange(dateRange) {\n this.setState({\n dateRange: dateRange,\n });\n }\n\n hideErrorDialog() {\n this.setState({\n errorDialog: false,\n });\n }\n showErrorDialog() {\n this.setState({\n errorDialog: true,\n });\n }\n\n onClickSubmit(params) {\n this.setState({\n barChartLoader: true,\n });\n this.api = new API({\n url: `/promo-service/coupon/${this.props.match.params.id}/analytics?startDate=${params.startDate}&endDate=${params.endDate}`,\n });\n this.api\n .get()\n .then(\n (response) => {\n this.setState({\n data: response.data,\n barChartLoader: false,\n });\n },\n (error) => {\n if (error.message === \"cancelled\") {\n return;\n }\n if (error.code === 401) {\n throw error;\n }\n if (error.code === 403) {\n throw error;\n }\n this.setState(\n {\n apiError: error.message,\n barChartLoader: false,\n },\n () => this.showErrorDialog()\n );\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n componentDidMount() {\n this.api = new API({\n url: `/promo-service/coupon/${this.props.match.params.id}/analytics`,\n });\n this.api\n .get()\n .then(\n (response) => {\n if (\n checkHttpResponseCode(response.code) &&\n response.status === \"SUCCESS\"\n ) {\n this.setState({\n data: response.data,\n showLoader: false,\n });\n }\n },\n (error) => {\n if (error.message === \"cancelled\") {\n return;\n }\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n this.setState(\n {\n apiError: error.message,\n showLoader: false,\n },\n () => this.showErrorDialog()\n );\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n componentWillUnmount() {\n this.api && this.api.cancel();\n }\n\n render() {\n const { menu } = this.props;\n let mainContent = <Loader />;\n if (this.state.data && this.state.data.usage && !this.state.showLoader) {\n let coupon = this.state.data.coupon;\n let usage = this.state.data.usage;\n let activeDays = activeFor(coupon.startDate, coupon.expiryDate);\n let discountToday = calDiscountToday(usage.dailyUsage);\n let discountForWeek = calDiscountForWeek(usage.dailyUsage);\n let purchaseToday = calPurchaseToday(usage.dailyUsage);\n let purchaseForWeek = calPurchaseForWeek(usage.dailyUsage);\n let distinctUsage = usage.distinctUsage;\n\n mainContent = (\n <div>\n <div className=\"display-widget\">\n <AnalyticDisplayWidget\n count={usage.totalUsage}\n itemType={getMessage(\"coupon.table.heading\")}\n bottomLeftData={distinctUsage}\n bottomLeftType={getMessage(\n \"coupon.analytics.uniqueUsers.heading\"\n )}\n bottomRightData={activeDays}\n bottomRightType={getMessage(\"coupon.analytics.activeFor.heading\")}\n chartColor=\"#30b5fb\"\n dailyusage={usage.dailyUsage}\n type=\"totalUsage\"\n />\n <AnalyticDisplayWidget\n count={usage.totalDiscount}\n itemType={getMessage(\"coupon.analytics.totalDiscount.heading\")}\n bottomLeftData={discountToday}\n bottomLeftType={getMessage(\"coupon.analytics.today.heading\")}\n bottomRightData={discountForWeek}\n bottomRightType={getMessage(\"coupon.analytics.thisWeek.heading\")}\n chartColor=\"#53ec94\"\n dailyusage={usage.dailyUsage}\n type=\"totalDiscount\"\n />\n <AnalyticDisplayWidget\n count={usage.totalOrderAmount}\n itemType={getMessage(\"coupon.analytics.totalPurchases.heading\")}\n bottomLeftData={purchaseToday}\n bottomLeftType={getMessage(\"coupon.analytics.today.heading\")}\n bottomRightData={purchaseForWeek}\n bottomRightType={getMessage(\"coupon.analytics.thisWeek.heading\")}\n chartColor=\"#f89898\"\n dailyusage={usage.dailyUsage}\n type=\"totalOrderAmount\"\n />\n </div>\n <div className=\"charts\">\n <div className=\"pie-charts\">\n <div>\n <AnalyticPieChart\n heading={getMessage(\n \"coupon.analytics.paymentDistribution.heading\"\n )}\n colors={[\n \"#7bd49d\",\n \"#80959d\",\n \"#67cbff\",\n \"#eb8181\",\n \"red\",\n \"yellow\",\n \"violet\",\n \"orange\",\n \"purple\",\n \"pink\",\n \"blue\",\n \"darkgreen\",\n ]}\n chartData={usage.paymentDetails}\n />\n </div>\n <div>\n <AnalyticPieChart\n heading={getMessage(\n \"coupon.analytics.deviceDistribution.heading\"\n )}\n colors={[\n \"#7bd49d\",\n \"#80959d\",\n \"#67cbff\",\n \"#eb8181\",\n \"red\",\n \"yellow\",\n \"violet\",\n \"orange\",\n \"purple\",\n \"pink\",\n \"blue\",\n \"darkgreen\",\n ]}\n deviceToggle\n chartData={usage.placedFrom}\n />{\" \"}\n </div>\n </div>\n <div className=\"bar-chart\">\n <AnalyticBarChart\n heading={getMessage(\n \"coupon.analytics.dailyDistribution.heading\"\n )}\n chartData={usage.dailyUsage}\n chartType=\"paymentDetails\"\n colors={[\n \"#7bd49d\",\n \"#80959d\",\n \"#67cbff\",\n \"#eb8181\",\n \"red\",\n \"yellow\",\n \"violet\",\n \"orange\",\n \"purple\",\n \"pink\",\n \"blue\",\n \"darkgreen\",\n ]}\n onClickSubmit={this.onClickSubmit}\n barChartLoader={this.state.barChartLoader}\n index={1}\n {...this.props}\n onChange={this.onChange}\n startDate={this.state.dateRange.startDate}\n endDate={this.state.dateRange.endDate}\n />\n <AnalyticBarChart\n heading={getMessage(\n \"coupon.analytics.dailyDistribution.heading\"\n )}\n chartData={usage.dailyUsage}\n chartType=\"placedFrom\"\n colors={[\n \"#7bd49d\",\n \"#80959d\",\n \"#67cbff\",\n \"#eb8181\",\n \"red\",\n \"yellow\",\n \"violet\",\n \"orange\",\n \"purple\",\n \"pink\",\n \"blue\",\n \"darkgreen\",\n ]}\n onClickSubmit={this.onClickSubmit}\n barChartLoader={this.state.barChartLoader}\n index={2}\n {...this.props}\n onChange={this.onChange}\n startDate={this.state.dateRange.startDate}\n endDate={this.state.dateRange.endDate}\n />\n </div>\n </div>\n <Dialog\n show={this.state.errorDialog}\n information={this.state.apiError}\n close={() => {\n this.hideErrorDialog();\n }}\n closeText={getMessage(\"coupon.dialog.okText\")}\n />\n </div>\n );\n }\n\n return (\n <AuthenticatedPage menu={menu} className=\"coupon-analytics\">\n <h1 className=\"title\">{getMessage(\"coupon.analytics.heading\")}</h1>\n {mainContent}\n </AuthenticatedPage>\n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Row, Cell } from \"../../../../components/Table\";\nimport Image from \"../../../../components/Image\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../../components/DropDown\";\nimport { Link } from \"react-router-dom\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport customerImagePlaceholder from \"./customer-image-placeholder.svg\";\nimport { getPrintableTime } from \"../../../../lib/datetime\";\nimport { hasPermissions } from \"../../../../lib/auth/index\";\nimport { Dialog } from \"../../../../components/Popup\";\nimport API from \"../../../../lib/api\";\nimport { TABLE_ACTIONS } from \"../../../../containers/ListingPage\";\n\nclass CustomerEnableDisableDialog extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showDialog: false,\n submitting: false,\n };\n this.toggleDialog = this.toggleDialog.bind(this);\n this.onSubmit = this.onSubmit.bind(this);\n }\n\n async onSubmit() {\n let id = this.props.id;\n let params = {};\n params[\"status\"] = this.props.status === \"ENABLED\" ? \"DISABLED\" : \"ENABLED\";\n await this.props.onAction(TABLE_ACTIONS.UPDATE, { id }, params);\n this.setState({\n showDialog: false,\n });\n this.props.rerender();\n }\n\n toggleDialog() {\n this.setState((prevState) => {\n return {\n showDialog: !prevState.showDialog,\n };\n });\n }\n\n render() {\n return (\n <div>\n <div onClick={this.toggleDialog}>\n {this.props.status === \"ENABLED\"\n ? getMessage(\"customer.table.actions.disable\")\n : getMessage(\"customer.table.actions.enable\")}\n </div>\n <Dialog\n show={this.state.showDialog}\n title={getMessage(\"customer.reset.password.title\")}\n information={\n this.props.status === \"ENABLED\"\n ? getMessage(\"customer.table.actions.disable.information\")\n : getMessage(\"customer.table.actions.enable.information\")\n }\n onOk={this.onSubmit}\n close={this.toggleDialog}\n closeText={getMessage(\"customer.reset.password.cancelText\")}\n okText={getMessage(\"customer.reset.password.confirmText\")}\n />\n </div>\n );\n }\n}\nclass ResetPassword extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showSuccessDialog: false,\n showPasswordResetDialog: false,\n submitting: false,\n };\n this.showPasswordReset = this.showPasswordReset.bind(this);\n this.closeDialogs = this.closeDialogs.bind(this);\n this.onSend = this.onSend.bind(this);\n }\n onSend() {\n const api = new API({ url: \"/customer-service/reset-password\" });\n let params = {};\n params[\"username\"] = this.props.email;\n\n api\n .post(params)\n .then(\n (response) => {\n this.setState({\n showSuccessDialog: true,\n showPasswordResetDialog: false,\n });\n },\n (error) => {\n this.setState({ formError: error.message });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n showPasswordReset() {\n this.setState({\n showPasswordResetDialog: true,\n });\n }\n closeDialogs() {\n this.setState({\n showSuccessDialog: false,\n });\n }\n render() {\n return (\n <div>\n <span onClick={this.showPasswordReset}>\n {getMessage(\"customer.action.reset.password\")}\n </span>\n <Dialog\n show={this.state.showSuccessDialog}\n className=\"success\"\n information={getMessage(\"customer.save.success.title\")}\n close={this.closeDialogs}\n closeText={getMessage(\"customer.save.success.closeText\")}\n />\n <Dialog\n show={this.state.showPasswordResetDialog}\n title={getMessage(\"customer.reset.password.title\")}\n information={getMessage(\"customer.reset.password.message\")}\n onOk={() => this.onSend()}\n close={() => this.setState({ showPasswordResetDialog: false })}\n closeText={getMessage(\"customer.reset.password.cancelText\")}\n okText={getMessage(\"customer.reset.password.confirmText\")}\n />\n </div>\n );\n }\n}\n\nconst TableView = (page, rerender) => {\n return {\n headers: [\n getMessage(\"customer.table.header.image\"),\n getMessage(\"customer.table.header.name\"),\n getMessage(\"customer.table.header.contact\"),\n getMessage(\"customer.table.header.joinDate\"),\n getMessage(\"customer.table.header.status\"),\n getMessage(\"customer.table.header.actions\"),\n ],\n row: ({\n id,\n image,\n name,\n lastName,\n phones,\n emails,\n status,\n joinedTime,\n lastOrderedOn,\n totalOrders,\n totalAmount,\n onAction,\n }) => {\n const [phone] = phones || []; // Only need the first phone\n const [email] = emails || []; // Only need the first email\n return (\n <Row>\n <Cell className=\"customer-table-image\">\n <Image src={image || customerImagePlaceholder} size=\"sm\" />\n </Cell>\n <Cell className=\"customer-table-name\">\n <Link to={`/${page}/customers/view/${id}`}>\n <span className=\"customer-name\">{name}</span>\n </Link>\n </Cell>\n <Cell className=\"customer-table-contact\">\n <div className=\"text-nowrap\">\n <a href={`tel:${phone && phone.phone ? phone.phone : null}`}>\n {phone && phone.phone ? phone.phone : null}\n </a>\n </div>\n <small className=\"text-nowrap text-muted\">\n {email ? email.email : null}\n </small>\n </Cell>\n <Cell className=\"customer-table-joining\">\n <div className=\"text-nowrap\">\n {joinedTime ? getPrintableTime(joinedTime).split(\",\")[0] : null}\n </div>\n <small className=\"text-muted\">\n {joinedTime ? getPrintableTime(joinedTime).split(\",\")[1] : null}\n </small>\n </Cell>\n <Cell className=\"customer-table-status\">\n <div>{status}</div>\n </Cell>\n <Cell className=\"customer-table-actions\">\n <DropDown icon={<img src={ICONS.VELLIP} alt=\"â‹®\" />}>\n <DropDownItem>\n <CustomerEnableDisableDialog\n status={status}\n id={id}\n onAction={onAction}\n rerender={rerender}\n />\n </DropDownItem>\n <DropDownItem>\n <Link to={`/${page}/customers/view/${id}`}>\n {getMessage(\"product.action.view\")}\n </Link>\n </DropDownItem>\n {hasPermissions(\"customer\", \"reset-password\", \"post\") && (\n <DropDownItem>\n <ResetPassword email={email ? email.email : null} />\n </DropDownItem>\n )}\n </DropDown>\n </Cell>\n </Row>\n );\n },\n };\n};\n\nexport default TableView;\n","import { GO_HOST } from \"../config/app\";\n\nconst is_Domain_Scarlet = () => {\n if (GO_HOST.includes(\"tamimimarkets.com\")) return true;\n return false;\n};\n\nconst is_Staging = () => {\n if (GO_HOST.includes(\"staging\")) return true;\n return false;\n};\n\nconst is_Domain_WSI = () => {\n if (GO_HOST.includes(\"wesellit.ph\")) return true;\n return false;\n};\n\nexport { is_Domain_Scarlet, is_Staging, is_Domain_WSI };\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Select,\n SingleDatePicker,\n Checkbox,\n} from \"../../../../../components/Form\";\nimport { isExtensionEnabled } from \"../../../../../lib/auth\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport API from \"../../../../../lib/api\";\nimport {\n getMinutes,\n getStandradDateTime,\n getPrintableTime,\n utcToLocalTime,\n} from \"../../../../../lib/datetime\";\nimport {\n sortSlots,\n getSelectOrderStatus,\n} from \"../../../../../lib/commonlyused\";\nimport { is_Domain_WSI } from \"../../../../../utils/domainCheck\";\n\nconst paymentModes = [\n {\n text: is_Domain_WSI() ? getMessage(\"cop\") : getMessage(\"order.payment.cod\"),\n value: \"COD\",\n },\n {\n text: getMessage(\"order.payment.online\"),\n value: \"ONLINE\",\n },\n];\n\nconst paymentStatuses = [\n {\n text: getMessage(\"order.payment.pending\"),\n value: \"PENDING\",\n },\n {\n text: getMessage(\"order.payment.paid\"),\n value: \"PAID\",\n },\n {\n text: getMessage(\"order.payment.refund\"),\n value: \"REFUND\",\n },\n];\n\nexport default class OrderFiltersForm extends BaseForm {\n constructor(props) {\n // lastOrderType is being used to track the change in selected orderType\n // As the state is getting mutated, we are not able to get correct prevState\n super(props);\n this.lastOrderType = undefined;\n this.getOrderSlots = this.getOrderSlots.bind(this);\n }\n\n getOrderSlots(orderType) {\n this.slotApi = new API({ url: `/order-service/slot` });\n let params = { paginated: \"false\" };\n if (orderType) {\n params = { ...params, orderType };\n }\n this.setState({ isFetchingSlots: true }, () => {\n this.slotApi\n .get(params)\n .then((response) => {\n let slots = response.data?.slot || [];\n slots = sortSlots(slots);\n let slotOptions = [];\n slots.forEach((slot) => {\n if (slot.type === \"STANDARD\") {\n slotOptions.push({\n text: `${\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n slot.startTime\n }`\n )\n ).split(\",\")[1]\n } - ${\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n slot.endTime\n }`\n )\n ).split(\",\")[1]\n }`,\n value: JSON.stringify({\n startTime: slot.startTime,\n endTime: slot.endTime,\n type: slot.type,\n }),\n });\n } else if (slot.type === \"ASAP\") {\n slotOptions.push({\n text:\n getMessage(\"slots.asap\") +\n \" \" +\n getMinutes(slot.endTime) +\n \" \" +\n getMessage(\"slots.asap.minute\"),\n value: JSON.stringify({\n endTime: slot.endTime,\n type: slot.type,\n }),\n });\n }\n });\n this.setState({\n slotOptions,\n isFetchingSlots: false,\n slotFetchError: undefined,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n });\n }\n\n componentDidMount() {\n this.configApi = new API({ url: \"/account-service/config/order\" });\n this.configApi\n .get()\n .then((response) => {\n let orderTypes = response.data.config.order.orderTypes;\n orderTypes = (orderTypes || []).map((orderType) => {\n return {\n text:\n orderType.split(\"\")[0] +\n orderType\n .toLowerCase()\n .split(\"\")\n .splice(1, orderType.length)\n .join(\"\"),\n value: orderType,\n };\n });\n this.setState({ orderTypes });\n })\n .catch((error) => {\n console.error(error);\n });\n if (isExtensionEnabled(\"DeliverySlots\")) {\n this.getOrderSlots();\n }\n }\n\n // This componentDidUpdate method used to track the change in orderType\n // As inside BaseForm the state is getting mutated, we are not able to compare\n // prevState and current state. This is why lastOrderType variable is introduced\n // to store the last value of orderType. As it does not have any impact on the UI,\n // we are not storing it inside state, thus we can prevent unnecessary render.\n componentDidUpdate(prevProps, prevState) {\n const { values } = this.state;\n if (values && values.orderType !== this.lastOrderType) {\n this.lastOrderType = values.orderType;\n this.getOrderSlots(values.orderType);\n }\n }\n\n componentWillUnmount() {\n this.slotApi && this.slotApi.cancel();\n }\n\n render() {\n const { SubmitButton, ClearButton } = this.buttons;\n const { Form } = this.components;\n const { slotOptions, orderTypes, isFetchingSlots } = this.state;\n return (\n <Form>\n <div className=\"form-fields\">\n <Input\n label={getMessage(\"order.filters.referenceNumber.heading\")}\n placeholder={getMessage(\n \"order.filters.referenceNumber.placeholder\"\n )}\n name=\"referenceNumber\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"referenceNumber\"],\n loseEmphasisOnFill: true,\n })}\n />\n <Input\n label={getMessage(\"order.filters.clientId.heading\")}\n placeholder={getMessage(\"order.filters.clientId.placeholder\")}\n name=\"clientId\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"clientId\"],\n loseEmphasisOnFill: true,\n })}\n />\n <Select\n label={getMessage(\"order.filters.status.heading\")}\n placeholder={getMessage(\"order.filters.status.placeholder\")}\n name=\"status\"\n options={getSelectOrderStatus()}\n {...this.generateStateMappers({\n stateKeys: [\"status\"],\n loseEmphasisOnFill: true,\n })}\n />\n {isExtensionEnabled(\"OnlinePaymentSupport\") && (\n <Select\n label={getMessage(\"order.filters.payment.heading\")}\n placeholder={getMessage(\"order.filters.payment.placeholder\")}\n name=\"paymentMode\"\n options={paymentModes}\n {...this.generateStateMappers({\n stateKeys: [\"paymentMode\"],\n loseEmphasisOnFill: true,\n })}\n />\n )}\n <Select\n label={getMessage(\"order.filters.paymentStatus\")}\n placeholder={getMessage(\"order.filters.paymentStatus.placeholder\")}\n name=\"paymentStatus\"\n options={paymentStatuses}\n {...this.generateStateMappers({\n stateKeys: [\"paymentStatus\"],\n loseEmphasisOnFill: true,\n })}\n />\n <Select\n label={getMessage(\"order.filters.orderType\")}\n placeholder={getMessage(\"order.filters.orderType.placeholder\")}\n name=\"orderType\"\n options={orderTypes}\n {...this.generateStateMappers({\n stateKeys: [\"orderType\"],\n loseEmphasisOnFill: true,\n })}\n />\n {slotOptions && (\n <Select\n label={getMessage(\"order.filters.slot\")}\n placeholder={getMessage(\"order.filters.slot.placeholder\")}\n name=\"orderSlot\"\n options={slotOptions}\n {...this.generateStateMappers({\n stateKeys: [\"slot\"],\n loseEmphasisOnFill: true,\n })}\n disabled={isFetchingSlots}\n title={\n isFetchingSlots\n ? getMessage(\"order.filters.slot.fetchTitle\")\n : undefined\n }\n />\n )}\n <SingleDatePicker\n label={getMessage(\"order.filters.placedOn\")}\n placeholder={getMessage(\"order.filter.placedOn.placeholder\")}\n name=\"placed-on\"\n isOutsideRange\n {...this.generateStateMappers({\n stateKeys: [\"placedOn\"],\n loseEmphasisOnFill: true,\n })}\n />\n <SingleDatePicker\n label={getMessage(\"order.filters.preferredDate\")}\n placeholder={getMessage(\"order.filter.placedOn.placeholder\")}\n name=\"preferred-date\"\n allowAllDates\n {...this.generateStateMappers({\n stateKeys: [\"preferredDate\"],\n loseEmphasisOnFill: true,\n })}\n />\n {isExtensionEnabled(\"PreOrderSupport\") && (\n <Checkbox\n label={getMessage(\"order.filters.preorder\")}\n name={`preorder`}\n className=\"pre-order\"\n {...this.generateStateMappers({\n stateKeys: [\"preorder\"],\n loseEmphasisOnFill: true,\n })}\n controlled\n />\n )}\n </div>\n <SubmitButton>{getMessage(\"order.filters.submitText\")}</SubmitButton>\n <ClearButton>\n {getMessage(\"order.filters.clearFiltersText\")}\n </ClearButton>\n </Form>\n );\n }\n}\n","import React, { Component } from \"react\";\nimport { DropDown, DropDownItem } from \"../DropDown\";\n\nimport \"./style.css\";\nimport icon from \"./icon.svg\";\n\nclass ButtonWithOptions extends Component {\n constructor(props) {\n super(props);\n this.handleClick = this.handleClick.bind(this);\n }\n selectOption(selected) {\n if (this.props.onChange && this.props.options[selected]) {\n this.props.onChange(selected);\n }\n }\n handleClick() {\n this.props.onClick && this.props.onClick();\n }\n render() {\n return (\n <div className=\"ButtonWithOptions\">\n <button className=\"action-button\" onClick={this.handleClick}>\n {this.props.children}\n </button>\n <DropDown icon={<img src={icon} alt=\"v\" />}>\n {this.props.options.map((item, index) => (\n <DropDownItem\n className={this.props.selectedOption === index ? \"selected\" : \"\"}\n key={item}\n onClick={() => {\n this.selectOption(index);\n }}\n >\n {item}\n </DropDownItem>\n ))}\n </DropDown>\n </div>\n );\n }\n}\n\nexport default ButtonWithOptions;\n","import React, { Component } from \"react\";\nimport ButtonWithOptions from \"../../../components/ButtonWithOptions\";\nimport { Popup } from \"../../../components/Popup\";\nimport {\n BaseForm,\n Input,\n Textarea,\n VALIDATION_TYPES,\n} from \"../../../components/Form\";\nimport { getMessage } from \"../../../lib/translator\";\nimport API from \"../../../lib/api\";\nimport Dialog from \"../../../components/Popup/Dialog\";\n\nimport icon from \"./icon.svg\";\nimport \"./style.css\";\n\nclass EmailForm extends BaseForm {\n render() {\n let { Form } = this.components;\n let { SubmitButton } = this.buttons;\n return (\n <Form>\n {this.props.formError && (\n <div className=\"form-error\">{this.props.formError}</div>\n )}\n <Input\n label={getMessage(\"customer.emailWidget.form.subject.heading\")}\n placeholder={getMessage(\n \"customer.emailWidget.form.subject.placeholder\"\n )}\n name=\"subject\"\n type=\"text\"\n required\n {...this.generateStateMappers({\n stateKeys: [\"subject\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n <Textarea\n label={getMessage(\"customer.emailWidget.form.body.heading\")}\n placeholder={getMessage(\"customer.emailWidget.form.body.placeholder\")}\n name=\"body\"\n required\n {...this.generateStateMappers({\n stateKeys: [\"body\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n <SubmitButton>\n {getMessage(\"customer.emailWidget.form.submitText\")}\n </SubmitButton>\n </Form>\n );\n }\n}\n\nclass Email extends Component {\n constructor(props) {\n super(props);\n this.state = {\n selected: 0,\n showForm: false,\n formError: \"\",\n };\n this.showPopup = this.showPopup.bind(this);\n this.closePopup = this.closePopup.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.closeDialog = this.closeDialog.bind(this);\n this.getDefaultIndex = this.getDefaultIndex.bind(this);\n }\n showPopup() {\n this.setState({ showForm: true });\n }\n closePopup() {\n this.setState({ showForm: false, formError: \"\" });\n }\n closeDialog() {\n this.setState({ showDialog: false });\n }\n handleSubmit(form) {\n let params = {};\n params.to =\n this.props.emails &&\n this.props.emails.length &&\n this.props.emails[this.state.selected] &&\n this.props.emails[this.state.selected].email;\n params.transactional = false;\n params.type = \"no-template\";\n params.data = {\n subject: form.subject,\n body: form.body,\n };\n let api = new API({ url: \"/communication-service/email\" });\n return api\n .post(params)\n .then(\n (response) => {\n this.dialogMessage = getMessage(\"customer.details.email.send\");\n this.setState({ showForm: false, showDialog: true, formError: \"\" });\n },\n (error) => {\n this.setState({ formError: error.message });\n if (Number(error.code) === 401) {\n throw error;\n }\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n componentDidMount() {\n this.getDefaultIndex(this.props);\n }\n\n componentWillReceiveProps(nextProps) {\n this.getDefaultIndex(nextProps);\n }\n\n getDefaultIndex({ emails, defaultEmailId }) {\n let index =\n (defaultEmailId &&\n emails &&\n emails.length &&\n emails.findIndex((email) => email.id === defaultEmailId)) ||\n 0;\n index = index > -1 ? index : 0;\n this.setState({ selected: index });\n }\n render() {\n let { selected } = this.state;\n let { emails } = this.props;\n let email =\n emails && emails.length && emails[selected] && emails[selected].email;\n let message = getMessage(\"customer.emailWidget.form.title\");\n return (\n <div className=\"CustomerEmailWidget\">\n <Popup\n show={this.state.showForm}\n className=\"CustomerEmailWidgetPopup\"\n heading={`${message} ${email || \"\"}`}\n close={this.closePopup}\n >\n <EmailForm\n onSubmit={this.handleSubmit}\n formError={this.state.formError}\n />\n </Popup>\n {this.props.showOptions !== false ? (\n <ButtonWithOptions\n options={this.props.emails.map(({ email }) => email)}\n selectedOption={this.state.selected}\n onChange={(selected) => {\n this.setState({ selected });\n }}\n onClick={this.showPopup}\n >\n <img src={icon} alt=\"Email\" />\n </ButtonWithOptions>\n ) : (\n <button className=\"mail-icon\" alt=\"Email\" onClick={this.showPopup} />\n )}\n <Dialog\n className=\"success\"\n show={this.state.showDialog}\n close={this.closeDialog}\n message={this.dialogMessage}\n closeText=\"OK\"\n />\n </div>\n );\n }\n}\n\nEmail.defaultProps = {\n emails: [],\n};\n\nexport default Email;\n","import React, { Component } from \"react\";\nimport ButtonWithOptions from \"../../../components/ButtonWithOptions\";\nimport { Popup } from \"../../../components/Popup\";\nimport {\n BaseForm,\n Select,\n Textarea,\n VALIDATION_TYPES,\n} from \"../../../components/Form\";\nimport { getMessage } from \"../../../lib/translator\";\nimport API from \"../../../lib/api\";\nimport Dialog from \"../../../components/Popup/Dialog\";\n\nimport icon from \"./icon.svg\";\nimport { format, parse } from \"libphonenumber-js\";\n\nimport \"./style.css\";\n\nclass CallForm extends BaseForm {\n render() {\n let { Form } = this.components;\n let { SubmitButton } = this.buttons;\n return (\n <Form>\n {this.props.formError && (\n <div className=\"form-error\">{this.props.formError}</div>\n )}\n <Select\n label={getMessage(\"customer.callWidget.form.reason.heading\")}\n placeholder={getMessage(\n \"customer.callWidget.form.reason.placeholder\"\n )}\n name=\"reason\"\n type=\"text\"\n required\n options={[\n getMessage(\"customer.callWidget.form.reason.lateDelivery\"),\n getMessage(\"customer.callWidget.form.reason.orderEdit\"),\n getMessage(\"customer.callWidget.form.reason.paymentReminder\"),\n getMessage(\"customer.callWidget.form.reason.rescheduling\"),\n getMessage(\"customer.callWidget.form.reason.orderConfirmation\"),\n getMessage(\"customer.callWidget.form.reason.missedCallback\"),\n getMessage(\"customer.callWidget.form.reason.addressClarifiation\"),\n getMessage(\"customer.callWidget.form.reason.internalCall\"),\n getMessage(\"customer.callWidget.form.reason.tripEnquiry\"),\n getMessage(\"customer.callWidget.form.reason.survey\"),\n getMessage(\"customer.callWidget.form.reason.retention\"),\n getMessage(\"customer.callWidget.form.reason.other\"),\n ]}\n {...this.generateStateMappers({\n stateKeys: [\"reason\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n {this.state.values.reason === \"Other\" ? (\n <Textarea\n label={getMessage(\"customer.callWidget.form.otherReason.heading\")}\n placeholder={getMessage(\n \"customer.callWidget.form.otherReason.placeholder\"\n )}\n name=\"otherReason\"\n {...this.generateStateMappers({\n stateKeys: [\"otherReason\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n ) : null}\n <SubmitButton>\n {getMessage(\"customer.callWidget.form.submitText\")}\n </SubmitButton>\n </Form>\n );\n }\n}\n\nclass Call extends Component {\n constructor(props) {\n super(props);\n this.state = {\n selected: 0,\n showForm: false,\n formError: \"\",\n };\n this.showPopup = this.showPopup.bind(this);\n this.closePopup = this.closePopup.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.closeDialog = this.closeDialog.bind(this);\n this.getDefaultIndex = this.getDefaultIndex.bind(this);\n }\n showPopup() {\n this.setState({ showForm: true });\n }\n closePopup() {\n this.setState({ showForm: false, formError: \"\" });\n }\n closeDialog() {\n this.setState({ showDialog: false });\n }\n handleSubmit(form) {\n let params = {};\n params.number =\n this.props.phones &&\n !!this.props.phones.length &&\n this.props.phones[this.state.selected] &&\n this.props.phones[this.state.selected].phone;\n params.transactional = false;\n params.type = \"no-template\";\n if (params.reason === \"Other\" && form.otherReason) {\n params.reason = form.otherReason;\n } else {\n params.reason = form.reason;\n }\n let api = new API({ url: \"/communication-service/call\" });\n return api\n .post(params)\n .then((response) => {\n this.dialogMessage = getMessage(\"customer.details.call.call\");\n this.setState({ showForm: false, showDialog: true });\n })\n .catch((error) => {\n this.setState({ formError: error.message });\n if (Number(error.code) === 401) {\n throw error;\n }\n console.error(error);\n });\n }\n\n componentDidMount() {\n this.getDefaultIndex(this.props);\n }\n\n componentWillReceiveProps(nextProps) {\n this.getDefaultIndex(nextProps);\n }\n\n getDefaultIndex({ phones, defaultPhoneId }) {\n let index =\n (defaultPhoneId &&\n phones &&\n phones.length &&\n phones.findIndex((phone) => phone.id === defaultPhoneId)) ||\n 0;\n index = index > -1 ? index : 0;\n this.setState({ selected: index });\n }\n\n render() {\n let { selected } = this.state;\n let { phones } = this.props;\n let phone =\n phones &&\n phones.length &&\n phones[selected] &&\n phones[selected].phone &&\n Object.keys(parse(phones[selected].phone)).length > 0\n ? format(parse(phones[selected].phone), \"International\")\n : phones[selected].phone;\n let message = getMessage(\"customer.callWidget.form.title\");\n return (\n <div className=\"CustomerCallWidget\">\n <Popup\n show={this.state.showForm}\n heading={`${message} ${phone || \"\"}`}\n close={this.closePopup}\n >\n <CallForm\n onSubmit={this.handleSubmit}\n formError={this.state.formError}\n />\n </Popup>\n {this.props.showOptions !== false ? (\n <ButtonWithOptions\n options={this.props.phones\n .map(({ phone }) => {\n return phone\n ? Object.keys(parse(phone)).length > 0\n ? format(parse(phone), \"International\")\n : phone\n : null;\n })\n .filter((phone) => phone !== null)}\n selectedOption={this.state.selected}\n onChange={(selected) => {\n this.setState({ selected });\n }}\n onClick={this.showPopup}\n >\n <img src={icon} alt=\"Call\" />\n </ButtonWithOptions>\n ) : (\n <button className=\"call-icon\" alt=\"Call\" onClick={this.showPopup} />\n )}\n <Dialog\n className=\"success\"\n show={this.state.showDialog}\n close={this.closeDialog}\n message={this.dialogMessage}\n closeText=\"OK\"\n />\n </div>\n );\n }\n}\n\nCall.defaultProps = {\n phones: [],\n};\n\nexport default Call;\n","import React, { Component } from \"react\";\nimport {\n GoogleMap,\n withGoogleMap,\n withScriptjs,\n Marker,\n Polygon,\n InfoWindow,\n Polyline,\n DirectionsRenderer,\n} from \"react-google-maps\";\nimport { SearchBox } from \"react-google-maps/lib/components/places/SearchBox\";\nimport { DrawingManager } from \"react-google-maps/lib/components/drawing/DrawingManager\";\nimport { MarkerWithLabel } from \"react-google-maps/lib/components/addons/MarkerWithLabel\";\nimport { GOOGLE_MAPS_URL, GOOGLE_MAP_DEFAULT_KEY } from \"../../config/app.js\";\nimport { get } from \"../../lib/storage/index.js\";\n\nclass BaseMap extends Component {\n render() {\n const { props } = this;\n const defaultOptions = props.defaultOptions || null;\n return (\n <GoogleMap\n ref={props.onMapMounted}\n defaultZoom={props.zoom || 10}\n onClick={props.onMapClick || null}\n center={props.center || (props.getCenter && props.getCenter())}\n onBoundsChanged={props.onBoundsChanged}\n defaultOptions={defaultOptions}\n >\n {props.children}\n </GoogleMap>\n );\n }\n}\n\nconst Map = withScriptjs(withGoogleMap(BaseMap));\n\nconst GoogleMaps = (props) => {\n let googleMapURL =\n GOOGLE_MAPS_URL + (get(\"googleMapAPIkey\") || GOOGLE_MAP_DEFAULT_KEY);\n return (\n <Map\n googleMapURL={googleMapURL}\n loadingElement={<div style={{ height: `100%` }} />}\n containerElement={<div className={props.containerClassName} />}\n mapElement={<div style={{ height: `100%` }} />}\n {...props}\n >\n {props.children}\n </Map>\n );\n};\nexport default GoogleMaps;\nexport {\n Marker,\n SearchBox,\n Polygon,\n InfoWindow,\n MarkerWithLabel,\n DrawingManager,\n Polyline,\n DirectionsRenderer,\n};\n","import React, { Component } from \"react\";\nimport GoogleMaps, {\n SearchBox,\n Marker,\n Polygon,\n} from \"../../../../../components/GoogleMaps\";\n\nimport { getMessage } from \"../../../../../lib/translator\";\nimport { getStores } from \"../../../../../lib/auth\";\nimport { get } from \"../../../../../lib/storage\";\nimport MarkerIcon from \"../icon-marker.svg\";\nimport SearchIcon from \"./icon-search.svg\";\n\nfunction drawCircle(point, radius, dir) {\n let d2r = Math.PI / 180; // degrees to radians\n let r2d = 180 / Math.PI; // radians to degrees\n let earthsradius = 6371000; // 6371000 is the radius of the earth in meters\n\n let points = 40; // we will get 40 points that lies on circle's circumference\n\n // find the radius in lat/lng\n let rlat = (radius / earthsradius) * r2d;\n let rlng = rlat / Math.cos(point.lat * d2r);\n\n let extp = [];\n let start = points + 1;\n let end = 0;\n if (dir === 1) {\n start = 0;\n end = points + 1;\n }\n for (let i = start; dir === 1 ? i < end : i > end; i = i + dir) {\n let theta = Math.PI * (i / (points / 2));\n let ey = point.lng + rlng * Math.cos(theta); // center a + radius x * cos(theta)\n let ex = point.lat + rlat * Math.sin(theta); // center b + radius y * sin(theta)\n extp.push({ lat: ex, lng: ey });\n }\n return extp;\n}\n\nclass RadialMapComponent extends Component {\n constructor(props) {\n super(props);\n [\"onMapMounted\", \"onSearchBoxMounted\", \"onPlacesChanged\"].forEach((fn) => {\n this[fn] = this[fn].bind(this);\n });\n this.searchBox = null;\n this.map = null;\n this.state = {\n mapMounted: !!window.google,\n };\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n const { startRadius, endRadius, markerLocation, containerClassName } =\n this.props;\n const stateChanged = this.state.mapMounted !== nextState.mapMounted;\n const radiusChanged =\n startRadius !== nextProps.startRadius ||\n endRadius !== nextProps.endRadius;\n let locationChanged = true;\n if (\n nextProps.markerLocation === markerLocation ||\n (nextProps.markerLocation &&\n markerLocation &&\n nextProps.markerLocation.lat === markerLocation.lat &&\n nextProps.markerLocation.lng === markerLocation.lng)\n ) {\n locationChanged = false;\n }\n const classChanged = containerClassName !== nextProps.containerClassName;\n return stateChanged || radiusChanged || locationChanged || classChanged;\n }\n\n onSearchBoxMounted(ref) {\n this.searchBox = ref;\n }\n\n onMapMounted(ref) {\n this.map = ref;\n if (this.props.searchBox) {\n this.setState({\n mapMounted: true,\n });\n }\n }\n\n onPlacesChanged() {\n const places = this.searchBox.getPlaces();\n const bounds = new window.google.maps.LatLngBounds();\n\n places.forEach((place) => {\n if (place.geometry.viewport) {\n bounds.union(place.geometry.viewport);\n } else {\n bounds.extend(place.geometry.location);\n }\n });\n const nextMarkers = places.map((place) => ({\n position: place.geometry.location,\n }));\n if (nextMarkers[0] && nextMarkers[0][\"position\"]) {\n this.props.setNewLocation(\n nextMarkers[0].position.lat(),\n nextMarkers[0].position.lng()\n );\n }\n }\n\n render() {\n const {\n markerLocation,\n searchBox,\n bounds,\n endRadius,\n startRadius,\n setNewLocation,\n draggable,\n } = this.props;\n let center = markerLocation;\n if (!center || !center.lat || !center.lng) {\n let stores = getStores();\n if (stores && get(\"store\")) {\n let store = stores.filter(\n (store) => Number(store.id) === Number(get(\"store\"))\n )[0];\n if (store && store.latitude && store.longitude) {\n center = {\n lat: Number(store.latitude),\n lng: Number(store.longitude),\n };\n }\n }\n }\n return (\n <GoogleMaps\n center={center}\n onMapMounted={!window.google && this.onMapMounted}\n {...this.props}\n >\n {searchBox && this.state.mapMounted && (\n <SearchBox\n ref={this.onSearchBoxMounted}\n bounds={bounds}\n controlPosition={window.google.maps.ControlPosition.TOP_LEFT}\n onPlacesChanged={this.onPlacesChanged}\n >\n <div className=\"places-search\">\n <input\n type=\"text\"\n placeholder={getMessage(\n \"radial.form.searchLocation.placeholder\"\n )}\n className=\"places-search-input\"\n />\n <img className=\"search-icon\" src={SearchIcon} alt=\"\" />\n </div>\n </SearchBox>\n )}\n <Polygon\n paths={[\n drawCircle(center, endRadius, 1),\n drawCircle(center, startRadius, -1),\n ]}\n defaultOptions={{\n strokeColor: \"#7ac8ed\",\n strokeOpacity: 0.8,\n strokeWeight: 2,\n fillColor: \"#7ac8ed\",\n fillOpacity: 0.35,\n }}\n />\n {center && (\n <Marker\n icon={MarkerIcon}\n draggable={draggable}\n onDragEnd={(e) => {\n setNewLocation(e.latLng.lat(), e.latLng.lng());\n }}\n position={center}\n />\n )}\n </GoogleMaps>\n );\n }\n}\n\nexport { drawCircle };\n\nexport default RadialMapComponent;\n","import React, { Component } from \"react\";\nimport { Marker, InfoWindow } from \"react-google-maps\";\nimport MarkerIcon from \"./icon-marker.svg\";\n\nclass MarkerWithInfo extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isOpen: false,\n };\n this.closeInfoWindow = this.closeInfoWindow.bind(this);\n this.openInfoWindow = this.openInfoWindow.bind(this);\n }\n\n closeInfoWindow() {\n this.setState({\n isOpen: false,\n });\n }\n\n openInfoWindow() {\n this.setState({\n isOpen: true,\n });\n }\n\n render() {\n const { location } = this.props;\n return (\n <Marker\n icon={MarkerIcon}\n position={{\n lat: location.location.lat(),\n lng: location.location.lng(),\n }}\n onMouseOver={this.openInfoWindow}\n onMouseOut={this.closeInfoWindow}\n >\n {this.state.isOpen && (\n <InfoWindow\n defaultOptions={{ disableAutoPan: true }}\n onCloseClick={this.closeInfoWindow}\n >\n <div>\n <strong>{location.pincode}</strong>\n </div>\n </InfoWindow>\n )}\n </Marker>\n );\n }\n}\n\nclass PinCode extends Component {\n constructor(props) {\n super(props);\n this.state = {\n locations: [],\n };\n this.geocodeAddress = this.geocodeAddress.bind(this);\n }\n geocodeAddress(props) {\n const { pincodes } = props;\n let geocoder = new window.google.maps.Geocoder();\n let locations = [];\n let promises = [];\n pincodes &&\n pincodes.forEach((pincode) => {\n let promise = new Promise((resolve, reject) => {\n geocoder.geocode(\n { address: pincode.pincode.toString() },\n (results, status) => {\n if (status === window.google.maps.GeocoderStatus.OK) {\n locations.push({\n location: results[0].geometry.location,\n pincode: pincode.pincode,\n });\n }\n resolve();\n }\n );\n });\n promises.push(promise);\n });\n Promise.all(promises).then(() => {\n this.setState({\n locations,\n });\n });\n }\n componentDidMount() {\n let { pincodes } = this.props;\n if (pincodes) {\n this.geocodeAddress(pincodes);\n }\n }\n render() {\n let { locations } = this.state.locations?.length && this.state;\n let { index } = this.props;\n if (locations) {\n let markersWithInfo =\n locations.length &&\n locations.map((location, pincodeIndex) => {\n return (\n <MarkerWithInfo\n key={\"markerwithinfo\" + index + pincodeIndex}\n location={location}\n />\n );\n });\n return markersWithInfo;\n } else {\n return null;\n }\n }\n}\n\nexport default PinCode;\n","import React, { Component } from \"react\";\nimport GoogleMaps, {\n Marker,\n SearchBox,\n Polygon,\n} from \"../../../components/GoogleMaps\";\nimport { getMessage } from \"../../../lib/translator\";\nimport SearchIcon from \"./icon-search.svg\";\nimport { isExtensionEnabled } from \"../../../lib/auth\";\nimport { drawCircle } from \"../../../pages/settings/DeliveryArea/Maps/RadialMapComponent/index\";\nimport PinCode from \"./pincode/pincode\";\nimport StoreMarker from \"./store-marker.svg\";\n\nconst DeliveryAreas = (props) => {\n const { deliveryAreas, stores } = props;\n const defaultOptions = {\n strokeColor: \"#7ac8ed\",\n strokeOpacity: 0.8,\n strokeWeight: 2,\n fillColor: \"#7ac8ed\",\n fillOpacity: 0.35,\n };\n return (\n deliveryAreas.length &&\n deliveryAreas.map((deliveryArea, index) => {\n if (deliveryArea.configType === \"RADIAL\") {\n let { endRadius, startRadius } = deliveryArea.area;\n return (\n stores &&\n stores.length &&\n stores.map((store, radialIndex) => {\n let lat = Number(store.latitude);\n let lng = Number(store.longitude);\n return (\n <Polygon\n key={\"radial\" + index + radialIndex}\n paths={[\n drawCircle({ lat, lng }, endRadius * 1000, 1),\n drawCircle({ lat, lng }, startRadius * 1000, -1),\n ]}\n defaultOptions={defaultOptions}\n />\n );\n })\n );\n } else if (deliveryArea.configType === \"POLYGON\") {\n const { locations } = deliveryArea.area;\n let locationsArray = locations?.map((location) => {\n let { latitude: lat, longitude: lng } = location;\n return { lat: Number(lat), lng: Number(lng) };\n });\n return (\n <Polygon\n key={\"polygon\" + index}\n path={locationsArray}\n defaultOptions={defaultOptions}\n />\n );\n } else if (deliveryArea.configType === \"PINCODE\") {\n return (\n <PinCode\n key={\"pincode\" + index}\n index={index}\n pincodes={{ pincodes: deliveryArea.area.pincodes }}\n />\n );\n } else {\n return null;\n }\n })\n );\n};\n\nexport default class Map extends Component {\n constructor(props) {\n super(props);\n this.state = {\n location: props.coor,\n mapMounted: !!window.google,\n pincodeLocations: [],\n };\n this._isMounted = true;\n this.geocodeAddress = this.geocodeAddress.bind(this);\n this.onMapMounted = this.onMapMounted.bind(this);\n this.onPlacesChanged = this.onPlacesChanged.bind(this);\n this.onSearchBoxMounted = this.onSearchBoxMounted.bind(this);\n this.setFitBounds = this.setFitBounds.bind(this);\n this.getLatLngPoints = this.getLatLngPoints.bind(this);\n this.getGeoCodeAddress = this.getGeoCodeAddress.bind(this);\n }\n\n componentWillUnmount() {\n this._isMounted = false;\n }\n onMapMounted(ref) {\n this.map = ref;\n if (this._isMounted && !this.state.location) {\n this.geocodeAddress();\n }\n if (this.props.searchBox) {\n this.setState({\n mapMounted: true,\n });\n }\n let { deliveryAreas, isTripPlannerPage } = this.props;\n const isDeliveryAreaExtensionEnabled = isExtensionEnabled(\n \"DeliveryAreaSupport\"\n );\n if (isDeliveryAreaExtensionEnabled && isTripPlannerPage) {\n let pincodesArray =\n deliveryAreas &&\n deliveryAreas.length &&\n deliveryAreas\n .map((deliveryArea) => {\n if (deliveryArea.configType === \"PINCODE\") {\n return deliveryArea.area.pincodes;\n } else {\n return null;\n }\n })\n .filter((pincode) => pincode !== null)\n .reduce((acc, current) => acc.concat(...current), []);\n this.getGeoCodeAddress({ pincodes: pincodesArray });\n this.setFitBounds();\n }\n }\n\n onSearchBoxMounted(ref) {\n this.searchBox = ref;\n }\n\n onPlacesChanged() {\n const places = this.searchBox.getPlaces();\n const bounds = new window.google.maps.LatLngBounds();\n\n places.forEach((place) => {\n if (place.geometry.viewport) {\n bounds.union(place.geometry.viewport);\n } else {\n bounds.extend(place.geometry.location);\n }\n });\n const nextMarkers = places.map((place) => ({\n position: place.geometry.location,\n }));\n if (nextMarkers[0] && nextMarkers[0][\"position\"]) {\n this.props.setNewLocation(\n nextMarkers[0].position.lat(),\n nextMarkers[0].position.lng()\n );\n }\n }\n\n geocodeAddress() {\n let geocoder = new window.google.maps.Geocoder();\n geocoder.geocode({ address: this.props.address }, (results, status) => {\n if (status === window.google.maps.GeocoderStatus.OK) {\n this.setState({\n location: results[0].geometry.location,\n });\n if (this.props.setNewLocation) {\n this.props.setNewLocation(\n results[0].geometry.location.lat(),\n results[0].geometry.location.lng()\n );\n }\n } else if (status === window.google.maps.GeocoderStatus.ZERO_RESULTS) {\n this.props.showError(getMessage(\"googleMaps.zeroResults.error\"));\n this.setState({\n location: null,\n });\n } else {\n console.error(\n `${getMessage(\"googleMaps.addressMap.error\")}: ${status}`\n );\n this.setState({\n location: null,\n });\n }\n });\n }\n\n getGeoCodeAddress(props) {\n const { pincodes } = props;\n if (window.google) {\n let geocoder = new window.google.maps.Geocoder();\n let pincodeLocations = [];\n let promises = [];\n pincodes &&\n pincodes.forEach((pincode) => {\n let promise = new Promise((resolve) => {\n geocoder.geocode(\n { address: pincode.pincode.toString() },\n (results, status) => {\n if (status === window.google.maps.GeocoderStatus.OK) {\n pincodeLocations.push({\n location: results[0].geometry.location,\n });\n }\n resolve();\n }\n );\n });\n promises.push(promise);\n });\n Promise.all(promises).then(() => {\n if (this._isMounted) {\n this.setState({\n pincodeLocations,\n });\n }\n });\n }\n }\n\n getLatLngPoints() {\n let { deliveryAreas, stores, storeId, coor } = this.props;\n let { location } = this.state;\n let points = [];\n if (coor || location) {\n points.push(coor || location);\n }\n if (deliveryAreas && stores && deliveryAreas.length && stores.length) {\n let store = stores.filter((store) => store.id === storeId);\n let { latitude: lat, longitude: lng } = store.length && store[0];\n points.push({ lat: Number(lat), lng: Number(lng) });\n let deliveryAreasPoints = deliveryAreas\n .map((deliveryArea) => {\n if (deliveryArea.configType === \"POLYGON\") {\n const { locations } = deliveryArea.area;\n let locationsArray = locations?.map((location) => {\n let { latitude: lat, longitude: lng } = location;\n return { lat: Number(lat), lng: Number(lng) };\n });\n return locationsArray;\n } else {\n return undefined;\n }\n })\n .filter((point) => point !== undefined);\n points = points.concat(...deliveryAreasPoints);\n let pincodes =\n this.state.pincodeLocations &&\n this.state.pincodeLocations.map(({ location }) => {\n return location;\n });\n points = points.concat(...pincodes);\n }\n return points;\n }\n setFitBounds() {\n if (window.google) {\n let bounds = new window.google.maps.LatLngBounds();\n let points = this.getLatLngPoints();\n for (let i = 0; i < points.length; i++) {\n bounds.extend(points[i]);\n }\n this.map && this.map.fitBounds(bounds);\n }\n }\n\n render() {\n const { location } = this.state;\n let {\n setNewLocation,\n draggable = false,\n searchBox,\n bounds,\n coor,\n isTripPlannerPage,\n stores,\n deliveryAreas,\n storeId,\n } = this.props;\n stores =\n stores &&\n stores.length &&\n stores.filter((store) => {\n return store.id === storeId;\n });\n let storesWithLatLng =\n stores && stores.filter((store) => store.latitude && store.longitude);\n let defaultLatLngs = storesWithLatLng\n ? {\n lat: Number(storesWithLatLng[0].latitude),\n lng: Number(storesWithLatLng[0].longitude),\n }\n : { lat: 12.9178429, lng: 77.6451166 };\n const isDeliveryAreaExtensionEnabled = isExtensionEnabled(\n \"DeliveryAreaSupport\"\n );\n // this.map && this.map.panTo(coor || location || defaultLatLngs)\n return (\n <GoogleMaps\n zoom={15}\n onMapMounted={this.onMapMounted}\n containerClassName=\"address-map\"\n center={coor || location || defaultLatLngs}\n >\n {\n <Marker\n position={coor || location || defaultLatLngs}\n draggable={draggable}\n onDragEnd={(e) => {\n setNewLocation(e.latLng.lat(), e.latLng.lng());\n }}\n zIndex={2}\n />\n }\n {searchBox && this.state.mapMounted && (\n <SearchBox\n ref={this.onSearchBoxMounted}\n bounds={bounds}\n controlPosition={window.google.maps.ControlPosition.TOP_LEFT}\n onPlacesChanged={this.onPlacesChanged}\n >\n <div className=\"places-search\">\n <input\n type=\"text\"\n placeholder={getMessage(\n \"radial.form.searchLocation.placeholder\"\n )}\n className=\"places-search-input\"\n />\n <img className=\"search-icon\" src={SearchIcon} alt=\"\" />\n </div>\n </SearchBox>\n )}\n {isTripPlannerPage && isDeliveryAreaExtensionEnabled && (\n <DeliveryAreas\n deliveryAreas={deliveryAreas || []}\n coor={coor}\n location={location}\n stores={stores || []}\n />\n )}\n {isTripPlannerPage &&\n isDeliveryAreaExtensionEnabled &&\n stores &&\n stores.length &&\n stores.map((store, index) => (\n <Marker\n key={\"marker\" + index}\n icon={StoreMarker}\n position={{\n lat: Number(store.latitude),\n lng: Number(store.longitude),\n }}\n zIndex={1}\n />\n ))}\n </GoogleMaps>\n );\n }\n}\n\nMap.defaultProps = {\n deliveryAreas: [],\n stores: [],\n};\n","import React, { Component } from \"react\";\nimport { Popup } from \"../../../components/Popup\";\nimport { BaseForm } from \"../../../components/Form\";\nimport Map from \"../AddressMap\";\nimport \"./style.css\";\n\nclass AddressForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n formError: \"\",\n };\n this.showError = this.showError.bind(this);\n }\n\n showError(error) {\n this.setState({\n formError: error,\n });\n }\n\n render() {\n let { Form } = this.components;\n const { address } = this.props;\n return (\n <div className=\"address-form\">\n <Form>\n <p>{this.props.address}</p>\n {this.state.formError && (\n <div className=\"form-error\">{this.state.formError}</div>\n )}\n <Map address={address} showError={this.showError} />\n </Form>\n </div>\n );\n }\n}\n\nclass Address extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showForm: false,\n };\n this.showPopup = this.showPopup.bind(this);\n this.hidePopup = this.hidePopup.bind(this);\n }\n\n showPopup() {\n this.setState({\n showForm: true,\n });\n }\n\n hidePopup() {\n this.setState({\n showForm: false,\n });\n }\n\n render() {\n return (\n <div className=\"CustomerAddressWidget\">\n <Popup\n show={this.state.showForm}\n className=\"editPopup map-address\"\n heading=\"Address\"\n close={this.hidePopup}\n >\n <AddressForm address={this.props.address} />\n </Popup>\n <button\n className=\"address-icon\"\n alt=\"address\"\n onClick={this.showPopup}\n />\n </div>\n );\n }\n}\nAddress.defaultProps = {\n address: [],\n};\n\nexport default Address;\n","import React, { Component } from \"react\";\nimport { BaseForm, VALIDATION_TYPES, Textarea } from \"../../../components/Form\";\nimport { getMessage } from \"../../../lib/translator\";\nimport API from \"../../../lib/api\";\nimport ButtonWithOptions from \"../../../components/ButtonWithOptions\";\nimport { Popup } from \"../../../components/Popup\";\nimport Dialog from \"../../../components/Popup/Dialog\";\n\nimport icon from \"./icon.svg\";\nimport { format, parse } from \"libphonenumber-js\";\n\nimport \"./style.css\";\n\nclass SmsForm extends BaseForm {\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n return (\n <div className=\"SmsForm\">\n <Form>\n {this.props.formError && (\n <div className=\"form-error\">{this.props.formError}</div>\n )}\n <Textarea\n label={getMessage(\"customer.details.sms.message\")}\n type=\"text\"\n name=\"content\"\n required\n {...this.generateStateMappers({\n stateKeys: [\"message\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n <div className=\"form-buttons-container\">\n <SubmitButton>\n {getMessage(\"customer.details.sms.submitText.send\")}\n </SubmitButton>\n </div>\n </Form>\n </div>\n );\n }\n}\n\nclass Sms extends Component {\n constructor(props) {\n super(props);\n this.state = {\n selected: 0,\n showForm: false,\n formError: \"\",\n message: \"\",\n };\n this.showPopup = this.showPopup.bind(this);\n this.closePopup = this.closePopup.bind(this);\n this.closeDialog = this.closeDialog.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.getDefaultIndex = this.getDefaultIndex.bind(this);\n }\n showPopup() {\n this.setState({ showForm: true });\n }\n closePopup() {\n this.setState({ showForm: false, formError: \"\" });\n }\n closeDialog() {\n this.setState({ showDialog: false });\n }\n\n componentDidMount() {\n this.getDefaultIndex(this.props);\n }\n\n componentWillReceiveProps(nextProps) {\n this.getDefaultIndex(nextProps);\n }\n\n getDefaultIndex({ phones, defaultPhoneId }) {\n let index =\n (defaultPhoneId &&\n phones &&\n phones.length &&\n phones.findIndex((phone) => phone.id === defaultPhoneId)) ||\n 0;\n index = index > -1 ? index : 0;\n this.setState({ selected: index });\n }\n\n handleSubmit(data) {\n const api = new API({ url: \"/communication-service/SMS\" });\n let params = {};\n params[\"to\"] =\n this.props.phones &&\n !!this.props.phones.length &&\n this.props.phones[this.state.selected] &&\n this.props.phones[this.state.selected].phone;\n params[\"transactional\"] = false;\n params[\"type\"] = \"no-template\";\n params[\"data\"] = {};\n params[\"data\"][\"content\"] = data.message;\n return api\n .post(params)\n .then(\n (response) => {\n this.dialogMessage = getMessage(\"customer.details.sms.send\");\n this.setState({ showForm: false, showDialog: true, formError: \"\" });\n },\n (error) => {\n this.setState({ formError: error.message });\n if (Number(error.code) === 401) {\n throw error;\n }\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n render() {\n let { selected } = this.state;\n let { phones } = this.props;\n let phone =\n phones &&\n phones.length &&\n phones[selected] &&\n phones[selected].phone &&\n Object.keys(parse(phones[selected].phone)).length > 0\n ? format(parse(phones[selected].phone), \"International\")\n : phones[selected].phone;\n let message = getMessage(\"customer.smsWidget.form.title\");\n return (\n <div className=\"CustomerSmsWidget\">\n <Popup\n show={this.state.showForm}\n heading={`${message} ${phone || \"\"}`}\n close={this.closePopup}\n >\n <SmsForm\n onSubmit={this.handleSubmit}\n formError={this.state.formError}\n />\n </Popup>\n {this.props.showOptions !== false ? (\n <ButtonWithOptions\n options={\n this.props.phones &&\n this.props.phones\n .map(({ phone }) => {\n return phone\n ? Object.keys(parse(phone)).length > 0\n ? format(parse(phone), \"International\")\n : phone\n : null;\n })\n .filter((phone) => phone !== null)\n }\n selectedOption={this.state.selected}\n onChange={(selected) => {\n this.setState({ selected });\n }}\n onClick={this.showPopup}\n >\n <img src={icon} alt=\"Sms\" />\n </ButtonWithOptions>\n ) : (\n <button className=\"sms-icon\" alt=\"Sms\" onClick={this.showPopup} />\n )}\n <Dialog\n className=\"success\"\n show={this.state.showDialog}\n close={this.closeDialog}\n message={this.dialogMessage}\n closeText=\"OK\"\n />\n </div>\n );\n }\n}\n\nSms.defaultProps = {\n phones: [],\n};\n\nexport default Sms;\n","import React from \"react\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport { isEnterprise } from \"../../../../../lib/auth\";\n\nimport \"./style.css\";\n\nconst InvoiceSummary = (props) => {\n const { currency, data } = props;\n let {\n shipping = 0.0,\n paid = 0.0,\n couponDiscount = 0.0,\n invoiceAmount = 0.0,\n refundAmount,\n loadedFromInvoice,\n editing = false,\n pendingAmount = 0.0,\n surcharge = 0,\n orderDiscount = [],\n clickAndCollectCharges = 0.0,\n taxBreakdown,\n } = data;\n couponDiscount = Number(couponDiscount);\n paid = Number(paid);\n let paymentAmountText = null;\n pendingAmount = Number(pendingAmount);\n if (!Number(!!refundAmount && Number(refundAmount))) {\n if (invoiceAmount > paid) {\n let amount = (invoiceAmount - paid).toFixed(2);\n if (!editing && pendingAmount >= 0) {\n amount = pendingAmount.toFixed(2);\n }\n paymentAmountText = (\n <div className=\"flex-around payment-amount\">\n <div className=\"text-muted\">\n {getMessage(\"order.details.summary.pendingAmount\")}\n </div>\n <div className=\"payment-pending-amount\">\n <span>{currency.symbol} </span>\n <span className=\"section-value\">{amount}</span>\n </div>\n </div>\n );\n }\n } else {\n paymentAmountText = (\n <div className=\"flex-around payment-amount\">\n <div className=\"text-muted\">\n {getMessage(\"order.details.summary.refundAmount\")}\n </div>\n <div className=\"payment-refund-amount\">\n <span>{currency.symbol} </span>\n <span className=\"section-value\">\n {Number(refundAmount).toFixed(2)}\n </span>\n </div>\n </div>\n );\n }\n\n const orderSlotDiscount = orderDiscount\n .filter(({ reason }) => reason === \"ORDER_SLOT_DISCOUNT\")\n .reduce(\n (totalOrderDiscount, { discount }) =>\n totalOrderDiscount + Number(discount),\n 0\n );\n\n const shippingDiscount = orderDiscount\n .filter(({ reason }) => reason === \"HANDLING_DISCOUNT\")\n .reduce(\n (totalOrderDiscount, { discount }) =>\n totalOrderDiscount + Number(discount),\n 0\n );\n\n const allTaxes = {}; // will Store unique type of taxes\n const reducer = (accumulator, currentValue) =>\n +(+accumulator + +currentValue).toFixed(2); // utility function\n Object.keys(taxBreakdown).forEach((obj) =>\n Object.keys(JSON.parse(obj)).forEach((tax) => {\n if (typeof allTaxes[tax] === \"undefined\") allTaxes[tax] = 1;\n })\n ); // Store unique type of taxes in allTaxes\n let totalTaxValue = new Array(Object.keys(allTaxes).length).fill(0); // will store Total tax amounts for each type of taxes\n const allTaxPercentages = Object.keys(taxBreakdown).map((taxObj) =>\n Object.keys(allTaxes).map((tax) =>\n typeof JSON.parse(taxObj)[tax] === \"undefined\"\n ? 0\n : +JSON.parse(taxObj)[tax]\n )\n ); // Tax percentages (taxObj - stores tax percentage for each tax for a single tax Slab like {cgst: 14, igst: 9} )\n const priceBeforeTax = Object.keys(taxBreakdown).map((taxObj) =>\n (\n (taxBreakdown[taxObj] * 100) /\n ((Object.values(JSON.parse(taxObj)).length > 0\n ? +Object.values(JSON.parse(taxObj)).reduce(reducer)\n : 0) +\n 100)\n ).toFixed(2)\n ); // Calculate Price before tax for each Tax Slab (taxObj)\n const allTaxAmounts = Object.keys(taxBreakdown).map((taxObj, index) =>\n Object.keys(allTaxes).map((tax) =>\n typeof JSON.parse(taxObj)[tax] === \"undefined\"\n ? 0\n : +(priceBeforeTax[index] * (+JSON.parse(taxObj)[tax] / 100)).toFixed(2)\n )\n ); // Tax Amounts\n const netAmounts = Object.values(taxBreakdown);\n allTaxAmounts.forEach((taxes) =>\n taxes.forEach((tax, index) => (totalTaxValue[index] += +tax))\n ); // Calculate Total Tax amounts for each type of Tax\n const zeroTaxes = !Object.keys(allTaxes).length;\n\n return (\n <div className=\"invoice-container\">\n <div className=\"tax-summary\">\n {!isEnterprise() && (\n <table className=\"table\">\n <caption className=\"caption\">\n {getMessage(\"order.details.summary.taxTitle\")}\n </caption>\n <tr className=\"heading-row\">\n {zeroTaxes && (\n <th className=\"heading\">\n %{getMessage(\"order.details.summary.tax\")}\n </th>\n )}\n {Object.keys(allTaxes).map((tax) => (\n <th className=\"heading text-uppercase\">%{tax}</th>\n ))}\n <th className=\"heading\">\n {getMessage(\"order.details.summary.price\")}\n </th>\n {zeroTaxes && (\n <th className=\"heading\">\n {getMessage(\"order.details.summary.taxAmount\")}\n </th>\n )}\n {Object.keys(allTaxes).map((tax) => (\n <th className=\"heading text-uppercase\">\n {currency.symbol} {tax}\n </th>\n ))}\n <th className=\"heading\">\n {getMessage(\"order.details.summary.netAmount\")}\n </th>\n </tr>\n {allTaxPercentages.map((taxes, index) => (\n <tr>\n {zeroTaxes && <td className=\"column\">0%</td>}\n {taxes.map((tax) => (\n <td className=\"column\">{tax} %</td>\n ))}{\" \"}\n {/* Tax Percentages */}\n <td className=\"column\">{`${currency.symbol} ${priceBeforeTax[index]}`}</td>\n {zeroTaxes && (\n <td className=\"column\">{`${currency.symbol}0`}</td>\n )}\n {allTaxAmounts[index].map((taxAmount) => (\n <td className=\"column\">\n {currency.symbol} {+taxAmount.toFixed(2)}\n </td>\n ))}{\" \"}\n {/* Tax Amounts */}\n <td className=\"column\">{`${currency.symbol} ${+netAmounts[\n index\n ].toFixed(2)}`}</td>\n </tr>\n ))}\n <tr>\n {zeroTaxes && <td className=\"column\"></td>}\n {Object.keys(allTaxes).map((tax) => (\n <td className=\"column text-uppercase\"></td>\n ))}\n <td className=\"column\">\n {getMessage(\"order.details.summary.totalTax\")} :\n </td>\n {zeroTaxes && (\n <td className=\"column\">{`${currency.symbol} 0`}</td>\n )}\n {totalTaxValue.map((taxValue) => (\n <td className=\"column\">\n {currency.symbol} {+taxValue.toFixed(2)}\n </td>\n ))}\n <td className=\"column\"></td>\n </tr>\n </table>\n )}\n </div>\n\n <div className=\"invoice-summary\">\n <div className=\"flex-around shipping-charge\">\n <div className=\"text-muted\">\n {props.data.type === \"DELIVERY\"\n ? getMessage(\"order.details.summary.shippingCharge\")\n : getMessage(\"order.details.summary.collectionCharge\")}\n </div>\n <div>\n <span>{currency.symbol} </span>\n <span className=\"section-value\">\n {props.data.type === \"DELIVERY\"\n ? Number(shipping).toFixed(2)\n : Number(clickAndCollectCharges).toFixed(2)}\n </span>\n </div>\n </div>\n {shippingDiscount > 0 && (\n <div className=\"flex-around shipping-discount\">\n <div className=\"text-muted\">\n {props.data.type === \"DELIVERY\"\n ? getMessage(\"order.details.summary.shippingDiscount\")\n : getMessage(\"order.details.summary.collectionDiscount\")}\n </div>\n <div>\n <span>-{currency.symbol} </span>\n <span className=\"section-value\">\n {Number(shippingDiscount || 0).toFixed(2)}\n </span>\n </div>\n </div>\n )}\n {Boolean(surcharge) && (\n <div className=\"flex-around slot-charge\">\n <div className=\"text-muted\">\n {getMessage(\"order.details.summary.slotCharge\")}\n </div>\n <div>\n {surcharge < 0 && <span>-</span>}\n <span>{currency.symbol} </span>\n <span className=\"section-value\">\n {Number(surcharge).toFixed(2)}\n </span>\n </div>\n </div>\n )}\n {orderSlotDiscount > 0 && (\n <div className=\"flex-around slot-discount\">\n <div className=\"text-muted\">\n {getMessage(\"order.details.summary.slotDiscount\")}\n </div>\n <div>\n <span>-{currency.symbol} </span>\n <span className=\"section-value\">\n {Number(orderSlotDiscount).toFixed(2)}\n </span>\n </div>\n </div>\n )}\n {couponDiscount > 0 && (\n <div className=\"flex-around discount-amount\">\n <div className=\"text-muted\">\n {getMessage(\"order.details.summary.coupondiscount\")}\n </div>\n <div>\n <span>-{currency.symbol}</span>\n <span className=\"section-value\">\n {Number(couponDiscount).toFixed(2)}\n </span>\n </div>\n </div>\n )}\n <div className=\"flex-around total-amount\">\n <div className=\"text-muted\">\n {getMessage(\"order.details.summary.totalAmount\")}:\n </div>\n <div>\n <span>{currency.symbol} </span>\n <span className=\"section-value\">{invoiceAmount}</span>\n </div>\n </div>\n {paymentAmountText}\n {loadedFromInvoice && (\n <div className=\"tax-disclaimer\">\n {getMessage(\"order.details.invoice.taxDisclaimer\")}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default InvoiceSummary;\n","import React, { Component } from \"react\";\nimport InvoiceSummary from \"../InvoiceSummary\";\nimport Table, { Header, Row, Cell } from \"../../../../../components/Table\";\nimport Image from \"../../../../../components/Image\";\nimport { ProductSearch } from \"../../../../../components/Form\";\nimport {\n getNestedState,\n updateStateRecursively,\n} from \"../../../../../lib/stateManagement\";\nimport {\n getSession,\n isEnterprise,\n isExtensionEnabled,\n} from \"../../../../../lib/auth\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport { Dialog } from \"../../../../../components/Popup\";\nimport Loader from \"../../../../../components/Loader\";\n\nimport \"./style.css\";\nimport editIcon from \"../edit-icon.svg\";\nimport { truncateToTwoDecimal } from \"../../../../../lib/commonlyused\";\nimport newTag from \"./new-tag.png\";\nimport LShape from \"./L-shape.svg\";\nimport { fetchClientItemLabel } from \"../../../../catalogue/Products/Form\";\n\nconst haveAccess = (orderStatus, action) => {\n if (\n (action === \"PENDING\" && orderStatus === \"PENDING\") ||\n (action === \"PICKING\" &&\n (orderStatus === \"PICKING\" || orderStatus === \"PENDING\"))\n ) {\n return true;\n }\n};\n\nclass OrderItemsView extends Component {\n constructor(props) {\n super(props);\n this.state = this.generateStateFromProps(props, {\n items: [],\n editing: false,\n saving: false,\n error: false,\n productLookup: {},\n // The index of the item in the row that is to be removed\n // Setting this state will show confirmation popup\n itemToRemove: null,\n });\n this.getNestedState = getNestedState.bind(this);\n this.updateStateRecursively = updateStateRecursively.bind(this);\n this.startEditing = this.startEditing.bind(this);\n this.cancelEditing = this.cancelEditing.bind(this);\n this.submitChanges = this.submitChanges.bind(this);\n this.addProductToOrder = this.addProductToOrder.bind(this);\n }\n startEditing() {\n this.setState({ editing: true });\n }\n cancelEditing() {\n this.setState((prevState) =>\n this.generateStateFromProps(this.props, {\n editing: false,\n })\n );\n }\n submitChanges() {\n if (this.props.onChange) {\n // onChange method should return a promise\n this.setState(\n {\n editing: false,\n saving: true,\n },\n () => {\n this.props\n .onChange(this.state.items)\n .then(\n () => {\n this.setState({ error: false });\n },\n () => {\n this.setState({ error: true });\n }\n )\n .then(() => {\n this.setState({ saving: false });\n });\n }\n );\n }\n }\n addProductToOrder(newProduct) {\n if (!newProduct) {\n return;\n }\n // TODO: Find a better way to cause Searchable component to re-render\n this.setState({ productLookup: newProduct }, () => {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState, {\n productLookup: {},\n });\n // Check if new product exists in the order already\n let index = prevState.items.findIndex(\n (product) => product.id === newProduct.id\n );\n if (index > -1) {\n // Product exists, just increase quantity\n let item = prevState.items[index];\n if (item.isSoldByWeight) {\n let unit = item.variant\n ? item.variant.fullName &&\n item.variant.fullName.split(\" \").slice(-1).pop()\n : item.product\n ? item.product.name.split(\" \").slice(-1)[0]\n : \"\";\n unit = unit.toUpperCase();\n let multiplier = unit === \"KG\" || unit === \"L\" ? 1000 : 1;\n let weight = item.variant\n ? item.variant.fullName &&\n item.variant.fullName.split(\" \").slice(-2)[0]\n : item.product\n ? item.product.name.split(\" \").slice(-2)[0]\n : 1;\n weight = Number(weight);\n newState.items[index].orderDetails.orderedQuantity = (\n Number(item.orderDetails.orderedQuantity) +\n multiplier * weight\n ).toFixed(2);\n } else {\n newState.items[index].orderDetails.orderedQuantity = (\n Number(prevState.items[index].orderDetails.orderedQuantity) + 1\n ).toFixed(2);\n }\n } else {\n // Product doesn't exist, create a new entry\n let orderedQuantity = \"1.00\";\n let unit = null;\n let multiplier = 1;\n let weight = 1;\n if (newProduct.soldByWeight) {\n unit = newProduct.name.split(\" \").slice(-1)[0];\n unit = unit.toUpperCase();\n multiplier = unit === \"KG\" || unit === \"L\" ? 1000 : 1;\n weight = newProduct.name.split(\" \").slice(-2)[0];\n weight = Number(weight);\n orderedQuantity = (multiplier * weight).toFixed(2);\n } else {\n orderedQuantity = \"1.00\";\n }\n newState.items = [\n ...prevState.items,\n Object.assign(\n { id: newProduct.id, ...newProduct },\n {\n orderDetails: {\n factorForPutRequest: newProduct.soldByWeight\n ? multiplier * weight\n : 1,\n orderedQuantity,\n discount: (\n Number(newProduct.storeSpecificData.discount) /\n Number(orderedQuantity)\n ).toFixed(2),\n mrp: (\n Number(newProduct.storeSpecificData.mrp) /\n Number(orderedQuantity)\n ).toFixed(2),\n },\n }\n ),\n ];\n }\n return newState;\n });\n });\n }\n removeProductFromOrder(index) {\n this.updateStateRecursively(\n [\"items\", index, \"orderDetails\", \"orderedQuantity\"],\n 0\n );\n this.setState({ itemToRemove: null });\n }\n\n generateStateFromProps(props, state) {\n let newState = Object.assign({}, state, {\n items: [...props.data.items],\n });\n // TODO: Use immutable data structures instead\n return JSON.parse(JSON.stringify(newState));\n }\n componentWillReceiveProps(newProps) {\n if (newProps.data.items) {\n this.setState((prevState) =>\n this.generateStateFromProps(newProps, prevState)\n );\n }\n }\n\n getOfferProductUI = (items, id) => {\n const offObj = items?.find((e) =>\n e?.orderDetails?.offerReason?.orderItemId?.includes(id)\n );\n if (offObj) {\n let name = offObj.fullName || offObj.name;\n return (\n <div className=\"offer-item\">\n <div className=\"sample\">{getMessage(\"order.details.sample\")}</div>\n <small>\n {offObj.brand ? (\n <div className=\"product-name\">\n {\" \"}\n <span className=\"brand-name\">{offObj?.brand?.name}</span> {name}\n </div>\n ) : (\n name\n )}\n </small>\n </div>\n );\n } else return null;\n };\n\n getOfferItems = (items) => {\n const orderItems = items?.filter((item) => item?.orderDetails?.offerReason);\n return orderItems;\n };\n\n render() {\n const currency = this.props.currency;\n const data = this.props.data;\n let invoiceAmount = data && data.invoiceAmount;\n let loadedFromInvoice = this.props.loadedFromInvoice;\n let productsInOrder = this.state.items;\n const isPendingOrCancelledOrPicking =\n this.props.status === \"PENDING\" ||\n this.props.status === \"CANCELLED\" ||\n this.props.status === \"PICKING\";\n const invoiceQuantity = isPendingOrCancelledOrPicking\n ? \"orderedQuantity\"\n : \"deliveredQuantity\";\n let totalMrp = this.state.items.reduce(\n (result, item) =>\n result +\n Number(item.orderDetails.mrp) *\n Number(item.orderDetails[invoiceQuantity]),\n 0\n );\n\n let totalDiscount = this.state.items.reduce(\n (result, item) =>\n result +\n Number(item.orderDetails.discount) *\n Number(item.orderDetails[invoiceQuantity]),\n 0\n );\n\n let totalAmountCalculated = this.state.editing\n ? parseFloat(totalMrp) - parseFloat(totalDiscount)\n : parseFloat(data.amount) - parseFloat(data.discount);\n\n let paidAmount = this.props.data.payment.reduce(\n (result, payment) =>\n result + (payment.status === \"COMPLETED\" ? Number(payment.amount) : 0),\n 0\n );\n\n let overlayClass = \"hidden\";\n if (this.state.saving) {\n overlayClass = \"\";\n } else if (this.state.error) {\n overlayClass = \"error-message\";\n }\n\n let totalTax = 0;\n const taxSlab = {};\n const taxBreakdown = {};\n const editableList = this.props.editableList;\n const orderStatus = this.props.status;\n\n const countryCode = getSession().organization?.countryCode || \"IN\";\n const label = fetchClientItemLabel(countryCode);\n\n const getRow = (item, index, isContainReplaceItem) => {\n const { orderDetails } = item;\n const tax = orderDetails.tax || {};\n\n if (\n loadedFromInvoice &&\n this.props.status === \"COMPLETED\" &&\n !Number(item.orderDetails.deliveredQuantity)\n ) {\n return null;\n }\n let image = item.images && item.images[0] ? item.images[0] : null;\n let mrp = Number(item.orderDetails.mrp);\n let discount = Number(item.orderDetails.discount) || 0;\n\n const storeSpecificData = item?.storeSpecificData?.[0];\n\n let orderedQuantity = item.orderDetails.orderedQuantity;\n let pickedQuantity = Number(item.orderDetails.deliveredQuantity);\n let chargeableQuantity =\n item.orderDetails.status === \"PENDING\" ||\n (item.orderDetails[\"deliveredQuantity\"] === undefined &&\n item.orderDetails.status === undefined)\n ? orderedQuantity\n : pickedQuantity;\n let isSoldByWeight = item.soldByWeight || false;\n let name = item.fullName || item.name;\n let clientItemId = item.clientItemId;\n let comment =\n item &&\n item.orderDetails &&\n item.orderDetails.metaData &&\n item.orderDetails.metaData.comment;\n let isNew = orderDetails?.metaData?.isNew;\n let unit = (name && name.split(\" \").slice(-1).pop()) || \"\";\n unit = unit.toUpperCase();\n let weight = name ? name.split(\" \").slice(-2)[0] : 1;\n let divider = 1;\n let multiplier = 1;\n let smallUnit = \"g\";\n if (unit === \"KG\" || unit === \"L\") {\n smallUnit = unit === \"KG\" ? \" g\" : \" ml\";\n multiplier = weight * 1000;\n divider = weight * 1000;\n }\n if (unit === \"G\" || unit === \"GM\" || unit === \"ML\") {\n multiplier = weight;\n divider = weight;\n }\n if (orderedQuantity === 0) {\n return null;\n }\n\n const amount = (mrp - discount) * chargeableQuantity;\n // To calculate total tax and tax slab\n let temp = 0;\n const taxValues = Object.values(tax);\n for (let i = 0; i < taxValues.length; i += 1) {\n temp += +taxValues[i];\n }\n\n const priceBeforeTax = (amount * 100) / (temp + 100);\n totalTax += amount - priceBeforeTax;\n taxSlab[temp] =\n typeof taxSlab[temp] === \"undefined\" ? amount : taxSlab[temp] + amount;\n\n Object.keys(tax).forEach(\n (taxType) => !tax[taxType] && delete tax[taxType]\n );\n taxBreakdown[JSON.stringify(tax)] =\n typeof taxBreakdown[JSON.stringify(tax)] === \"undefined\"\n ? +amount\n : taxBreakdown[JSON.stringify(tax)] + +amount;\n\n let replaceItems = orderDetails.replaceItems?.[0];\n const offerItems = this.getOfferItems(this.state?.items);\n const sellerName = orderDetails?.metaData?.sellerName || \"\";\n return (\n <>\n <Row key={item.id || `_${index}`}>\n <Cell className=\"item-image\">\n {isContainReplaceItem && (\n <div className=\"l-shape\">\n <img src={LShape} alt=\"l-shape-indent\" />\n </div>\n )}\n {!isContainReplaceItem && isNew && (\n <div className=\"cover-tag\">\n <img src={newTag} alt=\"cover-tag\" className=\"cover-img\" />\n </div>\n )}\n <Image bordered size=\"sm\" src={image} />\n </Cell>\n <Cell className=\"item-name\">\n <div className=\"name-wrp\">\n <small className=\"text-muted\">\n {item.brand ? (\n <div className=\"product-name\">\n {\" \"}\n <span className=\"brand-name\">{item.brand.name}</span>{\" \"}\n {name}\n </div>\n ) : (\n name\n )}\n </small>\n {orderDetails.isFree && (\n <div className=\"sample\">\n {getMessage(\"order.details.sample\")}\n </div>\n )}\n </div>\n {comment && (\n <div className=\"text-muted item-comment\">{comment}</div>\n )}\n {this.getOfferProductUI(\n offerItems,\n item?.orderDetails?.orderItemId\n )}\n </Cell>\n {isExtensionEnabled(\"MarketPlace\") && (\n <Cell className=\"client-item-id text-muted brand-name \">\n {sellerName}\n </Cell>\n )}\n {!loadedFromInvoice && (\n <Cell className=\"client-item-id text-muted\">\n <div className=\"item-table-mobile-view\">{label}</div>\n {clientItemId}\n </Cell>\n )}\n {!loadedFromInvoice && (\n <Cell className=\"item-original text-right\">\n <span className=\"mobile-view-header\">\n {getMessage(\"order.details.itemsTable.header.quantity\")}\n </span>\n <small className=\"text-muted\">\n {this.state.editing ? (\n <input\n type=\"number\"\n placeholder=\"0\"\n min={1}\n step={1}\n value={\n isSoldByWeight\n ? this.getNestedState([\n \"items\",\n index,\n \"orderDetails\",\n \"orderedQuantity\",\n ]) === \"\"\n ? this.getNestedState([\n \"items\",\n index,\n \"orderDetails\",\n \"orderedQuantity\",\n ])\n : parseFloat(\n Number(\n this.getNestedState([\n \"items\",\n index,\n \"orderDetails\",\n \"orderedQuantity\",\n ])\n )\n )\n : !this.getNestedState([\n \"items\",\n index,\n \"orderDetails\",\n \"orderedQuantity\",\n ])\n ? this.getNestedState([\n \"items\",\n index,\n \"orderDetails\",\n \"orderedQuantity\",\n ])\n : Number(\n this.getNestedState([\n \"items\",\n index,\n \"orderDetails\",\n \"orderedQuantity\",\n ])\n ).toFixed(0)\n }\n onChange={(e) => {\n if (e) {\n let updatedValue =\n e.target.value === \"\"\n ? \"\"\n : Math.floor(Math.abs(e.target.value));\n this.updateStateRecursively(\n [\"items\", index, \"orderDetails\", \"orderedQuantity\"],\n updatedValue\n );\n }\n }}\n onBlur={() => {\n let keys = [\n \"items\",\n index,\n \"orderDetails\",\n \"orderedQuantity\",\n ];\n this.updateStateRecursively(\n keys,\n Number(this.getNestedState(keys))\n );\n }}\n />\n ) : isSoldByWeight ? (\n this.props.status !== \"PENDING\" ? (\n (Number(orderedQuantity) / divider).toFixed(2)\n ) : (\n Number(orderedQuantity).toFixed() + smallUnit\n )\n ) : (\n Number(orderedQuantity).toFixed(0)\n )}\n </small>\n </Cell>\n )}\n {loadedFromInvoice && (\n <Cell className=\"item-quantity text-right\">\n <span className=\"mobile-view-header\">\n {getMessage(\"order.details.itemsTable.header.quantity\")}\n </span>\n <small className=\"text-muted\">\n {pickedQuantity\n ? isSoldByWeight\n ? (pickedQuantity / divider).toFixed(3)\n : pickedQuantity.toFixed(0)\n : isSoldByWeight\n ? (Number(orderedQuantity) / divider).toFixed(3)\n : Number(orderedQuantity).toFixed(0)}\n </small>\n </Cell>\n )}\n {!loadedFromInvoice &&\n this.props.status !== \"PENDING\" &&\n this.props.status !== \"CANCELLED\" && (\n <Cell className=\"item-final text-right\">\n <span className=\"mobile-view-header\">\n {getMessage(\"order.details.itemsTable.header.picked\")}\n </span>\n\n <small className=\"text-muted\">\n {pickedQuantity\n ? isSoldByWeight\n ? (pickedQuantity / divider).toFixed(2)\n : pickedQuantity.toFixed(0)\n : 0}\n </small>\n </Cell>\n )}\n {isExtensionEnabled(\"MarketPlace\") && (\n <Cell className=\"item-mrp text-right\">\n <div className=\"mobile-view-header\">\n {getMessage(\"product.dealer.price.header\")}\n </div>\n <small className=\"text-muted\">\n {this.props.currency.symbol}{\" \"}\n {isSoldByWeight\n ? (\n (storeSpecificData?.mrp - storeSpecificData?.discount) *\n multiplier\n ).toFixed(2)\n : (\n storeSpecificData?.mrp - storeSpecificData?.discount\n ).toFixed(2)}\n </small>\n </Cell>\n )}\n <Cell className=\"item-mrp text-right\">\n <div className=\"mobile-view-header\">\n {getMessage(\"order.details.itemsTable.header.mrp\")}\n </div>\n <small className=\"text-muted\">\n {this.props.currency.symbol}{\" \"}\n {isSoldByWeight\n ? (mrp * multiplier).toFixed(2)\n : mrp.toFixed(2)}\n </small>\n </Cell>\n\n {!isEnterprise() && (\n <Cell className=\"item-mrp text-right\">\n {Object.keys(tax).map((key) => {\n if (!tax[key]) {\n return null;\n }\n\n return (\n <div className=\"text-muted\">\n <span className=\"text-uppercase\">{`${key}`}</span>\n {`: ${tax[key]}%`}\n </div>\n );\n })}\n </Cell>\n )}\n\n <Cell className=\"item-discount text-right\">\n <div className=\"mobile-view-header\">\n {getMessage(\"order.details.itemsTable.header.discount\")}\n </div>\n <small className=\"text-muted\">\n {this.props.currency.symbol}{\" \"}\n {isSoldByWeight\n ? (discount * multiplier).toFixed(2)\n : discount.toFixed(2)}\n </small>\n </Cell>\n <Cell className=\"item-amount text-right\">\n <div className=\"mobile-view-header\">\n {getMessage(\"order.details.itemsTable.header.amount\")}\n </div>\n <div className=\"remove-button-container\">\n {this.props.currency.symbol} {amount.toFixed(2)}\n {this.state.editing\n ? !loadedFromInvoice &&\n haveAccess(orderStatus, editableList.isItemRemoval) && (\n <div\n className=\"remove-button\"\n onClick={() => {\n this.setState({ itemToRemove: index });\n }}\n >\n ×\n </div>\n )\n : null}\n </div>\n </Cell>\n </Row>\n {replaceItems && getRow(replaceItems, 0, true)}\n </>\n );\n };\n\n return (\n <div className=\"order-items-view\">\n <Dialog\n show={Number.isFinite(this.state.itemToRemove)}\n title={getMessage(\"order.details.removeItem.title\")}\n information={getMessage(\"order.details.removeItem.message\")}\n onOk={() => {\n this.removeProductFromOrder(this.state.itemToRemove);\n }}\n close={() => {\n this.setState({ itemToRemove: null });\n }}\n closeText={getMessage(\"order.details.removeItem.cancelText\")}\n okText={getMessage(\"order.details.removeItem.confirmText\")}\n />\n <div className=\"flex-around section-title\">\n <h3>\n {getMessage(\"order.details.itemsTable.title\")}\n <span className=\"text-muted\"> ({productsInOrder.length})</span>\n </h3>\n {this.state.editing &&\n haveAccess(orderStatus, editableList.isItemAddition) && (\n <div className=\"product-search\">\n <ProductSearch\n label=\"Product\"\n includeInventory\n name=\"product\"\n onChange={this.addProductToOrder}\n storeId={this.props.storeId}\n />\n </div>\n )}\n {!this.state.editing &&\n this.props.editable &&\n !this.state.saving &&\n !this.state.error && (\n <img\n src={editIcon}\n alt=\"Edit\"\n className=\"edit-icon\"\n onClick={this.startEditing}\n />\n )}\n </div>\n <Table>\n {this.state.error || this.state.saving ? (\n <div className={`message-overlay ${overlayClass}`}>\n {this.state.saving ? (\n <Loader />\n ) : this.state.error ? (\n <div className=\"retry-message\" onClick={this.submitChanges}>\n {getMessage(\"order.details.errors.onSave\")}\n </div>\n ) : (\n \"\"\n )}\n </div>\n ) : null}\n <Header>\n <Cell className=\"item-image\">\n {getMessage(\"order.details.itemsTable.header.image\")}\n </Cell>\n <Cell className=\"item-name\">\n {getMessage(\"order.details.itemsTable.header.name\")}\n </Cell>\n {isExtensionEnabled(\"MarketPlace\") && (\n <Cell className=\"item-name\">\n {getMessage(\"seller.filters.seller.name.heading\")}\n </Cell>\n )}\n {!loadedFromInvoice && <Cell>{label}</Cell>}\n {!loadedFromInvoice && (\n <Cell\n className=\"item-original text-right\"\n abbreviation={getMessage(\n \"order.details.itemsTable.header.quantity.abbreviated\"\n )}\n >\n {getMessage(\"order.details.itemsTable.header.quantity\")}\n </Cell>\n )}\n {loadedFromInvoice && (\n <Cell className=\"item-quantity text-right\">Quantity</Cell>\n )}\n {!loadedFromInvoice &&\n this.props.status !== \"PENDING\" &&\n this.props.status !== \"CANCELLED\" && (\n <Cell className=\"item-final text-right\">\n {\" \"}\n {getMessage(\"order.details.itemsTable.header.picked\")}\n </Cell>\n )}\n {isExtensionEnabled(\"MarketPlace\") && (\n <Cell className=\"item-mrp text-right\">\n {getMessage(\"product.dealer.price.header\")}\n </Cell>\n )}\n <Cell className=\"item-mrp text-right\">\n {getMessage(\"order.details.itemsTable.header.mrp\")}\n </Cell>\n {!isEnterprise() && (\n <Cell className=\"item-mrp text-right\">\n {getMessage(\"order.details.itemsTable.header.tax\")}\n </Cell>\n )}\n <Cell className=\"item-discount text-right\">\n {getMessage(\"order.details.itemsTable.header.discount\")}\n </Cell>\n <Cell className=\"item-amount text-right\">\n {getMessage(\"order.details.itemsTable.header.amount\")}\n </Cell>\n </Header>\n\n {this.state?.items?.map((item, index) => getRow(item, index))}\n\n {productsInOrder.length > 0 && (\n <Row>\n <Cell />\n <Cell />\n {isExtensionEnabled(\"MarketPlace\") && (\n <>\n <Cell />\n <Cell />\n </>\n )}\n {!loadedFromInvoice && <Cell />}\n {!loadedFromInvoice &&\n this.props.status !== \"PENDING\" &&\n this.props.status !== \"CANCELLED\" && <Cell />}\n <Cell className=\"total-amount text-right\">Total</Cell>\n <Cell className=\"total-amount text-right\">\n <small>\n {currency.symbol}{\" \"}\n {this.state.editing\n ? totalMrp.toFixed(2)\n : Number(data.amount)}\n </small>\n </Cell>\n\n {!isEnterprise() && (\n <Cell className=\"total-amount text-right\">\n {`${currency.symbol} ${totalTax.toFixed(2)}`}\n </Cell>\n )}\n\n <Cell className=\"total-amount text-right\">\n <small>\n {currency.symbol}{\" \"}\n {this.state.editing\n ? totalDiscount.toFixed(2)\n : Number(data.discount).toFixed(2)}\n </small>\n </Cell>\n <Cell className=\"total-amount text-right\">\n {currency.symbol} {truncateToTwoDecimal(totalAmountCalculated)}\n </Cell>\n </Row>\n )}\n </Table>\n {productsInOrder.length <= 0 ? (\n this.state.editing ? (\n <div className=\"empty-table-message\">\n {getMessage(\"order.details.itemsTable.clearingMessage\")}\n </div>\n ) : (\n <div className=\"empty-table-message\">\n {getMessage(\"order.details.itemsTable.emptyMessage\")}\n </div>\n )\n ) : null}\n <div className=\"flex-around table-footer\">\n <div className=\"order-edit-actions\">\n {this.state.editing ? (\n <button className=\"button primary\" onClick={this.submitChanges}>\n {getMessage(\"order.details.itemsTable.actions.confirmText\")}\n </button>\n ) : null}\n {this.state.editing ? (\n <button\n className=\"button button-white\"\n onClick={this.cancelEditing}\n >\n {getMessage(\"order.details.itemsTable.actions.cancelText\")}\n </button>\n ) : null}\n </div>\n {\n <InvoiceSummary\n data={{\n taxBreakdown,\n shipping: Number(data.shipping),\n discount: this.state.editing ? totalDiscount : data.discount,\n paid: paidAmount,\n invoiceAmount: invoiceAmount,\n couponDiscount: Number(data.couponDiscount),\n refundAmount: data.refundAmount,\n loadedFromInvoice: loadedFromInvoice,\n editing: this.state.editing,\n clickAndCollectCharges: Number(data.clickAndCollectCharges),\n type: data.type,\n pendingAmount: data.pendingAmount,\n surcharge: data.surcharge,\n orderDiscount: data.orderDiscount,\n }}\n currency={currency}\n />\n }\n </div>\n </div>\n );\n }\n}\n\nOrderItemsView.defaultProps = {\n data: {\n items: [],\n payment: [],\n },\n includeInvoice: true,\n};\n\nexport default OrderItemsView;\n","import React, { Component } from \"react\";\nimport { Popup } from \"../../../../../components/Popup\";\nimport OrderItemsView from \"../OrderItemsView\";\nimport Loader from \"../../../../../components/Loader\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport { getSession, isExtensionEnabled } from \"../../../../../lib/auth\";\nimport {\n formatDate,\n formatTime,\n getPrintableTime,\n} from \"../../../../../lib/datetime\";\nimport { parse, format } from \"libphonenumber-js\";\nimport API from \"../../../../../lib/api\";\nimport {\n getAsapDuration,\n getDisplayAddress,\n} from \"../../../../../lib/commonlyused\";\nimport {\n getStandradDateTime,\n utcToLocalTime,\n} from \"../../../../../lib/datetime\";\nimport \"./style.css\";\n\nclass OrderInvoice extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n this.organization = getSession().organization;\n this.currency = this.organization.currency;\n this.hideInvoice = this.hideInvoice.bind(this);\n }\n hideInvoice() {\n this.props.close();\n }\n getData() {\n let referenceNumber = this.props.referenceNumber;\n let api = new API({ url: `/order-service/order/${referenceNumber}` });\n this.setState(\n {\n loading: true,\n failed: false,\n },\n () => {\n api\n .get()\n .then(\n (response) => {\n const order = response.data.order;\n if (order.createdAt) {\n order.createdAt = getStandradDateTime(\n utcToLocalTime,\n order.createdAt\n );\n }\n if (order.completedAt) {\n order.completedAt = getStandradDateTime(\n utcToLocalTime,\n order.completedAt\n );\n }\n if (order.updatedAt) {\n order.updatedAt = getStandradDateTime(\n utcToLocalTime,\n order.updatedAt\n );\n }\n if (order.preferredDate && order.slotStartTime) {\n const tempDate = getStandradDateTime(\n utcToLocalTime,\n `${order.preferredDate} ${order.slotStartTime}`\n ).split(\" \");\n order.preferredDate = tempDate[0];\n order.slotStartTime = tempDate[1];\n }\n if (order.preferredDate && order.slotEndTime) {\n const tempDate = getStandradDateTime(\n utcToLocalTime,\n `${order.preferredDate} ${order.slotEndTime}`\n ).split(\" \");\n order.slotEndTime = tempDate[1];\n }\n this.setState({\n failed: false,\n data: order,\n });\n },\n (error) => {\n this.setState({ failed: true });\n if (error.code === 401) {\n throw error;\n }\n }\n )\n .then(() => {\n this.setState(\n (prevState) => {\n return { loading: false };\n },\n () => {\n if (this.props.print) {\n window.print();\n this.hideInvoice();\n }\n }\n );\n })\n .catch((error) => {\n console.error(error);\n });\n }\n );\n if (isExtensionEnabled(\"EntityMetaData\") && !this.props.addressSequence) {\n this.api = new API({ url: \"/config-service/config/customers\" });\n this.api\n .get()\n .then((response) => {\n let addressSequence = response.data.customers.addressSequence;\n this.setState({\n addressSequence,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n componentDidMount() {\n if (this.props.data) {\n this.setState({\n data: this.props.data,\n loading: false,\n failed: false,\n addressSequence: this.props.addressSequence,\n });\n } else if (this.props.show) {\n this.getData();\n }\n }\n componentDidUpdate(prevProps, prevState) {\n let { props } = this;\n let newData = props && props.data;\n let prevData = prevState && prevState.data;\n if (newData && prevData) {\n if (\n newData.amount !== prevData.amount ||\n newData.preferredDate !== prevData.preferredDate ||\n newData.slotStartTime !== prevData.slotStartTime ||\n newData.slotEndTime !== prevData.slotEndTime\n ) {\n this.setState({\n data: newData,\n });\n }\n }\n }\n render() {\n const data = this.state.data || {};\n const name =\n data.address &&\n data.address.metaData &&\n (data.address.metaData.FirstName || data.address.metaData.LastName)\n ? `${\n data.address.metaData.FirstName\n ? data.address.metaData.FirstName\n : \"\"\n } ${\n data.address.metaData.LastName ? data.address.metaData.LastName : \"\"\n }`\n : data.customer && data.customer.name;\n let contentLoaded =\n !this.state.loading && !this.state.failed && this.state.data;\n return contentLoaded ? (\n this.props.show ? (\n <Popup\n className=\"editPopup invoice-popup\"\n show={this.props.show}\n close={this.hideInvoice}\n >\n <div className=\"printable-area\">\n <div className=\"invoice-header\">\n {this.organization.logo && (\n <div className=\"org-logo\">\n <img alt=\"\" src={this.organization.logo} />\n </div>\n )}\n <div>\n <h3 className=\"order-number\">\n {this.state.data.clientId ? (\n <span>\n {getMessage(\"order.details.invoice.order\")}\n <span className=\"text-muted\">\n {getMessage(\"order.table.clientId.prefix\")}\n </span>\n {this.state.data.clientId}\n </span>\n ) : (\n <span>\n {getMessage(\"order.details.invoice.order\")}\n {this.state.data.referenceNumber}\n </span>\n )}\n </h3>\n <div className=\"order-time\">\n {getPrintableTime(this.state.data.createdAt)}\n </div>\n </div>\n </div>\n {this.state.data.store && (\n <div className=\"store-address-wrapper\">\n <div className=\"store-name\">{this.state.data.store.name}</div>\n <div className=\"store-address\">\n {this.state.data.store.address}\n </div>\n </div>\n )}\n <div className=\"flex-around order-addresses\">\n <div className=\"customer-address-wrapper\">\n <div className=\"delivery-address-details\">\n <div className=\"customer-name\">{name}</div>\n <div className=\"customer-phone text-muted\">\n {this.state.data.customer &&\n this.state.data.customer.phones &&\n !!this.state.data.customer.phones.length > 0 &&\n Object.keys(parse(this.state.data.customer.phones[0].phone))\n .length > 0\n ? format(\n parse(this.state.data.customer.phones[0].phone),\n \"International\"\n )\n : this.state.data.customer &&\n this.state.data.customer.phones &&\n this.state.data.customer.phones.length\n ? this.state.data.customer.phones[0].phone\n : null}\n </div>\n\n {this.state.data.address && (\n <div className=\"store-address\">\n {getDisplayAddress(\n this.state.data.address,\n this.state.addressSequence\n )}\n </div>\n )}\n {isExtensionEnabled(\"DeliverySlots\") &&\n this.state.data.address &&\n this.state.data.preferredDate && (\n <div className=\"slot-details\">\n <div className=\"section-title-slot-title\">\n {getMessage(\"order.details.slot.heading\")} :{\" \"}\n {` ${\n this.state.data.preferredDate &&\n formatDate(this.state.data.preferredDate)\n } , `}\n {this.state.data.slotType &&\n this.state.data.slotType === \"ASAP\" &&\n this.state.data.slotStartTime &&\n this.state.data.slotEndTime\n ? getAsapDuration(\n this.state.data.slotStartTime,\n this.state.data.slotEndTime\n )\n : this.state.data.slotStartTime\n ? formatTime(this.state.data.slotStartTime) +\n \" - \" +\n formatTime(this.state.data.slotEndTime)\n : this.state.data.slotEndTime\n ? \"Within \" +\n this.state.data.slotEndTime.split(\":\")[2] +\n \" minutes\"\n : null}\n </div>\n </div>\n )}\n {this.state.data.pickupLocation && (\n <div className=\"store-address\">\n {this.state.data.pickupLocation.address}\n </div>\n )}\n </div>\n {this.state.data?.billingAddress && (\n <div className=\"billing-address\">\n <div className=\"billing-title\" style={{ textAlign: \"end\" }}>\n {getMessage(\n \"order.details.location.billing.address.title\"\n )}\n </div>\n <div className=\"store-address\" style={{ textAlign: \"end\" }}>\n {getDisplayAddress(\n this.state.data.billingAddress,\n this.state.addressSequence\n )}\n </div>\n </div>\n )}\n </div>\n </div>\n <OrderItemsView\n data={{\n items: this.state.data.items || [],\n payment: this.state.data.payment || [],\n shipping: this.state.data.shipping,\n amount: this.state.data.amount,\n discount: this.state.data.discount,\n couponDiscount: this.state.data.couponDiscount,\n invoiceAmount: this.state.data.invoiceAmount,\n pendingAmount: this.state.data.pendingAmount,\n clickAndCollectCharges: this.state.data.clickAndCollectCharges,\n type: this.state.data.type.name,\n surcharge: this.state.data.surcharge,\n orderDiscount: this.state.data.orderDiscount,\n }}\n loadedFromInvoice\n currency={this.currency}\n status={this.state.data.status}\n />\n <div className=\"invoice-footer\">\n <div className=\"tax-disclaimer\">\n <div className=\"thank-you\">\n {getMessage(`Thank you for shopping at `, {\n name: this.organization.name,\n })}\n </div>\n <div className=\"thank-you\">\n {getMessage(\"We look forward to serve you again\")}\n </div>\n <div className=\"thank-you\">\n {getMessage(`Visit us at`, {\n domain: this.organization.domain,\n })}\n </div>\n </div>\n </div>\n </div>\n </Popup>\n ) : (\n <div />\n )\n ) : this.props.show ? (\n <Popup\n className=\"editPopup invoice-popup\"\n show={this.props.show}\n close={this.hideInvoice}\n >\n <Loader />\n </Popup>\n ) : (\n <div />\n );\n }\n}\n\nexport default OrderInvoice;\n","import React from \"react\";\nimport {\n BaseForm,\n Checkbox,\n Input,\n Select,\n} from \"../../../../../components/Form\";\nimport Loader from \"../../../../../components/Loader\";\nimport AuthenticatedPage from \"../../../../../containers/AuthenticatedPage\";\nimport Table, { Header, Row, Cell } from \"../../../../../components/Table\";\n\nimport { getMessage } from \"../../../../../lib/translator\";\nimport API from \"../../../../../lib/api\";\nimport { isExtensionEnabled } from \"../../../../../lib/auth\";\nimport { getStepValue } from \"../../../../../lib/commonlyused\";\n\nimport \"./style.css\";\n\nclass FileForReturnForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.loading = false;\n }\n\n componentDidMount() {\n this.setState({\n loading: true,\n });\n\n // this api is used for get the reasons for return items\n const returnReasonApi = new API({ url: `/account-service/config/order` });\n returnReasonApi\n .get()\n .then((response) => {\n this.setState({\n returnReasons: response.data.config.order.itemReturnReasons,\n });\n })\n .catch((error) => {\n console.error(error);\n throw error;\n });\n\n const referenceNumber = this.props.match.params.id;\n const api = new API({ url: `/order-service/order/${referenceNumber}` });\n api\n .get()\n .then(\n (response) => {\n let transformedResponse = response.data.order;\n let items = transformedResponse.items || [];\n let status = transformedResponse.status;\n let tripId = transformedResponse.tripId;\n if (status === \"DISPATCHED\") {\n const logisticsApi = new API({ url: \"/logistics-service/trip\" });\n logisticsApi\n .get({ orderNumber: referenceNumber })\n .then((response) => {\n if (response.data.trip[0]) {\n let tripId = response.data.trip[0].id;\n this.tripId = tripId;\n this.helper(\n items,\n status,\n referenceNumber,\n tripId,\n transformedResponse\n );\n } else {\n this.helper(\n items,\n status,\n referenceNumber,\n tripId,\n transformedResponse\n );\n }\n })\n .catch((error) => {\n console.error(error);\n });\n } else {\n this.helper(\n items,\n status,\n referenceNumber,\n tripId,\n transformedResponse\n );\n }\n },\n (error) => {\n this.setState({\n formError: error.message,\n loading: false,\n });\n if (error.code === 401) {\n throw error;\n }\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n helper(\n items = [],\n status,\n referenceNumber,\n tripId = null,\n transformedResponse\n ) {\n items = getItemsToReturn(items, status, referenceNumber, tripId);\n items = calculateReturnableQuantity(items, status);\n items.forEach((item) => {\n item.quantity = item.returnableQuantity;\n });\n let moveableStatuses = getMoveToStatusOptions(status);\n this.setState({\n items: items,\n loading: false,\n moveableStatuses,\n referenceNumber: referenceNumber,\n orderStatus: status,\n order: transformedResponse,\n tripId: tripId,\n values: {\n items: items,\n },\n });\n return items;\n }\n\n onSubmit(data) {\n this.setState({\n submitting: true,\n });\n let formData = Object.assign({}, data);\n let orderStatus = this.state.orderStatus;\n let itemsToReturn =\n formData.items && formData.items.filter((item) => item.return && item);\n\n if (orderStatus === \"DISPATCHED\" && formData.status !== \"COMPLETED\") {\n itemsToReturn = this.helper(\n this.state.order.items,\n this.state.orderStatus,\n this.state.referenceNumber,\n this.state.tripId,\n this.state.order\n );\n }\n let returnItems = itemsToReturn.map((item) => {\n let returnItem = {\n id: item.orderDetails.orderItemId,\n quantity: item.quantity,\n };\n if (item.isPending) {\n if (\n this.state.orderStatus === \"DISPATCHED\" &&\n formData.status === \"COMPLETED\"\n ) {\n returnItem.qty = item.quantity;\n delete returnItem.quantity;\n } else {\n returnItem.isPending = true;\n }\n }\n if (item.returnReason) {\n returnItem.reason = item.returnReason;\n }\n return returnItem;\n });\n let api = new API({\n url: `/order-service/order/${this.state.referenceNumber}/returns`,\n });\n let params = {};\n params.returnItems = returnItems;\n if (formData.status) {\n params.status = formData.status;\n }\n if (this.tripId) {\n params.tripId = this.tripId;\n }\n if (orderStatus === \"DISPATCHED\" && formData.status === \"COMPLETED\") {\n api = new API({\n url: `/order-service/order/${this.state.referenceNumber}`,\n });\n params.returnItems = JSON.stringify(params.returnItems);\n api\n .put(params)\n .then(\n (response) => {\n this.props.history.goBack();\n },\n (error) => {\n this.setState({\n returnError: error && error.message,\n submitting: false,\n });\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n }\n )\n .catch((error) => {\n console.error(error);\n });\n } else {\n api\n .post(params)\n .then(\n (response) => {\n this.props.history.goBack();\n },\n (error) => {\n this.setState({\n returnError: error && error.message,\n submitting: false,\n });\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n }\n\n render() {\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n const {\n loading,\n values,\n moveableStatuses,\n returnError,\n orderStatus,\n returnReasons,\n order,\n } = this.state;\n const { items, status } = values;\n return (\n <AuthenticatedPage menu={this.props.menu}>\n <h1>\n {`${getMessage(\"return.heading.for\")} `}\n {order && (\n <span className=\"text-muted\">{order.clientId ? \"#\" : \"Z\"}</span>\n )}\n {order &&\n `${order.clientId ? order.clientId : this.state.referenceNumber}`}\n </h1>\n {loading ? (\n <Loader />\n ) : (\n <div className=\"return-file-form\">\n <Form>\n {returnError && <div className=\"form-error\">{returnError}</div>}\n {moveableStatuses && items && items.length > 0 && (\n <Select\n name=\"status\"\n options={moveableStatuses}\n label={getMessage(\"return.move.order\")}\n placeholder={getMessage(\"return.move.placeholder\")}\n required\n {...this.generateStateMappers({\n stateKeys: [\"status\"],\n loseEmphasisOnFill: true,\n })}\n />\n )}\n {items && items.length === 0 && (\n <div>{getMessage(\"return.no.items.to.return\")}</div>\n )}\n {items && items.length > 0 && (\n <Table>\n <Header>\n <Cell>{getMessage(\"return.item.name\")}</Cell>\n <Cell>{getMessage(\"return.retunquantity\")}</Cell>\n <Cell>{getMessage(\"return.totalquantity\")}</Cell>\n {returnReasons && (\n <Cell>{getMessage(\"return.reason.header\")}</Cell>\n )}\n </Header>\n {items &&\n items.map((item, index) => {\n let brand = item.brand && item.brand.name;\n let name = item.fullName || item.name;\n let orderItemId = item.orderDetails.orderItemId;\n let editable =\n orderStatus === \"DISPATCHED\"\n ? !(status === \"COMPLETED\")\n : !item.returnEditable;\n let qty = Number(\n this.getState([\"items\", index, \"quantity\"])\n );\n return (\n <Row key={`return-item-${index}`}>\n <Cell>\n <Checkbox\n inlineLabel={\n <div>\n {brand && (\n <span className=\"text-muted\">{brand} </span>\n )}\n {name}\n </div>\n }\n key={orderItemId}\n name={`return-${index}`}\n value={this.getState([\"items\", index, \"return\"])}\n onChange={(e) => {\n this.updateState([\"items\", index, \"return\"], e);\n }}\n checked={this.getState([\n \"items\",\n index,\n \"return\",\n ])}\n readOnly={editable}\n secondaryLabel={() =>\n brand && (\n <div className=\"text-muted\">{brand}</div>\n )\n }\n />\n </Cell>\n <Cell>\n <Input\n key={`quantity-${index}`}\n name={`quantity-${index}`}\n type=\"number\"\n min={0}\n step={item.soldByWeight ? getStepValue(qty) : \"1\"}\n readOnly={editable}\n max={item.returnableQuantity}\n {...this.generateStateMappers({\n stateKeys: [\"items\", index, \"quantity\"],\n })}\n value={qty}\n />\n </Cell>\n <Cell>{Number(item.returnableQuantity)}</Cell>\n {returnReasons && (\n <Cell>\n <Select\n name=\"returnReason\"\n placeholder={getMessage(\"return.reasons\")}\n {...this.generateStateMappers({\n stateKeys: [\"items\", index, \"returnReason\"],\n loseEmphasisOnFill: true,\n })}\n options={\n this.state.returnReasons\n ? this.state.returnReasons.map((reason) => {\n return {\n text: reason,\n value: reason,\n };\n })\n : []\n }\n />\n </Cell>\n )}\n </Row>\n );\n })}\n </Table>\n )}\n {items && items.length > 0 && (\n <div className=\"form-action\">\n <SubmitButton disabled={this.state.submitting}>\n {getMessage(\"return.submit\")}\n </SubmitButton>\n <button\n type=\"button\"\n className=\"button\"\n onClick={() => this.props.history.goBack()}\n >\n {getMessage(\"return.cancel\")}\n </button>\n </div>\n )}\n </Form>\n </div>\n )}\n </AuthenticatedPage>\n );\n }\n}\n\nconst getMoveToStatusOptions = (status) => {\n let moveableStatuses = [\n {\n text: getMessage(\"return.pending\"),\n value: \"PENDING\",\n },\n {\n text: getMessage(\"return.packed\"),\n value: \"PACKED\",\n },\n {\n text: getMessage(\"return.return\"),\n value: \"RETURNED\",\n },\n {\n text: getMessage(\"return.completed\"),\n value: \"COMPLETED\",\n },\n ];\n\n if (status === \"PACKED\") {\n return [moveableStatuses[0], moveableStatuses[2]];\n } else if (status === \"DISPATCHED\") {\n if (isExtensionEnabled(\"InStoreProcessing\")) {\n return moveableStatuses;\n }\n return [moveableStatuses[0], moveableStatuses[2], moveableStatuses[3]];\n } else if (status === \"COMPLETED\") {\n return false;\n }\n};\n\nconst getItemsToReturn = (items, status, referenceNumber, tripId = null) => {\n let newItems = items.slice();\n if (status === \"PACKED\") {\n return newItems.filter((item) => item.orderDetails.status === \"PICKED\");\n } else if (status === \"DISPATCHED\") {\n if (tripId) {\n return newItems.filter((item) => item.orderDetails.tripId === tripId);\n }\n return newItems.filter((item) => item.orderDetails.status === \"DISPATCHED\");\n } else if (status === \"COMPLETED\") {\n return newItems.filter(\n (item) => Number(item.orderDetails.deliveredQuantity) > 0\n );\n } else {\n return null;\n }\n};\n\n// This method calculates the max quantity that can be returned for every order item based on extensions\n// Also enables only disputed quantity to be editable in case any item has been disputed\nconst calculateReturnableQuantity = (orderItems, orderStatus) => {\n const completedStatus = orderStatus === \"COMPLETED\";\n const isInStoreEnabled = isExtensionEnabled(\"InStoreProcessing\");\n const isLogisticsEnabled = isExtensionEnabled(\"LogisticsSupport\");\n let items = orderItems ? orderItems.slice() : [];\n items.forEach((item) => {\n let orderDetails = item.orderDetails;\n let returnableQuantity = orderDetails.orderedQuantity;\n if (!orderDetails.disputeQuantity) {\n orderDetails.disputeQuantity = 0;\n }\n if (isInStoreEnabled && isLogisticsEnabled) {\n // Both logistics and instore enabled\n if (orderDetails.disputeQuantity > 0) {\n returnableQuantity = orderDetails.disputeQuantity;\n item.returnEditable = true;\n } else {\n returnableQuantity = orderDetails.deliveredQuantity;\n item.returnEditable = completedStatus;\n }\n } else if (isLogisticsEnabled && !isInStoreEnabled) {\n // Only logistics enabled\n if (orderDetails.disputeQuantity > 0) {\n returnableQuantity = orderDetails.disputeQuantity;\n item.returnEditable = true;\n } else {\n if (!isInStoreEnabled) {\n returnableQuantity = orderDetails.orderedQuantity;\n item.returnEditable = completedStatus;\n } else {\n returnableQuantity = orderDetails.deliveredQuantity;\n item.returnEditable = completedStatus;\n }\n }\n } else if (isInStoreEnabled && !isLogisticsEnabled) {\n // Only instore enabled\n if (orderDetails.disputeQuantity > 0) {\n returnableQuantity = orderDetails.disputeQuantity;\n item.returnEditable = true;\n } else {\n returnableQuantity = orderDetails.deliveredQuantity;\n item.returnEditable = completedStatus;\n }\n } else if (!isInStoreEnabled && !isLogisticsEnabled) {\n // Both logistics and in store not enabled\n if (orderDetails.disputeQuantity > 0) {\n returnableQuantity = orderDetails.disputeQuantity;\n item.returnEditable = true;\n } else {\n returnableQuantity = orderDetails.deliveredQuantity;\n item.returnEditable = completedStatus;\n }\n }\n item.returnableQuantity = returnableQuantity;\n if (!completedStatus) {\n item.isPending = true;\n item.return = false;\n }\n // If any item has to be picked up it needs to be marked as pending\n if (orderDetails.isPickupPending) {\n item.isPending = true;\n }\n });\n return items;\n};\n\nexport default FileForReturnForm;\n","import React from \"react\";\nimport { BaseForm, Input } from \"../../../../../components/Form\";\nimport Loader from \"../../../../../components/Loader\";\n\nimport API from \"../../../../../lib/api\";\nimport { getMessage } from \"../../../../../lib/translator\";\n\nimport \"./style.css\";\n\nclass CompleteOrderWithPickupPending extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n showLoader: false,\n pickupPending: false,\n };\n }\n\n componentDidMount() {\n this.setState({\n showLoader: true,\n });\n const api = new API({\n url: `/order-service/order/${this.props.referenceNumber}`,\n });\n api\n .get()\n .then((response) => {\n let order = response.data.order;\n if (order.pickupItems) {\n order.pickupItems.forEach((item) => {\n item.quantity = item.orderDetails.disputeQuantity;\n });\n this.setState({\n pickupPending: true,\n values: {\n pickupItems: order.pickupItems,\n },\n });\n }\n this.setState({\n showLoader: false,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n onSubmit(formData) {\n const data = Object.assign({}, formData);\n let params = {};\n params.status = \"COMPLETED\";\n let obj = {};\n data.pickupItems.forEach((item) => {\n obj[item.orderDetails.orderItemId] = item.quantity;\n });\n params.pickupPendingItems = obj;\n this.props.onPickupPendingComplete(params);\n }\n\n render() {\n const { productReturned, redirectUrl } = this.props;\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n const pickupItems =\n this.state.pickupPending && this.state.values.pickupItems;\n return this.state.showLoader ? (\n <Loader />\n ) : this.state.pickupPending ? (\n <Form>\n <div className=\"pickup-pending-form\">\n {pickupItems.map((item, index) => {\n let entityType = item.entityType.toLowerCase();\n let name = item[entityType].name;\n let step = item.product.isSoldByWeight ? \"0.01\" : \"1\";\n let orderDetails = item.orderDetails;\n return (\n <div\n key={`pickup-item-container-${index}`}\n className=\"pickup-pending\"\n >\n <p>{name}</p>\n <Input\n type=\"number\"\n key={`pickup-item-${index}`}\n name={`pickup-item-${index}`}\n step={step}\n max={orderDetails.disputeQuantity}\n required\n min={0}\n siblings={{\n after: [\n <div key={`dispute-item-${index}`} className=\"return-qty\">\n {\" \"}\n /{Number(orderDetails.disputeQuantity).toFixed(2)}\n </div>,\n ],\n }}\n {...this.generateStateMappers({\n stateKeys: [\"pickupItems\", index, \"quantity\"],\n loseEmphasisOnFill: true,\n })}\n />\n </div>\n );\n })}\n <div className=\"form-actions\">\n <SubmitButton>\n {getMessage(\"order.details.completion.confirmText\")}\n </SubmitButton>\n <button type=\"button\" className=\"button\" onClick={this.props.close}>\n {getMessage(\"order.details.completion.cancelText\")}\n </button>\n </div>\n </div>\n </Form>\n ) : (\n <div className=\"return-complete\">\n {!productReturned && (\n <div className=\"text-center\">\n {getMessage(\"order.details.completion.title\")}\n </div>\n )}\n <div className=\"text-center text-muted\">\n {productReturned\n ? getMessage(\"order.details.packed.item.return.message\")\n : getMessage(\"order.details.completion.message\")}\n </div>\n <div className=\"form-actions\">\n {productReturned ? (\n <a href={redirectUrl} className=\"button primary\">\n {getMessage(\"order.details.completion.confirmReturnItem\")}\n </a>\n ) : (\n <button\n type=\"button\"\n className=\"button primary\"\n onClick={this.props.onComplete}\n >\n {getMessage(\"order.details.completion.confirmText\")}\n </button>\n )}\n <button type=\"button\" className=\"button\" onClick={this.props.close}>\n {getMessage(\"order.details.completion.cancelText\")}\n </button>\n </div>\n </div>\n );\n }\n}\nexport default CompleteOrderWithPickupPending;\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Row, Cell } from \"../../../../../components/Table\";\nimport { Dialog, Popup } from \"../../../../../components/Popup\";\nimport {\n DropDown,\n DropDownItem,\n ICONS,\n} from \"../../../../../components/DropDown\";\nimport {\n Email as CustomerEmailWidget,\n Call as CustomerCallWidget,\n Address as CustomerMapWidget,\n} from \"../../../../../containers/CustomerWidgets\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport {\n getSession,\n isExtensionEnabled,\n hasPermissions,\n} from \"../../../../../lib/auth\";\nimport { getPrintableTime, formatTime } from \"../../../../../lib/datetime\";\nimport { getAsapDuration } from \"../../../../../lib/commonlyused\";\nimport { TABLE_ACTIONS } from \"../../../../../containers/ListingPage\";\nimport OrderInvoice from \"../../Details/OrderInvoice\";\nimport FileForReturn from \"../../../Returns/Form/FileForReturn\";\nimport CompletePickupPendingOrder from \"../../../Returns/Form/CompletePickupPending\";\nimport { Consumer } from \"../index\";\nimport pickupImage from \"./pickup.svg\";\nimport deliveyImage from \"./delivery.svg\";\nimport offlineImage from \"./offline.svg\";\nimport B2BImage from \"./b2b.svg\";\nimport API from \"../../../../../lib/api\";\nimport { getOrderPermissions } from \"../index\";\nimport Image from \"../../../../../components/Image\";\nimport { isMarketPlaceOwner } from \"../../../../../lib/marketPlace\";\n\nimport { GO_HOST } from \"../../../../../config/app\";\nimport { is_Domain_Scarlet } from \"../../../../../utils/domainCheck\";\n\nconst showConfig = () => {\n if (GO_HOST.includes(\"tamimimarkets.com\")) return false;\n return true;\n};\n\n// Mapping order status with the relevant message key\nconst orderStatus = {\n COMPLETED: \"order.status.completed\",\n CANCELLED: \"order.status.cancelled\",\n PENDING: \"order.status.pending\",\n PICKED: \"order.status.picked\",\n CHECKED: \"order.status.checked\",\n PACKED: \"order.status.packed\",\n PICKING: \"order.status.picking\",\n \"PARTIALLY-PICKED\": \"order.status.partiallypicked\",\n CHECKING: \"order.status.checking\",\n PACKING: \"order.status.packing\",\n DISPATCHED: \"order.status.dispatched\",\n RETURNED: \"order.status.returned\",\n};\n\nconst orderTypeImages = {\n PICKUP: pickupImage,\n DELIVERY: deliveyImage,\n B2B: B2BImage,\n OFFLINE: offlineImage,\n};\n\n// Logic to decide what payment status should be shown for the order\nconst PaymentStatusText = ({ status, pendingAmount, refundAmount }) => {\n let text = \"\";\n switch (status) {\n case \"PAID\":\n text = (\n <small className=\"text-muted\">{getMessage(\"order.payment.paid\")}</small>\n );\n break;\n case \"PENDING\":\n text = (\n <small className=\"pending-amount\">\n {getMessage(\"order.table.pendingAmount\", {\n currency: getSession().organization.currency.symbol,\n amount: Number(pendingAmount).toFixed(2),\n })}\n </small>\n );\n break;\n case \"REFUND\":\n text = (\n <small className=\"refund-amount\">\n {getMessage(\"order.table.refundAmount\", {\n currency: getSession().organization.currency.symbol,\n amount: Number(pendingAmount).toFixed(2),\n })}\n </small>\n );\n break;\n default:\n break;\n }\n return text;\n};\nconst FillRateText = ({ fillRate = 0 }) => {\n return (\n <small className={`${fillRate < 80 ? \"fill-rate\" : \"text-muted\"}`}>\n {(fillRate === 0 || fillRate) &&\n getMessage(\"order.table.text.fillrate\") +\n Math.round(fillRate * 100) / 100 +\n \"%\"}\n </small>\n );\n};\n\nconst tripStatus = [\"DISPATCHED\", \"COMPLETED\", \"RETURNED\"];\n\nclass TableActions extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showCompleteDialog: false,\n showCancelDialog: false,\n showInvoice: false,\n printInvoice: false,\n showLog: false,\n showPickupPending: false,\n orderActions: getOrderPermissions(),\n };\n this.returnableStatuses = [\"COMPLETED\"];\n this.isInStoreEnabled = isExtensionEnabled(\"InStoreProcessing\");\n this.isLogisticsEnabled = isExtensionEnabled(\"LogisticsSupport\");\n this.returnableStatuses.push(\"PACKED\");\n this.returnableStatuses.push(\"DISPATCHED\");\n\n this.printInvoice = this.printInvoice.bind(this);\n }\n printInvoice() {\n this.setState((prevState) => {\n return {\n showInvoice: true,\n printInvoice: true,\n };\n });\n }\n handleCourierDispatch = (referenceNumber) => {\n const courierApi = new API({\n url: `/logistics-service/courier/${referenceNumber}`,\n });\n courierApi\n .put()\n .then((_) => {\n this.setState({\n dispatchFormError: \"\",\n showSuccessDispatchDialog: true,\n });\n })\n .catch((error) => {\n this.setState({\n dispatchFormError: error.message,\n showErrorDispatchDialog: true,\n });\n console.error(error);\n });\n };\n closeDispatchDialogs = (onAction, whichDialogue) => {\n this.setState(\n {\n showSuccessDispatchDialog: false,\n showErrorDispatchDialog: false,\n },\n () => {\n if (whichDialogue === \"success\") onAction(TABLE_ACTIONS.REFRESH);\n }\n );\n };\n\n render() {\n let {\n referenceNumber,\n status,\n onAction,\n type,\n paymentStatus,\n pendingAmount,\n clientId,\n url,\n returnsByRE,\n courierDetails,\n } = this.props;\n const productReturned = (returnsByRE && returnsByRE.length > 0) || false; // to know product returned or not\n let hasOrderEditPermissions = hasPermissions(\"order\", \"order\", \"PUT\");\n let hasOrderPostPermissions = hasPermissions(\"order\", \"order\", \"post\");\n let canBeCompleted =\n hasOrderEditPermissions && isExtensionEnabled(\"InStoreProcessing\")\n ? isExtensionEnabled(\"LogisticsSupport\")\n ? status === \"DISPATCHED\"\n : status === \"PACKED\"\n : isExtensionEnabled(\"LogisticsSupport\")\n ? status === \"DISPATCHED\"\n : isExtensionEnabled(\"ShipRocket\")\n ? status === \"DISPATCHED\" && courierDetails?.vendor === \"OTHER\"\n : !(\n !isExtensionEnabled(\"InStoreProcessing\") &&\n isExtensionEnabled(\"ShipRocket\")\n ) && status === \"PACKED\";\n let canBePendingToPacked =\n hasOrderEditPermissions &&\n !isExtensionEnabled(\"InStoreProcessing\") &&\n status === \"PENDING\";\n let canBeReturned =\n hasOrderPostPermissions &&\n isExtensionEnabled(\"OrderReturns\") &&\n this.returnableStatuses.indexOf(status) > -1;\n const canBeDisputed =\n isExtensionEnabled(\"OrderDisputes\") && status === \"COMPLETED\";\n let canShowTrip =\n isExtensionEnabled(\"LogisticsSupport\") &&\n tripStatus.indexOf(status) > -1 &&\n hasPermissions(\"logistics\", \"trip\", \"get\") &&\n type.name === \"DELIVERY\";\n let canBeDispatched = Boolean(courierDetails)\n ? [\"RESERVED\", \"CANCELLED\"].includes(courierDetails?.status) &&\n isExtensionEnabled(\"ShipRocket\") &&\n status === \"PACKED\" &&\n type &&\n type.name === \"DELIVERY\"\n : isExtensionEnabled(\"ShipRocket\") &&\n status === \"PACKED\" &&\n type &&\n type.name === \"DELIVERY\";\n if (type && type.name === \"PICKUP\" && status === \"PACKED\") {\n canBeCompleted = true;\n }\n let canBeCancelled =\n (status === \"PENDING\" || status === \"RETURNED\") &&\n hasPermissions(\"order\", \"order\", \"put\");\n let registerPayments =\n paymentStatus === \"PENDING\" &&\n (!isExtensionEnabled(\"LogisticsSupport\") ||\n (type && type.name === \"PICKUP\"));\n const isStatusPacked = status === \"PACKED\" || false;\n const packedOrderEdit = this.props.packedOrderEdit || false;\n const fromOperations = this.props.url === \"/operations\";\n const hasAccessToAction = this.state.orderActions;\n\n const hideOptionForSeller =\n !isExtensionEnabled(\"MarketPlace\") || isMarketPlaceOwner();\n const hasAccessToInvoice = this.props.invoiceSupportEnabled && showConfig();\n\n return (\n <div>\n <Dialog\n show={this.state.showSuccessDispatchDialog}\n className=\"success\"\n information={getMessage(\"order.courier.dispatch.success\")}\n close={() => this.closeDispatchDialogs(onAction, \"success\")}\n closeText={getMessage(\"okay.text\")}\n />\n <Dialog\n show={this.state.showErrorDispatchDialog}\n information={getMessage(this.state.dispatchFormError)}\n close={() => this.closeDispatchDialogs(onAction)}\n closeText={getMessage(\"okay.text\")}\n />\n <Dialog\n show={this.state.showCompleteDialog}\n title={getMessage(\"order.details.completion.title\")}\n information={getMessage(\"order.details.completion.message\")}\n onOk={() => {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { referenceNumber },\n { status: \"COMPLETED\" }\n );\n this.setState({ showCompleteDialog: false });\n }}\n close={() => this.setState({ showCompleteDialog: false })}\n okText={getMessage(\"order.details.completion.confirmText\")}\n closeText={getMessage(\"order.details.completion.cancelText\")}\n />\n <Dialog\n show={this.state.showCancelDialog}\n title={getMessage(\"order.details.cancellation.title\")}\n information={getMessage(\"order.details.cancellation.message\")}\n onOk={() => {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { referenceNumber },\n { status: \"CANCELLED\" }\n );\n this.setState({ showCancelDialog: false });\n }}\n close={() => this.setState({ showCancelDialog: false })}\n okText={getMessage(\"order.details.cancellation.confirmText\")}\n closeText={getMessage(\"order.details.cancellation.cancelText\")}\n />\n {this.state.showMoveToPendingDialog && (\n <Dialog\n show={this.state.showMoveToPendingDialog}\n title={getMessage(\"order.details.pending.title\")}\n information={getMessage(\"order.details.pending.message\")}\n onOk={() => {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { referenceNumber },\n { status: \"PENDING\" }\n );\n }}\n close={() => this.setState({ moveCancelledToPending: false })}\n okText={getMessage(\"order.details.cancellation.confirmText\")}\n closeText={getMessage(\"order.details.cancellation.cancelText\")}\n />\n )}\n {this.state.showInvoice && (\n <OrderInvoice\n referenceNumber={referenceNumber}\n show={this.state.showInvoice}\n close={() =>\n this.setState({ showInvoice: false, printInvoice: false })\n }\n print={this.state.printInvoice}\n />\n )}\n {this.state.showReturn && (\n <Popup\n show={this.state.showReturn}\n referenceNumber={referenceNumber}\n close={() => this.setState({ showReturn: false })}\n className=\"file-for-return\"\n heading={`${getMessage(\"return.file.heading\")} #${referenceNumber}`}\n >\n <FileForReturn\n referenceNumber={referenceNumber}\n closeReturnFilePopup={() => this.setState({ showReturn: false })}\n onAction={onAction}\n status={status}\n />\n </Popup>\n )}\n {this.state.showPickupPending && (\n <Popup\n show={this.state.showPickupPending}\n close={() => this.setState({ showPickupPending: false })}\n className=\"pickup-pending-form\"\n >\n <CompletePickupPendingOrder\n productReturned={productReturned}\n referenceNumber={this.props.referenceNumber}\n redirectUrl={`${url}/orders/file-for-return/${referenceNumber}`}\n close={() => this.setState({ showPickupPending: false })}\n onComplete={() => {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { referenceNumber },\n { status: \"COMPLETED\" }\n );\n this.setState({\n showPickupPending: false,\n });\n }}\n onPickupPendingComplete={(params) => {\n onAction(TABLE_ACTIONS.UPDATE, { referenceNumber }, params);\n }}\n />\n </Popup>\n )}\n <DropDown icon={<img src={ICONS.VELLIP} alt=\"â‹®\" />}>\n <DropDownItem>\n <Link to={`${url}/orders/${referenceNumber}`}>\n {getMessage(\"order.action.viewDetails\")}\n </Link>\n </DropDownItem>\n\n {hasAccessToInvoice && (\n <DropDownItem onClick={() => this.setState({ showInvoice: true })}>\n {getMessage(\"order.action.viewInvoice\")}\n </DropDownItem>\n )}\n\n {canBeDisputed && (\n <DropDownItem>\n <Link to={`${url}/orders/dispute/${referenceNumber}`}>\n {getMessage(\"order.details.dispute.optionText\")}\n </Link>\n </DropDownItem>\n )}\n\n {canShowTrip && (\n <DropDownItem>\n <Link to={`/logistics/trips?orderNumber=${referenceNumber}`}>\n {getMessage(\"order.actions.trips\")}\n </Link>\n </DropDownItem>\n )}\n\n {hasAccessToInvoice && (\n <DropDownItem onClick={this.printInvoice}>\n {getMessage(\"order.action.printInvoice\")}\n </DropDownItem>\n )}\n {hideOptionForSeller &&\n canBeCancelled &&\n hasAccessToAction?.includes(\"CANCEL_ORDER\") && (\n <DropDownItem\n onClick={(e) => {\n this.setState({\n showCancelDialog: true,\n });\n }}\n >\n {getMessage(\"order.action.cancel\")}\n </DropDownItem>\n )}\n {hideOptionForSeller && canBePendingToPacked && (\n <DropDownItem>\n <Link to={`${url}/orders/pack-order/${referenceNumber}`}>\n {getMessage(\"order.action.packed\")}\n </Link>\n </DropDownItem>\n )}\n {hideOptionForSeller &&\n canBeCompleted &&\n hasAccessToAction?.includes(\"COMPLETE_ORDER\") &&\n (!registerPayments ? (\n <DropDownItem\n onClick={() => {\n if (!isExtensionEnabled(\"OrderReturns\")) {\n this.setState({ showCompleteDialog: true });\n } else {\n this.setState({ showPickupPending: true });\n }\n }}\n >\n {getMessage(\"order.action.complete\")}\n </DropDownItem>\n ) : (\n <DropDownItem>\n <Link\n to={`${url}/orders/register-payment/${referenceNumber}?pendingAmount=${pendingAmount}&clientId=${clientId}&type=${type?.name}`}\n >\n {getMessage(\"order.action.complete\")}\n </Link>\n </DropDownItem>\n ))}\n {hideOptionForSeller && canBeDispatched && (\n <DropDownItem\n onClick={() => {\n if (courierDetails?.status === \"RESERVED\") {\n this.handleCourierDispatch(referenceNumber);\n }\n }}\n >\n {courierDetails?.status === \"RESERVED\" ? (\n <>{getMessage(\"order.action.dispatch\")}</>\n ) : (\n <Link to={`${url}/orders/dispatch/${referenceNumber}`}>\n {getMessage(\"order.action.dispatch\")}\n </Link>\n )}\n </DropDownItem>\n )}\n {hideOptionForSeller &&\n canBeReturned &&\n hasAccessToAction?.includes(\"RETURN_ORDER\") && (\n <DropDownItem>\n <Link to={`${url}/orders/file-for-return/${referenceNumber}`}>\n {getMessage(\"order.action.return\")}\n </Link>\n </DropDownItem>\n )}\n {hideOptionForSeller && (\n <DropDownItem>\n <Link to={`${url}/orders/order-log/${referenceNumber}`}>\n {getMessage(\"order.actions.logs\")}\n </Link>\n </DropDownItem>\n )}\n\n {hideOptionForSeller &&\n isStatusPacked &&\n packedOrderEdit &&\n fromOperations &&\n hasAccessToAction?.includes(\"EDIT_ORDER\") && (\n <DropDownItem>\n <Link to={`orders/edit-packed/${referenceNumber}`}>\n {getMessage(\"order.action.editPackedOrder\")}\n </Link>\n </DropDownItem>\n )}\n </DropDown>\n </div>\n );\n }\n}\n\nconst tableHeader = (url) => {\n let headers = [\n getMessage(\"order.table.header.referenceNumber\"),\n getMessage(\"order.table.header.customer\"),\n getMessage(\"order.table.header.placedTime\"),\n getMessage(\"order.table.header.amount\"),\n getMessage(\"order.table.header.status\"),\n getMessage(\"order.table.header.completionTime\"),\n getMessage(\"order.table.header.actions\"),\n ];\n if (!is_Domain_Scarlet()) {\n headers.splice(5, 0, getMessage(\"order.table.header.courierAndCharge\"));\n }\n if (isExtensionEnabled(\"DeliverySlots\")) {\n headers.splice(3, 0, getMessage(\"order.table.header.expectedTime\"));\n }\n return headers;\n};\nconst tableProperties = (url, packedOrderEdit, orderConfiguration) => {\n return {\n headers: tableHeader(),\n row: ({\n items,\n slotType,\n clientId,\n referenceNumber,\n customer,\n address,\n completedAt,\n createdAt,\n invoiceAmount,\n itemCount,\n status,\n store,\n pickupLocation,\n pendingAmount,\n refundAmount,\n type,\n onAction,\n preferredDate,\n slotStartTime,\n slotEndTime,\n paymentStatus,\n fillRate,\n returnsByRE,\n courierDetails,\n shipping,\n }) => (\n <Consumer>\n {(value) => {\n const organization = (getSession() || {}).organization || {};\n let allowCall =\n value &&\n value.communication &&\n value.communication.allowCall !== false &&\n hasPermissions(\"communication\", \"call\", \"post\");\n let allowEmail =\n value &&\n value.communication &&\n value.communication.allowEmail !== false &&\n hasPermissions(\"communication\", \"email\", \"post\");\n const courierCancelled =\n Boolean(courierDetails) && courierDetails?.status === \"CANCELLED\";\n const courierName = courierDetails?.metaData?.courierName ?? \"\";\n const courierCharge = courierDetails?.metaData?.courierCharge ?? \"\";\n return (\n <Row>\n <Cell className=\"column-order-number\">\n <div className=\"container-order-number\">\n <div>\n {type.name && (\n <div className=\"order-type-icons\">\n <Image src={orderTypeImages[type.name]} />\n </div>\n )}\n </div>\n <div>\n <div>\n <Link\n className=\"order-number\"\n to={\n url\n ? `${url}/orders/${referenceNumber}`\n : `/operations/orders/${referenceNumber}`\n }\n >\n {clientId ? (\n <span>\n <span className=\"text-muted prefix\">\n {\" \"}\n {getMessage(\"order.table.clientId.prefix\")}{\" \"}\n </span>{\" \"}\n {clientId}\n </span>\n ) : (\n <span>\n {\" \"}\n <span className=\"text-muted prefix\">\n {\" \"}\n {getMessage(\n \"order.table.referenceNumber.prefix\"\n )}{\" \"}\n </span>{\" \"}\n {referenceNumber}\n </span>\n )}\n </Link>\n </div>\n {type.name === \"PICKUP\" ? (\n <small className=\"text-muted store-name\">\n {pickupLocation && pickupLocation.name}\n </small>\n ) : (\n store && (\n <small className=\"text-muted store-name\">\n {store.name}\n </small>\n )\n )}\n </div>\n </div>\n </Cell>\n <Cell className=\"column-customer-name\">\n <div className=\"cx-name-text\">\n {customer ? (\n <Link\n className=\"customer-name\"\n to={\n url\n ? `${url}/customers/view/${customer.id}`\n : `/operations/customers/view/${customer.id}`\n }\n >\n {customer?.name}\n </Link>\n ) : null}\n </div>\n <div className=\"customer-actions\">\n {address && (\n <CustomerMapWidget\n address={\n type.name === \"DELIVERY\"\n ? address.address +\n \", \" +\n address.city +\n \", \" +\n address.pincode\n : pickupLocation\n ? pickupLocation.address\n : \"\"\n }\n />\n )}\n {allowEmail &&\n customer &&\n customer.emails &&\n !!customer.emails.length && (\n <CustomerEmailWidget\n emails={customer.emails.slice(0, 1)}\n showOptions={false}\n />\n )}\n {allowCall &&\n customer &&\n customer.phones &&\n !!customer.phones.length && (\n <CustomerCallWidget\n phones={customer.phones.slice(0, 1)}\n showOptions={false}\n />\n )}\n </div>\n </Cell>\n <Cell className=\"column-creation-time\">\n <div>\n {createdAt\n ? getPrintableTime(createdAt).split(\", \")[0]\n : null}\n </div>\n <small className=\"text-muted\">\n {createdAt\n ? getPrintableTime(createdAt).split(\", \")[1]\n : null}\n </small>\n </Cell>\n {isExtensionEnabled(\"DeliverySlots\") ? (\n <Cell className=\"column-creation-time\">\n <div>\n {preferredDate\n ? getPrintableTime(preferredDate).split(\", \")[0]\n : null}\n </div>\n <small\n className={`text-muted ${\n !slotEndTime ? \"zero-font\" : \"\"\n }`.trim()}\n >\n {slotStartTime && slotEndTime && slotType !== \"ASAP\"\n ? formatTime(slotStartTime) +\n \" - \" +\n formatTime(slotEndTime)\n : getAsapDuration(slotStartTime, slotEndTime)}\n </small>\n </Cell>\n ) : null}\n <Cell className=\"column-order-amount\">\n <div>\n {((organization.currency && organization.currency.symbol) ||\n \"\") + invoiceAmount}\n </div>\n <small className=\"text-muted\">\n {getMessage(\"order.table.itemCount\", {\n count: itemCount || (items && items.length) || 0,\n })}\n </small>\n </Cell>\n <Cell className=\"column-order-status\">\n <div>\n {orderStatus[status] ? getMessage(orderStatus[status]) : null}\n </div>\n <PaymentStatusText\n {...{ status, pendingAmount, refundAmount }}\n />\n {(type.name === \"PICKUP\" || type.name === \"DELIVERY\") &&\n (status === \"PACKED\" ||\n status === \"COMPLETED\" ||\n status === \"DISPATCHED\") && (\n <FillRateText {...{ fillRate }} />\n )}\n </Cell>\n {!is_Domain_Scarlet() && (\n <Cell className=\"column-courier-and-charge\">\n {!courierCancelled && (\n <>\n <div>{courierName ?? \"\"}</div>\n\n <small className=\"text-muted\">\n {courierCharge\n ? getSession().organization.currency.symbol +\n Number(courierCharge).toFixed(2)\n : null}\n </small>\n </>\n )}\n </Cell>\n )}\n <Cell className=\"column-completion-time\">\n <div>\n {completedAt\n ? getPrintableTime(completedAt).split(\", \")[0]\n : null}\n </div>\n <small className=\"text-muted\">\n {completedAt\n ? getPrintableTime(completedAt).split(\", \")[1]\n : null}\n </small>\n </Cell>\n <Cell className=\"column-order-actions\">\n <TableActions\n status={status}\n clientId={clientId}\n courierDetails={courierDetails}\n referenceNumber={referenceNumber}\n onAction={onAction}\n type={type}\n paymentStatus={paymentStatus}\n pendingAmount={pendingAmount}\n url={url || \"/operations\"}\n packedOrderEdit={packedOrderEdit}\n returnsByRE={returnsByRE}\n invoiceSupportEnabled={\n orderConfiguration?.invoiceSupportEnabled\n }\n />\n </Cell>\n </Row>\n );\n }}\n </Consumer>\n ),\n };\n};\n\nexport default tableProperties;\n\nexport { tripStatus };\n","import React from \"react\";\n\nimport Upload from \"../../../../components/FileUpload\";\nimport API from \"../../../../lib/api\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport csvIcon from \"./csv-icon.svg\";\nimport uploadIcon from \"./upload-products.svg\";\nimport { getDefaultStore } from \"../../../../containers/StoreSelector\";\nimport \"./style.css\";\n\nfunction downloadCsv(data) {\n let csv = \"\";\n csv += data.join(\",\");\n csv += \"\\n\";\n var hiddenElement = document.createElement(\"a\");\n hiddenElement.href = \"data:text/csv;charset=utf-8,\" + encodeURI(csv);\n hiddenElement.target = \"_blank\";\n hiddenElement.download = \"order.csv\";\n hiddenElement.click();\n}\n\nexport default function OrderUpload() {\n const getSampleCsv = (e) => {\n e.preventDefault();\n const api = new API({ url: \"/order-service/order-upload\" });\n api\n .get()\n .then(\n (response) => {\n downloadCsv(response.data.orderUpload);\n },\n (error) => {\n this.setState({ uploadError: error.message });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n };\n const storeId = getDefaultStore().storeId;\n\n return (\n <div className=\"order-upload\">\n <div className=\"bordered-box\">\n <div className=\"text-center\">\n <img src={uploadIcon} width=\"140\" alt=\"\" />\n </div>\n\n <Upload\n name=\"bulkOrderUpload\"\n accept=\".csv, text/csv, text/comma-separated-values, application/csv, application/excel, application/vnd.ms-excel, application/vnd.msexcel\"\n placeholder={getMessage(\"orderUpload.uploadFileText\")}\n uploadButtonText=\"Upload\"\n cancelText=\"Cancel\"\n uploadUrl={\"/order-service/order-file\"}\n validationStrings={{\n invalidFileType: getMessage(\"input.invalidFileType\"),\n }}\n strings={{\n defaultMessage: getMessage(\"fileUpload.importCsv.heading\"),\n progressMessage: getMessage(\"fileUpload.importedCsv.heading\"),\n completionMessage: getMessage(\"orderUpload.uploadedCsv.heading\"),\n }}\n icon={csvIcon}\n uploadKey={\"file\"}\n storeId={storeId}\n />\n </div>\n <div className=\"text-center\">\n <button className=\"download-link\" onClick={getSampleCsv}>\n {getMessage(\"orderUpload.csvDownloadText\")}\n </button>\n </div>\n </div>\n );\n}\n","import React, { Component, useState } from \"react\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../../containers/ListingPage\";\nimport StoreSelector from \"../../../../containers/StoreSelector\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport OrderFilters from \"./Filters\";\nimport { tabularView } from \"./Views\";\nimport { Link } from \"react-router-dom\";\nimport API from \"../../../../lib/api\";\nimport { isExtensionEnabled } from \"../../../../lib/auth\";\nimport emptyIcon from \"./no-orders.svg\";\nimport rcmIcon from \"./rcm.svg\";\nimport seoIcon from \"./seo.svg\";\nimport newCustomerIcon from \"./new-customer.svg\";\nimport { DropDown, DropDownItem } from \"../../../../components/DropDown\";\nimport { Popup } from \"../../../../components/Popup\";\nimport \"./style.css\";\nimport { utcToLocalTime, getStandradDateTime } from \"../../../../lib/datetime\";\nimport checkHttpResponseCode from \"../../../../utils/isApiCallSuccessfull\";\nimport OrderUpload from \"../OrderUpload/index\";\nimport { getSession, getPermissionObject } from \"../../../../lib/auth\";\n\nconst bulkOrderFeatureDomains = [\"dashboard\", \"enterprise\", \"localhost\"];\n\nconst DEFAULT_ORDER_PERMISSIONS = [\n \"CREATE_ORDER\",\n \"EDIT_ORDER\",\n \"COMPLETE_ORDER\",\n \"CANCEL_ORDER\",\n \"RETURN_ORDER\",\n \"EDIT_CUSTOM_FIELDS\",\n];\n\nexport const getOrderPermissions = () => {\n const userObject = getSession().user;\n if (!userObject?.isOwner) {\n const orderPermissions = getPermissionObject(\"order-service\", \"order\");\n const permissions = orderPermissions.metaData?.permissions;\n let modifiedPermissions = [];\n if (permissions?.canCreate) {\n modifiedPermissions.push(\"CREATE_ORDER\");\n }\n if (permissions?.canEdit) {\n modifiedPermissions.push(\"EDIT_ORDER\");\n }\n if (permissions?.canComplete) {\n modifiedPermissions.push(\"COMPLETE_ORDER\");\n }\n if (permissions?.canCancel) {\n modifiedPermissions.push(\"CANCEL_ORDER\");\n }\n if (permissions?.canRefund) {\n modifiedPermissions.push(\"RETURN_ORDER\");\n }\n if (permissions?.canEditCustomFields) {\n modifiedPermissions.push(\"EDIT_CUSTOM_FIELDS\");\n }\n return modifiedPermissions;\n }\n return DEFAULT_ORDER_PERMISSIONS;\n};\n\nfunction CreateNewOrder() {\n const [showPopup, setShowPopup] = useState(false);\n const showModal = () => {\n setShowPopup(!showPopup);\n };\n\n let subDomain = window.location.hostname.split(\".\")[0];\n const isbulkOrderFeatureEnabled = bulkOrderFeatureDomains.includes(subDomain);\n\n return (\n <div className=\"text-center\">\n <Popup\n heading={getMessage(\"order.create.bulk.text\")}\n show={showPopup}\n close={showModal}\n className=\"bulk-upload\"\n >\n <OrderUpload />\n </Popup>\n\n {isbulkOrderFeatureEnabled ? (\n <DropDown\n className=\"bulk-upload-dropdown\"\n icon={\n <button className=\"button primary create-order-dropdown-button\">\n + <span className=\"text\">{getMessage(\"order.add.text\")}</span>\n </button>\n }\n >\n <DropDownItem>\n <Link to=\"/operations/orders/add\">\n {getMessage(\"order.add.text\")}\n </Link>\n </DropDownItem>\n <DropDownItem onClick={showModal}>\n {getMessage(\"order.add.bulk.text\")}\n </DropDownItem>\n </DropDown>\n ) : (\n <Link to=\"/operations/orders/add\" className=\"primary button\">\n + <span className=\"text\">{getMessage(\"order.add.text\")}</span>\n </Link>\n )}\n </div>\n );\n}\n\nconst emptyState = (props) => {\n return {\n icon: emptyIcon,\n message: getMessage(\"order.emptyList.message\"),\n actions: ({ onAction, apiParams }) => (\n <React.Fragment>\n <CreateNewOrder />\n {isExtensionEnabled(\"MultiStoreSupport\") && (\n <StoreSelector\n value={apiParams.storeId}\n stores={props.stores}\n onChange={(storeId) => {\n onAction(TABLE_ACTIONS.SET_API_PARAMS, { storeId });\n }}\n />\n )}\n </React.Fragment>\n ),\n };\n};\n\nconst helpItems = {\n title: getMessage(\"order.helpItems.title\"),\n instructions: [\n {\n icon: seoIcon,\n title: getMessage(\"order.helpItems.seo.title\"),\n description: getMessage(\"order.helpItems.seo.description\"),\n },\n {\n icon: rcmIcon,\n title: getMessage(\"order.helpItems.rcm.title\"),\n description: getMessage(\"order.helpItems.rcm.description\"),\n },\n {\n icon: newCustomerIcon,\n title: getMessage(\"order.helpItems.nca.title\"),\n description: getMessage(\"order.helpItems.nca.description\"),\n },\n ],\n};\n\nconst { Provider, Consumer } = React.createContext(\"commConfig\");\n\nconst OrdersContainer = class Orders extends Component {\n constructor(props) {\n super(props);\n this.state = {\n orderActions: getOrderPermissions(),\n courierParams: isExtensionEnabled(\"ShipRocket\")\n ? { \"includes[1]\": \"courierDetails\" }\n : {},\n };\n }\n getOrderConfig = () => {\n const orderConfigApi = new API({ url: \"/config-service/config/order\" });\n orderConfigApi\n .get()\n .then((response) => {\n this.setState({ orderConfiguration: response.data?.order || {} });\n })\n .catch((error) => console.error(error));\n };\n\n componentDidMount() {\n this.getOrderConfig();\n this.communicationApi = new API({\n url: `/account-service/config/communication`,\n });\n this.communicationApi\n .get()\n .then((response) => {\n this.setState({ communicationConfig: response.data.config });\n })\n .catch((error) => {\n throw error;\n });\n\n if (isExtensionEnabled(\"InStoreProcessing\")) {\n this.api = new API({\n url: `/config-service/config/inStoreProcessing.packedOrderEditAllowed`,\n });\n this.api\n .get()\n .then((res) => {\n if (checkHttpResponseCode(res.code) && res.status === \"SUCCESS\") {\n this.setState({\n packedOrderEdit:\n res &&\n res.data &&\n res.data.inStoreProcessing &&\n res.data.inStoreProcessing.packedOrderEditAllowed,\n });\n }\n })\n .catch((err) => {\n console.error(err);\n if (err.code === 401 || err.code === 403) {\n throw err;\n }\n });\n }\n }\n componentWillUnmount() {\n this.communicationApi && this.communicationApi.cancel();\n }\n render() {\n const { props } = this;\n const { courierParams } = this.state;\n // If url is present in the props, then we need to show customer support related interfaces\n return (\n <Provider value={this.state && this.state.communicationConfig}>\n <ListingPage\n menu={props.menu}\n className={`orders-page ${this.props.className || \"ops\"}`}\n title={getMessage(\"operations.dashboard.orders\")}\n api={{\n url: \"/order-service/order\",\n params: { ...props.params, ...courierParams },\n updateApiParams: props.updateApiParams\n ? props.updateApiParams\n : null,\n transform: (response) => {\n const orders = response.data.order;\n if (Array.isArray(orders)) {\n orders.map((order) => {\n if (order.createdAt) {\n order.createdAt = getStandradDateTime(\n utcToLocalTime,\n order.createdAt\n );\n }\n if (order.completedAt) {\n order.completedAt = getStandradDateTime(\n utcToLocalTime,\n order.completedAt\n );\n }\n if (order.updatedAt) {\n order.updatedAt = getStandradDateTime(\n utcToLocalTime,\n order.updatedAt\n );\n }\n if (order.preferredDate && order.slotStartTime) {\n const tempDate = getStandradDateTime(\n utcToLocalTime,\n `${order.preferredDate} ${order.slotStartTime}`\n ).split(\" \");\n order.preferredDate = tempDate[0];\n order.slotStartTime = tempDate[1];\n }\n if (order.preferredDate && order.slotEndTime) {\n const tempDate = getStandradDateTime(\n utcToLocalTime,\n `${order.preferredDate} ${order.slotEndTime}`\n ).split(\" \");\n order.slotEndTime = tempDate[1];\n }\n return order;\n });\n }\n return orders;\n },\n }}\n primaryKey=\"referenceNumber\"\n emptyState={props.emptyState ? props.emptyState() : emptyState(props)}\n helpItems={helpItems}\n filters={{\n component: OrderFilters,\n transformFilter: (formData) => {\n let result = Object.assign({}, formData);\n if (result.customer) {\n result.customerId = result.customer.id;\n delete result.customer;\n }\n if (result.slot) {\n let slotDetails = JSON.parse(result.slot);\n if (slotDetails.startTime) {\n result.slotStartTime = slotDetails.startTime;\n }\n result.slotEndTime = slotDetails.endTime;\n result.type = slotDetails.type;\n delete result.slot;\n }\n return result;\n },\n transformSubmit: (formData) => {\n let searchParams = \"\";\n Object.keys(formData)\n .filter(\n (key) =>\n key !== \"filters\" && (formData[key] === 0 || formData[key])\n )\n .forEach((key, index) => {\n if (index === 0) {\n searchParams += `?${key}=${formData[key]}`;\n } else {\n searchParams += `&${key}=${formData[key]}`;\n }\n });\n if (searchParams !== \"\") {\n this.props.history.push({ search: searchParams });\n }\n let result = Object.assign({}, formData);\n if (result.customer) {\n result.customerId = result.customer.id;\n delete result.customer;\n }\n if (result.slot) {\n let slotDetails = JSON.parse(result.slot);\n if (slotDetails.startTime) {\n result.slotStartTime = slotDetails.startTime;\n }\n result.slotEndTime = slotDetails.endTime;\n result.type = slotDetails.type;\n delete result.slot;\n }\n return result;\n },\n }}\n onClear={() => this.props.history.push({ search: \"filters=all\" })}\n headerActions={({ apiParams, onAction }) =>\n this.props.url.includes(\"operations\") &&\n this.state.orderActions?.includes(\"CREATE_ORDER\") ? (\n <React.Fragment>\n <CreateNewOrder />\n </React.Fragment>\n ) : null\n }\n tableProperties={tabularView(\n this.props.url,\n this.state && this.state.packedOrderEdit,\n this.state?.orderConfiguration\n )}\n tableDynamic\n storeDependent={this.props.url === \"/operations\"}\n />\n </Provider>\n );\n }\n};\n\nexport default OrdersContainer;\n\nexport { Provider, Consumer };\n","import React from \"react\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport { BaseForm, Input, VALIDATION_TYPES } from \"../../../components/Form\";\nimport Table, { Header } from \"../../../components/Table\";\nimport CustomerTableView from \"../../operations/Customers/Tables\";\nimport OrderContainer from \"../../operations/Orders/Table\";\nimport Loader from \"../../../components/Loader\";\nimport API from \"../../../lib/api\";\nimport { getMessage } from \"../../../lib/translator\";\n\nimport \"./style.css\";\n\nclass CsDashboard extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n orderNumber: null,\n orderSearch: false,\n isApiCalled: false,\n };\n this.onSubmit = this.onSubmit.bind(this);\n }\n\n onSubmit() {\n // Check if the form is empty\n let emptyForm =\n this.state.values &&\n Object.values(this.state.values).filter((value) => Boolean(value));\n emptyForm = emptyForm ? emptyForm.length === 0 : true;\n\n if (!emptyForm) {\n this.setState({ submitting: true, isApiCalled: false });\n let orderSearch = Boolean(this.state.values.referenceNumber);\n if (orderSearch) {\n this.setState({\n orderSearch: true,\n orderNumber: this.state.values.referenceNumber,\n customer: null,\n submitting: false,\n isApiCalled: false,\n });\n return;\n }\n const api = new API({ url: \"/customer-service/customer\" });\n const params = {\n email: this.state.values.email,\n phone: this.state.values.phone,\n };\n api\n .get(params, { \"X-API-VERSION\": 2 })\n .then((response) => {\n if (response.data) {\n if (response.data.customer) {\n this.setState({\n customer: response.data.customer,\n orderSearch: false,\n orderNumber: null,\n submitting: false,\n isApiCalled: true,\n });\n } else {\n this.setState({\n customer: null,\n orderSearch: false,\n orderNumber: null,\n submitting: false,\n isApiCalled: true,\n });\n }\n }\n })\n .catch((error) => {\n console.error(error);\n });\n } else {\n this.setState({\n customer: null,\n orderSearch: false,\n orderNumber: null,\n submitting: false,\n isApiCalled: false,\n });\n }\n }\n\n _getRow = (data) => {\n let result = {\n data: null,\n index: -1,\n };\n if (!data) {\n return result;\n }\n let { customer } = this.state;\n for (let i = 0, len = customer.length; i < len; i++) {\n let item = customer[i];\n let matched = true;\n for (let key in data) {\n if (!(key in item) || item[key] !== data[key]) {\n matched = false;\n break;\n }\n }\n if (matched) {\n result.data = item;\n result.index = i;\n break;\n }\n }\n return result;\n };\n\n modifyResource = (params) => {\n // Make an API call to update the resource\n let api = new API({\n url: \"/customer-service/customer/\" + params.id,\n });\n return api\n .put(params, { \"X-API-VERSION\": 2 })\n .then((response) => response)\n .catch((error) => {\n console.error(error);\n });\n };\n\n performAction = (action, data, updates) => {\n // action: (string) Action to perform\n // data: The data needed to search a specific a row\n // updates: The data to update the row with\n if (action in TABLE_ACTIONS) {\n switch (action) {\n case TABLE_ACTIONS.UPDATE:\n let row = this._getRow(data);\n if (row.index >= 0 && updates) {\n let params = Object.assign({}, data, updates);\n return this.modifyResource(params);\n }\n break;\n default:\n break;\n }\n }\n };\n\n render() {\n const { rerender } = this.props;\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n let CustomerRow = CustomerTableView(\"customer-support\", rerender).row;\n let componentProps = { ...this.props };\n componentProps.className = \"cx-search-results\";\n componentProps.url = \"/customer-support\";\n\n componentProps.emptyState = (props) => {\n return {\n message: \"No Orders Matched\",\n };\n };\n\n delete componentProps.menu;\n if (this.state.orderSearch) {\n componentProps.params = { referenceNumber: this.state.orderNumber };\n componentProps.updateApiParams = (prevParams, newParams) => {\n if (prevParams.referenceNumber !== newParams.referenceNumber) {\n return {\n shouldUpdate: true,\n params: {\n referenceNumber: newParams.referenceNumber,\n },\n };\n }\n };\n }\n return (\n <AuthenticatedPage menu={this.props.menu}>\n <h1 className=\"title\">Customer Support</h1>\n <Form className=\"customer-support-home\">\n <div className=\"form-fields\">\n <Input\n label={getMessage(\"customer.enterCustomerEmail\")}\n placeholder={getMessage(\"customer.searchByEmail\")}\n name=\"email\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"email\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n />\n <Input\n label={getMessage(\"customer.enterCustomerPhone\")}\n placeholder={getMessage(\"customer.searchByPhone\")}\n name=\"phone\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"phone\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n />\n <Input\n label={getMessage(\"order.filters.referenceNumber.heading\")}\n placeholder={getMessage(\n \"order.filters.referenceNumber.placeholder\"\n )}\n name=\"referenceNumber\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"referenceNumber\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n />\n </div>\n <SubmitButton>\n {getMessage(\"customer.filters.submittext\")}\n </SubmitButton>\n </Form>\n {this.state.submitting ? (\n <Loader />\n ) : (\n <div className=\"table-container\">\n {this.state.customer ? (\n this.state.customer.length > 0 ? (\n <div className=\"customers-page\">\n <Table tableDynamic>\n {CustomerTableView(\"customer-support\").headers ? (\n <Header\n items={CustomerTableView(\"customer-support\").headers}\n />\n ) : null}\n {this.state.customer.map((row, index) => (\n <CustomerRow\n {...row}\n onAction={this.performAction}\n key={\"cs-cumtomer\" + index}\n />\n ))}\n </Table>\n </div>\n ) : (\n <div className=\"text-muted text-center\">\n {getMessage(\"customerSupport.search.noCustomer\")}\n </div>\n )\n ) : this.state.isApiCalled ? (\n <div className=\"text-muted text-center\">\n {getMessage(\"customerSupport.search.noCustomer\")}\n </div>\n ) : null}\n {this.state.orderSearch ? (\n <OrderContainer {...componentProps} />\n ) : null}\n </div>\n )}\n </AuthenticatedPage>\n );\n }\n}\n\nexport default CsDashboard;\n","import React from \"react\";\nimport Image from \"../Image\";\nimport \"./style.css\";\n\nexport default function InfoCard(props) {\n return (\n <div className={`InfoCard ${props.className}`}>\n <Image src={props.src} />\n <div className=\"infocard-details\">\n <div className=\"title\">{props.title}</div>\n <div className=\"description\">{props.description}</div>\n </div>\n </div>\n );\n}\n","import React, { Component } from \"react\";\nimport { hasPermissions } from \"../../lib/auth\";\nimport Image from \"../Image\";\nimport {\n Email as CustomerEmailWidget,\n Call as CustomerCallWidget,\n Sms as CustomerSmsWidget,\n} from \"../../containers/CustomerWidgets\";\nimport { format, parse } from \"libphonenumber-js\";\nimport \"./style.css\";\n\nexport default class CustomerDetailsCard extends Component {\n render() {\n const {\n phones,\n emails,\n image,\n communicationConfig,\n defaultPhone,\n defaultEmail,\n defaultEmailId,\n defaultPhoneId,\n } = this.props;\n let allowCall =\n communicationConfig &&\n communicationConfig.communication &&\n communicationConfig.communication.allowCall !== false;\n let allowSms =\n communicationConfig &&\n communicationConfig.communication &&\n communicationConfig.communication.allowSms !== false;\n let allowEmail =\n communicationConfig &&\n communicationConfig.communication &&\n communicationConfig.communication.allowEmail !== false;\n\n let number =\n phones && phones.filter((number) => number.id === defaultPhoneId);\n number = number && number.length > 0 && number[0] && number[0].phone;\n let email = emails && emails.filter((email) => email.id === defaultEmailId);\n email = email && email.length > 0 && email[0] && email[0].email;\n return (\n <div className=\"CustomerDetailsCard\">\n <div className=\"customer-details\">\n <Image src={image} />\n <div className=\"detail\">\n <div>{(defaultEmail && defaultEmail.email) || email}</div>\n <div>\n {(defaultPhone && defaultPhone.phone\n ? Object.keys(parse(defaultPhone.phone)).length > 0\n ? format(parse(defaultPhone.phone), \"International\")\n : defaultPhone.phone\n : null) ||\n (number && Object.keys(parse(number)).length > 0\n ? format(parse(number), \"International\")\n : number)}\n </div>\n </div>\n </div>\n <div className=\"customer-actions\">\n {allowCall &&\n hasPermissions(\"communication\", \"call\", \"post\") &&\n phones &&\n !!phones.length && (\n <CustomerCallWidget\n phones={phones}\n defaultPhoneId={defaultPhoneId}\n />\n )}\n {allowEmail &&\n hasPermissions(\"communication\", \"email\", \"post\") &&\n emails &&\n !!emails.length && (\n <CustomerEmailWidget\n emails={emails}\n defaultEmailId={defaultEmailId}\n />\n )}\n {allowSms &&\n hasPermissions(\"communication\", \"sms\", \"post\") &&\n phones &&\n !!phones.length && (\n <CustomerSmsWidget\n phones={phones}\n defaultPhoneId={defaultPhoneId}\n />\n )}\n </div>\n </div>\n );\n }\n}\n","import React from \"react\";\nimport Image from \"../Image\";\nimport phoneIcon from \"./cx-phone-icon.svg\";\nimport emailIcon from \"./cx-email-icon.svg\";\nimport verifiedIcon from \"./verified.svg\";\nimport \"./style.css\";\nimport { getMessage } from \"../../lib/translator\";\nimport { DropDown, DropDownItem } from \"../DropDown\";\n\nimport icon from \"./actions.png\";\n\nfunction customerContactActions(action, actions, props) {\n if (action === actions.setAsDefault) {\n props.setDefaultPhoneOrEmail &&\n props.setDefaultPhoneOrEmail(props.type, props.id);\n } else if (action === actions.delete) {\n props.showDeleteOption && props.onDelete(props.id);\n }\n}\n\nexport default function PhoneAndEmailDisplay(props) {\n let actions = {\n setAsDefault: getMessage(\"customer.contact.details.set.default\"),\n delete: getMessage(\"customer.contact.details.delete\"),\n };\n const isDefault = props.defaultId === props.id;\n return (\n <div className=\"cx-phone-email-container\">\n <div className={`cx-phone-email-card cx-${props.type}-card`}>\n <span className={`${props.type}-icon`}>\n <img\n src={props.type === \"phone\" ? phoneIcon : emailIcon}\n alt=\"icon\"\n />\n </span>\n <div className={`customer-${props.type}`}>{props.value}</div>\n {props.status === \"VERIFIED\" && (\n <Image src={verifiedIcon} alt=\"verified\" />\n )}\n </div>\n <div className=\"cx-phone-email-actions\">\n {isDefault && (\n <span className=\"default\">\n {getMessage(\"customer.contact.details.default\")}\n </span>\n )}\n {!isDefault ? (\n <DropDown icon={<img src={icon} alt=\"drop-down-icon\" />}>\n {Object.keys(actions).map((action, index) => (\n <DropDownItem\n key={action}\n onClick={() =>\n customerContactActions(actions[action], actions, props)\n }\n >\n {actions[action]}\n </DropDownItem>\n ))}\n </DropDown>\n ) : (\n <img className=\"default-disabled\" src={icon} alt=\"drop-down-icon\" />\n )}\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { BaseForm } from \"../../../../../../components/Form\";\nimport { getMessage } from \"../../../../../../lib/translator\";\nimport API from \"../../../../../../lib/api\";\nimport Map from \"../../../../../../containers/CustomerWidgets/AddressMap\";\nimport \"./style.css\";\n\nclass MapForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n formError: \"\",\n submitting: false,\n };\n let lat = props.coordinates && Number(props.coordinates.lat);\n let lng = props.coordinates && Number(props.coordinates.lng);\n if (lat && lng) {\n this.state.values = {\n location: {\n lat: lat,\n lng: lng,\n },\n };\n }\n [\"setNewLocation\", \"showError\"].forEach((fn) => {\n this[fn] = this[fn].bind(this);\n });\n }\n\n setNewLocation(lat, lng) {\n let values = { ...this.state.values };\n values.location = { lat, lng };\n this.setState({\n values,\n formError: null,\n });\n }\n\n showError(error) {\n this.setState({\n formError: error,\n });\n }\n\n onSubmit(data) {\n this.setState({\n submitting: true,\n });\n const api = new API({\n url: `/customer-service/address/${this.props.addressId}`,\n });\n let params = {};\n let lat = null;\n let lng = null;\n if (this.state.values && this.state.values.location) {\n lat = this.state.values.location.lat;\n lng = this.state.values.location.lng;\n }\n\n params[\"latitude\"] = lat;\n params[\"longitude\"] = lng;\n params[\"customerId\"] = this.props.customerId; // For tripPlanner page, customerId is required\n api\n .put(params)\n .then((response) => {\n this.setState({\n submitting: false,\n });\n this.props.onSuccess(\n response.data.address.latitude,\n response.data.address.longitude\n );\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n render() {\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n let { address, isTripPlannerPage, stores, deliveryAreas, storeId } =\n this.props;\n let coor =\n this.state.values && this.state.values.location\n ? this.state.values.location\n : null;\n return (\n <div className=\"MapForm\">\n <div className=\"address-heading\">{address}</div>\n {this.state.formError && (\n <div className=\"form-error\">{this.state.formError}</div>\n )}\n <Map\n address={address}\n showError={this.showError}\n draggable\n setNewLocation={this.setNewLocation}\n searchBox\n coor={coor}\n isTripPlannerPage={isTripPlannerPage}\n stores={stores}\n deliveryAreas={deliveryAreas}\n storeId={storeId}\n />\n <Form>\n <div className=\"form-buttons-container\">\n <SubmitButton\n disabled={Boolean(!this.state.values || this.state.submitting)}\n >\n {getMessage(\"save\")}\n </SubmitButton>\n </div>\n </Form>\n </div>\n );\n }\n}\nexport default MapForm;\n","import React, { Component } from \"react\";\nimport \"./style.css\";\nimport { Popup as Modal } from \"../../../../../components/Popup\";\nimport viewAddressIcon from \"./address-inactive.svg\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport { hasPermissions } from \"../../../../../lib/auth\";\nimport Dialog from \"../../../../../components/Popup/Dialog\";\nimport Mapform from \"./MapForm\";\n\nimport deleteIcon from \"./delete-icon.svg\";\n\nexport default class AddressCard extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showMap: false,\n error: null,\n showDeletePrompt: false,\n showSuccessDialog: false,\n location: props.coordinates,\n };\n [\n \"showMap\",\n \"hideMap\",\n \"showError\",\n \"showDeletePrompt\",\n \"handleCloseDialog\",\n \"onSuccess\",\n \"showSuccessDialog\",\n \"handleSuccessClose\",\n ].forEach((fn) => {\n this[fn] = this[fn].bind(this);\n });\n }\n\n hideMap() {\n this.setState({\n showMap: false,\n error: null,\n });\n }\n\n showMap() {\n this.setState({\n showMap: true,\n });\n }\n\n showError(error) {\n this.setState({\n error,\n });\n }\n\n showDeletePrompt() {\n this.setState({\n showDeletePrompt: true,\n });\n }\n handleCloseDialog() {\n this.setState({\n showDeletePrompt: false,\n });\n }\n\n showSuccessDialog() {\n this.setState({\n showSuccessDialog: true,\n });\n }\n\n handleSuccessClose() {\n this.setState({\n showSuccessDialog: false,\n });\n }\n\n onSuccess(lat, lng) {\n this.setState({\n location: { lat, lng },\n });\n this.hideMap();\n this.showSuccessDialog();\n }\n\n render() {\n const {\n deleteMessage,\n title,\n value,\n onDelete,\n id,\n viewOnMap,\n showDeleteOption,\n customerId,\n } = this.props;\n const { showMap, showDeletePrompt, showSuccessDialog } = this.state;\n const coors = this.state.location;\n return (\n <div className=\"AddressCard\">\n <div className=\"title\">{title}</div>\n <div className=\"value\">{value}</div>\n <div className=\"card-actions\">\n <button className=\"map-link\" onClick={this.showMap}>\n <img className=\"view-address-icon\" src={viewAddressIcon} alt=\"\" />\n <span className=\"view-map-text\">{viewOnMap}</span>\n </button>\n {showDeleteOption &&\n hasPermissions(\"customer\", \"address\", \"delete\") && (\n <button className=\"action2\" onClick={this.showDeletePrompt}>\n <img src={deleteIcon} alt=\"delete-icon\" />\n {deleteMessage}\n </button>\n )}\n </div>\n {showDeletePrompt && (\n <Dialog\n show={this.state.showDeletePrompt}\n close={this.handleCloseDialog}\n title={getMessage(\"customer.address.delete.prompt.title\")}\n closeText={getMessage(\"customer.cancel.message\")}\n onOk={() => {\n onDelete(id);\n }}\n okText={getMessage(\"customer.confirm.message\")}\n />\n )}\n {showSuccessDialog && (\n <Dialog\n className=\"success\"\n show={this.state.showSuccessDialog}\n close={this.handleSuccessClose}\n title={getMessage(\"customer.address.success\")}\n information={getMessage(\"customer.address.saved\")}\n closeText={getMessage(\"customer.address.okay\")}\n />\n )}\n {showMap && (\n <Modal\n className=\"editPopup map-address\"\n heading={getMessage(\"customer.address.modal.heading\")}\n show={this.state.showMap}\n close={this.hideMap}\n >\n <Mapform\n address={value}\n draggable\n addressId={id}\n onSuccess={this.onSuccess}\n customerId={customerId}\n coordinates={coors}\n />\n </Modal>\n )}\n </div>\n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n VALIDATION_TYPES,\n} from \"../../../../../components/Form\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport API from \"../../../../../lib/api\";\nimport \"./style.css\";\n\nclass CallForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n reason: getMessage(\"customer.details.call.option.orderEdit\"),\n submitting: \"\",\n formError: \"\",\n otherOptionValue: \"\",\n };\n this.options = [\n getMessage(\"customer.details.call.option.lateDelivery\"),\n getMessage(\"customer.details.call.option.orderEdit\"),\n getMessage(\"customer.details.call.option.paymentReminder\"),\n getMessage(\"customer.details.call.option.rescheduling\"),\n getMessage(\"customer.details.call.option.orderConfirmation\"),\n getMessage(\"customer.details.call.option.addressClarification\"),\n getMessage(\"customer.details.call.option.callToInternalEmployees\"),\n getMessage(\"customer.details.call.option.tripEnquiry\"),\n getMessage(\"customer.details.call.option.surveyOnceShopped\"),\n getMessage(\"customer.details.call.option.retention\"),\n getMessage(\"customer.details.call.option.other\"),\n ];\n this.handleSubmit = this.handleSubmit.bind(this);\n this.changeReason = this.changeReason.bind(this);\n this.submitForm = this.submitForm.bind(this);\n }\n\n handleSubmit(data) {\n const api = new API({ url: `/communication-service/call` });\n let params = {};\n params[\"number\"] = this.props.number;\n params[\"reason\"] = this.state.reason;\n params[\"transactional\"] = false;\n params[\"template\"] = \"no-template\";\n return api\n .post(params)\n .then(\n (response) => {\n this.setState({ formError: \"\" });\n },\n (error) => {\n this.setState({ formError: error.message });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n submitForm(data) {\n this.setState({\n submitting: true,\n });\n this.handleSubmit(data).then(() => {\n this.setState({\n submitting: false,\n });\n if (this.state.formError === \"\") {\n this.props.onSuccess(\"call\");\n }\n });\n }\n\n changeReason(event) {\n this.setState({\n reason: event.target.value,\n });\n }\n\n render() {\n const { Form } = this.components;\n return (\n <div className=\"CallForm\">\n <Form>\n {this.state.formError && (\n <div className=\"form-error\">{this.state.formError}</div>\n )}\n <select value={this.state.reason} onChange={this.changeReason}>\n {this.options.map((option, index) => (\n <option key={option} value={option} onClick={this.changeReason}>\n {option}\n </option>\n ))}\n </select>\n\n {this.state.reason ===\n getMessage(\"customer.details.call.option.other\") ? (\n <Input\n label=\"Enter reason\"\n name=\"other\"\n required\n {...this.generateStateMappers({\n stateKeys: [\"otherOptionValue\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n ) : (\n \"\"\n )}\n\n <div className=\"form-buttons-container\">\n <button\n type=\"button\"\n className=\"primary button\"\n disabled={this.state.submitting}\n onClick={this.submitForm}\n >\n {getMessage(\"customer.details.call.submitText.call\")}\n </button>\n </div>\n </Form>\n </div>\n );\n }\n}\nexport default CallForm;\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n VALIDATION_TYPES,\n Textarea,\n} from \"../../../../../components/Form\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport API from \"../../../../../lib/api\";\n\nclass MailForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.values = {\n subject: \"\",\n body: \"\",\n submitting: false,\n formError: \"\",\n };\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n handleSubmit(data) {\n const api = new API({ url: \"/communication-service/email\" });\n let params = {};\n params[\"to\"] = this.props.to;\n params[\"transactional\"] = false;\n params[\"type\"] = \"no-template\";\n let dataToSend = {};\n dataToSend[\"subject\"] = data[\"subject\"];\n dataToSend[\"body\"] = data[\"body\"];\n params[\"data\"] = dataToSend;\n return api\n .post(params)\n .then(\n (response) => {\n this.setState({ formError: \"\" });\n },\n (error) => {\n this.setState({ formError: error.message });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n onSubmit(data) {\n this.setState({\n submitting: true,\n });\n this.handleSubmit(data)\n .then(() => {\n this.setState({ submitting: false });\n if (this.state.formError === \"\") {\n this.props.onSuccess(\"render\");\n }\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n return (\n <div className=\"MailForm\">\n <Form>\n {this.state.formError && (\n <div className=\"form-error\">{this.state.formError}</div>\n )}\n <Input\n label={getMessage(\"customer.details.mail.subject\")}\n type=\"text\"\n name=\"subject\"\n required\n {...this.generateStateMappers({\n stateKeys: [\"subject\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n <Textarea\n label={getMessage(\"customer.details.mail.body\")}\n type=\"text\"\n name=\"body\"\n className=\"mail\"\n required\n {...this.generateStateMappers({\n stateKeys: [\"body\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n <div className=\"form-buttons-container\">\n <SubmitButton disabled={this.state.submitting}>\n {getMessage(\"customer.details.mail.submitText.send\")}\n </SubmitButton>\n </div>\n </Form>\n </div>\n );\n }\n}\nexport default MailForm;\n","import React from \"react\";\nimport {\n BaseForm,\n VALIDATION_TYPES,\n Textarea,\n} from \"../../../../../components/Form\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport API from \"../../../../../lib/api\";\n\nclass SmsForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n message: \"\",\n submitting: false,\n formError: \"\",\n };\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n handleSubmit(data) {\n const api = new API({ url: \"/communication-service/SMS\" });\n let params = {};\n params[\"to\"] = this.props.to;\n params[\"transactional\"] = false;\n params[\"type\"] = \"no-template\";\n params[\"data\"] = {};\n params[\"data\"][\"content\"] = data.message;\n return api\n .post(params)\n .then(\n (response) => {\n this.setState({ formError: \"\" });\n },\n (error) => {\n this.setState({ formError: error.message });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n onSubmit(data) {\n this.setState(\n {\n submitting: true,\n },\n () => {\n this.handleSubmit(data).then(() => {\n this.setState({\n submitting: false,\n });\n if (this.state.formError === \"\") {\n this.props.onSuccess(\"sms\");\n }\n });\n }\n );\n }\n\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n return (\n <div className=\"SmsForm\">\n <Form>\n {this.state.formError && (\n <div className=\"form-error\">{this.state.formError}</div>\n )}\n <Textarea\n label={getMessage(\"customer.details.sms.message\")}\n type=\"text\"\n name=\"content\"\n required\n {...this.generateStateMappers({\n stateKeys: [\"message\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n <div className=\"form-buttons-container\">\n <SubmitButton disabled={this.state.submitting}>\n {getMessage(\"customer.details.mail.submitText.send\")}\n </SubmitButton>\n </div>\n </Form>\n </div>\n );\n }\n}\nexport default SmsForm;\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n VALIDATION_TYPES,\n} from \"../../../../../components/Form\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport API from \"../../../../../lib/api\";\n\nclass AddEmailForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n email: \"\",\n submitting: false,\n formError: \"\",\n };\n this.response = \"\";\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n handleSubmit(data) {\n const api = new API({ url: \"/customer-service/email\" });\n let params = {};\n params[\"customerId\"] = this.props.customerId;\n params[\"email\"] = data[\"email\"];\n\n return api\n .post(params)\n .then(\n (response) => {\n this.setState({ formError: \"\" });\n this.response = response.data.email;\n },\n (error) => {\n this.setState({ formError: error.message });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n onSubmit(data) {\n this.setState(\n {\n submitting: true,\n },\n () => {\n this.handleSubmit(data).then(() => {\n this.setState({\n submitting: false,\n });\n if (this.state.formError === \"\") {\n this.props.onSuccess(\"addedEmail\", this.response);\n }\n });\n }\n );\n }\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n return (\n <div className=\"addEmailForm\">\n <Form>\n {this.state.formError && (\n <div className=\"form-error\">{this.state.formError}</div>\n )}\n <Input\n label={getMessage(\"customer.details.email.email\")}\n type=\"email\"\n name=\"email\"\n required\n {...this.generateStateMappers({\n stateKeys: [\"email\"],\n validationType: VALIDATION_TYPES.ONCHANGE,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n typeMismatch: getMessage(\"input.invalidEmailFormat\"),\n }}\n />\n <div className=\"form-buttons-container\">\n <SubmitButton disabled={this.state.submitting}>\n {getMessage(\"customer.details.submitText.submit\")}\n </SubmitButton>\n </div>\n </Form>\n </div>\n );\n }\n}\nexport default AddEmailForm;\n","import React from \"react\";\nimport {\n BaseForm,\n VALIDATION_TYPES,\n Phone,\n} from \"../../../../../components/Form\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport API from \"../../../../../lib/api\";\nimport \"./style.css\";\n\nclass AddPhoneNumberForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n values: {\n phone: \"\",\n },\n submitting: false,\n formError: \"\",\n };\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n handleSubmit(data) {\n const api = new API({ url: \"/customer-service/phone\" });\n let params = {};\n params[\"customerId\"] = this.props.customerId;\n params[\"phone\"] = data[\"phone\"];\n return api\n .post(params)\n .then(\n (response) => {\n this.setState({ formError: \"\" });\n this.response = response.data.phone;\n },\n (error) => {\n this.setState({ formError: error.message });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n onSubmit(data) {\n this.setState(\n {\n submitting: true,\n },\n () => {\n this.handleSubmit(data).then(() => {\n this.setState({\n submitting: false,\n });\n if (this.state.formError === \"\") {\n this.props.onSuccess(\"addedPhone\", this.response);\n }\n });\n }\n );\n }\n\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n return (\n <div className=\"AddPhoneNumberForm\">\n <Form>\n {this.state.formError && (\n <div className=\"form-error\">{this.state.formError}</div>\n )}\n <Phone\n country={this.props.countryIso}\n label={getMessage(\"customer.details.phone.phoneNumber\")}\n name=\"phone\"\n type=\"text\"\n required\n {...this.generateStateMappers({\n stateKeys: [\"phone\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n />\n <div className=\"form-buttons-container\">\n <SubmitButton disabled={this.state.submitting}>\n {getMessage(\"customer.details.submitText.submit\")}\n </SubmitButton>\n </div>\n </Form>\n </div>\n );\n }\n}\nexport default AddPhoneNumberForm;\n","import React from \"react\";\nimport { GOOGLE_MAPS_URL, GOOGLE_MAP_DEFAULT_KEY } from \"../../config/app\";\n\nimport { compose, withProps, lifecycle } from \"recompose\";\nimport { withScriptjs } from \"react-google-maps\";\nimport { StandaloneSearchBox } from \"react-google-maps/lib/components/places/StandaloneSearchBox\";\nimport { get } from \"../../lib/storage\";\n\nconst PlacesWithStandaloneSearchBox = compose(\n withProps({\n googleMapURL:\n GOOGLE_MAPS_URL + (get(\"googleMapAPIkey\") || GOOGLE_MAP_DEFAULT_KEY),\n loadingElement: <div style={{ height: `100%` }} />,\n containerElement: <div style={{ height: `400px` }} />,\n }),\n lifecycle({\n componentWillMount() {\n const refs = {};\n\n this.setState({\n places: [],\n onSearchBoxMounted: (ref) => {\n refs.searchBox = ref;\n },\n onPlacesChanged: () => {\n const places = refs.searchBox.getPlaces();\n this.setState(\n {\n places,\n },\n () => this.props.onPlacesSearched(this.state.places)\n );\n },\n });\n },\n }),\n withScriptjs\n)((props) => (\n <div data-standalone-searchbox=\"\">\n <StandaloneSearchBox\n ref={props.onSearchBoxMounted}\n bounds={props.bounds}\n onPlacesChanged={props.onPlacesChanged}\n >\n <div className=\"field\">\n {props.element ? (\n props.element\n ) : (\n <div className=\"field-wrapper\">\n <label htmlFor={props.fieldname}>{props.label}</label>\n <input\n name={props.fieldname}\n value={props.value}\n type=\"text\"\n placeholder={props.placeholder ? props.placeholder : \"\"}\n onFocus={props.onFocusFunction ? props.onFocusFunction : null}\n onChange={\n props.onChange &&\n ((e) => {\n props.onChange(e);\n })\n }\n onBlur={props.onBlurFunction ? props.onBlurFunction : null}\n required={props.required ? props.required : false}\n disabled={props.readOnly}\n />\n </div>\n )}\n </div>\n </StandaloneSearchBox>\n </div>\n));\n\nexport default PlacesWithStandaloneSearchBox;\n","import React from \"react\";\nimport { BaseForm, Input } from \"../../../../../components/Form\";\nimport MetadataFormFields from \"../../../../../components/MetaDataFormFields\";\nimport PlacesWithStandaloneSearchBox from \"../../../../../components/StandaloneSearchBox\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport API from \"../../../../../lib/api\";\nimport { isExtensionEnabled } from \"../../../../../lib/auth\";\nimport Loader from \"../../../../../components/Loader\";\n\nclass AddAddressForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n address: \"\",\n landmark: \"\",\n pincode: \"\",\n city: \"\",\n submitting: false,\n latitude: \"\",\n longitude: \"\",\n formError: \"\",\n };\n this.sequence = null;\n if (\n isExtensionEnabled(\"EntityMetaData\") &&\n props.sequence &&\n props.sequence.length\n ) {\n this.sequence = props.sequence;\n }\n this.response = \"\";\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n componentDidMount() {\n this.setState({\n loading: true,\n });\n if (isExtensionEnabled(\"EntityMetaData\")) {\n // let id = getExtensionDetails('EntityMetaData').id\n this.api = new API({ url: `/config-service/meta-data` });\n this.sequenceApi = new API({ url: \"/config-service/config/customers\" });\n Promise.all([this.api.get(), !this.sequence && this.sequenceApi.get()])\n .then(([extnResponse, sequenceResponse]) => {\n const config = extnResponse.data.config.entityMetaData.address;\n this.sequence =\n (sequenceResponse &&\n sequenceResponse.data.customers.addressSequence) ||\n this.sequence;\n if (config && !config.length && this.sequence) {\n let sequenceConfig = {};\n this.sequence.forEach((key) => {\n sequenceConfig[key] = config[key];\n });\n this.customerConfig = sequenceConfig;\n } else {\n this.customerConfig = config;\n }\n this.setState({\n loading: false,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n } else {\n this.setState({\n loading: false,\n });\n }\n }\n\n componentWillUnmount() {\n this.api && this.api.cancel();\n }\n\n handleSubmit(data) {\n const api = new API({ url: \"/customer-service/address\" });\n let params = { ...data.address };\n params[\"customerId\"] = this.props.customerId;\n\n return api\n .post(params)\n .then(\n (response) => {\n this.setState({ formError: \"\" });\n this.response = response.data.address;\n },\n (error) => {\n this.setState({ formError: error.message });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n onSubmit(data) {\n this.setState(\n {\n submitting: true,\n },\n () => {\n this.handleSubmit(data).then(() => {\n this.setState({\n submitting: false,\n });\n if (this.state.formError === \"\") {\n this.props.onSuccess &&\n this.props.onSuccess(\"addedAddress\", this.response);\n }\n });\n }\n );\n }\n\n handlePlaceSearch = async (data, form) => {\n if (data?.[0]) {\n this.setState({ formError: \"\" });\n const addressComponents = data[0].address_components;\n const pincode = addressComponents?.filter(({ types }) =>\n types?.includes(\"postal_code\")\n )[0]?.short_name;\n const city = addressComponents?.filter(({ types }) =>\n types?.includes(\"locality\")\n )[0]?.short_name;\n const landmark = data[0].formatted_address;\n const location = data[0].geometry.location;\n const latitude = location.lat();\n const longitude = location.lng();\n const serviceableAreaAPI = new API({\n url: `/logistics-service/serviceable-area`,\n });\n try {\n const params = {\n \"address[latitude]\": latitude,\n \"address[longitude]\": longitude,\n \"address[pincode]\": pincode ?? \"\",\n };\n form.updateState([\"address\", \"landmark\"], landmark);\n const serviceableAreaResponse = await serviceableAreaAPI.get(params);\n if (serviceableAreaResponse.data) {\n form.updateState([\"address\", \"city\"], city);\n form.updateState([\"address\", \"latitude\"], latitude);\n form.updateState([\"address\", \"longitude\"], longitude);\n if (pincode) {\n form.updateState([\"address\", \"pincode\"], pincode);\n }\n } else {\n this.setState({\n formError: getMessage(\n \"customer.details.page.address.notServiceable.error\"\n ),\n });\n }\n } catch (e) {\n this.setState({ formError: e?.message ?? getMessage(\"error.generic\") });\n console.error(e);\n }\n }\n };\n\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n const { loading } = this.state;\n const { _this } = this.props;\n const Wrapper = _this ? \"div\" : Form;\n const form = _this || this;\n return (\n <div className=\"addAddressForm\">\n <Wrapper>\n {this.state.formError && (\n <div className=\"form-error\">{this.state.formError}</div>\n )}\n {loading ? (\n <Loader />\n ) : (\n <React.Fragment>\n {this.customerConfig && (\n <MetadataFormFields\n _this={_this || this}\n page=\"add-address\"\n className=\"form-fields\"\n metaDataWithType={this.customerConfig}\n preserveSequence\n stateKeys={[\"address\", \"metaData\"]}\n />\n )}\n <Input\n label={getMessage(\"customer.details.pages.address\")}\n placeholder={getMessage(\n \"customer.details.page.address.placeholder\"\n )}\n name=\"address\"\n required\n {...form.generateStateMappers({\n stateKeys: [\"address\", \"address\"],\n loseEmphasisOnFill: true,\n })}\n />\n <PlacesWithStandaloneSearchBox\n element={\n <Input\n label={getMessage(\"customer.details.address.landmark\")}\n placeholder={getMessage(\n \"customer.details.address.landmark.placeholder\"\n )}\n name=\"landmark\"\n required\n {...form.generateStateMappers({\n stateKeys: [\"address\", \"landmark\"],\n loseEmphasisOnFill: true,\n })}\n />\n }\n onPlacesSearched={(data) => this.handlePlaceSearch(data, form)}\n />\n <Input\n label={getMessage(\"customer.details.address.pincode\")}\n placeholder={getMessage(\n \"customer.details.address.pincode.placeholder\"\n )}\n name=\"pincode\"\n required\n {...form.generateStateMappers({\n stateKeys: [\"address\", \"pincode\"],\n loseEmphasisOnFill: true,\n })}\n />\n <Input\n label={getMessage(\"customer.details.address.city\")}\n placeholder={getMessage(\n \"customer.details.address.city.placeholder\"\n )}\n name=\"city\"\n required\n {...form.generateStateMappers({\n stateKeys: [\"address\", \"city\"],\n loseEmphasisOnFill: true,\n })}\n />\n </React.Fragment>\n )}\n {!_this && (\n <div className=\"form-buttons-container\">\n <SubmitButton disabled={this.state.submitting}>\n {getMessage(\"customer.details.submitText.submit\")}\n </SubmitButton>\n </div>\n )}\n </Wrapper>\n </div>\n );\n }\n}\nexport default AddAddressForm;\n","import React from \"react\";\nimport { BaseForm, CustomerTagSearch } from \"../../../../../components/Form\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport API from \"../../../../../lib/api\";\nimport \"./style.css\";\n\nclass UserTags extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n apiError: null,\n submitting: false,\n };\n }\n\n componentDidMount() {\n let values = Object.assign({}, this.state.values);\n let customerId = this.props.customer.id;\n if (customerId) {\n this.api = new API({\n url: `/customer-service/customer/${customerId}/tag`,\n });\n this.api\n .get()\n .then((response) => {\n values[\"tags\"] = response.data.tag;\n this.setState({\n values,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n\n componentWillUnmount() {\n this.api && this.api.cancel();\n }\n\n render() {\n const { Form } = this.components;\n return (\n <div className=\"user-tags\">\n <Form className=\"user-tags-form\">\n <CustomerTagSearch\n placeholder={getMessage(\n \"customer-service-tags.form.otherdetails.placeholder\"\n )}\n name=\"tags\"\n tags={this.state.values && this.state.values.tags}\n multiple\n {...this.generateStateMappers({\n stateKeys: [\"tags\"],\n loseEmphasisOnFill: true,\n })}\n customerId={this.props.customer.id}\n />\n </Form>\n </div>\n );\n }\n}\nexport default UserTags;\n","import React from \"react\";\nimport { BaseForm } from \"../../../../../components/Form\";\nimport MetaDataFormFields from \"../../../../../components/MetaDataFormFields\";\nimport { Dialog } from \"../../../../../components/Popup\";\n\nimport API from \"../../../../../lib/api\";\nimport {\n getEntityMetaData,\n isExtensionEnabled,\n getExtensionDetails,\n saveEntityMetaData,\n hasPermissions,\n} from \"../../../../../lib/auth\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport UserTags from \"./../UserTags\";\n\nimport \"./style.css\";\n\nclass MetaDataForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n editing: false,\n };\n this.metaDataWithType = {};\n this.getCustomerMetaData = this.getCustomerMetaData.bind(this);\n this.handleEdit = this.handleEdit.bind(this);\n this.showView = this.showView.bind(this);\n this.handleChange = this.handleChange.bind(this);\n }\n\n getCustomerMetaData() {\n let metaData = getEntityMetaData().customer;\n this.metaDataWithType = Object.assign({}, metaData);\n let customer = Object.assign({}, this.props.customer);\n this.metaData = customer.metaData;\n if (!customer.metaData) {\n metaData &&\n Object.entries(metaData).forEach(([key, type]) => {\n metaData[key] = \"\";\n });\n this.metaData = customer.metaData = metaData;\n }\n this.setState({\n values: customer,\n tempState: customer.metaData,\n prevState: customer.metaData,\n });\n }\n\n componentDidMount() {\n let customerKeys = getEntityMetaData() && getEntityMetaData().customer;\n if (\n (!customerKeys ||\n (Array.isArray(customerKeys) && !customerKeys.length) ||\n (customerKeys.constructor === Object &&\n !Object.keys(customerKeys).length)) &&\n isExtensionEnabled(\"EntityMetaData\")\n ) {\n let extentionDetails = getExtensionDetails(\"EntityMetaData\");\n if (extentionDetails) {\n this.api = new API({ url: `/config-service/meta-data` });\n this.api\n .get()\n .then((response) => {\n let details = response.data.config.entityMetaData;\n saveEntityMetaData(details);\n this.getCustomerMetaData();\n })\n .catch((error) => {\n console.error(error);\n });\n }\n } else {\n if (isExtensionEnabled(\"EntityMetaData\")) {\n this.getCustomerMetaData();\n }\n }\n }\n\n componentWillUnmount() {\n this.api && this.api.cancel();\n this.customerServiceApi && this.customerServiceApi.cancel();\n }\n\n handleEdit() {\n this.setState({\n editing: true,\n });\n }\n\n onSubmit(formDataRaw) {\n let formData = { ...formDataRaw, metaData: this.state.tempState };\n this.setState({\n submitting: true,\n editing: false,\n });\n const customerId = this.props.customer?.id;\n this.customerServiceApi = new API({\n url: `/customer-service/customer/${customerId}`,\n });\n let params = Object.assign({}, this.props.customer);\n params.metaData = formData.metaData;\n const configureableKeys = Object.keys(this.metaDataWithType);\n Object.keys(formData.metaData).forEach((key) => {\n if (configureableKeys.indexOf(key) < 0) {\n delete formData.metaData[key];\n }\n });\n this.customerServiceApi\n .put(params, { \"X-API-VERSION\": 2 })\n .then(\n (response) => {\n this.setState({\n submitting: false,\n formError: \"\",\n showSuccessDialog: true,\n });\n },\n (error) => {\n this.setState({\n submitting: false,\n formError: error.message,\n showErrorDialog: true,\n tempState: this.state.prevState,\n });\n }\n )\n .then(() => {\n if (this.state.tempState) {\n Object.keys(this.state.tempState).forEach((key) => {\n this.updateState([\"metaData\", key], this.state.tempState[key]);\n });\n }\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n handleChange(value, key) {\n this.setState({\n tempState: {\n ...this.state.tempState,\n [key]: value,\n },\n });\n }\n\n showView() {\n let temp = [];\n let count = 0;\n if (\n this.state.values &&\n this.state.values.metaData &&\n this.metaDataWithType\n ) {\n for (let key in this.metaDataWithType) {\n temp.push(\n <div key={++count} className=\"customer-metadata-show-view\">\n <div className=\"customer-metadata-key\">{key}</div>\n <div className=\"customer-metadata-value\">\n {this.state.values.metaData[key]}\n </div>\n </div>\n );\n }\n }\n return (\n <div className=\"customer-metadta-show-view-container\">{[...temp]}</div>\n );\n }\n\n render() {\n const editPermission = hasPermissions(\"customer\", \"customer\", \"put\");\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n return (\n <React.Fragment>\n <Dialog\n show={this.state.showSuccessDialog}\n className=\"success\"\n title={getMessage(\"customer.entityMetaData.successTitle\")}\n information={getMessage(\"customer.entityMetaData.successInformation\")}\n close={() => this.setState({ showSuccessDialog: false })}\n closeText={getMessage(\"customer.entityMetaData.ok\")}\n />\n <Dialog\n show={this.state.showErrorDialog}\n title={getMessage(\"customer.entityMetaData.errorTitle\")}\n information={this.state.formError}\n close={() => this.setState({ showErrorDialog: false })}\n closeText={getMessage(\"customer.entityMetaData.ok\")}\n />\n {isExtensionEnabled(\"CustomerTags\") && <UserTags {...this.props} />}\n {isExtensionEnabled(\"CustomerTags\") &&\n Object.keys(this.metaDataWithType).length > 0 && (\n <div className=\"horizontal-line\">\n <hr />\n </div>\n )}\n {Object.keys(this.metaDataWithType).length > 0 && (\n <div className=\"customer-metadata-form\">\n {\n <Form>\n <MetaDataFormFields\n className=\"form-fields\"\n metaDataWithType={this.metaDataWithType}\n page=\"customer-details-metadata\"\n _this={this}\n />\n <div className=\"form-actions\">\n <span>\n {editPermission && (\n <SubmitButton>\n {getMessage(\"customer.entityMetaData.submit\")}\n </SubmitButton>\n )}\n </span>\n </div>\n </Form>\n }\n </div>\n )}\n </React.Fragment>\n );\n }\n}\n\nexport default MetaDataForm;\n","import React, { Component } from \"react\";\nimport \"./style.css\";\nimport API from \"../../../../lib/api\";\nimport { parse, format } from \"libphonenumber-js\";\nimport {\n getSession,\n isExtensionEnabled,\n getEntityMetaData,\n getExtensionDetails,\n saveEntityMetaData,\n hasPermissions,\n} from \"../../../../lib/auth\";\nimport { getDisplayAddress } from \"../../../../lib/commonlyused\";\nimport InfoCard from \"../../../../components/InfoCard\";\nimport Tabs from \"../../../../components/Tabs/index\";\nimport Loader from \"../../../../components/Loader\";\nimport CustomerDetailsCard from \"../../../../components/CustomerDetailsCard\";\nimport PhoneAndEmailDisplay from \"../../../../components/PhoneAndEmailCard\";\nimport AddressCard from \"./AddressCard\";\nimport Popup from \"../../../../components/Popup/Popup\";\nimport Dialog from \"../../../../components/Popup/Dialog\";\nimport {\n getStandradDateTime,\n utcToLocalTime,\n} from \"../../../../lib/datetime/index\";\nimport CallForm from \"./CallForm\";\nimport MailForm from \"./MailForm\";\nimport SmsForm from \"./SmsForm\";\nimport AddEmailForm from \"./AddEmail\";\nimport AddPhoneForm from \"./AddPhoneNumber\";\nimport AddAddressForm from \"./AddAddress\";\nimport MetaDataForm from \"./MetaDataForm\";\nimport OrdersImage from \"./total-orders.svg\";\nimport PurchasedImage from \"./purchase-worth.svg\";\nimport JoinedImage from \"./joined-on.svg\";\nimport plusIcon from \"./plus-green.svg\";\nimport LastPurchaseImage from \"./last-purchase.svg\";\nimport { getMessage } from \"../../../../lib/translator/index\";\nimport { getPrintableTime } from \"../../../../lib/datetime/index\";\nimport ListingPage from \"../../../../containers/ListingPage\";\nimport { tabularView } from \"../../Orders/Table/Views\";\nimport { Provider } from \"../../Orders/Table/index\";\nimport { set } from \"../../../../lib/storage\";\nimport purchaseHistory from \"./purchase-history.svg\";\nimport { Select } from \"../../../../components/Form/Inputs\";\n\nconst emptyState = {\n icon: purchaseHistory,\n message: getMessage(\"customer.details.purchase.emptyText\"),\n};\nexport default class CustomerDetails extends Component {\n constructor(props) {\n super(props);\n this.state = {\n page: 0,\n showLoader: true,\n showCallPopup: false,\n showPopup: false,\n showDialog: false,\n showSmsPopup: false,\n showAddEmailPopup: false,\n showAddPhonePopup: false,\n showAddAddressPopup: false,\n showPhoneDeletePrompt: false,\n showEmailDeletePrompt: false,\n phoneIdToDelete: null,\n emailIdToDelete: null,\n };\n this.pages = [\n getMessage(\"customer.details.pages.basicinfo\"),\n getMessage(\"customer.details.pages.address\"),\n getMessage(\"customer.details.pages.phoneemail\"),\n ];\n\n set(\"customer-details-orders-page\", \"1\");\n\n this.message = \"\";\n this.currency = getSession().organization.currency.symbol;\n this.hideLoader = this.hideLoader.bind(this);\n this.showLoader = this.showLoader.bind(this);\n this.mailCallback = this.mailCallback.bind(this);\n this.smsCallback = this.smsCallback.bind(this);\n this.handleClose = this.handleClose.bind(this);\n this.handleSmsClose = this.handleSmsClose.bind(this);\n this.handleCloseDialog = this.handleCloseDialog.bind(this);\n this.renderDialog = this.renderDialog.bind(this);\n this.addEmailCallback = this.addEmailCallback.bind(this);\n this.handleAddEmailClose = this.handleAddEmailClose.bind(this);\n this.addPhoneNumberCallback = this.addPhoneNumberCallback.bind(this);\n this.handleAddPhoneClose = this.handleAddPhoneClose.bind(this);\n this.deletePhoneNumberCallback = this.deletePhoneNumberCallback.bind(this);\n this.deleteEmailCallback = this.deleteEmailCallback.bind(this);\n this.addAddressCallback = this.addAddressCallback.bind(this);\n this.handleAddAddressClose = this.handleAddAddressClose.bind(this);\n this.deleteAddressCallback = this.deleteAddressCallback.bind(this);\n this.callCallback = this.callCallback.bind(this);\n this.handleCallClose = this.handleCallClose.bind(this);\n this.handlePhoneDeleteCloseDialog =\n this.handlePhoneDeleteCloseDialog.bind(this);\n this.handleEmailDeleteCloseDialog =\n this.handleEmailDeleteCloseDialog.bind(this);\n this.handlePhoneDeleteShowDialog =\n this.handlePhoneDeleteShowDialog.bind(this);\n this.handleEmailDeleteShowDialog =\n this.handleEmailDeleteShowDialog.bind(this);\n this.setDefaultPhoneOrEmail = this.setDefaultPhoneOrEmail.bind(this);\n }\n\n showLoader() {\n this.setState({\n showLoader: true,\n });\n }\n\n hideLoader() {\n this.setState({\n showLoader: false,\n });\n }\n\n componentDidMount() {\n if (isExtensionEnabled(\"CustomerTags\")) {\n this.pages.push(getMessage(\"customer.details.pages.otherdetails\"));\n } else {\n if (isExtensionEnabled(\"EntityMetaData\")) {\n let customerKeys = getEntityMetaData() && getEntityMetaData().customer;\n if (!customerKeys) {\n let extentionDetails = getExtensionDetails(\"EntityMetaData\");\n if (extentionDetails) {\n let id = extentionDetails.id;\n const api = new API({ url: `/account-service/extension/${id}` });\n api\n .get()\n .then((response) => {\n let details = response.data.extension.config.globalConfig;\n saveEntityMetaData(details);\n customerKeys =\n getEntityMetaData() && getEntityMetaData().customer;\n this.addressKeys = details.address;\n if (customerKeys && Object.keys(customerKeys).length > 0) {\n this.pages.push(\n getMessage(\"customer.details.pages.otherdetails\")\n );\n }\n })\n .catch((error) => {\n console.error(error);\n });\n }\n } else {\n if (customerKeys && Object.keys(customerKeys).length > 0) {\n this.pages.push(getMessage(\"customer.details.pages.otherdetails\"));\n }\n }\n }\n }\n this.api = new API({\n url: `/customer-service/customer/${this.props.resourceId}`,\n });\n this.api\n .get(\"\", { \"X-API-VERSION\": 2 })\n .then(\n (response) => {\n this.setState({\n customer: response.data.customer,\n showLoader: false,\n });\n },\n (error) => {\n throw error;\n }\n )\n .catch((error) => {\n console.error(error);\n });\n this.countryApi = new API({ url: \"/account-service/country\" });\n this.countryApi\n .get()\n .then((response) => {\n let isoCode = response.data.country.isoCode;\n this.isoCode = isoCode;\n })\n .catch((error) => {\n console.error(error);\n });\n this.communicationApi = new API({\n url: `/account-service/config/communication`,\n });\n this.communicationApi\n .get()\n .then((response) => {\n this.setState({ communicationConfig: response.data.config });\n })\n .catch((error) => {\n console.error(error);\n throw error;\n });\n if (isExtensionEnabled(\"EntityMetaData\")) {\n this.configApi = new API({ url: \"/config-service/config/customers\" });\n this.configApi\n .get()\n .then((response) => {\n this.addressSequence = response.data.customers.addressSequence;\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n\n componentWillUnmount() {\n this.api && this.api.cancel();\n this.countryApi && this.countryApi.cancel();\n this.communicationApi && this.communicationApi.cancel();\n this.configApi && this.configApi.cancel();\n }\n\n fetchTabData() {\n let page = this.pages[this.state.page];\n if (page === getMessage(\"customer.details.pages.basicinfo\")) {\n return (\n <div className=\"tab-details\">\n <div className=\"tab-row\">\n <InfoCard\n className=\"total-orders\"\n src={OrdersImage}\n title={getMessage(\"customer.details.pages.basicinfo.totalorders\")}\n description={this.state.customer.totalOrders}\n />\n <InfoCard\n className=\"total-amount\"\n src={PurchasedImage}\n title={getMessage(\n \"customer.details.pages.basicinfo.purchasesworth\"\n )}\n description={\n this.state.customer.orderSummary &&\n this.currency + this.state.customer.orderSummary.totalAmount\n }\n />\n </div>\n <div className=\"tab-row\">\n <InfoCard\n className=\"joined-on\"\n src={JoinedImage}\n title={getMessage(\"customer.details.pages.basicinfo.joined\")}\n description={\n this.state.customer.joinedTime &&\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n this.state.customer.joinedTime\n )\n ).split(\",\")[0]\n }\n />\n <InfoCard\n className=\"last-purchase\"\n src={LastPurchaseImage}\n title={getMessage(\n \"customer.details.pages.basicinfo.lastPurchase\"\n )}\n description={\n this.state.customer.lastOrderedOn\n ? getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n this.state.customer.lastOrderedOn\n )\n ).split(\",\")[0]\n : \"-\"\n }\n />\n </div>\n </div>\n );\n }\n if (page === getMessage(\"customer.details.pages.address\")) {\n return (\n <div className=\"tab-details\">\n {this.getAddresses()}\n {hasPermissions(\"customer\", \"address\", \"post\") && (\n <div className=\"addAddress\" onClick={this.addAddressCallback}>\n <div className=\"addIcon\" />\n <div className=\"addTitle\">\n {getMessage(\"customer.details.address.addAddress\")}\n </div>\n </div>\n )}\n </div>\n );\n }\n if (page === getMessage(\"customer.details.pages.phoneemail\")) {\n return (\n <div className=\"tab-details\">\n <div className=\"phone-email\">\n <div className=\"phone\">\n {this.getPhoneNumbers()}\n {hasPermissions(\"customer\", \"phone\", \"post\") && (\n <button\n className=\"add-button\"\n onClick={this.addPhoneNumberCallback}\n >\n <span className=\"plus-sign\">\n <img src={plusIcon} alt=\"plus\" />\n </span>\n {getMessage(\n \"customer.details.pages.phonemail.addPhoneNumber\"\n )}\n </button>\n )}\n </div>\n <div className=\"email\">\n {this.getEmails()}\n {hasPermissions(\"customer\", \"email\", \"post\") && (\n <button className=\"add-button\" onClick={this.addEmailCallback}>\n <span className=\"plus-sign\">\n <img src={plusIcon} alt=\"plus\" />\n </span>\n {getMessage(\"customer.details.pages.phonemail.addEmailId\")}{\" \"}\n </button>\n )}\n </div>\n </div>\n </div>\n );\n }\n if (page === getMessage(\"customer.details.pages.otherdetails\")) {\n return (\n <React.Fragment>\n <MetaDataForm customer={this.state.customer} />\n </React.Fragment>\n );\n }\n }\n changePage(page) {\n this.setState(\n {\n page: page,\n },\n this.fetchPageData\n );\n }\n\n getAddresses() {\n let _this = this;\n let showDeleteOption = false;\n const customerId = this.state.customer.id;\n const customerAddresses = this.state.customer.addresses;\n let defaultAddress = this.state.customer.defaultAddress;\n if (customerAddresses && customerAddresses.length > 1) {\n showDeleteOption = true;\n }\n let address =\n customerAddresses &&\n customerAddresses.map(function (address, i) {\n return (\n <AddressCard\n key={address.id}\n customerId={customerId}\n coordinates={{ lat: address.latitude, lng: address.longitude }}\n id={address.id}\n showDeleteOption={\n showDeleteOption && defaultAddress.id !== address.id\n }\n title={`${getMessage(\"customer.details.pages.address\")} ${i + 1}`}\n value={`${getDisplayAddress(address, _this.addressSequence)}`}\n viewOnMap={getMessage(\"customer.details.pages.address.viewOnMap\")}\n deleteMessage={getMessage(\"customer.details.delete\")}\n onDelete={_this.deleteAddressCallback}\n />\n );\n });\n return address;\n }\n\n getPhoneNumbers() {\n let _this = this;\n let showDeleteOption = false;\n const customerPhones = this.state.customer.phones;\n if (customerPhones && customerPhones.length > 1) {\n showDeleteOption = true;\n }\n let defaultPhoneId =\n (this.state.customer && this.state.customer.defaultPhoneId) ||\n (this.state.customer.defaultPhone && this.state.customer.defaultPhone.id);\n let phones =\n customerPhones &&\n customerPhones.map(function (phone, i) {\n return (\n <PhoneAndEmailDisplay\n key={phone.id}\n status={phone.status}\n id={phone.id}\n defaultId={defaultPhoneId}\n value={\n phone && phone.phone\n ? Object.keys(parse(phone.phone)).length > 0\n ? format(parse(phone.phone), \"International\")\n : phone.phone\n : null\n }\n type=\"phone\"\n onDelete={_this.handlePhoneDeleteShowDialog}\n setDefaultPhoneOrEmail={_this.setDefaultPhoneOrEmail}\n showDeleteOption={showDeleteOption}\n />\n );\n });\n return phones;\n }\n\n setDefaultPhoneOrEmail(type, id) {\n if (!type || !id) {\n return;\n }\n const customerId = this.state.customer.id;\n const api = new API({ url: `/customer-service/customer/${customerId}` });\n let params = {};\n if (type === \"phone\") {\n params.defaultPhoneId = id;\n } else if (type === \"email\") {\n params.defaultEmailId = id;\n }\n api\n .put(params, { \"X-API-VERSION\": 2 })\n .then((response) => {\n let customer = response.data.customer;\n this.setState({\n customer,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n deleteEmailCallback(id) {\n let customerId = this.state.customer.id;\n const api = new API({ url: `/customer-service/email/${id}` });\n let params = {};\n params[\"customerId\"] = customerId;\n api\n .delete(params)\n .then(\n (response) => {\n this.message = getMessage(\"customer.details.email.deleted\");\n let newCustomer = this.state.customer;\n let modifiedEmails = (this.state.customer.emails || []).filter(\n (email) => email.id !== id\n );\n newCustomer.emails = modifiedEmails;\n this.setState({\n showEmailDeletePrompt: false,\n showDialog: true,\n customer: newCustomer,\n });\n },\n (error) => {\n this.message = error.message;\n this.setState({\n showEmailDeletePrompt: false,\n showDialog: true,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n deleteAddressCallback(id) {\n let customerId = this.state.customer.id;\n const api = new API({ url: `/customer-service/address/${id}` });\n let params = {};\n params[\"customerId\"] = customerId;\n api\n .delete(params)\n .then(\n (response) => {\n this.message = getMessage(\"customer.details.address.deleted\");\n let newDetails = this.state.customer;\n let modifiedAddresses = this.state.customer.addresses.filter(\n (address) => address.id !== id\n );\n newDetails.addresses = modifiedAddresses;\n this.setState({\n showDialog: true,\n customer: newDetails,\n });\n },\n (error) => {\n this.message = error.message;\n this.setState({\n showDialog: true,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n deletePhoneNumberCallback(id) {\n let customerId = this.state.customer.id;\n const api = new API({ url: `/customer-service/phone/${id}` });\n let params = {};\n params[\"customerId\"] = customerId;\n api\n .delete(params)\n .then(\n (response) => {\n this.message = getMessage(\"customer.details.phone.deleted\");\n let newDetails = this.state.customer;\n let modifiedPhones = (this.state.customer.phones || []).filter(\n (phone) => phone.id !== id\n );\n newDetails.phones = modifiedPhones;\n this.setState({\n showPhoneDeletePrompt: false,\n showDialog: true,\n customer: newDetails,\n });\n },\n (error) => {\n this.message = error.message;\n this.setState({\n showPhoneDeletePrompt: false,\n showDialog: true,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n getEmails() {\n let _this = this;\n let showDeleteOption = false;\n const customerEmails = this.state.customer.emails;\n if (customerEmails && customerEmails.length > 1) {\n showDeleteOption = true;\n }\n\n let defaultEmailId =\n (this.state.customer && this.state.customer.defaultEmailId) ||\n (this.state.customer.defaultEmail && this.state.customer.defaultEmail.id);\n let emails =\n customerEmails &&\n customerEmails.map(function (email, i) {\n if (!email) return null;\n return (\n <PhoneAndEmailDisplay\n key={email.id}\n status={email.status}\n id={email.id}\n value={email.email}\n defaultId={defaultEmailId}\n type=\"email\"\n setDefaultPhoneOrEmail={_this.setDefaultPhoneOrEmail}\n onDelete={_this.handleEmailDeleteShowDialog}\n showDeleteOption={showDeleteOption}\n />\n );\n });\n return emails;\n }\n\n getColor(status) {\n // TODO: Find color for pending and refund status\n let color = \"\";\n switch (status) {\n case \"COMPLETED\":\n color = \"green\";\n break;\n case \"PENDING\":\n color = \"\";\n break;\n case \"REFUND\":\n color = \"\";\n break;\n default:\n color = \"\";\n }\n return color;\n }\n\n callCallback() {\n this.setState({\n showCallPopup: true,\n });\n }\n\n mailCallback() {\n this.setState({\n showPopup: true,\n });\n }\n\n smsCallback() {\n this.setState({\n showSmsPopup: true,\n });\n }\n\n addEmailCallback() {\n this.setState({\n showAddEmailPopup: true,\n });\n }\n\n addPhoneNumberCallback() {\n this.setState({\n showAddPhonePopup: true,\n });\n }\n\n addAddressCallback() {\n this.setState({\n showAddAddressPopup: true,\n });\n }\n\n handleClose() {\n this.setState({\n showPopup: false,\n });\n }\n\n handleCallClose() {\n this.setState({\n showCallPopup: false,\n });\n }\n\n handleSmsClose() {\n this.setState({\n showSmsPopup: false,\n });\n }\n\n handleAddEmailClose() {\n this.setState({\n showAddEmailPopup: false,\n });\n }\n\n handleAddPhoneClose() {\n this.setState({\n showAddPhonePopup: false,\n });\n }\n\n handleAddAddressClose() {\n this.setState({\n showAddAddressPopup: false,\n });\n }\n\n handleCloseDialog() {\n this.setState({\n showDialog: false,\n });\n }\n\n handlePhoneDeleteCloseDialog() {\n this.setState({\n showPhoneDeletePrompt: false,\n });\n }\n\n handleEmailDeleteCloseDialog() {\n this.setState({\n showEmailDeletePrompt: false,\n });\n }\n\n handlePhoneDeleteShowDialog(id) {\n this.setState({\n showPhoneDeletePrompt: true,\n phoneIdToDelete: id,\n });\n }\n\n handleEmailDeleteShowDialog(id) {\n this.setState({\n showEmailDeletePrompt: true,\n emailIdToDelete: id,\n });\n }\n\n renderDialog(data, response = {}) {\n if (data === \"render\" && !this.state.showLoader && this.state.showPopup) {\n this.message = getMessage(\"customer.details.email.send\");\n this.setState({\n showPopup: false,\n showDialog: true,\n });\n } else if (\n data === \"call\" &&\n !this.state.showLoader &&\n this.state.showCallPopup\n ) {\n this.message = getMessage(\"customer.details.call.call\");\n this.setState({\n showCallPopup: false,\n showDialog: true,\n });\n } else if (\n data === \"sms\" &&\n !this.state.showLoader &&\n this.state.showSmsPopup\n ) {\n this.message = getMessage(\"customer.details.sms.send\");\n this.setState({\n showSmsPopup: false,\n showDialog: true,\n });\n } else if (\n data === \"addedEmail\" &&\n !this.state.showLoader &&\n this.state.showAddEmailPopup &&\n response\n ) {\n this.message = getMessage(\"customer.details.email.added\");\n let newCustomer = this.state.customer;\n newCustomer.emails = newCustomer.emails || [];\n newCustomer.emails.push(response);\n this.setState({\n showAddEmailPopup: false,\n showDialog: true,\n customer: newCustomer,\n });\n } else if (\n data === \"addedAddress\" &&\n !this.state.showLoader &&\n this.state.showAddAddressPopup &&\n response\n ) {\n this.message = getMessage(\"customer.details.address.added\");\n let newCustomer = this.state.customer;\n newCustomer.addresses = newCustomer.addresses || [];\n newCustomer.addresses.push(response);\n this.setState({\n showAddAddressPopup: false,\n showDialog: true,\n customer: newCustomer,\n });\n } else if (\n data === \"addedPhone\" &&\n !this.state.showLoader &&\n this.state.showAddPhonePopup &&\n response\n ) {\n this.message = getMessage(\"customer.details.phone.added\");\n let newCustomer = this.state.customer;\n newCustomer.phones = newCustomer.phones || [];\n newCustomer.phones.push(response);\n this.setState({\n showAddPhonePopup: false,\n showDialog: true,\n customer: newCustomer,\n });\n }\n if (this.state.showDialog) {\n return (\n <Dialog\n className=\"success\"\n show={this.state.showDialog}\n close={this.handleCloseDialog}\n information={this.message}\n closeText=\"OK\"\n />\n );\n }\n }\n\n renderCallPopup() {\n return (\n <Popup\n heading={getMessage(\"customer.details.call\")}\n show={this.state.showCallPopup}\n close={this.handleCallClose}\n >\n <CallForm\n number={\n this.state.customer.phones &&\n this.state.customer.phones.length > 0 &&\n this.state.customer.phones?.[0]?.phone\n }\n onSuccess={this.renderDialog}\n />\n </Popup>\n );\n }\n\n renderMailPopup() {\n if (!this.state.customer?.emails?.[0]) return null;\n return (\n <Popup\n heading={getMessage(\"customer.details.sendEmail\")}\n show={this.state.showPopup}\n close={this.handleClose}\n >\n <MailForm\n to={\n this.state.customer.emails &&\n this.state.customer.emails.length > 0 &&\n this.state.customer.emails?.[0]?.email\n }\n onSuccess={this.renderDialog}\n />\n </Popup>\n );\n }\n\n renderSmsPopup() {\n return (\n <Popup\n heading={getMessage(\"customer.details.sendMessage\")}\n show={this.state.showSmsPopup}\n close={this.handleSmsClose}\n >\n <SmsForm\n to={\n this.state.customer.phones &&\n this.state.customer.phones.length > 0 &&\n this.state.customer.phones?.[0]?.phone\n }\n onSuccess={this.renderDialog}\n />\n </Popup>\n );\n }\n\n renderAddEmailPopup() {\n return (\n <Popup\n heading={getMessage(\"customer.details.pages.phonemail.addEmailId\")}\n show={this.state.showAddEmailPopup}\n close={this.handleAddEmailClose}\n >\n <AddEmailForm\n customerId={this.state.customer.id}\n onSuccess={this.renderDialog}\n />\n </Popup>\n );\n }\n\n renderAddPhonePopup() {\n return (\n <Popup\n heading={getMessage(\"customer.details.pages.phonemail.addPhoneNumber\")}\n show={this.state.showAddPhonePopup}\n close={this.handleAddPhoneClose}\n >\n <AddPhoneForm\n customerId={this.state.customer.id}\n onSuccess={this.renderDialog}\n countryIso={this.isoCode}\n />\n </Popup>\n );\n }\n\n renderAddAddressPopup() {\n return (\n <Popup\n heading={getMessage(\"customer.details.address.addAddress\")}\n show={this.state.showAddAddressPopup}\n close={this.handleAddAddressClose}\n >\n <AddAddressForm\n customerId={this.state.customer.id}\n onSuccess={this.renderDialog}\n sequence={this.addressSequence}\n />\n </Popup>\n );\n }\n\n renderPhoneDeleteDialog() {\n return (\n <Dialog\n show={this.state.showPhoneDeletePrompt}\n close={this.handlePhoneDeleteCloseDialog}\n title={getMessage(\"customer.phone.delete.prompt.title\")}\n information={getMessage(\"customer.phone.delete.prompt.message\")}\n closeText={getMessage(\"customer.cancel.message\")}\n onOk={() => {\n this.deletePhoneNumberCallback(this.state.phoneIdToDelete);\n }}\n okText={getMessage(\"customer.confirm.message\")}\n />\n );\n }\n\n renderEmailDeleteDialog() {\n return (\n <Dialog\n show={this.state.showEmailDeletePrompt}\n close={this.handleEmailDeleteCloseDialog}\n title={getMessage(\"customer.email.delete.prompt.title\")}\n information={getMessage(\"customer.email.delete.prompt.message\")}\n closeText={getMessage(\"customer.cancel.message\")}\n onOk={() => {\n this.deleteEmailCallback(this.state.emailIdToDelete);\n }}\n okText={getMessage(\"customer.confirm.message\")}\n />\n );\n }\n\n render() {\n return (\n <div className=\"customerDetails\">\n <h1 className=\"heading\">{this.state?.customer?.name}</h1>\n {this.state.showLoader ? (\n <Loader />\n ) : (\n <div>\n {this.state.customer && (\n <div>\n {this.renderCallPopup()}\n {this.renderMailPopup()}\n {this.renderDialog()}\n {this.renderSmsPopup()}\n {this.renderAddEmailPopup()}\n {this.renderAddPhonePopup()}\n {this.renderAddAddressPopup()}\n {this.renderPhoneDeleteDialog()}\n {this.renderEmailDeleteDialog()}\n <div className=\"tabWithCustomerCard\">\n <div className=\"tab-container\">\n {window.screen.width >= 480 ? (\n <Tabs\n items={this.pages.map((page) => `${page}`)}\n default={this.state.page}\n onClick={(index) => {\n this.changePage(index);\n }}\n />\n ) : (\n <Select\n options={this.pages.map((page, index) => {\n return { text: page, value: index };\n })}\n value={`${this.state.page}`}\n onChange={(index) =>\n this.changePage(Number(index) ? index : \"0\")\n }\n />\n )}\n {this.fetchTabData()}\n </div>\n <CustomerDetailsCard\n communicationConfig={this.state.communicationConfig}\n image={this.state.customer && this.state.customer.image}\n emails={this.state.customer && this.state.customer.emails}\n phones={this.state.customer && this.state.customer.phones}\n defaultPhone={\n this.state.customer && this.state.customer.defaultPhone\n }\n defaultEmail={\n this.state.customer && this.state.customer.defaultEmail\n }\n defaultEmailId={\n this.state.customer && this.state.customer.defaultEmailId\n }\n defaultPhoneId={\n this.state.customer && this.state.customer.defaultPhoneId\n }\n />\n </div>\n </div>\n )}\n <h3>{getMessage(\"customer.details.order.purchase.history\")}</h3>\n <Provider value={this.state && this.state.communicationConfig}>\n <div className=\"orders-page\">\n <ListingPage\n className=\"customer-details-orders-page\"\n api={{\n url: `/order-service/order`,\n params: {\n perPage: 5,\n customerId: this.props.resourceId,\n },\n transform: (response) => {\n const orders = response.data.order;\n if (Array.isArray(orders)) {\n orders.map((order) => {\n if (order.createdAt) {\n order.createdAt = getStandradDateTime(\n utcToLocalTime,\n order.createdAt\n );\n }\n if (order.completedAt) {\n order.completedAt = getStandradDateTime(\n utcToLocalTime,\n order.completedAt\n );\n }\n if (order.updatedAt) {\n order.updatedAt = getStandradDateTime(\n utcToLocalTime,\n order.updatedAt\n );\n }\n if (order.preferredDate && order.slotStartTime) {\n const tempDate = getStandradDateTime(\n utcToLocalTime,\n `${order.preferredDate} ${order.slotStartTime}`\n ).split(\" \");\n order.preferredDate = tempDate[0];\n order.slotStartTime = tempDate[1];\n }\n if (order.preferredDate && order.slotEndTime) {\n const tempDate = getStandradDateTime(\n utcToLocalTime,\n `${order.preferredDate} ${order.slotEndTime}`\n ).split(\" \");\n order.slotEndTime = tempDate[1];\n }\n return order;\n });\n }\n return orders;\n },\n }}\n emptyState={emptyState}\n primaryKey=\"referenceNumber\"\n tableProperties={tabularView(\n `/${this.props.options && this.props.options.page}`\n )}\n tableDynamic\n />\n </div>\n </Provider>\n </div>\n )}\n </div>\n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n VALIDATION_TYPES,\n SingleDatePicker,\n Radio,\n} from \"../../../../../components/Form\";\nimport { getMessage } from \"../../../../../lib/translator\";\n\nexport default class CustomerFilters extends BaseForm {\n render() {\n const { SubmitButton, ClearButton } = this.buttons;\n const { Form } = this.components;\n return (\n <Form>\n <div className=\"form-fields\">\n <Input\n label={getMessage(\"customer.enterCustomerEmail\")}\n placeholder={getMessage(\"customer.searchByEmail\")}\n name=\"email\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"email\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisonFill: true,\n })}\n />\n <Input\n label={getMessage(\"customer.enterCustomerPhone\")}\n placeholder={getMessage(\"customer.searchByPhone\")}\n name=\"phone\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"phone\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisonFill: true,\n })}\n />\n <Input\n label={getMessage(\"customer.enterClientId\")}\n placeholder={getMessage(\"customer.searchByClientId\")}\n name=\"clientId\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"clientId\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisonFill: true,\n })}\n />\n <SingleDatePicker\n label={getMessage(\"customer.joinedOn\")}\n placeholder={getMessage(\"cutomer.joinedOn.placeholder\")}\n name=\"joined-on\"\n {...this.generateStateMappers({\n stateKeys: [\"joinedOn\"],\n loseEmphasisonFill: true,\n })}\n isOutsideRange\n />\n <SingleDatePicker\n label={getMessage(\"customer.updatedAt\")}\n name=\"updated-at\"\n placeholder={getMessage(\"customer.updatedAt\")}\n {...this.generateStateMappers({\n stateKeys: [\"updatedAt\"],\n loseEmphasisonFill: true,\n })}\n isOutsideRange\n />\n <Radio\n className=\"customer-status\"\n label={getMessage(\"status\")}\n name=\"status\"\n options={[\n {\n text: getMessage(\"all.label.text\"),\n value: \"\",\n },\n {\n text: getMessage(\"status.label.enabled\"),\n value: \"ENABLED\",\n },\n {\n text: getMessage(\"disabled.text\"),\n value: \"DISABLED\",\n },\n ]}\n {...this.generateStateMappers({\n stateKeys: [\"status\"],\n defaultValue: \"\",\n })}\n />\n <Radio\n className=\"customer-status\"\n label=\"Verification Status\"\n name=\"hasLoggedIn\"\n options={[\n {\n text: getMessage(\"all.label.text\"),\n value: \"\",\n },\n {\n text: getMessage(\"verified.label.text\"),\n value: \"true\",\n },\n {\n text: getMessage(\"not.verified.label.text\"),\n value: \"false\",\n },\n ]}\n {...this.generateStateMappers({\n stateKeys: [\"hasLoggedIn\"],\n defaultValue: \"\",\n })}\n />\n </div>\n <SubmitButton>{getMessage(\"customer.filters.submittext\")}</SubmitButton>\n <ClearButton>\n {getMessage(\"customer.filters.clearFiltersText\")}\n </ClearButton>\n </Form>\n );\n }\n}\n","import React, { Component } from \"react\";\n\nimport Upload from \"../../../../components/FileUpload\";\nimport API from \"../../../../lib/api\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport csvIcon from \"./csv-icon.svg\";\nimport uploadIcon from \"./import-customers.svg\";\nimport infoIcon from \"./info-icon.svg\";\n\nimport \"./style.css\";\n\nfunction downloadCsv(data) {\n let csv = \"\";\n csv += data.join(\",\");\n csv += \"\\n\";\n var hiddenElement = document.createElement(\"a\");\n hiddenElement.href = \"data:text/csv;charset=utf-8,\" + encodeURI(csv);\n hiddenElement.target = \"_blank\";\n hiddenElement.download = \"customers.csv\";\n hiddenElement.click();\n}\n\nexport default class CustomerImport extends Component {\n constructor(props) {\n super(props);\n this.getSampleCsv = this.getSampleCsv.bind(this);\n }\n\n getSampleCsv(e) {\n e && e.preventDefault();\n const api = new API({ url: \"/customer-service/customer-upload\" });\n api\n .get()\n .then(\n (response) => {\n downloadCsv(response.data.customerUpload || []);\n },\n (error) => {\n this.setState({ uploadError: error.message });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n render() {\n return (\n <div className=\"product-upload\">\n <div className=\"bordered-box\">\n <div className=\"text-center\">\n <img src={uploadIcon} width=\"140\" alt=\"\" />\n </div>\n <Upload\n name=\"customerImport\"\n accept=\".csv, text/csv, text/comma-separated-values, application/csv, application/excel, application/vnd.ms-excel, application/vnd.msexcel\"\n placeholder={getMessage(\"productUpload.uploadFileText\")}\n uploadButtonText=\"Upload\"\n cancelText=\"Cancel\"\n uploadUrl=\"/customer-service/customer-upload\"\n validationStrings={{\n invalidFileType: getMessage(\"input.invalidFileType\"),\n }}\n strings={{\n defaultMessage: getMessage(\"fileUpload.importCsv.heading\"),\n progressMessage: getMessage(\"fileUpload.importedCsv.heading\"),\n completionMessage: getMessage(\"customer.import.successText\"),\n }}\n icon={csvIcon}\n />\n <div className=\"cx-import-tooltip\">\n <img src={infoIcon} alt=\"note\" />\n NOTE\n <div className=\"tooltiptext\">\n <div className=\"tooltip-title\">Note:</div>\n <div className=\"instruction\">\n * The phone numbers must be prepended with (+) followed by\n country code.\n </div>\n <div className=\"instruction text-muted\">\n {\" \"}\n Eg: Phone number with country code 91 must be +911234567890\n </div>\n <div className=\"instruction\">\n * For entries with the same client id or information, the\n corresponding records will be merged.\n </div>\n </div>\n </div>\n </div>\n <div className=\"text-center\">\n <button className=\"download-link\" onClick={this.getSampleCsv}>\n {getMessage(\"productUpload.csvDownloadText\")}\n </button>\n </div>\n </div>\n );\n }\n}\n","import React, { Component } from \"react\";\nimport ListingPageWithRoutes from \"../../../containers/ListingPage/listingRouter\";\nimport CustomerDetails from \"./Details\";\nimport CustomerFilters from \"./Tables/Filters\";\nimport { Popup } from \"../../../components/Popup\";\nimport TableView from \"./Tables\";\nimport { getMessage } from \"../../../lib/translator\";\nimport CustomerImport from \"./CustomerImport\";\nimport emptyIcon from \"./no-customers.svg\";\nimport offerIcon from \"./offers.svg\";\nimport offlineMarketingIcon from \"./offline-marketing.svg\";\nimport targetCustomerIcon from \"./target-customer.svg\";\nimport \"./style.css\";\nimport {\n getStandradDateTime,\n utcToLocalTime,\n localTimeToUtc,\n} from \"../../../lib/datetime\";\nimport { is_Domain_Scarlet } from \"../../../utils/domainCheck\";\n\nconst emptyState = {\n icon: emptyIcon,\n message: getMessage(\"customer.helpItems.message\"),\n additionalViews: [CustomerImport],\n};\n\nconst helpItems = {\n title: getMessage(\"customer.helpItems.title\"),\n instructions: [\n {\n icon: targetCustomerIcon,\n title: getMessage(\"customer.helpItems.iec.title\"),\n description: getMessage(\"customer.helpItems.iec.description\"),\n onAction: (e) => {\n let customerImport = document.getElementById(\"customerImport\");\n customerImport.click();\n },\n },\n {\n icon: offerIcon,\n title: getMessage(\"customer.helpItems.rpo.title\"),\n description: getMessage(\"customer.helpItems.rpo.description\"),\n },\n {\n icon: offlineMarketingIcon,\n title: getMessage(\"customer.helpItems.om.title\"),\n description: getMessage(\"customer.helpItems.om.description\"),\n },\n ],\n};\n\nclass HeaderActions extends Component {\n constructor(props) {\n super(props);\n this.state = {\n modalShown: false,\n };\n this.hideModal = this.hideModal.bind(this);\n }\n\n hideModal() {\n this.setState({\n modalShown: false,\n });\n }\n\n render() {\n return (\n <div>\n <Popup\n heading={getMessage(\"customer.modal.import.text\")}\n show={this.state.modalShown}\n close={this.hideModal}\n >\n <CustomerImport />\n </Popup>\n <button\n className=\"primary button\"\n onClick={(e) => {\n this.setState({\n modalShown: true,\n });\n }}\n >\n + <span className=\"text\">{getMessage(\"customer.import.text\")}</span>\n </button>\n </div>\n );\n }\n}\n\n// DISCUSS: A better way to get awareness of window's width\n// Reasoning: Individual components should not be aware of the window or\n// its properties\nclass Customers extends Component {\n formatDate = (date) => {\n const start = getStandradDateTime(localTimeToUtc, `${date} 00:00:00`);\n const end = getStandradDateTime(localTimeToUtc, `${date} 23:59:59`);\n return `${start},${end}`;\n };\n render() {\n let { props } = this;\n let { page, rerender } = props;\n return (\n <ListingPageWithRoutes\n menu={props.menu}\n className=\"customers-page\"\n title=\"Customers\"\n api={{\n url: \"/customer-service/customer\",\n headers: { \"X-API-VERSION\": 2 },\n transform: (response) => {\n const customers = response.data.customer;\n if (Array.isArray(customers)) {\n customers.map((customer) => {\n if (customer.joinedOn) {\n if (customer.joinedOn.includes(\"T\")) {\n const newDate = customer.joinedOn.split(/[TZ]/);\n customer.joinedOn = `${newDate[0]} ${newDate[1]}`;\n }\n customer.joinedOn = getStandradDateTime(\n utcToLocalTime,\n customer.joinedOn\n );\n }\n if (customer.joinedTime) {\n if (customer.joinedTime.includes(\"T\")) {\n const newDate = customer.joinedTime.split(/[TZ]/);\n customer.joinedTime = `${newDate[0]} ${newDate[1]}`;\n }\n customer.joinedTime = getStandradDateTime(\n utcToLocalTime,\n customer.joinedTime\n );\n }\n if (customer.updatedAt) {\n if (customer.updatedAt.includes(\"T\")) {\n const newDate = customer.updatedAt.split(/[TZ]/);\n customer.updatedAt = `${newDate[0]} ${newDate[1]}`;\n }\n customer.updatedAt = getStandradDateTime(\n utcToLocalTime,\n customer.updatedAt\n );\n }\n return customer;\n });\n return customers;\n } else {\n return [customers];\n }\n },\n }}\n storeDependent={page === \"operations\"}\n emptyState={emptyState}\n helpItems={helpItems}\n tableProperties={TableView(page, rerender)}\n headerActions={!is_Domain_Scarlet() ? HeaderActions : null}\n form={{\n component: CustomerDetails,\n options: { page },\n }}\n filters={{\n component: CustomerFilters,\n transformSubmit: (formData) => {\n let data = Object.assign({}, formData);\n if (data.updatedAt) {\n data.updatedAt = this.formatDate(data.updatedAt);\n }\n if (data.joinedOn) {\n data.joinedOn = this.formatDate(data.joinedOn);\n }\n if (data.phone) {\n data.phone = data.phone.split(\" \").join(\"\");\n }\n return data;\n },\n }}\n tableDynamic\n />\n );\n }\n}\n\nexport class CommonComponent extends Component {\n render() {\n let { props } = this;\n return <Customers {...props} />;\n }\n}\n\nexport default class CustomersListing extends Component {\n render() {\n let { props } = this;\n return <CommonComponent page=\"operations\" {...props} />;\n }\n}\n","import React, { Component } from \"react\";\nimport { CommonComponent } from \"../../operations/Customers\";\n\nexport default class CustomersListing extends Component {\n render() {\n let { props } = this;\n return <CommonComponent page=\"customer-support\" {...props} />;\n }\n}\n","import React, { Component } from \"react\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport { getPrintableTime } from \"../../../../../lib/datetime\";\nimport preoder from \"./preorder.svg\";\nimport \"./style.css\";\n\nclass PlacementDetails extends Component {\n render() {\n let orderStatusText = null;\n let status = this.props.data.status;\n switch (this.props.data.status) {\n case \"PENDING\":\n case \"COMPLETED\":\n orderStatusText = (\n <span className={`order-status-${status.toLowerCase()}`}>\n {getMessage(`order.status.${status.toLowerCase()}`)}\n </span>\n );\n break;\n default:\n if (status) {\n orderStatusText = (\n <span>\n {status.slice(0, 1).toUpperCase() + status.slice(1).toLowerCase()}\n </span>\n );\n }\n break;\n }\n let deviceParameters =\n (this.props.data.device && this.props.data.device.split(\"_\")) || [];\n let device =\n deviceParameters[0] === \"DESKTOP\"\n ? deviceParameters[0]\n : deviceParameters[1];\n switch (device) {\n case \"DESKTOP\":\n case \"ANDROID\":\n case \"IOS\":\n device = getMessage(`order.details.device.${device.toLowerCase()}`);\n break;\n default:\n device = getMessage(`order.details.device.${\"DESKTOP\".toLowerCase()}`);\n break;\n }\n return (\n <div className=\"order-placement-details\">\n <div className=\"section-pre-order\">\n <h3 className=\"section-title\">Status: {orderStatusText}</h3>\n {this.props.data.preorder && (\n <div className=\"pre-order\">\n <img src={preoder} alt=\"pre-order-icon\" />\n <span>{getMessage(\"order.details.preorder\")}</span>\n </div>\n )}\n </div>\n <div className=\"order-placement-info-item\">\n <span className=\"order-placement-info-icon icon-clock\" />\n <small className=\"text-muted\">\n Placed Time:{\" \"}\n <span className=\"creation-time\">\n {getPrintableTime(this.props.data.creationTime)}\n </span>\n </small>\n </div>\n {this.props.data.completionTime ? (\n <div className=\"order-placement-info-item\">\n <span className=\"order-placement-info-icon icon-clock\" />\n <small className=\"text-muted\">\n Completion Time:{\" \"}\n <span className=\"completion-time\">\n {getPrintableTime(this.props.data.completionTime)}\n </span>\n </small>\n </div>\n ) : null}\n <div className=\"order-placement-info-item\">\n <span className=\"order-placement-info-icon icon-mobile\" />\n <small className=\"text-muted\">\n Placed From: <span className=\"device-name\">{device}</span>\n </small>\n </div>\n </div>\n );\n }\n}\n\nexport default PlacementDetails;\n","import React, { Component } from \"react\";\nimport moment from \"moment\";\nimport { Link } from \"react-router-dom\";\nimport {\n Email as CustomerEmailWidget,\n Call as CustomerCallWidget,\n} from \"../../../../../containers/CustomerWidgets\";\nimport { Radio, Select } from \"../../../../../components/Form\";\nimport { SKINS as RADIO_SKINS } from \"../../../../../components/Form/Inputs/Radio\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport {\n isExtensionEnabled,\n getExtensionDetails,\n getStores,\n} from \"../../../../../lib/auth\";\nimport API from \"../../../../../lib/api\";\nimport {\n formatDate,\n getPrintableTime,\n formatIsoTime,\n getStandradDateTime,\n utcToLocalTime,\n formatSlotTime,\n localTimeToUtc,\n} from \"../../../../../lib/datetime\";\n\nimport editIcon from \"../edit-icon.svg\";\nimport {\n getDisplayAddress,\n getAsapDuration,\n sortSlotsAvailability,\n} from \"../../../../../lib/commonlyused\";\n\nfunction generateDateOptions(slots) {\n if (!slots) {\n return [];\n } else {\n return Object.keys(slots).map((date) => {\n let text = formatDate(date);\n if (moment().format(\"YYYY-MM-DD\") === date) {\n text = getMessage(\"order.details.today\");\n } else if (moment().add(1, \"days\").format(\"YYYY-MM-DD\") === date) {\n text = getMessage(\"order.details.tomorrow\");\n }\n return { text: text, value: date };\n });\n }\n}\nclass DeliveryDetails extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n this.orderTypes = [\n {\n text: getMessage(\"order.details.location.option.delivery\"),\n value: \"DELIVERY\",\n },\n ];\n if (isExtensionEnabled(\"DeliverySlots\")) {\n this.state.addressSlotMap = {\n DELIVERY: {},\n PICKUP: {},\n };\n }\n this.startEditing = this.startEditing.bind(this);\n this.cancelEditing = this.cancelEditing.bind(this);\n this.submitChanges = this.submitChanges.bind(this);\n this.getAddressParams = this.getAddressParams.bind(this);\n this.formatSlotEndTime = this.formatSlotEndTime.bind(this);\n this.getPickupParams = this.getPickupParams.bind(this);\n this.promisifySetState = this.promisifySetState.bind(this);\n this.onChange = this.onChange.bind(this);\n }\n\n handleChangeSelectedStore = (id) => {\n this.setState({ selectedDeliveryStore: id });\n };\n\n onChange(id) {\n let { visibleDaysForSlot, orderType } = this.state;\n\n if (isExtensionEnabled(\"DeliverySlots\")) {\n const addressApi = new API({ url: \"/order-service/slot-availability\" });\n if (!this.state.addressSlotMap[orderType][id]) {\n let params = {};\n if (orderType === \"DELIVERY\") {\n let addressIndex = this.state.customer.addresses.findIndex(\n (address) => Number(address.id) === Number(id)\n );\n params = this.getAddressParams(id, visibleDaysForSlot, addressIndex);\n } else if (orderType === \"PICKUP\") {\n params = this.getPickupParams(id, visibleDaysForSlot);\n }\n\n addressApi\n .get(params)\n .then((response) => {\n let addressSlots = sortSlotsAvailability(response.data.slots);\n let slots = {};\n addressSlots &&\n addressSlots.map((slot) => {\n if (slot.available) {\n if (slots.hasOwnProperty(slot.date)) {\n slots[slot.date].push(slot);\n } else {\n slots[slot.date] = [];\n slots[slot.date].push(slot);\n }\n }\n return null;\n });\n let addressSlotMap = JSON.parse(\n JSON.stringify(this.state.addressSlotMap)\n );\n addressSlotMap[orderType][id] = slots;\n this.dateOptions[orderType][id] = generateDateOptions(slots);\n\n this.setState({\n addressSlotMap,\n });\n })\n .catch((error) => {\n console.error(error);\n if (error.code === 401) {\n throw error;\n } else {\n this.setState({\n error: error.message,\n });\n }\n });\n }\n }\n\n if (this.state.orderType === \"DELIVERY\") {\n let addressIndex = this.state.customer.addresses.findIndex(\n (address) => Number(address.id) === Number(id)\n );\n this.setState({\n addressIndex,\n addressId: id,\n orderType: \"DELIVERY\",\n preferredSlotId: undefined,\n });\n } else if (this.state.orderType === \"PICKUP\") {\n let pickupLocationIndex =\n this.state.pickupLocations &&\n this.state.pickupLocations?.findIndex(\n (pickupAddress) => Number(pickupAddress.id) === Number(id)\n );\n this.setState({\n pickupLocationIndex,\n pickupLocationId: id,\n orderType: \"PICKUP\",\n preferredSlotId: undefined,\n });\n }\n }\n\n promisifySetState(state) {\n return new Promise((resolve) => {\n this.setState(state, resolve);\n });\n }\n\n getAddressParams(addressId, visibleDaysForSlot, addressIndex) {\n let params = {};\n const { data } = this.props;\n const { customer } = this.state;\n let address =\n customer && customer.addresses && customer.addresses[addressIndex];\n params[\"startDate\"] = moment().toISOString();\n params[\"endDate\"] = moment().add(visibleDaysForSlot, \"days\").toISOString();\n params[\"storeId\"] = data.storeId;\n params[\"orderType\"] = \"DELIVERY\";\n params[\"searchInterval\"] = params[\"startDate\"] + \"/\" + params[\"endDate\"];\n // Optional Parameters\n params[\"address[address]\"] = address.address;\n params[\"address[landmark]\"] = address.landmark;\n params[\"address[city]\"] = address.city;\n params[\"address[pincode]\"] = address.pincode?.toString();\n params[\"address[latitude]\"] = address.latitude;\n params[\"address[longitude]\"] = address.longitude;\n delete params[\"startDate\"];\n delete params[\"endDate\"];\n return params;\n }\n\n getPickupParams(pickupId, visibleDaysForSlot) {\n let params = {};\n let { pickupLocations } = this.state;\n if (!pickupLocations) {\n return params;\n }\n params[\"startDate\"] = moment().toISOString();\n params[\"endDate\"] = moment().add(visibleDaysForSlot, \"days\").toISOString();\n params[\"storeId\"] = pickupId;\n params[\"orderType\"] = \"PICKUP\";\n params[\"searchInterval\"] = params[\"startDate\"] + \"/\" + params[\"endDate\"];\n delete params[\"startDate\"];\n delete params[\"endDate\"];\n return params;\n }\n\n async componentDidMount() {\n const { data } = this.props;\n let dateOptions = { DELIVERY: {}, PICKUP: {} };\n\n let addressSlotMap = {\n DELIVERY: {},\n PICKUP: {},\n };\n\n let newStates = this.generateStateFromProps(this.props, {\n editing: false,\n saving: false,\n });\n\n await this.promisifySetState(newStates);\n\n if (isExtensionEnabled(\"DeliverySlots\")) {\n let extnId = getExtensionDetails(\"DeliverySlots\").id;\n this.extnApi = new API({ url: `/account-service/extension/${extnId}` });\n await this.extnApi\n .get()\n .then((response) => {\n let visibleDaysForSlot =\n (response.data.extension.config.globalConfig &&\n response.data.extension.config.globalConfig.visibleDaysForSlot) ||\n null;\n // visibleDaysForSlot = 5 // TODO: Remove this\n this.setState({\n visibleDaysForSlot,\n });\n })\n .catch((err) => console.error(err));\n\n if (this.state.visibleDaysForSlot) {\n let pickupLocations = getStores();\n if (pickupLocations?.length) {\n await this.promisifySetState({\n stores: pickupLocations,\n selectedDeliveryStore: data?.storeId,\n });\n }\n\n if (\n pickupLocations &&\n pickupLocations.length > 0 &&\n this.props.orderConfig &&\n this.props.orderConfig.orderTypes &&\n this.props.orderConfig.orderTypes.includes(\"PICKUP\")\n ) {\n this.orderTypes.push({\n text: getMessage(\"order.details.location.option.pickup\"),\n value: \"PICKUP\",\n });\n let pickupLocationId = data.pickupLocation && data.pickupLocation.id;\n let pickupLocationIndex;\n if (pickupLocationId) {\n pickupLocationIndex =\n pickupLocations &&\n pickupLocations.findIndex(\n (loc) => loc && loc.id === pickupLocationId\n );\n }\n\n await this.promisifySetState({\n pickupLocations: pickupLocations,\n pickupLocationIndex,\n pickupLocationId,\n });\n if (this.props.data.pickupLocation) {\n this.orderSlotApi = new API({\n url: \"/order-service/slot-availability\",\n });\n let params = this.getPickupParams(\n this.props.data.pickupLocation.id,\n this.state.visibleDaysForSlot\n ); // TODO: remove asap param\n this.orderSlotApi\n .get(params)\n .then((response) => {\n let addressSlots = sortSlotsAvailability(response.data.slots);\n let slots = {};\n addressSlots &&\n addressSlots.map((slot) => {\n if (slot.available) {\n if (slots.hasOwnProperty(slot.date)) {\n slots[slot.date].push(slot);\n } else {\n slots[slot.date] = [];\n slots[slot.date].push(slot);\n }\n }\n return null;\n });\n let today = new Date();\n let preferredDate =\n this.state.preferredDate &&\n moment(this.state.preferredDate).format(\"YYYY-MM-DD\");\n if (preferredDate < today) {\n preferredDate = moment().format(\"YYYY-MM-DD\");\n }\n addressSlotMap.PICKUP[data.pickupLocation.id] = slots;\n dateOptions[\"PICKUP\"][data.pickupLocation.id] =\n generateDateOptions(slots);\n\n this.setState({\n addressSlotMap,\n preferredDate,\n });\n })\n .catch((err) => console.error(err));\n }\n }\n\n if (data.address && (this.state.addressId || this.state.addressIndex)) {\n this.orderSlotApi = new API({\n url: \"/order-service/slot-availability\",\n });\n let params = this.getAddressParams(\n data.address.id,\n this.state.visibleDaysForSlot,\n 0\n );\n this.orderSlotApi\n .get(params)\n .then((response) => {\n let addressSlots = sortSlotsAvailability(response.data.slots);\n let today = new Date();\n let preferredDate =\n this.state.preferredDate &&\n moment(this.state.preferredDate).format(\"YYYY-MM-DD\");\n if (preferredDate < today) {\n preferredDate = moment().format(\"YYYY-MM-DD\");\n }\n\n let slots = {};\n addressSlots &&\n addressSlots.map((slot) => {\n if (slot.available) {\n if (slots.hasOwnProperty(slot.date)) {\n slots[slot.date].push(slot);\n } else {\n slots[slot.date] = [];\n slots[slot.date].push(slot);\n }\n }\n return null;\n });\n addressSlotMap.DELIVERY[data.address.id] = slots;\n dateOptions[\"DELIVERY\"][data.address.id] =\n generateDateOptions(slots);\n this.setState({\n addressSlotMap,\n preferredDate,\n error: null,\n });\n })\n .catch((error) => {\n console.error(error);\n if (error.code === 401) {\n throw error;\n }\n this.setState({\n error: error.message,\n });\n });\n }\n }\n }\n this.dateOptions = dateOptions;\n }\n\n startEditing() {\n this.setState({ editing: true, preferredSlotId: null });\n }\n cancelEditing() {\n this.setState({\n editing: false,\n });\n }\n formatSlotEndTime(time) {\n return (\n parseInt(time.split(\":\")[1], 10) + \"\" + parseInt(time.split(\":\")[2], 10)\n );\n }\n\n getUtcdate() {\n let utcDate = this.state.preferredDate;\n this.state.allSlots.forEach((val) => {\n if (`${val.id}` === this.state.preferredSlotId) {\n const timeArr = val.text.split(\" \");\n if (timeArr.includes(\"Within\")) {\n let currentLocal = moment(\n localTimeToUtc(moment().local().format(\"YYYY-MM-DD HH:mm:ss\"))\n ).format(\"YYYY-MM-DD HH:mm:ss\");\n utcDate = currentLocal.split(\" \")[0].trim();\n } else {\n const finalTime = moment(\n utcToLocalTime(`${val.date} ${val.interval.split(/[TZ]/)[1]}`)\n )\n .format(\"YYYY-MM-DD HH:ss:mm\")\n .split(\" \")[1];\n const tempDate = `${this.state.preferredDate} ${finalTime}`;\n utcDate = getStandradDateTime(localTimeToUtc, tempDate).split(\" \")[0];\n }\n }\n });\n return utcDate;\n }\n\n submitChanges() {\n let { orderType, selectedDeliveryStore } = this.state;\n const { data } = this.props;\n if (this.props.onChange) {\n // onChange method should return a promise\n this.setState(\n {\n // editing: false,\n saving: true,\n },\n () => {\n let requestParams = {};\n let storeRequestParams = {};\n let storeRequestHeaders = {};\n if (\n orderType === \"DELIVERY\" &&\n Number.isFinite(this.state.addressIndex)\n ) {\n requestParams.addressId =\n this.state.customer.addresses &&\n this.state.customer.addresses[this.state.addressIndex].id;\n requestParams.type = \"DELIVERY\";\n if (isExtensionEnabled(\"DeliverySlots\")) {\n requestParams.preferredDate = this.getUtcdate();\n requestParams.preferredSlotId = Number(\n this.state.preferredSlotId\n );\n }\n const { org } = this.props;\n const organizationId = org.id.toString();\n storeRequestParams.storeId = parseInt(\n this.state.selectedDeliveryStore\n );\n storeRequestParams.organizationId = organizationId;\n storeRequestHeaders[\"X-API-VERSION\"] = \"2\";\n } else if (\n orderType === \"PICKUP\" &&\n Number.isFinite(Number(this.state.pickupLocationId))\n ) {\n // TODO: Add logic to select a pickup location\n requestParams.pickupLocationId =\n this.state.pickupLocations[this.state.pickupLocationIndex].id;\n requestParams.type = \"PICKUP\";\n if (isExtensionEnabled(\"DeliverySlots\")) {\n requestParams.preferredSlotId = Number(\n this.state.preferredSlotId\n );\n requestParams.preferredDate = this.getUtcdate();\n }\n }\n if (this.props.data.status !== \"PENDING\") {\n delete requestParams.addressId;\n }\n\n if (this.state.preferredSlotId) {\n this.props\n .onChange(requestParams, {})\n .then(\n () => {\n this.setState({ error: false, saving: false });\n },\n (error) => {\n this.setState({ error: true, saving: false });\n if (error.code === 401) {\n throw error;\n }\n }\n )\n .then(() => {\n if (parseInt(selectedDeliveryStore) === data?.storeId) {\n this.setState({ editing: false, saving: false });\n }\n });\n }\n\n if (parseInt(selectedDeliveryStore) !== data?.storeId) {\n this.props\n .onChange(storeRequestParams, storeRequestHeaders)\n .then(\n () => {\n this.setState({ error: false, saving: false });\n },\n (error) => {\n this.setState({ error: true, saving: false });\n if (error.code === 401) {\n throw error;\n }\n }\n )\n .then(() => {\n this.setState({ editing: false, saving: false });\n });\n }\n }\n );\n }\n }\n generateStateFromProps(props, state) {\n let addressId = props.data.address ? props.data.address.id : null;\n let pickupId = props.data.pickupLocation\n ? props.data.pickupLocation.id\n : null;\n let addressIndex;\n let pickupLocationIndex;\n if (addressId) {\n addressIndex =\n props.data.customer &&\n props.data.customer.addresses &&\n props.data.customer.addresses.findIndex(\n (address) => address.id === props.data.address.id\n );\n if (addressIndex === -1) {\n addressIndex = undefined;\n }\n }\n if (pickupId && state.pickupLocations) {\n pickupLocationIndex =\n state.pickupLocations &&\n state.pickupLocations.findIndex(\n (loc) => loc.id === props.data.pickupLocation.id\n );\n if (pickupLocationIndex === -1) {\n pickupLocationIndex = null;\n }\n }\n let newState = JSON.parse(JSON.stringify(state));\n newState = {\n ...newState,\n addressIndex,\n addressId,\n pickupLocationIndex,\n pickupLocationId: pickupId,\n pickupLocation: props.data.pickupLocation,\n customer: props.data.customer,\n orderType: props.data.type,\n };\n\n if (isExtensionEnabled(\"DeliverySlots\") && !state.preferredDate) {\n newState.preferredDate =\n props.data.preferredDate < moment().format(\"YYYY-MM-DD\")\n ? moment().format(\"YYYY-MM-DD\")\n : props.data.preferredDate;\n newState.preferredSlotId =\n props.data.preferredSlot && props.data.preferredSlot.id;\n }\n return newState;\n }\n componentWillReceiveProps(newProps) {\n if (newProps.data.address || newProps.data.pickupLocation) {\n this.setState((prevState) =>\n this.generateStateFromProps(newProps, prevState)\n );\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n let { customer, visibleDaysForSlot, orderType } = this.state;\n if (prevState.orderType !== this.state.orderType) {\n if (orderType === \"DELIVERY\") {\n if (\n visibleDaysForSlot &&\n !this.state.addressSlotMap[orderType][this.state.addressId]\n ) {\n this.slotApi = new API({ url: \"/order-service/slot-availability\" });\n let addressId =\n customer &&\n customer.addresses &&\n customer.addresses[0] &&\n customer.addresses[0].id;\n if (addressId && this.props.data.storeId) {\n let params = this.getAddressParams(\n addressId,\n visibleDaysForSlot,\n 0\n );\n this.slotApi\n .get(params)\n .then((response) => {\n let addressSlots = sortSlotsAvailability(response.data.slots);\n let slots = {};\n addressSlots &&\n addressSlots.map((slot) => {\n if (slot.available) {\n if (slots.hasOwnProperty(slot.date)) {\n slots[slot.date].push(slot);\n } else {\n slots[slot.date] = [];\n slots[slot.date].push(slot);\n }\n }\n return null;\n });\n let addressSlotMap = JSON.parse(\n JSON.stringify(this.state.addressSlotMap)\n );\n let today = new Date();\n let preferredDate =\n this.state.preferredDate &&\n moment(this.state.preferredDate).format(\"YYYY-MM-DD\");\n if (!preferredDate || preferredDate < today) {\n preferredDate = moment().format(\"YYYY-MM-DD\");\n }\n addressSlotMap.DELIVERY[addressId] = slots;\n this.dateOptions[\"DELIVERY\"][addressId] =\n generateDateOptions(slots);\n let addressNotServed = addressSlots.length === 0;\n this.setState({\n addressSlotMap,\n preferredDate,\n addressId,\n addressNotServed,\n error: null,\n preferredSlotId: undefined,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n } else if (orderType === \"PICKUP\") {\n if (\n visibleDaysForSlot &&\n this.state.addressSlotMap[orderType] &&\n !this.state.addressSlotMap[orderType][this.state.pickupLocationId]\n ) {\n this.slotApi = new API({ url: \"/order-service/slot-availability\" });\n let pickupId =\n this.state.pickupLocations &&\n this.state.pickupLocations[0] &&\n this.state.pickupLocations[0].id;\n if (pickupId) {\n let params = this.getPickupParams(pickupId, visibleDaysForSlot);\n this.slotApi\n .get(params)\n .then((response) => {\n let addressSlotMap = JSON.parse(\n JSON.stringify(this.state.addressSlotMap)\n );\n let addressSlots = sortSlotsAvailability(response.data.slots);\n let slots = {};\n addressSlots &&\n addressSlots.map((slot) => {\n if (slot.available) {\n if (slots.hasOwnProperty(slot.date)) {\n slots[slot.date].push(slot);\n } else {\n slots[slot.date] = [];\n slots[slot.date].push(slot);\n }\n }\n return null;\n });\n\n let today = new Date();\n let preferredDate =\n this.state.preferredDate &&\n moment(this.state.preferredDate).format(\"YYYY-MM-DD\");\n if (preferredDate < today || !preferredDate) {\n preferredDate = moment().format(\"YYYY-MM-DD\");\n }\n addressSlotMap.PICKUP[pickupId] = slots;\n this.dateOptions[\"PICKUP\"][pickupId] =\n generateDateOptions(slots);\n this.setState({\n addressSlotMap,\n preferredDate,\n pickupLocationId: pickupId,\n pickupLocationIndex: 0,\n addressNotServed: false,\n preferredSlotId: undefined,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n }\n }\n }\n componentWillUnmount() {\n this.extnApi && this.extnApi.cancel();\n this.slotApi && this.slotApi.cancel();\n }\n\n render() {\n const {\n visibleDaysForSlot,\n addressSlotMap,\n preferredDate,\n addressId,\n orderType,\n pickupLocationId,\n selectedDeliveryStore,\n stores,\n } = this.state;\n const isPickupOrder = orderType === \"PICKUP\";\n let { communicationConfig, data } = this.props;\n let allowCall = communicationConfig?.allowCall;\n let allowEmail = communicationConfig?.allowEmail;\n var title;\n if (this.props.data.status === \"COMPLETED\") {\n if (this.props.data.type === \"DELIVERY\") {\n title = getMessage(\"order.details.location.delivery.completed.title\");\n } else if (this.props.data.type === \"PICKUP\") {\n title = getMessage(\"order.details.location.pickup.completed.title\");\n } else if (this.props.data.type === \"B2B\") {\n title = getMessage(\"order.details.location.b2b.completed.title\");\n } else if (this.props.data.type === \"OFFLINE\") {\n title = getMessage(\"order.details.location.offline.completed.title\");\n }\n } else {\n if (this.props.data.type === \"DELIVERY\") {\n title = getMessage(\"order.details.location.delivery.pending.title\");\n } else if (this.props.data.type === \"PICKUP\") {\n title = getMessage(\"order.details.location.pickup.pending.title\");\n } else if (this.props.data.type === \"B2B\") {\n title = getMessage(\"order.details.location.b2b.pending.title\");\n } else if (this.props.data.type === \"OFFLINE\") {\n title = getMessage(\"order.details.location.offline.pending.title\");\n }\n }\n\n let isAddressSelected = Number.isFinite(this.state.addressIndex);\n let isPickupLocationSelected = Number.isFinite(\n this.state.pickupLocationIndex\n );\n\n let minutesToDeliver = this.props.data.preferredSlot\n ? this.props.data.preferredSlot.startTime\n ? formatSlotTime(\n this.props.data.preferredDate,\n this.props.data.preferredSlot.startTime\n ) +\n \" - \" +\n formatSlotTime(\n this.props.data.preferredDate,\n this.props.data.preferredSlot.endTime\n )\n : null\n : null;\n if (\n this.props.data.slotType === \"ASAP\" &&\n this.props.data.preferredSlot &&\n this.props.data.preferredSlot.startTime &&\n this.props.data.preferredSlot.endTime\n ) {\n minutesToDeliver = getAsapDuration(\n this.props.data.preferredSlot.startTime,\n this.props.data.preferredSlot.endTime\n );\n }\n\n let metaData = this.props.data.address && this.props.data.address.metaData;\n let metaDataPhones =\n metaData &&\n [{ phone: metaData.Phone }, { phone: metaData.AlternatePhone }].filter(\n Boolean\n );\n let myoptions =\n this.dateOptions &&\n this.dateOptions[orderType] &&\n this.dateOptions[orderType][\n orderType === \"PICKUP\" ? pickupLocationId : addressId\n ];\n let filteredOption =\n myoptions && myoptions.filter((item) => item.value === preferredDate);\n let selectedDate = null;\n if (filteredOption && filteredOption.length > 0) {\n selectedDate = filteredOption[0].value;\n }\n const clientId = this.state?.pickupLocation?.clientId;\n const billingAddress = this.props.data?.billingAddress;\n return (\n <div className=\"address-details\">\n {!this.state.editing ? (\n <React.Fragment>\n <h3 className=\"customer-heading\">{getMessage(\"Customer\")}</h3>\n {this.state.customer && (\n <React.Fragment>\n <Link\n className=\"customer-name\"\n to={`${this.props.data.url}/customers/view/${this.state.customer.id}`}\n >\n {this.state?.customer?.name}\n </Link>\n <div className=\"customer-actions\">\n {allowEmail &&\n this.state.customer &&\n this.state.customer.emails &&\n this.state.customer.emails.length > 0 && (\n <CustomerEmailWidget\n emails={this.state.customer.emails}\n />\n )}\n {allowCall &&\n this.state.customer &&\n this.state.customer.phones &&\n this.state.customer.phones.length > 0 && (\n <CustomerCallWidget phones={this.state.customer.phones} />\n )}\n </div>\n </React.Fragment>\n )}\n <div className=\"flex-around section-title title\">\n <h3>{title}</h3>\n {this.props.editable ? (\n <img\n src={editIcon}\n alt=\"Edit\"\n className=\"edit-icon\"\n onClick={this.startEditing}\n />\n ) : null}\n </div>\n </React.Fragment>\n ) : (\n <div className=\"section-title\">\n <div className=\"location-options\">\n <Radio\n name=\"delivery-option\"\n skin={RADIO_SKINS.BORDERLESS}\n value={orderType}\n readOnly={this.props.data.status !== \"PENDING\"}\n onChange={(value) => {\n value === \"DELIVERY\"\n ? this.setState({\n orderType: \"DELIVERY\",\n preferredSlotId: null,\n })\n : this.setState({\n orderType: \"PICKUP\",\n preferredSlotId: null,\n });\n }}\n options={this.orderTypes}\n />\n </div>\n </div>\n )}\n {this.props.data.address && (\n <div className=\"customer-address customer-meta\">\n {(({ metaData }) => {\n let name = [\n metaData && metaData.FirstName,\n metaData && metaData.LastName,\n ]\n .filter(Boolean)\n .join(\" \");\n if (name) {\n return name;\n }\n return this.state?.customer?.name;\n })(this.props.data.address)}\n </div>\n )}\n {this.props.data.metaData &&\n this.props.data.pickupLocation &&\n this.props.data.metaData.pickupPersonName && (\n <React.Fragment>\n <div className=\"customer-address customer-meta\">\n {(({ pickupPersonName }) => {\n return pickupPersonName;\n })(this.props.data.metaData)}\n </div>\n {this.props.data.metaData.pickupPersonContact && (\n <div className=\"customer-address customer-meta\">\n {(({ pickupPersonContact }) => {\n return pickupPersonContact;\n })(this.props.data.metaData)}\n </div>\n )}\n </React.Fragment>\n )}\n <div className=\"customer-actions\">\n {allowCall && metaDataPhones && metaDataPhones.length > 0 && (\n <CustomerCallWidget phones={metaDataPhones} />\n )}\n </div>\n {(orderType === \"DELIVERY\" ||\n orderType === \"PICKUP\" ||\n orderType === \"OFFLINE\") &&\n (isAddressSelected || isPickupLocationSelected) ? (\n !this.state.editing ? (\n !isPickupOrder ? (\n <React.Fragment>\n <div className=\"customer-address\">\n {this.props.data.address &&\n (({ address, city, pincode, metaData }) => {\n let addString =\n this.props.data.address &&\n getDisplayAddress(\n this.props.data.address,\n this.props.data.addressSequence\n );\n return addString;\n })(this.props.data.address)}\n </div>\n <div className=\"billing-address-title\">\n <div className=\"billing-title\">\n {getMessage(\"order.details.location.billing.address.title\")}\n </div>\n </div>\n <div className=\"customer-address\">\n {billingAddress &&\n (({ address, city, pincode, metaData }) => {\n let addString = getDisplayAddress(\n billingAddress,\n this.props.data.addressSequence\n );\n return addString;\n })(billingAddress)}\n </div>\n </React.Fragment>\n ) : (\n this.state.pickupLocation && (\n <div className=\"customer-address\">\n <div className=\"customer-address\">\n {clientId ? (\n <>\n {clientId}, {this.state.pickupLocation.address}\n </>\n ) : (\n <>{this.state.pickupLocation.address}</>\n )}\n </div>\n </div>\n )\n )\n ) : (\n <React.Fragment>\n <div className=\"customer-addresses\">\n {!isPickupOrder ? (\n <Radio\n name=\"delivery-address\"\n skin={RADIO_SKINS.ONE_PER_LINE}\n readOnly={this.props.data.status !== \"PENDING\"}\n value={\n this.state.customer.addresses[this.state.addressIndex] &&\n this.state.customer.addresses[this.state.addressIndex].id\n }\n onChange={this.onChange}\n options={this.state.customer.addresses.map((address) => ({\n value: address.id,\n text: getDisplayAddress(\n address,\n this.props.data.addressSequence\n ),\n }))}\n />\n ) : (\n <Radio\n name=\"pickup-addresses\"\n skin={RADIO_SKINS.ONE_PER_LINE}\n readOnly={this.props.data.status !== \"PENDING\"}\n value={\n this.state.pickupLocations &&\n this.state.pickupLocations[\n this.state.pickupLocationIndex\n ] &&\n this.state.pickupLocations[this.state.pickupLocationIndex]\n .id\n } // TODO: confirm\n onChange={this.onChange}\n options={\n this.state.pickupLocations &&\n this.state.pickupLocations\n .filter((store) => store.hasClickCollect)\n .map((pickupLocation) => ({\n value: pickupLocation.id,\n text: pickupLocation.name,\n }))\n }\n />\n )}\n </div>\n {stores && orderType === \"DELIVERY\" && (\n <div className=\"stores-container\">\n <div className=\"stores-heading\">\n {getMessage(\"operations.store.heading\")}\n </div>\n <Radio\n name=\"stores\"\n skin={RADIO_SKINS.ONE_PER_LINE}\n readOnly={data.status !== \"PENDING\"}\n value={selectedDeliveryStore}\n onChange={this.handleChangeSelectedStore}\n options={stores?.map?.((store) => ({\n value: store.id,\n text: store.name,\n }))}\n />\n </div>\n )}\n {isExtensionEnabled(\"DeliverySlots\") &&\n orderType === \"DELIVERY\" &&\n visibleDaysForSlot &&\n addressSlotMap &&\n addressSlotMap[orderType] &&\n addressSlotMap[orderType][addressId] && (\n <React.Fragment>\n <Select\n name=\"preferredDate\"\n label={getMessage(\"order.details.preferredDate\")}\n value={selectedDate}\n options={\n this.dateOptions &&\n this.dateOptions[orderType] &&\n this.dateOptions[orderType][addressId]\n }\n onChange={(e) =>\n this.setState({\n preferredSlotId: undefined,\n preferredDate: e,\n })\n }\n />\n {preferredDate &&\n Array.isArray(\n addressSlotMap[orderType][addressId][preferredDate]\n ) && (\n <Select\n name=\"preferredSlot\"\n label={getMessage(\"order.details.prefferdSlot\")}\n placeholder={getMessage(\"Select slot\")}\n value={this.state.preferredSlotId}\n onChange={(e) => {\n this.setState({\n preferredSlotId: e,\n allSlots:\n addressSlotMap[orderType][addressId][\n preferredDate\n ],\n });\n }}\n options={addressSlotMap[orderType][addressId][\n preferredDate\n ].map((slot) => {\n const timearr = slot.interval.split(\"/\");\n if (slot.type === \"ASAP\") {\n return {\n text: slot.text,\n value: slot.id,\n };\n } else {\n return {\n text: `${formatIsoTime(\n timearr[0]\n )} - ${formatIsoTime(timearr[1])}`,\n value: slot.id,\n };\n }\n })}\n />\n )}\n </React.Fragment>\n )}\n {isExtensionEnabled(\"DeliverySlots\") &&\n isPickupOrder &&\n addressSlotMap &&\n addressSlotMap[orderType] &&\n addressSlotMap[orderType][pickupLocationId] && (\n <React.Fragment>\n <Select\n name=\"preferredDatePickup\"\n label={getMessage(\"order.details.preferredDate\")}\n value={selectedDate}\n options={\n this.dateOptions &&\n this.dateOptions[orderType] &&\n this.dateOptions[orderType][pickupLocationId]\n }\n onChange={(e) =>\n this.setState({\n preferredDate: e,\n preferredSlotId: undefined,\n })\n }\n />\n {preferredDate &&\n Array.isArray(\n addressSlotMap[orderType][pickupLocationId][\n preferredDate\n ]\n ) && (\n <Select\n name=\"preferredSlot\"\n label={getMessage(\"order.details.prefferdSlot\")}\n value={this.state.preferredSlotId}\n onChange={(e) => {\n this.setState({\n preferredSlotId: e,\n allSlots:\n addressSlotMap[orderType][pickupLocationId][\n preferredDate\n ],\n });\n }}\n options={addressSlotMap[orderType][pickupLocationId][\n preferredDate\n ].map((slot) => {\n const timearr = slot.interval.split(\"/\");\n return {\n text: `${formatIsoTime(\n timearr[0]\n )} - ${formatIsoTime(timearr[1])}`,\n value: slot.id,\n };\n })}\n />\n )}\n </React.Fragment>\n )}\n </React.Fragment>\n )\n ) : (\n <div className=\"store-address\">\n {this.state.pickupLocation ? (\n <React.Fragment>\n <span className=\"customer-address customer-meta\">\n {getMessage(\"order.details.pickup.address\")}\n </span>{\" \"}\n {this.state.pickupLocation.address}\n </React.Fragment>\n ) : null}\n </div>\n )}\n {!this.state.editing &&\n isExtensionEnabled(\"DeliverySlots\") &&\n (this.props.data.preferredDate || minutesToDeliver) && (\n <div className=\"slot-details\">\n <div className=\"section-title slot-title\">\n <h5>{getMessage(\"order.details.slot.heading\")}</h5>\n </div>\n {this.props.data.preferredDate && (\n <div className=\"customer-address\">{`${\n this.props.data.preferredDate &&\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${this.props.data.preferredDate} ${this.props.data.preferredSlot.startTime}`\n )\n ).split(\",\")[0]\n }`}</div>\n )}\n {minutesToDeliver && (\n <div className=\"customer-address\">{minutesToDeliver}</div>\n )}\n </div>\n )}\n <div className=\"delivery-option-buttons\">\n {this.state.editing ? (\n <button\n className=\"button primary\"\n disabled={\n (isExtensionEnabled(\"DeliverySlots\") &&\n !this.state.preferredSlotId &&\n parseInt(selectedDeliveryStore) === data?.storeId) ||\n this.state.saving\n }\n onClick={this.submitChanges}\n >\n {getMessage(\"order.details.location.actions.confirmText\")}\n </button>\n ) : null}\n {this.state.editing ? (\n <button\n className=\"button button-white\"\n onClick={this.cancelEditing}\n >\n {getMessage(\"order.details.location.actions.cancelText\")}\n </button>\n ) : null}\n </div>\n </div>\n );\n }\n}\n\nexport default DeliveryDetails;\n","import Visa from \"./visa.svg\";\nimport MasterCard from \"./mastercard.svg\";\nimport Amex from \"./americanExpress.svg\";\nimport Generic from \"./genericCard.svg\";\nfunction getPaymentLogo(paymentMode) {\n let icon = Generic;\n switch (paymentMode) {\n case \"VISA\":\n case \"visa\":\n icon = Visa;\n break;\n case \"MASTER\":\n case \"MASTERCARD\":\n icon = MasterCard;\n break;\n case \"AMEX\":\n case \"AMERICANEXPRESS\":\n icon = Amex;\n break;\n default:\n icon = Generic;\n }\n return icon;\n}\n\nfunction formatCardNumber(number, type) {\n if (!number) {\n return \"\";\n }\n return `${\n type\n ? type.charAt(0).toUpperCase() + type.toLowerCase().slice(1) + \" - \"\n : \"\"\n } XXXX${number.substr(number.length - 4)}`;\n}\n\nexport { getPaymentLogo, formatCardNumber };\n","import React, { Component } from \"react\";\nimport Image from \"../../../../../components/Image\";\nimport Table, { Header, Row, Cell } from \"../../../../../components/Table\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport { getPaymentLogo, formatCardNumber } from \"../../../../../lib/payment\";\nimport { is_Domain_WSI } from \"../../../../../utils/domainCheck\";\nfunction getMobileView() {\n return window.screen.width <= 480;\n}\n\nclass PaymentDetails extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isMobileView: getMobileView(),\n };\n this.mobileView = this.mobileView.bind(this);\n }\n\n mobileView() {\n this.setState({ isMobileView: getMobileView() });\n }\n\n componentDidMount() {\n window.addEventListener(\"resize\", this.mobileView, false);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.mobileView, false);\n }\n render() {\n let { isMobileView } = this.state;\n return (\n <div className=\"payment-details\">\n <div className=\"section-title\">\n <h3>{getMessage(\"order.details.payment.heading\")}</h3>\n <Table>\n <Header>\n <Cell>{getMessage(\"order.details.payment.amount\")}</Cell>\n <Cell>{getMessage(\"order.details.payment.mode\")}</Cell>\n <Cell>{getMessage(\"order.details.payment.card\")}</Cell>\n <Cell>{getMessage(\"order.details.payment.status\")}</Cell>\n <Cell>{getMessage(\"order.details.payment.details\")}</Cell>\n </Header>\n {this.props.payment.map((item, i) => (\n <Row key={`payment-${i}`}>\n <Cell className=\"payment-amount\">\n {isMobileView ? (\n <div className=\"text-muted\">\n {getMessage(\"order.details.payment.amount\")}\n </div>\n ) : (\n \"\"\n )}\n {this.props.currency.symbol} {item.amount}\n </Cell>\n <Cell className=\"payment-mode\">\n {isMobileView ? (\n <div className=\"text-muted\">\n {getMessage(\"order.details.payment.mode\")}\n </div>\n ) : (\n \"\"\n )}\n {item?.mode === \"COD\" && is_Domain_WSI() ? (\n <div>{getMessage(\"cop\")}</div>\n ) : (\n <div>{item.mode}</div>\n )}\n </Cell>\n <Cell className=\"payment-card-number\">\n {isMobileView ? (\n <div className=\"text-muted\">\n {getMessage(\"order.details.payment.card\")}\n </div>\n ) : (\n \"\"\n )}\n {item.metaData &&\n (item.metaData.cardNumber || item.metaData.cardType) ? (\n <React.Fragment>\n <Image\n className=\"payment-card\"\n size=\"sm\"\n src={getPaymentLogo(item.metaData.cardType)}\n />\n <span>\n {formatCardNumber(\n item.metaData.cardNumber,\n item.metaData.type\n )}\n </span>\n </React.Fragment>\n ) : (\n \"-\"\n )}\n </Cell>\n <Cell className=\"payment-status\">\n {isMobileView ? (\n <div className=\"text-muted\">\n {getMessage(\"order.details.payment.status\")}\n </div>\n ) : (\n \"\"\n )}\n {item.status}\n </Cell>\n\n <Cell className=\"payment-transaction-id\">\n {item?.mode !== \"COD\" && (\n <>\n {isMobileView ? (\n <div className=\"text-muted\">\n {getMessage(\"order.details.payment.transactionId\")}\n </div>\n ) : (\n \"\"\n )}\n <span className=\"transactionId\">\n {getMessage(\"order.details.payment.transactionId\")}{\" \"}\n –{\" \"}\n {(item.metaData && item.metaData.transaction_id) ||\n item.transactionId}\n </span>\n </>\n )}\n </Cell>\n </Row>\n ))}\n </Table>\n </div>\n </div>\n );\n }\n}\n\nexport default PaymentDetails;\n","import React, { Component } from \"react\";\nimport Table, { Header, Row, Cell } from \"../../../../../components/Table\";\nimport { getMessage } from \"../../../../../lib/translator\";\n\nfunction getMobileView() {\n return window.screen.width <= 480;\n}\n\nclass RefundDetails extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isMobileView: getMobileView(),\n };\n this.mobileView = this.mobileView.bind(this);\n }\n\n mobileView() {\n this.setState({ isMobileView: getMobileView() });\n }\n\n componentDidMount() {\n window.addEventListener(\"resize\", this.mobileView, false);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.mobileView, false);\n }\n render() {\n let { isMobileView } = this.state;\n return (\n <div className=\"payment-details\">\n <div className=\"section-title\">\n <h3>{getMessage(\"Refund Details\")}</h3>\n <Table>\n <Header>\n <Cell>{getMessage(\"order.details.payment.amount\")}</Cell>\n <Cell>{getMessage(\"order.details.payment.mode\")}</Cell>\n <Cell>{getMessage(\"order.details.payment.status\")}</Cell>\n <Cell>{getMessage(\"order.details.payment.details\")}</Cell>\n </Header>\n {this.props.refund.map((item, i) => (\n <Row key={`payment-${i}`} className=\"refund-row\">\n <Cell className=\"payment-amount\">\n {isMobileView ? (\n <div className=\"text-muted\">\n {getMessage(\"order.details.payment.amount\")}\n </div>\n ) : (\n \"\"\n )}\n {this.props.currency.symbol} {item.amount}\n </Cell>\n <Cell className=\"payment-mode\">\n {isMobileView ? (\n <div className=\"text-muted\">\n {getMessage(\"order.details.payment.mode\")}\n </div>\n ) : (\n \"\"\n )}\n <div>{item.method}</div>\n </Cell>\n <Cell className=\"payment-status\">\n {isMobileView ? (\n <div className=\"text-muted\">\n {getMessage(\"order.details.payment.status\")}\n </div>\n ) : (\n \"\"\n )}\n {item.status || \"COMPLETED\"}\n </Cell>\n <Cell className=\"payment-transaction-id\">\n {isMobileView ? (\n <div className=\"text-muted\">\n {getMessage(\"order.details.payment.details\")}\n </div>\n ) : (\n \"\"\n )}\n {item.refundReference && (\n <span className=\"transactionId\">\n {getMessage(\"order.details.payment.ref\")} –{\" \"}\n {item.refundReference}\n </span>\n )}\n </Cell>\n </Row>\n ))}\n </Table>\n </div>\n </div>\n );\n }\n}\n\nexport default RefundDetails;\n","import React, { Component } from \"react\";\nimport Table, { Header, Row, Cell } from \"../../../../../components/Table\";\nimport API from \"../../../../../lib/api\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport editIcon from \"../edit-icon.svg\";\nimport { isExtensionEnabled } from \"../../../../../lib/auth\";\nclass PackingDetails extends Component {\n constructor() {\n super();\n this.state = { present: false };\n }\n componentDidMount() {\n const api = new API({ url: \"/config-service/config/inStoreProcessing\" });\n api\n .get()\n .then((response) => {\n const isInStoreProcessingPresent =\n response.data.inStoreProcessing.packedOrderEditAllowed;\n if (isInStoreProcessingPresent) {\n this.setState({\n present: true,\n });\n }\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n render() {\n const details = this.props.packingDetails;\n const metaData = this.props.packageMetaData;\n const referenceNumber = this.props.referenceNumber;\n return (\n <div className=\"packing-details\">\n <div className=\"packing-details-header\">\n <h3>{getMessage(\"order.details.packing.heading\")}</h3>\n {this.props.status === \"PACKED\" &&\n (this.props?.courierStatus === \"CANCELLED\" ||\n this.props?.courierStatus === undefined) &&\n this.state.present &&\n !isExtensionEnabled(\"InStoreProcessing\") && (\n <img\n src={editIcon}\n alt=\"Edit\"\n className=\"edit-icon\"\n onClick={() =>\n this.props?.history.push(\n `/orders/pack-order/${referenceNumber}/edit`\n )\n }\n />\n )}\n </div>\n {details ? (\n <Table>\n <Header>\n <Cell>{getMessage(\"type.text.label\")}</Cell>\n <Cell>{getMessage(\"order.packing.labels\")}</Cell>\n {metaData && <Cell>{getMessage(\"order.packing.weight\")}</Cell>}\n </Header>\n\n {Object.keys(details).map((type, index) => {\n let packageWeight = 0;\n Array.isArray(details[type])\n ? details[type].forEach((label) => {\n packageWeight += metaData?.packages[label]?.weight || 0;\n })\n : (packageWeight +=\n metaData?.packages[details[type]]?.weight || 0);\n return (\n <Row key={`packing-item-${index}`}>\n <Cell className=\"order-package-type\">{type}</Cell>\n <Cell>\n {(Array.isArray(details[type]) &&\n details[type].join(\", \")) ||\n details[type]}\n </Cell>\n {metaData && <Cell>{packageWeight}</Cell>}\n </Row>\n );\n })}\n </Table>\n ) : (\n <Table>\n <Header>\n <Cell>{getMessage(\"type.text.label\")}</Cell>\n <Cell>{getMessage(\"order.packing.labels\")}</Cell>\n <Cell>{getMessage(\"order.packing.weight\")}</Cell>\n </Header>\n <Row>\n <Cell className=\"order-package-type\">{getMessage(\"NA\")}</Cell>\n <Cell>{getMessage(\"NA\")}</Cell>\n <Cell>{getMessage(\"NA\")}</Cell>\n </Row>\n </Table>\n )}\n </div>\n );\n }\n}\n\nexport default PackingDetails;\n","import React, { useState } from \"react\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport { Popup as Modal } from \"../../../../../components/Popup\";\nimport getFileExtensionFromUrl from \"../../../../../utils/getFileExtensionFromUrl\";\nimport \"./style.css\";\n\nconst UploadedFileView = (props) => {\n const { orderDetailData } = props;\n const accessUrl = orderDetailData?.accessUrl;\n const fileType = accessUrl && getFileExtensionFromUrl(accessUrl);\n\n const [viewUploadedFile, setViewUploadedFile] = useState(false);\n const [showViewButton, setViewButton] = useState(false);\n\n const handleViewUploadedFile = () => {\n setViewUploadedFile(!viewUploadedFile);\n setViewButton(false);\n };\n return (\n <>\n {viewUploadedFile && (\n <Modal\n show\n close={handleViewUploadedFile}\n heading={getMessage(\"orderDetails.uploadFile\")}\n >\n <div className=\"view-uploaded-file-wrp\">\n {fileType && fileType === \"pdf\" ? (\n <embed src={accessUrl} className=\"upload-file-large\" />\n ) : (\n <img\n src={accessUrl}\n className=\"upload-file-large\"\n alt=\"uploaded-file\"\n />\n )}\n </div>\n </Modal>\n )}\n <div className=\"file-upload-wrp\">\n {accessUrl && (\n <div className=\"file-body-wrp\" onClick={handleViewUploadedFile}>\n <div\n className=\"file-pdf-wrp\"\n onMouseLeave={() => setViewButton(false)}\n >\n {fileType && fileType === \"pdf\" ? (\n <embed\n src={accessUrl}\n className=\"upload-file\"\n onMouseEnter={() => setViewButton(true)}\n onTouchEnd={() => setViewButton(true)}\n />\n ) : (\n <img\n src={accessUrl}\n className=\"upload-file\"\n onMouseEnter={() => setViewButton(true)}\n alt=\"file\"\n />\n )}\n {showViewButton && (\n <div className=\"file-view-pdf-btn-wrp\">\n <button type=\"button\" className=\"file-view-pdf-btn\">\n {getMessage(\"dispute.view\")}\n </button>\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n </>\n );\n};\n\nexport default UploadedFileView;\n","import React from \"react\";\nimport { BaseForm } from \"../../../../../components/Form\";\nimport MetaDataFormFields from \"../../../../../components/MetaDataFormFields\";\nimport API from \"../../../../../lib/api\";\nimport { hasPermissions } from \"../../../../../lib/auth\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport { cloneMutables } from \"../../../../../lib/stateManagement\";\nimport UploadedFileView from \"../UploadedFileView\";\n\nimport editIcon from \"../edit-icon.svg\";\nimport \"./style.css\";\n\nclass OrderMetaData extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n editing: false,\n saving: false,\n canBeEdited: false,\n };\n }\n\n componentDidMount() {\n this.extnsnApi = new API({ url: `/config-service/meta-data` });\n this.extnsnApi\n .get()\n .then((response) => {\n let config = response.data.config.entityMetaData.order;\n this.setState(\n {\n config,\n canBeEdited: true,\n },\n () => {\n this.setState((prevState) =>\n this.generateStateFromProps(this.props, this.state)\n );\n }\n );\n })\n .catch((error) => {\n console.error(error);\n });\n this.ignoreKeysInView = [\"pickupPersonContact\", \"pickupPersonName\"];\n }\n\n generateStateFromProps(props, state) {\n let newState = Object.assign({}, state);\n let config = newState.config;\n let { data } = props;\n let values = {};\n config &&\n Object.entries(config).forEach(([key, type], index) => {\n values[key] = data && data[key];\n });\n newState.values = values;\n return cloneMutables(newState);\n }\n\n onSubmit(formData) {\n let data = Object.assign({}, formData);\n if (this.props.onChange) {\n this.setState(\n {\n saving: true,\n },\n () => {\n this.props\n .onChange(data)\n .then(\n (response) => {\n this.setState({\n error: false,\n });\n },\n (error) => {\n this.setState({\n error: error,\n });\n if (error.code === 401) {\n throw error;\n }\n }\n )\n .then(() =>\n this.setState({\n editing: false,\n saving: false,\n })\n );\n }\n );\n }\n }\n componentWillUnmount() {\n this.extnsnApi && this.extnsnApi.cancel();\n }\n\n render() {\n const { editing, config, saving } = this.state;\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n const { data } = this.props;\n const canBeEdited = hasPermissions(\"order\", \"order\", \"put\");\n return (\n <div className=\"order-metadata-details\">\n {editing ? (\n <Form>\n <div className=\"flex-around section-title\">\n <h3>Custom Fields Details</h3>\n </div>\n <MetaDataFormFields\n className=\"meta-data\"\n readOnly={!canBeEdited}\n stateKeys={[]}\n title={<h3>Order Metadata</h3>}\n metaDataWithType={config}\n page=\"order-details\"\n _this={this}\n />\n {canBeEdited && (\n <div className=\"form-action\">\n <SubmitButton disabled={saving}>\n {getMessage(\"order.submit\")}\n </SubmitButton>\n <button\n type=\"button\"\n className=\"button\"\n onClick={() =>\n this.setState((prevState) =>\n this.generateStateFromProps(\n this.props,\n Object.assign({}, prevState, { editing: false })\n )\n )\n }\n >\n {getMessage(\"order.cancel\")}\n </button>\n </div>\n )}\n </Form>\n ) : (\n <div className=\"order-metadata-details\">\n <div className=\"flex-around section-title\">\n <h3>Custom Fields Details</h3>\n {this.props.editable ? (\n <img\n src={editIcon}\n alt=\"Edit\"\n className=\"edit-icon\"\n onClick={() => this.setState({ editing: true })}\n />\n ) : null}\n </div>\n {config &&\n Object.entries(config)\n .map(([key, type], index) => {\n if (data && data[key]) {\n if (type.type === \"file\" && !data[key]?.url) return false;\n if (this.ignoreKeysInView.indexOf(key) > -1) {\n return false;\n }\n return (\n <div key={`metadata-${key}-${index}`}>\n <small className=\"text-muted\">\n {key}:{\" \"}\n <span className=\"creation-time\">\n {data[key] === true ? (\n \"Yes\"\n ) : type.type === \"file\" && data[key].accessUrl ? (\n <UploadedFileView orderDetailData={data[key]} />\n ) : typeof data[key] === \"string\" ? (\n getMessage(data[key])\n ) : (\n JSON.stringify(data[key])\n )}\n </span>\n </small>\n </div>\n );\n }\n return null;\n })\n .filter(Boolean)}\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default OrderMetaData;\n","import React from \"react\";\nimport { BaseForm, Radio, Select } from \"../../../../../components/Form\";\nimport Loader from \"../../../../../components/Loader\";\nimport Table, { Header, Row, Cell } from \"../../../../../components/Table\";\n\nimport API from \"../../../../../lib/api\";\nimport { getMessage } from \"../../../../../lib/translator\";\n\nimport \"./style.css\";\n\nconst getWastageReasons = (wastageReasons) => {\n return wastageReasons.map((reason) => ({\n text: reason.name.toLowerCase(),\n value: reason.id,\n }));\n};\n\nconst resolutionOptions = [\n {\n text: getMessage(\"return.toStore\"),\n value: \"STORE\",\n },\n {\n text: getMessage(\"return.markasWastage\"),\n value: \"WASTAGE\",\n },\n];\n\nclass ReturnsFrom extends BaseForm {\n constructor(props) {\n super(props);\n this.state.wastageReasons = getWastageReasons(props.wastageReasons);\n this.state.loading = false;\n }\n\n componentDidMount() {\n this.setState({\n loading: true,\n });\n const api = new API({\n url: `/order-service/order/${this.props.referenceNumber}/returns`,\n });\n // const api = new API({ url: 'https://api.myjson.com/bins/obvhy' })\n api\n .get()\n .then(\n (response) => {\n let returns = response.data.returns;\n this.setState({\n values: {\n returns,\n },\n loading: false,\n });\n },\n (error) => {\n this.setState({\n formError: error,\n loading: false,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n onSubmit(formData) {\n this.setState({\n submitting: true,\n });\n let data = Object.assign({}, formData);\n let returns = data.returns;\n let returnToStoreItems = [];\n let wastageItems = [];\n returns.forEach((item) => {\n if (item.resolution === \"WASTAGE\") {\n wastageItems.push({\n orderReturnId: item.id,\n quantity: item.quantity,\n wastageReasonId:\n item.wastageReasonId ||\n (this.state.wastageReasons && this.state.wastageReasons[0].value),\n });\n } else if (item.resolution === \"STORE\") {\n returnToStoreItems.push({\n orderReturnId: item.id,\n quantity: item.quantity,\n });\n }\n });\n if (returnToStoreItems.length > 0) {\n const storeApi = new API({\n url: `/order-service/order/${this.props.referenceNumber}/return-to-store`,\n });\n let params = {};\n params.items = returnToStoreItems;\n params.storeId = this.props.storeId;\n storeApi\n .put(params)\n .then(\n (response) => {\n this.props.onSuccess();\n },\n (error) => {\n this.setState({\n formError: error,\n submitting: false,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n if (wastageItems.length > 0) {\n const wastageApi = new API({\n url: `/order-service/order/${this.props.referenceNumber}/wastage`,\n });\n let params = {};\n params.items = wastageItems;\n params.storeId = this.props.storeId;\n wastageApi\n .put(params)\n .then(\n (response) => {\n this.props.onSuccess();\n },\n (error) => {\n this.setState({\n formError: error,\n submitting: false,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n }\n\n render() {\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n const { returns } = this.state.values;\n let defaultWastageValue =\n this.state.wastageReasons && this.state.wastageReasons[0].value;\n return this.state.loading ? (\n <Loader />\n ) : (\n <div className=\"return-resolution\">\n <Form>\n <Table>\n <Header>\n <Cell>{getMessage(\"return.name\")}</Cell>\n <Cell>{getMessage(\"return.resolution\")}</Cell>\n <Cell>{getMessage(\"return.wastagereason\")}</Cell>\n <Cell>{getMessage(\"return.quantity\")}</Cell>\n <Cell>{getMessage(\"return.settledQuantity\")}</Cell>\n </Header>\n {returns &&\n returns.map((item, index) => {\n let entityType = item.orderItem.entityType.toLowerCase();\n let name = item.orderItem[entityType].name;\n return (\n <Row key={`return-row-${index}`}>\n <Cell>\n <p>{name}</p>\n </Cell>\n <Cell>\n <Radio\n name={`resolution-${index}`}\n options={resolutionOptions}\n {...this.generateStateMappers({\n stateKeys: [\"returns\", index, \"resolution\"],\n loseEmphasisOnFill: true,\n })}\n />\n </Cell>\n <Cell>\n {returns[index].resolution === \"WASTAGE\" && (\n <Select\n name={`wastage-reason-${index}`}\n placeholder={getMessage(\n \"return.wastagereason.placeholder\"\n )}\n options={this.state.wastageReasons}\n {...this.generateStateMappers({\n stateKeys: [\"returns\", index, \"wastageReasonId\"],\n loseEmphasisOnFill: true,\n defaultValue: defaultWastageValue,\n })}\n />\n )}\n </Cell>\n <Cell>{item.quantity}</Cell>\n <Cell>{item.settledQuantity}</Cell>\n </Row>\n );\n })}\n </Table>\n <div className=\"form-action\">\n <SubmitButton disabled={this.state.submitting}>\n {getMessage(\"return.submit\")}\n </SubmitButton>\n <button\n type=\"button\"\n className=\"button\"\n onClick={() => this.props.closeReturnsPopup()}\n >\n {getMessage(\"return.cancel\")}\n </button>\n </div>\n </Form>\n </div>\n );\n }\n}\n\nexport default ReturnsFrom;\n","import React from \"react\";\nimport { BaseForm, Input } from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nclass ReturnFilters extends BaseForm {\n render() {\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n return (\n <Form>\n <div className=\"form-fields\">\n <Input\n type=\"text\"\n label={getMessage(\"return.filter.referenceNumber\")}\n placeholder={getMessage(\n \"return.filter.referenceNumber.placeholder\"\n )}\n {...this.generateStateMappers({\n stateKeys: [\"referenceNumber\"],\n loseEmphasisOnFill: true,\n })}\n />\n </div>\n <div className=\"form-actions\">\n <SubmitButton>{getMessage(\"return.filter.submit\")}</SubmitButton>\n </div>\n </Form>\n );\n }\n}\n\nexport default ReturnFilters;\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport StoreSelector, {\n getDefaultStore,\n} from \"../../../containers/StoreSelector\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport { Popup } from \"../../../components/Popup\";\nimport ReturnsForm from \"./Form/ReturnResolution\";\nimport ReturnsFilter from \"./Filters\";\n\nimport { getMessage } from \"../../../lib/translator\";\nimport { getPrintableTime } from \"../../../lib/datetime\";\nimport { isExtensionEnabled } from \"../../../lib/auth\";\nimport API from \"../../../lib/api\";\n\nimport EmptyIcon from \"./returns-empty.svg\";\nimport \"./style.css\";\n\nconst WastageContext = React.createContext(\"wastage\");\n\nconst emptyState = (props) => {\n return {\n icon: EmptyIcon,\n message: getMessage(\"returns.emptyMessage\"),\n actions: ({ apiParams, onAction }) => (\n <StoreSelector\n value={apiParams.storeId}\n stores={props.stores}\n onChange={(storeId) => {\n onAction(TABLE_ACTIONS.SET_API_PARAMS, { storeId });\n }}\n />\n ),\n };\n};\n\nclass TableActions extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showDisputePopup: false,\n };\n }\n render() {\n const { props } = this;\n const storeId = props.storeId;\n return (\n <React.Fragment>\n <WastageContext.Consumer>\n {(wastageReasons) => (\n <Popup\n show={this.state.showDisputePopup}\n heading={`${getMessage(\"return.view.heading\")} #${\n props.referenceNumber\n }`}\n close={() => this.setState({ showDisputePopup: false })}\n className=\"returns-popup\"\n >\n <ReturnsForm\n storeId={storeId}\n referenceNumber={props.referenceNumber}\n onAction={props.onAction}\n closeReturnsPopup={() =>\n this.setState({ showDisputePopup: false })\n }\n wastageReasons={wastageReasons}\n onSuccess={() => this.setState({ showDisputePopup: false })}\n />\n </Popup>\n )}\n </WastageContext.Consumer>\n <DropDown icon={<img src={ICONS.VELLIP} alt=\"â‹®\" />}>\n <DropDownItem\n onClick={() => this.setState({ showDisputePopup: true })}\n >\n {getMessage(\"dispute.view\")}\n </DropDownItem>\n </DropDown>\n </React.Fragment>\n );\n }\n}\n\nconst tableProperties = {\n headers: [\n getMessage(\"dispute.referenceNumber\"),\n getMessage(\"dispute.orderPlacedOn\"),\n getMessage(\"dispute.actions\"),\n ],\n row: ({ referenceNumber, apiParams, createdAt, onAction }) => (\n <Row>\n <Cell>\n <span className=\"ref-num\">\n <Link to={`/operations/orders/${referenceNumber}`}>\n {referenceNumber}\n </Link>\n </span>\n </Cell>\n <Cell>\n <div>\n {createdAt ? getPrintableTime(createdAt).split(\", \")[0] : null}\n </div>\n <small className=\"text-muted\">\n {createdAt && getPrintableTime(createdAt).split(\", \")[1]}\n </small>\n </Cell>\n <Cell>\n <TableActions\n referenceNumber={referenceNumber}\n onAction={onAction}\n {...apiParams}\n />\n </Cell>\n </Row>\n ),\n};\n\nclass ReturnsContainer extends Component {\n componentDidMount() {\n const wasteageApi = new API({ url: \"/order-service/wastage-reason\" });\n wasteageApi\n .get()\n .then(\n (response) => {\n this.setState({\n wastageReasons: response.data.wastagereason,\n });\n },\n (error) => {\n throw error;\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n render() {\n const { props } = this;\n let params = {};\n params.storeId = getDefaultStore(props.stores).storeId;\n params.orderReturnStatus = \"PENDING\";\n return (\n <WastageContext.Provider value={this.state && this.state.wastageReasons}>\n <ListingPage\n menu={props.menu}\n title={getMessage(\"return.heading\")}\n className=\"returns-page\"\n primaryKey=\"referenceNumber\"\n api={{\n url: \"/order-service/order\",\n params: params,\n transform: (response) => response.data.order,\n }}\n emptyState={emptyState(props)}\n tableProperties={tableProperties}\n headerActions={({ apiParams, onAction }) => (\n <StoreSelector\n value={apiParams.storeId}\n stores={props.stores}\n onChange={(storeId) => {\n onAction(TABLE_ACTIONS.SET_API_PARAMS, { storeId });\n }}\n />\n )}\n filters={{\n component: ReturnsFilter,\n }}\n storeDependent\n />\n </WastageContext.Provider>\n );\n }\n}\n\nfunction getReturnableStatuses() {\n let returnableStatuses = [\"COMPLETED\"];\n returnableStatuses.push(\"PACKED\");\n if (isExtensionEnabled(\"LogisticsSupport\")) {\n returnableStatuses.push(\"DISPATCHED\");\n }\n return returnableStatuses;\n}\n\nexport default ReturnsContainer;\n\nexport { getReturnableStatuses };\n","import React from \"react\";\nimport { Popup } from \"../../../../components/Popup\";\n\nconst PDFViewer = ({ src, show, hideInvoice }) => {\n return (\n <Popup className=\"editPopup invoice-popup\" show={show} close={hideInvoice}>\n <iframe\n name=\"printer_frame\"\n id=\"printer_frame\"\n src={src}\n title=\"PdfViewer\"\n type=\"application/pdf\"\n width=\"100%\"\n height=\"700px\"\n />\n </Popup>\n );\n};\n\nexport default PDFViewer;\n","import React, { Component } from \"react\";\nimport AuthenticatedPage from \"../../../../containers/AuthenticatedPage\";\nimport PlacementDetails from \"./PlacementDetails\";\nimport DeliveryDetails from \"./DeliveryDetails\";\nimport OrderItemsView from \"./OrderItemsView\";\nimport OrderInvoice from \"./OrderInvoice\";\nimport { Link } from \"react-router-dom\";\nimport PaymentDetails from \"./PaymentDetails\";\nimport RefundDetails from \"./RefundDetails\";\nimport PackingDetails from \"./PackingDetails\";\nimport MetaDataDetails from \"./MetaDataDetails\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../../components/DropDown\";\nimport Loader from \"../../../../components/Loader\";\nimport { Dialog, Popup } from \"../../../../components/Popup\";\nimport { getReturnableStatuses } from \"../../Returns\";\nimport { tripStatus } from \"../../Orders/Table/Views/tabularView\";\nimport { utcToLocalTime, getStandradDateTime } from \"../../../../lib/datetime\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { registerInvoiceSockets } from \"../../../../registerSocket\";\nimport {\n getSession,\n isExtensionEnabled,\n getExtensionDetails,\n hasPermissions,\n} from \"../../../../lib/auth\";\nimport API from \"../../../../lib/api\";\nimport \"./style.css\";\nimport checkHttpResponseCode from \"../../../../utils/isApiCallSuccessfull\";\nimport { getOrderPermissions } from \"../Table\";\nimport PDFViewer from \"./PdfViewer\";\nimport { isMarketPlaceOwner } from \"../../../../lib/marketPlace\";\nimport { GO_HOST } from \"../../../../config/app\";\nimport { Input } from \"../../../../components/Form\";\n\nconst showConfig = () => {\n if (GO_HOST.includes(\"tamimimarkets.com\")) return true;\n return false;\n};\n\nconst deliveryDetailsEditableStatus = [\n \"PENDING\",\n \"RETURNED\",\n \"PACKING\",\n \"PACKED\",\n \"PICKING\",\n \"PARTIALLY-PICKED\",\n \"PICKED\",\n \"CHECKING\",\n \"CHECKED\",\n \"DISPATCHED\",\n];\nconst invoiceDetailsStatus = [\"RETURNED\", \"COMPLETED\", \"CANCELLED\"];\n\nfunction getMobileView() {\n return window.screen.width <= 480;\n}\n\nconst getParams = () => {\n const params = {\n \"includes[1]\": \"replaceItems\",\n };\n\n if (isExtensionEnabled(\"ShipRocket\")) {\n params[\"includes[2]\"] = \"courierDetails\";\n }\n\n return params;\n};\n\nexport default class OrderDetails extends Component {\n constructor(props) {\n super(props);\n this.state = {\n data: null,\n loading: false,\n failed: false,\n orderCancellationDialog: false,\n orderCompletionDialog: false,\n invoiceShown: false,\n moveToPendingDialog: false,\n isOrderViewItemCollapsed: true,\n isMetaDataCollapsed: true,\n isPaymentDetailsCollapsed: true,\n isRefundDetailsCollapsed: true,\n invoiceUrl: null,\n isMobileView: getMobileView(),\n orderActions: getOrderPermissions(),\n courierParams: getParams(),\n itemAdditionStatus: \"PENDING\",\n itemRemovalStatus: \"PENDING\",\n refundDetailsPopup: false,\n refundValue: 0,\n errorMessage: \"\",\n errorDialog: false,\n };\n this.organization = getSession().organization;\n this.currency = this.organization.currency;\n\n this.getData = this.getData.bind(this);\n this.handleItemEdit = this.handleItemEdit.bind(this);\n this.handleAddressChange = this.handleAddressChange.bind(this);\n this.handleMetaDataEdit = this.handleMetaDataEdit.bind(this);\n this.toggleCompletionDialog = this.toggleCompletionDialog.bind(this);\n this.toggleCancellationDialog = this.toggleCancellationDialog.bind(this);\n this.cancelOrder = this.cancelOrder.bind(this);\n this.metaDataExists = this.metaDataExists.bind(this);\n this.completeOrder = this.completeOrder.bind(this);\n this.showInvoice = this.showInvoice.bind(this);\n this.hideInvoice = this.hideInvoice.bind(this);\n this.printInvoice = this.printInvoice.bind(this);\n this.isMetaDataKeySet = this.isMetaDataKeySet.bind(this);\n this.toggleMoveToPendingDialog = this.toggleMoveToPendingDialog.bind(this);\n this.moveToPending = this.moveToPending.bind(this);\n this.mobileView = this.mobileView.bind(this);\n }\n mobileView() {\n this.setState({ isMobileView: getMobileView() });\n }\n\n async moveToPending() {\n this.modifyOrder(\n {\n status: \"PENDING\",\n },\n { \"X-API-VERSION\": 2 },\n \"PENDING\"\n ).then(() => {\n this.setState({ moveToPendingDialog: false });\n });\n }\n\n toggleMoveToPendingDialog() {\n this.setState((prevState) => {\n return {\n moveToPendingDialog: !prevState.moveToPendingDialog,\n };\n });\n }\n\n toggleErrorDialog = () => {\n this.setState((prevState) => {\n return {\n errorDialog: !prevState.errorDialog,\n };\n });\n };\n\n showRefundPopup = () => {\n this.setState({\n refundDetailsPopup: true,\n });\n };\n\n hideRefundPopup = () => {\n this.setState({\n refundDetailsPopup: false,\n refundValue: \"\",\n errorMessage: \"\",\n });\n };\n\n refundAmountCall = () => {\n const { refundValue } = this.state;\n let referenceNumber = this.props?.router?.match?.params?.id;\n const refundAmountApi = new API({\n url: `/order-service/order/${referenceNumber}/refund`,\n });\n const requestBody = { method: \"CASH\", amount: refundValue };\n const headers = { \"x-api-version\": \"2\" };\n\n refundAmountApi\n .post(requestBody, headers)\n .then((response) => {\n this.hideRefundPopup();\n window.location.reload();\n })\n .catch((error) => {\n this.setState({ errorMessage: error.message });\n });\n };\n\n filterCancelledItems = (order) => {\n if (order.items) {\n order.items = order.items?.filter(\n (item) => (item.orderDetails?.status !== \"CANCELLED\" || item.orderDetails?.replaceItems !== null)\n );\n }\n return order;\n };\n\n getData() {\n const { courierParams } = this.state;\n let referenceNumber = this.props.router.match.params.id;\n this.orderDetailsApi = new API({\n url: `/order-service/order/${referenceNumber}`,\n });\n this.setState(\n {\n loading: true,\n failed: false,\n },\n () => {\n this.orderDetailsApi\n .get({\n \"include[0]\": \"cancelledItems\",\n \"includes[0]\": \"reReturns\",\n ...courierParams,\n })\n .then(\n (response) => {\n const order = response.data.order;\n if (order.createdAt) {\n order.createdAt = getStandradDateTime(\n utcToLocalTime,\n order.createdAt\n );\n }\n if (order.completedAt) {\n order.completedAt = getStandradDateTime(\n utcToLocalTime,\n order.completedAt\n );\n }\n if (order.updatedAt) {\n order.updatedAt = getStandradDateTime(\n utcToLocalTime,\n order.updatedAt\n );\n }\n this.setState({\n failed: false,\n data: order,\n });\n },\n (error) => {\n this.setState({ failed: true });\n if (error.code === 401) {\n throw error;\n }\n }\n )\n .then(() => {\n this.setState({ loading: false });\n })\n .catch((error) => {\n console.log(error);\n });\n }\n );\n }\n modifyOrder(params, headers = {}, newOrderStatus) {\n let referenceNumber = this.props.router.match.params.id;\n let api = new API({ url: `/order-service/order/${referenceNumber}` });\n return api\n .put(params, headers)\n .then((response) => {\n if (response && response.data && response.data.order) {\n const updatedOrder = this.filterCancelledItems(response.data.order);\n this.setState({ data: updatedOrder, error: false });\n } else {\n if (newOrderStatus && response.status === \"SUCCESS\") {\n let newData = JSON.parse(JSON.stringify(this.state.data));\n newData.status = newOrderStatus;\n this.setState({\n data: newData,\n });\n }\n }\n })\n .catch((error) => {\n this.setState({\n errorMessage: error.message,\n errorDialog: true,\n });\n console.error(error);\n });\n }\n handleItemEdit(items) {\n return this.modifyOrder({\n orderItems: items\n .filter(\n (item) =>\n item.orderDetails.orderItemId ||\n item.orderDetails.orderedQuantity > 0\n )\n .map((item) => ({\n [item.orderDetails.orderItemId ? \"orderItemId\" : \"itemId\"]: item\n .orderDetails.orderItemId\n ? item.orderDetails.orderItemId\n : item.id,\n quantity: !item.orderDetails.orderItemId\n ? Number(item.orderDetails.orderedQuantity) /\n item.orderDetails.factorForPutRequest\n : Number(item.orderDetails.orderedQuantity),\n })),\n });\n }\n handleAddressChange(params, headers = {}) {\n return this.modifyOrder(params, headers);\n }\n\n handleMetaDataEdit(metadata) {\n return this.modifyOrder({ metaData: metadata });\n }\n\n toggleCompletionDialog() {\n this.setState((prevState) => {\n return {\n orderCompletionDialog: !prevState.orderCompletionDialog,\n };\n });\n }\n handleInvoice = (url) => {\n this.setState({ invoiceUrl: url, invoiceShown: true });\n };\n toggleCancellationDialog() {\n this.setState((prevState) => {\n return {\n orderCancellationDialog: !prevState.orderCancellationDialog,\n };\n });\n }\n completeOrder(url) {\n let productReturned = false;\n const referenceNumber = this.props.router.match.params.id;\n const redirectUrl = `/customer-support/orders/file-for-return/${referenceNumber}`;\n let { history } = this.props;\n if (this.state.data) {\n const { returnsByRE = [] } = this.state.data;\n productReturned = returnsByRE.length > 0;\n }\n if (productReturned) {\n history.push(redirectUrl);\n } else {\n this.modifyOrder({\n status: \"COMPLETED\",\n }).then(() => {\n this.setState({ orderCompletionDialog: false });\n });\n }\n }\n\n getInvoice = () => {\n let referenceNumber = this.props.router.match.params.id;\n let api = new API({\n url: `/order-service/invoice/${referenceNumber}?latestPdf=true`,\n });\n return api\n .get()\n .then(\n (response) => {\n this.setState({ invoiceUrl: response.data.invoice.pdfLink });\n this.setState({ invoiceShown: true });\n },\n (error) => {\n this.setState({\n error: error.message,\n });\n throw error;\n }\n )\n .catch((error) => {\n console.error(error);\n });\n };\n updateInvoice = (msg) => {\n if (!this) {\n return;\n }\n let data = msg?.data;\n if (typeof data === \"string\") {\n try {\n data = JSON.parse(data);\n this.setState({ invoiceSocketData: data });\n } catch (e) {\n console.error(\"Error parsing JSON:\", e);\n }\n }\n };\n\n registerInvoices = () => {\n const referenceNumber = this.props.router.match.params.id;\n if (referenceNumber) {\n let socket = registerInvoiceSockets(referenceNumber);\n this.socket = socket;\n if (socket) {\n socket.onmessage = (msg) => {\n this.updateInvoice(msg);\n };\n }\n }\n };\n\n getInvoices = () => {\n let referenceNumber = this.props?.router?.match?.params?.id;\n if (this.state?.invoiceSocketData) {\n this.setState({ invoiceSocketData: null });\n }\n if (referenceNumber) {\n let api = new API({\n url: `/order-service/invoice?referenceNumber=${referenceNumber}`,\n });\n return api\n .get()\n .then(\n (response) => {\n const invoices = this.getUniqueInvoices(response?.data?.invoices);\n this.setState({ invoices: invoices }, () => {\n if (invoices?.length === 1) {\n this.handleInvoice(invoices?.[0].url);\n }\n });\n },\n (error) => {\n this.setState({\n error: error.message,\n });\n throw error;\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n };\n\n cancelOrder() {\n this.modifyOrder({\n status: \"CANCELLED\",\n }).then(() => {\n this.setState({ orderCancellationDialog: false });\n });\n }\n showInvoice() {\n if (showConfig()) {\n this.getInvoice();\n } else {\n this.setState({ invoiceShown: true });\n }\n }\n hideInvoice() {\n this.setState({ invoiceShown: false });\n }\n printInvoice() {\n this.setState(\n (prevState) => {\n return {\n invoiceShown: true,\n };\n },\n () => {\n window.print();\n this.hideInvoice();\n }\n );\n }\n metaDataExists() {\n const metaData = this.state.data.metaData;\n if (!metaData) {\n return false;\n } // for null case\n return Array.isArray(metaData)\n ? !metaData\n : !Object.values(metaData).every((val) => !val); // for empty array and object case\n }\n isMetaDataKeySet() {\n if (isExtensionEnabled(\"EntityMetaData\")) {\n let metaDataExtnId = getExtensionDetails(\"EntityMetaData\").id;\n const api = new API({\n url: `/account-service/extension/${metaDataExtnId}`,\n });\n api\n .get()\n .then((response) => {\n let config = response.data.extension.config.globalConfig.order;\n this.setState({\n orderMeta: config,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n if (isExtensionEnabled(\"EntityMetaData\")) {\n this.addressSequenceApi = new API({\n url: \"/config-service/config/customers\",\n });\n this.addressSequenceApi\n .get()\n .then((response) => {\n this.setState({\n addressSequence: response.data.customers.addressSequence,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n getCommunicationConfig() {\n let communicationApi = new API({ url: `/account-service/config` });\n communicationApi\n .get()\n .then((response) => {\n this.setState({\n communicationConfig: response.data.config.communication,\n orderConfig: response.data.config.order,\n });\n })\n .catch((error) => {\n console.error(error);\n throw error;\n });\n }\n\n getOrderConfig = () => {\n const orderConfigApi = new API({ url: \"/config-service/config/order\" });\n orderConfigApi\n .get()\n .then((response) => {\n this.setState({ orderConfiguration: response.data?.order || {} });\n })\n .catch((error) => console.error(error));\n };\n async componentDidMount() {\n this.getOrderConfig();\n this.registerInvoices();\n\n if (isExtensionEnabled(\"InStoreProcessing\")) {\n this.packedOrderEditApi = new API({\n url: `/config-service/config/inStoreProcessing`,\n });\n await this.packedOrderEditApi\n .get()\n .then((res) => {\n if (checkHttpResponseCode(res.code) && res.status === \"SUCCESS\") {\n const inStoreProcessing = res?.data?.inStoreProcessing;\n this.setState({\n packedOrderEdit: inStoreProcessing?.packedOrderEditAllowed,\n itemAdditionStatus: inStoreProcessing?.itemAdditionStatus,\n itemRemovalStatus: inStoreProcessing?.itemRemovalStatus,\n });\n }\n })\n .catch((err) => {\n console.error(err);\n if (err.code === 401 || err.code === 403) {\n throw err;\n }\n });\n }\n this.getData();\n this.isMetaDataKeySet();\n this.getCommunicationConfig();\n window.addEventListener(\"resize\", this.mobileView, false);\n }\n\n getUniqueInvoices = (invoices) => {\n const invoiceMap = new Map();\n\n invoices.forEach((invoice) => {\n const invoiceNumber = invoice?.metaData?.invoiceNumber;\n const invoiceCounter = invoice?.metaData?.invoiceCounter;\n\n if (\n !invoiceMap.has(invoiceNumber) ||\n (invoiceCounter &&\n !invoiceMap.get(invoiceNumber).metaData.invoiceCounter)\n ) {\n invoiceMap.set(invoiceNumber, invoice);\n }\n });\n const response = Array.from(invoiceMap.values());\n return response;\n };\n\n componentWillUnmount() {\n this.orderDetailsApi && this.orderDetailsApi.cancel();\n this.addressSequenceApi && this.addressSequenceApi.cancel();\n window.removeEventListener(\"resize\", this.mobileView, false);\n if (this.socket) {\n this.socket.close();\n }\n }\n render() {\n let {\n isMobileView,\n isOrderViewItemCollapsed,\n isMetaDataCollapsed,\n isPaymentDetailsCollapsed,\n isRefundDetailsCollapsed,\n data,\n invoiceUrl,\n invoices,\n invoiceSocketData,\n itemAdditionStatus,\n itemRemovalStatus,\n errorMessage,\n } = this.state;\n const refundAmount = this.state.data?.refundAmount ?? \"0.00\";\n const orderType = data?.type?.name;\n const hasAccessToAction = this.state.orderActions;\n const hasOrderEditPermission = hasPermissions(\"order\", \"order\", \"put\");\n const url = this.props.url;\n let referenceNumber = this.props.router.match.params.id;\n let view = null;\n let contentLoaded =\n !this.state.loading && !this.state.failed && this.state.data;\n const registerPaymentsLink =\n contentLoaded &&\n `orders/register-payment/${referenceNumber}?pendingAmount=${this.state.data.pendingAmount}&clientId=${this.state.data.clientId}&type=${orderType}`;\n let canBeCompleted = contentLoaded\n ? isExtensionEnabled(\"InStoreProcessing\")\n ? isExtensionEnabled(\"LogisticsSupport\")\n ? this.state.data.status === \"DISPATCHED\"\n : this.state.data.status === \"PACKED\"\n : isExtensionEnabled(\"LogisticsSupport\")\n ? this.state.data.status === \"DISPATCHED\"\n : isExtensionEnabled(\"ShipRocket\")\n ? data.status === \"DISPATCHED\" &&\n data?.courierDetails?.vendor === \"OTHER\"\n : !(\n !isExtensionEnabled(\"InStoreProcessing\") &&\n isExtensionEnabled(\"ShipRocket\")\n ) && data.status === \"PACKED\"\n : false; // Good candidate for using FSM?\n canBeCompleted = canBeCompleted && hasOrderEditPermission;\n if (\n contentLoaded &&\n this.state.data.status === \"PACKED\" &&\n this.state.data.type &&\n this.state.data.type.name === \"PICKUP\"\n ) {\n canBeCompleted = true && hasOrderEditPermission;\n }\n let registerPayments =\n contentLoaded &&\n (!isExtensionEnabled(\"LogisticsSupport\") ||\n (this.state.data.type && this.state.data.type.name === \"PICKUP\")) &&\n this.state.data.paymentStatus === \"PENDING\";\n const canBeCancelled =\n contentLoaded &&\n this.state.data.status === \"PENDING\" &&\n this.state.data.status === \"RETURNED\" &&\n hasOrderEditPermission;\n const canShowTripDetails =\n contentLoaded &&\n isExtensionEnabled(\"LogisticsSupport\") &&\n tripStatus.indexOf(this.state.data.status) > -1;\n const canbeReturned =\n contentLoaded &&\n isExtensionEnabled(\"OrderReturns\") &&\n getReturnableStatuses().indexOf(this.state.data.status) > -1 &&\n hasPermissions(\"order\", \"order\", \"post\");\n const canBeDisputed =\n contentLoaded &&\n isExtensionEnabled(\"OrderDisputes\") &&\n this.state.data.status === \"COMPLETED\";\n const canBePending = contentLoaded && this.state.data.status === \"PICKING\";\n const showDropdown =\n refundAmount > 0||\n canBeCompleted ||\n canBeCancelled ||\n canbeReturned ||\n canShowTripDetails ||\n canBeDisputed ||\n canBePending;\n\n const isStatusPacked =\n (this.state.data && this.state.data.status === \"PACKED\") || false;\n const packedOrderEdit = this.state.packedOrderEdit || false;\n const fromOperations = this.props.url === \"/operations\";\n const hasAccessToInvoice =\n this.state?.orderConfiguration?.invoiceSupportEnabled;\n\n const isStatusComplete =\n this.state.data && invoiceDetailsStatus.includes(this.state.data.status);\n\n // returnsByRE is an array of returned product\n let productReturned = false;\n if (data) {\n const { returnsByRE = [] } = data;\n productReturned = returnsByRE.length > 0;\n }\n const hideOptionForSeller =\n !isExtensionEnabled(\"MarketPlace\") || isMarketPlaceOwner();\n\n return (\n <AuthenticatedPage\n storeDependent\n className=\"order-details\"\n menu={this.props.menu}\n >\n <Dialog\n show={this.state.orderCancellationDialog}\n title={getMessage(\"order.details.cancellation.title\")}\n information={getMessage(\"order.details.cancellation.message\")}\n onOk={this.cancelOrder}\n close={this.toggleCancellationDialog}\n okText={getMessage(\"order.details.cancellation.confirmText\")}\n closeText={getMessage(\"order.details.cancellation.cancelText\")}\n />\n <Dialog\n show={this.state.errorDialog}\n title={getMessage(\"error.title\")}\n information={errorMessage}\n close={this.toggleErrorDialog}\n closeText={getMessage(\"customer.save.success.closeText\")}\n />\n <Dialog\n show={this.state.orderCompletionDialog}\n title={getMessage(\"order.details.completion.title\")}\n information={\n productReturned\n ? getMessage(\"order.details.completion.item.return.message\")\n : getMessage(\"order.details.completion.message\")\n }\n onOk={this.completeOrder}\n close={this.toggleCompletionDialog}\n okText={\n productReturned\n ? getMessage(\"order.details.completion.confirmReturnItem\")\n : getMessage(\"order.details.completion.confirmText\")\n }\n closeText={getMessage(\"order.details.completion.cancelText\")}\n />\n <Dialog\n show={this.state.moveToPendingDialog}\n title={getMessage(\"order.details.cancellation.title\")}\n information={getMessage(\"order.details.pending.message\")}\n onOk={this.moveToPending}\n close={this.toggleMoveToPendingDialog}\n okText={getMessage(\"order.details.cancellation.confirmText\")}\n closeText={getMessage(\"order.details.cancellation.cancelText\")}\n />\n <Popup\n heading={getMessage(\"return.popup.details.heading\")}\n show={this.state.refundDetailsPopup}\n close={this.hideRefundPopup}\n className=\"refundDetails\"\n >\n <div className=\"input-refund\">\n <Input\n label={getMessage(\"return.refund.option.refundAmount\")}\n placeholder={getMessage(\"return.refund.placeholder.refundAmount\")}\n value={this.state.refundValue}\n type=\"number\"\n min={0}\n onChange={(value) => this.setState({ refundValue: value })}\n required\n />\n </div>\n {this.state.errorMessage && (\n <div\n className=\"error-message\"\n >\n {this.state.errorMessage}\n </div>\n )}\n <div className=\"refund-button\">\n <button\n className=\"primary button refund-buttons\"\n onClick={() => this.refundAmountCall()}\n disabled={!this.state.refundValue}\n >\n {getMessage(\"return.refund.button.save\")}\n </button>\n </div>\n </Popup>\n <div className=\"flex-around\">\n <h1 className=\"title heading\">\n {getMessage(\"order.details.heading\")}\n {this.state.data &&\n (this.state.data.clientId\n ? getMessage(\"order.table.clientId.prefix\")\n : getMessage(\"order.table.referenceNumber.prefix\"))}\n <strong className=\"reference-number\">\n {this.state.data && (this.state.data.clientId || referenceNumber)}\n </strong>\n </h1>\n {contentLoaded ? (\n <div className=\"order-actions\">\n <div className=\"order-actions-mobile-view\">\n <DropDown\n className=\"order-actions-dropdown\"\n icon={<img src={ICONS.VELLIP} alt=\"â‹®\" />}\n >\n {hasAccessToInvoice && (\n <>\n {!showConfig() && (\n <DropDownItem>\n <button\n className=\"invoice-button print-icon\"\n onClick={this.printInvoice}\n >\n {getMessage(\n \"order.details.invoice.printButtonText\"\n )}\n </button>\n </DropDownItem>\n )}\n\n <DropDownItem>\n <button\n className=\"invoice-button\"\n onClick={this.showInvoice}\n >\n {getMessage(\"order.details.invoice.buttonText\")}\n </button>\n </DropDownItem>\n </>\n )}\n <DropDownItem>\n <button className=\"invoice-button\">\n <Link to={`${url}/orders/order-log/${referenceNumber}`}>\n {getMessage(\"order.actions.logs\")}\n </Link>\n </button>\n </DropDownItem>\n </DropDown>\n </div>\n <div className=\"order-actions-web-view\">\n {hasAccessToInvoice && (\n <>\n {!showConfig() ? (\n <>\n <button\n className=\"invoice-button print-icon\"\n onClick={this.printInvoice}\n >\n {getMessage(\"order.details.invoice.printButtonText\")}\n </button>\n <button\n className=\"invoice-button\"\n onClick={this.showInvoice}\n >\n {getMessage(\"order.details.invoice.buttonText\")}\n </button>\n </>\n ) : (\n <>\n {invoiceSocketData?.referenceNumber && (\n <span className=\"invoice-indicator\">\n {getMessage(\"order.details.invoice.indicator\")}\n </span>\n )}\n {invoices?.length > 1 && (\n <span className=\"dropdown-icon\">â–¼</span>\n )}\n {isStatusComplete && (\n <>\n <DropDown\n className={\n invoices?.length > 1\n ? \"order-action-invoice-dropdown invoice-button invoice-button-dropdown\"\n : \"order-invoice-dropdown invoice-button invoice-button-dropdown\"\n }\n icon={\"Invoice\"}\n onClick={this.getInvoices}\n >\n {invoices &&\n invoices?.length > 1 &&\n invoices?.map((data, index) => {\n const { metaData, url } = data;\n const { invoiceNumber = \"\" } = metaData || {};\n\n if (invoiceNumber.includes(\"R\")) {\n const tag = invoiceNumber?.indexOf(\"R\");\n return (\n <DropDownItem\n key={index}\n onClick={(e) => {\n e.stopPropagation();\n this.handleInvoice(url);\n }}\n >\n {getMessage(\n \"order.details.return.optionText\"\n )}{\" \"}\n {invoices?.length > 2 &&\n invoiceNumber?.substring(tag + 1)}\n </DropDownItem>\n );\n }\n return (\n <DropDownItem\n key={index}\n onClick={(e) => {\n e.stopPropagation();\n this.handleInvoice(url);\n }}\n >\n {getMessage(\n \"order.details.original.optionText\"\n )}\n </DropDownItem>\n );\n })}\n </DropDown>\n </>\n )}\n </>\n )}\n </>\n )}\n <button className=\"invoice-button\">\n <Link to={`${url}/orders/order-log/${referenceNumber}`}>\n {getMessage(\"order.actions.logs\")}\n </Link>\n </button>\n </div>\n {showDropdown && (\n <DropDown\n className=\"order-actions-dropdown\"\n icon={<img src={ICONS.VELLIP} alt=\"â‹®\" />}\n >\n {canBeCompleted &&\n hasAccessToAction?.includes(\"COMPLETE_ORDER\") &&\n (!registerPayments ? (\n <DropDownItem onClick={this.toggleCompletionDialog}>\n {getMessage(\"order.details.complete.optionText\")}\n </DropDownItem>\n ) : (\n <DropDownItem>\n <Link\n to={\n url\n ? `${url}/${registerPaymentsLink}`\n : `/operations/${registerPaymentsLink}`\n }\n >\n {getMessage(\"order.details.complete.optionText\")}\n </Link>\n </DropDownItem>\n ))}\n {hideOptionForSeller &&\n canbeReturned &&\n hasAccessToAction?.includes(\"RETURN_ORDER\") && (\n <DropDownItem>\n <Link\n to={`${url}/orders/file-for-return/${referenceNumber}`}\n >\n {getMessage(\"order.details.returm.optionText\")}\n </Link>\n </DropDownItem>\n )}\n {refundAmount > 0 && (\n <DropDownItem className=\"dropdownItem-refund\">\n <button\n className=\"refundAmount-btn\"\n onClick={() => this.showRefundPopup()}\n >\n {getMessage(\"return.refund.option.refundAmount\")}\n </button>\n </DropDownItem>\n )}\n {canBeDisputed && (\n <DropDownItem>\n <Link\n to={`${url}/orders/dispute/${this.state.data.referenceNumber}`}\n >\n {getMessage(\"order.details.dispute.optionText\")}\n </Link>\n </DropDownItem>\n )}\n {hideOptionForSeller &&\n canBeCancelled &&\n hasAccessToAction?.includes(\"CANCEL_ORDER\") && (\n <DropDownItem onClick={this.toggleCancellationDialog}>\n {getMessage(\"order.details.cancel.optionText\")}\n </DropDownItem>\n )}\n {hideOptionForSeller && canShowTripDetails && (\n <DropDownItem>\n <Link\n to={`/logistics/trips?orderNumber=${referenceNumber}`}\n >\n {getMessage(\"order.actions.trips\")}\n </Link>\n </DropDownItem>\n )}\n {canBePending && (\n <DropDownItem onClick={this.toggleMoveToPendingDialog}>\n {getMessage(\"order.action.moveToPending\")}\n </DropDownItem>\n )}\n {hideOptionForSeller &&\n isStatusPacked &&\n packedOrderEdit &&\n fromOperations &&\n hasAccessToAction?.includes(\"EDIT_ORDER\") && (\n <DropDownItem>\n <Link to={`edit-packed/${referenceNumber}`}>\n {getMessage(\"order.action.editPackedOrder\")}\n </Link>\n </DropDownItem>\n )}\n </DropDown>\n )}\n </div>\n ) : null}\n </div>\n {view}\n {this.state.loading ? <Loader /> : null}\n {this.state.failed ? (\n <div className=\"retry-message text-muted\" onClick={this.getData}>\n {getMessage(\"order.details.errors.onLoad\")}\n </div>\n ) : null}\n {contentLoaded ? (\n <div>\n {invoiceUrl && this.state.invoiceShown ? (\n <PDFViewer\n src={invoiceUrl}\n show={this.state.invoiceShown}\n hideInvoice={() => this.setState({ invoiceShown: false })}\n handlePrint={this.handlePrint}\n />\n ) : (\n <OrderInvoice\n referenceNumber={referenceNumber}\n show={this.state.invoiceShown}\n close={() => this.setState({ invoiceShown: false })}\n data={this.state.data}\n addressSequence={this.state.addressSequence}\n />\n )}\n <div className=\"order-summary-wrapper\">\n <div className=\"user-details\">\n <PlacementDetails\n data={{\n preorder: this.state.data.preorder,\n status: this.state.data.status,\n creationTime: this.state.data.createdAt,\n completionTime: this.state.data.completedAt,\n device: this.state.data.placedFrom,\n }}\n />\n <DeliveryDetails\n data={{\n customer: this.state.data.customer,\n address: this.state.data.address,\n billingAddress: this.state.data.billingAddress,\n pickupLocation: this.state.data.pickupLocation,\n status: this.state.data.status,\n preferredSlot: {\n startTime: this.state.data.slotStartTime,\n endTime: this.state.data.slotEndTime,\n type: this.state.data.slotType,\n },\n preferredDate: this.state.data.preferredDate,\n storeId: this.state.data.store && this.state.data.store.id,\n slotType: this.state.data.slotType,\n url: url,\n metaData: this.state.data.metaData,\n addressSequence: this.state.addressSequence,\n type: this.state.data.type && this.state.data.type.name,\n }}\n editable={\n deliveryDetailsEditableStatus.indexOf(\n this.state.data.status\n ) > -1 &&\n hasOrderEditPermission &&\n hasAccessToAction?.includes(\"EDIT_ORDER\")\n }\n onChange={this.handleAddressChange}\n error={this.state.error}\n communicationConfig={this.state.communicationConfig}\n orderConfig={this.state.orderConfig}\n org={this.organization}\n referenceNumber={this.props.router.match.params.id}\n />\n </div>\n {isMobileView ? (\n <div\n className={`collapse-container-order ${isOrderViewItemCollapsed}`}\n >\n <button\n type=\"button\"\n onClick={() =>\n this.setState({\n isOrderViewItemCollapsed:\n !this.state.isOrderViewItemCollapsed,\n })\n }\n className=\"component-collapse\"\n >\n {isOrderViewItemCollapsed ? \"+\" : \"-\"}\n </button>\n {isOrderViewItemCollapsed && (\n <h3>\n {getMessage(\"order.details.itemsTable.title\")}\n <span className=\"text-muted\">\n ({(this.state.data.items || []).length})\n </span>\n </h3>\n )}\n </div>\n ) : (\n \"\"\n )}\n {(!isMobileView ||\n (isMobileView && !isOrderViewItemCollapsed)) && (\n <OrderItemsView\n data={{\n items: this.state.data.items || [],\n payment: this.state.data.payment || [],\n shipping: this.state.data.shipping,\n clickAndCollectCharges:\n this.state.data.clickAndCollectCharges,\n type: this.state.data.type.name,\n amount: this.state.data.amount,\n discount: this.state.data.discount,\n couponDiscount: this.state.data.couponDiscount,\n refundAmount: this.state.data.refundAmount,\n pendingAmount: this.state.data.pendingAmount,\n invoiceAmount: this.state.data.invoiceAmount,\n surcharge: this.state.data.surcharge,\n orderDiscount: this.state.data.orderDiscount,\n }}\n editable={\n [\"PENDING\", \"PICKING\"].includes(this.state.data.status) &&\n hasOrderEditPermission &&\n hasAccessToAction?.includes(\"EDIT_ORDER\")\n }\n currency={this.currency}\n onChange={this.handleItemEdit}\n status={this.state.data.status}\n storeId={this.state.data.store && this.state.data.store.id}\n editableList={{\n isItemAddition: itemAdditionStatus,\n isItemRemoval: itemRemovalStatus,\n }}\n />\n )}\n {isMobileView ? (\n <div\n className={`collapse-container-metadata ${isMetaDataCollapsed}`}\n >\n <button\n type=\"button\"\n onClick={() =>\n this.setState({\n isMetaDataCollapsed: !this.state.isMetaDataCollapsed,\n })\n }\n className=\"component-collapse\"\n >\n {isMetaDataCollapsed ? \"+\" : \"-\"}\n </button>\n {isMetaDataCollapsed && (\n <h3>{getMessage(\"Custom Fields Details\")}</h3>\n )}\n </div>\n ) : (\n \"\"\n )}\n {(!isMobileView || (isMobileView && !isMetaDataCollapsed)) &&\n isExtensionEnabled(\"EntityMetaData\") &&\n (this.state.data.status === \"COMPLETED\" ||\n this.state.data.status === \"CANCELLED\"\n ? this.metaDataExists()\n : true) &&\n !Array.isArray(this.state.orderMeta) && (\n <MetaDataDetails\n data={this.state.data.metaData}\n editable={\n this.state.data.status !== \"COMPLETED\" &&\n this.state.data.status !== \"CANCELLED\" &&\n hasOrderEditPermission &&\n hasAccessToAction?.includes(\"EDIT_CUSTOM_FIELDS\")\n }\n onChange={this.handleMetaDataEdit}\n />\n )}\n {isMobileView ? (\n <div\n className={`collapse-container-payment ${isPaymentDetailsCollapsed}`}\n >\n <button\n type=\"button\"\n onClick={() =>\n this.setState({\n isPaymentDetailsCollapsed:\n !this.state.isPaymentDetailsCollapsed,\n })\n }\n className=\"component-collapse\"\n >\n {isPaymentDetailsCollapsed ? \"+\" : \"-\"}\n </button>\n {isPaymentDetailsCollapsed && (\n <h3>{getMessage(\"order.details.payment.heading\")}</h3>\n )}\n </div>\n ) : (\n \"\"\n )}\n {(!isMobileView ||\n (isMobileView && !isPaymentDetailsCollapsed)) &&\n this.state.data.payment &&\n this.state.data.payment.length > 0 && (\n <PaymentDetails\n payment={this.state.data.payment}\n currency={this.currency}\n />\n )}\n {isMobileView ? (\n <div\n className={`collapse-container-refund ${isRefundDetailsCollapsed}`}\n >\n <button\n type=\"button\"\n onClick={() =>\n this.setState({\n isRefundDetailsCollapsed:\n !this.state.isRefundDetailsCollapsed,\n })\n }\n className=\"component-collapse\"\n >\n {isRefundDetailsCollapsed ? \"+\" : \"-\"}\n </button>\n {isRefundDetailsCollapsed && (\n <h3>{getMessage(\"Refund Details\")}</h3>\n )}\n </div>\n ) : (\n \"\"\n )}\n {(!isMobileView || (isMobileView && !isRefundDetailsCollapsed)) &&\n this.state.data.refund &&\n this.state.data.refund.length > 0 && (\n <RefundDetails\n refund={this.state.data.refund}\n currency={this.currency}\n />\n )}\n {this.state.data.packingDetails &&\n this.state.data.packingDetails.length > 0 && (\n <PackingDetails\n packingDetails={this.state.data.packingDetails[0]?.details}\n packageMetaData={\n this.state.data.packingDetails[0]?.metaData\n }\n editable={\n hasOrderEditPermission &&\n hasAccessToAction?.includes(\"EDIT_ORDER\")\n }\n referenceNumber={referenceNumber}\n history={this.props.history}\n status={this.state.data.status}\n courierStatus={this.state.data?.courierDetails?.status}\n />\n )}\n </div>\n </div>\n ) : null}\n </AuthenticatedPage>\n );\n }\n}\n","import { getDefaultStore } from \"./containers/StoreSelector\";\nimport { getAuthToken } from \"./lib/auth\";\nimport { get } from \"./lib/storage\";\nimport { WEBSOCKET_URL, WEBSOCKET_BASE_URL } from \"./config/app\";\n\nfunction registerSocket() {\n const authToken = getAuthToken();\n const storeId = get(\"store\") || getDefaultStore().storeId;\n let socket = new WebSocket(\n `${WEBSOCKET_URL}?storeId=${storeId}&guid=${authToken}`\n );\n return socket;\n}\n\nfunction registerInvoiceSockets(referenceNumber) {\n const authToken = getAuthToken();\n let socket = new WebSocket(\n `${WEBSOCKET_BASE_URL}?referenceNumber=${referenceNumber}&guid=${authToken}`\n );\n return socket;\n}\n\nexport { registerSocket, registerInvoiceSockets };\n","import React, { Component } from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport Table from \"./../../operations/Orders/Table\";\nimport Details from \"../../operations/Orders/Details\";\n\nclass OrdersRouter extends Component {\n render() {\n let { router, ...props } = this.props;\n let details = { ...props };\n details.url = \"/customer-support\";\n details.className = \"cx-listing\";\n if (router.match.params.id) {\n let details = { ...this.props };\n details.url = \"/customer-support\";\n return <Details {...details} />;\n }\n return <Table {...details} />;\n }\n}\n\nexport default withRouter(({ match, ...props }) => (\n <OrdersRouter router={{ match }} {...props} />\n));\n","import React from \"react\";\nimport { getMessage } from \"../../lib/translator\";\nimport { Input } from \"../Form\";\n\nexport const OtherCourierForm = (props) => {\n const { parent } = props;\n const _this = parent;\n const courierName = \"courierName\";\n const courierCharges = \"courierCharges\";\n const courierTrackingId = \"courierTrackingId\";\n return (\n <React.Fragment>\n <div className=\"other-courier-form-wrp\">\n <Input\n key={courierName}\n name={courierName}\n label={getMessage(\"order.dispatch.label.courier.name\")}\n type=\"text\"\n placeholder={getMessage(\"order.dispatch.placeholder.courier.name\")}\n {..._this.generateStateMappers({\n stateKeys: [courierName],\n loseEmphasisOnFill: true,\n })}\n required={true}\n />\n <Input\n key={courierCharges}\n name={courierCharges}\n label={getMessage(\"order.dispatch.label.courier.charges\")}\n type=\"text\"\n placeholder={getMessage(\"order.dispatch.placeholder.courier.charges\")}\n {..._this.generateStateMappers({\n stateKeys: [courierCharges],\n loseEmphasisOnFill: true,\n })}\n />\n <Input\n key={courierTrackingId}\n name={courierTrackingId}\n label={getMessage(\"order.dispatch.label.courier.tracking.id\")}\n type=\"text\"\n placeholder={getMessage(\n \"order.dispatch.placeholder.courier.tracking.id\"\n )}\n {..._this.generateStateMappers({\n stateKeys: [courierTrackingId],\n loseEmphasisOnFill: true,\n })}\n />\n </div>\n </React.Fragment>\n );\n};\n","import React, { Component } from \"react\";\nimport { getSession } from \"../../../lib/auth\";\nimport {\n getPrintableTime,\n getStandradDateTime,\n utcToLocalTime,\n} from \"../../../lib/datetime\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { Radio } from \"../../Form\";\nimport Table, { Cell, Header, Row } from \"../../Table\";\nimport \"./style.css\";\n\nfunction checkIsMobile() {\n return window.screen.width <= 840;\n}\n\nclass VendorRow extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isMobileView: checkIsMobile(),\n };\n this.setisMobileView = this.setisMobileView.bind(this);\n }\n\n setisMobileView() {\n this.setState({ isMobileView: checkIsMobile() });\n }\n\n componentDidMount() {\n window.addEventListener(\"resize\", this.setisMobileView, false);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.setisMobileView, false);\n }\n render() {\n const { vendor, parent } = this.props;\n const { isMobileView } = this.state;\n const _this = parent;\n const organization = (getSession() || {}).organization || {};\n const { name, pickupEstimate, shippingCost, deliveryEndEstimate } = vendor;\n return (\n <Row>\n <Cell className=\"vendor-radio\">\n <Radio\n className=\"vehicle-type\"\n name=\"vendor\"\n required\n options={[\n {\n text: \"\",\n value: name,\n },\n ]}\n {..._this.generateStateMappers({\n stateKeys: [\"vendor\"],\n })}\n />\n </Cell>\n\n <Cell className=\"vendor-name\">\n <small>{name}</small>\n </Cell>\n\n <Cell className=\"vendor-charges\">\n <small>\n {isMobileView ? (\n <span className=\"text-muted label\">\n {getMessage(\"order.dispatch.label.courier.charges\") + \": \"}\n </span>\n ) : (\n \"\"\n )}\n {((organization.currency && organization.currency.symbol) || \"\") +\n shippingCost.toFixed(2)}\n </small>\n </Cell>\n\n <Cell className=\"vendor-pickup\">\n {isMobileView ? (\n <div className=\"text-muted label\">\n {getMessage(\n \"order.courier.dispatch.table.header.delivery.estimate\"\n )}\n </div>\n ) : (\n \"\"\n )}\n {pickupEstimate ? (\n <>\n <div className=\"date\">\n {getPrintableTime(\n getStandradDateTime(utcToLocalTime, pickupEstimate)\n )}\n </div>\n <small className=\"text-muted time\">\n {\n getPrintableTime(\n getStandradDateTime(utcToLocalTime, pickupEstimate)\n ).split(\",\")[1]\n }\n </small>\n </>\n ) : (\n <div className=\"date\">{getMessage(\"banners.table.na\")}</div>\n )}\n </Cell>\n <Cell className=\"vendor-delivery\">\n {isMobileView ? (\n <div className=\"text-muted label\">\n {getMessage(\n \"order.courier.dispatch.table.header.delivery.estimate\"\n )}\n </div>\n ) : (\n \"\"\n )}\n {deliveryEndEstimate ? (\n <>\n <div className=\"date\">\n {getPrintableTime(\n getStandradDateTime(utcToLocalTime, deliveryEndEstimate)\n )}\n </div>\n <small className=\"text-muted time\">\n {\n getPrintableTime(\n getStandradDateTime(utcToLocalTime, deliveryEndEstimate)\n ).split(\",\")[1]\n }\n </small>\n </>\n ) : (\n <div className=\"date\">{getMessage(\"banners.table.na\")}</div>\n )}\n </Cell>\n\n <Cell />\n </Row>\n );\n }\n}\n\nexport const VendorsTable = (props) => {\n const { vendorsList, parent } = props;\n const VendorRows = [];\n for (let key in vendorsList) {\n let vendor = vendorsList[key];\n VendorRows.push(\n <VendorRow key={vendor.courierVendorId} vendor={vendor} parent={parent} />\n );\n }\n return (\n <div className=\"vendors-table\">\n {vendorsList && (\n <Table tableDynamic={true}>\n <Header>\n <Cell />\n <Cell className=\"courier-name\">\n {getMessage(\"order.courier.dispatch.table.header.name\")}\n </Cell>\n <Cell>{getMessage(\"order.table.courierCharge\")}</Cell>\n <Cell>\n {getMessage(\n \"order.courier.dispatch.table.header.pickup.estimate\"\n )}\n </Cell>\n <Cell>\n {getMessage(\n \"order.courier.dispatch.table.header.delivery.estimate\"\n )}\n </Cell>\n <Cell />\n </Header>\n {VendorRows}\n </Table>\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { getSession } from \"../../lib/auth\";\nimport {\n getPrintableTime,\n getStandradDateTime,\n utcToLocalTime,\n} from \"../../lib/datetime\";\nimport { getMessage } from \"../../lib/translator\";\n\nexport const DunzoDetails = (props) => {\n const { data } = props;\n const { shippingCost, deliveryEndEstimate, pickupEstimate } = data;\n const organization = (getSession() || {}).organization || {};\n return (\n <div className=\"dunzo-details\">\n <div className=\"top-container\">\n <p>{getMessage(\"order.table.courierCharge\")}</p>\n <p>\n {getMessage(\"order.courier.dispatch.table.header.pickup.estimate\")}\n </p>\n <p>\n {getMessage(\"order.courier.dispatch.table.header.delivery.estimate\")}\n </p>\n </div>\n <div className=\"bottom-container\">\n <p>\n {((organization.currency && organization.currency.symbol) || \"\") +\n shippingCost.toFixed(2)}\n </p>\n {pickupEstimate && (\n <div>\n <p>\n {getPrintableTime(\n getStandradDateTime(utcToLocalTime, pickupEstimate)\n )}\n </p>\n <p>\n {\n getPrintableTime(\n getStandradDateTime(utcToLocalTime, pickupEstimate)\n ).split(\",\")[1]\n }\n </p>\n </div>\n )}\n {deliveryEndEstimate && (\n <div>\n <p>\n {getPrintableTime(\n getStandradDateTime(utcToLocalTime, deliveryEndEstimate)\n )}\n </p>\n <p>\n {\n getPrintableTime(\n getStandradDateTime(utcToLocalTime, deliveryEndEstimate)\n )[1]\n }\n </p>\n </div>\n )}\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport { BaseForm, Radio } from \"../Form\";\nimport Loader from \"../Loader\";\nimport API from \"../../lib/api\";\nimport { getMessage } from \"../../lib/translator\";\nimport AuthenticatedPage from \"../../containers/AuthenticatedPage\";\nimport { Dialog } from \"../Popup\";\nimport \"./style.css\";\nimport { Link } from \"react-router-dom\";\nimport { getSession } from \"../../lib/auth\";\nimport { OtherCourierForm } from \"./OtherCourierForm\";\nimport DropdownIcon from \"./dropdown.svg\";\nimport { VendorsTable } from \"./Table\";\nimport { DunzoDetails } from \"./DunzoDetails\";\n\nexport default class CourierDispatch extends BaseForm {\n constructor(props) {\n super(props);\n this.state.showSuccessDialog = false;\n this.state.showErrorDialog = false;\n this.state.formError = \"\";\n this.state.logisticsServiceProviders = [];\n this.state.courierVendors = [];\n this.state.showShipRocket = false;\n this.state.showFedEx = false;\n this.otherLogisticsProvider = [\n {\n id: \"OTHER\",\n name: \"Other Courier\",\n },\n {\n id: \"SELF\",\n name: \"Self\",\n },\n ];\n }\n\n componentDidMount() {\n this.setState({ providersLoading: true });\n this.allProvidersApi = new API({\n url: \"/logistics-service/logistics-provider\",\n });\n this.websiteConfigApi = new API({\n url: \"/config-service/config/logistics\",\n });\n this.courierEligibilityApi = new API({\n url: \"/logistics-service/courier-eligibility\",\n });\n const id = this.props.match.params.id;\n const params = { orderId: id };\n Promise.all([\n this.allProvidersApi.get(),\n this.websiteConfigApi.get(),\n this.courierEligibilityApi.get(params),\n ])\n .then(\n ([\n allProvidersResponse,\n websiteConfigResponse,\n courierEligibilityResponse,\n ]) => {\n const vendors = courierEligibilityResponse.data?.courierVendor;\n\n const availableLogisticsProvider =\n websiteConfigResponse.data?.logistics?.logisticsServiceProviders;\n const logisticsProvider =\n allProvidersResponse.data?.logisticsProvider || [];\n let useableLogisticsProvider = [];\n if (\n logisticsProvider?.length > 0 &&\n availableLogisticsProvider?.length > 0\n ) {\n useableLogisticsProvider = logisticsProvider.filter((obj) =>\n availableLogisticsProvider.includes(obj.id)\n );\n }\n\n this.setState({\n providersList: allProvidersResponse.data,\n logisticsServiceProviders: useableLogisticsProvider,\n courierVendors: vendors,\n formError: \"\",\n });\n }\n )\n .catch((error) => {\n this.setState({\n formError: error.message,\n showErrorDialog: true,\n });\n console.error(error);\n })\n .finally(() => {\n this.setState({ providersLoading: false });\n });\n }\n componentDidUpdate(prevProps, prevState) {\n if (\n this.state.values?.vendor !== \"OTHER\" &&\n this.state.validations?.courierName\n ) {\n const validations = Object.assign({}, this.state.validations);\n delete validations.courierName;\n delete validations.courierCharges;\n delete validations.courierTrackingId;\n\n this.setState({\n validations: validations,\n });\n }\n }\n\n onSubmit = (data) => {\n if (!data.vendor) {\n this.setState({ dispatchError: true });\n return;\n }\n if (data.vendor === \"OTHER\" && !data.courierName) {\n return;\n }\n this.setState({\n submitting: true,\n });\n const id = this.props.match.params.id;\n let OtherCourierFormData;\n const isVendorSelf = data.vendor === \"SELF\";\n if (data.vendor === \"OTHER\" || data.vendor === \"SELF\") {\n OtherCourierFormData = {\n metaData: {\n courierName: isVendorSelf ? \"SELF\" : data.courierName,\n ...(!isVendorSelf && {\n courierCharge: data.courierCharges,\n trackURL: data.courierTrackingId,\n }),\n },\n };\n }\n\n let shipRocketVendorData;\n const shipRocketVendor = this.state.courierVendors?.find(\n (obj) => obj.name === data.vendor && obj.provider === \"SHIPROCKET\"\n );\n if (shipRocketVendor) {\n shipRocketVendorData = {\n vendor: \"SHIPROCKET\",\n courierVendorId: shipRocketVendor.courierVendorId,\n };\n }\n let fedExVendorData;\n const fedExVendor = this.state.courierVendors?.find(\n (obj) => obj.name === data.vendor && obj.provider === \"FEDEX\"\n );\n if (fedExVendor) {\n fedExVendorData = {\n vendor: \"FEDEX\",\n courierVendorId: fedExVendor.courierVendorId,\n };\n }\n const organizationId = getSession()?.organization?.id?.toString();\n const courierApi = new API({ url: \"/logistics-service/courier\" });\n const vendorName = isVendorSelf ? \"OTHER\" : data.vendor;\n const params = {\n organizationId,\n orderId: id.toString(),\n vendor: vendorName,\n ...OtherCourierFormData,\n ...shipRocketVendorData,\n ...fedExVendorData,\n };\n courierApi\n .post(params)\n .then((response) => {\n this.setState({\n formError: \"\",\n showSuccessDialog: true,\n });\n })\n .catch((error) => {\n this.setState({\n formError: error.message,\n showErrorDialog: true,\n });\n console.error(error);\n })\n .finally(() => {\n this.setState({ submitting: false });\n });\n };\n\n closeDialogs = () => {\n this.setState(\n {\n showSuccessDialog: false,\n showErrorDialog: false,\n },\n () => {\n if (!this.state.formError)\n this.props.history.push(\"/operations/orders\");\n }\n );\n };\n getOptionList = () => {\n // remove SHIPROCKET from option list\n let useableLogisticsProvider = this.state.logisticsServiceProviders.filter(\n (obj) => obj.id !== \"SHIPROCKET\" && obj.id !== \"FEDEX\"\n );\n\n // check availabilit of DUNZO from courierEligibilityApi\n let vendorDunzo = this.state.courierVendors?.filter(\n (obj) => obj.provider === \"DUNZO\"\n );\n if (!vendorDunzo || vendorDunzo?.length === 0) {\n useableLogisticsProvider = [];\n }\n\n useableLogisticsProvider = [\n ...useableLogisticsProvider,\n ...this.otherLogisticsProvider,\n ];\n return useableLogisticsProvider.map((data) => {\n const { name, id, image } = data;\n\n return {\n text: (\n <div className=\"HeaderContainer\">\n <div\n className={id === \"DUNZO\" ? \"header dunzo\" : \"header\"}\n key={id}\n >\n <div>\n {image && <img src={image} className=\"CourierLogo\" alt=\"\" />}\n <span className=\"courierName\">{name}</span>\n </div>\n </div>\n {this.state?.values?.vendor &&\n this.state?.values?.vendor === \"OTHER\" &&\n id === \"OTHER\" && <OtherCourierForm parent={this} />}\n\n {this.state?.values?.vendor &&\n this.state?.values?.vendor === \"DUNZO\" &&\n id === \"DUNZO\" && <DunzoDetails data={vendorDunzo[0]} />}\n </div>\n ),\n value: id,\n };\n });\n };\n onToggleChange = (value) => {\n if (value === \"shiprocket\")\n this.setState({ showShipRocket: !this.state.showShipRocket });\n if (value === \"fedex\") this.setState({ showFedEx: !this.state.showFedEx });\n };\n\n render() {\n const { Form } = this.components;\n const { SubmitButton, CancelButton } = this.buttons;\n let optionList = this.getOptionList();\n const shipRocketData = this.state.logisticsServiceProviders.find(\n (obj) => obj.id === \"SHIPROCKET\"\n );\n const fedExData = this.state.logisticsServiceProviders.find(\n (obj) => obj.id === \"FEDEX\"\n );\n const { courierVendors } = this.state;\n const shipRocketVendors = courierVendors?.filter(\n (obj) => obj.provider === \"SHIPROCKET\"\n );\n const fedExVendors = courierVendors?.filter(\n (obj) => obj.provider === \"FEDEX\"\n );\n return (\n <AuthenticatedPage className=\"CourierSelect\" menu={this.props.menu}>\n <div>\n <h1 className=\"title\">\n {getMessage(\"order.courier.select.heading\")}\n </h1>\n {this.state.providersLoading ? (\n <Loader />\n ) : (\n <Form>\n <Dialog\n show={this.state.showSuccessDialog}\n className=\"success\"\n information={getMessage(\"order.courier.dispatch.success\")}\n close={this.closeDialogs}\n closeText={getMessage(\"okay.text\")}\n />\n <Dialog\n show={this.state.showErrorDialog}\n information={getMessage(this.state.formError)}\n close={this.closeDialogs}\n closeText={getMessage(\"okay.text\")}\n />\n\n <div className=\"providerContainer\">\n {shipRocketData && Boolean(shipRocketVendors?.length) && (\n <>\n <div className=\"HeadContainer\">\n <div\n className=\"header\"\n onClick={() => this.onToggleChange(\"shiprocket\")}\n >\n <img\n className={`dropDown ${\n this.state.showShipRocket\n ? \"selectedDropdown\"\n : \"notselectedDropdown\"\n }`}\n src={DropdownIcon}\n alt=\"\"\n />\n <img\n src={shipRocketData.image}\n className=\"CourierLogo\"\n alt=\"\"\n />\n <span className=\"courierName\">\n {shipRocketData.name}\n </span>\n </div>\n {this.state.showShipRocket && (\n <>\n {shipRocketVendors && shipRocketVendors.length ? (\n <VendorsTable\n vendorsList={shipRocketVendors}\n parent={this}\n />\n ) : (\n <>\n <div className=\"no-vendor-found\">\n {getMessage(\n \"order.courier.dispatch.no.vendor.found\"\n )}\n </div>\n </>\n )}\n </>\n )}\n </div>\n </>\n )}\n {fedExData && Boolean(fedExVendors?.length) && (\n <>\n <div className=\"HeadContainer\">\n <div\n className=\"header\"\n onClick={() => this.onToggleChange(\"fedex\")}\n >\n <img\n className={`dropDown ${\n this.state.showFedEx\n ? \"selectedDropdown\"\n : \"notselectedDropdown\"\n }`}\n src={DropdownIcon}\n alt=\"\"\n />\n <img\n src={fedExData.image}\n className=\"CourierLogo\"\n alt=\"\"\n />\n <span className=\"courierName\">{fedExData.name}</span>\n </div>\n {this.state.showFedEx && (\n <>\n {fedExVendors && fedExVendors.length ? (\n <VendorsTable\n vendorsList={fedExVendors}\n parent={this}\n />\n ) : (\n <>\n <div className=\"no-vendor-found\">\n {getMessage(\n \"order.courier.dispatch.no.vendor.found\"\n )}\n </div>\n </>\n )}\n </>\n )}\n </div>\n </>\n )}\n <Radio\n className=\"vehicle-type\"\n name=\"vendor\"\n options={optionList}\n {...this.generateStateMappers({\n stateKeys: [\"vendor\"],\n })}\n />\n {!this.state.values?.vendor && this.state.dispatchError && (\n <>\n <div className=\"input-error-message\">\n {getMessage(\"input.value.missing\")}\n </div>\n </>\n )}\n <div className=\"form-action\">\n <SubmitButton disabled={this.state.submitting}>\n {getMessage(\"order.action.dispatch\")}\n </SubmitButton>\n <Link to=\"/operations/orders\">\n <CancelButton>\n {getMessage(\"order.details.packed.cancelText\")}\n </CancelButton>\n </Link>\n </div>\n </div>\n </Form>\n )}\n </div>\n </AuthenticatedPage>\n );\n }\n}\n","import React from \"react\";\nimport CourierDispatch from \"../../../../components/CourierDispatch/index\";\n\nconst OrderDispatchForm = (props) => {\n return <CourierDispatch {...props} />;\n};\n\nexport default OrderDispatchForm;\n","import React from \"react\";\nimport {\n LineChart,\n XAxis,\n YAxis,\n CartesianGrid,\n Line,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\";\n\nconst SimpleLineChart = ({\n heading,\n headerTag = null,\n data,\n xKey = \"date\",\n yKey,\n toolTipContent,\n}) => (\n <section className=\"analytic-line-chart\">\n <header>\n <h5>{heading}</h5>\n </header>\n {headerTag}\n <ResponsiveContainer width={\"100%\"} height={300}>\n <LineChart\n data={data}\n margin={{ top: 5, right: 30, left: 20, bottom: 5 }}\n >\n <XAxis dataKey={xKey} padding={{ left: 30 }} />\n <YAxis />\n <CartesianGrid />\n <Line\n dataKey={yKey}\n stroke=\"#20c05c\"\n strokeWidth={2}\n activeDot={{ r: 6 }}\n />\n <Tooltip\n cursor={false}\n wrapperStyle={{\n width: \"4rem\",\n height: \"3rem\",\n top: \"-4.5rem\",\n left: \"-2.75rem\",\n }}\n content={toolTipContent}\n />\n </LineChart>\n </ResponsiveContainer>\n </section>\n);\n\nexport default SimpleLineChart;\n","import React from \"react\";\nimport {\n ResponsiveContainer,\n PieChart,\n Pie,\n Cell,\n Tooltip,\n Legend,\n} from \"recharts\";\nimport EmptyChartImg from \"./analytics_empty.png\";\n\nconst COLORS = [\n \"#eb8181\",\n \"#7bd49d\",\n \"#67cbff\",\n \"#80959d\",\n \"#9a1f40\",\n \"#74d4c0\",\n \"#f3c623\",\n \"#127681\",\n \"#10375c\",\n \"#726a95\",\n];\n\nconst EmptyState = () => (\n <div className=\"empty-chart\">\n <img src={EmptyChartImg} alt=\"empty-chart-img\" />\n <div>Looks like there is no data yet</div>\n </div>\n);\n\nconst SimplePieChart = ({\n header,\n data,\n dataKey = \"count\",\n nameKey = \"medium\",\n toolTipContent,\n}) => (\n <section className=\"analytic-pie-chart\">\n <h5>{header}</h5>\n <div className=\"pie-chart-display\">\n {data.length > 0 ? (\n <ResponsiveContainer width={\"100%\"} height={420}>\n <PieChart>\n <Pie\n data={data}\n cx={\"50%\"}\n cy={\"50%\"}\n innerRadius={80}\n outerRadius={150}\n fill=\"#8884d8\"\n dataKey={dataKey}\n nameKey={nameKey}\n >\n {data.map((entry, index) => (\n <Cell key={`cell-${index}`} fill={COLORS[index]} />\n ))}\n </Pie>\n <Tooltip\n wrapperStyle={{ width: \"5rem\", height: \"5rem\" }}\n content={toolTipContent}\n />\n <Legend iconType=\"circle\" width=\"5\" iconSize={6} />\n </PieChart>\n </ResponsiveContainer>\n ) : (\n <EmptyState />\n )}\n </div>\n </section>\n);\n\nexport default SimplePieChart;\n","import React, { Component } from \"react\";\nimport moment from \"moment\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport { DateRangePicker } from \"../../../components/Form\";\nimport SimpleLineCharts from \"../Charts/LineChart\";\nimport SimplePieCharts from \"../Charts/PieChart\";\nimport API from \"../../../lib/api\";\nimport \"./style.css\";\nimport { getSession } from \"../../../lib/auth\";\n\nconst commonEndpoint = \"/analytics-service/metrics/daily/\";\nconst apiEndPoints = [\n \"sales-amount\",\n \"order-count\",\n \"medium-wise-order-count\",\n \"mode-wise-payment-amount\",\n];\n\nfunction dateToNum(d) {\n // Convert date \"2016-06-26\" to 20160626\n return Number(d.split(\"-\").join(\"\"));\n}\n\nconst getAccumulatedRevenue = (data) => {\n return data ? data.reduce((total, { amount }) => total + amount, 0) : 0;\n};\n\nconst getAccumulatedOrders = (data) => {\n return data ? data.reduce((total, { count }) => total + count, 0) : 0;\n};\n\nconst OrderRevenueHeaderTag = ({ currency, orderRevenue }) => (\n <div className=\"filter\">\n <div className=\"top-data\">\n <span>\n <sup>{currency}</sup> {getAccumulatedRevenue(orderRevenue)}\n </span>\n <span>Total Revenue</span>\n </div>\n </div>\n);\n\nconst OrderCountHeaderTag = ({ orderCount }) => (\n <div className=\"filter\">\n <div className=\"top-data\">\n <span>{getAccumulatedOrders(orderCount)}</span>\n <span>Total Orders</span>\n </div>\n </div>\n);\n\nclass CsAnalytics extends Component {\n constructor(props) {\n super(props);\n this.state = {\n orderNumber: null,\n orderSearch: false,\n dateRange: {\n startDate: moment().subtract(30, \"d\").format(\"YYYY-MM-DD\"),\n endDate: moment().format(\"YYYY-MM-DD\"),\n },\n orderRevenue: [],\n orderCount: [],\n mediumDistribution: [],\n paymentDistribution: [],\n };\n }\n\n transformDataForChart = (data) => {\n return (\n data\n ?.sort(function (a, b) {\n return dateToNum(a.date) - dateToNum(b.date);\n })\n // converting date to MM/DD format\n .map((d) => ({ ...d, date: d.date.split(\"-\").slice(1).join(\"/\") }))\n );\n };\n\n fetchChartData = () => {\n const { dateRange } = this.state;\n const apis = apiEndPoints.map(\n (url) =>\n new API({\n url: `${commonEndpoint}${url}?start=${dateRange.startDate}T00%3A00%3A00Z&end=${dateRange.endDate}T00%3A00%3A00Z`,\n })\n );\n\n Promise.all(apis.map((api) => api.get()))\n .then(\n ([\n orderRevenueResponse,\n orderCountResponse,\n mediumDistributionResponse,\n paymentDistributionResponse,\n ]) => {\n const newStateValue = {\n orderRevenue: this.transformDataForChart(\n orderRevenueResponse.data.salesAmount\n ),\n orderCount: this.transformDataForChart(\n orderCountResponse.data.orderCount\n ),\n mediumDistribution: mediumDistributionResponse.data\n .mediumWiseOrderCount\n ? mediumDistributionResponse.data.mediumWiseOrderCount\n : [],\n paymentDistribution: paymentDistributionResponse.data\n .modeWisePaymentAmount\n ? paymentDistributionResponse.data.modeWisePaymentAmount\n : [],\n };\n\n this.setState(newStateValue);\n }\n )\n .catch((error) => {\n console.error(error);\n });\n };\n\n handleDateChange = (dates) => {\n let dateRange = JSON.parse(JSON.stringify(this.state.dateRange));\n dateRange.startDate = dates && dates.startDate;\n dateRange.endDate = dates && dates.endDate;\n\n this.setState({\n dateRange,\n });\n };\n\n renderRevenueTooltip = ({ active, payload }) => {\n const currency = getSession().organization.currency.symbol;\n if (active && payload) {\n const { value } = payload[0];\n return (\n <div className=\"line-chart-tooltip\">\n <div className=\"subtitle\">{currency}</div>\n <div className=\"value\">{value}</div>\n </div>\n );\n }\n return null;\n };\n\n renderOrdersTooltip = ({ active, payload }) => {\n if (active && payload) {\n const { value } = payload[0];\n return (\n <div className=\"line-chart-tooltip\">\n <div className=\"value\">{value}</div>\n <div className=\"subtitle\">{value > 1 ? \"Orders\" : \"Order\"}</div>\n </div>\n );\n }\n return null;\n };\n\n renderPieDeviceTooltip = ({ active, payload }) => {\n if (active) {\n const { value } = payload[0];\n return (\n <div className=\"pie-chart-tooltip\">\n <div className=\"value\">{value}</div>\n <div className=\"subtitle\">{value > 1 ? \"Orders\" : \"Order\"}</div>\n </div>\n );\n }\n return null;\n };\n\n renderPiePaymentTooltip = ({ active, payload }) => {\n const currency = getSession().organization.currency.symbol;\n if (active) {\n const { value } = payload[0];\n return (\n <div className=\"pie-chart-tooltip\">\n <div className=\"value\">{value}</div>\n <div className=\"subtitle\">{currency}</div>\n </div>\n );\n }\n return null;\n };\n\n componentDidUpdate(prevProps, prevState) {\n const { dateRange: oldDateRange } = prevState;\n const dateRange = this.state.dateRange;\n if (\n (dateRange.startDate !== oldDateRange.startDate ||\n dateRange.endDate !== oldDateRange.endDate) &&\n dateRange.startDate &&\n oldDateRange.endDate\n ) {\n this.fetchChartData();\n }\n }\n\n componentDidMount() {\n this.fetchChartData();\n }\n\n render() {\n const {\n dateRange,\n mediumDistribution,\n paymentDistribution,\n orderRevenue,\n orderCount,\n } = this.state;\n const currency = getSession().organization.currency.symbol;\n return (\n <AuthenticatedPage\n menu={this.props.menu}\n className=\"order-analytics-page\"\n >\n <h1 className=\"title\">Order Analytics</h1>\n <div>\n <div className=\"date-selector\">\n <DateRangePicker\n openDirection=\"down\"\n minimumNights={0}\n isOutsideRange={(date) => date > new Date()}\n label=\"Select Dates\"\n onChange={this.handleDateChange}\n displayFormat={() => \"MMM D YYYY\"}\n value={dateRange}\n />\n </div>\n <div className=\"line-chart\">\n <SimpleLineCharts\n data={orderRevenue}\n xKey=\"date\"\n yKey=\"amount\"\n heading=\"Order Revenue\"\n headerTag={\n <OrderRevenueHeaderTag\n currency={currency}\n orderRevenue={orderRevenue}\n />\n }\n toolTipContent={this.renderRevenueTooltip}\n />\n <SimpleLineCharts\n data={orderCount}\n xKey=\"date\"\n yKey=\"count\"\n heading=\"Order Count\"\n headerTag={<OrderCountHeaderTag orderCount={orderCount} />}\n toolTipContent={this.renderOrdersTooltip}\n />\n </div>\n <div className=\"pie-chart\">\n <SimplePieCharts\n header=\"Device Distribution\"\n data={mediumDistribution}\n dataKey=\"count\"\n nameKey=\"medium\"\n toolTipContent={this.renderPieDeviceTooltip}\n />\n <SimplePieCharts\n header=\"Payment Distribution\"\n data={paymentDistribution}\n dataKey=\"amount\"\n nameKey=\"mode\"\n toolTipContent={this.renderPiePaymentTooltip}\n />\n </div>\n </div>\n </AuthenticatedPage>\n );\n }\n}\n\nexport default CsAnalytics;\n","import moment from \"moment\";\n\nexport const TYPES = {\n DATE: \"Date\",\n STORE: \"Store\",\n STORES: \"Stores\",\n START_DATE: \"startDate\",\n END_DATE: \"endDate\",\n};\n\nconst handleValueWithComma = (val) =>\n val && val.includes(\",\") ? `\"${val}\"` : val;\n\nexport const downloadCSV = (data = [], name) => {\n let csv = data.reduce((acc, curr) => {\n let line = curr.map(handleValueWithComma).join(\",\");\n line += \"\\n\";\n acc += line;\n return acc;\n }, \"\");\n\n var hiddenElement = document.createElement(\"a\");\n const csvData = new Blob([csv], { type: \"text/csv\" });\n const href = URL.createObjectURL(csvData);\n hiddenElement.href = href;\n hiddenElement.target = \"_blank\";\n hiddenElement.download = name ? `${name}.csv` : `report.csv`;\n hiddenElement.click();\n};\n\nexport const getRenderParams = (params) => {\n const storeConfig = params?.filter(({ type }) => type === TYPES.STORE)[0];\n const dateConfig = params?.filter(({ type }) => type === TYPES.DATE);\n const multiStoreConfig = params?.filter(\n ({ type }) => type === TYPES.STORES\n )[0];\n const startDateConfig = dateConfig?.filter(\n ({ key }) => key === TYPES.START_DATE\n )[0];\n const endDateConfig = dateConfig?.filter(\n ({ key }) => key === TYPES.END_DATE\n )[0];\n const otherDateConfigs = dateConfig?.filter(\n ({ key }) => ![TYPES.START_DATE, TYPES.END_DATE].includes(key)\n );\n\n return { storeConfig, startDateConfig, endDateConfig, otherDateConfigs, multiStoreConfig };\n};\n\nexport const isValid = (data, params) => {\n let valid = true;\n params &&\n params.forEach(({ key }) => {\n valid = valid && Boolean(data[key]);\n });\n\n if (valid && data.startDate && data.endDate) {\n valid = valid && moment(data.endDate).isAfter(data.startDate);\n }\n\n return valid;\n};\n\nexport const createThirtyDaysTimeSpanHandler = (startDate) => (day) => {\n const diff = moment(startDate).diff(day, \"day\");\n return !(diff < 0 && diff >= -30);\n};\n","import React, { Component, useState, useEffect, Fragment } from \"react\";\nimport moment from \"moment\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport { Checkbox, MultiSelect, SingleDatePicker } from \"../../../components/Form\";\nimport Select from \"../../../components/Form/Inputs/Select\";\nimport { Dialog, Popup } from \"../../../components/Popup\";\nimport Loader from \"../../../components/Loader\";\n\nimport API from \"../../../lib/api\";\nimport { getMessage } from \"../../../lib/translator\";\nimport {\n canAccessReports,\n getStores,\n isERCOrComplete,\n} from \"../../../lib/auth\";\n\nimport \"./style.css\";\nimport {\n downloadCSV,\n getRenderParams,\n isValid,\n createThirtyDaysTimeSpanHandler,\n} from \"./helpers\";\nimport { get } from \"../../../lib/storage\";\n\nconst reportEndpoint = \"/report-service/reports\";\n\nconst dateRangeOptions = [\"Day\", \"Week\", \"Month\", \"Custom\"];\n\nconst getStoreOptions = () => {\n return [...JSON.parse(get(\"stores\"))].map((store) => {\n return { text: store.name, value: store.id };\n });\n};\n\nconst DownloadReportForm = ({ handleClose, selectedReport, _this }) => {\n const [data, setData] = useState({});\n const [dateRangeType, setDateRangeType] = useState(\"Month\");\n const [isProcessing, setIsProcessing] = useState(false);\n const [selectAll, setSelectAll] = useState(false);\n\n const storeOptions = getStoreOptions();\n\n const handleDateRangeTypeChange = (e) => {\n setDateRangeType(e.target.value);\n };\n\n const handleSubmit = (key) => {\n setIsProcessing(true);\n const reportId = selectedReport?.id;\n const url = `${reportEndpoint}/${reportId}`;\n const params = Object.keys(data).reduce((acc, curr) => {\n acc[curr] = encodeURIComponent(data[curr]);\n if (curr === \"startDate\") {\n acc[curr] += \" 00:00:00\";\n } else if (curr === \"endDate\") {\n acc[curr] += \" 23:59:59\";\n }\n return acc;\n }, {});\n params.requestType = key;\n const api = new API({ url });\n api\n .get(params)\n .then((resp) => {\n handleClose();\n if (key === \"download\") {\n downloadCSV(resp.data, selectedReport?.name);\n }\n if (key === \"email\") {\n _this.setState({\n formError: \"\",\n successMessage: resp.data,\n showSuccessDialog: true,\n });\n }\n })\n .catch((error) => console.error(error))\n .finally(() => {\n setIsProcessing(false);\n });\n };\n\n const createDataChangeHandler = (key) => (date) => {\n const newData = { ...data, [key]: date };\n if (multiStoreConfig?.key === key) {\n if (date?.length !== storeOptions?.length) {\n setSelectAll(false);\n } else {\n setSelectAll(true);\n }\n }\n setData(newData);\n };\n\n /* Recalculate the date-range whenever different timespan is selected*/\n useEffect(() => {\n const { startDateConfig, endDateConfig } = getRenderParams(\n selectedReport?.params\n );\n\n if (startDateConfig && endDateConfig) {\n if (dateRangeType !== \"Custom\") {\n let numOfDays = 30;\n if (dateRangeType === \"Day\") {\n numOfDays = 1;\n } else if (dateRangeType === \"Week\") {\n numOfDays = 7;\n }\n\n const newDates = {\n startDate: moment().subtract(numOfDays, \"d\").format(\"YYYY-MM-DD\"),\n endDate: moment().format(\"YYYY-MM-DD\"),\n };\n\n setData((data) => ({ ...data, ...newDates }));\n }\n }\n }, [dateRangeType, selectedReport]);\n\n // Reset endDate is selected span is more than 30 days\n useEffect(() => {\n if (data.startDate && data.endDate) {\n if (moment(data.startDate).diff(data.endDate, \"day\") < -30) {\n setData((data) => ({ ...data, endDate: undefined }));\n }\n }\n }, [data.startDate, data.endDate]);\n\n const allStores = getStores()\n ?.filter((store) => store.hasPicking || store.hasClickCollect)\n .map((store) => ({ text: store.name, value: store.id }));\n\n const { storeConfig, startDateConfig, endDateConfig, otherDateConfigs, multiStoreConfig } =\n getRenderParams(selectedReport?.params);\n\n const canbeSubmitted = !isProcessing && isValid(data, selectedReport?.params);\n\n const handleSelectAll = (key, value) => {\n let storeIds;\n if (value) {\n storeIds = storeOptions?.map((store) => store.value);\n } else {\n storeIds = [];\n }\n const newData = { ...data, [key]: storeIds };\n setData(newData);\n setSelectAll(value);\n };\n\n return (\n <Popup\n className=\"report-form\"\n heading={getMessage(\"analytics.report.modal.title\")}\n show\n close={handleClose}\n >\n {storeConfig && (\n <div>\n <label htmlFor=\"store\" className=\"report-field-label\">\n {getMessage(\"store.store.label\")}\n </label>\n <Select\n placeholder={\"Select store\"}\n name={storeConfig.key}\n options={allStores}\n value={data[storeConfig.key] ? Number(data[storeConfig.key]) : \"\"}\n onChange={createDataChangeHandler(storeConfig.key)}\n />\n </div>\n )}\n {multiStoreConfig && (\n <MultiSelect\n className=\"product-type stores\"\n label={getMessage(\"product.selectStore\")}\n placeholder={getMessage(\"coupon.form.stores.placeholder\")}\n name={multiStoreConfig.key}\n options={storeOptions}\n value={data[multiStoreConfig.key]}\n onChange={createDataChangeHandler(multiStoreConfig.key)}\n secondaryLabel={() => (\n <Checkbox\n inlineLabel={getMessage(\"select all\")}\n name=\"selectAllStores\"\n value={selectAll}\n onChange={(value) => handleSelectAll(multiStoreConfig.key, value)}\n className=\"checkLabel\"\n key={selectAll}\n />\n )}\n />\n )}\n {startDateConfig && endDateConfig && (\n <div>\n <span className=\"report-field-label\">\n {getMessage(\"analytics.report.dateRange\")}\n </span>\n <div className=\"date-range-radio\">\n {dateRangeOptions.map((val) => (\n <div key={`radio-${val}`}>\n <input\n type=\"radio\"\n name=\"dateRangeType\"\n id={`radio-${val}`}\n value={val}\n checked={val === dateRangeType}\n onChange={handleDateRangeTypeChange}\n />\n <label htmlFor={`radio-${val}`}>{val}</label>\n </div>\n ))}\n </div>\n </div>\n )}\n <div className=\"date-selector\">\n {startDateConfig && (\n <SingleDatePicker\n openDirection=\"down\"\n className=\"date-range-field\"\n enableToday\n isOutsideRange={(day) => moment().diff(day) < 0}\n label={startDateConfig.name}\n onChange={createDataChangeHandler(startDateConfig.key)}\n displayFormat={() => \"MMM D YYYY\"}\n value={data[startDateConfig.key]}\n disabled={dateRangeType !== \"Custom\"}\n />\n )}\n {startDateConfig && endDateConfig && (\n <span className=\"date-range-separator\">-</span>\n )}\n {endDateConfig && (\n <SingleDatePicker\n openDirection=\"down\"\n className=\"date-range-field\"\n isOutsideRange={createThirtyDaysTimeSpanHandler(data.startDate)}\n customIsOutsideRange\n label={endDateConfig.name}\n onChange={createDataChangeHandler(endDateConfig.key)}\n displayFormat={() => \"MMM D YYYY\"}\n value={data[endDateConfig.key]}\n disabled={dateRangeType !== \"Custom\"}\n />\n )}\n {otherDateConfigs &&\n otherDateConfigs.map((param, index) => (\n <SingleDatePicker\n openDirection=\"down\"\n enableToday\n isOutsideRange={(day) => moment().diff(day) < 0}\n label={param.name}\n onChange={createDataChangeHandler(param.key)}\n displayFormat={() => \"MMM D YYYY\"}\n value={data[param.key]}\n key={\"other-date-\" + index}\n />\n ))}\n </div>\n <div className=\"button-action\">\n {selectedReport?.requestTypes?.map((requestTypes) => (\n <button\n className={requestTypes?.name + \"-report-btn\"}\n disabled={!canbeSubmitted}\n onClick={() => handleSubmit(requestTypes?.name)}\n >\n {getMessage(\n isProcessing\n ? \"analytics.report.processing\"\n : requestTypes === \"download\"\n ? \"analytics.report.modal.title\"\n : \"analytics.report.send.email\"\n )}\n </button>\n ))}\n </div>\n </Popup>\n );\n};\n\nclass AnalyticsReport extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n fetchReports = () => {\n this.setState({ loading: true });\n const api = new API({ url: reportEndpoint });\n\n api\n .get()\n .then((reports) => {\n const modifiedResp = Object.keys(reports.data).reduce((acc, curr) => {\n return [...acc, { ...reports.data[curr], id: curr }];\n }, []);\n this.setState({ reports: modifiedResp, loading: false });\n })\n .catch((error) => {\n console.error(error);\n });\n };\n\n handleShowModal = (report) => {\n this.setState({ showModal: true, selectedReport: report });\n };\n\n closeModal = () => {\n this.setState({ showModal: false });\n };\n\n closeDialogs = () => {\n this.setState({\n showSuccessDialog: false,\n showErrorDialog: false,\n });\n };\n\n componentDidMount() {\n this.fetchReports();\n }\n\n render() {\n const {\n reports,\n showModal,\n selectedReport,\n loading,\n showSuccessDialog,\n showErrorDialog,\n formError,\n successMessage,\n } = this.state;\n\n const isERCorComplete = isERCOrComplete();\n return (\n <AuthenticatedPage\n menu={this.props.menu}\n className=\"analytics-report-page\"\n >\n <h1 className=\"title\">{getMessage(\"analytics.reports.heading\")}</h1>\n {loading ? (\n <Loader />\n ) : (\n <Fragment>\n {showModal && (\n <DownloadReportForm\n handleClose={this.closeModal}\n selectedReport={selectedReport}\n _this={this}\n />\n )}\n <h3 className=\"section-heading\">\n {getMessage(\"analytics.report.recent\")}\n </h3>\n <div className=\"reports-card-conatiner\">\n {reports?.map((report, index) => {\n const shouldRender =\n (isERCorComplete && canAccessReports(report?.name)) ||\n !isERCorComplete;\n\n if (shouldRender) {\n return (\n <div\n className=\"report-card\"\n key={report.name + index}\n onClick={() => this.handleShowModal(report)}\n >\n <span className=\"placeholder\" />\n <span>{report.name}</span>\n </div>\n );\n }\n return null;\n })}\n </div>\n <Dialog\n show={showSuccessDialog}\n title={getMessage(\"success.text.title\")}\n className=\"success\"\n information={successMessage}\n close={this.closeDialogs}\n closeText={getMessage(\"okay.text\")}\n />\n <Dialog\n show={showErrorDialog}\n title={getMessage(\"error.generic\")}\n information={getMessage(formError)}\n close={this.closeDialogs}\n closeText={getMessage(\"okay.text\")}\n />\n </Fragment>\n )}\n </AuthenticatedPage>\n );\n }\n}\n\nexport default AnalyticsReport;\n","import React, { Component } from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport Table from \"./Table\";\nimport Details from \"./Details\";\n\nclass OrdersRouter extends Component {\n render() {\n let { router, ...props } = this.props;\n let details = { ...props };\n details.url = \"/operations\";\n if (router.match.params.id) {\n let details = { ...this.props };\n details.url = \"/operations\";\n return <Details {...details} />;\n }\n return <Table {...details} />;\n }\n}\n\nexport default withRouter(({ match, ...props }) => (\n <OrdersRouter router={{ match }} {...props} />\n));\n","import React, { Component } from \"react\";\nimport Image from \"../../../../components/Image\";\nimport Table, { Header, Row, Cell } from \"../../../../components/Table\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport AddIcon from \"./icons/add-icon.svg\";\nimport SubtractIcon from \"./icons/subtract-icon.svg\";\nimport DeleteIcon from \"./icons/delete-icon.svg\";\n\nfunction formatValue(value, currency) {\n return Math.round(value * 100) / 100;\n}\nfunction getMobileView() {\n return window.screen.width <= 480;\n}\n\nclass ProductRow extends Component {\n constructor(props) {\n super(props);\n [\"removeProduct\", \"decreaseQuantity\", \"increaseQuantity\"].forEach((fn) => {\n this[fn] = this[fn].bind(this);\n });\n this.state = {\n isMobileView: getMobileView(),\n };\n this.mobileView = this.mobileView.bind(this);\n }\n\n increaseQuantity() {\n this.props.updateQuantity(this.props.product.id, 1);\n }\n\n decreaseQuantity() {\n this.props.updateQuantity(this.props.product.id, -1);\n }\n\n removeProduct() {\n this.props.removeProduct(this.props.product.id);\n }\n mobileView() {\n this.setState({ isMobileView: getMobileView() });\n }\n\n componentDidMount() {\n window.addEventListener(\"resize\", this.mobileView, false);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.mobileView, false);\n }\n render() {\n const { product: item, currency } = this.props;\n let { mrp, discount } = item.storeSpecificData;\n mrp = formatValue(mrp).toFixed(2);\n discount = formatValue(discount).toFixed(2);\n const quantity = formatValue(item.quantity).toFixed(0);\n const amount = ((mrp - discount) * quantity).toFixed(2);\n let { isMobileView } = this.state;\n const brandName =\n item?.product?.brand?.name || this.props.product?.brand?.name;\n const variantName =\n item?.variant?.fullName || item?.product?.name || item?.name;\n return (\n <Row key={item.id}>\n <Cell className=\"item-image\">\n <Image\n bordered\n size=\"sm\"\n src={\n item.product\n ? item.product.images && item.product.images.length\n ? item.product.images[0]\n : null\n : item.images && item.images.length\n ? item.images[0]\n : null\n }\n />\n </Cell>\n <Cell className=\"item-name\">\n <small>\n {\n <div className=\"product-name\">\n <span className=\"brand-name-bold\"> {brandName || \"\"} </span>{\" \"}\n {variantName\n ? variantName\n : getMessage(\n \"order.details.itemsTable.itemsInOrder.unavailabelText\"\n )}\n </div>\n }\n </small>\n </Cell>\n <Cell className=\"item-quantity\">\n <div className=\"flex\">\n <div className=\"subtract-icon\" onClick={this.decreaseQuantity}>\n <img src={SubtractIcon} alt=\"\" />\n </div>\n <div className=\"quantity\">\n <small className=\"text-muted\">{quantity}</small>\n </div>\n <div className=\"add-icon\" onClick={this.increaseQuantity}>\n <img src={AddIcon} alt=\"\" />\n </div>\n </div>\n </Cell>\n <Cell className=\"item-mrp\" align=\"right\">\n {isMobileView ? (\n <div className=\"item-header\">\n {getMessage(\"order.details.itemsTable.header.mrp\")}\n </div>\n ) : (\n \"\"\n )}\n <small className=\"text-muted\">{`${currency.symbol} ${mrp}`}</small>\n </Cell>\n <Cell className=\"item-discount\" align=\"right\">\n {isMobileView ? (\n <div className=\"item-header\">\n {getMessage(\"order.details.itemsTable.header.discount\")}\n </div>\n ) : (\n \"\"\n )}\n <small className=\"text-muted\">\n {`${currency.symbol} ${discount}`}\n </small>\n </Cell>\n <Cell className=\"item-amount\" align=\"right\">\n {isMobileView ? (\n <div className=\"item-header\">\n {getMessage(\"order.details.itemsTable.header.amount\")}\n </div>\n ) : (\n \"\"\n )}\n <div className=\"remove-button-container\">\n <small className=\"text-muted\">\n <strong>{currency.symbol}</strong>\n <strong>{amount}</strong>\n </small>\n <div className=\"remove-button\" onClick={this.removeProduct}>\n <img src={DeleteIcon} alt=\"\" />\n </div>\n </div>\n </Cell>\n </Row>\n );\n }\n}\n\nexport class ProductsTable extends Component {\n render() {\n const { productsList, updateQuantity, removeProduct, currency, store } =\n this.props;\n const ProductRows = [];\n for (let key in productsList) {\n let product = productsList[key];\n ProductRows.push(\n <ProductRow\n store={store}\n currency={currency}\n removeProduct={removeProduct}\n updateQuantity={updateQuantity}\n key={product.id}\n product={product}\n />\n );\n }\n return (\n <div className=\"products-list\">\n {productsList && (\n <Table>\n <Header>\n <Cell>{getMessage(\"order.details.itemsTable.header.image\")}</Cell>\n <Cell>{getMessage(\"order.details.itemsTable.header.name\")}</Cell>\n <Cell className=\"item-quantity\">\n {getMessage(\"order.details.itemsTable.header.quantity\")}\n </Cell>\n <Cell align=\"right\">\n {getMessage(\"order.details.itemsTable.header.mrp\")}\n </Cell>\n <Cell align=\"right\">\n {getMessage(\"order.details.itemsTable.header.discount\")}\n </Cell>\n <Cell align=\"right\">\n {getMessage(\"order.details.itemsTable.header.amount\")}\n </Cell>\n </Header>\n {ProductRows}\n </Table>\n )}\n </div>\n );\n }\n}\n","import React, { Component } from \"react\";\nimport { getMessage } from \"../../../../../lib/translator\";\n\nimport \"./style.css\";\n\nclass InvoiceSummary extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isOpen: false,\n };\n this.togglePricingDetails = this.togglePricingDetails.bind(this);\n }\n\n togglePricingDetails() {\n this.setState((prevState) => {\n return {\n isOpen: !prevState.isOpen,\n };\n });\n }\n\n render() {\n let { amount: payableAmount, discount, shipping } = this.props.data;\n const { isOpen } = this.state;\n let total = Number(payableAmount) + Number(shipping);\n return (\n <div className=\"invoice-summary\">\n <div className=\"flex-around total-amount\">\n <div className=\"text-muted\">\n {getMessage(\"order.details.summary.totalAmount\")}:\n </div>\n <div>\n <span>{this.props.currency.symbol} </span>\n <span className=\"section-value\">{total.toFixed(2)}</span>\n </div>\n </div>\n <div className=\"pricing-details\" onClick={this.togglePricingDetails}>\n <div\n className={`pricing-img-wrapper ${\n isOpen ? \"rotate180deg\" : \"normal-img\"\n }`}\n >\n <small>{\"View Pricing Details\"}</small>\n </div>\n </div>\n {isOpen && (\n <div className=\"toggle-pricing\">\n <div className=\"flex-around order-amount\">\n <div className=\"text-muted\">\n {getMessage(\"order.details.summary.orderAmount\")}\n </div>\n <div>\n <span>{this.props.currency.symbol} </span>\n <span className=\"section-value\">\n {Number(payableAmount + discount).toFixed(2)}\n </span>\n </div>\n </div>\n <div className=\"flex-around shipping-charge\">\n <div className=\"text-muted\">\n {getMessage(\"order.details.summary.shippingCharge\")}\n </div>\n <div>\n <span>{this.props.currency.symbol} </span>\n <span className=\"section-value\">\n {Number(shipping).toFixed(2)}\n </span>\n </div>\n </div>\n <div className=\"flex-around discount-amount\">\n <div className=\"text-muted\">\n {getMessage(\"order.details.summary.discount\")}\n </div>\n <div>\n <span>{this.props.currency.symbol} </span>\n <span className=\"section-value\">\n {Number(discount).toFixed(2)}\n </span>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default InvoiceSummary;\n","import React, { Component } from \"react\";\nimport MetaDataFormFields from \"../../../../../components/MetaDataFormFields\";\nimport API from \"../../../../../lib/api\";\nimport {\n getEntityMetaData,\n saveEntityMetaData,\n isExtensionEnabled,\n} from \"../../../../../lib/auth\";\n\nimport \"./style.css\";\n\nclass OrderMetaData extends Component {\n constructor(props) {\n super(props);\n this.metaDataWithType = {};\n this.getOrderMetaData = this.getOrderMetaData.bind(this);\n }\n\n setValuesToEmpty(obj) {\n let object = Object.assign({}, obj);\n obj && Object.keys(obj).forEach((key, index) => (object[key] = \"\"));\n return object;\n }\n\n getOrderMetaData() {\n let metaData = getEntityMetaData().order;\n const filteredMetaData = {};\n for (let key in metaData) {\n filteredMetaData[key] = metaData[key];\n }\n this.props.initializeMetaData(this.setValuesToEmpty(filteredMetaData));\n this.metaDataWithType = Object.assign({}, filteredMetaData);\n this.metaData = Object.assign({}, this.props.metaData);\n if (!this.metaData) {\n Object.entries(metaData).forEach(([key, type]) => {\n metaData[key] = \"\";\n });\n this.metaData = metaData;\n }\n this.setState({\n values: metaData,\n });\n }\n\n componentDidMount() {\n let orderKeys = getEntityMetaData() && getEntityMetaData().order;\n if (\n (!orderKeys ||\n (Array.isArray(orderKeys) && !orderKeys.length) ||\n (orderKeys.constructor === Object && !Object.keys(orderKeys).length)) &&\n isExtensionEnabled(\"EntityMetaData\")\n ) {\n const api = new API({ url: `/config-service/meta-data` });\n api\n .get()\n .then((response) => {\n let details = response.data.config.entityMetaData;\n saveEntityMetaData(details);\n this.getOrderMetaData();\n })\n .catch((error) => {\n console.error(error);\n });\n } else {\n if (isExtensionEnabled(\"EntityMetaData\")) {\n this.getOrderMetaData();\n }\n }\n }\n\n render() {\n const { metaData, onChange } = this.props;\n return (\n Object.keys(this.metaDataWithType).length > 0 && (\n <React.Fragment>\n <MetaDataFormFields\n className=\"order-meta-data\"\n metaDataWithType={this.metaDataWithType}\n page=\"create-order-form\"\n metaData={metaData}\n onChange={onChange}\n _this={this}\n />\n </React.Fragment>\n )\n );\n }\n}\n\nexport default OrderMetaData;\n","import React from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport moment from \"moment\";\nimport {\n BaseForm,\n VALIDATION_TYPES,\n Radio,\n Input,\n ProductSearch,\n} from \"../../../../../components/Form\";\nimport API from \"../../../../../lib/api\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport {\n getSession,\n isExtensionEnabled,\n getExtensionDetails,\n} from \"../../../../../lib/auth\";\nimport {\n getOrdinal,\n utcToLocalTime,\n formatIsoTime,\n localTimeToUtc,\n convertToMilitaryTime,\n} from \"../../../../../lib/datetime\";\nimport {\n getDisplayAddress,\n sortSlotsAvailability,\n} from \"../../../../../lib/commonlyused\";\nimport { ProductsTable } from \"../ProductsTable\";\nimport InvoiceSummary from \"../InvoiceSummary\";\nimport { Dialog } from \"../../../../../components/Popup\";\nimport Image from \"../../../../../components/Image\";\nimport AddAddressForm from \"../../../Customers/Details/AddAddress\";\nimport MetaDataForm from \"../OrderMetaData\";\nimport Popup from \"../../../../../components/Popup/Popup\";\nimport AddIcon from \"../icons/add-button-icon.svg\";\nimport \"./style.css\";\n\nfunction formatValue(value, currency) {\n return Math.round(value * 100) / 100;\n}\n\nfunction formatOrderDetails(productStoreSpecificData) {\n let { mrp, discount } = productStoreSpecificData;\n mrp = formatValue(mrp);\n discount = formatValue(discount);\n const amount = mrp - discount;\n return { amount, mrp, discount };\n}\n\nfunction generateOptions(slots, className) {\n let slotsArr = [];\n let slotStructure = {};\n let slotDateOptions = [];\n let dateArr = [];\n\n Object.entries(slots).forEach(([key, data]) => {\n data.forEach((item) => {\n slotsArr.push(item);\n if (item.type === \"ASAP\") {\n const currentUtc = moment().utc().format(\"YYYY-MM-DD HH:mm:ss\");\n let currentLocal = moment(utcToLocalTime(currentUtc)).format(\n \"YYYY-MM-DD HH:mm:ss\"\n );\n slotStructure[currentLocal.split(\" \")[0].trim()] = [];\n dateArr.push(currentLocal.split(\" \")[0].trim());\n } else {\n const timearr = item.interval.split(\"/\");\n const ans = timearr[0].split(/[TZ]/);\n const final = `${ans[0]} ${ans[1]}`;\n const date = moment(utcToLocalTime(final), \"YYYY-MM-DD HH:mm:ss\")\n .format(\"YYYY-MM-DD, HH:mm:ss\")\n .split(\",\")[0];\n slotStructure[date] = [];\n dateArr.push(date);\n }\n });\n });\n const dateSet = new Set([...dateArr]);\n\n // displaying purpose\n Array.from(dateSet).forEach((date) => {\n let ob = {};\n if (moment().format(\"YYYY-MM-DD\") === date) {\n ob.text = \"Today\";\n ob.value = date;\n } else if (moment().add(1, \"days\").format(\"YYYY-MM-DD\") === date) {\n ob.text = \"Tomorrow\";\n ob.value = date;\n } else {\n let date1 = moment(date);\n ob.text = `${getOrdinal(date1.format(\"DD\"))} ${date1.format(\"MMM\")}`;\n ob.value = date;\n }\n slotDateOptions.push(ob);\n });\n\n slotsArr.forEach((item) => {\n if (item.type === \"ASAP\") {\n const currentUtc = moment().utc().format(\"YYYY-MM-DD HH:mm:ss\");\n let currentLocal = moment(utcToLocalTime(currentUtc)).format(\n \"YYYY-MM-DD HH:mm:ss\"\n );\n slotStructure[currentLocal.split(\" \")[0].trim()].push({\n text: item.text,\n value: item.id,\n });\n } else {\n const timearr = item.interval.split(\"/\");\n const ans = timearr[0].split(/[TZ]/);\n const final = `${ans[0]} ${ans[1]}`;\n slotStructure[\n moment(utcToLocalTime(final), \"YYYY-MM-DD HH:mm:ss\")\n .format(\"YYYY-MM-DD, HH:mm:ss\")\n .split(\",\")[0]\n ].push({\n text: `${formatIsoTime(timearr[0])} - ${formatIsoTime(timearr[1])}`,\n value: item.id,\n disabled: !item.available,\n titleText: !item.available ? \"slot not available\" : null,\n });\n }\n });\n\n if (!className) {\n return { slotDateOptions, slotStructure };\n } else if (className === \"date-list\") {\n return slotDateOptions;\n } else {\n return slotStructure;\n }\n}\n\nconst isEntityMetaDataEnabled = isExtensionEnabled(\"EntityMetaData\");\n\nclass OrderAddForm extends BaseForm {\n constructor(props) {\n super(props);\n const { customerDetails, phoneNumber } = props;\n this.addressNotServed = {};\n this.state.submitting = false;\n this.state.values.type = props.pickuplocations ? \"PICKUP\" : \"DELIVERY\";\n this.state.values.paymentMode = \"COD\";\n this.state.values.phone = phoneNumber || null;\n this.state.values.email =\n customerDetails && customerDetails.emails.length > 0\n ? customerDetails.emails[0].email\n : null;\n this.state.values.name = customerDetails ? customerDetails.name : null;\n this.state.values.selectedAddressId =\n customerDetails && customerDetails.addresses\n ? customerDetails.addresses[0].id\n : null;\n this.state.values.pickupLocationId = props.pickuplocations\n ? props.pickuplocations[0].value\n : null;\n this.state.values.products = null;\n if (isEntityMetaDataEnabled) {\n this.state.values.metaData = {};\n }\n this.state.addressSlotMap = {\n PICKUP: {},\n DELIVERY: {},\n };\n this.store = 0; // TODO: Get store index from App\n this.state.totalAmount = 0;\n this.state.totalDiscount = 0;\n this.state.cashTendered = 0;\n this.state.formError = \"\";\n this.state.showErrorDialog = false;\n this.state.showAddressModal = false;\n [\n \"addProductToList\",\n \"updateQuantity\",\n \"removeProduct\",\n \"goBack\",\n \"closeErrorDialog\",\n \"showAddressModal\",\n \"closeAddressModal\",\n \"addNewAddress\",\n \"renderSearchableListElement\",\n \"updateCashTendered\",\n \"updateMetaData\",\n \"initializeMetaData\",\n \"getSlotDetails\",\n \"changeDate\",\n \"getAddressParams\",\n \"getPickupSlotDetails\",\n \"getPickupParams\",\n \"onTypeChange\",\n \"promisifySetState\",\n \"pickupLocationApi\",\n \"deliveryApi\",\n ].forEach((fn) => {\n this[fn] = this[fn].bind(this);\n });\n }\n\n updateCashTendered(e) {\n this.setState({\n cashTendered: e.target.value,\n });\n }\n\n generateProductsFromProductVariants(product) {\n let products = product.variants.map((variant) => {\n let pdt = Object.assign({}, product);\n pdt.name = variant.fullName;\n pdt.brand = product.brand;\n pdt.item = variant.item;\n pdt.storeSpecificData = variant.storeSpecificData;\n pdt.images = variant.images;\n pdt.id = variant.item.id;\n pdt.status = variant.status;\n return pdt;\n });\n return products;\n }\n\n renderSearchableListElement(item, valueKey, nameKey, onSelect) {\n const { amount, mrp, discount } = item.storeSpecificData\n ? formatOrderDetails(item.storeSpecificData)\n : { amount: 0, mrp: 0, discount: 0 };\n if (!mrp) {\n return null;\n }\n const currency = getSession().organization.currency.symbol;\n return (\n <li\n className=\"select-option\"\n key={item[valueKey]}\n onClick={(e) => onSelect(item)}\n >\n <Image\n bordered\n size=\"sm\"\n src={\n item.product\n ? item.product.images && item.product.images.length\n ? item.product.images[0]\n : null\n : item.images && item.images.length\n ? item.images[0]\n : null\n }\n />\n <div className=\"searchable-product-details\">\n <div className=\"product-name\">\n {item.brand && <span className=\"bold\">{item.brand.name} </span>}\n {item[nameKey]}\n </div>\n <div className=\"price-holder\">\n <span className=\"price\">\n {currency} {amount}{\" \"}\n </span>\n {discount > 0 && <s className=\"mrp text-muted\">{mrp}</s>}\n </div>\n </div>\n </li>\n );\n }\n\n promisifySetState(state) {\n return new Promise((resolve) => {\n this.setState(state, resolve);\n });\n }\n\n addProductToList(newProduct) {\n if (!newProduct) {\n return;\n }\n const { amount, discount } = formatOrderDetails(\n newProduct.storeSpecificData\n );\n const values = { ...this.state.values };\n let { products } = { ...values };\n if (!products || !products[newProduct[\"id\"]]) {\n if (!products) {\n products = {};\n }\n products[newProduct[\"id\"]] = newProduct;\n products[newProduct[\"id\"]][\"quantity\"] = 1;\n } else {\n products[newProduct[\"id\"]][\"quantity\"] =\n products[newProduct[\"id\"]][\"quantity\"] + 1;\n }\n values[\"products\"] = products;\n this.setState((prevState) => {\n return {\n values,\n totalAmount: prevState.totalAmount + amount,\n totalDiscount: prevState.totalDiscount + discount,\n };\n });\n }\n\n removeProduct(productId) {\n const values = { ...this.state.values };\n let { products } = { ...values };\n if (products && products[productId]) {\n const { amount, discount } = formatOrderDetails(\n products[productId].storeSpecificData\n );\n const productQuantity = products[productId][\"quantity\"];\n delete products[productId];\n const productsLength = Object.keys(products).length;\n if (productsLength === 0) {\n products = null;\n }\n values[\"products\"] = products;\n this.setState((prevState) => {\n return {\n values,\n totalAmount:\n productsLength > 0\n ? prevState.totalAmount - amount * productQuantity\n : 0,\n totalDiscount:\n productsLength > 0\n ? prevState.totalDiscount - discount * productQuantity\n : 0,\n };\n });\n }\n }\n\n goBack() {\n this.props.history.goBack();\n }\n\n // quantity is -1 for decrease in quantity and +1 is for increase in quantity\n updateQuantity(productId, quantity) {\n const values = { ...this.state.values };\n let { products } = { ...values };\n if (products && products[productId]) {\n const { amount, discount } = formatOrderDetails(\n products[productId].storeSpecificData\n );\n products[productId][\"quantity\"] =\n products[productId][\"quantity\"] + quantity;\n if (products[productId][\"quantity\"] <= 0) {\n delete products[productId];\n }\n const productsLength = Object.keys(products).length;\n if (productsLength === 0) {\n products = null;\n }\n values[\"products\"] = products;\n this.setState((prevState) => {\n return {\n values,\n totalAmount:\n productsLength > 0 ? prevState.totalAmount + quantity * amount : 0,\n totalDiscount:\n productsLength > 0\n ? prevState.totalDiscount + quantity * discount\n : 0,\n };\n });\n }\n }\n\n updateMetaData(key, value) {\n const values = Object.assign({}, this.state.values);\n let { metaData } = { ...values };\n if (metaData) {\n metaData[key] = value;\n }\n values[\"metaData\"] = metaData;\n this.setState({\n values,\n });\n }\n\n initializeMetaData(metaDataToInitialize) {\n const values = { ...this.state.values };\n values.metaData = metaDataToInitialize;\n this.setState({\n values,\n });\n }\n\n closeErrorDialog() {\n this.setState({\n showErrorDialog: false,\n formError: \"\",\n });\n }\n\n showAddressModal() {\n this.setState({\n showAddressModal: true,\n });\n }\n\n closeAddressModal() {\n this.setState({\n showAddressModal: false,\n });\n }\n\n orderCreate(formData, params, cart) {\n params[\"cart\"] = JSON.stringify(cart);\n if (formData.metaData && Object.keys(formData.metaData).length > 0) {\n params[\"metaData\"] = formData.metaData;\n } else {\n delete formData.metaData;\n }\n const storeDetails = this.getCurrStoreDetails();\n if (formData[\"type\"] === \"DELIVERY\") {\n params[\"storeId\"] = this.props.storeId;\n if ([0, false].includes(storeDetails?.hasPicking)) {\n params[\"pickingStoreId\"] = storeDetails?.pickingStoreId;\n }\n delete params[\"pickupLocationId\"];\n } else {\n params[\"pickupLocationId\"] =\n (this.state.values && this.state.values[\"pickupLocationId\"]) ||\n this.props.storeId;\n }\n const api = new API({ url: \"/order-service/order\" });\n api\n .post(params)\n .then(\n (response) => {\n if (response.data && response.data.order) {\n const order = response.data.order;\n if (this.state.cashTendered > 0) {\n const paymentApi = new API({\n url: \"/order-service/order-payment\",\n });\n let paymentParams = {};\n paymentParams[\"amount\"] = Math.min(\n this.state.cashTendered,\n this.state.totalAmount\n );\n paymentParams[\"orderReferenceNumber\"] = order.referenceNumber;\n paymentParams[\"mode\"] = \"COD\";\n paymentParams[\"status\"] = \"COMPLETED\";\n paymentApi.post(paymentParams).then(\n (response) => {\n this.props.history.push(\n `/operations/orders/${order.referenceNumber}`\n );\n },\n (error) => {\n this.setState({\n formError: error.message,\n showErrorDialog: true,\n submitting: false,\n });\n }\n );\n } else {\n this.props.history.push(\n `/operations/orders/${order.referenceNumber}`\n );\n }\n }\n },\n (error) => {\n this.setState({\n formError: error.message,\n showErrorDialog: true,\n submitting: false,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n onSubmit(formData) {\n const customerDetails = this.props.customerDetails;\n let cart = [];\n let params = {};\n let { products } = formData;\n if (!products) {\n return false;\n }\n this.setState({\n submitting: true,\n });\n for (let key in products) {\n cart.push({ id: products[key].id, q: products[key].quantity });\n }\n if (formData.preferredDate && isExtensionEnabled(\"DeliverySlots\")) {\n params[\"preferredDate\"] = this.state.preferredDate;\n params[\"preferredSlotId\"] = Number(formData.preferredSlotId);\n }\n params[\"type\"] = formData.type;\n params[\"paymentMode\"] = formData.paymentMode;\n\n if (customerDetails !== null) {\n // Existing customer. Send only customer ID\n params[\"customerId\"] = customerDetails.id;\n } else {\n // New customer. Address and customer details need to be sent\n params[\"name\"] = formData.name;\n params[\"phone\"] = formData.phone;\n params[\"email\"] = formData.email;\n params[\"address\"] = formData.address;\n params[\"city\"] = formData.address && formData.address.city;\n params[\"landmark\"] = formData.address && formData.address.landmark;\n params[\"pincode\"] = formData.address && formData.address.pincode;\n }\n if (formData.selectedAddressId && formData.type === \"DELIVERY\") {\n params[\"addressId\"] = formData.selectedAddressId;\n }\n this.orderCreate(formData, params, cart);\n }\n\n addNewAddress(text, response) {\n this.closeAddressModal();\n let values = { ...this.state.values };\n if (response.addresses) {\n values.customerDetails = response;\n this.setState({\n values,\n });\n this.props.addAddressInCustomerDetails(response.addresses[0], response);\n } else {\n values.selectedAddressId = response.id;\n this.setState({\n values,\n });\n this.props.addAddressInCustomerDetails(response);\n }\n }\n\n async deliveryApi() {\n let values = JSON.parse(JSON.stringify(this.state.values));\n values[\"name\"] = this.props.customerDetails\n ? this.props.customerDetails.name\n : null;\n values[\"email\"] =\n this.props.customerDetails &&\n this.props.customerDetails.emails?.length > 0\n ? this.props.customerDetails.emails?.[0].email\n : null;\n values[\"phone\"] = this.props.phoneNumber || null;\n\n await this.promisifySetState({ values: values });\n\n if (\n !values.selectedAddressId &&\n this.props.customerDetails &&\n this.props.customerDetails.addresses &&\n this.props.customerDetails.addresses.length > 0\n ) {\n values[\"selectedAddressId\"] = this.props.customerDetails.addresses[0].id;\n }\n\n const customerAddress =\n this.props.customerDetails &&\n this.props.customerDetails.addresses &&\n this.props.customerDetails.addresses.length > 0\n ? {\n address: this.props.customerDetails.addresses[0].address,\n landmark: this.props.customerDetails.addresses[0].landmark,\n city: this.props.customerDetails.addresses[0].city,\n pincode: this.props.customerDetails.addresses[0].pincode,\n }\n : { address: null, landmark: null, city: null, pincode: null };\n if (\n this.props.customerDetails &&\n this.props.customerDetails.addresses &&\n this.props.customerDetails.addresses.length > 0 &&\n isExtensionEnabled(\"DeliverySlots\")\n ) {\n const api = new API({ url: \"/order-service/slot-availability\" });\n const addressId =\n this.state.values.selectedAddressId ||\n this.props.customerDetails.addresses[0].id;\n let params = this.getAddressParams(\n addressId,\n this.props.customerDetails,\n this.props.storeId\n );\n await api\n .get(params)\n .then((response) => {\n let transformedResponse = sortSlotsAvailability(response.data.slots);\n let slots = {};\n transformedResponse &&\n transformedResponse.map((slot) => {\n if (!slots.hasOwnProperty(slot.date)) {\n slots[slot.date] = [];\n }\n slots[slot.date].push(slot);\n return null;\n });\n values[\"addressSlotMap\"][\"DELIVERY\"][addressId] = slots;\n values[\"selectedAddressId\"] = addressId;\n values[\"preferredDate\"] =\n Object.keys(slots).length > 0 ? Object.keys(slots)[0] : null;\n this.addressNotServed[addressId] = false;\n if (\n !transformedResponse ||\n Object.keys(transformedResponse).length === 0\n ) {\n this.addressNotServed[addressId] = true;\n }\n values = {\n ...values,\n ...customerAddress,\n };\n this.setState({\n values,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n async pickupLocationApi() {\n if (this.props.pickuplocations && this.props.pickuplocations.length > 0) {\n this.slotApi = new API({ url: \"/order-service/slot-availability\" });\n let params = this.getPickupParams(this.props.pickuplocationDetails[0].id);\n await this.slotApi\n .get(params)\n .then((response) => {\n let transformedResponse = sortSlotsAvailability(response.data.slots);\n let slots = {};\n transformedResponse &&\n transformedResponse.map((slot) => {\n if (!slots.hasOwnProperty(slot.date)) {\n slots[slot.date] = [];\n }\n slots[slot.date].push(slot);\n return null;\n });\n\n let values = JSON.parse(JSON.stringify(this.state.values));\n values[\"addressSlotMap\"][\"PICKUP\"][\n this.props.pickuplocations[0].value\n ] = slots;\n this.setState({\n values,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n\n async componentDidUpdate(prevProps, prevState) {\n if (prevProps.phoneNumber !== this.props.phoneNumber) {\n let values = JSON.parse(JSON.stringify(this.state.values));\n values[\"products\"] = null;\n values[\"type\"] =\n this.props.pickuplocations && this.state.pickupSupported\n ? \"PICKUP\"\n : \"DELIVERY\";\n values[\"paymentMode\"] = \"COD\";\n values[\"pickupLocationId\"] =\n this.props.pickuplocations && this.props.pickuplocations.length > 0\n ? this.props.pickuplocations[0].value\n : null;\n values[\"phone\"] = this.props.phoneNumber || null;\n values[\"name\"] = this.props.customerDetails\n ? this.props.customerDetails.name\n : null;\n if (this.props.showNewCustomerForm) {\n delete values.name;\n delete values.email;\n delete values.address;\n delete values.landmark;\n delete values.pincode;\n delete values.city;\n }\n await this.promisifySetState({ values: values });\n }\n\n if (prevProps.storeId !== this.props.storeId) {\n let values = JSON.parse(JSON.stringify(this.state.values));\n if (isExtensionEnabled(\"DeliverySlots\")) {\n values[\"addressSlotMap\"][\"DELIVERY\"] = {};\n values[\"preferredSlotId\"] = null;\n }\n if (values.type === \"DELIVERY\") {\n values.products = null;\n }\n await this.promisifySetState({ values: values });\n\n if (isExtensionEnabled(\"DeliverySlots\") && this.props.customerDetails) {\n this.deliveryApi();\n }\n }\n\n if (\n isExtensionEnabled(\"DeliverySlots\") &&\n this.props.customerDetails &&\n this.props.customerDetails !== prevProps.customerDetails\n ) {\n this.deliveryApi();\n }\n\n if (this.props.pickuplocations !== prevProps.pickuplocations) {\n let values = JSON.parse(JSON.stringify(this.state.values));\n values[\"pickupLocationId\"] = this.props.pickuplocations\n ? this.props.pickuplocations.length > 0 &&\n this.props.pickuplocations[0].value\n : null;\n\n await this.promisifySetState({ values: values });\n\n if (\n isExtensionEnabled(\"DeliverySlots\") &&\n this.state.visibleDaysForSlots\n ) {\n this.pickupLocationApi();\n }\n }\n\n if (\n this.state.visibleDaysForSlots !== prevState.visibleDaysForSlots &&\n isExtensionEnabled(\"DeliverySlots\")\n ) {\n this.pickupLocationApi();\n }\n\n if (prevProps.showNewCustomerForm !== this.props.showNewCustomerForm) {\n const validations = JSON.parse(JSON.stringify(this.state.validations));\n if (!this.props.showNewCustomerForm) {\n delete validations[\"name\"];\n this.setState({\n validations,\n });\n }\n }\n if (this.state.values.type === \"PICKUP\") {\n const validations = { ...this.state.validations };\n if (validations && validations[\"address\"]) {\n delete validations[\"address\"];\n delete validations[\"landmark\"];\n delete validations[\"pincode\"];\n delete validations[\"city\"];\n this.setState({\n validations,\n });\n }\n } else {\n let prevValues = Object.assign({}, prevState.values);\n let values = Object.assign({}, this.state.values);\n if (\n prevValues.selectedAddressId !== values.selectedAddressId &&\n values.addressSlotMap &&\n values.addressSlotMap.DELIVERY[values.selectedAddressId] &&\n values.addressSlotMap.DELIVERY[values.selectedAddressId].length < 1\n ) {\n this.addressNotServed[values.selectedAddressId] = true;\n }\n if (\n prevValues.selectedAddressId !== values.selectedAddressId &&\n values.addressSlotMap &&\n values.addressSlotMap.DELIVERY[values.selectedAddressId] &&\n (values.addressSlotMap.DELIVERY[values.selectedAddressId].length > 0 ||\n Object.keys(values.addressSlotMap.DELIVERY[values.selectedAddressId])\n .length > 0)\n ) {\n this.addressNotServed[values.selectedAddressId] = false;\n }\n }\n }\n\n async componentDidMount() {\n this.configApi = new API({ url: \"/account-service/config/order\" });\n await this.configApi\n .get()\n .then((response) => {\n const orderTypes = response.data.config.order.orderTypes;\n if (orderTypes && orderTypes.includes(\"PICKUP\")) {\n this.setState({\n pickupSupported: true,\n });\n }\n if (orderTypes && orderTypes.includes(\"DELIVERY\")) {\n this.setState({\n deliverySupported: true,\n });\n }\n })\n .catch((error) => {\n console.error(error);\n });\n\n const deliverySlotsEnabled = isExtensionEnabled(\"DeliverySlots\");\n if (deliverySlotsEnabled) {\n if (this.state.validations) {\n let validations = JSON.parse(JSON.stringify(this.state.validations));\n validations.preferredSlotId = {};\n validations.preferredSlotId.valid = false;\n this.setState({ validations });\n }\n let extId = getExtensionDetails(\"DeliverySlots\").id;\n const api = new API({ url: `/account-service/extension/${extId}` });\n await api\n .get()\n .then((response) => {\n let transformedResponse = response.data.extension.config.globalConfig;\n let values = Object.assign({}, this.state.values);\n values.addressSlotMap = {\n DELIVERY: {},\n PICKUP: {},\n };\n this.setState({\n visibleDaysForSlots: transformedResponse.visibleDaysForSlot || 0,\n values,\n });\n })\n .catch((err) => console.error(err));\n\n if (!this.props.customerDetails) {\n const { storeId } = this.props;\n const { visibleDaysForSlots } = this.state;\n let slotApi = new API({ url: `/order-service/slot-availability` });\n let params = {};\n if (storeId) {\n params[\"storeId\"] = storeId;\n params[\"searchInterval\"] =\n moment().toISOString() +\n \"/\" +\n moment().add(visibleDaysForSlots, \"days\").toISOString();\n }\n await slotApi\n .get(params)\n .then((response) => {\n let transformedResponse = sortSlotsAvailability(\n response.data.slots\n );\n let values = JSON.parse(JSON.stringify(this.state.values));\n let slots = {};\n transformedResponse &&\n transformedResponse.map((slot) => {\n if (!slots.hasOwnProperty(slot.date)) {\n slots[slot.date] = [];\n }\n slots[slot.date].push(slot);\n return null;\n });\n\n values.preferredDate =\n Object.keys(slots).length > 0 ? Object.keys(slots)[0] : null;\n values.preferredSlotId = null;\n let options = {};\n if (slots) {\n options = generateOptions(slots);\n }\n this.setState({\n slots,\n values,\n options,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n\n if (\n isExtensionEnabled(\"EntityMetaData\") &&\n isExtensionEnabled(\"DeliveryAreaSupport\")\n ) {\n this.addressSequenceApi = new API({\n url: \"/config-service/config/customers\",\n });\n this.addressSequenceApi\n .get()\n .then((response) => {\n this.setState({\n addressSequence: response.data.customers.addressSequence,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n\n getAddressParams(addressId, customerDetails) {\n let params = {};\n let { visibleDaysForSlots } = this.state;\n let { storeId } = this.props;\n const today = moment().toISOString();\n const endDay = moment().add(visibleDaysForSlots, \"days\").toISOString();\n params[\"startDate\"] = today;\n params[\"endDate\"] = endDay;\n params[\"orderType\"] = \"DELIVERY\";\n params[\"searchInterval\"] = params[\"startDate\"] + \"/\" + params[\"endDate\"];\n if (storeId) {\n params[\"storeId\"] = storeId;\n }\n params[\"addressId\"] = addressId;\n let customer = customerDetails || this.props.customerDetails;\n let selectedAddress = customer.addresses.filter(\n (address) => address.id === Number(addressId)\n )[0];\n params[\"address[address]\"] = selectedAddress[\"address\"];\n params[\"address[city]\"] = selectedAddress[\"city\"];\n params[\"address[landmark]\"] = selectedAddress[\"landmark\"];\n params[\"address[pincode]\"] = selectedAddress[\"pincode\"];\n params[\"address[latitude]\"] = selectedAddress[\"latitude\"];\n params[\"address[longitude]\"] = selectedAddress[\"longitude\"];\n delete params[\"startDate\"];\n delete params[\"endDate\"];\n return params;\n }\n\n getPickupParams(pickupLocationId) {\n let params = {};\n let { visibleDaysForSlots } = this.state;\n const today = moment().toISOString();\n const endDay = moment().add(visibleDaysForSlots, \"days\").toISOString();\n params[\"startDate\"] = today;\n params[\"endDate\"] = endDay;\n params[\"storeId\"] = pickupLocationId || this.props.storeId;\n params[\"searchInterval\"] = params[\"startDate\"] + \"/\" + params[\"endDate\"];\n delete params[\"startDate\"];\n delete params[\"endDate\"];\n params[\"orderType\"] = \"PICKUP\";\n return params;\n }\n\n getSlotDetails(addressId) {\n const deliverySlotsEnabled = isExtensionEnabled(\"DeliverySlots\");\n if (deliverySlotsEnabled) {\n if (\n this.state.values.addressSlotMap &&\n !this.state.values.addressSlotMap.DELIVERY[addressId]\n ) {\n const api = new API({ url: \"/order-service/slot-availability\" });\n let params = this.getAddressParams(addressId);\n api\n .get(params)\n .then(\n (response) => {\n let transformedResponse = sortSlotsAvailability(\n response.data.slots\n );\n let values = JSON.parse(JSON.stringify(this.state.values));\n let slots = {};\n transformedResponse &&\n transformedResponse.map((slot) => {\n if (!slots.hasOwnProperty(slot.date)) {\n slots[slot.date] = [];\n }\n slots[slot.date].push(slot);\n return null;\n });\n values.addressSlotMap.DELIVERY[addressId] = slots;\n this.addressNotServed[addressId] = false;\n if (\n !transformedResponse ||\n Object.keys(transformedResponse).length === 0\n ) {\n this.addressNotServed[addressId] = true;\n }\n\n this.setState({\n values,\n });\n },\n (error) => {\n this.setState({\n formError: error,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n }\n let values = Object.assign({}, this.state.values);\n values.selectedAddressId = addressId;\n values.preferredSlotId = null;\n this.setState({\n values,\n });\n }\n\n async getPickupSlotDetails(pickupLocationId) {\n const values = Object.assign({}, this.state.values);\n values.pickupLocationId = pickupLocationId;\n values.preferredSlotId = null;\n values.products = null;\n\n await this.promisifySetState({ values: values });\n\n let deliverySlotsEnabled = isExtensionEnabled(\"DeliverySlots\");\n if (deliverySlotsEnabled) {\n if (\n this.state.values.addressSlotMap &&\n !this.state.values.addressSlotMap.PICKUP[pickupLocationId]\n ) {\n const api = new API({ url: \"/order-service/slot-availability\" });\n let params = this.getPickupParams(pickupLocationId);\n api\n .get(params)\n .then(\n (response) => {\n let transformedResponse = sortSlotsAvailability(\n response.data.slots\n );\n let values = JSON.parse(JSON.stringify(this.state.values));\n let slots = {};\n transformedResponse &&\n transformedResponse.map((slot) => {\n if (!slots.hasOwnProperty(slot.date)) {\n slots[slot.date] = [];\n }\n slots[slot.date].push(slot);\n return null;\n });\n values.addressSlotMap.PICKUP[pickupLocationId] = slots;\n let noPickupSlots = false;\n if (Object.keys(slots).length === 0) {\n noPickupSlots = true;\n }\n this.setState({\n values,\n noPickupSlots,\n });\n },\n (error) => {\n this.setState({\n formError: error,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n }\n }\n\n changeDate(date) {\n let values = JSON.parse(JSON.stringify(this.state.values));\n let validations = JSON.parse(JSON.stringify(this.state.validations));\n values.preferredDate = date;\n values.preferredSlotId = null;\n if (validations.preferredSlotId) validations.preferredSlotId.valid = false;\n this.setState({\n values,\n validations,\n preferredSlotIdError: false,\n });\n }\n\n selectSlot(slotId, slotVal, preferredDate) {\n slotVal.forEach((val) => {\n if (`${val.value}` === slotId) {\n const timeArr = val.text.split(\" \");\n if (timeArr.includes(\"Within\")) {\n let currentLocal = moment(\n localTimeToUtc(moment().local().format(\"YYYY-MM-DD HH:mm:ss\"))\n ).format(\"YYYY-MM-DD HH:mm:ss\");\n this.setState({\n preferredDate: currentLocal.split(\" \")[0].trim(),\n });\n } else {\n this.setState({\n preferredDate: moment(\n localTimeToUtc(\n moment(\n `${preferredDate} ${convertToMilitaryTime(\n timeArr[0],\n timeArr[1]\n )}`\n ).format(\"YYYY-MM-DD HH:mm:ss\")\n )\n )\n .format(\"YYYY-MM-DD, HH:mm:ss\")\n .split(\",\")[0],\n });\n }\n }\n });\n let values = JSON.parse(JSON.stringify(this.state.values));\n let validations = JSON.parse(JSON.stringify(this.state.validations));\n if (validations.preferredSlotId) validations.preferredSlotId.valid = true;\n values.preferredSlotId = slotId;\n this.setState({\n values,\n validations,\n preferredSlotIdError: false,\n });\n }\n\n beforeSubmit() {\n let values = JSON.parse(JSON.stringify(this.state.values));\n if (values.preferredSlotId === null) {\n this.setState({ preferredSlotIdError: true });\n }\n }\n\n onTypeChange(value) {\n this.updateState([\"type\"], value);\n this.setState((prevState) => {\n let newState = JSON.parse(JSON.stringify(prevState));\n newState.preferredSlotIdError = true;\n if (newState.validations.preferredSlotId)\n newState.validations.preferredSlotId.valid = false;\n newState.values.preferredSlotId = null;\n newState.values.products = null;\n return newState;\n });\n }\n getCurrStoreDetails = () => {\n const { storeId, pickuplocationDetails } = this.props;\n const currStore = pickuplocationDetails.filter(\n ({ id }) => id?.toString() === storeId?.toString()\n );\n return currStore?.[0];\n };\n getInventoryStoreId = (deliveryType) => {\n const storeDetails = this.getCurrStoreDetails();\n if (deliveryType === \"DELIVERY\") {\n if ([0, false].includes(storeDetails?.hasPicking))\n return storeDetails?.pickingStoreId;\n return this.props.storeId;\n }\n return this.state.values.pickupLocationId;\n };\n render() {\n const {\n values,\n totalAmount,\n totalDiscount,\n formError,\n showErrorDialog,\n showAddressModal,\n cashTendered,\n slots,\n pickupSupported,\n deliverySupported,\n } = this.state;\n const { pickuplocations, customerDetails, showNewCustomerForm } =\n this.props;\n const {\n products,\n name,\n phone,\n type,\n metaData,\n addressSlotMap,\n selectedAddressId,\n preferredDate,\n preferredSlotId,\n pickupLocationId,\n } = values;\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n const currency = getSession().organization.currency;\n const data = {\n amount: totalAmount,\n discount: totalDiscount,\n shipping: 0,\n };\n let orderTypeOptions = [];\n if (pickuplocations && pickupSupported) {\n orderTypeOptions.push({\n text: getMessage(\"order.form.orderType.pickup\"),\n value: \"PICKUP\",\n });\n }\n if (deliverySupported) {\n orderTypeOptions.push({\n text: getMessage(\"order.form.paymentMode.delivery\"),\n value: \"DELIVERY\",\n });\n }\n let slotError = null;\n if (\n this.state.preferredSlotIdError &&\n this.state.pressedSubmitWithCurrentData &&\n this.state.values &&\n this.state.values.preferredSlotId === null\n ) {\n slotError = (\n <span className=\"preffered-slot-error\">\n {getMessage(\"order.form.slots.error.message\")}\n </span>\n );\n }\n\n return (\n <div>\n <Dialog\n show={showErrorDialog}\n information={formError}\n close={this.closeErrorDialog}\n closeText={getMessage(\"order.form.save.error.closeText\")}\n />\n {showAddressModal && customerDetails && (\n <Popup\n heading={getMessage(\"customer.details.address.addAddress\")}\n show={showAddressModal}\n close={this.closeAddressModal}\n >\n <AddAddressForm\n customerId={customerDetails && customerDetails.id}\n customerDetails={this.state.values}\n onSuccess={this.addNewAddress}\n sequence={this.state.addressSequence}\n />\n </Popup>\n )}\n <Form className=\"order-add-form\">\n {showNewCustomerForm && (\n <div>\n <div className=\"customer-details-wrapper\">\n <div className=\"flex\">\n <Input\n label={getMessage(\"order.form.customer.name.heading\")}\n placeholder={getMessage(\n \"order.form.customer.name.placeholder\"\n )}\n className=\"customer-name\"\n name=\"name\"\n type=\"text\"\n required\n {...this.generateStateMappers({\n stateKeys: [\"name\"],\n loseEmphasisOnFill: true,\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n />\n <Input\n label={getMessage(\"order.form.customer.email.heading\")}\n placeholder={getMessage(\n \"order.form.customer.email.placeholder\"\n )}\n className=\"customer-email\"\n name=\"email\"\n type=\"email\"\n {...this.generateStateMappers({\n stateKeys: [\"email\"],\n loseEmphasisOnFill: true,\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n />\n </div>\n </div>\n </div>\n )}\n {name && phone && (\n <div>\n <div\n className={\n type === \"DELIVERY\" ? \"flex order-type-delivery\" : \"\"\n }\n >\n <Radio\n className=\"order-type\"\n label={getMessage(\"order.form.orderType.heading\")}\n name=\"type\"\n options={orderTypeOptions}\n {...this.generateStateMappers({\n stateKeys: [\"type\"],\n loseEmphasisOnFill: true,\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n onChange={this.onTypeChange}\n value={this.getState([\"type\"])}\n />\n {type === \"DELIVERY\" &&\n (!customerDetails ? (\n <React.Fragment>\n <div className=\"address-details-wrapper\">\n <AddAddressForm _this={this} />\n </div>\n {isExtensionEnabled(\"DeliverySlots\") &&\n Object.keys(slots).length > 0 && (\n <div className=\"date-details\">\n <Radio\n className=\"date-list\"\n label={getMessage(\"order.form.date.heading\")}\n name=\"preferredDate\"\n options={generateOptions(slots, \"date-list\")}\n value={preferredDate}\n onChange={(e) => this.changeDate(e)}\n />\n <Radio\n label={getMessage(\"order.form.slot.heading\")}\n className=\"slot-list\"\n name=\"preferredSlotId-delivery\"\n options={\n generateOptions(slots, \"slot-list\")[\n preferredDate\n ]\n }\n value={preferredSlotId}\n onChange={(e) =>\n this.selectSlot(\n e,\n generateOptions(slots, \"slot-list\")[\n preferredDate\n ],\n preferredDate\n )\n }\n required\n />\n {slotError}\n </div>\n )}\n </React.Fragment>\n ) : customerDetails &&\n customerDetails.addresses &&\n customerDetails.addresses.length > 0 ? (\n <div>\n <Radio\n className=\"address-card-list\"\n label={getMessage(\"order.form.deliveryArea.heading\")}\n name=\"selectedAddressId\"\n options={customerDetails.addresses.map((address) => {\n return {\n text: `${getDisplayAddress(\n address,\n this.state.addressSequence\n )}`,\n value: address.id,\n };\n })}\n value={this.state.values.selectedAddressId}\n onChange={(e) => this.getSlotDetails(e)}\n secondaryLabel={() => (\n <div\n className=\"new-address-button\"\n onClick={this.showAddressModal}\n >\n <img src={AddIcon} width=\"11\" height=\"11\" alt=\"\" />\n {getMessage(\"order.form.addAddress.heading\")}\n </div>\n )}\n />\n {addressSlotMap &&\n addressSlotMap.DELIVERY[selectedAddressId] &&\n Object.keys(addressSlotMap.DELIVERY[selectedAddressId])\n .length > 0 && (\n <React.Fragment>\n <Radio\n className=\"date-list\"\n label={getMessage(\"order.form.date.heading\")}\n name=\"preferredDate\"\n options={generateOptions(\n addressSlotMap.DELIVERY[selectedAddressId],\n \"date-list\"\n )}\n value={preferredDate}\n onChange={(e) => this.changeDate(e)}\n />\n {preferredDate &&\n Array.isArray(\n addressSlotMap.DELIVERY[selectedAddressId][\n preferredDate\n ]\n ) && (\n <Radio\n label={getMessage(\"order.form.slot.heading\")}\n className=\"slot-list\"\n name=\"preferredSlotId\"\n options={\n generateOptions(\n addressSlotMap.DELIVERY[\n selectedAddressId\n ],\n \"slot-list\"\n )[preferredDate] || []\n }\n value={preferredSlotId}\n onChange={(e) =>\n this.selectSlot(\n e,\n generateOptions(\n addressSlotMap.DELIVERY[\n selectedAddressId\n ],\n \"slot-list\"\n )[preferredDate],\n preferredDate\n )\n }\n required\n />\n )}\n {slotError}\n </React.Fragment>\n )}\n </div>\n ) : (\n <div className=\"address-details-wrapper no-address\">\n <div\n className=\"new-address-button no-address\"\n onClick={this.showAddressModal}\n >\n <img src={AddIcon} width=\"11\" height=\"11\" alt=\"\" />\n {getMessage(\"order.form.addAddress.heading\")}\n </div>\n </div>\n ))}\n </div>\n {type === \"PICKUP\" &&\n pickupSupported &&\n pickuplocations &&\n pickuplocations.length > 0 && (\n <React.Fragment>\n <Radio\n className=\"order-pickup-location\"\n label={getMessage(\"order.form.pickupLocation.heading\")}\n name=\"pickupLocations\"\n options={pickuplocations}\n value={this.state.values.pickupLocationId}\n onChange={(e) => {\n this.getPickupSlotDetails(e);\n }}\n // {...this.generateStateMappers({\n // stateKeys: ['pickupLocationId'],\n // loseEmphasisOnFill: true\n // })}\n />\n {addressSlotMap &&\n addressSlotMap.PICKUP[pickupLocationId] &&\n Object.keys(addressSlotMap.PICKUP[pickupLocationId])\n .length > 0 && (\n <React.Fragment>\n <Radio\n className=\"date-list\"\n label={getMessage(\"order.form.date.heading\")}\n name=\"preferredDate\"\n options={generateOptions(\n addressSlotMap.PICKUP[pickupLocationId],\n \"date-list\"\n )}\n value={preferredDate}\n onChange={(e) => this.changeDate(e)}\n />\n {preferredDate &&\n Array.isArray(\n addressSlotMap.PICKUP[pickupLocationId][\n preferredDate\n ]\n ) && (\n <Radio\n label={getMessage(\"order.form.slot.heading\")}\n className=\"slot-list\"\n name=\"preferredSlotId\"\n options={\n generateOptions(\n addressSlotMap.PICKUP[pickupLocationId],\n \"slot-list\"\n )[preferredDate] || []\n }\n value={preferredSlotId}\n onChange={(e) =>\n this.selectSlot(\n e,\n generateOptions(\n addressSlotMap.PICKUP[pickupLocationId],\n \"slot-list\"\n )[preferredDate],\n preferredDate\n )\n }\n required\n />\n )}\n {slotError}\n </React.Fragment>\n )}\n </React.Fragment>\n )}\n {isExtensionEnabled(\"DeliverySlots\") &&\n this.state.values.type === \"DELIVERY\" &&\n this.addressNotServed[selectedAddressId] && (\n <div className=\"form-error\">\n {getMessage(\"order.form.addressnotserved\")}\n </div>\n )}\n <div className=\"product-search\">\n <ProductSearch\n label=\"Product\"\n name=\"order-search\"\n includeInventory\n storeId={this.getInventoryStoreId(type)}\n onChange={this.addProductToList}\n />\n </div>\n <ProductsTable\n store={this.store}\n productsList={products}\n updateQuantity={this.updateQuantity}\n removeProduct={this.removeProduct}\n currency={currency}\n />\n </div>\n )}\n {products && (\n <div className=\"flex payment-options\">\n <div className=\"details-wrapper\">\n <Radio\n className=\"payment-mode\"\n label={getMessage(\"order.form.paymentMode.heading\")}\n name=\"paymentMode\"\n options={[\n {\n text: getMessage(\"order.form.paymentMode.online\"),\n value: \"ONLINE\",\n },\n {\n text: getMessage(\"order.form.paymentMode.cash\"),\n value: \"COD\",\n },\n ]}\n {...this.generateStateMappers({\n stateKeys: [\"paymentMode\"],\n loseEmphasisOnFill: true,\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n />\n </div>\n <div className=\"invoice-button-wrapper\">\n <InvoiceSummary data={data} currency={currency} />\n <div className=\"cash-tendered flex-around\">\n <div className=\"text-muted cash-tendered-text\">{`${getMessage(\n \"order.form.cash.tendered\"\n )} (${currency.symbol})`}</div>\n <input\n className=\"cash-tendered-input\"\n type=\"number\"\n value={cashTendered}\n onChange={this.updateCashTendered}\n />\n </div>\n {cashTendered > totalAmount && (\n <div className=\"balance-amount-holder flex-around\">\n <div className=\"text-muted\">\n {getMessage(\"order.form.balanceAmount\")}\n </div>\n <div>\n <span>{currency.symbol}</span>\n <span className=\"balance-amount\">\n {(cashTendered - totalAmount).toFixed(2)}\n </span>\n </div>\n </div>\n )}\n </div>\n </div>\n )}\n <div className=\"actions-with-meta-data\">\n {isEntityMetaDataEnabled && name && phone && (\n <div className=\"entity-meta-data\">\n <div className=\"action-with-meta-data\">\n <MetaDataForm\n metaData={metaData}\n onChange={this.updateMetaData}\n initializeMetaData={this.initializeMetaData}\n />\n </div>\n </div>\n )}\n {products && (\n <div className=\"button-wrapper\">\n <button\n className=\"button button-white\"\n type=\"button\"\n onClick={this.goBack}\n >\n {getMessage(\"order.form.cancel.text\")}\n </button>\n <SubmitButton\n disabled={\n this.state.submitting ||\n (this.state.values.type === \"DELIVERY\" &&\n this.addressNotServed[selectedAddressId])\n }\n >\n {getMessage(\"order.form.submit.text\")}\n </SubmitButton>\n </div>\n )}\n </div>\n </Form>\n </div>\n );\n }\n}\n\nexport default withRouter(OrderAddForm);\n\nexport { formatOrderDetails };\n","import React from \"react\";\nimport {\n BaseForm,\n VALIDATION_TYPES,\n Phone,\n} from \"../../../../../components/Form\";\nimport API from \"../../../../../lib/api\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport \"./style.css\";\nimport Loader from \"../../../../../components/Loader\";\n\nexport default class PhoneNumberForm extends BaseForm {\n onSubmit(formData) {\n const api = new API({ url: \"/customer-service/customer\" });\n api\n .get(formData, { \"X-API-VERSION\": 2 })\n .then(\n (response) => {\n let customerDetails = null;\n if (response.data.count > 0) {\n customerDetails = response.data.customer[0];\n this.customerDetailsApi = new API({\n url: `/customer-service/customer/${customerDetails.id}`,\n });\n this.customerDetailsApi\n .get(\"\", { \"X-API-VERSION\": 2 })\n .then((response) => {\n this.props.setCustomerDetails(\n response.data.customer,\n formData[\"phone\"]\n );\n })\n .catch((error) => {\n console.error(error);\n });\n } else {\n this.props.setCustomerDetails(customerDetails, formData[\"phone\"]);\n }\n },\n (error) => {\n if (error.code === 401) {\n throw error;\n }\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n componentDidMount() {\n this.setState({\n loading: true,\n });\n const api = new API({ url: \"/account-service/country\" });\n api\n .get()\n .then((response) => {\n let country = response.data.country.isoCode;\n this.setState({\n loading: false,\n countryCode: country,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n render() {\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n return this.state.loading ? (\n <Loader />\n ) : (\n <Form className=\"phone-form\">\n <div className=\"flex phone-wrapper\">\n <Phone\n country={this.state.countryCode}\n label={getMessage(\"order.form.customer.phone.heading\")}\n placeholder={getMessage(\"order.form.customer.phone.placeholder\")}\n name=\"phone\"\n className=\"phone-number\"\n type=\"text\"\n required\n {...this.generateStateMappers({\n stateKeys: [\"phone\"],\n loseEmphasisOnFill: true,\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n />\n <SubmitButton>{getMessage(\"order.form.search.text\")}</SubmitButton>\n </div>\n </Form>\n );\n }\n}\n","import React, { Component } from \"react\";\nimport \"./style.css\";\nimport AuthenticatedPage from \"../../../../containers/AuthenticatedPage\";\nimport OrderAddForm from \"./Form\";\nimport PhoneNumberForm from \"./PhoneNumberForm\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport StoreSelector, {\n makestoreDependentComponent,\n getDefaultStore,\n} from \"../../../../containers/StoreSelector\";\nimport { get } from \"../../../../lib/storage\";\nimport { isExtensionEnabled, getStores } from \"../../../../lib/auth\";\n\nfunction CustomerCard(props) {\n const { customerDetails } = props;\n let styles = {};\n if (customerDetails.image) {\n styles = {\n backgroundImage: `url(${customerDetails.image})`,\n backgroundSize: \"32px\",\n };\n }\n\n return (\n <div className=\"flex customer-details-card\">\n {customerDetails.image && <div style={styles} className=\"user-image\" />}\n <div>\n <div className=\"customer-details-name\">{customerDetails.name} </div>\n <div className=\"detail\">\n {customerDetails.emails?.length > 0 && (\n <div>{customerDetails.emails?.[0].email}</div>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nclass CreateOrder extends Component {\n constructor(props) {\n super(props);\n this.state = {\n customerDetails: null,\n showNewCustomerForm: false,\n pickuplocations: null,\n phoneNumber: null,\n storeId: get(\"store\") || getDefaultStore(props.stores).storeId,\n showStoreSelctor: false,\n };\n this.setCustomerDetails = this.setCustomerDetails.bind(this);\n this.addAddressInCustomerDetails =\n this.addAddressInCustomerDetails.bind(this);\n this.updateStoreId = this.updateStoreId.bind(this);\n }\n\n setCustomerDetails(customerDetails, phoneNumber) {\n this.setState({\n customerDetails,\n showNewCustomerForm: !customerDetails,\n phoneNumber,\n });\n }\n\n addAddressInCustomerDetails(address) {\n let newCustomerDetails = JSON.parse(\n JSON.stringify(this.state.customerDetails)\n ); // TODO : Use Immutable here\n if (\n !newCustomerDetails.addresses ||\n newCustomerDetails.addresses.length === 0\n ) {\n newCustomerDetails.addresses = [];\n }\n newCustomerDetails.addresses.push(address);\n this.setState({\n customerDetails: newCustomerDetails,\n });\n }\n\n componentDidMount() {\n this.setState({\n showStoreSelctor: true,\n });\n const locations = getStores();\n if (locations?.length > 0) {\n const pickuplocations = locations\n .filter((store) => store.hasClickCollect)\n .reduce((acc, location) => {\n acc.push({ value: location.id, text: location.name });\n return acc;\n }, []);\n this.setState({\n pickuplocations,\n pickuplocationDetails: locations,\n });\n }\n }\n\n updateStoreId(storeId) {\n this.setState({\n storeId,\n });\n }\n\n render() {\n const {\n customerDetails,\n showNewCustomerForm,\n pickuplocations,\n phoneNumber,\n storeId,\n showStoreSelctor,\n } = this.state;\n const { stores } = this.props;\n return (\n <div>\n <div className=\"header-container flex\">\n <h1 className=\"title\">{getMessage(\"order.form.add.heading\")}</h1>\n <div className=\"pos-store-selector\">\n {showStoreSelctor && isExtensionEnabled(\"MultiStoreSupport\") && (\n <StoreSelector\n value={storeId}\n stores={stores}\n onChange={this.updateStoreId}\n />\n )}\n </div>\n </div>\n <div className=\"phone-customer-card\">\n <PhoneNumberForm setCustomerDetails={this.setCustomerDetails} />\n {customerDetails && (\n <CustomerCard customerDetails={customerDetails} />\n )}\n </div>\n <OrderAddForm\n addAddressInCustomerDetails={this.addAddressInCustomerDetails}\n phoneNumber={phoneNumber}\n pickuplocations={pickuplocations}\n customerDetails={customerDetails}\n showNewCustomerForm={showNewCustomerForm}\n storeId={storeId}\n pickuplocationDetails={this.state.pickuplocationDetails}\n />\n </div>\n );\n }\n}\n\nconst StoreDependentOrders = makestoreDependentComponent(CreateOrder);\n\nconst CreateOrderWrapper = (props) => {\n return (\n <AuthenticatedPage className=\"create-order\" menu={props.menu}>\n <StoreDependentOrders {...props} />\n </AuthenticatedPage>\n );\n};\n\nexport default CreateOrderWrapper;\n","import React, { Component } from \"react\";\nimport { InfoWindow, Marker } from \"../GoogleMaps\";\n\nexport default class MarkerWithInfo extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isOpen: props.infoOpen || false,\n };\n this.closeInfoWindow = this.closeInfoWindow.bind(this);\n this.openInfoWindow = this.openInfoWindow.bind(this);\n this.handlePincodeClick = this.handlePincodeClick.bind(this);\n }\n\n closeInfoWindow() {\n this.setState({\n isOpen: false,\n });\n }\n\n openInfoWindow() {\n this.setState({\n isOpen: true,\n });\n if (this.props.onMarkerClick && !this.props.location.label?.location) {\n this.props.onMarkerClick();\n }\n }\n\n handlePincodeClick(groupId) {\n this.props.handlePincodeEdit(groupId);\n }\n render() {\n const { location, MarkerIcon } = this.props;\n return (\n <Marker\n icon={MarkerIcon}\n position={location.location}\n onClick={this.openInfoWindow}\n >\n {this.state.isOpen && location.label && (\n <InfoWindow onCloseClick={this.closeInfoWindow}>\n <div>\n <strong>{location?.label?.location}</strong>\n {\", \"}\n <strong>{location?.label?.time}</strong>\n </div>\n </InfoWindow>\n )}\n </Marker>\n );\n }\n}\n","import React from \"react\";\nimport API from \"../../lib/api\";\nimport GoogleMaps, {\n Polyline,\n Marker,\n MarkerWithLabel,\n // DirectionsRenderer,\n} from \"../GoogleMaps\";\nimport Loader from \"../Loader\";\nimport {\n getPrintableTime,\n utcToLocalTime,\n getStandradDateTime,\n} from \"../../lib/datetime\";\nimport MarkerIcon from \"./map-marker.svg\";\nimport StoreMarker from \"./store-marker.svg\";\nimport VehicleMarker from \"./vehicle-marker.svg\";\nimport { GOOGLE_MAP_DEFAULT_KEY } from \"../../config/app\";\nimport { get } from \"../../lib/storage\";\nimport MarkerWithInfo from \"./MarkerWithInfo\";\nimport \"./style.css\";\n\nconst lineSymbol = {\n path: \"M12 2L4.5 20.29l.71.71L12 18l6.79 3 .71-.71z\",\n fillColor: \"#0000FF\",\n fillOpacity: 0.6,\n strokeWeight: 1,\n scale: 1,\n};\n\nconst markerLabelStyle = {\n fontSize: \"14px\",\n fontWeight: \"bold\",\n color: \"#000\",\n backgroundColor: \"#F8D168\",\n padding: \"5px\",\n borderRadius: \"4px\",\n};\n\nclass MapWithPath extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n location: [],\n // vehicleRoute: null,\n addresses: this.getAddressString(),\n };\n this.mapMounted = this.mapMounted.bind(this);\n this.getCenter = this.getCenter.bind(this);\n this.getAddressString = this.getAddressString.bind(this);\n this.getMarkers = this.getMarkers.bind(this);\n this.getPath = this.getPath.bind(this);\n }\n\n getLocationParams() {\n let { vehiclePath } = this.props;\n let deliveryLocations = vehiclePath\n ?.map(\n (location) =>\n location.latitude &&\n location.longitude &&\n `&point=${location.latitude},${location.longitude}`\n )\n .filter(Boolean);\n return deliveryLocations;\n }\n\n getAddressString() {\n let { coordinates, vehiclePath } = this.props;\n let deliveryLocations = !vehiclePath\n ? coordinates &&\n coordinates\n .map(\n (location) =>\n location.latitude &&\n location.longitude &&\n `&point=${location.latitude},${location.longitude}`\n )\n .filter(Boolean)\n : vehiclePath\n .map(\n (location) =>\n location.latitude &&\n location.longitude &&\n `&point=${location.latitude},${location.longitude}`\n )\n .filter(Boolean);\n return deliveryLocations;\n }\n\n getMarkers() {\n let { coordinates } = this.props;\n let locationMarkers =\n coordinates.length &&\n coordinates.map((location) => {\n if (!location.latitude || !location.longitude) {\n return null;\n }\n return {\n lat: parseFloat(location.latitude),\n lng: parseFloat(location.longitude),\n };\n });\n return locationMarkers ? locationMarkers.filter(Boolean) : [];\n }\n\n mapMounted(ref) {\n this.setState({ map: ref });\n }\n\n getCenter() {\n if (this.state.markers) {\n let locations = JSON.parse(JSON.stringify(this.state.markers));\n if (this.props.showStore) {\n locations.push({\n lat:\n this.props.showStore.latitude &&\n parseFloat(this.props.showStore.latitude),\n lng:\n this.props.showStore.longitude &&\n parseFloat(this.props.showStore.longitude),\n });\n }\n if (this.props.showVehicle) {\n locations.push({\n lat:\n this.props.showVehicle.latitude &&\n parseFloat(this.props.showVehicle.latitude),\n lng:\n this.props.showVehicle.longitude &&\n parseFloat(this.props.showVehicle.longitude),\n });\n }\n if (this.state.points) {\n locations = locations?.concat(this.state.points);\n }\n const points = locations;\n if (points && points.length > 0 && window.google) {\n let bounds = new window.google.maps.LatLngBounds();\n for (let i = 0; i < points.length; i++) {\n bounds.extend(points[i]);\n }\n this.state.map && this.state.map.fitBounds(bounds);\n return bounds.getCenter();\n }\n }\n if (\"geolocation\" in window.navigator) {\n window.navigator.geolocation.getCurrentPosition(({ coords }) => {\n return { lat: coords.latitude, lng: coords.longitude };\n });\n }\n }\n\n getPath() {\n this.getCommonMarkers(this.getMarkers());\n this.setState({ markers: this.getMarkers() });\n const api = new API({\n url:\n `${this.props.zopsmartMapUrls}/route/?points_encoded=false` +\n this.state.addresses +\n \"&locale=en-US&vehicle=car&weighting=fastest&elevation=false&layer=OpenStreetMap\",\n });\n if (this.state.addresses.length > 1 && this.props.callMaps !== false) {\n this.setState({ dataLoading: true });\n api\n .get()\n .then(\n (response) => {\n let apiPoints = response.paths[0].points.coordinates;\n let points = apiPoints.map((point) => {\n return {\n lat: point[1],\n lng: point[0],\n };\n });\n this.setState({\n points: points,\n dataLoading: false,\n });\n },\n (error) => {\n this.setState({\n error: error,\n dataLoading: false,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n } else if (!this.props.callMaps) {\n let { vehiclePath } = this.props;\n\n let points =\n vehiclePath &&\n vehiclePath?.map((point) => ({\n lat: parseFloat(point.latitude),\n lng: parseFloat(point.longitude),\n }));\n\n let vehiclePoint = null;\n let vehicleLastInfo = null;\n if (points && points.length > 0) {\n let point = points.slice(-1)[0];\n vehicleLastInfo = vehiclePath?.slice(-1)[0];\n vehiclePoint = {\n latitude: point.lat,\n longitude: point.lng,\n };\n this.getExactPathRoute(points);\n }\n this.setState({\n points: points,\n dataLoading: false,\n vehiclePoint,\n vehicleLastInfo,\n });\n }\n }\n\n compareArrays(prevProps, currentProps) {\n if (prevProps.length !== currentProps.length) {\n return false;\n } else {\n for (let i = 0; i < prevProps.length; i++) {\n if (prevProps[i] !== currentProps[i]) {\n return false;\n }\n }\n }\n return true;\n }\n\n getCommonMarkers = (markers) => {\n const commonMarkers = [];\n markers.forEach((marker, i) => {\n if (commonMarkers.length <= 0) {\n commonMarkers.push({\n lat: marker.lat,\n lng: marker.lng,\n labels: [i + 1],\n });\n } else {\n let hasCommonArea = false;\n commonMarkers.forEach((commonMarker) => {\n if (\n commonMarker.lat === marker.lat &&\n commonMarker.lng === marker.lng\n ) {\n commonMarker[\"labels\"].push(i + 1);\n hasCommonArea = true;\n }\n });\n if (!hasCommonArea)\n commonMarkers.push({\n lat: marker.lat,\n lng: marker.lng,\n labels: [i + 1],\n });\n }\n });\n this.setState({ commonMarkers: [...commonMarkers] });\n };\n\n componentDidUpdate(prevProps, prevState) {\n // If props are changed, fetch the route again\n if (\n !this.compareArrays(\n this.state.addresses,\n this.getAddressString(this.props.coordinates)\n )\n ) {\n this.setState(\n { addresses: this.getAddressString(this.props.coordinates) },\n () => {\n this.getPath();\n }\n );\n }\n }\n\n fetchLatLngLocation = (vehicleLastInfo) => {\n const lat = vehicleLastInfo?.latitude;\n const lng = vehicleLastInfo?.longitude;\n const vehicleTime = vehicleLastInfo.time\n ? getPrintableTime(\n getStandradDateTime(utcToLocalTime, vehicleLastInfo.time)\n )\n : \"\";\n\n let vehicleLocation = `Latitude: ${lat} & Longitude: ${lng} `;\n const fetchCompleteLocation = new API({\n url: `https://maps.googleapis.com/maps/api/geocode/json?latlng=${lat},${lng}&key=${\n get(\"googleMapAPIkey\") || GOOGLE_MAP_DEFAULT_KEY\n }`,\n });\n fetchCompleteLocation\n .get()\n .then((res) => {\n if (res.results?.[0]?.formatted_address)\n vehicleLocation = res.results[0]?.formatted_address;\n })\n .catch((error) => {\n console.error(error);\n })\n .finally(() => {\n this.setState({\n vehicleLastLocation: vehicleLocation,\n vehicleTime,\n });\n });\n };\n\n componentDidMount() {\n this.getPath();\n }\n\n getRealTimePolyline = (locations, resolve, reject) => {\n const api = new API({\n url:\n `${this.props.zopsmartMapUrls}/route/?points_encoded=false&` +\n `${locations}&locale=en-US&vehicle=car&weighting=fastest&elevation=false&layer=OpenStreetMap`,\n });\n\n api\n .get()\n .then((response) => {\n let apiPoints = response.paths?.[0].points.coordinates;\n let points = apiPoints?.map((point) => {\n return {\n lat: point[1],\n lng: point[0],\n };\n });\n resolve(points);\n })\n .catch((error) => {\n reject(`Directions service failed due to ${error}`);\n console.error(error);\n });\n };\n\n getLocations = (vehiclePath) => {\n let deliveryLocations = vehiclePath\n ?.map(\n (location) =>\n location.latitude &&\n location.longitude &&\n `&point=${location.latitude},${location.longitude}`\n )\n .filter(Boolean);\n return deliveryLocations;\n };\n\n getExactPathRoute = () => {\n let { vehiclePath } = this.props;\n const arrayChunk = (vehicleLocations = [], chunkSize) => {\n const chunkedArray = [];\n for (let i = 0; i < vehicleLocations?.length; i += chunkSize) {\n chunkedArray.push(vehicleLocations?.slice(i, i + chunkSize));\n }\n return chunkedArray;\n };\n const batchSize = 250; // Map service supports max 250 points only\n const locationsBatches = arrayChunk(vehiclePath, batchSize);\n\n const getRoutesForPoints = (paths) => {\n const locations = this.getLocations(paths);\n return new Promise((resolve, reject) => {\n this.getRealTimePolyline(locations, resolve, reject);\n });\n };\n\n const batchPromises = () => {\n const routes = [];\n locationsBatches.forEach((batch) => {\n routes.push(getRoutesForPoints(batch));\n });\n return routes;\n };\n\n Promise.all(batchPromises())\n .then((routes) => {\n this.setState({\n vehicleRoute: routes,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n };\n\n render() {\n let vehiclePoint = this.props.showVehicle || this.state.vehiclePoint;\n const { vehicleTime, vehicleLastLocation, vehicleLastInfo } = this.state;\n const vehicleRoute = this.state.vehicleRoute;\n const { showRealRoutes } = this.props;\n const polylineOptions = showRealRoutes\n ? {\n fillColor: \"#42b3f5\",\n strokeWeight: 4,\n strokeColor: \"#42b3f5\",\n geodesic: true, // Make the Polyline follow the curvature of the Earth\n }\n : {\n fillColor: \"#ff0000\",\n strokeWeight: 2,\n strokeColor: \"#ff0000\",\n };\n return (\n <div className=\"map-with-path\">\n <GoogleMaps\n onMapMounted={this.mapMounted}\n zoom={15}\n containerClassName=\"address-map\"\n getCenter={this.getCenter}\n >\n {this.state.dataLoading && <Loader />}\n {this.state.commonMarkers &&\n window.google &&\n this.state.commonMarkers.map((marker) => (\n <MarkerWithLabel\n key={`marker-${marker.labels}`}\n labelAnchor={new window.google.maps.Point(-6, 53)}\n position={{ lat: marker.lat, lng: marker.lng }}\n icon={MarkerIcon}\n labelStyle={markerLabelStyle}\n >\n <div className=\"marker-count\">{marker.labels.join(\", \")}</div>\n </MarkerWithLabel>\n ))}\n {this.props.showStore && (\n <Marker\n position={{\n lat:\n this.props.showStore.latitude &&\n parseFloat(this.props.showStore.latitude),\n lng:\n this.props.showStore.longitude &&\n parseFloat(this.props.showStore.longitude),\n }}\n icon={StoreMarker}\n />\n )}\n {vehiclePoint && (\n <MarkerWithInfo\n location={{\n location: {\n lat:\n vehiclePoint.latitude && parseFloat(vehiclePoint.latitude),\n lng:\n vehiclePoint.longitude &&\n parseFloat(vehiclePoint.longitude),\n },\n label: {\n time: vehicleTime,\n location: vehicleLastLocation,\n },\n }}\n MarkerIcon={VehicleMarker}\n key={`vehicle-time-marker`}\n onMarkerClick={() => this.fetchLatLngLocation(vehicleLastInfo)}\n />\n )}\n {showRealRoutes ? (\n <>\n {vehicleRoute &&\n vehicleRoute.map((route, index) => {\n return (\n <Polyline\n key={index}\n defaultPath={this.state.points}\n path={route}\n options={{\n fillOpacity: 0.4,\n strokeOpacity: 0.8,\n editable: false,\n ...polylineOptions,\n }}\n icons={[\n {\n icon: lineSymbol,\n repeat: \"50px\",\n },\n ]}\n />\n );\n })}\n </>\n ) : (\n <>\n {this.state.points && (\n <Polyline\n defaultPath={this.state.points}\n path={this.state.points}\n options={{\n fillOpacity: 0.4,\n strokeOpacity: 0.8,\n editable: false,\n ...polylineOptions,\n }}\n icons={[\n {\n icon: lineSymbol,\n repeat: \"50px\",\n },\n ]}\n />\n )}\n </>\n )}\n </GoogleMaps>\n </div>\n );\n }\n}\n\nexport default MapWithPath;\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport Loader from \"../Loader\";\nimport MapWithPath from \"../MapWithPath\";\nimport {\n getPrintableTime,\n formatDate,\n getStandradDateTime,\n utcToLocalTime,\n} from \"../../lib/datetime\";\nimport EmptyState from \"../../components/EmptyState\";\nimport API from \"../../lib/api\";\nimport { getSession, hasPermissions, isExtensionEnabled } from \"../../lib/auth\";\nimport { getMessage } from \"../../lib/translator\";\nimport \"./style.css\";\nimport AuthenticatedPage from \"../../containers/AuthenticatedPage\";\nimport emptyIcon from \"./order-log-empty.svg\";\nimport { getAsapDuration, getDisplayAddress } from \"../../lib/commonlyused\";\n\nexport default class OrderLog extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showLoader: false,\n orderLog: [],\n };\n }\n\n componentDidMount() {\n this.setState({\n showLoader: true,\n });\n\n this.api = new API({ url: \"/order-service/order-log\" });\n let params = {};\n params.orderReferenceNumber = this.props.match.params.id;\n this.api\n .get(params)\n .then((response) => {\n let orderLog = response.data.orderlog;\n let log = orderLog.filter(\n (log) => log.action === \"ORDER_DISPATCHED\"\n )[0];\n let tripId = false;\n if (log && orderLog[0].action === \"ORDER_DISPATCHED\") {\n tripId = log.details && log.details.tripId;\n }\n this.clientId = response.data.order && response.data.order.clientId;\n if (tripId) {\n this.getTripDetails(tripId);\n }\n if (isExtensionEnabled(\"EntityMetaData\")) {\n this.addressApi = new API({\n url: \"/config-service/config/customers\",\n });\n this.addressApi.get().then((response) => {\n this.setState({\n addressSequence: response.data.customers.addressSequence,\n });\n });\n }\n this.setState({\n orderLog: response.data.orderlog,\n showLoader: false,\n tripId,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n componentWillUnmount() {\n this.api && this.api.cancel();\n this.addressApi && this.addressApi.cancel();\n }\n\n getTripDetails(id) {\n const api = new API({ url: `/logistics-service/tripLocations` });\n const tripDetailsApi = new API({ url: `/logistics-service/trip/${id}` });\n Promise.all([tripDetailsApi.get(), api.get({ tripId: id })])\n .then(([tripDetailsRes, tripLocationResponse]) => {\n let locations = tripLocationResponse.data;\n let length = locations?.length;\n let vehicleCoordinates =\n length > 0\n ? locations?.sort(\n (a, b) =>\n new Date(getPrintableTime(a.time)) -\n new Date(getPrintableTime(b.time))\n )\n : [];\n\n let tripDetails = tripDetailsRes.data.trip;\n let orders = tripDetails.orders;\n let orderLocations = orders.map(({ address }) => ({\n latitude: address.latitude,\n longitude: address.longitude,\n }));\n let storeLocation =\n orders.length > 0\n ? {\n latitude: orders[0].store.latitude,\n longitude: orders[0].store.longitude,\n }\n : null;\n this.setState({\n vehicleCoordinates,\n orderLocations,\n showMap: true,\n storeLocation,\n });\n })\n .catch((error) => {\n console.error(error);\n if (error.code === 401) {\n throw error;\n }\n });\n }\n\n render() {\n const {\n orderLog,\n showLoader,\n vehicleCoordinates,\n showMap,\n orderLocations,\n storeLocation,\n } = this.state;\n const count = orderLog && orderLog.length;\n return (\n <AuthenticatedPage menu={this.props.menu}>\n <h1>{getMessage(\"order.logs.heading\")}</h1>\n <div className=\"order-reference\">\n <h4>\n {`${getMessage(\"order.logs.orderRef\")} `}\n <span className=\"text-muted prefix\">\n {!showLoader && (this.clientId ? \"#\" : \"Z\")}\n </span>\n {!showLoader &&\n (hasPermissions(\"order\", \"order\", \"get\") ? (\n <Link to={`/operations/orders/${this.props.match.params.id}`}>\n {this.clientId || this.props.match.params.id}\n </Link>\n ) : (\n this.clientId || this.props.match.params.id\n ))}\n </h4>\n {orderLog &&\n orderLog[0] &&\n orderLog[0].details &&\n orderLog[0].details.status &&\n orderLog[0].details.status.newValue && (\n <small className=\"text-muted\">{`${getMessage(\n \"order.logs.status\"\n )}: ${\n orderLog[0].details.status.newValue &&\n orderLog[0].details.status.newValue.charAt(0) +\n orderLog[0].details.status.newValue.slice(1).toLowerCase()\n }`}</small>\n )}\n </div>\n <div className=\"order-log\">\n {showLoader ? (\n <Loader />\n ) : count > 0 ? (\n orderLog.map((entry, index) => (\n <LogItem\n data={entry}\n index={index}\n key={index}\n vehicleCoordinates={vehicleCoordinates}\n orderLocations={orderLocations}\n storeLocation={storeLocation}\n showMap={showMap}\n addressSequence={this.state.addressSequence}\n />\n ))\n ) : (\n <div>\n <EmptyState\n icon={emptyIcon}\n message={getMessage(\"order.logs.emptyMeassage\")}\n />\n </div>\n )}\n </div>\n </AuthenticatedPage>\n );\n }\n}\n\nconst LogItem = function (props) {\n const item = props.data.details || {};\n let { vehicleCoordinates, showMap, orderLocations, storeLocation } = props;\n if (!storeLocation || !(storeLocation.latitude || storeLocation.longitude)) {\n let storeId = Number(window.localStorage.getItem(\"store\"));\n storeLocation = JSON.parse(window.localStorage.getItem(\"stores\")).filter(\n (store) => store.id === storeId\n )[0];\n delete storeLocation.address;\n delete storeLocation.clientStoreId;\n delete storeLocation.id;\n delete storeLocation.name;\n }\n\n let slotTime = null;\n if (\n item.slotStartTime &&\n item.slotEndTime &&\n item.slotStartTime.oldValue &&\n item.slotEndTime.oldValue\n ) {\n slotTime = `${\n item.slotStartTime &&\n item.slotStartTime.oldValue &&\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n item.slotStartTime.oldValue\n }`\n )\n ).split(\",\")[1]\n } - ${\n item.slotEndTime.oldValue &&\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n item.slotEndTime.oldValue\n }`\n )\n ).split(\",\")[1]\n }`;\n }\n if (\n slotTime == null &&\n item.slotStartTime &&\n item.slotEndTime &&\n item.slotStartTime.newValue &&\n item.slotEndTime.newValue\n ) {\n slotTime = `${\n item.slotStartTime &&\n item.slotStartTime.newValue &&\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n item.slotStartTime.newValue\n }`\n )\n ).split(\",\")[1]\n } - ${\n item.slotEndTime.newValue &&\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n item.slotEndTime.newValue\n }`\n )\n ).split(\",\")[1]\n }`;\n }\n if (\n item.slotEndTime &&\n item.slotStartTime &&\n item.slotEndTime.oldValue &&\n item.slotStartTime.oldValue &&\n item.slotEndTime.newValue &&\n item.slotStartTime.newValue\n ) {\n slotTime = (\n <div className=\"order-slot\">\n {getMessage(\"order.log.slot.changed\")}{\" \"}\n {item.slotStartTime.oldValue && getMessage(\"order.log.from\")}\n <span className=\"bold\">\n {item.slotType && item.slotType.oldValue === \"ASAP\"\n ? getAsapDuration(\n item.slotStartTime.oldValue,\n item.slotEndTime.oldValue\n )\n : \" \" + slotTime}{\" \"}\n </span>\n {getMessage(\"order.log.to\")}{\" \"}\n <span className=\"bold\">\n {item.slotType && item.slotType.newValue === \"ASAP\"\n ? getAsapDuration(\n item.slotStartTime.newValue,\n item.slotEndTime.newValue\n )\n : `${\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n item.slotStartTime.newValue\n }`\n )\n ).split(\",\")[1]\n } - ${\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n item.slotEndTime.newValue\n }`\n )\n ).split(\",\")[1]\n }`}\n </span>\n </div>\n );\n }\n return (\n (props.data.action !== \"RECALCULATE_PAYMENT_STATUS\" ||\n (props.data.action === \"RECALCULATE_PAYMENT_STATUS\" &&\n !!Object.keys(item).length)) && (\n <div className=\"log-box\" key={`log-${props.index}`}>\n <div className=\"log-date-time\">\n <div className=\"log-date\">\n {\n getPrintableTime(\n getStandradDateTime(utcToLocalTime, props.data.createdAt)\n ).split(\",\")[0]\n }\n </div>\n <small className=\"text-muted\">\n {\n getPrintableTime(\n getStandradDateTime(utcToLocalTime, props.data.createdAt)\n ).split(\",\")[1]\n }\n </small>\n </div>\n <div className=\"log-details\">\n <div className=\"log-details-wrapper\">\n {props.data.action === \"ORDER_RETURN\" && (\n <div className=\"bold order-return\">\n {getMessage(\"order.log.return\")}\n </div>\n )}\n\n {props.data.action === \"STATUS_CHANGE\" &&\n props.data.details.status &&\n props.data.details.status.newValue === \"COMPLETED\" &&\n props.data.details.leftAtDoorStep && (\n <div className=\"bold\">\n {getMessage(\"order.log.leftAtDoorStep\")}\n </div>\n )}\n\n {props.data.action === \"CUSTOMER_NOT_AVAILABLE\" && (\n <div className=\"bold\">{getMessage(\"order.log.customerNA\")}</div>\n )}\n\n {item.status ? (\n props.data.user ? (\n <div className={`bold ${item.status.newValue}`}>\n {item.status.newValue &&\n item.status.newValue\n .toLowerCase()\n .split(\"_\")\n .map((t) => t[0].toUpperCase() + t.substr(1, t.length))\n .join(\" \")\n .toString()}\n {props.data.user.name ? (\n <span className=\"user-name\">\n <span className=\"by\">\n {\" \"}\n {getMessage(\"order.log.user\")}\n </span>{\" \"}\n {props.data.user.name}\n <br />\n {props.data.user.designation?.name}\n </span>\n ) : (\n <span className=\"user-name\">\n <span className=\"by\">\n {\" \"}\n {getMessage(\"order.log.user\")}\n </span>\n   ‒\n </span>\n )}\n </div>\n ) : (\n item.status.newValue &&\n item.status.oldValue && (\n <div className={`status-changed ${item.status.newValue}`}>\n {getMessage(\"order.log.status.changed\")}{\" \"}\n {getMessage(\"order.log.from\")}{\" \"}\n <span className=\"bold\">{` ${\n item.status.oldValue &&\n item.status.oldValue\n .toLowerCase()\n .split(\"_\")\n .map((t) => t[0].toUpperCase() + t.substr(1, t.length))\n .join(\" \")\n .toString()\n }`}</span>{\" \"}\n {getMessage(\"order.log.to\")}{\" \"}\n <span className=\"bold\">{`${\n item.status.newValue &&\n item.status.newValue\n .toLowerCase()\n .split(\"_\")\n .map((t) => t[0].toUpperCase() + t.substr(1, t.length))\n .join(\" \")\n .toString()\n }`}</span>\n </div>\n )\n )\n ) : (\n props.data.user && (\n <div className=\"bold updated-by\">\n {getMessage(\"order.log.editedBy\")}\n {props.data.user.name ? (\n <span className=\"user-name\">\n <span className=\"by\">{getMessage(\"order.log.user\")}</span>{\" \"}\n {props.data.user.name}\n </span>\n ) : (\n <span className=\"user-name\">\n <span className=\"by\">{getMessage(\"order.log.user\")}</span>\n   ‒\n </span>\n )}\n </div>\n )\n )}\n\n {item.placedFrom ? (\n <div className=\"placed-from\">\n <span className=\"bold\">\n {getMessage(\"order.log.placedfrom\")}\n </span>\n : {item.placedFrom}\n </div>\n ) : null}\n\n {item.paymentStatus && (\n <div className=\"payment-changed\">\n {getMessage(\"order.log.payment.changed\")}:{\" \"}\n {getMessage(\"order.log.from\")}{\" \"}\n <span className=\"bold\">\n {item.paymentStatus.oldValue &&\n item.paymentStatus.oldValue\n .toLowerCase()\n .split(\"_\")\n .map((t) => t[0].toUpperCase() + t.substr(1, t.length))\n .join(\" \")\n .toString()}\n </span>{\" \"}\n {getMessage(\"order.log.to\")}{\" \"}\n <span className=\"bold\">\n {item.paymentStatus.newValue\n .toLowerCase()\n .split(\"_\")\n .map((t) => t[0].toUpperCase() + t.substr(1, t.length))\n .join(\" \")\n .toString()}\n </span>\n </div>\n )}\n\n {item.address && item.address.newValue && (\n <div>\n {getMessage(\"order.log.address.changed\")}:{\" \"}\n <span className=\"bold\">{`${getDisplayAddress(\n item.address.newValue,\n props.addressSequence\n )}`}</span>\n </div>\n )}\n\n {item.preferredDate && (\n <div className=\"order-date\">\n {getMessage(\"order.log.date.changed\")}{\" \"}\n {item.preferredDate.oldValue && getMessage(\"order.log.from\")}{\" \"}\n <span className=\"bold\">\n {item.preferredDate.oldValue &&\n formatDate(item.preferredDate.oldValue)}\n </span>{\" \"}\n {getMessage(\"order.log.to\")}\n <span className=\"bold\">\n {\" \"}\n {formatDate(item.preferredDate.newValue)}\n </span>\n </div>\n )}\n\n {slotTime}\n\n {item.shipping && (\n <div>\n {getMessage(\"order.log.shipping.charges\")}:{\" \"}\n <span className=\"bold\">{item.shipping.newValue}</span>\n </div>\n )}\n\n {item.type && (\n <div style={{ textTransform: \"capitalize\" }}>\n {getMessage(\"order.log.type.changed\")}:{\" \"}\n {getMessage(\"order.log.from\")}{\" \"}\n <span className=\"bold\">\n {item.type.oldValue.name.toLowerCase()}\n </span>{\" \"}\n {getMessage(\"order.log.to\")}{\" \"}\n <span className=\"bold\">\n {item.type.newValue.name.toLowerCase()}\n </span>\n </div>\n )}\n\n {item.metaData &&\n Object.keys(item.metaData.newValue).map((metadata, i) => (\n <div\n key={`${props.index}-metadata-${i}`}\n >{`${metadata}: ${item.metaData.newValue[metadata]}`}</div>\n ))}\n\n {props.data.action === \"ORDER_DISPATCHED\" && showMap && (\n <MapWithPath\n coordinates={orderLocations}\n vehiclePath={vehicleCoordinates}\n callMaps={false}\n showStore={storeLocation}\n />\n )}\n {props.data.action === \"ORDER_DISPATCHED\" && (\n <React.Fragment>\n <div className=\"bold\">\n {getMessage(\"order.log.tripId\")}\n {hasPermissions(\"logistics\", \"trips\", \"get\") ? (\n <Link to={`/logistics/trips/${item.tripId}`}>\n #{item.tripId}\n </Link>\n ) : (\n item.tripId\n )}\n </div>\n </React.Fragment>\n )}\n\n {item.itemChanges && (\n <div>\n <Table\n data={{\n header: \"Item Changes\",\n tableData: item.itemChanges,\n properties: [\n \"itemName\",\n \"oldQuantity\",\n \"newQuantity\",\n \"orderItemId\",\n \"reason\",\n ],\n index: props.index,\n itemChanges: true,\n }}\n />\n </div>\n )}\n\n {item.amount && item.amount.oldValue && item.amount.newValue && (\n <div className=\"amount-changed\">\n {getMessage(\"order.log.amount.changed\")}:{\" \"}\n {getMessage(\"order.log.from\")}{\" \"}\n <span className=\"bold\">{` ${\n getSession().organization.currency.symbol\n }${item.amount.oldValue}`}</span>{\" \"}\n {getMessage(\"order.log.to\")}{\" \"}\n <span className=\"bold\">{`${\n getSession().organization.currency.symbol\n }${item.amount.newValue}`}</span>\n </div>\n )}\n\n {item.payment && (\n <Table\n data={{\n header: \"Payment\",\n tableData: item.payment.newValue,\n properties: [\"mode\", \"amount\", \"status\", \"transactionId\"],\n index: props.index,\n }}\n />\n )}\n {props.data.action === \"PAYMENT_INITIATION\" ? (\n <div className=\"placed-from\">\n <span className=\"bold\">\n {getMessage(\"order.log.payment.initiated\")}\n </span>\n {\" for \"}\n {getSession().organization.currency.symbol + \"\" + item.amount}\n {item.paymentService ? \" via \" + item.paymentService : \"\"}\n {item.paymentMode && (\n <span className=\"user-name\">\n <span className=\"by\"> Mode:</span> {item.paymentMode}\n </span>\n )}\n </div>\n ) : null}\n {props.data.action === \"PAYMENT_CANCELLATION\" ? (\n <div className=\"placed-from\">\n <span className=\"bold\">\n {getMessage(\"order.log.payment.cancelled\")}\n </span>\n {\" for \"}\n {getSession().organization.currency.symbol + \"\" + item.amount}\n {item.paymentMode && (\n <span className=\"user-name\">\n <span className=\"by\"> Mode:</span> {item.paymentMode}\n </span>\n )}\n </div>\n ) : null}\n {props.data.action === \"PAYMENT_COMPLETION\" ? (\n <div className=\"placed-from\">\n <span className=\"bold\">\n {getMessage(\"order.log.payment.completed\")}\n </span>\n {\" for \"}\n {getSession().organization.currency.symbol + \"\" + item.amount}\n {item.paymentMode && (\n <span className=\"user-name\">\n <span className=\"by\"> Mode:</span> {item.paymentMode}\n </span>\n )}\n </div>\n ) : null}\n {props.data.action === \"REFUND_INITIATION\" ? (\n <div className=\"placed-from\">\n <span className=\"bold\">\n {getMessage(\"order.log.refund.initiated\")}\n </span>\n {\" for \"}\n {getSession().organization.currency.symbol + \"\" + item.amount}\n {item.paymentMethod && (\n <span className=\"user-name\">\n <span className=\"by\"> Mode:</span> {item.paymentMethod}\n </span>\n )}\n </div>\n ) : null}\n </div>\n </div>\n </div>\n )\n );\n};\n\nconst Table = function (props) {\n const theadData = props.data.properties;\n const tbodyData = props.data.tableData;\n const { itemChanges } = props.data;\n return (\n <div className=\"tabular-data\">\n {props.data.header && <h4>{props.data.header}</h4>}\n <table key={`table-${props.data.index}`}>\n <thead className=\"table-header\">\n <tr>\n {theadData.map((cell, index) => (\n <th key={`th-${props.data.index}-${index}`}>\n {getMessage(`order.log.${cell}`)}\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"table-body\">\n {tbodyData.map((row, index) => (\n <tr key={`tr-${props.data.index}-${index}`}>\n {theadData.map((cell, i) => {\n if (cell === \"reason\" && row.metaData && row.metaData.reason) {\n return (\n <td key={`td-${props.data.index}-${index}-${i}`}>\n {row.metaData[cell]}\n </td>\n );\n }\n return (\n <td key={`td-${props.data.index}-${index}-${i}`}>\n {isNaN(row[cell])\n ? cell === \"status\"\n ? row[cell] &&\n row[cell].charAt(0) + row[cell].slice(1).toLowerCase()\n : row[cell]\n : row[cell] % 1 !== 0 ||\n (itemChanges && (i === 1 || i === 2))\n ? Number(row[cell]).toFixed(2)\n : row[cell]}\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n};\n","import React from \"react\";\nimport { SelectSearch, MultiSelect } from \"../Form\";\nimport { getMessage } from \"../../lib/translator\";\n\nexport default function SelectStoresSearch(props) {\n let {\n _this,\n stores,\n stateKey,\n label,\n placeholder,\n secondaryLabel,\n readOnly,\n dontDisplaySelected,\n required,\n } = props;\n let formattedStores = stores?.map((store) => {\n return {\n text: store.name,\n value: store.id,\n };\n });\n\n if (stores.length < 5) {\n return (\n <MultiSelect\n label={label || getMessage(\"shifts.stores\")}\n name=\"belongsToStores\"\n placeholder={placeholder || getMessage(\"shifts.stores.placeholder\")}\n options={formattedStores}\n {..._this.generateStateMappers({\n stateKeys: [stateKey],\n loseEmphasisOnFill: true,\n })}\n required={required}\n readOnly={readOnly}\n dontDisplaySelected={dontDisplaySelected}\n secondaryLabel={secondaryLabel}\n />\n );\n } else if (stores.length >= 5) {\n return (\n <SelectSearch\n name=\"search-store\"\n required={required}\n readOnly={readOnly}\n dontDisplaySelected={dontDisplaySelected}\n label={label || getMessage(\"shifts.stores\")}\n placeholder={placeholder || getMessage(\"shifts.stores.placeholder\")}\n multiple\n options={formattedStores}\n nameKey=\"text\"\n valueKey=\"value\"\n searchByName\n secondaryLabel={secondaryLabel}\n {..._this.generateStateMappers({\n stateKeys: [stateKey],\n loseEmphasisOnFill: true,\n })}\n onChange={(selectedValue) => {\n let values = JSON.parse(JSON.stringify(_this.state.values));\n values = {\n ...values,\n [stateKey]: selectedValue.map((el) => el.value),\n };\n _this.setState({ values });\n }}\n value={(_this.state.values[stateKey] || [])\n .map((id) => formattedStores.find((opt) => opt.value === id))\n .filter(Boolean)}\n />\n );\n }\n}\n","import React from \"react\";\nimport {\n Input,\n Select,\n BaseForm,\n Phone,\n MultiSelect,\n VALIDATION_TYPES,\n Checkbox,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport deleteIcon from \"./delete.svg\";\nimport SelectStoresSearch from \"../../../../components/SelectStoresSearch\";\n\nimport \"./style.css\";\n\nconst getTimes = () => {\n let times = [];\n for (let i = 0; i <= 23; i++) {\n if (i < 10) {\n times.push(`0${i}:00`);\n times.push(`0${i}:30`);\n } else {\n times.push(`${i}:00`);\n times.push(`${i}:30`);\n }\n }\n return times;\n};\n\nconst daysOfWeek = [\n {\n text: \"Mon\",\n value: \"Monday\",\n },\n {\n text: \"Tue\",\n value: \"Tuesday\",\n },\n {\n text: \"Wed\",\n value: \"Wednesday\",\n },\n {\n text: \"Thur\",\n value: \"Thursday\",\n },\n {\n text: \"Fri\",\n value: \"Friday\",\n },\n {\n text: \"Sat\",\n value: \"Saturday\",\n },\n {\n text: \"Sun\",\n value: \"Sunday\",\n },\n];\n\nexport default class UserShiftForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.allSelected = false;\n this.delete = this.delete.bind(this);\n this.handleSelectAll = this.handleSelectAll.bind(this);\n }\n\n handleSelectAll(value) {\n let currState = JSON.parse(JSON.stringify(this.state));\n let { values } = currState;\n if (value) {\n values.storeIds = (this.props.options.stores || []).map(\n (store) => store.id\n );\n this.props.options.stores && this.setState({ values, allSelected: true });\n } else {\n values.storeIds = [];\n this.setState({ values, allSelected: false });\n }\n }\n\n componentDidMount() {\n let { state, props } = this;\n let shiftStart, shiftEnd;\n let { values } = state;\n let newState = Object.assign({}, this.state.values);\n if (this.props && this.props.value) {\n shiftStart = this.props.value.shiftStart;\n shiftEnd = this.props.value.shiftEnd;\n }\n if (shiftStart && shiftEnd) {\n shiftStart = shiftStart.split(\":\").splice(0, 2).join(\":\");\n shiftEnd = shiftEnd.split(\":\").splice(0, 2).join(\":\");\n newState.shiftStart = shiftStart;\n newState.shiftEnd = shiftEnd;\n }\n if (values.stores && values.stores.length > 0) {\n let stores = values.stores;\n let storeIds = stores.map((store) => {\n return store.id;\n });\n newState.storeIds = storeIds;\n }\n if (values.designation && values.designation) {\n newState.designationId = values.designation.id;\n }\n this.setState(\n {\n values: newState,\n },\n () => {\n if (props.method === \"edit\") {\n let currState = JSON.parse(JSON.stringify(this.state));\n let { values } = currState;\n let { storeIds } = values;\n if (\n props.options.stores &&\n props.options.stores.every((store) =>\n (storeIds || []).find((id) => id === store.id)\n )\n ) {\n this.setState({ allSelected: true });\n }\n }\n }\n );\n this.stores =\n this.props.options.multiStoreEnabled && (this.props.options.stores || []);\n\n this.designationOptions =\n this.props.options.designations &&\n this.props.options.designations.map((designation) => ({\n text: designation.name,\n value: designation.id,\n }));\n // if (this.props.method === 'edit' && this.state.values.stores && this.state.values.stores.length > 4) {\n // this.updateState(['storeIds'], this.state.values && this.state.values.stores.map(store => (\n // {\n // text: store.name,\n // value: store.id\n // }\n // )))\n // }\n }\n\n delete() {\n this.props.onDelete();\n }\n render() {\n const { SubmitButton, CancelButton } = this.buttons;\n const designationId = this.state.values.designationId;\n const { Form } = this.components;\n const { isoCode, stores, designations } = this.props.options;\n const selectedDes =\n designations &&\n designations.filter((des) => Number(des.id) === Number(designationId))[0];\n const timingType =\n designationId &&\n designations &&\n selectedDes &&\n selectedDes.timingType === \"FIXED\";\n return (\n <div className={\"user-shifts-form\"}>\n <Form>\n <div className=\"flex\">\n <Input\n label={getMessage(\"shifts.form.name\")}\n placeholder={getMessage(\"shifts.form.name.placeholder\")}\n name=\"name\"\n required\n {...this.generateStateMappers({\n stateKeys: [\"name\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n <Phone\n label={getMessage(\"shifts.form.phone\")}\n placeholder={getMessage(\"shifts.phone.placeholder\")}\n country={isoCode}\n name=\"phone\"\n // Hack. Modify the Phone component for solving this issue\n {...this.generateStateMappers({\n stateKeys: [\"phones\", 0, \"phone\"],\n loseEmphasisOnFill: true,\n })}\n />\n </div>\n <div className=\"flex\">\n <Input\n label={getMessage(\"shifts.form.email\")}\n placeholder={getMessage(\"shifts.form.email.placeholder\")}\n required\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"emails\", 0, \"email\"],\n loseEmphasisOnFill: true,\n })}\n />\n <Select\n label={getMessage(\"shifts.designation\")}\n placeholder={getMessage(\"shifts.designation.placeholder\")}\n name=\"designation\"\n options={this.designationOptions}\n {...this.generateStateMappers({\n stateKeys: [\"designationId\"],\n loseEmphasisOnFill: true,\n })}\n />\n </div>\n {\n <React.Fragment>\n {timingType ? (\n <div className=\"shift-details\">\n <Select\n label={getMessage(\"shifts.form.startTime\")}\n name=\"shiftStart\"\n type=\"text\"\n options={getTimes()}\n {...this.generateStateMappers({\n stateKeys: [\"shiftStart\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n />\n <Select\n label={getMessage(\"shifts.form.endTime\")}\n name=\"shiftStart\"\n type=\"text\"\n options={getTimes()}\n {...this.generateStateMappers({\n stateKeys: [\"shiftEnd\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n />\n </div>\n ) : null}\n </React.Fragment>\n }\n <MultiSelect\n name=\"weeklyOff\"\n label={getMessage(\"shifts.form.weekly.off\")}\n placeholder={getMessage(\"shifts.form.weekly.off.placeholder\")}\n options={daysOfWeek}\n {...this.generateStateMappers({\n stateKeys: [\"weeklyOff\"],\n loseEmphasisOnFill: true,\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n />\n {this.stores && (\n <SelectStoresSearch\n label={getMessage(\"shifts.stores\")}\n placeholder={getMessage(\"shifts.stores.placeholder\")}\n _this={this}\n stores={stores}\n required\n stateKey=\"storeIds\"\n readOnly={this.state.allSelected}\n dontDisplaySelected={this.state.allSelected}\n secondaryLabel={() => (\n <Checkbox\n inlineLabel={getMessage(\"select all\")}\n name=\"selectAllStores\"\n value={this.state.allSelected}\n controlled\n onChange={(value) => {\n this.handleSelectAll(value);\n }}\n className=\"checkLabel\"\n />\n )}\n />\n )}\n <div className={`form-actions ${this.props.method}`}>\n {this.props.method && this.props.method === \"edit\" && (\n <button\n className=\"delete-button\"\n type=\"button\"\n onClick={this.delete}\n >\n <img src={deleteIcon} alt=\"delete\" />\n <span>{getMessage(\"brand.form.deleteText\")}</span>\n </button>\n )}\n <CancelButton>{getMessage(\"shifts.form.cancel\")}</CancelButton>\n <SubmitButton>{getMessage(\"shifts.form.submitText\")}</SubmitButton>\n </div>\n </Form>\n </div>\n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Searchable,\n Select,\n VALIDATION_TYPES,\n Input,\n} from \"../../../../components/Form\";\n\nimport { getMessage } from \"../../../../lib/translator\";\n\nexport default class UserShiftForm extends BaseForm {\n render() {\n const { SubmitButton, ClearButton } = this.buttons;\n const { Form } = this.components;\n const { stores, multiStoreEnabled } = this.props.options;\n return (\n <Form>\n <div className=\"form-fields\">\n <Searchable\n label={getMessage(\"shifts.designation\")}\n placeholder={getMessage(\"shifts.designation.placeholder\")}\n name=\"designation\"\n searchUrl=\"/account-service/designation\"\n valueKey=\"id\"\n nameKey=\"name\"\n searchKey=\"name\"\n transformResponse={(response) => response.data.designation}\n {...this.generateStateMappers({\n stateKeys: [\"designation\"],\n validationTypes: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n <Searchable\n label={getMessage(\"shifts.employee\")}\n placeholder={getMessage(\"shifts.employee.placeholder\")}\n name=\"employee\"\n searchUrl=\"/account-service/employee\"\n valueKey=\"id\"\n nameKey=\"name\"\n searchKey=\"name\"\n transformResponse={(response) => response.data.employee}\n {...this.generateStateMappers({\n stateKeys: [\"employee\"],\n loseEmphasisOnFill: true,\n })}\n />\n </div>\n <div className=\"form-fields\">\n {multiStoreEnabled && stores && (\n <Select\n label={getMessage(\"shifts.stores\")}\n placeholder={getMessage(\"shifts.stores.placeholder\")}\n name=\"store\"\n options={(stores || []).map((store) => {\n return {\n text: store.name,\n value: store.id,\n };\n })}\n {...this.generateStateMappers({\n stateKeys: [\"storeId\"],\n loseEmphasisOnFill: true,\n })}\n />\n )}\n <Input\n label={getMessage(\"shifts.enterEmployeeEmail\")}\n placeholder={getMessage(\"shifts.searchByEmail\")}\n name=\"email\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"email\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisonFill: true,\n })}\n />\n </div>\n <SubmitButton>{getMessage(\"shifts.filters.submitText\")}</SubmitButton>\n <ClearButton>\n {getMessage(\"shifts.filters.clearFiltersText\")}\n </ClearButton>\n </Form>\n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n VALIDATION_TYPES,\n} from \"../../../../../components/Form\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport API from \"../../../../../lib/api\";\nimport HidePassword from \"../../../../../components/Form/icons/HidePassword\";\nimport ShowPassword from \"../../../../../components/Form/icons/ShowPassword\";\nimport \"./style.css\";\n\nclass ResetPassword extends BaseForm {\n constructor(props) {\n super(props);\n this.state.submitting = false;\n this.state.showNewPassword = false;\n this.state.showConfirmPassword = false;\n }\n\n onSubmit(formData) {\n let data = Object.assign({}, formData);\n const { newPassword, confirmPassword } = data;\n\n // new pass and confirm pass validation\n if (newPassword !== confirmPassword) {\n this.setState({\n formError: getMessage(\"shifts.passwords.dont.match\"),\n });\n return;\n }\n\n // Clear error if passwords match\n this.setState({\n formError: null,\n submitting: true,\n });\n\n const api = new API({\n url: `/account-service/employee/${this.props.id}/password`,\n });\n api\n .put(data)\n .then((response) => this.props.onSuccess())\n .catch((error) => {\n console.error(error);\n this.setState({\n formError: error.message,\n submitting: false,\n });\n });\n }\n\n handleShowPassword = (e, key) => {\n e.preventDefault();\n this.setState((prevState) => ({\n [key]: !prevState[key],\n }));\n };\n\n render() {\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n const { showNewPassword, showConfirmPassword } = this.state;\n const NewPasswordIcon = showNewPassword ? ShowPassword : HidePassword;\n const ConfirmPasswordIcon = showConfirmPassword\n ? ShowPassword\n : HidePassword;\n\n return (\n <Form>\n {this.state.formError && (\n <div className=\"form-error\">{this.state.formError}</div>\n )}\n <div className=\"password-wrp\">\n <Input\n label={getMessage(\"shifts.newPassword\")}\n placeholder={getMessage(\"shifts.newPassword.placeholder\")}\n name=\"new-password\"\n required\n type={showNewPassword ? \"text\" : \"password\"}\n {...this.generateStateMappers({\n stateKeys: [\"newPassword\"],\n loseEmphasisOnFill: true,\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n />\n <div\n className=\"password-view\"\n onClick={(e) => this.handleShowPassword(e, \"showNewPassword\")}\n >\n <NewPasswordIcon />\n </div>\n </div>\n <div className=\"password-wrp\">\n <Input\n label={getMessage(\"shifts.confirmpassword\")}\n placeholder={getMessage(\"shifts.confirmpassword.placeholder\")}\n name=\"confirm-password\"\n required\n type={showConfirmPassword ? \"text\" : \"password\"}\n {...this.generateStateMappers({\n stateKeys: [\"confirmPassword\"],\n loseEmphasisOnFill: true,\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n />\n <div\n className=\"password-view\"\n onClick={(e) => this.handleShowPassword(e, \"showConfirmPassword\")}\n >\n <ConfirmPasswordIcon />\n </div>\n </div>\n <div className=\"form-action\">\n <SubmitButton disabled={this.state.submitting}>\n {getMessage(\"shifts.form.submitText\")}\n </SubmitButton>\n <button\n type=\"button\"\n className=\"button\"\n onClick={() => this.props.close()}\n >\n {getMessage(\"shifts.form.cancel\")}\n </button>\n </div>\n </Form>\n );\n }\n}\n\nexport default ResetPassword;\n","import React, { Component } from \"react\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport Image from \"../../../components/Image\";\nimport { Dialog, Popup } from \"../../../components/Popup\";\nimport { AttendanceButton } from \"../../operations/Pickers\";\nimport customerImagePlaceholder from \"./customer-image-placeholder.svg\";\n\nimport API from \"../../../lib/api\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { isExtensionEnabled, hasPermissions } from \"../../../lib/auth\";\nimport {\n formatTime,\n getPrintableTime,\n getStandradDateTime,\n localTimeToUtc,\n utcToLocalTime,\n} from \"../../../lib/datetime\";\n\nimport UserShiftsForm from \"./Form\";\nimport UserShiftsFilter from \"./Filters\";\nimport ResetPasswordForm from \"./Form/ResetPassword\";\n\nimport \"./style.css\";\n\nimport emptyIcon from \"./employeeEmpty.svg\";\nimport { get } from \"../../../lib/storage\";\n\nconst emptyState = {\n icon: emptyIcon,\n message: getMessage(\"shifts.empty.message\"),\n actions: ({ onAction }) => (\n <button\n className=\"primary button\"\n onClick={() => {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n + {getMessage(\"employee.add\")}\n </button>\n ),\n};\n\nconst checkIn = (id) => {\n const api = new API({ url: \"/account-service/attendance\" });\n return api\n .post({ userId: id })\n .then(\n (response) => {\n response = response.data.attendance;\n return response;\n },\n (error) => {\n if (error.code === 401) {\n throw error;\n }\n return error;\n }\n )\n .catch((error) => {\n console.error(error);\n });\n};\n\nconst checkOut = (id, userId) => {\n const api = new API({ url: `/account-service/attendance/${id}` });\n return api\n .put({ userId: userId })\n .then(\n (response) => {\n response = response.data.attendance;\n return response;\n },\n (error) => {\n if (error.code === 401) {\n throw error;\n }\n return error;\n }\n )\n .catch((error) => {\n console.error(error);\n });\n};\n\nclass TableActions extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showReset: false,\n showSuccess: false,\n };\n }\n\n render() {\n const { onAction, id, name } = this.props;\n const { showReset, showSuccess } = this.state;\n return (\n <React.Fragment>\n {showSuccess && (\n <Dialog\n className=\"success\"\n show={this.state.showSuccess}\n title={getMessage(\"shifts.reset.success.title\")}\n information={getMessage(\"shifts.reset.success.information\")}\n closeText={getMessage(\"shifts.reset\")}\n close={() => this.setState({ showSuccess: false })}\n />\n )}\n {showReset && (\n <Popup\n show={this.state.showReset}\n heading={`${getMessage(\"shifts.reset.title\")} ${name}`}\n close={() => this.setState({ showReset: false })}\n >\n <ResetPasswordForm\n id={id}\n onSuccess={() =>\n this.setState({ showReset: false, showSuccess: true })\n }\n close={() => this.setState({ showReset: false })}\n />\n </Popup>\n )}\n <DropDown icon={<img src={ICONS.VELLIP} alt=\"â‹®\" />}>\n <DropDownItem onClick={() => onAction(TABLE_ACTIONS.EDIT, { id })}>\n {getMessage(\"shifts.edit\")}\n </DropDownItem>\n <DropDownItem onClick={() => this.setState({ showReset: true })}>\n {getMessage(\"shifts.resetpassword\")}\n </DropDownItem>\n {hasPermissions(\"account\", \"employee\", \"delete\") && (\n <DropDownItem\n onClick={() => onAction(TABLE_ACTIONS.DELETE, { id })}\n >\n {getMessage(\"shifts.delete\")}\n </DropDownItem>\n )}\n </DropDown>\n </React.Fragment>\n );\n }\n}\n\nconst tableProperties = {\n headers: [\n getMessage(\"shifts.header.name\"),\n getMessage(\"shifts.header.offdaysAndStores\"),\n getMessage(\"shifts.header.timingsAndAttendance\"),\n getMessage(\"shifts.header.blankHeading\"),\n getMessage(\"shifts.header.actions\"),\n ],\n row: ({\n id,\n name,\n shiftStart,\n shiftEnd,\n imageUrl,\n weeklyOff,\n designation,\n isCheckedIn,\n attendance,\n stores,\n onAction,\n }) => (\n <Row>\n <Cell className=\"column-user-name\">\n <Image src={imageUrl || customerImagePlaceholder} size=\"sm\" />\n <div className=\"user-details\">\n <div\n className=\"user-name\"\n onClick={() => onAction(TABLE_ACTIONS.EDIT, { id })}\n >\n {name}\n </div>\n {designation && designation.name && (\n <small className=\"text-muted\">{designation.name}</small>\n )}\n </div>\n </Cell>\n <Cell className=\"user-off-days\">\n {weeklyOff && weeklyOff.length > 0 ? (\n <div className=\"weekly-off-days\">\n {weeklyOff.map((day) => `${getMessage(day)}`).join(\", \")}\n </div>\n ) : (\n <div className=\"weekly-off-days\"> -/- </div>\n )}\n {stores && stores.length > 0 ? (\n <div className=\"store-affiliation-count\">{stores.length}</div>\n ) : (\n <div className=\"store-affiliation-count\">0</div>\n )}\n </Cell>\n <Cell className=\"user-timings\">\n {designation &&\n designation.timingType === \"FIXED\" &&\n shiftStart &&\n shiftEnd ? (\n <div className=\"timings\">\n {designation &&\n designation.timingType === \"FIXED\" &&\n shiftStart &&\n shiftEnd\n ? `${formatTime(`${shiftStart}`)} - ${formatTime(shiftEnd)}`\n : \"\"}\n </div>\n ) : (\n <div className=\"timings\">-/-</div>\n )}\n {attendance && attendance.createdAt ? (\n <div className=\"attendance-timing\">\n {getPrintableTime(attendance.createdAt)}\n </div>\n ) : designation ? (\n designation.timingType !== \"FLEXI\" ? (\n <div className=\"attendance-timing\">\n {getMessage(\"attendance.label.notCheckedIn\")}\n </div>\n ) : (\n <div className=\"attendance-timing\">-/-</div>\n )\n ) : (\n <div className=\"attendance-timing\">\n {getMessage(\"attendance.label.noDesignation\")}\n </div>\n )}\n </Cell>\n <Cell className=\"user-attendance\">\n {designation && designation.timingType === \"FIXED\" ? (\n <AttendanceButton\n onAction={onAction}\n id={id}\n attendance={attendance}\n isCheckedIn={isCheckedIn}\n />\n ) : (\n \"\"\n )}\n </Cell>\n <Cell>\n <div className=\"table-actions\">\n <TableActions id={id} onAction={onAction} name={name} />\n </div>\n </Cell>\n </Row>\n ),\n};\n\nexport default class UserShifts extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showFilterAction: false,\n };\n }\n\n componentDidMount() {\n this.api = new API({ url: \"/account-service/country\" });\n this.api.get().then((response) => {\n const isoCode = response.data.country.isoCode;\n this.setState({\n isoCode: isoCode,\n });\n });\n this.designationApi = new API({ url: \"/account-service/designation\" });\n this.designationApi\n .get({ paginated: \"false\" })\n .then((response) => {\n let designations = response.data.designation;\n this.setState({\n designations,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n if (isExtensionEnabled(\"MultiStoreSupport\")) {\n this.setState({\n stores: JSON.parse(get(\"stores\")),\n });\n }\n }\n\n componentWillUnmount() {\n this.api && this.api.cancel();\n this.storesApi && this.storesApi.cancel();\n this.designationApi && this.designationApi.cancel();\n }\n render() {\n let { props } = this;\n return (\n <ListingPage\n menu={props.menu}\n modalClassName=\"shifts-form\"\n className=\"user-shifts-page\"\n addHeading={getMessage(\"employee.add\")}\n editHeading={getMessage(\"shifts.edit.heading\")}\n title={getMessage(\"shifts.heading\")}\n api={{\n url: \"/account-service/employee\",\n transform: (response) => {\n const employees = response.data.employee;\n if (Array.isArray(employees)) {\n employees.map((employee) => {\n if (employee?.attendance?.createdAt) {\n if (employee.attendance.createdAt.includes(\"T\")) {\n const newDate = employee.attendance.createdAt.split(/[TZ]/);\n employee.attendance.createdAt = `${newDate[0]} ${newDate[1]}`;\n }\n employee.attendance.createdAt = getStandradDateTime(\n utcToLocalTime,\n employee.attendance.createdAt\n );\n }\n if (employee?.shiftStart) {\n employee.shiftStart = getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n employee.shiftStart\n }`\n ).split(\" \")[1];\n }\n if (employee?.shiftEnd) {\n employee.shiftEnd = getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n employee.shiftEnd\n }`\n ).split(\" \")[1];\n }\n return employee;\n });\n } else {\n if (employees?.attendance?.createdAt) {\n if (employees.attendance.createdAt.includes(\"T\")) {\n const newDate = employees.attendance.createdAt.split(/[TZ]/);\n employees.attendance.createdAt = `${newDate[0]} ${newDate[1]}`;\n }\n employees.attendance.createdAt = getStandradDateTime(\n utcToLocalTime,\n employees.attendance.createdAt\n );\n }\n if (employees?.shiftStart) {\n employees.shiftStart = getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n employees.shiftStart\n }`\n ).split(\" \")[1];\n }\n if (employees?.shiftEnd) {\n employees.shiftEnd = getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n employees.shiftEnd\n }`\n ).split(\" \")[1];\n }\n }\n return employees;\n },\n }}\n form={{\n component: UserShiftsForm,\n allowDelete: true,\n options: {\n multiStoreEnabled: isExtensionEnabled(\"MultiStoreSupport\"),\n stores: this.state && this.state.stores,\n isoCode: this.state && this.state.isoCode,\n designations: this.state && this.state.designations,\n },\n transformSubmit: (formData) => {\n let params = Object.assign({}, formData);\n if (params.phones) {\n params.phone = params.phones[0].phone;\n delete params.phones;\n }\n if (params.emails) {\n params.email = params.emails[0].email;\n delete params.emails;\n }\n params.hasToolAccess = 1;\n if (params.designationId) {\n let selectedDesignation = this.state.designations.filter(\n (des) => Number(des.id) === Number(params.designationId)\n )[0];\n if (selectedDesignation.timingType === \"FLEXI\") {\n delete params.shiftStart;\n delete params.shiftEnd;\n } else {\n if (params?.shiftStart) {\n params.shiftStart = getStandradDateTime(\n localTimeToUtc,\n `${new Date().toISOString().split(\"T\")[0]} ${\n params.shiftStart\n }:00`\n ).split(\" \")[1];\n }\n if (params?.shiftEnd) {\n params.shiftEnd = getStandradDateTime(\n localTimeToUtc,\n `${new Date().toISOString().split(\"T\")[0]} ${\n params.shiftEnd\n }:00`\n ).split(\" \")[1];\n }\n }\n formData.designation = selectedDesignation;\n }\n return params;\n },\n transformResponse: (response) => {\n let employee = response.data.employee;\n let newEmployee = Object.assign({}, employee);\n if (newEmployee.store.length > 0) {\n newEmployee.storeIds = (newEmployee.store || []).map((store) => ({\n text: store.name,\n value: store.id,\n }));\n }\n return newEmployee;\n },\n }}\n headerActions={({ onAction }) => (\n <button\n className=\"primary button\"\n onClick={() => {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >{`+ ${getMessage(\"employee.add\")}`}</button>\n )}\n emptyState={emptyState}\n tableProperties={tableProperties}\n filters={{\n component: UserShiftsFilter,\n options: {\n multiStoreEnabled: isExtensionEnabled(\"MultiStoreSupport\"),\n stores: this.state && this.state.stores,\n },\n transformSubmit: (formData) => {\n let filters = Object.assign({}, formData);\n if (formData.designationId && !formData.designation) {\n this.props.history.push(\"/hr/employees\");\n }\n if (formData.designation) {\n filters.designationId = formData.designation.id;\n delete filters.designation;\n }\n if (formData.employee) {\n filters.name = formData.employee.name;\n delete filters.employee;\n }\n return filters;\n },\n }}\n />\n );\n }\n}\n\nexport { checkIn, checkOut };\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Phone,\n CheckboxGroup,\n Select,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { getDaysOfWeek } from \"../../../../lib/datetime\";\n\nconst getTimes = () => {\n let times = [];\n for (let i = 0; i <= 23; i++) {\n if (i < 10) {\n times.push(`0${i}:00`);\n times.push(`0${i}:30`);\n } else {\n times.push(`${i}:00`);\n times.push(`${i}:30`);\n }\n }\n return times;\n};\n\nclass PickerForm extends BaseForm {\n componentDidMount() {\n let values = Object.assign({}, this.state.values);\n if (values.shiftStart) {\n values.shiftStart = values.shiftStart.split(\":\").slice(0, 2).join(\":\");\n }\n if (values.shiftEnd) {\n values.shiftEnd = values.shiftEnd.split(\":\").slice(0, 2).join(\":\");\n }\n this.setState({\n values,\n });\n }\n render() {\n const { Form } = this.components;\n const { SubmitButton, CancelButton } = this.buttons;\n return (\n <Form>\n <div className=\"form-fields\">\n <Input\n type=\"text\"\n name=\"name\"\n required\n label={getMessage(\"picker.name\")}\n {...this.generateStateMappers({\n stateKeys: [\"name\"],\n loseEmphasisOnFill: true,\n })}\n readOnly\n />\n <Phone\n label={getMessage(\"picker.phone\")}\n name=\"phone\"\n {...this.generateStateMappers({\n stateKeys: [\"phones\", 0, \"phone\"],\n loseEmphasisOnFill: true,\n })}\n readOnly\n />\n </div>\n <CheckboxGroup\n label={getMessage(\"picker.weeklyOff\")}\n options={getDaysOfWeek({})}\n {...this.generateStateMappers({\n stateKeys: [\"weeklyOff\"],\n loseEmphasisOnFill: true,\n })}\n />\n <div className=\"form-fields\">\n <Select\n label={getMessage(\"shifts.form.startTime\")}\n name=\"shiftStart\"\n type=\"text\"\n options={getTimes()}\n {...this.generateStateMappers({\n stateKeys: [\"shiftStart\"],\n })}\n required\n />\n <Select\n label={getMessage(\"shifts.form.endTime\")}\n name=\"shiftStart\"\n type=\"text\"\n options={getTimes()}\n {...this.generateStateMappers({\n stateKeys: [\"shiftEnd\"],\n })}\n required\n />\n </div>\n <div className=\"form-actions\">\n <SubmitButton>{getMessage(\"picker.submit\")}</SubmitButton>\n <CancelButton>{getMessage(\"picker.cancel\")}</CancelButton>\n </div>\n </Form>\n );\n }\n}\n\nexport default PickerForm;\n","import React from \"react\";\nimport { BaseForm, Input } from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nclass PickerFilters extends BaseForm {\n render() {\n const { Form } = this.components;\n const { SubmitButton, ClearButton } = this.buttons;\n return (\n <Form>\n <div className=\"form-fields\">\n <Input\n label={getMessage(\"picker.filter.name\")}\n placeholder={getMessage(\"picker.filter.name.placeholder\")}\n {...this.generateStateMappers({\n stateKeys: [\"name\"],\n loseEmphasisOnFill: true,\n })}\n />\n </div>\n <SubmitButton>{getMessage(\"picker.filter.submit\")}</SubmitButton>\n <ClearButton>{getMessage(\"picker.filter.clear\")}</ClearButton>\n </Form>\n );\n }\n}\n\nexport default PickerFilters;\n","import React, { Component } from \"react\";\nimport { format, parse } from \"libphonenumber-js\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport Image from \"../../../components/Image\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport { checkIn, checkOut } from \"../../hr/UserShifts\";\nimport { Link } from \"react-router-dom\";\nimport settingImage from \"../PickersToday/svg/settings-inactive.svg\";\n\nimport { formatTime, getPrintableTime } from \"../../../lib/datetime\";\n\nimport PickerForm from \"./Form\";\nimport PickerFilter from \"./Filters\";\n\nimport emptyStateIcon from \"./picker-empty.svg\";\n\nimport \"./style.css\";\nimport { Dialog } from \"../../../components/Popup\";\nimport {\n getStandradDateTime,\n utcToLocalTime,\n localTimeToUtc,\n} from \"../../../lib/datetime\";\nimport checkHttpResponseCode from \"../../../utils/isApiCallSuccessfull\";\n\nconst emptyState = {\n icon: emptyStateIcon,\n message: getMessage(\"pickers.emptyMessage\"),\n actions: () => (\n <Link to=\"/operations/pickers-today\" className=\"primary button\">\n <img src={settingImage} className=\"setting-image\" alt=\"settings\" />{\" \"}\n <span className=\"text\">{getMessage(\"pickers.today.title\")}</span>\n </Link>\n ),\n};\n\nclass AttendanceButton extends Component {\n constructor(props) {\n super(props);\n this.state = {\n submitting: false,\n showErrorDialog: false,\n };\n }\n\n render() {\n const { onAction, id, isCheckedIn, attendance } = this.props;\n return (\n <React.Fragment>\n {this.state.showErrorDialog && (\n <Dialog\n show={this.state.showErrorDialog}\n title={getMessage(\"picker.dialog.error\")}\n information={this.state.errorMessage}\n closeText={getMessage(\"picker.dialog.okText\")}\n close={() => this.setState({ showErrorDialog: false })}\n />\n )}\n {isCheckedIn ? (\n <React.Fragment>\n <div className=\"text-muted\">\n {getMessage(\"employee.checkedInAt\") +\n \": \" +\n getPrintableTime(attendance.createdAt)}\n </div>\n <button\n type=\"button\"\n disabled={this.state.submitting}\n className=\"button attendance-button\"\n onClick={() => {\n this.setState({\n submitting: true,\n });\n checkOut(attendance.id, id).then((response) => {\n if (response.code && !checkHttpResponseCode(response.code)) {\n this.setState({\n errorMessage: response.message\n .split(\":\")\n .slice(1)\n .join(\" \"),\n showErrorDialog: true,\n });\n } else {\n onAction(TABLE_ACTIONS.REFRESH, { id });\n }\n this.setState({ submitting: false });\n });\n }}\n >\n {getMessage(\"shifts.checkout\")}\n </button>\n </React.Fragment>\n ) : !isCheckedIn ? (\n <button\n type=\"button\"\n disabled={this.state.submitting}\n className=\"button primary attendance-button\"\n onClick={() => {\n this.setState({\n submitting: true,\n });\n checkIn(id).then((response) => {\n if (response.code && !checkHttpResponseCode(response.code)) {\n this.setState({\n errorMessage: response.message,\n showErrorDialog: true,\n });\n } else {\n onAction(TABLE_ACTIONS.REFRESH, { id });\n }\n this.setState({ submitting: false });\n });\n }}\n >\n {getMessage(\"shifts.checkin\")}\n </button>\n ) : (\n \"\"\n )}\n </React.Fragment>\n );\n }\n}\n\nexport const tableProperties = {\n headers: [\n getMessage(\"picker.name\"),\n getMessage(\"picker.offDays\"),\n getMessage(\"picker.timingsAndAttendance\"),\n getMessage(\"picker.attendance\"),\n getMessage(\"picker.actions\"),\n ],\n row: ({\n id,\n name,\n shiftStart,\n shiftEnd,\n imageUrl,\n weeklyOff,\n phone,\n isCheckedIn,\n hasCheckedInForDay,\n attendance,\n status,\n onAction,\n }) => (\n <Row>\n <Cell className=\"column-user-name\">\n <Image src={imageUrl} size=\"sm\" />\n <div className=\"user-details\">\n <div\n className=\"user-name\"\n onClick={() => onAction(TABLE_ACTIONS.EDIT, { id })}\n >\n {name}\n </div>\n <small className=\"text-muted\">\n {phone &&\n phone.phone &&\n (Object.keys(parse(phone.phone)).length > 0\n ? format(parse(phone.phone), \"International\")\n : phone.phone)}\n </small>\n </div>\n </Cell>\n <Cell className=\"user-off-days\">\n {weeklyOff && weeklyOff.length > 0 && (\n <div className=\"weekly-off-days\">\n {weeklyOff.map((day) => `${getMessage(day)}`).join(\", \")}\n </div>\n )}\n </Cell>\n <Cell className=\"user-timings\">\n {shiftStart && shiftEnd ? (\n <div className=\"timings\">\n {formatTime(`${shiftStart}`)} - {formatTime(shiftEnd)}\n </div>\n ) : null}\n {isCheckedIn ? (\n <div className=\"text-muted check-inTime\">\n {getPrintableTime(attendance.createdAt)}\n </div>\n ) : null}\n </Cell>\n <Cell className=\"user-attendance\">\n <AttendanceButton\n onAction={onAction}\n id={id}\n attendance={attendance}\n isCheckedIn={isCheckedIn}\n />\n </Cell>\n <Cell className=\"user-actions\">\n <DropDown icon={<img src={ICONS.VELLIP} alt=\"â‹®\" />}>\n <DropDownItem onClick={() => onAction(TABLE_ACTIONS.EDIT, { id })}>\n {getMessage(\"picker.edit\")}\n </DropDownItem>\n </DropDown>\n </Cell>\n </Row>\n ),\n};\n\nclass Pickers extends Component {\n render() {\n const { props } = this;\n return (\n <ListingPage\n className=\"pickers-page\"\n menu={props.menu}\n title={getMessage(\"pickers.title\")}\n api={{\n url: \"/account-service/employee\",\n params: {\n roleId: 1,\n },\n transform: (response) => {\n const employees = response.data.employee;\n if (Array.isArray(employees)) {\n employees.map((employee) => {\n if (employee?.attendance?.createdAt) {\n if (employee.attendance.createdAt.includes(\"T\")) {\n const newDate = employee.attendance.createdAt.split(/[TZ]/);\n employee.attendance.createdAt = `${newDate[0]} ${newDate[1]}`;\n }\n employee.attendance.createdAt = getStandradDateTime(\n utcToLocalTime,\n employee.attendance.createdAt\n );\n }\n if (employee.shiftStart) {\n employee.shiftStart = getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n employee.shiftStart\n }`\n ).split(\" \")[1];\n }\n if (employee.shiftEnd) {\n employee.shiftEnd = getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n employee.shiftEnd\n }`\n ).split(\" \")[1];\n }\n return employee;\n });\n } else {\n if (employees?.attendance?.createdAt) {\n if (employees.attendance.createdAt.includes(\"T\")) {\n const newDate = employees.attendance.createdAt.split(/[TZ]/);\n employees.attendance.createdAt = `${newDate[0]} ${newDate[1]}`;\n }\n employees.attendance.createdAt = getStandradDateTime(\n utcToLocalTime,\n employees.attendance.createdAt\n );\n }\n if (employees.shiftStart) {\n employees.shiftStart = getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n employees.shiftStart\n }`\n ).split(\" \")[1];\n }\n if (employees.shiftEnd) {\n employees.shiftEnd = getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n employees.shiftEnd\n }`\n ).split(\" \")[1];\n }\n }\n return employees;\n },\n }}\n headerActions={() => (\n <Link to=\"/operations/pickers-today\" className=\"primary button\">\n <img src={settingImage} className=\"setting-image\" alt=\"settings\" />{\" \"}\n <span className=\"text\">{getMessage(\"pickers.today.title\")}</span>\n </Link>\n )}\n editHeading={getMessage(\"picker.editHeading\")}\n modalClassName=\"picker-form\"\n storeDependent\n emptyState={emptyState}\n tableProperties={tableProperties}\n form={{\n component: PickerForm,\n transformSubmit: (formData) => {\n let picker = Object.assign({}, formData);\n if (picker.shiftStart) {\n picker.shiftStart = getStandradDateTime(\n localTimeToUtc,\n `${new Date().toISOString().split(\"T\")[0]} ${\n picker.shiftStart\n }:00`\n ).split(\" \")[1];\n }\n if (picker.shiftEnd) {\n picker.shiftEnd = getStandradDateTime(\n localTimeToUtc,\n `${new Date().toISOString().split(\"T\")[0]} ${\n picker.shiftEnd\n }:00`\n ).split(\" \")[1];\n }\n return picker;\n },\n }}\n filters={{\n component: PickerFilter,\n }}\n />\n );\n }\n}\n\nexport default Pickers;\n\nexport { AttendanceButton };\n","import React, { Component } from \"react\";\nimport moment from \"moment\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nimport \"./style.css\";\n\nclass ProgressBar extends Component {\n constructor(props) {\n super(props);\n this.state = {\n startTime: \"\",\n estimatedTime: \"\",\n };\n }\n\n componentDidMount() {\n let picker = this.props.picker;\n this.isComponentMounted = true;\n this.setState({\n estimatedTime: picker.currentOrder.estimatedTime,\n startTime: picker.currentOrder.startTime,\n });\n this.currentTime = this.currentTime.bind(this);\n this.currentTime();\n }\n\n currentTime() {\n if (this.isComponentMounted) {\n this.setState({\n time: moment().format(\"hh:mm:ss\"),\n });\n }\n setTimeout(this.currentTime, 1000);\n }\n\n componentWillUnmount() {\n this.isComponentMounted = false;\n }\n\n getPointerStyle(startTime, estimatedTime, pixelPerSecond) {\n let width =\n moment.duration(estimatedTime.diff(startTime)).asSeconds() *\n pixelPerSecond;\n return { left: width - 1 + \"px\" };\n }\n\n calculateEtraTimeProgressWidth(startTime, estimatedTime, pixelPerSecond) {\n let width =\n moment.duration(estimatedTime.diff(startTime)).asSeconds() *\n pixelPerSecond;\n return { width: isNaN(width) ? 0 : width, border: \"1px solid red\" || 0 };\n }\n\n calculateProgressWidth(startTime, pixelPerSecond) {\n let time = moment(startTime);\n let width =\n moment.duration(moment().diff(time)).asSeconds() * pixelPerSecond;\n return { width: isNaN(width) ? 0 : width || 0 };\n }\n\n getPixelPerSeconds(remainnigTime) {\n return 280 / remainnigTime;\n }\n\n getDuration(startTime, estimatedTime) {\n let timeDifference = moment\n .duration(estimatedTime.diff(startTime))\n .asSeconds();\n return timeDifference;\n }\n\n getExtraTime(startTime) {\n let time = moment(startTime);\n return moment.duration(moment().diff(time)).asSeconds();\n }\n\n render() {\n let { startTime, estimatedTime } = this.state;\n let remainnigTime =\n startTime &&\n estimatedTime &&\n this.getDuration(moment(startTime), moment(estimatedTime));\n let pixel = remainnigTime && this.getPixelPerSeconds(remainnigTime);\n let extraTime = startTime && this.getExtraTime(moment(startTime));\n\n let pixel2 = extraTime && this.getPixelPerSeconds(extraTime);\n\n let isOverTime = moment(estimatedTime) >= moment();\n let style = isOverTime\n ? this.calculateProgressWidth(moment(startTime), pixel)\n : this.calculateEtraTimeProgressWidth(\n moment(startTime),\n moment(estimatedTime),\n pixel2\n );\n let pointerStyle = isOverTime\n ? undefined\n : this.getPointerStyle(moment(startTime), moment(estimatedTime), pixel2);\n\n return (\n <React.Fragment>\n <div\n className=\"progress-bar\"\n style={!isOverTime ? { borderColor: \"red\" } : {}}\n >\n <span className=\"in-progress\" style={style} />\n {!isOverTime && (\n <div className=\"time-pointer\" style={pointerStyle}>\n <span className=\"tooltip-text\">\n {getMessage(\"pickers.today.slot.estimate.time\") +\n moment(estimatedTime).format(\"hh:mm A\")}\n </span>\n </div>\n )}\n </div>\n <div className=\"pickers-progress-time\">\n <span>\n {getMessage(\"pickers.today.slot.starttime\")}\n {moment(startTime).format(\"hh:mm A\")}\n </span>\n <span>\n {!isOverTime\n ? getMessage(\"pickers.today.slot.current.time\") +\n moment().format(\"hh:mm:ss A\")\n : getMessage(\"pickers.today.slot.estimate.time\") +\n moment(estimatedTime).format(\"hh:mm A\")}\n </span>\n </div>\n </React.Fragment>\n );\n }\n}\n\nexport default ProgressBar;\n","import React from \"react\";\nimport { Row, Cell } from \"../../../../components/Table\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport {\n getPrintableTime,\n formatTime,\n formatIsoTime,\n} from \"../../../../lib/datetime\";\nimport { Link } from \"react-router-dom\";\nimport phoneIcon from \"../svg/phone.svg\";\nimport Placeholder from \"../svg/customer-image-placeholder.svg\";\nimport { format, parse } from \"libphonenumber-js\";\nimport ProgressBar from \"../ProgressBar\";\nimport moment from \"moment\";\n\nconst ActivePickers = (props) => {\n let { employees, pickers } = props;\n let picker = \"\";\n let pickerIds = pickers.map((picker) => {\n return picker.pickerId;\n });\n let activeEmployees = employees.filter((emp) => {\n return pickerIds && pickerIds.includes(emp.id);\n });\n\n return (\n <React.Fragment>\n <div className=\"pickers-active-picker-header\">\n {getMessage(\"pickers.active.header\")}\n </div>\n <div className=\"pickers-table\">\n {activeEmployees.map((employee, index) => {\n for (let index = 0; index < pickers.length; index++) {\n if (pickers[index].pickerId === employee.id) {\n picker = pickers[index];\n }\n }\n let lateTime =\n moment(employee.attendance.expectedIn) <\n moment(employee.attendance.createdAt);\n return (\n <Row className=\"pickers-table-row\" key={index}>\n <Cell className=\"pickers-table-cell\">\n <div className=\"active-picker-section\">\n <div className=\"pickers-active-employee-details-section\">\n <div className=\"pickers-emp-name-image\">\n {employee.imageUrl ? (\n <img\n className=\"pickers-employee-image\"\n src={employee.imageUrl}\n alt=\"\"\n />\n ) : (\n <img\n className=\"pickers-employee-image-empty\"\n src={Placeholder}\n alt=\"\"\n />\n )}\n <div className=\"pickers-employee-name\">\n {employee ? employee.name : \"\"}\n <br />\n <span className=\"pickers-employee-phone\">\n {employee && !!employee.phones.length && (\n <img\n className=\"pickers-phone-icon\"\n src={phoneIcon}\n alt=\"\"\n />\n )}\n {employee\n ? employee.phones.length\n ? employee.phones[0].phone &&\n Object.keys(parse(employee.phones[0].phone))\n .length > 0\n ? format(\n parse(employee.phones[0].phone),\n \"International\"\n )\n : employee.phones[0].phone\n : \"\"\n : \"\"}\n </span>\n </div>\n </div>\n {employee.shiftStart && employee.shiftEnd && (\n <div className=\"pickers-shift-time-1 slot\">\n {getMessage(\"pickers.today.slot\")}\n {employee.shiftStart\n ? formatTime(employee.shiftStart)\n : \"\"}\n  - \n {employee.shiftEnd ? formatTime(employee.shiftEnd) : \"\"}\n </div>\n )}\n <div className=\"pickers-shift-time-1\">\n {getMessage(\"pickers.today.checkin.time\")}\n {\n getPrintableTime(employee.attendance.createdAt).split(\n \",\"\n )[1]\n }\n {lateTime && (\n <span className=\"late-time\">\n {getMessage(\"pickers.today.late\")}\n </span>\n )}\n </div>\n </div>\n <div className=\"pickers-order-details\">\n {picker.currentOrder.slotStartTime &&\n picker.currentOrder.slotEndTime && (\n <div className=\"pickers-shift-time-1 order-slot\">\n {picker.currentOrder.slotStartTime &&\n picker.currentOrder.slotEndTime &&\n getMessage(\"pickers.today.order.slot\")}\n {picker.currentOrder.slotStartTime &&\n formatIsoTime(picker.currentOrder.slotStartTime)}\n  - \n {picker.currentOrder.slotEndTime &&\n formatIsoTime(picker.currentOrder.slotEndTime)}\n </div>\n )}\n <span className=\"pickers-employee-name\">\n {getMessage(\"picker.today.order\")}\n {picker.currentOrder ? (\n <Link\n to={`/operations/orders/${picker.currentOrder.referenceNumber}`}\n >\n {picker.currentOrder.clientId\n ? `#${picker.currentOrder.clientId}`\n : `Z${picker.currentOrder.referenceNumber}`}{\" \"}\n </Link>\n ) : (\n \"\"\n )}\n </span>\n\n <div className=\"pickers-picking-item\">\n {picker.currentOrder.processName === \"PICKING\"\n ? getMessage(\"pickers.today.picking.item\")\n : picker.currentOrder.processName === \"CHECKING\"\n ? getMessage(\"pickers.today.checking.item\")\n : picker.currentOrder.processName === \"PACKING\"\n ? getMessage(\"pickers.today.packing.item\")\n : getMessage(\"pickers.today.packed.item\")}\n {picker.currentOrder.numOfOrderItems || 0}\n {getMessage(\"pickers.today.picking.item2\")}\n </div>\n <ProgressBar picker={picker} />\n </div>\n </div>\n </Cell>\n </Row>\n );\n })}\n </div>\n </React.Fragment>\n );\n};\n\nexport default ActivePickers;\n","import React from \"react\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport phoneIcon from \"../svg/phone.svg\";\nimport { getPrintableTime, formatTime } from \"../../../../lib/datetime\";\nimport Loader from \"../../../../components/Loader\";\nimport Placeholder from \"../svg/customer-image-placeholder.svg\";\nimport { format, parse } from \"libphonenumber-js\";\nimport moment from \"moment\";\n\nconst IdlePickers = (props) => {\n let { employees, pickers } = props;\n let pickerIds = pickers.map((picker) => {\n return picker.pickerId;\n });\n let idleEmployees = employees;\n if (pickers) {\n idleEmployees = employees.filter((emp) => {\n return pickerIds && !pickerIds.includes(emp.id);\n });\n }\n\n return (\n <React.Fragment>\n {idleEmployees.length ? (\n <div className=\"pickers-idle-picker-header\">\n {getMessage(\"pickers.idle.header\")}\n </div>\n ) : (\n \"\"\n )}\n <div className=\"pickers-flex\">\n {idleEmployees.length ? (\n idleEmployees.map((employee, index) => {\n let lateTime =\n moment(employee.attendance.expectedIn) <\n moment(employee.attendance.createdAt);\n return (\n <div className=\"pickers-idle\" key={index}>\n <div className=\"pickers-employee-details-section\">\n {employee.imageUrl ? (\n <img\n className=\"pickers-employee-image\"\n src={employee.imageUrl}\n alt=\"\"\n />\n ) : (\n <img\n className=\"pickers-employee-image-empty\"\n src={Placeholder}\n alt=\"\"\n />\n )}\n <div className=\"pickers-employee-name\">\n {employee ? employee.name : \"\"}\n <br />\n <span className=\"pickers-employee-phone\">\n {employee && !!employee.phones.length && (\n <img\n className=\"pickers-phone-icon\"\n src={phoneIcon}\n alt=\"\"\n />\n )}\n {employee\n ? employee.phones.length\n ? employee.phones[0].phone &&\n Object.keys(parse(employee.phones[0].phone))\n .length > 0\n ? format(\n parse(employee.phones[0].phone),\n \"International\"\n )\n : \"\"\n : \"\"\n : \"\"}\n </span>\n </div>\n </div>\n {employee.shiftStart && employee.shiftEnd && (\n <div className=\"pickers-shift-time-1 slot\">\n {getMessage(\"pickers.today.slot\")}\n {employee.shiftStart ? formatTime(employee.shiftStart) : \"\"}\n  - \n {employee.shiftEnd ? formatTime(employee.shiftEnd) : \"\"}\n </div>\n )}\n <div>\n <div className=\"pickers-shift-time-1\">\n {getMessage(\"pickers.today.checkin.time\")}\n {\n getPrintableTime(employee.attendance.createdAt).split(\n \",\"\n )[1]\n }\n {lateTime && (\n <span className=\"late-time\">\n {getMessage(\"pickers.today.late\")}\n </span>\n )}\n </div>\n </div>\n </div>\n );\n })\n ) : pickers.length ? null : (\n <Loader />\n )}\n </div>\n </React.Fragment>\n );\n};\nexport default IdlePickers;\n","import React, { Component } from \"react\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport Picker from \"../svg/picker.svg\";\n\nclass TotalPickers extends Component {\n constructor(props) {\n super(props);\n this.state = {\n totalPickers: 0,\n activePickers: 0,\n idlePickers: 0,\n };\n }\n\n componentDidMount() {\n let { employees, pickers } = this.props;\n\n this.setState({\n totalPickers: employees.length,\n activePickers: pickers.length,\n idlePickers: employees.length - pickers.length,\n });\n }\n\n render() {\n let { totalPickers, activePickers, idlePickers } = this.state;\n return (\n <div className=\"pickers-side-bar-container\">\n <div className=\"pickers-total-pickers-container\">\n <span>{totalPickers}</span>\n <br />\n {getMessage(\"pickers.today.total.pickers\")}\n <br />\n <img src={Picker} alt=\"\" className=\"pickers-icon\" />\n </div>\n <div className=\"pickers-active-idle\">\n <div className=\"pickers-active-pickers-container\">\n <span>{activePickers}</span>\n <br />\n {getMessage(\"pickers.today.active.pickers\")}\n </div>\n <div className=\"pickers-idle-pickers-container\">\n <span>{idlePickers}</span>\n <br />\n {getMessage(\"pickers.today.idle.pickers\")}\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default TotalPickers;\n","import React, { Component } from \"react\";\nimport API from \"../../../lib/api\";\nimport ActivePickers from \"./ActivePickers\";\nimport IdlePickers from \"./IdlePickers\";\nimport TotalPickers from \"./TotalPickers\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport Loader from \"../../../components/Loader\";\nimport { Link } from \"react-router-dom\";\nimport { getMessage } from \"../../../lib/translator\";\nimport emptyStateIcon from \"./svg/picker-empty.svg\";\nimport settingImage from \"./svg/settings-inactive.svg\";\nimport StoreSelector from \"../../../containers/StoreSelector\";\nimport { getStandradDateTime, utcToLocalTime } from \"../../../lib/datetime\";\n\nimport \"./style.css\";\nimport { get } from \"../../../lib/storage\";\n\nconst EmptyState = () => {\n return (\n <React.Fragment>\n <div className=\"pickers-empty-state\">\n <img src={emptyStateIcon} alt=\"settings\" />\n {getMessage(\"pickers.empty\")}\n </div>\n </React.Fragment>\n );\n};\n\nclass PickersToday extends Component {\n constructor(props) {\n super(props);\n this.state = {\n pickerLoading: true,\n employeeLoading: true,\n Loading: true,\n storeId: get(\"store\"),\n multiStores: [],\n employees: [],\n pickers: [],\n };\n this.changeStore = this.changeStore.bind(this);\n }\n\n changeStore(storeId) {\n this.setState({ storeId }, this.getEmployees);\n }\n\n updateStates(employees) {\n let pickerIds = null;\n if (employees.length) {\n pickerIds = employees.map((emp) => emp.id);\n }\n let apiURLParams = \"\";\n if (pickerIds) {\n apiURLParams += pickerIds.length ? \"?\" : \"\";\n let index = 0;\n for (; index < pickerIds.length - 1; index++) {\n apiURLParams += \"pickerId=\" + pickerIds[index] + \"&\";\n }\n apiURLParams += \"pickerId=\" + pickerIds[index];\n }\n this.pickerApi = new API({\n url: \"/order-service/picker-activity\" + apiURLParams,\n });\n\n this.pickerApi\n .get()\n .then((res) => {\n this.setState(\n {\n pickers: res.data,\n pickerLoading: false,\n multiStores: JSON.parse(window.localStorage.stores),\n },\n () => {\n this.setState({\n employees,\n employeeLoading: false,\n Loading: false,\n });\n }\n );\n })\n .catch((error) => {\n console.error(error);\n throw error;\n });\n }\n\n getEmployees() {\n this.setState({ Loading: true });\n this.employeeApi = new API({ url: \"/account-service/employee\" });\n this.employeeApi\n .get({\n roleId: 1,\n paginated: \"false\",\n storeId: this.state.storeId,\n })\n .then((res) => {\n let employees = res.data.employee;\n if (Array.isArray(employees)) {\n employees.map((employee) => {\n if (employee?.attendance?.createdAt) {\n if (employee.attendance.createdAt.includes(\"T\")) {\n const newDate = employee.attendance.createdAt.split(/[TZ]/);\n employee.attendance.createdAt = `${newDate[0]} ${newDate[1]}`;\n }\n employee.attendance.createdAt = getStandradDateTime(\n utcToLocalTime,\n employee.attendance.createdAt\n );\n }\n if (employee.shiftStart) {\n employee.shiftStart = getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n employee.shiftStart\n }`\n ).split(\" \")[1];\n }\n if (employee.shiftEnd) {\n employee.shiftEnd = getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${employee.shiftEnd}`\n ).split(\" \")[1];\n }\n return employee;\n });\n } else {\n if (employees?.attendance?.createdAt) {\n if (employees.attendance.createdAt.includes(\"T\")) {\n const newDate = employees.attendance.createdAt.split(/[TZ]/);\n employees.attendance.createdAt = `${newDate[0]} ${newDate[1]}`;\n }\n employees.attendance.createdAt = getStandradDateTime(\n utcToLocalTime,\n employees.attendance.createdAt\n );\n }\n if (employees.shiftStart) {\n employees.shiftStart = getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n employees.shiftStart\n }`\n ).split(\" \")[1];\n }\n if (employees.shiftEnd) {\n employees.shiftEnd = getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${employees.shiftEnd}`\n ).split(\" \")[1];\n }\n }\n employees = employees.filter((emp) => {\n return emp.attendance !== null;\n });\n this.updateStates(employees);\n })\n .catch((error) => {\n console.error(error);\n throw error;\n });\n }\n\n componentWillUnmount() {\n this.employeeApi && this.employeeApi.cancel();\n this.pickerApi && this.pickerApi.cancel();\n }\n\n componentDidMount() {\n this.getEmployees();\n }\n render() {\n let {\n pickers,\n employees,\n pickerLoading,\n employeeLoading,\n multiStores,\n storeId,\n Loading,\n } = this.state;\n return (\n <AuthenticatedPage menu={this.props.menu} className=\"pickers-today\">\n <h1 className=\"pickers-title\">\n {getMessage(\"pickers.today.title\")}\n <Link to=\"/operations/pickers\" className=\"pickers-nav-btn\">\n <button className=\"primary button vendor-btn\">\n {\" \"}\n <img\n src={settingImage}\n className=\"setting-image\"\n alt=\"settings\"\n />{\" \"}\n {getMessage(\"pickers.title\")}\n </button>\n </Link>\n </h1>\n {!(pickerLoading || employeeLoading) ? (\n employees.length ? (\n Loading ? (\n <Loader />\n ) : (\n <React.Fragment>\n <StoreSelector\n value={storeId}\n onChange={this.changeStore}\n stores={multiStores}\n />\n <TotalPickers {...this.state} />\n {pickers.length !== 0 ? (\n <ActivePickers {...this.state} />\n ) : null}\n <IdlePickers {...this.state} />\n </React.Fragment>\n )\n ) : (\n <React.Fragment>\n <StoreSelector\n value={storeId}\n onChange={this.changeStore}\n stores={multiStores}\n />\n {Loading ? <Loader /> : <EmptyState />}\n </React.Fragment>\n )\n ) : (\n <Loader />\n )}\n </AuthenticatedPage>\n );\n }\n}\n\nexport default PickersToday;\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n VALIDATION_TYPES,\n Phone,\n Upload,\n} from \"../../../../components/Form\";\nimport { isExtensionEnabled } from \"../../../../lib/auth\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport \"./style.css\";\nimport { Helmet } from \"react-helmet\";\nimport MetaDataFormFields from \"../../../../components/MetaDataFormFields\";\nimport API from \"../../../../lib/api\";\n\nexport default class SellerForm extends BaseForm {\n componentDidMount() {\n if (isExtensionEnabled(\"EntityMetaData\")) {\n this.getSellerMetaData();\n }\n }\n \n getSellerMetaData() {\n return new Promise((resolve, reject) => {\n const api = new API({ url: `/config-service/meta-data` });\n api.get().then((response) => {\n resolve(response.data?.config?.entityMetaData?.seller);\n }, reject);\n }).then((data) => {\n if (data) {\n this.setState({ sellerMetaData: data });\n }\n }).catch((error) => {\n console.error(\"Error fetching product metadata:\", error);\n });\n }\n \n render() {\n const { CancelButton, SubmitButton } = this.buttons;\n const { Form } = this.components;\n return (\n <div>\n <Helmet title=\"Zopping - Add Seller\" />\n <Form className=\"seller-form\">\n <Input\n className=\"title-input\"\n label={getMessage(\"sellers.seller.form.title.heading\")}\n placeholder={getMessage(\"sellers.seller.form.title.placeholder\")}\n name=\"name\"\n type=\"text\"\n required\n {...this.generateStateMappers({\n stateKeys: [\"name\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\n \"sellers.seller.form.title.requiredMessage\"\n ),\n }}\n />\n\n <Phone\n country={this.state.countryCode}\n label={getMessage(\"sellers.seller.form.phone.heading\")}\n placeholder={getMessage(\"order.form.customer.phone.placeholder\")}\n name=\"phone\"\n className=\"phone-number\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"phone\"],\n loseEmphasisOnFill: true,\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n />\n <Input\n label={getMessage(\"sellers.seller.form.email.heading\")}\n placeholder={getMessage(\"sellers.seller.form.email.placeholder\")}\n className=\"seller-email\"\n name=\"email\"\n type=\"email\"\n {...this.generateStateMappers({\n stateKeys: [\"email\"],\n loseEmphasisOnFill: true,\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n />\n\n <Input\n className=\"title-input\"\n label={getMessage(\"sellers.seller.form.address.heading\")}\n placeholder={getMessage(\"sellers.seller.form.address.placeholder\")}\n name=\"address\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"address\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n <Input\n className=\"title-input\"\n label={getMessage(\"sellers.seller.form.description.title.heading\")}\n placeholder={getMessage(\n \"sellers.seller.form.description.title.pleaceholder\"\n )}\n name=\"description\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"description\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n <Upload\n label={getMessage(\"sellers.seller.form.image.logo.heading\")}\n placeholder={getMessage(\n \"sellers.seller.form.description.title.pleaceholder\"\n )}\n {...this.generateStateMappers({\n stateKeys: [\"logo\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n\n {isExtensionEnabled(\"EntityMetaData\") && (\n <MetaDataFormFields\n metaDataWithType={this.state.sellerMetaData || {}}\n className=\"metadata-section\"\n page=\"product-form\"\n _this={this}\n />\n )}\n\n <div className=\"form-buttons\">\n <SubmitButton>{getMessage(\"sellers.confirm.text\")}</SubmitButton>\n <CancelButton>{getMessage(\"sellers.cancel.text\")}</CancelButton>\n </div>\n </Form>\n </div>\n );\n }\n}\n","import React, { Component } from \"react\";\n\nimport Upload from \"../../../../components/FileUpload\";\nimport API from \"../../../../lib/api\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport csvIcon from \"../../../operations/Customers/CustomerImport/csv-icon.svg\";\nimport uploadIcon from \"../../../operations/Customers/CustomerImport/import-customers.svg\";\nimport infoIcon from \"../../../operations/Customers/CustomerImport/info-icon.svg\";\nimport \"./style.css\";\n\nfunction downloadCsv(data) {\n let csv = \"\";\n csv += data.join(\",\");\n csv += \"\\n\";\n var hiddenElement = document.createElement(\"a\");\n hiddenElement.href = \"data:text/csv;charset=utf-8,\" + encodeURI(csv);\n hiddenElement.target = \"_blank\";\n hiddenElement.download = \"seller.csv\";\n hiddenElement.click();\n}\n\nexport default class SellerUpload extends Component {\n constructor(props) {\n super(props);\n this.getSampleCsv = this.getSampleCsv.bind(this);\n }\n\n getSampleCsv(e) {\n e && e.preventDefault();\n const api = new API({ url: \"/account-service/seller-upload\" });\n api\n .get()\n .then(\n (response) => {\n downloadCsv(response.data.fileUpload || []);\n },\n (error) => {\n this.setState({ uploadError: error.message });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n render() {\n return (\n <div className=\"seller-upload\">\n <div className=\"bordered-box\">\n <div className=\"text-center\">\n <img src={uploadIcon} width=\"140\" alt=\"\" />\n </div>\n <Upload\n name=\"sellerUpload\"\n accept=\".csv, text/csv, text/comma-separated-values, application/csv, application/excel, application/vnd.ms-excel, application/vnd.msexcel\"\n placeholder={getMessage(\"productUpload.uploadFileText\")}\n uploadButtonText=\"Upload\"\n cancelText=\"Cancel\"\n uploadUrl=\"/account-service/seller-upload\"\n validationStrings={{\n invalidFileType: getMessage(\"input.invalidFileType\"),\n }}\n strings={{\n defaultMessage: getMessage(\"fileUpload.importCsv.heading\"),\n progressMessage: getMessage(\"fileUpload.importedCsv.heading\"),\n completionMessage: getMessage(\"sellers.import.successText\"),\n }}\n icon={csvIcon}\n />\n <div className=\"cx-import-tooltip\">\n <img src={infoIcon} alt=\"note\" />\n NOTE\n <div className=\"tooltiptext\">\n <div className=\"tooltip-title\">Note:</div>\n <div className=\"instruction\">\n * The phone numbers must be prepended with (+) followed by\n country code.\n </div>\n <div className=\"instruction text-muted\">\n {\" \"}\n Eg: Phone number with country code 91 must be +911234567890\n </div>\n </div>\n </div>\n </div>\n <div className=\"text-center\">\n <button className=\"download-link\" onClick={this.getSampleCsv}>\n {getMessage(\"productUpload.csvDownloadText\")}\n </button>\n </div>\n </div>\n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Radio,\n Input,\n VALIDATION_TYPES,\n} from \"../../../../components/Form\";\n\nimport { getMessage } from \"../../../../lib/translator\";\n\nexport default class SellerFiltersForm extends BaseForm {\n render() {\n const { SubmitButton, ClearButton } = this.buttons;\n const { Form } = this.components;\n return (\n <Form className=\"seller-filter-form\">\n <div className=\"form-fields\">\n <Input\n label={getMessage(\"seller.filters.sellerName.heading\")}\n placeholder={getMessage(\n \"seller.filters.permissableSeller.placeholder\"\n )}\n className=\"seller-email\"\n name=\"email\"\n type=\"email\"\n {...this.generateStateMappers({\n stateKeys: [\"email\"],\n loseEmphasisOnFill: true,\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n />\n <Radio\n className=\"product-status\"\n label={getMessage(\"product.filters.status.heading\")}\n name=\"status\"\n options={[\n {\n text: getMessage(\"product.filters.status.label.all\"),\n value: \"\",\n },\n {\n text: getMessage(\"product.filters.status.label.enabled\"),\n value: \"ACTIVE\",\n },\n {\n text: getMessage(\"product.filters.status.label.disabled\"),\n value: \"INACTIVE\",\n },\n ]}\n {...this.generateStateMappers({\n stateKeys: [\"status\"],\n defaultValue: \"\",\n })}\n />\n </div>\n <SubmitButton>{getMessage(\"product.filters.submitText\")}</SubmitButton>\n <ClearButton>\n {getMessage(\"product.filters.clearFiltersText\")}\n </ClearButton>\n </Form>\n );\n }\n}\n","import React, { Component, useEffect, useState } from \"react\";\nimport { DropDownItem, ICONS, DropDown } from \"../../../components/DropDown\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { Link } from \"react-router-dom\";\nimport emptyIcon from \"./seller-empty.svg\";\nimport Image from \"../../../components/Image\";\n\nimport ListingPageWithRoutes from \"../../../containers/ListingPage/listingRouter\";\n\nimport SellerForm from \"./Form\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport \"./style.css\";\nimport { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport userImage from \"../userImage.svg\";\nimport { Popup } from \"../../../components/Popup\";\nimport SellerUpload from \"./SellersUpload\";\nimport SellerFiltersForm from \"./Filters\";\n\nconst getStatus = (status) => {\n return status === \"ACTIVE\" ? \"INACTIVE\" : \"ACTIVE\";\n};\n\nclass SellerActions extends Component {\n render() {\n const { id, status, onAction } = this.props;\n const action = getStatus(status);\n return (\n <div>\n <DropDown icon={<img src={ICONS.VELLIP} alt=\"â‹®\" />}>\n <DropDownItem>\n <Link to={`/sellers/seller/edit/${id}`}>\n {getMessage(\"seller.status.edit\")}\n </Link>\n </DropDownItem>\n <DropDownItem\n onClick={() => {\n onAction(TABLE_ACTIONS.DELETE, { id });\n }}\n >\n {getMessage(\"seller.status.delete\")}\n </DropDownItem>\n <DropDownItem\n onClick={() => {\n onAction(TABLE_ACTIONS.UPDATE, { id }, { status: action });\n }}\n >\n {status === \"ACTIVE\"\n ? getMessage(\"seller.status.inactive\")\n : getMessage(\"seller.status.active\")}\n </DropDownItem>\n </DropDown>\n </div>\n );\n }\n}\n\nconst tableProperties = (isMobileView) => {\n return {\n headers: [\n getMessage(\"sellers.seller.table.action.name\"),\n getMessage(\"sellers.seller.table.action.contact\"),\n getMessage(\"sellers.seller.table.action.address\"),\n getMessage(\"sellers.seller.table.action.status\"),\n getMessage(\"sellers.seller.table.action.actions\"),\n ],\n row: ({ id, name, onAction, metaData, status, email, phone, logo }) => (\n <Row>\n <Cell>\n <div className=\"seller-profile\">\n <Image src={logo || userImage} size=\"sm\" />\n <Link to={`/sellers/seller/edit/${id}`} className=\"user-details\">\n <div className=\"user-name\">{name}</div>\n </Link>\n </div>\n </Cell>\n {isMobileView ? (\n <>\n <Cell className=\"sellers-address\">\n <small className=\"address\">{metaData?.address}</small>\n </Cell>\n <Cell className=\"status-contact-details\">\n <small className=\"status-contact\">\n <span>{phone}</span>\n <span>{email}</span>\n </small>\n </Cell>\n </>\n ) : (\n <>\n <Cell className=\"status-contact-details\">\n <small className=\"status-contact\">\n <span>{phone}</span>\n <span>{email}</span>\n </small>\n </Cell>\n <Cell className=\"sellers-address\">\n <small className=\"address\">{metaData?.address}</small>\n </Cell>\n </>\n )}\n <Cell className=\"sellers-status\">\n <small>{status}</small>\n </Cell>\n <Cell className=\"seller-actions\">\n <SellerActions onAction={onAction} id={id} status={status} />\n </Cell>\n </Row>\n ),\n };\n};\n\nfunction AddSeller() {\n const [showPopup, setShowPopup] = useState(false);\n\n const showModal = () => {\n setShowPopup(!showPopup);\n };\n return (\n <div className=\"text-center\">\n <Popup\n heading={getMessage(\"sellers.seller.form.add.bulk.text\")}\n show={showPopup}\n close={showModal}\n className=\"bulk-upload\"\n >\n <SellerUpload />\n </Popup>\n <DropDown\n className=\"bulk-upload-dropdown\"\n icon={\n <button className=\"button primary add-seller-dropdown-button\">\n +{\" \"}\n <span className=\"text\">\n {getMessage(\"seller.seller.form.add.text\")}\n </span>\n </button>\n }\n >\n <DropDownItem>\n <Link to=\"/sellers/seller/add\">\n {getMessage(\"sellers.seller.form.add.heading\")}\n </Link>\n </DropDownItem>\n <DropDownItem onClick={showModal}>\n {getMessage(\"sellers.seller.form.add.bulk.text\")}\n </DropDownItem>\n </DropDown>\n </div>\n );\n}\n\nconst emptyState = {\n icon: emptyIcon,\n message: getMessage(\"sellers.seller.helpItems.message\"),\n additionalViews: [AddSeller],\n};\n\nexport default function Sellers(props) {\n const [isMobileView, setIsMobileView] = useState(false);\n useEffect(() => {\n function handleResize() {\n setIsMobileView(window.screen.width <= 480);\n }\n handleResize();\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n return (\n <ListingPageWithRoutes\n helmetTitle=\"Zopping - Sellers\"\n menu={props.menu}\n className=\"sellers-page\"\n title=\"Sellers\"\n addHeading={getMessage(\"sellers.seller.form.add.heading\")}\n editHeading={getMessage(\"sellers.seller.form.edit.heading\")}\n emptyState={emptyState}\n headerActions={AddSeller}\n api={{\n url: \"/account-service/seller\",\n transform: (response) => {\n return response.data?.seller;\n },\n }}\n form={{\n component: SellerForm,\n transformSubmit: (formData) => {\n let { name, description, logo, email, status, phone, address } =\n formData;\n return {\n name,\n description,\n logo,\n phone,\n email,\n status,\n metaData: {\n address,\n ...formData?.metaData,\n },\n };\n },\n transformResponse: (response) => {\n const updatedData = {\n ...response?.data,\n address: response?.data?.metaData?.address,\n };\n return updatedData;\n },\n }}\n tableProperties={tableProperties(isMobileView)}\n filters={{\n component: SellerFiltersForm,\n }}\n />\n );\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Phone,\n VALIDATION_TYPES,\n Searchable,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport \"./style.css\";\n\nexport default class UserForm extends BaseForm {\n render() {\n const { SubmitButton, CancelButton } = this.buttons;\n const { Form } = this.components;\n const { props } = this;\n const sellerId = this.props.value?.sellerID;\n return (\n <div className=\"UserForm\">\n <Form>\n <Input\n label={getMessage(\"sellers.user.form.name.heading\")}\n placeholder={getMessage(\"sellers.user.form.name.pleceholder\")}\n name=\"name\"\n type=\"text\"\n required\n {...this.generateStateMappers({\n stateKeys: [\"name\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n\n <Searchable\n label={getMessage(\"sellers.user.form.sellername.heading\")}\n placeholder={getMessage(\"sellers.user.form.sellername.placeholder\")}\n name=\"seller\"\n type=\"text\"\n searchUrl=\"/account-service/seller\"\n valueKey=\"id\"\n searchKey=\"name\"\n transformResponse={(response) =>\n response.data?.seller?.filter((sell) => sell?.id !== sellerId)\n }\n {...this.generateStateMappers({\n stateKeys: [\"seller\"],\n loseEmphasisOnFill: true,\n })}\n />\n <Phone\n country={this.state.countryCode}\n label={getMessage(\"sellers.user.form.phone.heading\")}\n placeholder={getMessage(\"sellers.user.form.phone.placeholder\")}\n name=\"phone\"\n className=\"phone-number\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"phone\"],\n loseEmphasisOnFill: true,\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n />\n <Input\n label={getMessage(\"sellers.user.form.email.heading\")}\n placeholder={getMessage(\"sellers.user.form.email.placeholder\")}\n className=\"seller-email\"\n name=\"email\"\n type=\"email\"\n {...this.generateStateMappers({\n stateKeys: [\"email\"],\n loseEmphasisOnFill: true,\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n />\n <div className={`form-actions ${props.method}`}>\n <div className=\"form-buttons\">\n <SubmitButton>{getMessage(\"users.save.text\")}</SubmitButton>\n <CancelButton>{getMessage(\"sellers.cancel.text\")}</CancelButton>\n </div>\n </div>\n </Form>\n </div>\n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Radio,\n Searchable,\n VALIDATION_TYPES,\n Input,\n} from \"../../../../components/Form\";\n\nimport { getMessage } from \"../../../../lib/translator\";\n\n// import \"./style.css\";\n\nexport default class UserFiltersForm extends BaseForm {\n render() {\n const { SubmitButton, ClearButton } = this.buttons;\n const { Form } = this.components;\n\n return (\n <Form className=\"seller-user-filter-form\">\n <div className=\"form-fields\">\n <Input\n label={getMessage(\"seller.filters.sellerName.heading\")}\n placeholder={getMessage(\"user.filters.email.placeholder\")}\n name=\"email\"\n type=\"email\"\n {...this.generateStateMappers({\n stateKeys: [\"email\"],\n loseEmphasisOnFill: true,\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n />\n <Input\n label={getMessage(\"brand.filters.name.heading\")}\n placeholder={getMessage(\"user.filters.name.placeholder\")}\n name=\"name\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"name\"],\n loseEmphasisOnFill: true,\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n />\n <Searchable\n label={getMessage(\"seller.filters.seller.name.heading\")}\n placeholder={getMessage(\"user.filters.seller.placeholder\")}\n name=\"seller\"\n searchUrl=\"/account-service/seller\"\n valueKey=\"id\"\n responseKey=\"seller\"\n nameKey=\"name\"\n searchKey=\"name\"\n transformResponse={(response) => response?.data?.seller}\n {...this.generateStateMappers({\n stateKeys: [\"seller\"],\n })}\n />\n <Radio\n className=\"product-status\"\n label={getMessage(\"product.filters.status.heading\")}\n name=\"status\"\n options={[\n {\n text: getMessage(\"product.filters.status.label.all\"),\n value: \"\",\n },\n {\n text: getMessage(\"product.filters.status.label.enabled\"),\n value: \"ACTIVE\",\n },\n {\n text: getMessage(\"product.filters.status.label.disabled\"),\n value: \"INACTIVE\",\n },\n ]}\n {...this.generateStateMappers({\n stateKeys: [\"status\"],\n defaultValue: \"\",\n })}\n />\n </div>\n <SubmitButton>{getMessage(\"product.filters.submitText\")}</SubmitButton>\n <ClearButton>\n {getMessage(\"product.filters.clearFiltersText\")}\n </ClearButton>\n </Form>\n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Dialog, Popup } from \"../../../components/Popup\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport UserForm from \"./Form\";\nimport { getMessage } from \"../../../lib/translator\";\nimport \"./style.css\";\nimport ResetPasswordForm from \"../../hr/UserShifts/Form/ResetPassword\";\nimport Image from \"../../../components/Image\";\n\nimport emptyIcon from \"./user-empty.svg\";\nimport userImage from \"../userImage.svg\";\nimport UserFiltersForm from \"./Filter\";\n\nconst emptyState = {\n icon: emptyIcon,\n message: getMessage(\"sellers.user.add.nouser.text\"),\n actions: ({ onAction }) => (\n <button\n className=\"primary button\"\n onClick={() => {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n + {getMessage(\"sellers.user.add.text\")}\n </button>\n ),\n};\n\nclass UsersActions extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showReset: false,\n showSuccess: false,\n };\n }\n render() {\n const { onAction, id, name } = this.props;\n const { showReset, showSuccess } = this.state;\n return (\n <React.Fragment>\n {showSuccess && (\n <Dialog\n className=\"success\"\n show={this.state.showSuccess}\n title={getMessage(\"users.reset.success.title\")}\n information={getMessage(\"users.reset.success.information\")}\n closeText={getMessage(\"users.reset\")}\n close={() => this.setState({ showSuccess: false })}\n />\n )}\n {showReset && (\n <Popup\n className=\"reset-password\"\n show={this.state.showReset}\n heading={`${getMessage(\"users.reset.title\")} ${name}`}\n close={() => this.setState({ showReset: false })}\n >\n <ResetPasswordForm\n id={id}\n onSuccess={() =>\n this.setState({ showReset: false, showSuccess: true })\n }\n close={() => this.setState({ showReset: false })}\n />\n </Popup>\n )}\n <DropDown icon={<img src={ICONS.VELLIP} alt=\"â‹®\" />}>\n <DropDownItem onClick={() => onAction(TABLE_ACTIONS.EDIT, { id })}>\n {getMessage(\"user.action.edit\")}\n </DropDownItem>\n\n <DropDownItem onClick={() => onAction(TABLE_ACTIONS.DELETE, { id })}>\n {getMessage(\"user.action.delete\")}\n </DropDownItem>\n\n <DropDownItem onClick={() => this.setState({ showReset: true })}>\n {getMessage(\"user.action.reset.password\")}\n </DropDownItem>\n </DropDown>\n </React.Fragment>\n );\n }\n}\n\nconst tableProperties = () => {\n return {\n headers: [\n getMessage(\"sellers.user.table.name\"),\n getMessage(\"sellers.user.table.sellername\"),\n getMessage(\"sellers.user.table.email\"),\n getMessage(\"sellers.user.table.action\"),\n ],\n row: ({ id, name, seller, email, onAction }) => (\n <Row>\n <Cell className=\"user-profile\">\n <Image src={userImage} size=\"sm\" />\n <div className=\"user-details\">\n <div\n className=\"user-name\"\n onClick={() => onAction(TABLE_ACTIONS.EDIT, { id })}\n >\n {name}\n </div>\n </div>\n </Cell>\n <Cell className=\"seller-name\">\n <small>{seller?.name}</small>\n </Cell>\n <Cell className=\"email-address\">\n <small>{email}</small>\n </Cell>\n <Cell className=\"user-actions\">\n <UsersActions id={id} onAction={onAction} name={name} />\n </Cell>\n </Row>\n ),\n };\n};\n\nexport default class SellerUsers extends Component {\n render() {\n let props = this.props;\n return (\n <ListingPage\n menu={props.menu}\n className=\"users-page\"\n addHeading={getMessage(\"sellers.user.add.text\")}\n editHeading={getMessage(\"seller.user.edit.text\")}\n title=\"Users\"\n api={{\n url: \"/account-service/employee\",\n params: { isSeller: true },\n transform: (response) => {\n let updatedResponse;\n const { employee } = response.data;\n if (Array.isArray(employee)) {\n updatedResponse = employee?.map((employ) => {\n const updatedEmployee = {\n ...employ,\n email: employ?.emails?.[0]?.email,\n phone: employ?.phones?.[0]?.phone,\n };\n delete updatedEmployee.emails;\n delete updatedEmployee.phones;\n return updatedEmployee;\n });\n } else {\n updatedResponse = {\n ...employee,\n email: employee?.emails?.[0]?.email,\n phone: employee?.phones?.[0]?.phone,\n };\n delete updatedResponse.emails;\n delete updatedResponse.phones;\n }\n return updatedResponse;\n },\n }}\n emptyState={emptyState}\n tableProperties={tableProperties()}\n headerActions={({ onAction }) => (\n <button\n className=\"primary button\"\n onClick={() => {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n +{\" \"}\n <span className=\"text\">{getMessage(\"sellers.user.add.text\")}</span>\n </button>\n )}\n form={{\n component: UserForm,\n allowDelete: true,\n transformSubmit: (formData) => {\n let { name, email, phone, seller } = formData;\n return {\n name,\n phone,\n email,\n sellerID: seller?.id,\n hasToolAccess: 1,\n };\n },\n }}\n filters={{\n component: UserFiltersForm,\n transformSubmit: (formData) => {\n let filters = Object.assign({}, formData);\n if (formData.seller) {\n filters.sellerID = formData.seller?.id;\n }\n return filters;\n },\n }}\n />\n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Radio,\n Checkbox,\n Searchable,\n VALIDATION_TYPES,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport twoWheelerIcon from \"./2-wheeler.svg\";\nimport fourWheelerIcon from \"./4-wheeler.svg\";\nimport droneIcon from \"./drone.svg\";\nimport \"./style.css\";\n\n/** *`VehicleForm`*\n * :adds management to **`Vehicles`** component\n */\nexport default class VehicleForm extends BaseForm {\n /**\n * changes the status of the Vehicle\n */\n render() {\n const { SubmitButton, CancelButton } = this.buttons;\n const { Form } = this.components;\n return (\n <div className=\"VehicleForm\">\n <Form>\n {/* TODO: ADD localized formatting */}\n <Input\n label={getMessage(\"vehicles.form.number.heading\")}\n placeholder={getMessage(\"vehicles.form.number.placeholder\")}\n name=\"number\"\n type=\"text\"\n required\n {...this.generateStateMappers({\n stateKeys: [\"number\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n <Searchable\n type=\"text\"\n name=\"vehicleVendor\"\n placeholder={getMessage(\"vehicles.form.vendor.placeholder\")}\n valueKey=\"id\"\n nameKey=\"name\"\n searchKey=\"name\"\n responseKey=\"vehiclevendor\"\n label={getMessage(\"vehicles.form.vendor.heading\")}\n searchUrl=\"/logistics-service/vehicle-vendor\"\n transformResponse={(response) => response.data.vehiclevendor}\n createButton={getMessage(\"vehicles.form.vendor.addButton\")}\n required\n {...this.generateStateMappers({\n stateKeys: [\"vehicleVendor\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n <div className=\"field-group\">\n <Radio\n className=\"vehicle-type\"\n label={getMessage(\"vehicles.form.type.heading\")}\n name=\"type\"\n required\n options={[\n {\n text: (\n <div>\n {getMessage(\"vehicles.form.type.label.2w\")}\n <img\n className=\"radio-label-icon\"\n src={twoWheelerIcon}\n alt=\"\"\n />\n </div>\n ),\n value: \"2W\",\n },\n {\n text: (\n <div>\n {getMessage(\"vehicles.form.type.label.4w\")}\n <img\n className=\"radio-label-icon\"\n src={fourWheelerIcon}\n alt=\"\"\n />\n </div>\n ),\n value: \"4W\",\n },\n {\n text: (\n <div>\n {getMessage(\"vehicles.form.type.label.drone\")}\n <img\n className=\"radio-label-icon\"\n src={droneIcon}\n alt=\"\"\n />\n </div>\n ),\n value: \"DRONE\",\n },\n ]}\n {...this.generateStateMappers({\n stateKeys: [\"type\"],\n })}\n />\n <Checkbox\n className=\"availability-status\"\n label={getMessage(\"vehicles.form.status.heading\")}\n inlineLabel={getMessage(\"vehicles.form.status.label.enable\")}\n name=\"status\"\n {...this.generateStateMappers({\n stateKeys: [\"status\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n value={(this.getState([\"status\"]) || \"ENABLED\") === \"ENABLED\"}\n onChange={(checked) => {\n this.updateState([\"status\"], checked ? \"ENABLED\" : \"DISABLED\");\n }}\n />\n </div>\n <div className={`form-actions`}>\n <SubmitButton>\n {getMessage(\"vehicles.form.submitText\")}\n </SubmitButton>\n <CancelButton>{getMessage(\"brand.form.cancelText\")}</CancelButton>\n </div>\n </Form>\n </div>\n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Radio,\n Searchable,\n VALIDATION_TYPES,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\n\n/**\n * *`VehiclesFiltersForm`*\n * : adds filtering to **`Vehicles`** component\n */\nexport default class VehiclesFiltersForm extends BaseForm {\n render() {\n const { SubmitButton, ClearButton } = this.buttons;\n const { Form } = this.components;\n return (\n <Form>\n <div className=\"form-fields\">\n <Input\n label={getMessage(\"vehicles.filters.byNumber.title\")}\n placeholder={getMessage(\"vehicles.filters.byNumber.placeholder\")}\n name=\"number\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"number\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n <Searchable\n type=\"text\"\n name=\"vendor\"\n label={getMessage(\"vehicles.filters.byVendor.title\")}\n placeholder={getMessage(\"vehicles.filters.byVendor.placeholder\")}\n valueKey=\"id\"\n nameKey=\"name\"\n searchKey=\"name\"\n searchUrl=\"/logistics-service/vehicle-vendor\"\n transformResponse={(response) => response.data.vehiclevendor}\n {...this.generateStateMappers({\n stateKeys: [\"vendor\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n <Radio\n label={getMessage(\"vehicles.filters.byStatus.title\")}\n name=\"status\"\n options={[\n {\n text: getMessage(\"vehicles.filters.byStatus.label.all\"),\n value: \"\",\n },\n {\n text: getMessage(\"vehicles.filters.byStatus.label.enabled\"),\n value: \"ENABLED\",\n },\n {\n text: getMessage(\"vehicles.filters.byStatus.label.disabled\"),\n value: \"DISABLED\",\n },\n ]}\n {...this.generateStateMappers({\n stateKeys: [\"status\"],\n defaultValue: \"\",\n })}\n />\n </div>\n <SubmitButton>{getMessage(\"vehicles.filters.submitText\")}</SubmitButton>\n <ClearButton>\n {getMessage(\"vehicles.filters.clearFiltersText\")}\n </ClearButton>\n </Form>\n );\n }\n}\n","import React from \"react\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport { getDefaultStore } from \"../../../containers/StoreSelector\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport VehicleForm from \"./Form\";\nimport VehiclesFilters from \"./Filters\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { Link } from \"react-router-dom\";\nimport { hasPermissions } from \"../../../lib/auth\";\nimport Toggle from \"../../../components/Form/Inputs/Toggle\";\n\nimport \"./style.css\";\nimport emptyIcon from \"./vehicles-empty.svg\";\nimport twoWheelerIcon from \"./Form/2-wheeler.svg\";\nimport fourWheelerIcon from \"./Form/4-wheeler.svg\";\nimport dorneIcon from \"./Form/drone.svg\";\n\n/**\n * defines the state for the scenario where no vehicles are added.\n */\nconst emptyState = (props) => {\n return {\n icon: emptyIcon,\n message: getMessage(\"vehicles.emptyState.helperText\"),\n actions: ({ apiParams, onAction }) => (\n <div className=\"flex\">\n <Link to=\"/logistics/vehicle-vendor\">\n <button className=\"primary button vendor-btn\">\n + {getMessage(\"vehicles.vendor.heading\")}\n </button>\n </Link>\n {hasPermissions(\"logistics\", \"vehicle\", \"post\") && (\n <button\n className=\"primary button\"\n onClick={() => {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n + {getMessage(\"vehicles.header.addText\")}\n </button>\n )}\n </div>\n ),\n };\n};\n\n/**\n * defines the properties with which the header and the rows\n * of the table will be rendered.\n */\nconst tableProperties = () => {\n return {\n headers: [\n getMessage(\"vehicles.header.number\"),\n getMessage(\"vehicles.header.type\"),\n getMessage(\"vehicles.header.vendor\"),\n getMessage(\"vehicles.header.status\"),\n getMessage(\"vehicles.header.onAction\"),\n ],\n row: ({\n id,\n number,\n type,\n status,\n vendor,\n onAction,\n vehicleVendor,\n storeId,\n }) => (\n <Row>\n <Cell>\n {hasPermissions(\"logistics\", \"vehicle\", \"put\") ? (\n <div\n className=\"vehicle-number\"\n onClick={() => onAction(TABLE_ACTIONS.EDIT, { id })}\n >\n {number}\n </div>\n ) : (\n <div>{number}</div>\n )}\n </Cell>\n <Cell>\n {\n <img\n src={type === \"DRONE\" && dorneIcon}\n alt={\"vehicle-icon\"}\n className=\"vehicle-icon\"\n />\n }\n {\n <img\n src={type === \"2W\" && twoWheelerIcon}\n alt={\"vehicle-icon\"}\n className=\"vehicle-icon\"\n />\n }\n {\n <img\n src={type === \"4W\" && fourWheelerIcon}\n alt={\"vehicle-icon\"}\n className=\"vehicle-icon\"\n />\n }\n {[\"4W\", \"2W\", \"DRONE\"].indexOf(type) > -1 ? (\n <span className=\"vehicle-type\">{`${getMessage(\n `vehicles.type.${type.toLowerCase()}`\n )}`}</span>\n ) : (\n type\n )}\n </Cell>\n <Cell className=\"vehicle-vendor\">\n <span className=\"text-muted\">\n <span className=\"vehicle-header-mobile\">{`${getMessage(\n \"vehicles.header.vendor\"\n )}: `}</span>{\" \"}\n <small className=\"vehicle-text-muted\">\n {vehicleVendor ? vehicleVendor.name : \"-\"}\n </small>\n </span>\n </Cell>\n <Cell className=\"vehicle-status\">\n <small className=\"text-muted no-mobile\">\n {[\"ENABLED\", \"DISABLED\"].indexOf(status) > -1\n ? getMessage(`vehicles.status.${status.toLowerCase()}`)\n : status}\n </small>\n <Toggle\n className={`${status} only-mobile`}\n name={status}\n value={status === \"ENABLED\"}\n icons={false}\n onChange={() => {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n { status: status === \"ENABLED\" ? \"DISABLED\" : \"ENABLED\" }\n );\n }}\n />\n </Cell>\n <Cell className=\"vehicle-actions\">\n {hasPermissions(\"logistics\", \"vehicle\", \"put\") && (\n <DropDown icon={<img src={ICONS.VELLIP} alt=\"â‹®\" />}>\n <DropDownItem\n onClick={() => {\n onAction(TABLE_ACTIONS.EDIT, { id });\n }}\n >\n {getMessage(\"vehicles.action.edit\")}\n </DropDownItem>\n {status && status === \"ENABLED\" ? (\n <DropDownItem\n onClick={() => {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n { status: \"DISABLED\" }\n );\n }}\n >\n {getMessage(\"vehicles.disable.text\")}\n </DropDownItem>\n ) : (\n <DropDownItem\n onClick={() => {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n { status: \"ENABLED\" }\n );\n }}\n >\n {getMessage(\"vehicles.enable.text\")}\n </DropDownItem>\n )}\n </DropDown>\n )}\n </Cell>\n </Row>\n ),\n };\n};\nexport default class VehiclesInterface extends React.Component {\n render() {\n let props = this.props;\n return (\n <ListingPage\n title={getMessage(\"vehicles.heading\")}\n addHeading={getMessage(\"vehicles.header.addText\")}\n editHeading={getMessage(\"vehicles.header.editText\")}\n api={{\n url: \"/logistics-service/vehicle\",\n params: getDefaultStore(props.stores),\n transform: (response) => response.data.vehicle,\n }}\n menu={props.menu}\n className=\"vehicles-page\"\n emptyState={emptyState(props)}\n storeDependent\n tableProperties={tableProperties()}\n headerActions={({ onAction }) => (\n <React.Fragment>\n <Link to=\"/logistics/vehicle-vendor\">\n <button className=\"primary button vendor-btn\">\n + {getMessage(\"vehicles.vendor.heading\")}\n </button>\n </Link>\n {hasPermissions(\"logistics\", \"vehicle\", \"post\") && (\n <button\n className=\"button\"\n onClick={() => {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n + {getMessage(\"vehicles.header.addText\")}\n </button>\n )}\n </React.Fragment>\n )}\n form={{\n component: VehicleForm,\n transformSubmit: (formData) => {\n let modifiedData = Object.assign({}, formData);\n if (formData.vehicleVendor) {\n modifiedData[\"vendorId\"] = formData.vehicleVendor.id;\n delete modifiedData.vehicleVendor;\n }\n return modifiedData;\n },\n }}\n filters={{\n component: VehiclesFilters,\n transformSubmit: (formData) => {\n let modifiedData = { ...formData };\n if (formData.vendor) {\n modifiedData[\"vendorId\"] = formData.vendor.id;\n delete modifiedData.vendor;\n }\n if (formData.vehicle) {\n modifiedData[\"vehicle\"] = formData.vehicle.number;\n delete modifiedData.vehicle;\n }\n return modifiedData;\n },\n }}\n />\n );\n }\n}\n","import React from \"react\";\nimport { BaseForm } from \"../../../../components/Form\";\nimport SingleDatePicker from \"../../../../components/Form/Inputs/SingleDatePicker\";\nimport { getMessage } from \"../../../../lib/translator\";\n\n/**\n * *`VehiclesFiltersForm`*\n * : adds filtering to **`Vehicles`** component\n */\nexport default class VehiclePlannerFiltersForm extends BaseForm {\n render() {\n const { SubmitButton, ClearButton } = this.buttons;\n const { Form } = this.components;\n return (\n <Form>\n <div className=\"form-fields\">\n <SingleDatePicker\n allowAllDates\n {...this.generateStateMappers({\n stateKeys: [\"date\"],\n loseEmphasisOnFill: true,\n })}\n />\n </div>\n <SubmitButton>{getMessage(\"vehicles.filters.submitText\")}</SubmitButton>\n <ClearButton>\n {getMessage(\"vehiclePlanner.filters.clearFiltersText\")}\n </ClearButton>\n </Form>\n );\n }\n}\n","import React from \"react\";\n\nconst { Provider, Consumer } = React.createContext(\"vehicle\");\n\nexport { Provider, Consumer };\n","import React from \"react\";\nimport { BaseForm, Input, Select } from \"../../../../components/Form\";\nimport SingleDatePicker from \"../../../../components/Form/Inputs/SingleDatePicker\";\nimport { Consumer } from \"../Context\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport \"./style.css\";\n\nconst slotTimes = () => {\n let timeStrings = [];\n for (let i = 0; i <= 23; i++) {\n if (i < 10) {\n timeStrings.push({ text: `0${i}:00`, value: `0${i}:00:00` });\n timeStrings.push({ text: `0${i}:30`, value: `0${i}:30:00` });\n } else {\n timeStrings.push({ text: `${i}:00`, value: `${i}:00:00` });\n timeStrings.push({ text: `${i}:30`, value: `${i}:30:00` });\n }\n }\n return timeStrings;\n};\n/** *`VehicleForm`*\n * :adds management to **`Vehicles`** component\n */\nexport default class VehicleForm extends BaseForm {\n componentDidUpdate(prevProps, prevState) {\n let values = Object.assign({}, this.state.values);\n let start = values.startTime;\n let end = values.endTime;\n if (start && end && start > end) {\n if (prevState.formError === \"\") {\n this.setState({\n formError: getMessage(\"slots.start.end.mismatch\"),\n });\n }\n }\n if (\n start &&\n end &&\n start < end &&\n prevState.formError === getMessage(\"slots.start.end.mismatch\")\n ) {\n this.setState({\n formError: \"\",\n });\n }\n }\n render() {\n const { SubmitButton, CancelButton } = this.buttons;\n const { Form } = this.components;\n return (\n <div className=\"VehiclePlannerForm\">\n <Consumer>\n {(value) => {\n const editDate = this.props.value && this.props.value.date;\n let countOfCheckedIn =\n value &&\n value.checkedIn &&\n value.checkedIn.filter(\n (details) => details.date === editDate && !details.outTime\n ).length;\n let readOnly = countOfCheckedIn > 0;\n return (\n <Form>\n <div className=\"vehicle-form-fields\">\n <div className=\"form-field field\">\n <label>Date</label>\n <SingleDatePicker\n {...this.generateStateMappers({\n stateKeys: [\"date\"],\n loseEmphasisOnFill: true,\n })}\n enableToday\n readOnly={readOnly}\n disabled={readOnly}\n />\n </div>\n <div />\n <div className=\"form-field\">\n <Select\n name=\"slot-start\"\n label={getMessage(\"slots.startTime\")}\n placeholder={getMessage(\"slots.startsAt\")}\n options={slotTimes()}\n {...this.generateStateMappers({\n stateKeys: [\"shiftStart\"],\n loseEmphasisOnFill: true,\n })}\n required\n disabled={readOnly}\n />\n </div>\n <div className=\"form-field\">\n <Select\n name=\"slot-end\"\n label={getMessage(\"slots.endTime\")}\n placeholder={getMessage(\"slots.endsAt\")}\n options={slotTimes()}\n {...this.generateStateMappers({\n stateKeys: [\"shiftEnd\"],\n loseEmphasisOnFill: true,\n })}\n required\n disabled={readOnly}\n />\n </div>\n <div className=\"form-field\">\n <Input\n name=\"regularCount\"\n label={getMessage(\n \"vehiclePlanner.addShift.form.regular.label\"\n )}\n placeholder={getMessage(\n \"vehiclePlanner.addShift.form.regular.count\"\n )}\n {...this.generateStateMappers({\n stateKeys: [\"regularCount\"],\n loseEmphasisOnFill: true,\n })}\n required\n />\n </div>\n <div className=\"form-field\">\n <Input\n name=\"adhocCount\"\n label={getMessage(\n \"vehiclePlanner.addShift.form.adhoc.label\"\n )}\n placeholder={getMessage(\n \"vehiclePlanner.addShift.form.adhoc.count\"\n )}\n {...this.generateStateMappers({\n stateKeys: [\"adhocCount\"],\n loseEmphasisOnFill: true,\n })}\n />\n </div>\n {this.state.formError && (\n <div className=\"form-error\">{this.state.formError}</div>\n )}\n <div className={`form-actions`}>\n <SubmitButton>\n {getMessage(\"vehicles.form.submitText\")}\n </SubmitButton>\n <CancelButton>{getMessage(\"cancel\")}</CancelButton>\n </div>\n </div>\n </Form>\n );\n }}\n </Consumer>\n </div>\n );\n }\n}\n","import React from \"react\";\nimport { BaseForm, Select } from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nexport default class VehicleReplaceForm extends BaseForm {\n render() {\n let { vehicles, availableVehicles } = this.props;\n let { Form } = this.components;\n let { SubmitButton } = this.buttons;\n return (\n <div className=\"vehicle-replace-form\">\n <Form>\n <div className=\"form-field\">\n <Select\n name=\"old-vehicle\"\n label={getMessage(\n \"vehiclePlanner.replaceVehicle.form.replaced.label\"\n )}\n placeholder={getMessage(\n \"vehiclePlanner.replaceVehicle.form.replaced.placeHolder\"\n )}\n options={vehicles.map((vehicle) => ({\n value: vehicle.vehicleId,\n text: vehicle.number,\n }))}\n {...this.generateStateMappers({\n stateKeys: [\"vehicleId\"],\n loseEmphasisOnFill: true,\n })}\n required\n />\n </div>\n <div className=\"form-field\">\n <Select\n name=\"new-vehicle\"\n label={getMessage(\n \"vehiclePlanner.replaceVehicle.form.replacedBy.label\"\n )}\n placeholder={getMessage(\n \"vehiclePlanner.replaceVehicle.form.replacedBy.placeHolder\"\n )}\n options={availableVehicles.map((vehicle) => ({\n value: vehicle.id,\n text: vehicle.number,\n }))}\n {...this.generateStateMappers({\n stateKeys: [\"replacedBy\"],\n loseEmphasisOnFill: true,\n })}\n required\n />\n </div>\n <SubmitButton>Replace</SubmitButton>\n </Form>\n </div>\n );\n }\n}\n","import React from \"react\";\nimport { BaseForm, Select } from \"../../../../components/Form\";\nimport API from \"../../../../lib/api\";\nimport { Consumer } from \"../Context\";\nimport { Dialog, Popup } from \"../../../../components/Popup\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../../components/DropDown\";\nimport { TABLE_ACTIONS } from \"../../../../containers/ListingPage\";\nimport VehicleReplaceForm from \"../VehicleReplaceForm\";\nimport moment from \"moment\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport vehicleIcon from \"../Form/4-wheeler.svg\";\nimport \"./style.css\";\nimport {\n getStandradDateTime,\n localTimeToUtc,\n utcToLocalTime,\n} from \"../../../../lib/datetime\";\n\nclass VehicleListContainer extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n addVehicle: false,\n };\n this.getVehicleNumber = this.getVehicleNumber.bind(this);\n this.updateOnCheckIn = this.updateOnCheckIn.bind(this);\n this.replaceVehicle = this.replaceVehicle.bind(this);\n }\n getVehicleNumber(num) {\n this.setState({ vehicleNumber: num });\n }\n updateOnCheckIn() {\n let checkInApi = new API({ url: \"/logistics-service/vehicle-attendance\" });\n let params = {\n vehicleId: this.state.vehicleNumber,\n shiftStart: getStandradDateTime(\n localTimeToUtc,\n `${new Date().toISOString().split(\"T\")[0]} ${this.props.shiftStart}`\n ).split(\" \")[1],\n shiftEnd: getStandradDateTime(\n localTimeToUtc,\n `${new Date().toISOString().split(\"T\")[0]} ${this.props.shiftEnd}`\n ).split(\" \")[1],\n regularityType: this.props.type === \"Adhoc\" ? \"ADHOC\" : \"REGULAR\",\n };\n if (this.props.storeId) {\n params.storeId = this.props.storeId;\n }\n checkInApi\n .post(params)\n .then((response) => {\n this.props.updateOnCheckIn(\n this.state.vehicleNumber,\n response.data.vehicleattendance\n );\n this.setState({ addVehicle: false, vehicleNumber: null });\n })\n .catch((error) => {\n console.error(error);\n this.setState({\n formError: error.message,\n showDialog: true,\n });\n });\n }\n updateOnCheckOut(index) {\n let checkOutApi = new API({\n url: `/logistics-service/vehicle-attendance/${this.props.vehicles[index].id}`,\n });\n let params = this.props.vehicles && {\n id: this.props.vehicles[index].id,\n vehicleId: this.props.vehicles[index].vehicleId,\n };\n checkOutApi\n .put(params)\n .then((response) => {\n this.props.updateOnCheckOut(response.data.vehicleattendance);\n })\n .catch((error) => {\n console.error(error);\n this.setState({\n formError: error.message,\n showDialog: true,\n });\n });\n }\n replaceVehicle(formData) {\n const pathId = this.props.vehicles.filter(\n (vehicle) => vehicle.vehicleId === parseInt(formData.vehicleId, 10)\n )[0].id;\n let checkOutApi = new API({\n url: `/logistics-service/vehicle-attendance/${pathId}`,\n });\n let params = formData && {\n id: pathId,\n vehicleId: formData.vehicleId,\n replacedBy: formData.replacedBy,\n };\n if (this.props.storeId) {\n params.storeId = this.props.storeId;\n }\n checkOutApi\n .put(params)\n .then((response) => {\n this.setState({ showReplaceForm: false });\n this.props.updateOnReplace(response.data.vehicleattendance);\n })\n .catch((error) => {\n console.error(error);\n this.setState({ formError: error.message, showDialog: true });\n });\n }\n render() {\n let { vehicles, type, availableVehicles, count, date } = this.props;\n let { Form } = this.components;\n return (\n <Consumer>\n {(value) => (\n <div className=\"vehicle-container-block\">\n <div className=\"vehicle-container-heading\">\n <div className=\"vehicle-count\">{count}</div>\n <div className=\"vehicle-type\">\n {getMessage(\"vehiclePlanner.vehicleShift.vehilceCount\", {\n type,\n })}\n </div>\n </div>\n <div className=\"vehicle-list\">\n {vehicles.length ? (\n <div className=\"vehicle-number-list\">\n {vehicles.map((vehicle, index) => (\n <div className=\"vehicle-number-container\" key={vehicle.id}>\n <div className=\"vehicle-number\">{vehicle.number}</div>\n <button\n className=\"button\"\n onClick={() => this.updateOnCheckOut(index)}\n >\n {getMessage(\"vehiclePlanner.checkout.button\")}\n </button>\n </div>\n ))}\n </div>\n ) : (\n <div className=\"empty-vehicle-list\">\n <img\n className=\"vehicle-icon\"\n src={vehicleIcon}\n alt=\"vehicle-icon\"\n />\n <div className=\"no-vehicle-text\">\n {getMessage(\"vehiclePlanner.vehicleList.novehicle\", {\n type,\n })}\n </div>\n </div>\n )}\n {!this.state.addVehicle && (\n <button\n className=\"primary button add-vehicle-btn\"\n disabled={\n vehicles.length === count ||\n date !== moment().format(\"YYYY-MM-DD\")\n }\n onClick={() => this.setState({ addVehicle: true })}\n >\n {getMessage(\"vehiclePlanner.checkin.button\")}\n </button>\n )}\n {count !== 0 &&\n vehicles.length === count &&\n date === moment().format(\"YYYY-MM-DD\") && (\n <div>\n <div\n className=\"replace-text\"\n onClick={() => this.setState({ showReplaceForm: true })}\n >\n {getMessage(\"vehiclePlanner.vehicleList.replace\")}\n </div>\n </div>\n )}\n {this.state.addVehicle && (\n <Form>\n <div className=\"checkin-vehilce-form\">\n <Select\n name=\"vehicle\"\n placeholder={getMessage(\n \"vehiclePlanner.checkin.form.select.plceholder\"\n )}\n options={availableVehicles.map((vehicle) => ({\n text: vehicle.number,\n value: vehicle.id,\n }))}\n onChange={this.getVehicleNumber}\n value={this.state.vehicleNumber}\n />\n <div className=\"checkin-vehicle-btn\">\n <button\n className=\"primary button add-vehicle-btn\"\n disabled={\n this.state.submitting || !this.state.vehicleNumber\n }\n onClick={this.updateOnCheckIn}\n >\n {getMessage(\"vehiclePlanner.checkin.form.addbutton\")}\n </button>\n <button\n className=\"button add-vehicle-btn\"\n onClick={() =>\n this.setState({\n addVehicle: false,\n vehicleNumber: null,\n })\n }\n >\n {getMessage(\"vehiclePlanner.checkin.form.cancelbutton\")}\n </button>\n </div>\n </div>\n </Form>\n )}\n </div>\n <Popup\n heading={getMessage(\n \"vehiclePlanner.replaceVehicle.popup.heading\"\n )}\n show={this.state.showReplaceForm}\n close={() => this.setState({ showReplaceForm: false })}\n >\n <VehicleReplaceForm\n vehicles={vehicles}\n availableVehicles={availableVehicles}\n onSubmit={this.replaceVehicle}\n />\n </Popup>\n <Dialog\n show={this.state.showDialog}\n close={() => this.setState({ showDialog: false })}\n information={this.state.formError}\n closeText={getMessage(\"vehiclePlanner.error.dialog.okay\")}\n />\n </div>\n )}\n </Consumer>\n );\n }\n}\n\nconst VehicleShift = (props) => {\n let {\n shiftStart,\n shiftEnd,\n regularCount,\n adhocCount,\n index,\n id,\n storeId,\n onAction,\n date,\n } = props;\n return (\n <Consumer>\n {(value) => {\n let availableVehicles =\n value.all && value.all.filter((vehicle) => !vehicle.isCheckedIn);\n let checkedInVehilces =\n value.checkedIn &&\n value.checkedIn.filter((vehicle) => {\n let startTime = getStandradDateTime(\n utcToLocalTime,\n `${vehicle.expectedIn.split(\" \")[0]} ${\n vehicle.expectedIn.split(\" \")[1]\n }`\n ).split(\" \")[1];\n let endTime = getStandradDateTime(\n utcToLocalTime,\n `${vehicle.expectedOut.split(\" \")[0]} ${\n vehicle.expectedOut.split(\" \")[1]\n }`\n ).split(\" \")[1];\n return (\n startTime === shiftStart &&\n endTime === shiftEnd &&\n vehicle.outTime === null\n );\n });\n let regularVehicles =\n checkedInVehilces &&\n checkedInVehilces.filter(\n (vehicle) => vehicle.regularityType === \"REGULAR\"\n );\n let adhocVehicles =\n checkedInVehilces &&\n checkedInVehilces.filter(\n (vehicle) => vehicle.regularityType === \"ADHOC\"\n );\n regularVehicles =\n regularVehicles &&\n regularVehicles.map((regvehicle) => {\n let idx = value.all.findIndex(\n (vehicle) => vehicle.id === regvehicle.vehicleId\n );\n regvehicle.number = value.all[idx].number;\n return regvehicle;\n });\n adhocVehicles =\n adhocVehicles &&\n adhocVehicles.map((adhvehicle) => {\n let idx = value.all.findIndex(\n (vehicle) => vehicle.id === adhvehicle.vehicleId\n );\n adhvehicle.number = value.all[idx].number;\n return adhvehicle;\n });\n return (\n <div className=\"vehilce-shift-container\">\n <div className=\"vehicle-shift-header\">\n <div className=\"shift-name-wrapper\">\n <div className=\"shift-name\">{`Shift ${index + 1}`}</div>\n <DropDown icon={<img src={ICONS.VELLIP} alt=\"â‹®\" />}>\n <DropDownItem\n onClick={() => {\n onAction(TABLE_ACTIONS.EDIT, { id });\n }}\n >\n {getMessage(\"vehiclePlanner.action.edit\")}\n </DropDownItem>\n <DropDownItem\n onClick={() => {\n onAction(TABLE_ACTIONS.DELETE, { id });\n }}\n >\n {getMessage(\"vehiclePlanner.action.delete\")}\n </DropDownItem>\n </DropDown>\n </div>\n <div className=\"vehicle-shift\">\n <div className=\"vehicle-shift-time\">\n {getMessage(\"vehiclePlanner.vehicleShift.startTime\", {\n time: moment(shiftStart, [\"hh:mm\"]).format(\"hh:mm A\"),\n })}\n </div>\n <div className=\"vehicle-shift-time\">\n {getMessage(\"vehiclePlanner.vehicleShift.endTime\", {\n time: moment(shiftEnd, [\"hh:mm\"]).format(\"hh:mm A\"),\n })}\n </div>\n </div>\n </div>\n <div className=\"vehicle-container\">\n <VehicleListContainer\n count={regularCount}\n vehicles={regularVehicles || []}\n id={id}\n shiftStart={shiftStart}\n shiftEnd={shiftEnd}\n type=\"Regular\"\n availableVehicles={availableVehicles}\n storeId={storeId}\n updateOnCheckIn={value.updateOnCheckIn}\n updateOnCheckOut={value.updateOnCheckOut}\n updateOnReplace={value.updateOnReplace}\n date={date}\n />\n <VehicleListContainer\n count={adhocCount}\n vehicles={adhocVehicles || []}\n id={id}\n shiftStart={shiftStart}\n shiftEnd={shiftEnd}\n type=\"Adhoc\"\n availableVehicles={availableVehicles}\n storeId={storeId}\n updateOnCheckIn={value.updateOnCheckIn}\n updateOnCheckOut={value.updateOnCheckOut}\n updateOnReplace={value.updateOnReplace}\n date={date}\n />\n </div>\n </div>\n );\n }}\n </Consumer>\n );\n};\n\nexport default VehicleShift;\n","import React, { Component } from \"react\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport StoreSelector, {\n getDefaultStore,\n} from \"../../../containers/StoreSelector\";\nimport VehilcePlannerFilterForm from \"./Filters\";\nimport AddShiftForm from \"./Form\";\nimport { getMessage } from \"../../../lib/translator\";\nimport moment from \"moment\";\nimport { Provider } from \"./Context\";\n\nimport \"./style.css\";\nimport emptyIcon from \"./vehicles-empty.svg\";\nimport VehicleShift from \"./VehicleShift\";\nimport API from \"../../../lib/api\";\nimport { isExtensionEnabled } from \"../../../lib/auth\";\nimport {\n utcToLocalTime,\n localTimeToUtc,\n getStandradDateTime,\n} from \"../../../lib/datetime\";\nimport { get } from \"../../../lib/storage\";\n\n/**\n * defines the state for the scenario where no vehicles are added.\n */\nconst emptyState = (props) => {\n return {\n icon: emptyIcon,\n message: getMessage(\"vehiclePlanner.emptyState.message\"),\n actions: ({ apiParams, onAction }) => (\n <div className=\"flex\">\n {isExtensionEnabled(\"MultiStoreSupport\") && (\n <StoreSelector\n value={apiParams.storeId}\n stores={props.stores}\n onChange={(storeId) => {\n onAction(TABLE_ACTIONS.SET_API_PARAMS, { storeId });\n }}\n />\n )}\n <button\n className=\"primary button\"\n onClick={() => {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n + {getMessage(\"vehiclePlanner.addShift.button\")}\n </button>\n </div>\n ),\n };\n};\n\n/**\n * defines the properties with which the header and the rows\n * of the table will be rendered.\n */\nconst tableProperties = {\n row: (props) => <VehicleShift {...props} />,\n};\n\nclass VehiclePlanner extends Component {\n constructor(props) {\n super(props);\n this.state = {\n vehicles: {},\n };\n this.fetchVehicles = this.fetchVehicles.bind(this);\n this.updateVehicleOnCheckin = this.updateVehicleOnCheckin.bind(this);\n this.updateVehicleOnCheckOut = this.updateVehicleOnCheckOut.bind(this);\n this.updateVehicleOnReplace = this.updateVehicleOnReplace.bind(this);\n }\n updateVehicleOnCheckin(vehicleId, response) {\n let addedVehicleIndex = this.state.vehicles.all.findIndex(\n (vehicle) => vehicle.id === parseInt(vehicleId, 10)\n );\n let availableVehicles = JSON.parse(JSON.stringify(this.state.vehicles.all));\n let checkedInVehicles = JSON.parse(\n JSON.stringify(this.state.vehicles.checkedIn)\n );\n availableVehicles[addedVehicleIndex].isCheckedIn = true;\n checkedInVehicles.push(response);\n this.setState({\n vehicles: {\n ...this.state.vehicles,\n checkedIn: checkedInVehicles,\n all: availableVehicles,\n },\n });\n }\n updateVehicleOnCheckOut(response) {\n let removedVehicleIndex = this.state.vehicles.all.findIndex(\n (vehicle) => vehicle.id === response.vehicleId\n );\n let availableVehicles = JSON.parse(JSON.stringify(this.state.vehicles.all));\n let checkedInVehicles = JSON.parse(\n JSON.stringify(this.state.vehicles.checkedIn)\n );\n availableVehicles[removedVehicleIndex].isCheckedIn = false;\n checkedInVehicles =\n (checkedInVehicles &&\n checkedInVehicles.filter(\n (vehicle) => vehicle.vehicleId !== response.vehicleId\n )) ||\n [];\n checkedInVehicles.push(response);\n this.setState({\n vehicles: {\n ...this.state.vehicles,\n checkedIn: checkedInVehicles,\n all: availableVehicles,\n },\n });\n }\n updateVehicleOnReplace(response) {\n let removedVehicleIndex = this.state.vehicles.all.findIndex(\n (vehicle) => vehicle.id === response.vehicleId\n );\n let addedVehicleIndex = this.state.vehicles.all.findIndex(\n (vehicle) => vehicle.id === response.replacedBy\n );\n let availableVehicles = JSON.parse(JSON.stringify(this.state.vehicles.all));\n availableVehicles[removedVehicleIndex].isCheckedIn = false;\n availableVehicles[addedVehicleIndex].isCheckedIn = true;\n this.checkedInVehiclesApi = new API({\n url: \"/logistics-service/vehicle-attendance\",\n });\n let checkedInVehiclesParams = {\n date: moment().format(\"YYYY-MM-DD\"),\n storeId: get(\"store\") || getDefaultStore(this.props.stores).storeId,\n paginated: \"false\",\n };\n this.checkedInVehiclesApi\n .get(checkedInVehiclesParams)\n .then((response) => {\n this.setState({\n vehicles: {\n ...this.state.vehicles,\n checkedIn: response.data.vehicleattendance,\n all: availableVehicles,\n },\n });\n })\n .catch((error) => {\n console.error(error);\n this.setState({ formError: error.message });\n });\n }\n fetchVehicles() {\n this.checkedInVehiclesApi = new API({\n url: \"/logistics-service/vehicle-attendance\",\n });\n let checkedInVehiclesParams = {\n date: moment().utc().format(\"YYYY-MM-DD\"),\n storeId: get(\"store\") || getDefaultStore(this.props.stores).storeId,\n paginated: \"false\",\n };\n this.allVehilcesApi = new API({ url: \"/logistics-service/vehicle\" });\n let storeId = get(\"store\") || getDefaultStore(this.props.stores).storeId;\n let allVehilceParams = { storeId: storeId, paginated: \"false\" };\n Promise.all([\n this.checkedInVehiclesApi.get(checkedInVehiclesParams),\n this.allVehilcesApi.get(allVehilceParams),\n ])\n .then(([checkedInVehicleResponse, allVehicleResponse]) => {\n this.setState({\n vehicles: {\n checkedIn: checkedInVehicleResponse.data.vehicleattendance,\n all: allVehicleResponse.data.vehicle,\n updateOnCheckIn: this.updateVehicleOnCheckin,\n updateOnCheckOut: this.updateVehicleOnCheckOut,\n updateOnReplace: this.updateVehicleOnReplace,\n },\n });\n })\n .catch((error) => {\n console.error(error);\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n if (error.message === \"cancelled\") {\n return;\n }\n this.setState({ formError: error.message });\n });\n }\n componentDidMount() {\n this.fetchVehicles();\n }\n componentWillUnmount() {\n this.checkedInVehiclesApi && this.checkedInVehiclesApi.cancel();\n this.allVehilcesApi && this.allVehilcesApi.cancel();\n }\n render() {\n return (\n <Provider value={this.state.vehicles}>\n <ListingPage\n title={getMessage(\"vehiclePlanner.heading\")}\n className=\"vehicle-planner-page\"\n api={{\n url: \"/logistics-service/vehicle-planner\",\n params: {\n date: moment().format(\"YYYY-MM-DD\"),\n },\n onUpdateStore: this.fetchVehicles,\n transform: (response) => {\n if (Array.isArray(response.data.vehicleplanner)) {\n const newResponse = response.data.vehicleplanner.map(\n (planner) => {\n const final = getStandradDateTime(\n utcToLocalTime,\n `${planner.date} ${planner.shiftStart}`\n ).split(\" \");\n planner.date = final[0];\n planner.shiftStart = final[1];\n planner.shiftEnd = getStandradDateTime(\n utcToLocalTime,\n `${planner.date} ${planner.shiftEnd}`\n ).split(\" \")[1];\n return planner;\n }\n );\n return newResponse;\n } else {\n const obj = response.data.vehicleplanner;\n const final = getStandradDateTime(\n utcToLocalTime,\n `${obj.date} ${obj.shiftStart}`\n ).split(\" \");\n obj.date = final[0];\n obj.shiftStart = final[1];\n obj.shiftEnd = getStandradDateTime(\n utcToLocalTime,\n `${obj.date} ${obj.shiftEnd}`\n ).split(\" \")[1];\n return obj;\n }\n },\n }}\n menu={this.props.menu}\n addHeading={getMessage(\"vehiclePlanner.addShift.heading\")}\n editHeading={getMessage(\"vehiclePlanner.editShift.heading\")}\n emptyState={emptyState(this.props)}\n headerActions={({ apiParams, onAction }) => (\n <div className=\"flex\">\n <button\n className=\"primary button\"\n onClick={() => {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n +{\" \"}\n <span className=\"text\">\n {getMessage(\"vehiclePlanner.addShift.button\")}\n </span>\n </button>\n </div>\n )}\n storeDependent\n addNewItemToLast\n tableProperties={tableProperties}\n form={{\n component: AddShiftForm,\n transformSubmit: (formData) => {\n const final = getStandradDateTime(\n localTimeToUtc,\n `${formData.date} ${formData.shiftStart}`\n ).split(\" \");\n let params = {\n date: final[0],\n shiftStart: final[1],\n shiftEnd: getStandradDateTime(\n localTimeToUtc,\n `${formData.date} ${formData.shiftEnd}`\n ).split(\" \")[1],\n regularCount: Number(formData.regularCount),\n };\n if (formData.adhocCount && formData.adhocCount !== \"\") {\n params.adhocCount = Number(formData.adhocCount);\n }\n return params;\n },\n overwriteWithApiParams: false,\n filterBeforeAdding: (response, _this) => {\n if (\n _this.state.data.filters.date === response.date ||\n _this.state.apiParams.date === response.date\n ) {\n return response;\n } else {\n return null;\n }\n },\n }}\n filters={{\n component: VehilcePlannerFilterForm,\n transformSubmit: (formData) => {\n if (!formData.date) {\n formData.date = moment().format(\"YYYY-MM-DD\");\n }\n return formData;\n },\n forceShow: true,\n }}\n />\n </Provider>\n );\n }\n}\n\nexport default VehiclePlanner;\n","import React from \"react\";\nimport { BaseForm, Input, VALIDATION_TYPES } from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\n// import './style.css'\n\n/** *`VehicleForm`*\n * :adds management to **`Vehicles`** component\n */\nexport default class VehicleForm extends BaseForm {\n /**\n * changes the status of the Vehicle\n */\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n return (\n <div className=\"VehicleForm\">\n <Form>\n <Input\n label={getMessage(\"vehicles.form.vendor.heading\")}\n placeholder={getMessage(\"vehicles.form.vendor.placeholder\")}\n name=\"number\"\n type=\"text\"\n required\n {...this.generateStateMappers({\n stateKeys: [\"name\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n <div className={`form-actions`}>\n <SubmitButton>\n {getMessage(\"vehicles.vendor.addButton\")}\n </SubmitButton>\n </div>\n </Form>\n </div>\n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Radio,\n VALIDATION_TYPES,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\n\n/**\n * *`VehicleVendorFiltersForm`*\n * : adds filtering to **`Vehicles`** component\n */\nexport default class VehicleVendorsFiltersForm extends BaseForm {\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n return (\n <Form>\n <div className=\"form-fields\">\n <Input\n label={getMessage(\"vehicles.filters.byNumber.title\")}\n placeholder={getMessage(\"vehicles.filters.byNumber.placeholder\")}\n name=\"number\"\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"name\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n <Radio\n label={getMessage(\"vehicles.filters.byStatus.title\")}\n name=\"status\"\n options={[\n {\n text: getMessage(\"vehicles.filters.byStatus.label.all\"),\n value: \"\",\n },\n {\n text: getMessage(\"vehicles.filters.byStatus.label.enabled\"),\n value: \"ENABLED\",\n },\n {\n text: getMessage(\"vehicles.filters.byStatus.label.disabled\"),\n value: \"DISABLED\",\n },\n ]}\n {...this.generateStateMappers({\n stateKeys: [\"status\"],\n defaultValue: \"\",\n })}\n />\n </div>\n <SubmitButton>{getMessage(\"vehicles.filters.submitText\")}</SubmitButton>\n </Form>\n );\n }\n}\n","import React from \"react\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport { getMessage } from \"../../../lib/translator\";\nimport VehicleForm from \"./Form\";\nimport VehicleVendorsFilter from \"./Filter\";\nimport { Link } from \"react-router-dom\";\nimport Toggle from \"../../../components/Form/Inputs/Toggle\";\n\nimport \"./style.css\";\nimport emptyIcon from \"../Vehicles/vehicles-empty.svg\";\n\n/**\n * defines the state for the scenario where no vehicle vendor is added.\n */\nconst emptyState = (props) => {\n return {\n icon: emptyIcon,\n message: getMessage(\"vehicles.emptyState.helperText\"),\n actions: ({ apiParams, onAction }) => (\n <div className=\"flex\">\n <Link to=\"/logistics/vehicles\">\n <button className=\"primary button vehicle-btn\">\n + {getMessage(\"vehicles.heading\")}\n </button>\n </Link>\n <button\n className=\"button\"\n onClick={() => {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n + {getMessage(\"vehicles.vendor.addButton\")}\n </button>\n </div>\n ),\n };\n};\n\n/**\n * defines the properties with which the header and the rows\n * of the table will be rendered.\n */\nconst tableProperties = {\n headers: [\n getMessage(\"vehicles.vendor.heading.name\"),\n getMessage(\"vehicles.vendor.heading.status\"),\n getMessage(\"vehicles.vendor.heading.action\"),\n ],\n row: ({ id, name, status, onAction }) => (\n <Row>\n <Cell>\n <div className=\"vehicle-vendor-name\">{name}</div>\n </Cell>\n <Cell>\n <div className=\"vehicle-vendor-status\">{status}</div>\n <Toggle\n className={`${status} vehicle-vendor-enable-mobileview`}\n name={status}\n value={status === \"ENABLED\"}\n icons={false}\n onChange={() => {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n { status: status === \"ENABLED\" ? \"DISABLED\" : \"ENABLED\" }\n );\n }}\n />\n </Cell>\n <Cell>\n <DropDown icon={<img src={ICONS.VELLIP} alt=\"â‹®\" />}>\n {status && status === \"ENABLED\" ? (\n <DropDownItem\n onClick={() => {\n onAction(TABLE_ACTIONS.UPDATE, { id }, { status: \"DISABLED\" });\n }}\n >\n {getMessage(\"vehicles.disable.text\")}\n </DropDownItem>\n ) : (\n <DropDownItem\n onClick={() => {\n onAction(TABLE_ACTIONS.UPDATE, { id }, { status: \"ENABLED\" });\n }}\n >\n {getMessage(\"vehicles.enable.text\")}\n </DropDownItem>\n )}\n </DropDown>\n </Cell>\n </Row>\n ),\n};\n\nconst VehiclesInterface = (props) => (\n <ListingPage\n title={getMessage(\"vehicles.vendor.heading\")}\n api={{\n url: \"/logistics-service/vehicle-vendor\",\n transform: (response) => response.data.vehiclevendor,\n }}\n menu={props.menu}\n addHeading={getMessage(\"vehicles.form.vendor.addButton\")}\n className=\"vehicle-vendor-page\"\n emptyState={emptyState(props)}\n tableProperties={tableProperties}\n headerActions={({ onAction }) => (\n <React.Fragment>\n <Link to=\"/logistics/vehicles\">\n <button className=\"primary button vehicle-btn\">\n + {getMessage(\"vehicles.heading\")}\n </button>\n </Link>\n <button\n className=\"button\"\n onClick={() => {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n +{\" \"}\n <span className=\"text\">\n {getMessage(\"vehicles.vendor.addButton\")}\n </span>\n </button>\n </React.Fragment>\n )}\n form={{\n component: VehicleForm,\n transformSubmit: (formData) => {\n let modifiedData = Object.assign({}, formData);\n return modifiedData;\n },\n }}\n filters={{\n component: VehicleVendorsFilter,\n transformSubmit: (formData) => {\n let modifiedData = { ...formData };\n return modifiedData;\n },\n }}\n />\n);\n\nexport default VehiclesInterface;\n","import React from \"react\";\nimport {\n BaseForm,\n Searchable,\n Radio,\n SingleDatePicker,\n Input,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { get } from \"../../../../lib/storage\";\n\nexport default class TripFiltersForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.values.status = \"\";\n }\n render() {\n const { SubmitButton, ClearButton } = this.buttons;\n const { Form } = this.components;\n const storeId = get(\"store\");\n return (\n <Form>\n <div className=\"form-fields\">\n <Searchable\n label={getMessage(\"trips.filter.byVehicleNumber.heading\")}\n placeholder={getMessage(\"trips.filter.byVehicleNumber.placeholder\")}\n name=\"vehicle\"\n transformRequest={(searchText, paramsDefault) => {\n paramsDefault[\"storeId\"] = storeId;\n return paramsDefault;\n }}\n searchUrl={\"/logistics-service/vehicle\"}\n valueKey=\"id\"\n nameKey=\"number\"\n searchKey=\"number\"\n transformResponse={(response) => response.data.vehicle}\n {...this.generateStateMappers({\n stateKeys: [\"vehicle\"],\n loseEmphasisOnFill: true,\n })}\n />\n <SingleDatePicker\n isOutsideRange\n label={getMessage(\"trips.filter.byDates.heading\")}\n {...this.generateStateMappers({\n stateKeys: [\"date\"],\n loseEmphasisOnFill: true,\n })}\n displayFormat=\"YYYY-MM-DD\"\n placeholder=\"Date\"\n />\n <Input\n label={getMessage(\"trips.filter.byOrderNumber.heading\")}\n placeholder={getMessage(\"trips.filter.byOrderNumber.placeholder\")}\n name=\"order\"\n {...this.generateStateMappers({\n stateKeys: [\"orderNumber\"],\n loseEmphasisOnFill: true,\n })}\n />\n <Searchable\n label={getMessage(\"trips.filter.byRunnerExecutive.heading\")}\n placeholder={getMessage(\n \"trips.filter.byRunnerExecutive.placeholder\"\n )}\n name=\"runnerExecutive\"\n transformRequest={(searchText, paramsDefault) => {\n paramsDefault[\"roleId\"] = 4;\n return paramsDefault;\n }}\n searchUrl={\"/account-service/employee\"}\n valueKey=\"id\"\n nameKey=\"name\"\n searchKey=\"name\"\n transformResponse={(response) => response.data.employee}\n {...this.generateStateMappers({\n stateKeys: [\"roles\"],\n loseEmphasisOnFill: true,\n })}\n />\n <Radio\n label={getMessage(\"trips.filter.byStatus.heading\")}\n name=\"status\"\n className=\"status-filter\"\n options={[\n {\n text: getMessage(\"trips.filter.byStatus.all\"),\n value: \"\",\n },\n {\n text: getMessage(\"trips.filter.byStatus.open\"),\n value: \"OPEN\",\n },\n {\n text: getMessage(\"trips.filter.byStatus.close\"),\n value: \"CLOSE\",\n },\n {\n text: getMessage(\"trips.filter.byStatus.completed\"),\n value: \"FIN_CLOSE\",\n },\n ]}\n {...this.generateStateMappers({\n stateKeys: [\"status\"],\n loseEmphasisOnFill: true,\n })}\n />\n </div>\n <SubmitButton>{getMessage(\"trips.filters.submitText\")}</SubmitButton>\n <ClearButton>\n {getMessage(\"trips.filters.clearFiltersText\")}\n </ClearButton>\n </Form>\n );\n }\n}\n","import { getSession } from \"../auth\";\n\nfunction getCurrency() {\n const organization = getSession().organization;\n return organization && organization.currency;\n}\n\nexport { getCurrency };\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { BaseForm, Input } from \"../../../../components/Form\";\nimport Table, { Row, Cell, Header } from \"../../../../components/Table\";\nimport Loader from \"../../../../components/Loader\";\nimport AuthenticatedPage from \"../../../../containers/AuthenticatedPage\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { getCurrency } from \"../../../../lib/userDetails\";\nimport API from \"../../../../lib/api\";\nimport { get } from \"../../../../lib/storage\";\nimport { getDefaultStore } from \"../../../../containers/StoreSelector\";\nimport \"./style.css\";\n\nexport default class TripPaymentsForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n values: {},\n };\n this.handleCancel = this.handleCancel.bind(this);\n this.checkSubmittable = this.checkSubmittable.bind(this);\n }\n\n componentDidUpdate() {\n let remainingAmounts = {};\n let totalRemaining = 0;\n let flag = false;\n Object.keys(this.state.values).forEach((order) => {\n remainingAmounts[order] =\n Math.round(\n (parseFloat(this.state.pendingAmounts[order]) -\n Object.keys(this.state.values[order])\n .map((k) =>\n this.state.values[order][k][\"amount\"]\n ? this.state.values[order][k][\"amount\"]\n : 0\n )\n .reduce((a, c) => parseFloat(a) + parseFloat(c))) *\n 1e12\n ) / 1e12;\n totalRemaining =\n Math.round((totalRemaining + remainingAmounts[order]) * 1e12) / 1e12;\n if (this.state.remainingAmounts) {\n if (this.state.remainingAmounts[order] !== remainingAmounts[order]) {\n flag = true;\n }\n }\n });\n flag && this.setState({ remainingAmounts, totalRemaining });\n }\n\n componentDidMount() {\n this.setState({\n loading: true,\n });\n const storeId = get(\"store\") || getDefaultStore().storeId;\n const id = this.props.match.params.id;\n const api = new API({ url: `/logistics-service/trip/${id}` });\n const orderConfigApi = new API({\n url: `/config-service/config/order?storeId=${storeId}`,\n });\n Promise.all([api.get(), orderConfigApi.get()])\n .then(([apiResponse, configResponse]) => {\n let values = {};\n let pendingAmounts = {};\n apiResponse = apiResponse.data.trip;\n let allOrders = apiResponse.orders;\n let disabledModes =\n configResponse.data.order?.finCloseDisabledPaymentModes;\n disabledModes = disabledModes || [];\n const paymentModesResponse = configResponse.data.order?.paymentMethods;\n let paymentMethods;\n if (paymentModesResponse?.INTERNAL_APP?.[\"DELIVERY\"]) {\n paymentMethods = paymentModesResponse.INTERNAL_APP[\"DELIVERY\"];\n } else {\n paymentMethods = configResponse.data.order.paymentMethods?.[\n \"DELIVERY\"\n ]?.filter((mode) => disabledModes.indexOf(mode) === -1);\n }\n let ordersWithPendingPayments =\n apiResponse.orders &&\n apiResponse.orders.filter(({ pendingAmount }) =>\n Number(pendingAmount)\n );\n ordersWithPendingPayments &&\n ordersWithPendingPayments.forEach((order, i) => {\n pendingAmounts[order.referenceNumber] = Number(order.pendingAmount);\n if (order.paymentsByRE && order.paymentsByRE.length > 0) {\n let orderPaymentModes = {};\n paymentMethods.forEach((payment) => {\n let value = order.paymentsByRE.filter(\n (mode) => mode[payment]\n )[0];\n if (value) {\n orderPaymentModes[payment] = {\n amount: Number(Number(value[payment]?.amount).toFixed(2)),\n transactionId: value[payment].transaction_id,\n };\n } else {\n orderPaymentModes[payment] = {\n amount: 0,\n transactionId: null,\n };\n }\n });\n values[order.referenceNumber] = orderPaymentModes;\n } else {\n let orderPaymentModes = {};\n paymentMethods.forEach((payment) => {\n let value = order.payment?.filter((mode) => mode[payment])[0];\n if (value) {\n orderPaymentModes[payment] = {\n amount: Number(Number(value[payment]?.amount).toFixed(2)),\n transactionId: value[payment].transactionId,\n };\n } else {\n orderPaymentModes[payment] = {\n amount: 0,\n transactionId: null,\n };\n }\n });\n values[order.referenceNumber] = orderPaymentModes;\n }\n });\n this.setState(\n {\n paymentModes: paymentMethods,\n loading: false,\n values: values,\n allOrders: allOrders,\n pendingAmounts: pendingAmounts,\n storeId: apiResponse.storeId,\n },\n () => {\n let remainingAmounts = {};\n let totalRemaining = 0;\n Object.keys(this.state.values).forEach((order) => {\n remainingAmounts[order] =\n Math.round(\n (parseFloat(this.state.pendingAmounts[order]) -\n Object.keys(this.state.values[order])\n .map((k) =>\n this.state.values[order][k][\"amount\"]\n ? this.state.values[order][k][\"amount\"]\n : 0\n )\n .reduce((a, c) => parseFloat(a) + parseFloat(c))) *\n 1e12\n ) / 1e12;\n totalRemaining =\n Math.round((totalRemaining + remainingAmounts[order]) * 1e12) /\n 1e12;\n });\n this.setState({ remainingAmounts, totalRemaining });\n }\n );\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n formatPayload = (payload) => {\n const tempData = { ...payload };\n Object.entries(tempData).forEach(([key, item]) => {\n Object.keys(item).forEach((obj) => {\n if (Number(item[obj]?.amount) === 0) {\n delete item[obj];\n }\n });\n });\n return tempData;\n };\n\n onSubmit(formData) {\n let data = JSON.parse(JSON.stringify(formData));\n const api = new API({\n url: `/logistics-service/trip/${this.props.match.params.id}`,\n });\n let params = {};\n params.payments = this.formatPayload(data);\n params.status = \"FIN_CLOSE\";\n params.storeId = this.state.storeId;\n params.referenceNumber = Object.keys(data);\n api\n .put(params)\n .then(\n (response) => {\n this.props.history.goBack();\n },\n (error) => {\n this.setState({\n formError: error.message,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n handleCancel() {\n this.props.history.goBack();\n }\n\n checkSubmittable() {\n let allRemaining = this.state.remainingAmounts;\n let flag = true;\n Object.keys(allRemaining).forEach((order) => {\n if (allRemaining[order] !== 0) {\n flag = false;\n return false;\n }\n });\n return flag;\n }\n\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n const { paymentModes, loading, values, pendingAmounts, allOrders } =\n this.state;\n return (\n <AuthenticatedPage menu={this.props.menu}>\n <h1>{getMessage(\"order.register.payments\")}</h1>\n {loading ? (\n <Loader />\n ) : (\n <div className=\"trip-payments-form\">\n <Form>\n {this.state.formError && (\n <div className=\"form-error\">{this.state.formError}</div>\n )}\n <Table>\n <Header>\n <Cell>{getMessage(\"order.heading\")}</Cell>\n {paymentModes.map((paymentMode, i) => (\n <Cell key={`header-${paymentMode}`}>\n {getMessage(`${paymentMode}`) +\n ` (${getCurrency().symbol})`}\n </Cell>\n ))}\n <Cell>\n {getMessage(`order.paymentmode.PENDING`) +\n `(${getCurrency().symbol})`}\n </Cell>\n </Header>\n {Object.keys(values).map((order, i) => {\n let foundOrder = allOrders.find((odr) => {\n return Number(odr.referenceNumber) === Number(order);\n });\n return (\n <Row key={`fragment-${order}`}>\n <Cell key={order} className=\"order-number\">\n <span className=\"text-muted\">\n {foundOrder.clientId ? \"#\" : \"Z\"}\n </span>\n <Link to={`/operations/orders/${order}`}>\n {foundOrder.clientId\n ? `${foundOrder.clientId}`\n : `${order}`}\n </Link>\n <div>\n <small className=\"text-muted\">\n {pendingAmounts[order]}\n </small>\n </div>\n </Cell>\n {paymentModes.map((paymentMode, i) => (\n <Cell\n key={`cell-${order}-${paymentMode}`}\n className=\"payment-input\"\n >\n <Input\n key={`${order}-${paymentMode}`}\n name={`${order}-${paymentMode}`}\n type=\"number\"\n step={0.01}\n {...this.generateStateMappers({\n stateKeys: [order, paymentMode, \"amount\"],\n })}\n validationStrings={{\n stepMismatch: \"2 decimal places only\",\n }}\n />\n <div className=\"trx-id\">\n <small className=\"text-muted\">\n {this.getState([\n order,\n paymentMode,\n \"transactionId\",\n ])\n ? `${this.getState([\n order,\n paymentMode,\n \"transactionId\",\n ])}`\n : \" \"}\n </small>\n </div>\n </Cell>\n ))}\n <Cell className=\"total-amount\">\n {this.state.remainingAmounts &&\n parseFloat(\n this.state.remainingAmounts[order]\n ).toFixed(2)}\n <div className=\"trx-id\">   </div>\n </Cell>\n </Row>\n );\n })}\n <Row>\n <Cell className=\"total-amount\">Total</Cell>\n {paymentModes.map((paymentMode, i) => (\n <Cell\n key={`cell-total-${paymentMode}`}\n className=\"total-amount\"\n >\n {Object.keys(values)\n .map((order) =>\n values[order][paymentMode][\"amount\"]\n ? values[order][paymentMode][\"amount\"]\n : 0\n )\n .reduce(\n (a, c) =>\n Math.round((parseFloat(a) + parseFloat(c)) * 1e12) /\n 1e12,\n 0\n )\n .toFixed(2)}\n </Cell>\n ))}\n <Cell className=\"total-amount\">\n {this.state.totalRemaining !== undefined &&\n parseFloat(this.state.totalRemaining).toFixed(2)}\n </Cell>\n </Row>\n </Table>\n <div className=\"form-actions\">\n <SubmitButton>\n {getMessage(\"trips.paymentsForm.submitText\")}\n </SubmitButton>\n <button\n className=\"button cancel-button\"\n type=\"button\"\n onClick={this.handleCancel}\n >\n Cancel\n </button>\n </div>\n </Form>\n </div>\n )}\n </AuthenticatedPage>\n );\n }\n}\n","import React from \"react\";\nimport { BaseForm, Input, VALIDATION_TYPES } from \"../../../../components/Form\";\nimport Loader from \"../../../../components/Loader\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport \"./style.css\";\n\nexport default class EndTripForm extends BaseForm {\n render() {\n const { SubmitButton, CancelButton } = this.buttons;\n const { Form } = this.components;\n const { loading, endKm } = this.props;\n\n return loading ? (\n <Loader />\n ) : (\n <Form className=\"end-trip-form\">\n <Input\n label={getMessage(\"trips.endTrip.label\")}\n placeholder={getMessage(\"trips.endTrip.placeholder\")}\n type=\"text\"\n name=\"endTripKm\"\n required\n {...this.generateStateMappers({\n stateKeys: [\"endTripKm\"],\n defaultValue: endKm,\n validationType: VALIDATION_TYPES.ONSUBMIT,\n })}\n />\n <div className={`form-actions`}>\n <SubmitButton>\n {getMessage(\"trips.endTrip.submitButton\")}\n </SubmitButton>\n <CancelButton>\n {getMessage(\"trips.dialog.closeTrip.cancelButton\")}\n </CancelButton>\n </div>\n </Form>\n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport StoreSelector, {\n getDefaultStore,\n} from \"../../../containers/StoreSelector\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport { Popup } from \"../../../components/Popup\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { isExtensionEnabled, hasPermissions } from \"../../../lib/auth\";\nimport TripFilters from \"./Filters\";\nimport TripPaymentsForm from \"./TripPaymentsForm\";\nimport {\n getPrintableTime,\n getStandradDateTime,\n utcToLocalTime,\n} from \"../../../lib/datetime\";\nimport API from \"../../../lib/api\";\nimport EndTripForm from \"./EndTripForm\";\n\nimport emptyStateIcon from \"./no-trips.svg\";\n\nimport \"./style.css\";\n\nconst PaymentModeContext = React.createContext(\"paymentModes\");\n\n/**\n * defines the state for the scenario where no trips are planned\n */\nconst emptyState = (props) => {\n return {\n icon: emptyStateIcon,\n message: getMessage(\"trips.emptyState.helperText\", {\n multipleStores: Number(isExtensionEnabled(\"MultiStoreSupport\")),\n }),\n actions: ({ apiParams, onAction }) =>\n isExtensionEnabled(\"MultiStoreSupport\") && (\n <StoreSelector\n value={apiParams.storeId}\n stores={props.stores}\n onChange={(storeId) => {\n onAction(TABLE_ACTIONS.SET_API_PARAMS, { storeId });\n }}\n />\n ),\n };\n};\n\nclass TableActions extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showEndTripForm: false,\n endTripFormLoading: false,\n endKm: undefined,\n paymentsForm: false,\n tripDetails: null,\n showTripDetails: false,\n };\n this.showEndTripForm = this.showEndTripForm.bind(this);\n this.hideEndTripForm = this.hideEndTripForm.bind(this);\n this.showPaymentsForm = this.showPaymentsForm.bind(this);\n this.hidePaymentsForm = this.hidePaymentsForm.bind(this);\n this.financiallyCloseTrip = this.financiallyCloseTrip.bind(this);\n this.submitEndTripForm = this.submitEndTripForm.bind(this);\n }\n\n showEndTripForm() {\n this.setState({ endTripFormLoading: true, showEndTripForm: true });\n\n this.getTripDetails().then((response) => {\n this.setState({\n endKm: response.data?.trip?.endKm,\n endTripFormLoading: false,\n });\n });\n }\n\n hideEndTripForm() {\n this.setState({ showEndTripForm: false });\n }\n getTripDetails(storeId = null) {\n this.tripDetailsApi = new API({\n url: `/logistics-service/trip/${this.props.id}`,\n });\n let params = {};\n params[\"storeId\"] = storeId;\n return this.tripDetailsApi.get(params);\n }\n showPaymentsForm() {\n this.getTripDetails()\n .then((response) => {\n let orders = response.data.trip.orders;\n let ordersWithPendingPayments =\n orders && orders.filter(({ pendingAmount }) => Number(pendingAmount));\n if (ordersWithPendingPayments && ordersWithPendingPayments.length) {\n this.setState({\n tripDetails: response.data.trip,\n });\n this.props.history.push(\n `/logistics/trips/trip-payments/${this.props.id}`\n );\n } else {\n this.financiallyCloseTrip();\n }\n })\n .catch((error) => {\n console.error(error);\n });\n }\n hidePaymentsForm() {\n this.setState({ paymentsForm: false });\n }\n financiallyCloseTrip(paymentsObj = {}) {\n let { id, onAction } = this.props;\n let params = {};\n let orders = this.state.tripDetails && this.state.tripDetails.orders;\n let ordersWithPendingPayments =\n orders && orders.filter(({ pendingAmount }) => Number(pendingAmount));\n if (Object.keys(paymentsObj).length > 0 || ordersWithPendingPayments) {\n orders.forEach((order) => {\n let orderPayments = {};\n if (order.paymentsByRE && order.paymentsByRE.length) {\n order.paymentsByRE.forEach((payment) => {\n let mode = Object.keys(payment)[0];\n let amount =\n paymentsObj[order.referenceNumber] &&\n paymentsObj[order.referenceNumber][mode];\n orderPayments[mode] = {\n amount: amount > -1 ? amount : Number(payment[mode].amount),\n transactionId: payment[mode].transaction_id,\n };\n });\n } else {\n order.payment.forEach((payment) => {\n let amount =\n paymentsObj[order.referenceNumber] &&\n paymentsObj[order.referenceNumber][payment.mode];\n orderPayments[payment.mode] = {\n amount: amount > -1 ? amount : Number(payment.amount),\n transactionId: payment.transactionId,\n };\n });\n }\n params[order.referenceNumber] = orderPayments;\n });\n }\n let referenceNumberArray =\n orders && orders.map((order) => order.referenceNumber);\n this.hidePaymentsForm();\n onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n {\n payments: params,\n status: \"FIN_CLOSE\",\n referenceNumber: referenceNumberArray || [],\n }\n );\n }\n\n submitEndTripForm(values) {\n const { id, onAction } = this.props;\n onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n { status: \"CLOSE\", endKm: values.endTripKm }\n );\n this.hideEndTripForm();\n }\n\n componentWillUnmount() {\n this.tripDetailsApi && this.tripDetailsApi.cancel();\n }\n\n render() {\n let { status } = this.props;\n const { endKm, endTripFormLoading } = this.state;\n\n const hasEditPermissions = hasPermissions(\"logistics\", \"trip\", \"put\");\n return (\n <div>\n <Popup\n show={this.state.showEndTripForm}\n heading={getMessage(\"trips.action.close\")}\n close={this.hideEndTripForm}\n >\n <EndTripForm\n loading={endTripFormLoading}\n endKm={endKm}\n onSubmit={this.submitEndTripForm}\n onCancel={this.hideEndTripForm}\n />\n </Popup>\n <Popup\n show={this.state.paymentsForm}\n className=\"trip-finclose-form\"\n heading={getMessage(`trips.action.fin_close`)}\n close={this.hidePaymentsForm}\n >\n {this.state.paymentsForm && (\n <PaymentModeContext.Consumer>\n {(value) => (\n <TripPaymentsForm\n orders={this.state.tripDetails.orders}\n onSubmit={this.financiallyCloseTrip}\n paymentMode={value.paymentMethods}\n />\n )}\n </PaymentModeContext.Consumer>\n )}\n </Popup>\n <DropDown icon={<img src={ICONS.VELLIP} alt=\"â‹®\" />}>\n {hasEditPermissions && status === \"OPEN\" && (\n <DropDownItem onClick={this.showEndTripForm}>\n {getMessage(`trips.action.close`)}\n </DropDownItem>\n )}\n {hasEditPermissions && status === \"CLOSE\" && (\n <DropDownItem onClick={this.showPaymentsForm}>\n {getMessage(`trips.action.fin_close`)}\n </DropDownItem>\n )}\n <DropDownItem>\n <Link to={`/logistics/trips/${this.props.id}`}>\n {getMessage(\"trips.action.viewDetails\")}\n </Link>\n </DropDownItem>\n </DropDown>\n </div>\n );\n }\n}\n\nconst tableProperties = () => {\n return {\n headers: [\n getMessage(\"trips.header.id\"),\n getMessage(\"trips.header.deliveryAgent\"),\n getMessage(\"trips.header.type\"),\n getMessage(\"trips.header.startTime\"),\n getMessage(\"trips.header.endTime\"),\n getMessage(\"trips.header.status\"),\n getMessage(\"trips.header.actions\"),\n ],\n row: (props) => {\n const {\n id,\n apiParams,\n deliveryAgent = {},\n startTime,\n endTime,\n status,\n vehicle,\n onAction,\n hubId,\n } = props;\n return (\n <Row>\n <Cell className=\"trip-id\">\n <div className=\"trip-details\">\n <Link to={`/logistics/trips/${id}`}>{`${id}`}</Link>\n </div>\n </Cell>\n <Cell>\n <div className=\"trip-details trips-agent-name\">\n {deliveryAgent?.name}\n </div>\n <div className=\"trip-details\">\n <div className={`vehicle-number type-${vehicle?.type}`.trim()}>\n <span className=\"trips-vehicle-number\">{vehicle?.number}</span>\n </div>\n </div>\n </Cell>\n <Cell className=\"trip-type-hub\">\n {hubId ? (\n <>{getMessage(\"trips.body.type.hub\")}</>\n ) : (\n <>{getMessage(\"trips.body.type.store\")}</>\n )}\n </Cell>\n <Cell className=\"trip-start-time\">\n <div>\n <div className=\"trip-header-starttime\">{`${getMessage(\n \"trips.header.startTime\"\n )}: `}</div>\n <div>\n {startTime\n ? `${getPrintableTime(startTime).split(\", \")[0]} `\n : null}\n <span className=\"trip-header-time\">\n {startTime\n ? getPrintableTime(startTime).split(\", \")[1]\n : null}\n </span>\n </div>\n </div>\n </Cell>\n <Cell className=\"trip-end-time\">\n <div>\n <div className=\"trip-header-endtime\">{`${getMessage(\n \"trips.header.endTime\"\n )}: `}</div>\n <div>\n {endTime\n ? `${getPrintableTime(endTime).split(\", \")[0]} `\n : null}\n <span className=\"trip-header-time\">\n {endTime ? getPrintableTime(endTime).split(\", \")[1] : null}\n </span>\n </div>\n </div>\n </Cell>\n <Cell className=\"trip-status\">\n <small className=\"text-muted\">\n {[\"OPEN\", \"CLOSE\", \"FIN_CLOSE\"].indexOf(status) > -1\n ? getMessage(`trips.status.${status.toLowerCase()}`)\n : status}\n </small>\n </Cell>\n <Cell className=\"trip-actions\">\n <PaymentModeContext.Consumer>\n {(value) => (\n <TableActions\n id={id}\n status={status}\n onAction={onAction}\n storeId={apiParams.storeId}\n history={value.history}\n />\n )}\n </PaymentModeContext.Consumer>\n </Cell>\n </Row>\n );\n },\n };\n};\n\nclass InterfaceContainer extends Component {\n componentDidMount() {\n this.orderConfigApi = new API({ url: \"/config-service/config/order\" });\n this.orderConfigApi\n .get()\n .then((response) => {\n this.setState({\n paymentMethods:\n response.data.order.paymentMethods?.[\"DELIVERY\"] || [],\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n componentWillUnmount() {\n this.orderConfigApi && this.orderConfigApi.cancel();\n }\n getParams = () => {\n const { stores } = this.props;\n const storeId = getDefaultStore(stores)?.storeId;\n return {\n hubId: storeId,\n storeId,\n };\n };\n render() {\n const { props } = this;\n let context = {\n paymentMethods: this.state && this.state.paymentMethods,\n history: this.props.history,\n };\n return (\n <PaymentModeContext.Provider value={context}>\n <ListingPage\n menu={props.menu}\n className=\"trips-page\"\n title={getMessage(\"trips.heading\")}\n api={{\n url: \"/logistics-service/trip\",\n params: this.getParams(),\n transform: (response) => {\n const trips = response.data.trip;\n if (Array.isArray(trips)) {\n trips.map((trip) => {\n if (trip.startTime) {\n trip.startTime = getStandradDateTime(\n utcToLocalTime,\n trip.startTime\n );\n }\n if (trip.endTime) {\n trip.endTime = getStandradDateTime(\n utcToLocalTime,\n trip.endTime\n );\n }\n return trip;\n });\n } else {\n if (trips.startTime) {\n trips.startTime = getStandradDateTime(\n utcToLocalTime,\n trips.startTime\n );\n }\n if (trips.endTime) {\n trips.endTime = getStandradDateTime(\n utcToLocalTime,\n trips.endTime\n );\n }\n }\n return trips;\n },\n }}\n sethubId={true}\n emptyState={emptyState(props)}\n tableProperties={tableProperties()}\n storeDependent\n filters={{\n component: TripFilters,\n transformSubmit: ({ vehicle, roles, ...formData }) => {\n let filters = Object.assign({}, formData);\n if (vehicle) {\n filters.vehicleId = vehicle.id;\n }\n if (roles) {\n filters.deliveryAgentId = roles.id;\n delete filters.roles;\n }\n return filters;\n },\n }}\n />\n </PaymentModeContext.Provider>\n );\n }\n}\n\nexport default InterfaceContainer;\n\nexport { TableActions };\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport Image from \"../../../components/Image\";\nimport MapWithPath from \"../../../components/MapWithPath\";\nimport Table, { Header, Row, Cell } from \"../../../components/Table\";\nimport { TableActions } from \"../Trips\";\nimport API from \"../../../lib/api\";\nimport { getDefaultStore } from \"../../../containers/StoreSelector\";\nimport { Address as CustomerMapWidget } from \"../../../containers/CustomerWidgets\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { get } from \"../../../lib/storage\";\nimport { getPrintableTime, formatTime } from \"../../../lib/datetime\";\nimport { getAsapDuration } from \"../../../lib/commonlyused\";\nimport { Dialog, Popup } from \"../../../components/Popup\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport TripPaymentsForm from \"../Trips/TripPaymentsForm\";\nimport { getCurrency } from \"../../../lib/userDetails\";\nimport { hasPermissions, getSession } from \"../../../lib/auth\";\nimport moment from \"moment\";\nimport { parse, format } from \"libphonenumber-js\";\nimport TripclosedRibbon from \"./ribbon.svg\";\nimport PhoneIcon from \"./call-inactive.svg\";\nimport VehicleIcon from \"./vehicle-icon.svg\";\nimport CashIcon from \"./cash-icon.svg\";\nimport SignatureIcon from \"./signature.svg\";\nimport ClockIcon from \"./clock-icon.svg\";\nimport ShopIcon from \"./shop-icon.svg\";\nimport ImagePlaceHolder from \"../../../components/Menu/images/customer-image-placeholder.svg\";\nimport \"./style.css\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport Loader from \"../../../components/Loader\";\nimport EndTripForm from \"../Trips/EndTripForm\";\nimport { getStandradDateTime, utcToLocalTime } from \"../../../lib/datetime\";\nimport { ZOPSMART_MAPS_URL } from \"../../../config/app\";\n\nconst TripIdContext = React.createContext(\"TripId\");\n\n// Converting completedAt dateTime format to ISO 8601 Notation\nfunction appendTimezoneFormat(eta, completedAt) {\n completedAt = completedAt.split(\" \").join(\"T\");\n completedAt = completedAt + eta.slice(eta.length - 6, eta.length);\n return completedAt;\n}\n\nfunction timediff(eta, completedAt, offset = false) {\n if (offset === true) {\n completedAt = appendTimezoneFormat(eta, completedAt);\n }\n let etaMoment = moment(eta);\n let completedAtMoment = moment(completedAt);\n let duration = moment.duration(etaMoment.diff(completedAtMoment));\n let hours = parseInt(duration.asHours(), 10);\n let minutes = parseInt(duration.asMinutes(), 10) % 60;\n let seconds = (parseInt(duration.asSeconds(), 10) % 60) % 60;\n if (hours < 0 || minutes < 0 || seconds < 0) {\n return (\n <React.Fragment>\n (\n <span className=\"negativeTime\">\n {\"- \" +\n Math.abs(hours).toString().padStart(2, \"0\") +\n \":\" +\n Math.abs(minutes).toString().padStart(2, \"0\") +\n \":\" +\n Math.abs(seconds).toString().padStart(2, \"0\")}\n </span>\n )\n </React.Fragment>\n );\n } else {\n return (\n <React.Fragment>\n (\n <span className=\"positiveTime\">\n {\"+ \" +\n hours.toString().padStart(2, \"0\") +\n \":\" +\n minutes.toString().padStart(2, \"0\") +\n \":\" +\n Math.abs(seconds).toString().padStart(2, \"0\")}\n </span>\n )\n </React.Fragment>\n );\n }\n}\n\nclass TripTableActions extends TableActions {\n constructor(props) {\n super(props);\n this.showOdometerImage = this.showOdometerImage.bind(this);\n this.showPaymentsForm = this.showPaymentsForm.bind(this);\n this.submitEndTripForm = this.submitEndTripForm.bind(this);\n }\n\n showOdometerImage() {\n this.setState({ showOdometerImage: true });\n }\n\n showPaymentsForm() {\n this.props.history.push(`/logistics/trips/trip-payments/${this.props.id}`);\n }\n\n submitEndTripForm(values) {\n this.props.updatingTripData(values).then(this.hideEndTripForm);\n }\n\n render() {\n let {\n showOdometerImage,\n status,\n vehicleStartOdometerImage,\n vehicleEndOdometerImage,\n startKm,\n endKm,\n } = this.props;\n return (\n <div>\n <Popup\n show={this.state.showEndTripForm}\n heading={getMessage(\"trips.action.close\")}\n close={this.hideEndTripForm}\n >\n <EndTripForm\n endKm={endKm}\n onSubmit={this.submitEndTripForm}\n onCancel={this.hideEndTripForm}\n />\n </Popup>\n <Popup\n show={this.state.paymentsForm}\n className=\"trip-finclose-form\"\n heading={getMessage(`trips.action.fin_close`)}\n close={this.hidePaymentsForm}\n >\n {this.state.paymentsForm && (\n <TripIdContext.Consumer>\n {(value) => (\n <TripPaymentsForm\n orders={this.state.tripDetails.orders}\n onSubmit={this.financiallyCloseTrip}\n paymentMode={value.paymentMethods}\n />\n )}\n </TripIdContext.Consumer>\n )}\n </Popup>\n <Popup\n show={this.state.showOdometerImage}\n className=\"odometer-popup\"\n heading={getMessage(\"trip.details.odometerImage\")}\n close={() => this.setState({ showOdometerImage: false })}\n >\n <div className=\"odometer-popup-text\">\n <div>\n <p>{getMessage(\"trips.startOdometer\")}</p>\n <p>{startKm && `${startKm} ${getMessage(\"trip.details.km\")}`}</p>\n </div>\n <div>\n <p>{getMessage(\"trip.endOdometer\")}</p>\n <p>{endKm && `${endKm} ${getMessage(\"trip.details.km\")}`}</p>\n </div>\n </div>\n <div className=\"odometer-popup-img\">\n <Image\n src={vehicleStartOdometerImage}\n alt=\"vehicle-start-odometer\"\n />\n <Image src={vehicleEndOdometerImage} alt=\"vehicle-end-odometer\" />\n </div>\n </Popup>\n <DropDown icon={<img src={ICONS.VELLIP} alt=\"â‹®\" />}>\n {hasPermissions(\"logistics\", \"trip\", \"put\") && status === \"OPEN\" && (\n <DropDownItem onClick={this.showEndTripForm}>\n {getMessage(`trips.action.close`)}\n </DropDownItem>\n )}\n {hasPermissions(\"logistics\", \"trip\", \"put\") && status === \"CLOSE\" && (\n <DropDownItem onClick={this.showPaymentsForm}>\n {getMessage(`trips.action.fin_close`)}\n </DropDownItem>\n )}\n {showOdometerImage &&\n (vehicleStartOdometerImage || vehicleEndOdometerImage) && (\n <DropDownItem onClick={this.showOdometerImage}>\n {getMessage(`trips.action.vehicleOdometer`)}\n </DropDownItem>\n )}\n </DropDown>\n </div>\n );\n }\n}\n\nfunction storeLocation(stores, storeId) {\n let storesArr = JSON.parse(stores);\n var found = storesArr.find((store) => {\n return store.id === storeId;\n });\n return found;\n}\n\nfunction calcTotalCollectableAmount(orders = []) {\n let amountArr =\n orders && orders.map((order) => parseFloat(order.invoiceAmount));\n if (!amountArr) {\n return 0;\n }\n return amountArr.reduce((total, val) => total + val, 0).toFixed(2);\n}\n\nclass DeliveryguyDetails extends Component {\n render() {\n let data = this.props.data;\n let agentMobileNumber =\n data.deliveryAgent.phones &&\n data.deliveryAgent.phones.length &&\n data.deliveryAgent.phones[0].phone\n ? Object.keys(parse(data.deliveryAgent.phones[0].phone)).length > 0\n ? format(parse(data.deliveryAgent.phones[0].phone), \"International\")\n : data.deliveryAgent.phones[0].phone\n : null;\n return (\n <div className=\"agent-info-container\">\n <div className=\"agent-information\">\n <div className=\"agent-pic\">\n <img src={ImagePlaceHolder} alt=\"agent\" />\n </div>\n <div className=\"agent-info\">\n <span>Delivery Agent</span>\n <span>{data.deliveryAgent.name}</span>\n <span className=\"agent-number\">\n <a href={`tel:${agentMobileNumber}`}>\n <img src={PhoneIcon} alt=\"phone-icon\" /> {agentMobileNumber}\n </a>\n </span>\n </div>\n {data.endTime && (\n <div className=\"trip-closed\">\n {\" \"}\n <img src={TripclosedRibbon} alt=\"Trip-closed-banner\" />\n <span>CLOSED</span>\n </div>\n )}\n </div>\n <div className=\"vehicle-data\">\n <div className={`vehicle-number type-${data.vehicle.type}`.trim()}>\n <span>\n <img src={VehicleIcon} alt=\"vehicle-icon\" />\n {data.vehicle.number}\n </span>\n </div>\n <div className=\"total-amount\">\n <span>\n <img src={CashIcon} alt=\"cash-icon\" />\n {getSession().organization.currency.symbol}\n {calcTotalCollectableAmount(data.orders)}{\" \"}\n </span>\n </div>\n </div>\n <div className=\"trip-timing-details\">\n <div className=\"clock-asset\">\n {data.startTime && <img src={ClockIcon} alt=\"clock-icon\" />}\n </div>\n <div className=\"distance-time-info\">\n {data.startKm ? (\n <span>Trip Started at {data.startKm} Km</span>\n ) : (\n <span>Trip Started</span>\n )}\n {data.startTime && (\n <span>\n {data.startTime\n ? getPrintableTime(data.startTime).split(\", \")[1]\n : null}\n ,{\" \"}\n {data.startTime\n ? getPrintableTime(data.startTime).split(\", \")[0]\n : null}\n </span>\n )}\n </div>\n {data.vehicleStartTime && (\n <React.Fragment>\n <div className=\"clock-asset\">\n <img src={ClockIcon} alt=\"clock-icon\" />\n </div>\n <div className=\"distance-time-info\">\n <span>Vehicle Started</span>\n {data.vehicleStartTime && (\n <span>\n {data.vehicleStartTime\n ? getPrintableTime(data.vehicleStartTime).split(\", \")[1]\n : null}\n ,{\" \"}\n {data.vehicleStartTime\n ? getPrintableTime(data.vehicleStartTime).split(\", \")[0]\n : null}\n </span>\n )}\n </div>\n </React.Fragment>\n )}\n {data.endTime && (\n <div className=\"clock-asset\">\n <img src={ClockIcon} alt=\"clock-icon\" />\n </div>\n )}\n {data.endTime && (\n <div className=\"distance-time-info\">\n {data.endKm ? (\n <span>Trip Ended at {data.endKm} Km</span>\n ) : (\n <span>Trip Ended</span>\n )}\n <span>\n {data.endTime\n ? getPrintableTime(data.endTime).split(\", \")[1]\n : null}\n ,{\" \"}\n {data.endTime\n ? getPrintableTime(data.endTime).split(\", \")[0]\n : null}\n </span>\n </div>\n )}\n </div>\n <div className=\"store-info\">\n <div className=\"shop-icon-asset\">\n <img src={ShopIcon} alt=\"shop-icon\" />\n </div>\n {storeLocation(get(\"stores\"), data.storeId) && (\n <div className=\"shop-location\">\n <span>\n {storeLocation(get(\"stores\"), data.storeId).address &&\n storeLocation(get(\"stores\"), data.storeId).address.split(\n \",\"\n )[0]}\n {storeLocation(get(\"stores\"), data.storeId).address.split(\n \",\"\n )[1] && <span>,</span>}\n </span>\n <span>\n {storeLocation(get(\"stores\"), data.storeId).address &&\n storeLocation(get(\"stores\"), data.storeId).address.split(\n \",\"\n )[1]}\n </span>\n </div>\n )}\n </div>\n </div>\n );\n }\n}\n\nclass CustomerSignature extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showSignature: false,\n };\n }\n render() {\n const { showSignature } = this.state;\n const { signature } = this.props;\n return (\n <React.Fragment>\n {showSignature && (\n <Popup\n show={showSignature}\n heading={getMessage(\"trips.details.customerImage\")}\n close={() => this.setState({ showSignature: false })}\n >\n <Image src={signature} />\n </Popup>\n )}\n <div\n className=\"signature\"\n onClick={() => this.setState({ showSignature: true })}\n >\n <img src={SignatureIcon} alt=\"customer-signature\" />\n </div>\n </React.Fragment>\n );\n }\n}\n\nconst orderListTableProperties = (isMobileView) => {\n return {\n headers: [\n \"\",\n getMessage(\"trips.details.orderList.serialNumber\"),\n getMessage(\"trips.details.orderList.referenceNumber\"),\n getMessage(\"trips.header.status\"),\n getMessage(\"trips.details.orderList.orderTime\"),\n getMessage(\"trips.details.orderList.preferredSlot\"),\n getMessage(\"trips.details.orderList.location\"),\n ],\n row: ({\n id,\n completedAt,\n eta,\n referenceNumber,\n createdAt,\n invoiceAmount,\n status,\n customerSignatureImage,\n clientId,\n preferredDate,\n slotStartTime,\n slotEndTime,\n slotType,\n address,\n }) => (\n <Row>\n <Cell className=\"trip-time\">\n <small className={\"completed-at text-muted\"}>\n {completedAt ? (\n getPrintableTime(completedAt).split(\", \")[1]\n ) : (\n <span> </span>\n )}\n </small>\n <span className={`asset ${status}`} />\n </Cell>\n <Cell className=\"trip-order-sno\">\n {isMobileView ? (\n <div className=\"text-muted1\">\n {getMessage(\"trips.details.orderList.serialNumber\")}\n </div>\n ) : (\n \"\"\n )}\n <div className=\"order-list-elm-sn\">{id}</div>\n </Cell>\n <Cell className=\"trip-reference-number\">\n {isMobileView ? (\n <div className=\"text-muted1\">\n {getMessage(\"trips.details.orderList.referenceNumber\")}\n </div>\n ) : (\n \"\"\n )}\n <React.Fragment>\n <div className=\"order-list-elm-refNo\">\n <span>{clientId ? \"#\" : \"Z\"}</span>\n <Link to={`/operations/orders/${referenceNumber}`}>\n {clientId ? `${clientId}` : `${referenceNumber}`}\n </Link>\n </div>\n <small className=\"text-muted order-list-elm-amount\">\n <span>\n {getCurrency().symbol}{\" \"}\n {invoiceAmount && Number(invoiceAmount).toFixed(2)}\n </span>\n </small>\n </React.Fragment>\n </Cell>\n <Cell className=\"trip-order-status\">\n {isMobileView ? (\n <div className=\"text-muted1\">\n {getMessage(\"trips.header.status\")}\n </div>\n ) : (\n \"\"\n )}\n <div className=\"order-status\">\n {[\"OPEN\", \"CLOSE\", \"FIN_CLOSE\"].indexOf(status) > -1\n ? getMessage(`trips.status.${status.toLowerCase()}`)\n : (status || \"\").toLowerCase()}\n </div>\n <div className={`eta ${status} text-muted`}>\n {completedAt ? (\n moment(completedAt).format(\"hh:mm A\")\n ) : eta ? (\n \"ETA: \" + moment(eta).format(\"hh:mm A\")\n ) : (\n <span> </span>\n )}{\" \"}\n {eta && completedAt ? null : eta && timediff(eta, moment().utc())}\n </div>\n </Cell>\n <Cell className=\"trip-order-time\">\n {isMobileView ? (\n <div className=\"text-muted1\">\n {getMessage(\"trips.details.orderList.orderTime\")}\n </div>\n ) : (\n \"\"\n )}\n <div>\n {createdAt ? getPrintableTime(createdAt).split(\", \")[1] : null}\n </div>\n <small className=\"text-muted\">\n {createdAt ? getPrintableTime(createdAt).split(\", \")[0] : null}\n </small>\n </Cell>\n <Cell className=\"trip-preffered-slot\">\n {isMobileView ? (\n <div className=\"text-muted1\">\n {getMessage(\"trips.details.orderList.preferredSlot\")}\n </div>\n ) : (\n \"\"\n )}\n <div className={`${!slotEndTime ? \"zero-font\" : \"\"}`.trim()}>\n {slotStartTime && slotEndTime && slotType !== \"ASAP\"\n ? formatTime(slotStartTime) + \" - \" + formatTime(slotEndTime)\n : getAsapDuration(slotStartTime, slotEndTime)}\n </div>\n <small className=\"text-muted\">\n {preferredDate\n ? getPrintableTime(preferredDate).split(\", \")[0]\n : null}\n </small>\n </Cell>\n <Cell className=\"trip-location\">\n {isMobileView ? (\n <div className=\"text-muted1\">\n {getMessage(\"trips.details.orderList.view.on.map\")}\n </div>\n ) : (\n \"\"\n )}\n <React.Fragment>\n <div className=\"order-list-elm-location\">\n {address && (\n <CustomerMapWidget\n address={\n address.address +\n \", \" +\n address.city +\n \", \" +\n address.pincode\n }\n />\n )}\n </div>\n <div>\n {customerSignatureImage ? (\n <CustomerSignature signature={customerSignatureImage} />\n ) : (\n <div>      </div>\n )}\n </div>\n </React.Fragment>\n </Cell>\n </Row>\n ),\n };\n};\n\nconst AdditionalViewsWrapper = (props) => (\n <TripIdContext.Consumer>\n {(value) => (\n <AdditionalViews\n id={value.id}\n {...props}\n storeLocation={value.storeLocation}\n showOdometerImage={value.showOdometerImage}\n storeId={value.storeId}\n />\n )}\n </TripIdContext.Consumer>\n);\n\nfunction getMobileView() {\n return window.screen.width <= 480;\n}\n\nclass AdditionalViews extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n vehicleCooordinate: null,\n showLoading: true,\n isMobileView: getMobileView(),\n zopsmartMapUrls: ZOPSMART_MAPS_URL,\n };\n this.getDetails = this.getDetails.bind(this);\n this.getOrderETAs = this.getOrderETAs.bind(this);\n this.mobileView = this.mobileView.bind(this);\n }\n mobileView() {\n this.setState({ isMobileView: getMobileView() });\n }\n getOrderCoordinates(data) {\n if (data?.length === 0) {\n return [];\n }\n let orderLatLng =\n data.orders &&\n data.orders.map(({ address }) => ({\n latitude: address && address.latitude,\n longitude: address && address.longitude,\n }));\n return orderLatLng;\n }\n\n getVehicleCooordinates(data) {\n if (data?.length === 0) {\n return [];\n }\n return data?.sort(\n (a, b) =>\n new Date(getPrintableTime(a.time)) - new Date(getPrintableTime(b.time))\n );\n }\n\n getStoreLocation(data) {\n let storeLatlng =\n data && data.orders && data.orders[0] && data.orders[0].store;\n return (\n storeLatlng && [\n {\n latitude: storeLatlng.latitude,\n longitude: storeLatlng.longitude,\n },\n ]\n );\n }\n\n getMapUrls = async () => {\n try {\n let configApi = new API({ url: \"/config-service/config/backOffice\" });\n const res = await configApi.get();\n if (res?.data?.backOffice?.mapsUrl) {\n this.setState({\n zopsmartMapUrls: res.data.backOffice.mapsUrl,\n });\n }\n } catch (error) {\n console.error(error);\n }\n };\n\n async componentDidMount() {\n await this.getMapUrls();\n this.getDetails();\n this.getOrderETAs();\n window.addEventListener(\"resize\", this.mobileView, false);\n }\n\n componentWillUnmount() {\n this.orderEtaApi && this.orderEtaApi.cancel();\n this.tripLocationApi && this.tripLocationApi.cancel();\n window.removeEventListener(\"resize\", this.mobileView, false);\n }\n\n getOrderETAs() {\n const id = this.props.id;\n this.orderEtaApi = new API({\n url: `/logistics-service/trip-eta?storeId=${this.props.storeId}&tripId=${id}`,\n });\n this.orderEtaApi\n .get()\n .then((response) => {\n this.setState({\n orderETAs: response.data,\n });\n })\n .catch((error) => {\n console.error(error);\n if (error.message === \"cancelled\") {\n return;\n }\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n });\n }\n\n getDetails() {\n const id = this.props.id;\n this.setState({ showLoading: true });\n this.tripLocationApi = new API({\n url: \"/logistics-service/tripLocations\",\n });\n let param = {\n tripId: id,\n };\n this.tripLocationApi\n .get(param)\n .then((response) => {\n this.setState({\n vehicleCooordinate: this.getVehicleCooordinates(response.data),\n showLoading: false,\n });\n })\n .catch((error) => {\n console.error(error);\n if (error.message === \"cancelled\") {\n return;\n }\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n this.setState({\n showLoading: false,\n error,\n });\n });\n }\n render() {\n let { props } = this;\n let OrderListRow = orderListTableProperties(this.state.isMobileView).row;\n let orderCoordinates = props.values\n ? this.getOrderCoordinates(props.values)\n : null;\n let storeLocation = props.values\n ? this.getStoreLocation(props.values)\n : null;\n let details = props.values ? props.values : null;\n let ordersCount = 0;\n let orderHeading = getMessage(\"trip.details.orderList.heading\");\n if (details && details.orders) {\n ordersCount = details.orders.length;\n if (ordersCount === 1) {\n orderHeading = getMessage(\"trip.details.orderList.singleOrder.heading\");\n }\n }\n\n return (\n <React.Fragment>\n <div className=\"main-content\">\n <DeliveryguyDetails data={props.values} />\n {orderCoordinates && (\n <MapWithPath\n coordinates={orderCoordinates}\n showStore={storeLocation ? storeLocation[0] : props.storeLocation}\n callMaps={false}\n showVehicle={\n this.state.vehicleCooordinate &&\n this.state.vehicleCooordinate.length\n ? this.state.vehicleCooordinate[\n this.state.vehicleCooordinate.length - 1\n ]\n : false\n }\n vehiclePath={this.state.vehicleCooordinate}\n showRealRoutes\n zopsmartMapUrls={this.state.zopsmartMapUrls}\n />\n )}\n </div>\n {details && details.orders && (\n <div className=\"trip-details-order-list\">\n <h3>\n {\" \"}\n {`${ordersCount} ${orderHeading} ${getMessage(\n \"trip.details.orderList.withthistrip\"\n )}`}\n </h3>\n <div className=\"table-container\">\n <Table>\n {details.orders.length && orderListTableProperties().headers ? (\n <Header items={orderListTableProperties().headers} />\n ) : null}\n {details.orders.map((order, index) => {\n let orderETAObj =\n this.state &&\n this.state.orderETAs &&\n this.state.orderETAs[0] &&\n this.state.orderETAs[0].orders &&\n this.state.orderETAs[0].orders.find((obj) => {\n return (\n Number(obj.referenceNumber) ===\n Number(order.referenceNumber)\n );\n });\n return (\n <OrderListRow\n {...order}\n id={index + 1}\n eta={orderETAObj && orderETAObj[\"ETA\"]}\n key={\"order-list-elm\" + index}\n />\n );\n })}\n </Table>\n </div>\n </div>\n )}\n </React.Fragment>\n );\n }\n}\n\nclass TripDetails extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n data: null,\n showLoading: true,\n apiError: null,\n showErrorDialog: false,\n };\n\n this.preventLoading = this.preventLoading.bind(this);\n this.fetchingInitialData = this.fetchingInitialData.bind(this);\n this.updatingTripData = this.updatingTripData.bind(this);\n this.hideErrorDialog = this.hideErrorDialog.bind(this);\n }\n\n hideErrorDialog() {\n this.setState({\n showErrorDialog: false,\n });\n }\n\n preventLoading() {\n this.setState({\n showLoading: false,\n });\n }\n\n updatingTripData(values) {\n let storeId = getDefaultStore(get(\"stores\")).storeId;\n let id = this.props.match.params.id;\n let status = \"CLOSE\";\n const params = {\n storeId,\n status,\n id,\n endKm: values.endTripKm,\n };\n this.tripApi = new API({\n url: `/logistics-service/trip/${id}`,\n });\n\n return this.tripApi\n .put(params)\n .then((response) => {\n if (response.status === \"SUCCESS\") {\n let newState = response.data.trip;\n this.setState({\n data: newState,\n });\n }\n })\n .catch((error) => {\n console.error(error);\n if (error.message === \"cancelled\") {\n return;\n }\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n this.setState({\n apiError: error.message,\n showLoading: false,\n showErrorDialog: true,\n });\n });\n }\n\n fetchingInitialData() {\n let id = this.props.match.params.id;\n this.tripApi = new API({\n url: `/logistics-service/trip/${id}`,\n });\n this.tripApi\n .get()\n .then((response) => {\n if (response.status === \"SUCCESS\") {\n const trips = response.data.trip;\n if (trips.startTime) {\n trips.startTime = getStandradDateTime(\n utcToLocalTime,\n trips.startTime\n );\n }\n if (trips.endTime) {\n trips.endTime = getStandradDateTime(utcToLocalTime, trips.endTime);\n }\n if (trips.orders) {\n trips.orders.map((order) => {\n if (order.createdAt) {\n order.createdAt = getStandradDateTime(\n utcToLocalTime,\n order.createdAt\n );\n }\n if (order.completedAt) {\n order.completedAt = getStandradDateTime(\n utcToLocalTime,\n order.completedAt\n );\n }\n if (order.preferredDate && order.slotStartTime) {\n const tempDate = getStandradDateTime(\n utcToLocalTime,\n `${order.preferredDate} ${order.slotStartTime}`\n ).split(\" \");\n order.preferredDate = tempDate[0];\n order.slotStartTime = tempDate[1];\n }\n if (order.preferredDate && order.slotEndTime) {\n const tempDate = getStandradDateTime(\n utcToLocalTime,\n `${order.preferredDate} ${order.slotEndTime}`\n ).split(\" \");\n order.slotEndTime = tempDate[1];\n }\n return order;\n });\n }\n if (trips.vehicleStartTime) {\n trips.vehicleStartTime = getStandradDateTime(\n utcToLocalTime,\n trips.vehicleStartTime\n );\n }\n this.setState({\n data: trips,\n showLoading: false,\n });\n }\n })\n .catch((error) => {\n console.error(error);\n if (error.message === \"cancelled\") {\n return;\n }\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n this.setState({\n showLoading: false,\n apiError: error.message,\n });\n });\n }\n\n componentDidMount() {\n this.orderConfigApi = new API({ url: \"/config-service/config/order\" });\n this.accountConfigApi = new API({ url: \"/account-service/config\" });\n Promise.all([this.orderConfigApi.get(), this.accountConfigApi.get()])\n .then(([orderConfigApiResponse, accountConfigApiResponse]) => {\n this.setState({\n paymentMethods:\n orderConfigApiResponse.data.order.paymentMethods?.[\"DELIVERY\"] ||\n [],\n showOdometerImage:\n accountConfigApiResponse.data.config.logistics\n .shouldCaptureOdometer,\n storeLocation: {\n latitude: accountConfigApiResponse.data.config.basic.latitude,\n longitude: accountConfigApiResponse.data.config.basic.longitude,\n },\n });\n })\n .catch((error) => {\n console.error(error);\n });\n\n this.fetchingInitialData();\n }\n\n componentWillUnmount() {\n this.orderConfigApi && this.orderConfigApi.cancel();\n this.accountConfigApi && this.accountConfigApi.cancel();\n this.tripApi && this.tripApi.cancel();\n }\n\n render() {\n let props = this.props;\n let context = {\n id: props.match.params.id,\n storeId: getDefaultStore(props.stores).storeId,\n paymentMethods: this.state && this.state.paymentMethods,\n storeLocation: this.state && this.state.storeLocation,\n history: this.props.history,\n showOdometerImage: this.state && this.state.showOdometerImage,\n };\n\n let mainContent = (\n <TripIdContext.Provider value={context}>\n <div className=\"top-heading\">\n <h1>{`${getMessage(\"trips.details.heading\", {\n id: props.match.params.id,\n })}`}</h1>\n <span className=\"dropdown-actions\">\n {\n <TripIdContext.Consumer>\n {(value) => {\n return [\"OPEN\", \"CLOSE\"].indexOf(this.state.data.status) >\n -1 ||\n (value.showOdometerImage &&\n (this.state.data.vehicleEndOdometerImage ||\n this.state.data.vehicleStartOdometerImage)) ? (\n <TripTableActions\n id={this.state.data.id}\n status={this.state.data.status}\n vehicleStartOdometerImage={\n this.state.data.vehicleStartOdometerImage\n }\n vehicleEndOdometerImage={\n this.state.data.vehicleEndOdometerImage\n }\n startKm={this.state.data.startKm}\n endKm={this.state.data.endKm}\n showOdometerImage={value.showOdometerImage}\n history={value.history}\n updatingTripData={this.updatingTripData}\n />\n ) : (\n <div> </div>\n );\n }}\n </TripIdContext.Consumer>\n }{\" \"}\n </span>\n </div>\n <Dialog\n show={this.state.showErrorDialog}\n information={this.state.apiError}\n close={this.hideErrorDialog}\n closeText={getMessage(\"vehiclePlanner.error.dialog.okay\")}\n />\n <AdditionalViewsWrapper values={this.state.data} />\n </TripIdContext.Provider>\n );\n if (this.state.showLoading) {\n mainContent = (\n <React.Fragment>\n <div className=\"top-heading\">\n <h1>{`${getMessage(\"trips.details.heading\", {\n id: props.match.params.id,\n })}`}</h1>\n </div>\n <Loader />\n </React.Fragment>\n );\n }\n\n return (\n <AuthenticatedPage\n className=\"trips-details-page\"\n menu={props.menu}\n storeDependent\n >\n {mainContent}\n </AuthenticatedPage>\n );\n }\n}\n\nexport default TripDetails;\n","import React, { Component } from \"react\";\nimport { Draggable } from \"react-beautiful-dnd\";\n// import {getMessage} from '../../../../../lib/translator'\nimport { Link } from \"react-router-dom\";\nimport InActiveAddressIcon from \"./address-inactive.svg\";\nimport ActiveAddressIcon from \"./address-active.svg\";\nimport toTitleCase from \"../../../../../utils/toTitleCase\";\nimport \"./style.css\";\nimport {\n getPrintableTime,\n getStandradDateTime,\n utcToLocalTime,\n} from \"../../../../../lib/datetime\";\nimport { isBoolean } from \"lodash\";\n\nconst ISO_RE =\n /(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))/;\nexport default class OrderContainer extends Component {\n getModifiedMetadata = (metaData = {}) => {\n Object.keys(metaData).forEach((orderMetaKey) => {\n if (!isBoolean(metaData[orderMetaKey])) {\n if (!metaData[orderMetaKey]) delete metaData[orderMetaKey];\n }\n });\n return metaData;\n };\n render() {\n const { id, status, address, clientId, metaData } = this.props.data;\n const { draggableId, index } = this.props;\n const modifiedMetadata = this.getModifiedMetadata(metaData);\n return (\n <Draggable draggableId={`order-${draggableId}`} index={index}>\n {(provided, snapshot) => (\n <div>\n <div\n className=\"order-box-spacer\"\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n >\n <div\n className={`order-box ${\n snapshot.isDragging ? \"dragging\" : \"\"\n }`.trim()}\n >\n <div\n className={`reference-number ${\n metaData.isDelayed ? \"delayed-reference-number\" : \"\"\n }`}\n >\n <span className=\"text-muted\">{clientId ? \"#\" : \"Z\"}</span>\n <Link to={`/operations/orders/${id}`} className=\"order-id\">\n {clientId ? `${clientId}` : `${id}`}\n </Link>\n <div className=\"order-tooltip-text\">\n {Object.keys(metaData).map((orderMetaKey) => (\n <div className=\"order-meta-container\" key={orderMetaKey}>\n <div className=\"order-meta-title\">\n {toTitleCase(\n orderMetaKey.split(/(?=[A-Z])/).join(\" \")\n )}\n </div>\n <div className=\"order-meta-text\">\n {ISO_RE.test(modifiedMetadata[orderMetaKey])\n ? getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n modifiedMetadata[orderMetaKey]\n )\n )\n : isBoolean(modifiedMetadata[orderMetaKey])\n ? modifiedMetadata[orderMetaKey]\n ? \"Yes\"\n : \"No\"\n : modifiedMetadata[orderMetaKey]}\n </div>\n </div>\n ))}\n </div>\n </div>\n <div className=\"status\">{status}</div>\n <div className=\"status\">{`${\n this.props.data.slot &&\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${\n new Date().toISOString().split(\"T\")[0]\n } ${this.props.data.slot.split(\"-\")[0].trim()}`\n )\n ).split(\",\")[1]\n } \n -\n ${\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${\n new Date().toISOString().split(\"T\")[0]\n } ${this.props.data.slot.split(\"-\")[1].trim()}`\n )\n ).split(\",\")[1]\n }`}</div>\n <img\n className=\"order-address-icon\"\n src={\n address.location.lat && address.location.long\n ? ActiveAddressIcon\n : InActiveAddressIcon\n }\n alt=\"address-icon\"\n onClick={this.props.onClick}\n />\n <div className=\"status pincode\">\n {address &&\n address.pincode &&\n address.pincode !== \"0\" &&\n address.pincode.toString().padStart(6, \"0\")}\n </div>\n {/* {\n packing\n ? <div className='order-box-packing-details'>\n <div>\n {\n Object.keys(packing[0].details).map((type, index) => (\n <div className='packing-detail-elm' key={`trip-order-packing-details-${index}`}>\n <div className='packing-details-type'>{getMessage(`order.packing.${type}`)} :</div>\n <div className='packing-details-value'>{packing[0].details[type].join(', ')}</div>\n </div>\n ))\n }\n </div>\n </div> : null\n } */}\n </div>\n </div>\n {provided.placeholder}\n </div>\n )}\n </Draggable>\n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Droppable } from \"react-beautiful-dnd\";\nimport OrderContainer from \"../TripContainer/OrderContainer\";\n\nexport default class NotReadyOrders extends Component {\n render() {\n const { orders, droppableId } = this.props;\n return orders.length > 0 ? (\n <Droppable droppableId={`not-ready-${droppableId}`}>\n {(provided, snapshot) => (\n <div\n className={`not-ready trip-orders ${\n snapshot.isDraggingOver ? \"dragging-over\" : \"\"\n }`.trim()}\n >\n <div\n className=\"trip-orders-inner-container\"\n ref={provided.innerRef}\n >\n {orders.map((order, index) => (\n <OrderContainer\n key={order.id}\n data={order}\n draggableId={order.id}\n index={index}\n onClick={() =>\n this.props.showDeliveryLocation(order.id, droppableId)\n }\n />\n ))}\n {provided.placeholder}\n </div>\n </div>\n )}\n </Droppable>\n ) : null;\n }\n}\n","import React, { Component } from \"react\";\nimport { Droppable } from \"react-beautiful-dnd\";\nimport OrderContainer from \"./OrderContainer\";\nimport moment from \"moment\";\nimport clockIcon from \"./clock-image.svg\";\nimport NotReadyOrders from \"../NotReadyOrders\";\n\nexport default class TripContainer extends Component {\n areOrdersReady(orders) {\n return (\n orders.length &&\n orders.reduce(\n (ready, order) =>\n ready &&\n order.address.location &&\n order.address.location.lat &&\n order.address.location.long,\n true\n )\n );\n }\n render() {\n const {\n droppableId,\n orders,\n totalOrders,\n recommendedVehicle,\n startTime,\n endTime,\n zone,\n } = this.props;\n const readyOrders = orders.filter((order) => !order.ignoreForTrip);\n const { hubTrip } = zone || {};\n const isActiveHubTrip = hubTrip === true;\n return totalOrders ? (\n <Droppable droppableId={`trip-${droppableId}`}>\n {(provided, snapshot) => (\n <div\n className={`trip-container ${\n this.props.disabled ? \"disabled\" : \"\"\n }`.trim()}\n >\n <div className=\"trip-start-container\">\n <button\n className=\"button primary trip-start-button\"\n onClick={(e) => {\n this.props.onStart &&\n this.props.onStart(\n readyOrders,\n droppableId,\n recommendedVehicle,\n zone\n );\n }}\n disabled={!this.areOrdersReady(orders)}\n >\n {isActiveHubTrip ? \"Start Hub Trip\" : \"Start\"}\n </button>\n {startTime &&\n endTime &&\n startTime !== \"0001-01-01T00:00:00Z\" &&\n endTime !== \"0001-01-01T00:00:00Z\" && (\n <div className=\"recommended-time\">\n <img\n className=\"recommended-clock-icon\"\n src={clockIcon}\n alt=\"clock\"\n />\n {moment(startTime).format(\"HH:mm\") +\n \" - \" +\n moment(endTime).format(\"HH:mm\")}\n </div>\n )}\n </div>\n <div\n className={`trip-orders ${\n snapshot.isDraggingOver ? \"dragging-over\" : \"\"\n }`.trim()}\n >\n <div\n className=\"trip-orders-inner-container\"\n ref={provided.innerRef}\n >\n {readyOrders.map((order, index) => (\n <OrderContainer\n key={order.id}\n data={order}\n draggableId={order.id}\n index={index}\n onClick={() =>\n this.props.showDeliveryLocation(order.id, droppableId)\n }\n />\n ))}\n {provided.placeholder}\n </div>\n </div>\n <div>\n <NotReadyOrders\n droppableId={`${droppableId}`}\n orders={orders.filter((order) => order.ignoreForTrip === true)}\n totalOrders={orders.length}\n showDeliveryLocation={this.props.showDeliveryLocation}\n />\n </div>\n </div>\n )}\n </Droppable>\n ) : null;\n }\n}\n","import React, { Component } from \"react\";\nimport moment from \"moment\";\nimport { Link } from \"react-router-dom\";\nimport {\n getPrintableTime,\n getRemainingTime,\n getStandradDateTime,\n utcToLocalTime,\n} from \"../../../../lib/datetime\";\n\nimport expandPlus from \"../images/expand-plus.svg\";\nimport expandMinus from \"../images/expand-minus.svg\";\n\nimport \"./style.css\";\n\nclass ExpandingStats extends Component {\n constructor() {\n super();\n this.toggleExpand = this.toggleExpand.bind(this);\n this.state = {\n expanded: false,\n };\n }\n toggleExpand() {\n this.setState({ expanded: !this.state.expanded });\n }\n render() {\n let { heading, data, unit, currentRunners, currentVehicles } = this.props;\n let classname = this.props.className;\n let containerStyle = {\n maxHeight: this.state.expanded ? this.contentRef.offsetHeight + \"px\" : 0,\n };\n let count =\n (currentRunners\n ? currentRunners.length\n : currentVehicles\n ? currentVehicles.length\n : 0) + (data ? data.length : 0);\n unit +=\n (currentRunners\n ? currentRunners.length\n : currentVehicles\n ? currentVehicles.length\n : 0) +\n (data ? data.length : 0) >\n 1\n ? \"s\"\n : \"\";\n return (\n <div\n className={\n \"expanding-box\" +\n (this.state.expanded ? \" expanded\" : \"\") +\n (classname ? \" \" + classname : \"\")\n }\n >\n <div className=\"brief-heading\">\n <div className=\"heading-wrapper\">\n <div className=\"heading\">{heading}</div>\n <div className=\"count\">\n {count} {unit}\n </div>\n </div>\n <div className=\"toggle-button\" onClick={this.toggleExpand}>\n <img\n src={this.state.expanded ? expandMinus : expandPlus}\n alt={this.state.expanded ? \"-\" : \"+\"}\n />\n </div>\n </div>\n <div className=\"content-container\" style={containerStyle}>\n <div\n className=\"expanding-box-details\"\n ref={(node) => {\n this.contentRef = node;\n }}\n >\n {currentVehicles &&\n currentVehicles.length !== 0 &&\n currentVehicles.map((elm, index) => (\n <div\n className=\"expanding-box-elm\"\n key={`expanding-stat-${index}`}\n >\n <div className=\"heading-wrapper\">\n <div className=\"heading\">\n {`${elm.number} (`}\n <Link\n to={`/logistics/trips/${elm.tripId}`}\n >{` ${elm.tripId} `}</Link>\n )\n </div>\n {elm.vehicleStart &&\n elm.vehicleStart.split(\" \").length > 1 && (\n <div className=\"trip-time\">\n {\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n elm.vehicleStart\n )\n ).split(\",\")[1]\n }\n </div>\n )}\n </div>\n <div className=\"icon\" />\n </div>\n ))}\n {currentRunners &&\n currentRunners.length !== 0 &&\n currentRunners.map((elm, index) => (\n <div\n className=\"expanding-box-elm\"\n key={`expanding-stat-${index}`}\n >\n <div className=\"heading-wrapper\">\n <div className=\"heading\">\n {`${elm.name} (`}\n <Link\n to={`/logistics/trips/${elm.tripId}`}\n >{` ${elm.tripId} `}</Link>\n )\n </div>\n {elm.startTime && elm.startTime.split(\" \").length > 1 && (\n <div className=\"trip-time\">\n {\n getPrintableTime(\n getStandradDateTime(utcToLocalTime, elm.startTime)\n ).split(\",\")[1]\n }\n </div>\n )}\n </div>\n <div className=\"icon\" />\n </div>\n ))}\n {data &&\n data.length &&\n data.map((elm, index) => (\n <div\n className=\"expanding-box-elm\"\n key={`expanding-stat-${index}`}\n >\n <div className=\"heading-wrapper\">\n <div className=\"heading\">\n {this.props.unit === \"RE\" ? elm.name : elm.number}\n </div>\n {elm.shiftIn && (\n <div className=\"trip-time\">\n {\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n elm.shiftIn\n }`\n )\n ).split(\",\")[1]\n }\n <span className=\"remaining-time\">\n Rem :{\" \"}\n {getRemainingTime(\n moment().utc().format(\"HH:mm:ss\"),\n elm.shiftOut\n )}\n </span>\n </div>\n )}\n </div>\n <div className=\"icon\" />\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default ExpandingStats;\n","import React, { Component } from \"react\";\nimport API from \"../../../../lib/api\";\n// import { Select } from '../../../../components/Form/Inputs'\nimport ExpandingStats from \"../ExpandingStats\";\n// import {getMessage} from '../../../../lib/translator'\n\n/*\n TODO: Remove comments after full feature is implemented\n*/\n\nimport \"./style.css\";\n\nclass TripStatistics extends Component {\n constructor() {\n super();\n this.state = {\n zone: \"all\",\n trips: null,\n };\n this.getOrderStats = this.getOrderStats.bind(this);\n this.getOpenTrips = this.getOpenTrips.bind(this);\n }\n\n getOrderStats() {\n let totalOrders;\n if (this.state.zone === \"all\") {\n totalOrders = this.props.data.reduce((accumulator, currentZone) => {\n return accumulator.concat(currentZone.orders);\n }, []);\n } else {\n totalOrders = this.props.data.filter(\n ({ name }) => name === this.state.zone\n )[0].orders;\n }\n return totalOrders;\n }\n\n getOpenTrips() {\n this.tripApi = new API({\n url: \"/logistics-service/trip\",\n });\n let params = {};\n if (this.props.storeId) {\n params.storeId = this.props.storeId;\n }\n params.status = \"OPEN\";\n this.tripApi\n .get(params)\n .then((response) => {\n this.setState({\n trips: response.data.trip,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n componentDidMount() {\n this.getOpenTrips();\n }\n componentDidUpdate(prevProps) {\n if (this.props.storeId !== prevProps.storeId) {\n this.getOpenTrips();\n }\n }\n componentWillUnmount() {\n this.tripApi && this.tripApi.cancel();\n }\n render() {\n // let zones = this.props.data\n // let orders = this.getOrderStats()\n if (!this.state.trips) {\n return null;\n }\n return (\n <div className=\"stats-section\">\n {/* <button className='refresh-button button'>Refresh Statistics</button>\n <div className='order-chart'>\n <div className='order-chart-top'>\n <div className='order-chart-heading-wrapper'>\n <div className='order-heading'>Orders</div>\n <Select\n placeholder={'All Zones'}\n value={this.state.zone}\n onChange={zone => { this.setState({ zone }) }}\n options={[{text: 'All Zones', value: 'all'}, ...zones.map(({ name }) => ({\n text: name,\n value: name\n }))]}\n />\n </div>\n <div className='order-count'>{getMessage('tripPlanner.orderCount', { count: orders.length })}</div>\n </div>\n <div className='order-chart-bottom'>\n <div className='stat-chart'>\n <div className='heading'>\n <span>Slot</span>\n <span>Pend</span>\n <span>Store</span>\n <span>Disp</span>\n <span>Comp</span>\n </div>\n </div>\n </div>\n </div> */}\n <ExpandingStats\n heading=\"Vehicles\"\n data={this.props.vehicles}\n currentVehicles={\n this.state.trips\n ? this.state.trips.map((trip) => {\n return Object.assign(\n {\n tripId: trip.id,\n startTime: trip.startTime,\n vehicleStart: trip.vehicleStartTime,\n },\n trip.vehicle\n );\n })\n : null\n }\n unit=\"Vehicle\"\n className=\"vehicles\"\n />\n <ExpandingStats\n heading=\"Runner Executive\"\n data={this.props.re}\n currentRunners={\n this.state.trips\n ? this.state.trips.map((trip) => {\n return Object.assign(\n { tripId: trip.id, startTime: trip.startTime },\n trip.deliveryAgent\n );\n })\n : null\n }\n unit=\"RE\"\n className=\"runner-executive\"\n />\n </div>\n );\n }\n}\n\nexport default TripStatistics;\n","import React, { Component } from \"react\";\nimport API from \"../../../../lib/api\";\nimport Loader from \"../../../../components/Loader\";\nimport { Link } from \"react-router-dom\";\nimport agentIcon from \"./agent-icon.svg\";\nimport moment from \"moment\";\n\nimport \"./style.css\";\n\nconst OrderItemDeliveryStatus = (props) => {\n return (\n <div className=\"trip-order-delivery-details-elm\">\n <div className=\"delivery-status-icon\" />\n <div className=\"order-id\">\n <span className=\"text-muted\">{props.clientId ? \"#\" : \"Z\"}</span>\n <Link\n to={`/operations/orders/${props.referenceNumber}`}\n className=\"reference-number\"\n >\n {props.clientId ? `${props.clientId}` : `${props.referenceNumber}`}\n </Link>\n </div>\n <div className=\"delivery-status\">\n {props.status === \"COMPLETED\"\n ? \"Delivered\"\n : props.status.charAt(0).toUpperCase() +\n props.status.slice(1).toLowerCase()}\n </div>\n </div>\n );\n};\nclass OpenTripListItem extends Component {\n constructor(props) {\n super(props);\n this.state = {\n expanded: false,\n data: null,\n };\n this.toggleExpand = this.toggleExpand.bind(this);\n this.getOrders = this.getOrders.bind(this);\n }\n toggleExpand(e) {\n e.target.classList.toggle(\"active\");\n this.setState({ expanded: !this.state.expanded });\n }\n getOrders() {\n let { orders } = this.props;\n if (!orders) {\n return null;\n }\n let delivered = orders.filter((order) => {\n return order.status === \"COMPLETED\";\n }).length;\n let total = orders.length;\n return {\n delivered,\n total,\n };\n }\n render() {\n let contentStyle = {\n maxHeight: this.state.expanded ? this.contentRef.offsetHeight + \"px\" : 0,\n };\n let etaResponse = Boolean(this.props.eta);\n let totalDiff =\n this.props.eta && moment.duration(moment(this.props.eta).diff(moment()));\n let eta = totalDiff && Math.ceil(totalDiff.asMinutes());\n let delayed = eta < 0;\n eta = eta > 0 ? eta : Math.abs(eta);\n let hours = Number(eta) > 60 ? Math.floor(Number(eta) / 60) : 0;\n let minutes = eta ? Math.ceil(Number(eta) % 60) : 0;\n return (\n <div className=\"open-trip-list-elm\">\n <div className=\"open-trip-list-elm-header\">\n <Link\n to={`/logistics/trips/${this.props.tripId}`}\n className=\"trip-id\"\n >\n {this.props.tripId}\n </Link>\n {this.getOrders() && (\n <div className=\"total-delivered\">{`${this.getOrders().delivered}/${\n this.getOrders().total\n } Delivered`}</div>\n )}\n <div className=\"trip-delivery-details\">\n <img\n className=\"delivery-agent-icon\"\n src={agentIcon}\n alt=\"agent-icon\"\n />\n <span className=\"delivery-agent-name\">{this.props.agent.name}</span>\n </div>\n {etaResponse && !delayed && (\n <div className=\"remaining-trip-time\">\n Ends in\n {hours\n ? ` ${hours} Hour${hours > 1 ? \"s\" : \"\"} ${minutes} `\n : null}\n {!hours && ` ${eta} `}Minutes\n </div>\n )}\n {etaResponse && delayed && (\n <div className=\"remaining-trip-time\">\n Delayed by\n {hours\n ? ` ${hours} Hour${hours > 1 ? \"s\" : \"\"} ${minutes} `\n : null}\n {!hours && ` ${eta} `}Minutes\n </div>\n )}\n </div>\n <div className=\"trip-order-delivery-details\" style={contentStyle}>\n <div\n className=\"trip-order-delivery-details-wrapper\"\n ref={(node) => {\n this.contentRef = node;\n }}\n >\n {this.props.orders &&\n this.props.orders.map((order, i) => {\n return (\n <OrderItemDeliveryStatus\n key={i}\n clientId={order.clientId}\n referenceNumber={order.referenceNumber}\n status={order.status}\n slotStartTime={order.slotStartTime}\n slotEndTime={order.slotEndTime}\n />\n );\n })}\n </div>\n </div>\n <div className=\"toggle-button\" onClick={this.toggleExpand} />\n </div>\n );\n }\n}\nclass OpenTrips extends Component {\n constructor(props) {\n super(props);\n this.state = {\n data: null,\n trips: [],\n tripETAs: null,\n };\n this.getOpenTrips = this.getOpenTrips.bind(this);\n this.getTripsETA = this.getTripsETA.bind(this);\n }\n getOpenTrips() {\n this.tripApi = new API({\n url: \"/logistics-service/trip\",\n });\n let params = {};\n if (this.props.storeId) {\n params.storeId = this.props.storeId;\n }\n params.status = \"OPEN\";\n params.paginated = \"false\";\n this.tripApi\n .get(params)\n .then((response) => {\n this.setState(\n {\n data: response.data,\n },\n () => {\n if (!response.data?.trip?.length) {\n this.setState({ trips: [] });\n return;\n }\n this.getTripsETA();\n response.data.trip.forEach((el) => {\n const api = new API({ url: `/logistics-service/trip/${el.id}` });\n let params = {};\n if (this.props.storeId) {\n params.storeId = this.props.storeId;\n }\n params.id = el.id;\n api\n .get(params)\n .then((response) => {\n this.setState({\n trips: [...this.state.trips, response.data.trip],\n });\n })\n .catch((error) => {\n console.error(error);\n });\n });\n }\n );\n })\n .catch((error) => {\n console.error(error);\n });\n }\n getTripsETA() {\n if (!(this.state.data && this.state.data.count)) {\n return null;\n }\n let tripIds = this.state.data.trip.map((eachTrip) => {\n return eachTrip.id;\n });\n let paramStr = `storeId=${this.props.storeId}&`;\n if (tripIds.length) {\n tripIds.forEach((id, i) => {\n paramStr += `${i ? \"&\" : \"\"}tripId=${id}`;\n });\n }\n this.tripEtaApi = new API({\n url: `/logistics-service/trip-eta?${paramStr}`,\n });\n this.tripEtaApi\n .get()\n .then((response) => {\n this.setState({\n tripETAs: response.data,\n });\n })\n .catch((error) => {\n console.error(error);\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n });\n }\n componentDidMount() {\n this.getOpenTrips();\n }\n componentDidUpdate(prevProps) {\n if (this.props.storeId !== prevProps.storeId) {\n this.getOpenTrips();\n }\n }\n\n componentWillUnmount() {\n this.tripApi && this.tripApi.cancel();\n this.tripEtaApi && this.tripEtaApi.cancel();\n }\n\n render() {\n if (!this.state.data) {\n return <Loader />;\n }\n if (\n !(\n this.state.data.count &&\n this.state.data.count === this.state.trips.length\n )\n ) {\n return null;\n }\n return (\n this.state.data &&\n this.state.data.count && (\n <div className=\"open-trips-wrapper\">\n <div className=\"open-trips-heading\">Open Trips</div>\n <div className=\"open-trip-list\">\n {this.state.data &&\n this.state.data.trip.map((el, i) => {\n let obj =\n this.state.tripETAs &&\n this.state.tripETAs.find((ETAObj) => {\n return ETAObj.tripId === el.id;\n });\n let eta = obj ? obj.ETA : null;\n let trip = this.state.trips.find((trip) => {\n return trip.id === el.id;\n });\n return (\n <OpenTripListItem\n key={i}\n orders={trip ? trip.orders : null}\n tripId={el.id}\n eta={eta}\n agent={el.deliveryAgent}\n startTime={el.startTime}\n storeId={this.props.storeId}\n />\n );\n })}\n </div>\n </div>\n )\n );\n }\n}\n\nexport default OpenTrips;\n","import React, { Component } from \"react\";\nimport { DragDropContext, Droppable, Draggable } from \"react-beautiful-dnd\";\nimport {\n getPrintableTime,\n utcToLocalTime,\n getStandradDateTime,\n} from \"../../../../../lib/datetime\";\n\nclass TripSequenceOrders extends Component {\n constructor(props) {\n super(props);\n this.state = {\n orders: this.props.orders,\n };\n this.onDragEnd = this.onDragEnd.bind(this);\n }\n onDragStart(data) {}\n onDragEnd(result) {\n // dropped outside the list\n if (!result.destination) {\n return;\n }\n let { orders } = this.reorder(\n this.state.orders,\n result.source,\n result.destination\n );\n this.props.updateTripSequence(orders);\n }\n reorder(orders, source, destination) {\n let itemToMove = orders.splice(source.index, 1)[0];\n orders.splice(destination.index, 0, itemToMove);\n return { orders };\n }\n render() {\n let { orders } = this.state;\n return (\n <div>\n <h3>Orders</h3>\n <div className=\"trip-sequence-order-list\">\n <div className=\"order-count-list\">\n {orders.map((order, index) => (\n <span key={\"order-count-elm\" + index}>{index + 1}</span>\n ))}\n </div>\n <DragDropContext\n onDragStart={this.onDragStart}\n onDragEnd={this.onDragEnd}\n >\n <Droppable droppableId={`trip-sequence-1`}>\n {(provided, snapshot) => (\n <div\n className={`trip-orders ${\n snapshot.isDraggingOver ? \"dragging-over-2\" : \"\"\n }`.trim()}\n >\n <div\n className=\"trip-orders-inner-container\"\n ref={provided.innerRef}\n >\n {orders.map((order, index) => (\n <Draggable\n draggableId={`order-${order.id}`}\n index={index}\n key={order.id}\n >\n {(provided, snapshot) => (\n <div>\n <div\n className=\"order-box-spacer\"\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n >\n <div\n className={`order-box ${\n snapshot.isDragging ? \"dragging\" : \"\"\n }`.trim()}\n >\n <div className=\"order-box-reference-status\">\n <div className=\"reference-number\">\n {order.clientId\n ? `#${order.clientId}`\n : `Z${order.id}`}\n </div>\n <div className=\"status\">{order.status}</div>\n </div>\n <div className=\"slot-info\">\n {`${\n order.slot &&\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${\n new Date().toISOString().split(\"T\")[0]\n } ${order.slot.split(\"-\")[0].trim()}`\n )\n ).split(\",\")[1]\n } - ${\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${\n new Date().toISOString().split(\"T\")[0]\n } ${order.slot.split(\"-\")[1].trim()}`\n )\n ).split(\",\")[1]\n }`}\n </div>\n </div>\n </div>\n {provided.placeholder}\n </div>\n )}\n </Draggable>\n ))}\n {provided.placeholder}\n </div>\n </div>\n )}\n </Droppable>\n </DragDropContext>\n </div>\n </div>\n );\n }\n}\n\nexport default TripSequenceOrders;\n","import React from \"react\";\nimport { BaseForm } from \"../../../../components/Form\";\nimport { Select } from \"../../../../components/Form/Inputs\";\nimport TripSequenceOrders from \"./TripSequenceOrders\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport MapWithPath from \"../../../../components/MapWithPath\";\nimport API from \"../../../../lib/api\";\nimport { Dialog } from \"../../../../components/Popup\";\n\nimport \"./style.css\";\n\nclass TripSequence extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n deliveryData: props.deliveryData,\n coordinates: this.getCoordinates(props.deliveryData),\n vehicleId: props.recommendedVehicle && props.recommendedVehicle.id,\n zopsmartMapUrls: this.props.zopsmartMapUrls,\n };\n this.getCoordinates = this.getCoordinates.bind(this);\n this.updateTripSequence = this.updateTripSequence.bind(this);\n this.getDistance = this.getDistance.bind(this);\n this.onSubmit = this.onSubmit.bind(this);\n this.getStoreLocation = this.getStoreLocation.bind(this);\n this.getMarkersCoordinates = this.getMarkersCoordinates.bind(this);\n this.getAddressString = this.getAddressString.bind(this);\n this.getTripDistance = this.getTripDistance.bind(this);\n }\n\n getTripDistance(addresses) {\n const api = new API({\n url:\n `${this.state.zopsmartMapUrls}/route/?points_encoded=false` +\n addresses +\n \"&locale=en-US&vehicle=car&weighting=fastest&elevation=false&layer=OpenStreetMap\",\n });\n api\n .get()\n .then((response) => {\n this.getDistance(response.paths[0].distance);\n })\n .catch((error) => {\n console.error(error);\n this.setState({\n showErrorDialog: true,\n formError: error.message,\n });\n });\n }\n\n getAddressString() {\n let coordinates = this.getMarkersCoordinates();\n let vehiclePath = this.state.coordinates;\n let deliveryLocations = !vehiclePath\n ? coordinates &&\n coordinates\n .map(\n (location) =>\n location.latitude &&\n location.longitude &&\n `&point=${location.latitude},${location.longitude}`\n )\n .filter(Boolean)\n : vehiclePath\n .map(\n (location) =>\n location.latitude &&\n location.longitude &&\n `&point=${location.latitude},${location.longitude}`\n )\n .filter(Boolean);\n return deliveryLocations;\n }\n\n getCoordinates(orders) {\n const { hubTrip } = this.props?.currentTripHub || {};\n let storeLocation = this.getStoreLocation();\n if (hubTrip === true) {\n const hubLocation = this.getHubLocation();\n return storeLocation.concat(hubLocation).concat(storeLocation);\n }\n let deliveryLocations = orders\n .map(\n ({ address }) =>\n address.location &&\n address.location.lat && {\n latitude: address.location.lat,\n longitude: address.location.long,\n }\n )\n .filter(Boolean);\n\n return storeLocation.concat(deliveryLocations).concat(storeLocation);\n }\n\n updateTripSequence(orders) {\n this.setState({\n deliveryData: orders,\n coordinates: this.getCoordinates(orders),\n });\n this.getTripDistance(this.getAddressString());\n }\n\n getDistance(distance) {\n distance = Number.parseFloat(distance / 1000).toFixed(2) + \" KM\";\n this.setState({ tripDistance: distance });\n }\n\n getMarkersCoordinates() {\n return (\n this.state.coordinates &&\n this.state.coordinates.slice(1, this.state.coordinates.length - 1)\n );\n }\n\n getStore() {\n let { storeId, storeData } = this.props;\n let store = storeData.filter(\n (store) => store.id === parseInt(storeId, 10)\n )[0];\n return store;\n }\n\n getStoreLocation() {\n let { storeId, storeData } = this.props;\n let storeLocation;\n if (!this.props.storeLocation) {\n let store = storeData.filter(\n (store) => store.id === parseInt(storeId, 10)\n );\n storeLocation = store.length\n ? [{ latitude: store[0].latitude, longitude: store[0].longitude }]\n : [];\n } else {\n storeLocation = [\n {\n latitude: this.props.storeLocation.lat,\n longitude: this.props.storeLocation.lng,\n },\n ];\n }\n return storeLocation;\n }\n getHubLocation() {\n const { hub } = this.props?.currentTripHub || {};\n if (hub) {\n return [{ latitude: hub.location.lat, longitude: hub.location.long }];\n }\n return [];\n }\n\n onSubmit() {\n const { hubTrip, hub } = this.props?.currentTripHub || {};\n let orderNumbers = this.state.deliveryData\n ? this.state.deliveryData.map((order) => order.id)\n : [];\n let params = {};\n params.orderNumbers = orderNumbers;\n params.storeId = this.props.storeId;\n params.vehicleId = this.state.vehicleId;\n params.deliveryAgentId = this.state.deliveryAgentId;\n if (hubTrip === true) {\n params.hubId = hub?.id;\n }\n\n this.startTrip(params);\n }\n startTrip(params) {\n let api = new API({ url: \"/logistics-service/trip\" });\n this.setState({ submitting: true });\n api\n .post(params)\n .then((response) => {\n // TODO: Response should be added to 'Open trips' state\n\n this.setState({\n submitting: false,\n successMessage: getMessage(\"tripPlanner.trip.started\"),\n });\n this.props.modifyState(\n params.orderNumbers,\n params.vehicleId,\n params.deliveryAgentId\n );\n })\n .catch((error) => {\n console.error(error);\n this.setState({\n submitting: false,\n error: error.message,\n });\n });\n }\n\n componentDidMount() {\n this.getTripDistance(this.getAddressString());\n }\n\n closeDialogs = () => {\n this.setState({\n showErrorDialog: false,\n });\n };\n\n render() {\n let { Form } = this.components;\n let { SubmitButton, CancelButton } = this.buttons;\n let storeLocation = this.getStoreLocation()[0];\n const store = this.getStore();\n let statuses = [\"PACKED\"];\n\n if (store?.hasPicking === false || store?.hasPicking === 0) {\n statuses = [\"AT-HUB\"];\n }\n\n const orderReadyToBeDispatched =\n this.state.deliveryData &&\n this.state.deliveryData.reduce(\n (ready, order) => ready && statuses.includes(order.status),\n true\n );\n\n return !(storeLocation.latitude && storeLocation.longitude) ? (\n <div className=\"no-store-location\">\n {getMessage(\"tripPlanner.trip.storeLocation.error\")}\n </div>\n ) : (\n <div className=\"TripSequenceMap\">\n <Dialog\n show={this.state.showErrorDialog}\n information={getMessage(this.state.formError)}\n close={this.closeDialogs}\n closeText={getMessage(\"okay.text\")}\n />\n <div className=\"trip-sequence-details\">\n <div className=\"trip-sequence-details-heading\">{`${getMessage(\n \"tripPlanner.start\"\n )}`}</div>\n <div className=\"trip-sequence-form\">\n <div className=\"trip-sequence-orders\">\n <TripSequenceOrders\n orders={this.state.deliveryData}\n updateTripSequence={this.updateTripSequence}\n />\n </div>\n <div className=\"trip-distance-container\">\n Total Trip Distance: {this.state.tripDistance}\n </div>\n <Form>\n <h3>{getMessage(\"tripPlanner.assign\")}</h3>\n <div className=\"select-buttons\">\n <Select\n placeholder={getMessage(\"tripPlanner.runner.executive\")}\n options={\n this.props.re\n ? this.props.re.map((elm) => {\n return {\n text: elm.name,\n value: elm.id,\n };\n })\n : []\n }\n value={this.state.deliveryAgentId}\n onChange={(e) => this.setState({ deliveryAgentId: e })}\n />\n <Select\n placeholder={getMessage(\"tripPlanner.runner.vehicle\")}\n options={\n this.props.vehicle\n ? this.props.vehicle.map((elm) => {\n return {\n text: elm.number,\n value: elm.id,\n };\n })\n : []\n }\n onChange={(e) => this.setState({ vehicleId: e })}\n value={this.state.vehicleId}\n />\n </div>\n {this.state.error && (\n <div className=\"trip-error\">{this.state.error}</div>\n )}\n <div className=\"form-buttons\">\n <CancelButton>Cancel</CancelButton>\n <SubmitButton\n disabled={\n this.state.submitting ||\n !orderReadyToBeDispatched ||\n !(\n this.state.deliveryData &&\n this.state.deliveryAgentId &&\n this.state.vehicleId\n )\n }\n >\n Start Trip\n </SubmitButton>\n </div>\n </Form>\n </div>\n </div>\n <MapWithPath\n coordinates={this.getMarkersCoordinates()}\n getDistance={this.getDistance}\n showStore={storeLocation}\n vehiclePath={this.state.coordinates}\n zopsmartMapUrls={this.state.zopsmartMapUrls}\n />\n </div>\n );\n }\n}\n\nexport default TripSequence;\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport { DragDropContext } from \"react-beautiful-dnd\";\nimport TripContainer from \"./TripContainer\";\nimport Loader from \"../../../components/Loader\";\nimport API from \"../../../lib/api\";\nimport { isExtensionEnabled } from \"../../../lib/auth\";\nimport { getMessage } from \"../../../lib/translator\";\nimport StoreSelector, {\n getDefaultStore,\n makestoreDependentComponent,\n} from \"../../../containers/StoreSelector\";\nimport EmptyState from \"../../../components/EmptyState\";\nimport { Popup, Dialog } from \"../../../components/Popup\";\nimport Mapform from \"../../operations/Customers/Details/AddressCard/MapForm\";\nimport TripStatistics from \"./Statistics\";\nimport OpenTrips from \"./OpenTrips\";\nimport TripSequence from \"./TripSequence\";\nimport moment from \"moment\";\nimport { registerSocket } from \"../../../registerSocket\";\nimport { ZOPSMART_MAPS_URL } from \"../../../config/app\";\nimport emptyStateIcon from \"./no-trips.svg\";\nimport \"./style.css\";\n\nclass InterfaceContainer extends Component {\n constructor(props) {\n super(props);\n this.state = Object.assign(\n {\n data: null,\n submittingZoneIndexes: [],\n unassignedOrders: [],\n config: {\n interZoneDnD: true,\n sameZoneDnd: false,\n sameTripDnd: false,\n },\n },\n getDefaultStore(this.props.stores)\n );\n\n this.getPlannedTrips = this.getPlannedTrips.bind(this);\n this.onDragStart = this.onDragStart.bind(this);\n this.onDragEnd = this.onDragEnd.bind(this);\n this.changeStore = this.changeStore.bind(this);\n this.showTripMap = this.showTripMap.bind(this);\n this.getStoreLocation = this.getStoreLocation.bind(this);\n this.modifyState = this.modifyState.bind(this);\n this.updateOrder = this.updateOrder.bind(this);\n this.getDeliveryAreas = this.getDeliveryAreas.bind(this);\n this.showDeliveryLocation = this.showDeliveryLocation.bind(this);\n this.hideMap = this.hideMap.bind(this);\n this.showSuccessDialog = this.showSuccessDialog.bind(this);\n this.onSuccess = this.onSuccess.bind(this);\n this.handleSuccessClose = this.handleSuccessClose.bind(this);\n this.zopsmartMapUrls = ZOPSMART_MAPS_URL;\n }\n getPlannedTrips() {\n let socket = registerSocket();\n if (socket) {\n socket.onmessage = this.updateOrder;\n }\n this.logisticsAutomationApi = new API({\n url: \"/logistics-service/automation\",\n });\n let params = {};\n params.refreshPlannedTrips = window.localStorage.getItem(\n \"refreshPlannedTrips\"\n );\n if (this.state.storeId) {\n params.storeId = this.state.storeId;\n }\n params.date = moment().format(\"YYYY-MM-DD\");\n this.logisticsAutomationApi\n .get(params)\n .then((response) => {\n this.setState({\n data: response.data,\n });\n })\n .catch((error) => {\n // if user is unauthorized redirect to login screen\n if (error.code === 401) throw error;\n console.error(error);\n });\n }\n onDragStart(data) {}\n onDragEnd(result) {\n // dropped outside the list\n if (!result.destination) {\n return;\n }\n this.setState((prevState) => {\n let { zone, unassignedOrders } = this.reorder(\n prevState.data.zone,\n result.source,\n result.destination,\n prevState.unassignedOrders,\n prevState.config\n );\n let nextState = {\n data: Object.assign({}, prevState.data, {\n zone,\n }),\n unassignedOrders,\n };\n return nextState;\n });\n }\n reorder(zone, source, destination, unassignedOrders, config) {\n let sourceLocation = source.droppableId.match(/\\d+/g).map(Number);\n let destinationLocation = destination.droppableId.match(/\\d+/g).map(Number);\n let sourceZoneIndex = sourceLocation[0];\n let destinationZoneIndex = destinationLocation[0];\n let notReadyRegExp = new RegExp(\"^not-ready\");\n if (\n notReadyRegExp.test(source.droppableId) ||\n notReadyRegExp.test(destination.droppableId)\n ) {\n zone = this.toggleTripOrders(\n zone,\n source,\n destination,\n unassignedOrders,\n config\n );\n } else {\n let sourceTripIndex = sourceLocation[1];\n let destinationTripIndex = destinationLocation[1];\n if (config.interZoneDnD) {\n let itemToMove = zone[sourceZoneIndex].plannedTrips[\n sourceTripIndex\n ].orders.splice(source.index, 1)[0];\n zone[destinationZoneIndex].plannedTrips[\n destinationTripIndex\n ].orders.splice(destination.index, 0, itemToMove);\n } else if (config.sameZoneDnd) {\n if (sourceZoneIndex === destinationZoneIndex) {\n let itemToMove = zone[sourceZoneIndex].plannedTrips[\n sourceTripIndex\n ].orders.splice(source.index, 1)[0];\n zone[destinationZoneIndex].plannedTrips[\n destinationTripIndex\n ].orders.splice(destination.index, 0, itemToMove);\n }\n } else if (config.sameTripDnd) {\n if (\n sourceZoneIndex === destinationZoneIndex &&\n sourceTripIndex === destinationTripIndex\n ) {\n let itemToMove = zone[sourceZoneIndex].plannedTrips[\n sourceTripIndex\n ].orders.splice(source.index, 1)[0];\n zone[destinationZoneIndex].plannedTrips[\n destinationTripIndex\n ].orders.splice(destination.index, 0, itemToMove);\n }\n }\n }\n // zone = zone.filter(this.getOrderNumbersForZone)\n return { zone, unassignedOrders };\n }\n toggleTripOrders(zone, source, destination, unassignedOrders, config) {\n let sourceLocation = source.droppableId.match(/\\d+/g).map(Number);\n let destinationLocation = destination.droppableId.match(/\\d+/g).map(Number);\n let sourceZoneIndex = sourceLocation[0];\n let sourceTripIndex = sourceLocation[1];\n let destinationZoneIndex = destinationLocation[0];\n let tripRegExp = new RegExp(\"^trip\");\n let notReadyRegExp = new RegExp(\"^not-ready\");\n\n let readyOrders = [];\n let notReadyOrders = [];\n zone[sourceZoneIndex].plannedTrips[sourceTripIndex].orders.forEach(\n (element) => {\n if (element.ignoreForTrip !== true) {\n readyOrders.push(element);\n } else {\n notReadyOrders.push(element);\n }\n }\n );\n\n if (sourceZoneIndex === destinationZoneIndex) {\n if (\n tripRegExp.test(source.droppableId) &&\n notReadyRegExp.test(destination.droppableId)\n ) {\n // Moving from tripContainer to not-ready\n let itemToMove = readyOrders.splice(source.index, 1)[0];\n itemToMove.ignoreForTrip = true;\n notReadyOrders.splice(destination.index, 0, itemToMove);\n } else if (\n notReadyRegExp.test(source.droppableId) &&\n tripRegExp.test(destination.droppableId)\n ) {\n // Moving from not-ready to tripContainer\n let itemToMove = notReadyOrders.splice(source.index, 1)[0];\n itemToMove.ignoreForTrip = false;\n readyOrders.splice(destination.index, 0, itemToMove);\n } else if (\n notReadyRegExp.test(source.droppableId) &&\n notReadyRegExp.test(destination.droppableId)\n ) {\n // Moving within not-ready\n let itemToMove = notReadyOrders.splice(source.index, 1)[0];\n notReadyOrders.splice(destination.index, 0, itemToMove);\n }\n }\n zone[sourceZoneIndex].plannedTrips[sourceTripIndex].orders =\n readyOrders.concat(notReadyOrders);\n return zone;\n }\n changeStore(storeId) {\n this.setState({ storeId }, this.getPlannedTrips);\n }\n showTripMap(orders, droppableId, recommendedVehicle, hub) {\n this.setState({\n showTripMap: true,\n tripMapData: orders,\n currentTripHub: hub,\n zoneTripDetails: droppableId,\n recommendedVehicle,\n });\n }\n onSuccess(lat, lng) {\n this.hideMap();\n this.showSuccessDialog();\n let zoneTripIndex = this.state.zoneTripDetails.match(/\\d+/g).map(Number);\n let orderIndex = this.state.data.zone[zoneTripIndex[0]].plannedTrips[\n zoneTripIndex[1]\n ].orders.findIndex((order) => order.id === this.state.orderId);\n let newState = { ...this.state.data };\n let item = newState.zone[zoneTripIndex[0]].plannedTrips[\n zoneTripIndex[1]\n ].orders.splice(orderIndex, 1)[0];\n item.address.location.lat = parseFloat(lat);\n item.address.location.long = parseFloat(lng);\n newState.zone[zoneTripIndex[0]].plannedTrips[\n zoneTripIndex[1]\n ].orders.splice(orderIndex, 0, item);\n this.setState({ data: newState });\n }\n showSuccessDialog() {\n this.setState({\n showSuccessDialog: true,\n });\n }\n handleSuccessClose() {\n this.setState({\n showSuccessDialog: false,\n });\n }\n showDeliveryLocation(orderId, droppableId) {\n let zoneTripIndex = droppableId.match(/\\d+/g).map(Number);\n let order = this.state.data.zone[zoneTripIndex[0]].plannedTrips[\n zoneTripIndex[1]\n ].orders.filter((order) => order.id === orderId);\n order = order[0];\n let fullAddress = [\n order.address.address,\n order.address.city,\n order.address.landmark,\n order.address.pincode,\n ]\n .filter((el) => !!el || el === 0)\n .join(\", \");\n let coordinates = {\n lat: order.address.location.lat,\n lng: order.address.location.long,\n };\n let addressId = order.address.id;\n this.setState({\n showMap: true,\n orderId,\n address: fullAddress,\n coordinates,\n addressId,\n customerId: order.customerId,\n zoneTripDetails: droppableId,\n });\n }\n hideMap() {\n this.setState({\n showMap: false,\n });\n }\n getStoreLocation() {\n this.accountConfigApi = new API({\n url: \"/account-service/config/basic\",\n });\n this.accountConfigApi\n .get()\n .then((response) => {\n this.setState({\n storeLocation: {\n lat: response.data.config.basic.latitude,\n lng: response.data.config.basic.longitude,\n },\n });\n })\n .catch((error) => {\n // if user is unauthorized redirect to login screen\n if (error.code === 401) throw error;\n console.error(error);\n });\n }\n getOrderNumbersForZone(zone) {\n let totalOrders = zone.plannedTrips\n .map((trip) => trip.orders)\n .reduce((accOrder, currentOrders) => accOrder.concat(currentOrders), []);\n return totalOrders.length;\n }\n modifyState(orderNumbers, vehicleId, deliveryAgentId) {\n let newState = { ...this.state.data };\n newState.vehicles = newState.vehicles.filter(\n (vehicle) => vehicle.id !== parseInt(vehicleId, 10)\n );\n newState.executives = newState.executives.filter(\n (re) => re.id !== parseInt(deliveryAgentId, 10)\n );\n let zoneTripIndex = this.state.zoneTripDetails.match(/\\d+/g).map(Number);\n let zoneIndex = zoneTripIndex[0];\n let tripIndex = zoneTripIndex[1];\n newState.zone[zoneIndex].plannedTrips[tripIndex].orders = newState.zone[\n zoneIndex\n ].plannedTrips[tripIndex].orders.filter(\n (order) => !orderNumbers.includes(order.id)\n );\n newState.zone = newState.zone.filter(this.getOrderNumbersForZone);\n this.setState({\n data: newState,\n showTripStarted: true,\n showTripMap: false,\n });\n }\n\n getDeliveryAreas() {\n if (isExtensionEnabled(\"DeliveryAreaSupport\")) {\n const deliveryAreaApi = new API({\n url: `/logistics-service/delivery-area`,\n });\n deliveryAreaApi\n .get({ paginated: \"false\" })\n .then((response) => {\n this.setState({\n deliveryAreas: response.data.deliveryarea,\n });\n })\n .catch((error) => {\n // if user is unauthorized redirect to login screen\n if (error.code === 401) throw error;\n console.error(error);\n });\n }\n }\n\n getMapUrls = () => {\n let configApi = new API({ url: \"/config-service/config/backOffice\" });\n configApi\n .get()\n .then((res) => {\n this.zopsmartMapUrls = res?.data?.backOffice?.mapsUrl;\n })\n .catch((error) => {\n console.error(error);\n });\n };\n\n componentDidMount() {\n this.getPlannedTrips();\n this.getMapUrls();\n if (!(this.props && this.props.stores)) {\n this.getStoreLocation();\n }\n this.getDeliveryAreas();\n }\n\n componentWillUnmount() {\n this.accountConfigApi && this.accountConfigApi.cancel();\n this.logisticsAutomationApi && this.logisticsAutomationApi.cancel();\n }\n\n updateOrder(msg) {\n if (!this) {\n return;\n }\n let data = msg.data;\n if (typeof data === \"string\") {\n data = JSON.parse(data);\n }\n let stateData = Object.assign({}, this.state.data);\n if (\n stateData &&\n stateData.zone &&\n stateData.zone.length > 0 &&\n Number(this.state.storeId) === Number(data.storeId)\n ) {\n let zones = Object.assign([], stateData.zone);\n zones.forEach((zone) => {\n zone.plannedTrips &&\n zone.plannedTrips.forEach((plannedTrip) => {\n plannedTrip.orders &&\n plannedTrip.orders.forEach((order) => {\n if (Number(order.id) === Number(data.referenceNumber)) {\n order.status = data.newStatus;\n }\n });\n });\n });\n stateData.zone = zones;\n this.setState({\n data: stateData,\n });\n }\n }\n\n render() {\n if (!this.state.data) {\n return <Loader />;\n }\n let { zone, vehicles, executives } = this.state.data;\n let { deliveryAreas, storeId } = this.state;\n const { stores } = this.props;\n return (\n <div>\n <div className=\"flex-around\">\n <h1>{getMessage(\"tripPlanner.heading\")}</h1>\n {isExtensionEnabled(\"MultiStoreSupport\") && (\n <StoreSelector\n value={this.state.storeId}\n onChange={this.changeStore}\n stores={stores}\n />\n )}\n {zone && zone.length ? (\n <Link\n className=\"trip-summary-header-link\"\n to=\"/logistics/trip-planner/table-view\"\n >\n {getMessage(\"tripPlanner.tableView\")}\n </Link>\n ) : null}\n </div>\n <div className=\"trip-planner-page-content\">\n <OpenTrips storeId={this.state.storeId} />\n {zone && !zone.length && (\n <EmptyState\n icon={emptyStateIcon}\n message={getMessage(\"tripPlanner.emptyState.helperText\", {\n multipleStores: Number(isExtensionEnabled(\"MultiStoreSupport\")),\n })}\n />\n )}\n {zone && zone.length ? (\n <DragDropContext\n onDragStart={this.onDragStart}\n onDragEnd={this.onDragEnd}\n >\n <div className=\"interface-container\">\n {zone.map(\n ({ name = \"\", plannedTrips = [], ...zone }, zoneIndex) => {\n return (\n <div\n key={name + zoneIndex}\n className=\"trip-outer-container\"\n >\n <div\n className=\"zone-title\"\n style={\n name === \"NO_ZONE\"\n ? { backgroundColor: \"#eb8181\" }\n : null\n }\n >\n {name === \"NO_ZONE\" ? \"NO ZONE\" : name}\n </div>\n {plannedTrips.map((trip, tripIndex) => (\n <TripContainer\n key={`${zoneIndex}-${tripIndex}`}\n zone={zone}\n orders={trip.orders}\n droppableId={`Z${zoneIndex}T${tripIndex}`}\n vehicles={vehicles}\n executives={executives}\n recommendedVehicle={trip.vehicle}\n onStart={this.showTripMap}\n // disabled={this.state.submittingZoneIndexes.indexOf(index) > -1}\n showDeliveryLocation={this.showDeliveryLocation}\n totalOrders={trip.orders.length}\n startTime={trip.startTime ? trip.startTime : null}\n endTime={trip.endTime ? trip.endTime : null}\n onDragStart={this.onDragStart}\n onDragEnd={this.onDragEnd}\n />\n ))}\n </div>\n );\n }\n )}\n </div>\n </DragDropContext>\n ) : null}\n <TripStatistics\n data={zone}\n vehicles={vehicles}\n re={executives}\n storeId={this.state.storeId}\n />\n </div>\n <Popup\n className={\"trip-sequence-popup\"}\n show={this.state.showTripMap}\n close={() => this.setState({ showTripMap: false })}\n >\n <TripSequence\n deliveryData={this.state.tripMapData}\n onCancel={() => this.setState({ showTripMap: false })}\n currentTripHub={this.state.currentTripHub}\n storeData={stores}\n storeId={this.state.storeId}\n storeLocation={this.state.storeLocation}\n vehicle={vehicles}\n re={executives}\n modifyState={this.modifyState}\n recommendedVehicle={this.state.recommendedVehicle}\n zopsmartMapUrls={this.zopsmartMapUrls}\n />\n </Popup>\n <Popup\n className=\"editPopup map-address\"\n heading={getMessage(\"customer.address.modal.heading\")}\n show={this.state.showMap}\n close={this.hideMap}\n >\n <Mapform\n address={this.state.address}\n addressId={this.state.addressId}\n draggable\n onSuccess={this.onSuccess}\n coordinates={this.state.coordinates}\n tripPlanner\n orderId={this.state.orderId}\n customerId={this.state.customerId}\n isTripPlannerPage\n stores={stores}\n deliveryAreas={deliveryAreas}\n storeId={storeId}\n />\n </Popup>\n {this.state.showSuccessDialog && (\n <Dialog\n show={this.state.showSuccessDialog}\n close={this.handleSuccessClose}\n title={getMessage(\"customer.address.success\")}\n information={getMessage(\"customer.address.saved\")}\n closeText={getMessage(\"customer.address.okay\")}\n className=\"success\"\n />\n )}\n {this.state.showTripStarted && (\n <Dialog\n show={this.state.showTripStarted}\n close={() => {\n this.setState({ showTripStarted: false });\n }}\n title={getMessage(\"tripPlanner.trip.started\")}\n closeText={getMessage(\"customer.address.okay\")}\n className=\"success\"\n />\n )}\n </div>\n );\n }\n}\n\nconst InterfaceWithStores = makestoreDependentComponent(InterfaceContainer);\n\nexport default class TripPlanner extends Component {\n render() {\n return (\n <AuthenticatedPage menu={this.props.menu} className=\"trip-planner\">\n <InterfaceWithStores />\n </AuthenticatedPage>\n );\n }\n}\n","import React, { Component } from \"react\";\nimport moment from \"moment\";\nimport AuthenticatedPage from \"../../../../containers/AuthenticatedPage\";\nimport Loader from \"../../../../components/Loader\";\nimport Table, { Header, Row, Cell } from \"../.././../../components/Table\";\n\nimport { getMessage } from \"../../../../lib/translator\";\nimport API from \"../../../../lib/api\";\nimport { get } from \"../../../../lib/storage\";\nimport { isExtensionEnabled } from \"../../../../lib/auth\";\nimport {\n formatTime,\n formatIsoTime,\n formatIsoDate,\n getPrintableTime,\n getStandradDateTime,\n utcToLocalTime,\n} from \"../../../../lib/datetime\";\n\nfunction downloadCsv(data) {\n let csv = \"\";\n data.forEach((row) => {\n csv += row.join(\",\");\n csv += \"\\n\";\n });\n var hiddenElement = document.createElement(\"a\");\n hiddenElement.href = \"data:text/csv;charset=utf-8,\" + encodeURI(csv);\n hiddenElement.target = \"_blank\";\n hiddenElement.download = `trip_${moment().format(\n \"YYYY-MM-DD\"\n )} - ${moment().format(\"HH:mm\")}.csv`;\n hiddenElement.click();\n}\n\nclass TripPlannerTable extends Component {\n constructor(props) {\n super(props);\n this.state = {\n loading: false,\n };\n this.formatDataForCsvReady = this.formatDataForCsvReady.bind(this);\n }\n componentDidMount() {\n this.setState({\n loading: true,\n });\n const api = new API({ url: \"/logistics-service/automation\" });\n let params = {};\n params.date = moment().utc().format(\"YYYY-MM-DD\");\n params.storeId = get(\"store\");\n params.refreshPlannedTrips = window.localStorage.getItem(\n \"refreshPlannedTrips\"\n );\n api\n .get(params)\n .then((response) => {\n this.setState({\n loading: false,\n plannedTrip: response.data?.zone,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n formatDataForCsvReady() {\n let zone = this.state.plannedTrip;\n let dataArray = [];\n let deliverySlotStartKey = isExtensionEnabled(\"DeliverySlots\")\n ? getMessage(\"tripPlanner.slots.startTime\")\n : null;\n let deliverySlotEndKey = isExtensionEnabled(\"DeliverySlots\")\n ? getMessage(\"tripPlanner.slot.endTime\")\n : null;\n dataArray[0] = [\n getMessage(\"tripPlanner.orderNumber\"),\n getMessage(\"tripPlanner.status\"),\n getMessage(\"tripPlanner.items\"),\n getMessage(\"tripPlanner.orderPlacedDate\"),\n getMessage(\"tripPlanner.orderPlacedTime\"),\n ];\n deliverySlotStartKey && dataArray[0].push(deliverySlotStartKey);\n deliverySlotEndKey && dataArray[0].push(deliverySlotEndKey);\n dataArray[0] = dataArray[0].concat([\n getMessage(\"tripPlanner.order.lat\"),\n getMessage(\"tripPlanner.order.lng\"),\n getMessage(\"tripPlanner.order.distance\"),\n getMessage(\"tripPlanner.picker.name\"),\n getMessage(\"tripPlanner.picker.startTime\"),\n getMessage(\"tripPlanner.picker.endTime\"),\n getMessage(\"tripPlanner.vehicle\"),\n getMessage(\"tripPlanner.vehicle.shiftStart\"),\n getMessage(\"tripPlanner.vehicle.shiftEnd\"),\n getMessage(\"tripPlanner.tripNo\"),\n getMessage(\"tripPlanner.tripStart\"),\n getMessage(\"tripPlanner.tripEnd\"),\n getMessage(\"tripPlanner.orderSeq\"),\n getMessage(\"tripPlanner.arrival\"),\n getMessage(\"tripPlanner.waiting\"),\n getMessage(\"tripPlanner.complete\"),\n ]);\n zone &&\n zone.forEach((plannedTrip) => {\n plannedTrip &&\n plannedTrip.plannedTrips.forEach((trip, tripIndex) => {\n trip &&\n trip.orders.forEach((order, orderIndex) => {\n let arr = [];\n arr.push(order.clientId ? order.clientId : order.id);\n arr.push(order.status);\n arr.push(order.productCount);\n arr.push(formatIsoDate(order.createdAt));\n arr.push(formatIsoTime(order.createdAt));\n isExtensionEnabled(\"DeliverySlots\") &&\n order.slot &&\n arr.push(formatTime(order.slot.split(\"-\")[0]));\n isExtensionEnabled(\"DeliverySlots\") &&\n order.slot &&\n arr.push(formatTime(order.slot.split(\"-\")[1]));\n arr.push(Number(order.address.location.lat).toFixed(2));\n arr.push(Number(order.address.location.long).toFixed(2));\n arr.push(\n trip.sequence\n ? (\n Number(trip.sequence[orderIndex].Distance) / 1000\n ).toFixed(2)\n : \"\"\n );\n arr.push(order.metaData.picker);\n arr.push(\n moment\n .utc(order.metaData.pickingStartsBy)\n .format(\"YYYY-MM-DD\") !== \"0001-01-01\"\n ? formatIsoTime(order.metaData.pickingStartsBy)\n : \"-\"\n );\n arr.push(\n moment\n .utc(order.metaData.pickingEndsBy)\n .format(\"YYYY-MM-DD\") !== \"0001-01-01\"\n ? formatIsoTime(order.metaData.pickingEndsBy)\n : \"-\"\n );\n arr.push(trip.vehicle.number);\n arr.push(\n trip.vehicle &&\n trip.vehicle.number !== \"\" &&\n trip.vehicle.shiftIn\n ? formatTime(trip.vehicle.shiftIn)\n : \"\"\n );\n arr.push(\n trip.vehicle &&\n trip.vehicle.number !== \"\" &&\n trip.vehicle.shiftOut\n ? formatTime(trip.vehicle.shiftOut)\n : \"\"\n );\n arr.push(tripIndex);\n arr.push(\n trip.startTime &&\n moment.utc(trip.startTime).format(\"YYYY-MM-DD\") !==\n \"0001-01-01\"\n ? formatIsoTime(trip.startTime)\n : \"-\"\n );\n arr.push(\n trip.endTime &&\n moment.utc(trip.endTime).format(\"YYYY-MM-DD\") !==\n \"0001-01-01\"\n ? formatIsoTime(trip.endTime)\n : \"-\"\n );\n arr.push(orderIndex);\n arr.push(\n order.metaData &&\n order.metaData.eta &&\n moment.utc(order.metaData.eta).format(\"YYYY-MM-DD\") !==\n \"0001-01-01\"\n ? formatIsoTime(order.metaData.eta)\n : \"-\"\n );\n arr.push(\n order.metaData &&\n order.metaData.waiting &&\n moment.utc(order.metaData.waiting).format(\"YYYY-MM-DD\") !==\n \"0001-01-01\"\n ? order.metaData.waiting\n : \"-\"\n );\n arr.push(\n order.metaData &&\n order.metaData.completionTime &&\n moment\n .utc(order.metaData.completionTime)\n .format(\"YYYY-MM-DD\") !== \"0001-01-01\"\n ? formatIsoTime(order.metaData.completionTime)\n : \"-\"\n );\n dataArray.push(arr);\n });\n });\n });\n downloadCsv(dataArray || []);\n }\n\n render() {\n return (\n <AuthenticatedPage menu={this.props.menu}>\n <div className=\"trip-summary-header\">\n <h1>{getMessage(\"tripPlanner.table.heading\")}</h1>\n {this.state.loading ? (\n <Loader />\n ) : (\n this.state.plannedTrip &&\n !!this.state.plannedTrip.length && (\n <button\n className=\"button primary\"\n onClick={this.formatDataForCsvReady}\n >\n {getMessage(\"tripPlanner.download.summary.text\")}\n </button>\n )\n )}\n </div>\n {this.state.loading ? (\n <Loader />\n ) : (\n <div className=\"trip-table\">\n <Table>\n <Header>\n <Cell>{getMessage(\"tripPlanner.orderNumber\")}</Cell>\n <Cell>{getMessage(\"tripPlanner.status\")}</Cell>\n <Cell>{getMessage(\"tripPlanner.items\")}</Cell>\n <Cell>{getMessage(\"tripPlanner.orderPlacedDate\")}</Cell>\n <Cell>{getMessage(\"tripPlanner.orderPlacedTime\")}</Cell>\n {isExtensionEnabled(\"DeliverySlots\") && (\n <Cell>{getMessage(\"tripPlanner.slots.startTime\")}</Cell>\n )}\n {isExtensionEnabled(\"DeliverySlots\") && (\n <Cell>{getMessage(\"tripPlanner.slot.endTime\")}</Cell>\n )}\n <Cell>{getMessage(\"tripPlanner.order.lat\")}</Cell>\n <Cell>{getMessage(\"tripPlanner.order.lng\")}</Cell>\n <Cell>{getMessage(\"tripPlanner.order.distance\")}</Cell>\n <Cell>{getMessage(\"tripPlanner.picker.name\")}</Cell>\n <Cell>{getMessage(\"tripPlanner.picker.startTime\")}</Cell>\n <Cell>{getMessage(\"tripPlanner.picker.endTime\")}</Cell>\n <Cell>{getMessage(\"tripPlanner.vehicle\")}</Cell>\n <Cell>{getMessage(\"tripPlanner.vehicle.shiftStart\")}</Cell>\n <Cell>{getMessage(\"tripPlanner.vehicle.shiftEnd\")}</Cell>\n <Cell>{getMessage(\"tripPlanner.tripNo\")}</Cell>\n <Cell>{getMessage(\"tripPlanner.tripStart\")}</Cell>\n <Cell>{getMessage(\"tripPlanner.tripEnd\")}</Cell>\n <Cell>{getMessage(\"tripPlanner.orderSeq\")}</Cell>\n <Cell>{getMessage(\"tripPlanner.arrival\")}</Cell>\n <Cell>{getMessage(\"tripPlanner.waiting\")}</Cell>\n <Cell>{getMessage(\"tripPlanner.complete\")}</Cell>\n </Header>\n {this.state.plannedTrip &&\n this.state.plannedTrip.map((plannedTrip, plannedTripIndex) => {\n return (\n plannedTrip &&\n plannedTrip.plannedTrips.map(\n (trip, tripIndex) =>\n trip &&\n trip.orders.map((order, orderIndex) => (\n <Row key={`row-${tripIndex}-${orderIndex}`}>\n <Cell>\n {order.clientId ? (\n <span className=\"text-muted\">#</span>\n ) : (\n <span className=\"text-muted\">Z</span>\n )}\n {order.clientId ? order.clientId : order.id}\n </Cell>\n <Cell>{order.status}</Cell>\n <Cell className=\"align-right\">\n {order.productCount}\n </Cell>\n <Cell>\n {\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n order.createdAt\n )\n ).split(\",\")[0]\n }\n </Cell>\n <Cell>\n {\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n order.createdAt\n )\n ).split(\",\")[1]\n }\n </Cell>\n {isExtensionEnabled(\"DeliverySlots\") && (\n <Cell>\n {order.slot &&\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${\n new Date().toISOString().split(\"T\")[0]\n } ${order.slot.split(\"-\")[0].trim()}`\n )\n ).split(\",\")[1]}\n </Cell>\n )}\n {isExtensionEnabled(\"DeliverySlots\") && (\n <Cell>\n {order.slot &&\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${\n new Date().toISOString().split(\"T\")[0]\n } ${order.slot.split(\"-\")[1].trim()}`\n )\n ).split(\",\")[1]}\n </Cell>\n )}\n <Cell>\n {Number(order.address.location.lat).toFixed(2)}\n </Cell>\n <Cell>\n {Number(order.address.location.long).toFixed(2)}\n </Cell>\n <Cell className=\"align-right\">\n {trip.sequence\n ? (\n Number(trip.sequence[orderIndex].Distance) /\n 1000\n ).toFixed(2)\n : \"\"}\n </Cell>\n <Cell>{order.metaData.picker}</Cell>\n <Cell>\n {moment\n .utc(order.metaData.pickingStartsBy)\n .format(\"YYYY-MM-DD\") !== \"0001-01-01\"\n ? getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n order.metaData.pickingStartsBy\n )\n ).split(\",\")[1]\n : \"-\"}\n </Cell>\n <Cell>\n {moment\n .utc(order.metaData.pickingEndsBy)\n .format(\"YYYY-MM-DD\") !== \"0001-01-01\"\n ? getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n order.metaData.pickingEndsBy\n )\n ).split(\",\")[1]\n : \"-\"}\n </Cell>\n <Cell>{trip.vehicle.number}</Cell>\n <Cell>\n {trip.vehicle &&\n trip.vehicle.number !== \"\" &&\n trip.vehicle.shiftIn\n ? getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${\n new Date().toISOString().split(\"T\")[0]\n } ${trip.vehicle.shiftIn}`\n )\n ).split(\",\")[1]\n : \"\"}\n </Cell>\n <Cell>\n {trip.vehicle &&\n trip.vehicle.number !== \"\" &&\n trip.vehicle.shiftOut\n ? getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${\n new Date().toISOString().split(\"T\")[0]\n } ${trip.vehicle.shiftOut}`\n )\n ).split(\",\")[1]\n : \"\"}\n </Cell>\n <Cell className=\"align-right\">{tripIndex}</Cell>\n <Cell>\n {trip.startTime &&\n moment\n .utc(trip.startTime)\n .format(\"YYYY-MM-DD\") !== \"0001-01-01\"\n ? getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n trip.startTime\n )\n ).split(\",\")[1]\n : \"-\"}\n </Cell>\n <Cell>\n {trip.endTime &&\n moment.utc(trip.endTime).format(\"YYYY-MM-DD\") !==\n \"0001-01-01\"\n ? getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n trip.endTime\n )\n ).split(\",\")[1]\n : \"-\"}\n </Cell>\n <Cell className=\"align-right\">{orderIndex}</Cell>\n <Cell>\n {order.metaData &&\n order.metaData.eta &&\n moment\n .utc(order.metaData.eta)\n .format(\"YYYY-MM-DD\") !== \"0001-01-01\"\n ? getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n order.metaData.eta\n )\n ).split(\",\")[1]\n : \"-\"}\n </Cell>\n <Cell>\n {order.metaData &&\n order.metaData.waiting &&\n moment\n .utc(order.metaData.waiting)\n .format(\"YYYY-MM-DD\") !== \"0001-01-01\"\n ? order.metaData.waiting\n : \"-\"}\n </Cell>\n <Cell>\n {order.metaData &&\n order.metaData.completionTime &&\n moment\n .utc(order.metaData.completionTime)\n .format(\"YYYY-MM-DD\") !== \"0001-01-01\"\n ? getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n order.metaData.completionTime\n )\n ).split(\",\")[1]\n : \"-\"}\n </Cell>\n </Row>\n ))\n )\n );\n })}\n </Table>\n </div>\n )}\n </AuthenticatedPage>\n );\n }\n}\n\nexport default TripPlannerTable;\n","import React, { Component } from \"react\";\nimport { tableProperties } from \"../../operations/Pickers\";\nimport PickerForm from \"../../operations/Pickers/Form\";\nimport PickerFilter from \"../../operations/Pickers/Filters\";\nimport ListingPage from \"../../../containers/ListingPage\";\nimport { getMessage } from \"../../../lib/translator\";\nimport \"../../operations/Pickers/style.css\";\nimport emptyStateIcon from \"./runner_executives.svg\";\n\nimport {\n getStandradDateTime,\n utcToLocalTime,\n localTimeToUtc,\n} from \"../../../lib/datetime\";\nconst emptyState = {\n icon: emptyStateIcon,\n message: getMessage(\"manage-runner-executives-emptyState.emptyMessage\"),\n};\n\nclass ManageRE extends Component {\n render() {\n const { props } = this;\n return (\n <ListingPage\n className=\"pickers-page\" // Here we are using css of pickers-page\n menu={props.menu}\n title={getMessage(\"manage-runner-executives.title\")}\n api={{\n url: \"/account-service/employee\",\n params: {\n roleId: 4,\n },\n transform: (response) => {\n const employees = response.data.employee;\n if (Array.isArray(employees)) {\n employees.map((employee) => {\n if (employee?.attendance?.createdAt) {\n if (employee.attendance.createdAt.includes(\"T\")) {\n const newDate = employee.attendance.createdAt.split(/[TZ]/);\n employee.attendance.createdAt = `${newDate[0]} ${newDate[1]}`;\n }\n employee.attendance.createdAt = getStandradDateTime(\n utcToLocalTime,\n employee.attendance.createdAt\n );\n }\n if (employee.shiftStart) {\n employee.shiftStart = getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n employee.shiftStart\n }`\n ).split(\" \")[1];\n }\n if (employee.shiftEnd) {\n employee.shiftEnd = getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n employee.shiftEnd\n }`\n ).split(\" \")[1];\n }\n return employee;\n });\n } else {\n if (employees?.attendance?.createdAt) {\n if (employees.attendance.createdAt.includes(\"T\")) {\n const newDate = employees.attendance.createdAt.split(/[TZ]/);\n employees.attendance.createdAt = `${newDate[0]} ${newDate[1]}`;\n }\n employees.attendance.createdAt = getStandradDateTime(\n utcToLocalTime,\n employees.attendance.createdAt\n );\n }\n if (employees.shiftStart) {\n employees.shiftStart = getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n employees.shiftStart\n }`\n ).split(\" \")[1];\n }\n if (employees.shiftEnd) {\n employees.shiftEnd = getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n employees.shiftEnd\n }`\n ).split(\" \")[1];\n }\n }\n return employees;\n },\n }}\n editHeading={getMessage(\"manage-runner-executives.editHeading\")}\n modalClassName=\"picker-form\"\n storeDependent\n emptyState={emptyState}\n tableProperties={tableProperties}\n form={{\n component: PickerForm,\n transformSubmit: (formData) => {\n let runnerExecutive = Object.assign({}, formData);\n if (runnerExecutive.shiftStart) {\n runnerExecutive.shiftStart = getStandradDateTime(\n localTimeToUtc,\n `${new Date().toISOString().split(\"T\")[0]} ${\n runnerExecutive.shiftStart\n }:00`\n ).split(\" \")[1];\n }\n if (runnerExecutive.shiftEnd) {\n runnerExecutive.shiftEnd = getStandradDateTime(\n localTimeToUtc,\n `${new Date().toISOString().split(\"T\")[0]} ${\n runnerExecutive.shiftEnd\n }:00`\n ).split(\" \")[1];\n }\n return runnerExecutive;\n },\n }}\n filters={{\n component: PickerFilter,\n }}\n />\n );\n }\n}\n\nexport default ManageRE;\n","import React from \"react\";\nimport { BaseForm, Select, Input, Radio } from \"../../../components/Form\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport Loader from \"../../../components/Loader\";\nimport API from \"../../../lib/api\";\nimport { getMessage } from \"../../../lib/translator\";\nimport toTitleCase from \"../../../utils/toTitleCase\";\nimport { Dialog } from \"../../../components/Popup\";\n\nimport \"./style.css\";\n\nconst autoTripGenerationInputs = [\n \"fixedPickingTime\",\n \"perItemPickingTime\",\n \"fixedPackingTime\",\n \"perItemPackingTime\",\n \"fixedLoadingTime\",\n \"perItemLoadingTime\",\n \"perContainerLoadingTime\",\n \"averageServiceTime\",\n \"averageTravelTime\",\n \"averageSpeedInKms\",\n];\n\nclass LogisticsConfig extends BaseForm {\n constructor(props) {\n super(props);\n this.closeDialogs = this.closeDialogs.bind(this);\n }\n closeDialogs() {\n this.setState({\n showSuccessDialog: false,\n });\n }\n componentDidMount() {\n this.setState({\n loading: true,\n });\n const api = new API({ url: \"/account-service/config/logistics\" });\n const configServiceApi = new API({\n url: \"/config-service/config/logistics\",\n });\n const configServiceOrderApi = new API({\n url: \"/config-service/config/order\",\n });\n\n Promise.all([\n api.get(),\n configServiceApi.get(),\n configServiceOrderApi.get(),\n ])\n .then(([response, configServiceResponse, configServiceOrderResponse]) => {\n let config = response.data.config.logistics;\n const {\n fixedPickingTime,\n perItemPickingTime,\n fixedPackingTime,\n perItemPackingTime,\n fixedLoadingTime,\n perItemLoadingTime,\n perContainerLoadingTime,\n averageServiceTime,\n averageTravelTime,\n averageSpeedInKms,\n } = configServiceResponse.data.logistics;\n config.tripGeneration =\n configServiceResponse.data.logistics.tripGeneration;\n config.orderBreakingMethod =\n configServiceResponse.data.logistics.orderBreakingMethod;\n config.fixedPickingTime = fixedPickingTime;\n config.perItemPickingTime = perItemPickingTime;\n config.fixedPackingTime = fixedPackingTime;\n config.perItemPackingTime = perItemPackingTime;\n config.fixedLoadingTime = fixedLoadingTime;\n config.perItemLoadingTime = perItemLoadingTime;\n config.perContainerLoadingTime = perContainerLoadingTime;\n config.averageServiceTime = averageServiceTime;\n config.averageTravelTime = averageTravelTime;\n config.averageSpeedInKms = averageSpeedInKms;\n config.otpValidationRequiredForOrderCompletion =\n configServiceOrderResponse.data.order?.otpValidationRequiredForOrderCompletion;\n this.setState({\n loading: false,\n values: config,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n onSubmit(formData) {\n this.setState({\n submitting: true,\n });\n let data = Object.assign({}, this.state.values);\n if (!data.canLeaveAtDoorstep) {\n data.canLeaveAtDoorstep = \"false\";\n }\n if (!data.shouldCaptureOdometer) {\n data.shouldCaptureOdometer = \"false\";\n }\n const configServicePayloadKeys = [\"tripGeneration\", \"orderBreakingMethod\"];\n const orderServicePayloadKeys = [\"otpValidationRequiredForOrderCompletion\"];\n if (data.tripGeneration === \"AUTOMATED\") {\n configServicePayloadKeys.push(...autoTripGenerationInputs);\n }\n const configServicePayload = {};\n configServicePayloadKeys.forEach((key) => {\n configServicePayload[key] = data[key];\n delete data[key];\n });\n const configServiceOrderPayload = {};\n orderServicePayloadKeys.forEach((key) => {\n if (key === \"otpValidationRequiredForOrderCompletion\") {\n configServiceOrderPayload[key] = data[key] === \"true\" ? true : false;\n }\n delete data[key];\n });\n\n const accountServiceApi = new API({\n url: \"/account-service/config/logistics\",\n });\n const configServiceApi = new API({ url: \"/config-service/config\" });\n\n Promise.all([\n accountServiceApi.put({ logistics: data }),\n configServiceApi.post({\n logistics: configServicePayload,\n order: configServiceOrderPayload,\n }),\n ]).then(\n (response) => {\n this.setState({\n showSuccessDialog: true,\n submitting: false,\n });\n },\n (error) => {\n this.setState({\n formError: error.message,\n submitting: false,\n });\n }\n );\n }\n\n render() {\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n const { tripGeneration } = this.state.values;\n return (\n <AuthenticatedPage menu={this.props.menu}>\n <h1>{getMessage(\"logistics.config.heading\")}</h1>\n {this.state.formError && (\n <div className=\"form-error\">{this.state.formError}</div>\n )}\n {this.state.loading ? (\n <Loader />\n ) : (\n <Form className=\"instore-config-form logistics-config-form\">\n <Dialog\n show={this.state.showSuccessDialog}\n className=\"success\"\n title={getMessage(\"extensions.seo.success\")}\n information={getMessage(\"extensions.seo.save.successful\")}\n close={this.closeDialogs}\n closeText={getMessage(\"extensions.seo.ok\")}\n />\n <Select\n label={getMessage(\"logistics.config.reseesOrders\")}\n name=\"REseesOrders\"\n placeholder={getMessage(\"logistics.config.resees.placeholder\")}\n {...this.generateStateMappers({\n stateKeys: [\"RESeesOrders\"],\n loseEmphasisOnFill: true,\n })}\n options={[\n {\n text: getMessage(\"logistics.config.oneByone\"),\n value: \"ONE_BY_ONE\",\n },\n {\n text: getMessage(\"logistics.config.allOrders\"),\n value: \"ALL_ORDERS\",\n },\n ]}\n />\n <Radio\n className=\"logistics-radio\"\n label={getMessage(\"logistics.config.leaveAtDoorstep\")}\n name=\"canLeaveAtDoorstep\"\n {...this.generateStateMappers({\n stateKeys: [\"canLeaveAtDoorstep\"],\n loseEmphasisOnFill: true,\n defaultValue: \"false\",\n })}\n options={[\n {\n text: getMessage(\"logistics.config.yes\"),\n value: true,\n },\n {\n text: getMessage(\"logistics.config.no\"),\n value: \"false\",\n },\n ]}\n />\n <Radio\n className=\"logistics-radio\"\n name=\"shouldCaptureOdometer\"\n label={getMessage(\"logistics.config.shouldCaptureOdometer\")}\n {...this.generateStateMappers({\n stateKeys: [\"shouldCaptureOdometer\"],\n loseEmphasisOnFill: true,\n defaultValue: \"false\",\n })}\n options={[\n {\n text: getMessage(\"logistics.config.yes\"),\n value: true,\n },\n {\n text: getMessage(\"logistics.config.no\"),\n value: \"false\",\n },\n ]}\n />\n <Select\n label={getMessage(\"logistics.config.tripGeneration\")}\n name=\"tripGeneration\"\n placeholder={getMessage(\n \"logistics.config.tripGeneration.placeholder\"\n )}\n {...this.generateStateMappers({\n stateKeys: [\"tripGeneration\"],\n loseEmphasisOnFill: true,\n })}\n options={[\n {\n text: getMessage(\"logistics.config.tripGeneration.automated\"),\n value: \"AUTOMATED\",\n },\n {\n text: getMessage(\"logistics.config.tripGeneration.basic\"),\n value: \"BASIC\",\n },\n ]}\n />\n {tripGeneration === \"AUTOMATED\" &&\n Object.keys(this.state.values).map(\n (autoTripGenerationInput) =>\n autoTripGenerationInputs.includes(\n autoTripGenerationInput\n ) && (\n <Input\n name={autoTripGenerationInput}\n label={toTitleCase(\n autoTripGenerationInput.split(/(?=[A-Z])/).join(\" \")\n )}\n placeholder={`Enter ${toTitleCase(\n autoTripGenerationInput.split(/(?=[A-Z])/).join(\" \")\n )}`}\n type=\"number\"\n key={autoTripGenerationInput}\n value={this.state.values[autoTripGenerationInput]}\n step={\n autoTripGenerationInput === \"averageSpeedInKms\"\n ? \"0.01\"\n : null\n }\n required={tripGeneration === \"AUTOMATED\"}\n {...this.generateStateMappers({\n stateKeys: [autoTripGenerationInput],\n loseEmphasisOnFill: true,\n })}\n />\n )\n )}\n <Select\n label={getMessage(\"logistics.config.orderBreakingMethod\")}\n name=\"orderBreakingMethod\"\n placeholder={getMessage(\n \"logistics.config.orderBreakingMethod.placeholder\"\n )}\n {...this.generateStateMappers({\n stateKeys: [\"orderBreakingMethod\"],\n loseEmphasisOnFill: true,\n })}\n options={[\n {\n text: getMessage(\n \"logistics.config.orderBreakingMethod.clustering\"\n ),\n value: \"CLUSTERING\",\n },\n {\n text: getMessage(\n \"logistics.config.orderBreakingMethod.zoning\"\n ),\n value: \"ZONING\",\n },\n ]}\n />\n <Radio\n className=\"logistics-radio\"\n label={getMessage(\"logistics.config.orderOtpValidation\")}\n name=\"orderOtpValidation\"\n {...this.generateStateMappers({\n stateKeys: [\"otpValidationRequiredForOrderCompletion\"],\n loseEmphasisOnFill: true,\n defaultValue: \"false\",\n })}\n options={[\n {\n text: getMessage(\"logistics.config.yes\"),\n value: true,\n },\n {\n text: getMessage(\"logistics.config.no\"),\n value: false,\n },\n ]}\n />\n <div className=\"form-action\">\n <SubmitButton>{getMessage(\"logistics.save\")}</SubmitButton>\n <button\n type=\"button\"\n className=\"button\"\n onClick={this.props.history.goBack}\n >\n {getMessage(\"logistics.cancel\")}\n </button>\n </div>\n </Form>\n )}\n </AuthenticatedPage>\n );\n }\n}\n\nexport default LogisticsConfig;\n","import React from \"react\";\nimport \"./style.css\";\nimport img from \"./image.png\";\n\nexport default function ProductCollection(props) {\n if (!props.data) {\n return (\n <div>\n <img src={img} alt=\"\" />\n </div>\n );\n }\n return (\n <div>\n {props.data.title && <h2>{props.data.title}</h2>}\n {props.data.subtitle && <h3>{props.data.subtitle}</h3>}\n <img src={img} alt=\"\" />\n </div>\n );\n}\n","import React from \"react\";\n\nexport default function LayoutGreenCard({ className }) {\n return (\n <svg\n width=\"240px\"\n height=\"300px\"\n viewBox=\"0 0 240 300\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n className={className}\n >\n <title>Green\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nexport default function LayoutRedCard({ className }) {\n return (\n \n Red\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport Image from \"../../Image\";\nimport \"./style.css\";\nimport LayoutGreenCard from \"./LayoutGreenCard\";\nimport LayoutRedCard from \"./LayoutRedCard\";\n\nexport default function DualImageGrid(props) {\n const { data, textPosition = \"\" } = props;\n const { imageUrl1, imageUrl2, subtitle1, subtitle2, title1, title2 } = data;\n const className = `${textPosition} DualImageGrid`;\n return (\n
    \n
    \n {imageUrl1 ? (\n \n ) : (\n \n )}\n
    \n
    {title1}
    \n
    {subtitle1}
    \n
    \n
    \n
    \n {imageUrl2 ? (\n \n ) : (\n \n )}\n
    \n
    {title2}
    \n
    {subtitle2}
    \n
    \n
    \n
    \n );\n}\n","export const fontSizes = [\n {\n text: \"42\",\n value: \"42px\",\n },\n {\n text: \"40\",\n value: \"40px\",\n },\n {\n text: \"38\",\n value: \"38px\",\n },\n {\n text: \"36\",\n value: \"36px\",\n },\n {\n text: \"34\",\n value: \"34px\",\n },\n {\n text: \"32\",\n value: \"32px\",\n },\n {\n text: \"30\",\n value: \"30px\",\n },\n {\n text: \"28\",\n value: \"28px\",\n },\n {\n text: \"26\",\n value: \"26px\",\n },\n {\n text: \"24\",\n value: \"24px\",\n },\n {\n text: \"22\",\n value: \"22px\",\n },\n {\n text: \"20\",\n value: \"20px\",\n },\n {\n text: \"18\",\n value: \"18px\",\n },\n {\n text: \"16\",\n value: \"16px\",\n },\n];\n\nexport const specialLayout = [\"footer\", \"Splash Screen\"];\n\nexport const WYSWYG_Layouts = [\"Highlights\"]; // ZS components layouts\n","import React from \"react\";\nimport { BaseForm, Checkbox } from \"../../../components/Form\";\nimport API from \"../../../lib/api\";\nimport Loader from \"../../../components/Loader\";\nimport { isExtensionEnabled } from \"../../../lib/auth\";\nimport { WYSWYG_Layouts } from \"./constants\";\n\nfunction trimQueryString(str) {\n return str.split(\"&\").filter(Boolean).join(\"&\");\n}\n\nexport default class Layout extends BaseForm {\n constructor(props) {\n super(props);\n this.preview =\n this.props.preview ||\n (() => {\n return null;\n });\n this.fields =\n this.props.fields ||\n (() => {\n return null;\n });\n this.state.values = this.props.data;\n this.state.values.showOriginal = this.props.data?.showOriginal;\n this.state.uploadLoader = false;\n this.getValueLayouts = {\n CategoryCollection: {\n name: \"category\",\n key: \"categoryIds\",\n },\n BrandCollection: {\n name: \"brand\",\n key: \"brandIds\",\n },\n BlogCollection: {\n name: \"blog\",\n key: \"blogIds\",\n },\n };\n }\n componentDidMount() {\n const name = this.props.name;\n let data = this.props.data;\n let layout = this.getValueLayouts[name];\n if (layout && data[layout.key] && data[layout.key].length > 0) {\n this.setState({\n loading: true,\n });\n let param = \"\";\n let cparam = \"\";\n let tparam = \"\";\n data[layout.key] &&\n data[layout.key].forEach((id) => {\n if (layout.name === \"category\") {\n if (Number(id)) {\n cparam += `id=${id}&`;\n } else {\n let type = id && id[0] && id[0].toString();\n if (type === \"C\") {\n cparam += `id=${id && id.toString().slice(1)}&`;\n } else if (type === \"T\") {\n tparam += `id=${id && id.toString().slice(1)}&`;\n }\n }\n } else {\n param += `id=${id}&`;\n }\n });\n // trim extra & at the end\n param = trimQueryString(param);\n cparam = trimQueryString(cparam);\n tparam = trimQueryString(tparam);\n\n if (layout.name === \"category\") {\n cparam += \"&paginate=false\";\n tparam += \"&paginate=false\";\n const categoryApi = cparam\n ? new API({ url: `/catalogue-service/category?${cparam}` })\n : null;\n const tagApi =\n tparam && isExtensionEnabled(\"ProductTagSupport\")\n ? new API({ url: `/catalogue-service/tag?${tparam}` })\n : null;\n Promise.all([categoryApi && categoryApi.get(), tagApi && tagApi.get()])\n .then(([categoryResponse, tagResponse]) => {\n let categories =\n (categoryResponse &&\n categoryResponse.data &&\n categoryResponse.data.category) ||\n [];\n categories = (categories || []).map((category) => {\n category.id = `C${category.id}`;\n return category;\n });\n let tags =\n (tagResponse && tagResponse.data && tagResponse.data.tag) || [];\n tags = (tags || []).map((tag) => {\n tag.name = `T ${tag.name}`;\n tag.id = `T${tag.id}`;\n return tag;\n });\n categories = [...categories, ...tags];\n let data = categories;\n let sortedData = [];\n // We are sorting the get incoming data based on the props data categoryIds\n if (this.props.sortable) {\n this.props.data &&\n this.props.data[layout.key] &&\n this.props.data[layout.key].map((id) => {\n data.map((item) => {\n if (item.id === id) {\n sortedData.push(item);\n }\n return null;\n });\n return null;\n });\n }\n let values = Object.assign({}, this.state.values);\n values[layout.name] = this.props.sortable ? sortedData : data;\n this.setState({\n values,\n loading: false,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n } else if (layout.name === \"blog\") {\n param += \"&paginate=false\";\n const blogApi = param\n ? new API({ url: `/blog-service/blog?${cparam}` })\n : null;\n\n blogApi\n .get()\n .then((response) => {\n let blogs = response?.data?.blog || [];\n blogs = (blogs || []).map((blog) => {\n blog.id = `${blog.id}`;\n return blog;\n });\n\n let data = blogs;\n let sortedData = [];\n // We are sorting the get incoming data based on the props data categoryIds\n if (this.props.sortable) {\n this.props.data &&\n this.props.data[layout.key] &&\n this.props.data[layout.key].map((id) => {\n data.map((item) => {\n if (item.id === id) {\n sortedData.push(item);\n }\n return null;\n });\n return null;\n });\n }\n let values = Object.assign({}, this.state.values);\n values[layout.name] = this.props.sortable ? sortedData : data;\n this.setState({\n values,\n loading: false,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n } else {\n // this is for brand collection\n if (layout.name === \"brand\") {\n param += `&paginate=false`;\n }\n const api = new API({\n url: `/catalogue-service/${layout.name}?${param}`,\n });\n const sortedKeys = data[layout.key];\n api\n .get()\n .then((response) => {\n let data = response.data[layout.name];\n let values = Object.assign({}, this.state.values);\n\n // sort the response in the same order as sortedKeys\n data =\n data &&\n data.sort(\n (a, b) => sortedKeys.indexOf(a.id) - sortedKeys.indexOf(b.id)\n );\n\n values[layout.name] = data;\n this.setState({\n values,\n loading: false,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n if (name === \"ProductCollection\") {\n let entityObj = {};\n let promises = [];\n if (data.category) {\n const api = new API({\n url: `/catalogue-service/category?slug=${data.category}`,\n });\n if (data.category === \"CURRENT\") {\n entityObj.category = {\n id: new Date().getTime(),\n name: \"current\",\n displayName: \"current\",\n slug: \"CURRENT\",\n };\n } else {\n promises.push(api.get());\n }\n }\n if (data.brand && isExtensionEnabled(\"MultiBrandSupport\")) {\n const api = new API({\n url: `/catalogue-service/brand?slug=${data.brand}`,\n });\n if (data.brand === \"CURRENT\") {\n entityObj.brand = {\n id: new Date().getTime(),\n name: \"current\",\n displayName: \"current\",\n slug: \"CURRENT\",\n };\n } else {\n promises.push(api.get());\n }\n }\n if (data.tag && isExtensionEnabled(\"ProductTagSupport\")) {\n const api = new API({ url: `/catalogue-service/tag?slug=${data.tag}` });\n if (data.tag === \"CURRENT\") {\n entityObj.tag = {\n id: new Date().getTime(),\n name: \"current\",\n displayName: \"current\",\n slug: \"CURRENT\",\n };\n } else {\n promises.push(api.get());\n }\n }\n Promise.all(promises)\n .then((responseArr) => {\n let values = JSON.parse(JSON.stringify(this.state.values));\n responseArr.map((response) => {\n if (response.data.category) {\n entityObj.category = response.data.category[0];\n }\n if (response.data.brand) {\n entityObj.brand = response.data.brand[0];\n }\n if (response.data.tag) {\n entityObj.tag = response.data.tag[0];\n }\n return null;\n });\n values = { ...values, ...entityObj };\n\n this.setState({ values });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n\n handleChangeOriginal = (value) => {\n this.setState({\n values: { ...this.state.values, showOriginal: value },\n });\n };\n\n handleUpdateData = (data) => {\n this.setState({\n values: {\n ...this.state.values,\n ...data,\n },\n });\n };\n\n uploadContent = (file, uploadCallBack) => {\n this.setState({\n uploadLoader: true,\n });\n let data;\n if (file) {\n data = new window.FormData();\n if (file?.type === \"image/gif\") {\n data.append(\"fileUpload\", file);\n data.append(\"bucketType\", \"public\");\n const api = new API({ url: \"/media-service/file\" });\n api\n .post(data)\n .then(\n (response) => {\n uploadCallBack({\n imageUpload: {\n url: response.data.url,\n },\n });\n },\n (error) => {\n if (error.code === 401) {\n throw error;\n }\n }\n )\n .finally(() => {\n this.setState({\n uploadLoader: false,\n });\n });\n } else {\n data.append(\"imageUpload\", file);\n const api = new API({ url: \"/media-service/image-upload\" });\n api\n .post(data)\n .then(\n (response) => {\n //passing response.data to onChange if we have different resized images for different resolutions\n uploadCallBack({\n imageUpload: {\n url: response?.data?.imageUpload?.url,\n },\n });\n },\n (error) => {\n if (error.code === 401) {\n throw error;\n }\n }\n )\n .finally(() => {\n this.setState({\n uploadLoader: false,\n });\n });\n }\n }\n };\n\n shouldPassDataAsProps = () => {\n let stateKeys = Object.keys(this.state.values);\n stateKeys = stateKeys?.filter(\n (key) => ![\"name\", \"showOriginal\"].includes(key)\n );\n if (stateKeys.length > 1) return true;\n return false;\n };\n\n render() {\n let { Form } = this.components;\n let { SubmitButton, CancelButton } = this.buttons;\n let Preview = this.preview;\n const styles = {\n transform: `translate3d(0, ${this.props.top - 65}px, 0)`, // 65px to accommodate for the page heading\n };\n const { validations: { layoutBackground: { backgroundColor } = {} } = {} } =\n this.state;\n const disableSubmit = backgroundColor ? !backgroundColor?.valid : false;\n const loading = this.state.loading;\n const isOriginalAvailable = [\n \"ImageSlideShow\",\n \"CategoryCollection\",\n ].includes(this.props.name);\n return loading ? (\n \n ) : (\n
    \n

    {this.props.name.replace(/([A-Z])/g, \" $1\").trim()}

    \n {!WYSWYG_Layouts.includes(this.props.name) && (\n {\n this.layoutElement = el;\n }}\n className=\"layout chosenAnimation\"\n style={styles}\n >\n \n
    \n )}\n
    \n {isOriginalAvailable && (\n <>\n \n \n )}\n {this.fields({\n getState: this.getState.bind(this),\n updateState: this.updateState.bind(this),\n registerValidation: this.registerValidation.bind(this),\n parent: this,\n page: this.props.page,\n edit: this.props?.editing,\n updateData: this.handleUpdateData,\n uploadContent: this.uploadContent,\n isUploadLoading: this.state.uploadLoader,\n ...(this.shouldPassDataAsProps() && {\n data: this.state.values,\n }),\n })}\n
    \n
    \n Cancel\n {this.props?.onSaveClick ? (\n {\n e.preventDefault();\n this.props.onSaveClick(this.state.values);\n }}\n >\n save\n \n ) : (\n Save\n )}\n
    \n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport debounce from \"lodash.debounce\";\nimport \"./style.css\";\nimport img from \"./image.png\";\n\nexport default class extends Component {\n constructor(props) {\n super(props);\n this.state = {\n activeSlide: props.data.activeIndex || 0,\n };\n this.slideElements = [];\n this.handleResize = debounce(this.handleResize.bind(this), 400);\n }\n\n slideTo(slideIndex) {\n this.setState({\n activeSlide: slideIndex,\n });\n }\n handleResize() {\n this.setState(this.state);\n }\n\n componentDidMount() {\n this.slideTo(this.state.activeSlide);\n window.addEventListener(\"resize\", this.handleResize);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.handleResize);\n }\n\n componentWillReceiveProps(newProps) {\n this.setState({\n activeSlide: newProps.data.activeIndex,\n });\n }\n\n render() {\n const { state, props, slideElements } = this;\n if (!props.data.images) {\n return (\n
    \n \"\"\n
    \n );\n }\n const slides = props.data.images;\n const slideAmount = slideElements\n .slice(0, state.activeSlide)\n .reduce((width, currentSlide) => width + currentSlide.offsetWidth, 0);\n const slideStyles = {\n transform: `translate3d(${-1 * slideAmount}px, 0, 0)`,\n };\n return (\n
    \n
    \n {slides.map((slide, index) => {\n return (\n {\n slideElements[index] = el;\n }}\n key={index}\n className={\n (Number(state.activeSlide) === index ? \"active \" : \"\") +\n \"slide\"\n }\n >\n \"\"\n
    \n );\n })}\n
    \n
    \n {slides.map((slide, index) => {\n return (\n {\n this.slideTo(index);\n }}\n />\n );\n })}\n {/* \n */}\n
    \n
    \n {slides.map((slide, index) => (\n
    \n

    {slide.text}

    \n

    {slide.subtitle}

    \n
    \n ))}\n
    \n \n );\n }\n}\n","import React from \"react\";\nimport { Input, Upload } from \"../../../../components/Form\";\nimport Tabs from \"../../../../components/Tabs\";\nimport ImageSlideshow from \"../../../../components/Layout/ImageSlideshow\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nconst ImageSlideShow = () => {\n return {\n preview: ImageSlideshow,\n fields: ({ getState, updateState, parent }) => {\n const activeIndex = Number(getState([\"activeIndex\"])) || 0;\n const emptySlide = {\n gifUrl: \"\",\n imageUrl: \"\",\n text: \"\",\n link: \"\",\n };\n const slides = getState([\"images\"]) || [emptySlide];\n const currentSlide = slides[activeIndex] || emptySlide;\n\n if (!getState([\"images\"])) {\n updateState([\"images\"], slides); // TODO: Move this to componentWillMount of layout\n }\n\n // Since updateStateRecursively had some issues with this structure\n const newState = (key, value) => {\n parent.setState((prevState) => {\n const newState = Object.assign({}, prevState);\n newState.values.images[activeIndex][key] = value;\n return prevState;\n });\n };\n const showDelete = slides && slides.length > 1;\n return (\n
    \n
    \n (\n \n slide {index + 1}\n {showDelete && (\n {\n slides.splice(index, 1);\n updateState(\n [\"activeIndex\"],\n index !== 0 && index === slides.length\n ? index - 1\n : index\n );\n }}\n >\n ×\n \n )}\n \n ))}\n default={activeIndex}\n active={activeIndex}\n onClick={(value) => {\n updateState([\"activeIndex\"], value);\n }}\n />\n {\n e.preventDefault();\n const slidesCount = slides.length;\n updateState([\"images\"], slides.concat(emptySlide));\n updateState([\"activeIndex\"], slidesCount);\n }}\n >\n + {getMessage(\"imageSlideShow.addSlide\")}\n \n
    \n
    \n
    \n {\n newState(\"text\", value);\n }}\n />\n {\n newState(\"subtitle\", value);\n }}\n />\n {\n newState(\"link\", value);\n }}\n />\n
    \n
    \n {\n const fileUrl = newValue?.url\n if (fileUrl && fileUrl?.toLowerCase()?.endsWith(\".gif\")) {\n newState(\"gifUrl\", fileUrl);\n newState(\"imageUrl\", \"\"); \n } else {\n newState(\"imageUrl\", newValue);\n newState(\"gifUrl\", \"\"); \n }\n }}\n />\n
    \n
    \n
    \n );\n },\n };\n};\nexport default ImageSlideShow;\n","import React from \"react\";\nimport Image from \"../../Image\";\nimport \"./style.css\";\nimport img from \"./image.png\";\n\nexport default function ImageWithText(props) {\n var textPosition = props.textPosition || \"bottom\";\n var className = `${textPosition} ImageWithText`;\n if (!props.data) {\n return (\n
    \n \"\"\n
    \n );\n }\n return (\n
    \n
    \n \"uploaded\n
    \n

    {props.data.title}

    \n

    {props.data.subtitle}

    \n

    {props.data.description}

    \n
    \n
    \n
    \n );\n}\n","import React from \"react\";\nimport { Input, Upload, Textarea } from \"../../../../components/Form\";\nimport ImageWithText from \"../../../../components/Layout/ImageWithText\";\n\n// lower case t is used in Text because it iis dependent on a module whose name is imageWithText with an Upper case T\nconst ImageWithTextLayout = () => {\n return {\n preview: ImageWithText,\n fields: ({ getState, updateState }) => (\n
    \n
    \n {\n updateState([\"title\"], value);\n }}\n />\n {\n updateState([\"imageUrl\"], value);\n }}\n />\n {\n updateState([\"link\"], value);\n }}\n />\n
    \n
    \n {\n updateState([\"subtitle\"], value);\n }}\n />\n {\n updateState([\"description\"], value);\n }}\n />\n
    \n
    \n ),\n };\n};\nexport default ImageWithTextLayout;\n","import React from \"react\";\nimport ProductCollection from \"../../../../components/Layout/ProductCollection\";\nimport {\n Input,\n Select,\n CheckboxGroup,\n Radio,\n CategorySearch,\n BrandSearch,\n Searchable,\n} from \"../../../../components/Form\";\nimport { isExtensionEnabled } from \"../../../../lib/auth\";\nimport { getMessage } from \"../../../../lib/translator\";\nconst ProductCollectionLayout = (selectOptions, defaultOption) => {\n return {\n preview: ProductCollection,\n fields: function ({ getState, updateState, page }) {\n const showOnly = [\n {\n text: getMessage(\"themes.offers\"),\n value: \"hasOffers\",\n },\n {\n text: getMessage(\"themes.images\"),\n value: \"hasImage\",\n },\n {\n text: getMessage(\"themes.stock\"),\n value: \"hasStock\",\n },\n ];\n let showOnlyValue = [];\n\n showOnly.forEach((option) => {\n if (getState([option.value]) === 1) {\n showOnlyValue.push(option.value);\n }\n });\n return (\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n {isExtensionEnabled(\"ProductTagSupport\") && (\n
    \n \n (page === \"tag\"\n ? [\n {\n id: new Date().getTime(),\n name: \"current\",\n slug: \"CURRENT\",\n },\n ]\n : []\n ).concat(response.data.tag)\n }\n {...this.generateStateMappers({\n stateKeys: [\"tag\"],\n })}\n />\n
    \n )}\n
    \n \n
    \n
    \n
    \n {isExtensionEnabled(\"MultiBrandSupport\") && (\n
    \n \n
    \n )}\n
    \n \n
    \n
    \n
    \n
    \n {\n const irrellevant = showOnlyValue.filter(\n (option) => values.indexOf(option) < 0\n );\n const yes = showOnlyValue.filter(\n (option) => values.indexOf(option) >= 0\n );\n irrellevant.forEach((option) => {\n updateState([option], \"\");\n });\n yes.forEach((option) => {\n updateState([option], 1);\n });\n }}\n />\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n );\n },\n };\n};\n\nexport default ProductCollectionLayout;\n","import React from \"react\";\nimport { Input, Upload, Textarea, Select } from \"../../../../components/Form\";\nimport { BannerWithText } from \"zopsmart-ui\";\nimport { fontSizes } from \"../constants.js\";\n\n// lower case t is used in Text because it iis dependent on a module whose name is imageWithText with an Upper case T\nconst BannerWithTextLayout = () => {\n return {\n preview: BannerWithText,\n fields: ({ getState, updateState }) => {\n let buttonTextInput = \"\";\n let buttonLinkInput = \"\";\n if (getState([\"button\"])) {\n buttonTextInput = (\n {\n updateState([\"action\"], value);\n }}\n />\n );\n buttonLinkInput = (\n {\n updateState([\"link\"], value);\n }}\n />\n );\n }\n return (\n
    \n
    \n {\n updateState([\"title\"], value);\n }}\n />\n {\n updateState([\"fontSizeForTitle\"], value);\n }}\n />\n {\n updateState([\"src\"], value);\n }}\n />\n {\n updateState([\"fontSizeForDescription\"], value);\n }}\n />\n {\n updateState([\"link\"], value);\n }}\n />\n {buttonTextInput}\n
    \n
    \n {\n updateState([\"subtitle\"], value);\n }}\n />\n {\n updateState([\"textColorForTitle\"], value);\n }}\n />\n {\n updateState([\"details\"], value);\n }}\n />\n {\n updateState([\"textColorForDescription\"], value);\n }}\n />\n {buttonLinkInput}\n
    \n
    \n );\n },\n };\n};\nexport default BannerWithTextLayout;\n","import React from \"react\";\nimport { Input, Upload, Textarea, Select } from \"../../../../components/Form\";\nimport { BannerWithMultipleButtons } from \"zopsmart-ui\";\nimport { fontSizes } from \"../constants.js\";\n\n// lower case t is used in Text because it iis dependent on a module whose name is imageWithText with an Upper case T\nconst BannerWithMultipleButtonsLayout = () => {\n return {\n preview: BannerWithMultipleButtons,\n fields: ({ getState, updateState }) => {\n return (\n
    \n
    \n {\n updateState([\"title\"], value);\n }}\n />\n {\n updateState([\"fontSizeForTitle\"], value);\n }}\n />\n {\n updateState([\"src\"], value);\n }}\n />\n {\n updateState([\"fontSizeForDescription\"], value);\n }}\n />\n {\n updateState([\"action1\"], value);\n }}\n />\n {\n updateState([\"action2\"], value);\n }}\n />\n {\n updateState([\"link\"], value);\n }}\n />\n
    \n
    \n {\n updateState([\"subtitle\"], value);\n }}\n />\n {\n updateState([\"textColorForTitle\"], value);\n }}\n />\n {\n updateState([\"details\"], value);\n }}\n />\n {\n updateState([\"textColorForDescription\"], value);\n }}\n />\n {\n updateState([\"link1\"], value);\n }}\n />\n {\n updateState([\"link2\"], value);\n }}\n />\n
    \n
    \n );\n },\n };\n};\nexport default BannerWithMultipleButtonsLayout;\n","import React from \"react\";\nimport { Input, Select } from \"../../../../components/Form\";\nimport Tabs from \"../../../../components/Tabs\";\nimport { VideoCardCarousel } from \"zopsmart-ui\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { fontSizes } from \"../constants.js\";\n\nconst VideoCarouselLayout = () => {\n return {\n preview: VideoCardCarousel,\n fields: ({ getState, updateState, parent }) => {\n const activeIndex = Number(getState([\"activeIndex\"])) || 0;\n const emptySlide = {\n src: \"\",\n details: \"\",\n };\n const slides = getState([\"videoCards\"]) || [emptySlide];\n const currentSlide = slides[activeIndex] || emptySlide;\n\n const newState = (key, value) => {\n parent.setState((prevState) => {\n const newState = Object.assign({}, prevState);\n if (!newState.values.videoCards) {\n newState.values.videoCards = [];\n newState.values.videoCards.push(slides[activeIndex]);\n }\n newState.values.videoCards[activeIndex][key] = value;\n return prevState;\n });\n };\n const showDelete = slides && slides.length > 1;\n return (\n
    \n
    \n (\n \n slide {index + 1}\n {showDelete && (\n {\n slides.splice(index, 1);\n updateState(\n [\"activeIndex\"],\n index !== 0 && index === slides.length\n ? index - 1\n : index\n );\n }}\n >\n ×\n \n )}\n \n ))}\n default={activeIndex}\n active={activeIndex}\n onClick={(value) => {\n updateState([\"activeIndex\"], value);\n }}\n />\n {\n e.preventDefault();\n const slidesCount = slides.length;\n updateState([\"videoCards\"], slides.concat(emptySlide));\n updateState([\"activeIndex\"], slidesCount);\n }}\n >\n + {getMessage(\"videoCarousel.addSlide\")}\n \n
    \n
    \n
    \n {\n newState(\"src\", value);\n }}\n />\n {activeIndex === 0 && (\n {\n updateState([\"fontSizeForDescription\"], value);\n }}\n />\n )}\n {\n newState(\"details\", value);\n }}\n />\n
    \n
    \n {\n updateState([\"subtitle\"], value);\n }}\n />\n {activeIndex === 0 && (\n {\n updateState([\"textColorForDescription\"], value);\n }}\n />\n )}\n
    \n
    \n
    \n );\n },\n };\n};\nexport default VideoCarouselLayout;\n","import React from \"react\";\nimport ProductCollection from \"../../../../components/Layout/ProductCollection\";\nimport {\n Input,\n Radio,\n Checkbox,\n Searchable,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { isExtensionEnabled } from \"../../../../lib/auth\";\n\nconst getChain = (category) => {\n let chain = [];\n let reference = category;\n while (reference) {\n chain.push(reference.name);\n reference = reference.parentCategory;\n }\n return chain.reverse().join(\" > \");\n};\n\nfunction renderListElement(suggestion, valueKey, nameKey, onSelect) {\n return (\n onSelect(suggestion)}\n >\n {suggestion[nameKey] &&\n (suggestion[nameKey].split(\"\")[0] === \"C\" ||\n suggestion[nameKey].split(\"\")[0] === \"T\")\n ? suggestion[nameKey]\n .split(\"\")\n .splice(2, suggestion[nameKey].length)\n .join(\"\")\n : suggestion[nameKey]}\n \n );\n}\n\nconst CategoryCollectionLayout = () => {\n return {\n preview: ProductCollection,\n fields: ({ getState, updateState, parent, page }) => {\n return (\n
    \n
    \n
    \n {\n updateState([\"title\"], e);\n }}\n />\n
    \n
    \n {\n updateState([\"subtitle\"], e);\n }}\n />\n
    \n
    \n {\n updateState([\"layoutType\"], e);\n }}\n />\n
    \n
    \n
    \n {\n {\n return getChain(category)\n ? category.type\n ? category.name\n : `C ${getChain(category)}`\n : \"\";\n }}\n renderListElement={renderListElement}\n transformRequest={(searchText, paramsDefault) => {\n let params = Object.assign({}, paramsDefault);\n params.name = `%${params.name}`;\n return params;\n }}\n transformResponse={(response) => {\n let categories = response.data.category;\n categories = (categories || []).map((category) => {\n category.displayName = `C ${getChain(category)}`;\n // category.name = `C ${category.name}`\n category.id = `C${category.id}`;\n return category;\n });\n return categories;\n }}\n value={getState([\"category\"])}\n onChange={(e) => {\n updateState([\"category\"], e);\n }}\n />\n }\n {isExtensionEnabled(\"ProductTagSupport\") && (\n {\n let tags = response.data.tag || [];\n tags = (tags || []).map((tag) => {\n tag.name = `T ${tag.name}`;\n tag.id = `T${tag.id}`;\n return tag;\n });\n return tags;\n }}\n multiple\n displaySelectedValue={(category) => {\n return getChain(category)\n ? category.type\n ? category.name\n : `C ${getChain(category)}`\n : \"\";\n }}\n renderListElement={renderListElement}\n value={getState([\"category\"])}\n onChange={(e) => {\n updateState([\"category\"], e);\n }}\n />\n )}\n {/* {page === 'category' &&
    \n {\n updateState(['subcategories'], e)\n }}\n />\n
    } */}\n
    \n
    \n
    \n

    {getMessage(\"themes.cc.config\")}

    \n {/* {\n updateState(['showSubCategoryLinks'], e)\n }}\n /> */}\n {\n updateState([\"showProductCount\"], e);\n }}\n />\n {\n updateState([\"fullImage\"], e);\n }}\n />\n
    \n
    \n
    \n );\n },\n };\n};\n\nexport default CategoryCollectionLayout;\n","import React from \"react\";\nimport ProductCollection from \"../../../../components/Layout/ProductCollection\";\nimport {\n Input,\n BrandSearch,\n Radio,\n Checkbox,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nconst BrandCollection = () => {\n return {\n preview: ProductCollection,\n fields: ({ getState, updateState, parent }) => {\n return (\n
    \n
    \n
    \n {\n updateState([\"title\"], e);\n }}\n />\n
    \n
    \n {\n updateState([\"subtitle\"], value);\n }}\n />\n
    \n
    \n {\n updateState([\"layoutType\"], e);\n }}\n />\n
    \n
    \n

    {getMessage(\"themes.cc.config\")}

    \n {\n updateState([\"showProductCount\"], e);\n }}\n />\n
    \n
    \n
    \n
    \n {\n updateState([\"brand\"], e);\n }}\n />\n
    \n
    \n
    \n );\n },\n };\n};\n\nexport default BrandCollection;\n","import React from \"react\";\nimport ProductCollection from \"../../../../components/Layout/ProductCollection\";\nimport { Input, Radio, Checkbox } from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nconst SubCategoryCollectionLayout = () => {\n return {\n preview: ProductCollection,\n fields: ({ getState, updateState, parent, page }) => {\n return (\n
    \n
    \n
    \n {\n updateState([\"title\"], e);\n }}\n />\n
    \n
    \n {\n updateState([\"subtitle\"], e);\n }}\n />\n
    \n
    \n {\n updateState([\"layoutType\"], e);\n }}\n />\n
    \n
    \n
    \n
    \n

    {getMessage(\"themes.cc.config\")}

    \n {\n updateState([\"showProductCount\"], e);\n }}\n />\n {\n updateState([\"showSubCategoryLinks\"], e);\n }}\n />\n {\n updateState([\"fullImage\"], e);\n }}\n />\n
    \n
    \n
    \n );\n },\n };\n};\n\nexport default SubCategoryCollectionLayout;\n","import React from \"react\";\n\nexport default function GreenImage({ className }) {\n return (\n \n Red\n \n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nexport default function GreenImage({ className }) {\n return (\n \n Green\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport Image from \"../../Image\";\nimport \"./style.css\";\nimport RedImage from \"./RedPlaceholderImg\";\nimport GreenImage from \"./GreenPlaceholderImg\";\nimport { getMessage } from \"../../../lib/translator\";\n\nexport default function DualImageBanner({ data }) {\n const className = \"dual-image-banner\";\n const { imageUrl1, imageUrl2, title, subTitle, link } = data;\n\n return (\n
    \n
    \n {imageUrl1 ? (\n \n ) : (\n \n )}\n
    \n
    \n {imageUrl2 ? (\n \n ) : (\n \n )}\n
    \n
    \n
    {title}
    \n
    {subTitle}
    \n {link && (\n \n )}\n
    \n
    \n );\n}\n","import React from \"react\";\nimport { Input, Upload } from \"../../../../components/Form\";\nimport DualImageBanner from \"../../../../components/Layout/DualImageBanner\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nconst DualImageBannerLayout = () => {\n return {\n preview: DualImageBanner,\n fields: ({ getState, updateState }) => (\n
    \n
    \n {\n updateState([\"imageUrl1\"], value);\n }}\n />\n {\n updateState([\"title\"], value);\n }}\n />\n {\n updateState([\"link\"], value);\n }}\n />\n
    \n
    \n {\n updateState([\"imageUrl2\"], value);\n }}\n />\n {\n updateState([\"subTitle\"], value);\n }}\n />\n
    \n
    \n ),\n };\n};\nexport default DualImageBannerLayout;\n","import React from \"react\";\nimport img from \"./form_place_holder.svg\";\n\nexport default function Image(props) {\n return (\n
    \n \"uploaded\"\n
    \n );\n}\n","import React from \"react\";\nimport { Input } from \"../../../../components/Form\";\nimport AppointmentForm from \"../../../../components/Layout/AppointmentForm\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nconst captchaAdminURL = \"https://www.google.com/recaptcha/admin\";\n\nconst AppointmentFormLayout = () => {\n return {\n preview: AppointmentForm,\n fields: ({ getState, updateState }) => {\n return (\n
    \n
    \n {\n updateState([\"googleCaptchaKey\"], value);\n }}\n />\n {\n updateState([\"googleCaptchaSecret\"], value);\n }}\n />\n
    \n {`If you do not have both keys. You can create from`}\n \n Here\n \n
    \n
    \n
    \n );\n },\n };\n};\nexport default AppointmentFormLayout;\n","import React from \"react\";\nimport { Input, Upload } from \"../../../../components/Form\";\nimport DualImageGrid from \"../../../../components/Layout/DualImageGrid\";\nimport { getMessage } from \"../../../../lib/translator\";\n\n// lower case t is used in Text because it iis dependent on a module whose name is imageWithText with an Upper case T\nconst DualImageLayout = () => {\n return {\n preview: DualImageGrid,\n fields: ({ getState, updateState }) => (\n
    \n
    \n {\n updateState([\"title1\"], value);\n }}\n />\n {\n updateState([\"subtitle1\"], value);\n }}\n />\n {\n updateState([\"imageUrl1\"], value);\n }}\n />\n {\n updateState([\"link1\"], value);\n }}\n />\n
    \n
    \n {\n updateState([\"title2\"], value);\n }}\n />\n {\n updateState([\"subtitle2\"], value);\n }}\n />\n {\n updateState([\"imageUrl2\"], value);\n }}\n />\n {\n updateState([\"link2\"], value);\n }}\n />\n
    \n
    \n ),\n };\n};\nexport default DualImageLayout;\n","import React from \"react\";\nimport ProductCollection from \"../../../../components/Layout/ProductCollection\";\nimport { Input, Radio, Searchable } from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nconst getChain = (blog) => {\n let chain = [];\n let reference = blog;\n while (reference) {\n chain.push(reference.title);\n reference = reference.url;\n }\n return chain.reverse().join(\" > \");\n};\n\nfunction renderListElement(suggestion, valueKey, nameKey, onSelect) {\n return (\n onSelect(suggestion)}\n >\n {suggestion[nameKey]}\n \n );\n}\n\nconst BlogCollectionLayout = () => {\n return {\n preview: ProductCollection,\n fields: ({ getState, updateState, parent, page }) => {\n return (\n
    \n
    \n
    \n {\n updateState([\"title\"], e);\n }}\n />\n
    \n
    \n {\n updateState([\"subtitle\"], e);\n }}\n />\n
    \n
    \n {\n updateState([\"layoutType\"], e);\n }}\n />\n
    \n
    \n
    \n {\n {\n return getChain(blog) ? blog.title : `${getChain(blog)}`;\n }}\n renderListElement={renderListElement}\n transformRequest={(searchText, paramsDefault) => {\n let params = Object.assign({}, paramsDefault);\n params.title = `%${params.title}`;\n return params;\n }}\n transformResponse={(response) => {\n let blogs = response.data.blog;\n blogs = (blogs || []).map((blog) => {\n blog.displayName = `${blog.title}`;\n blog.id = `${blog.id}`;\n return blog;\n });\n return blogs;\n }}\n value={getState([\"blog\"])}\n onChange={(e) => {\n updateState([\"blog\"], e);\n }}\n />\n }\n
    \n
    \n );\n },\n };\n};\n\nexport default BlogCollectionLayout;","import React from \"react\";\n\nconst LeftArrow = ({ ...props }) => (\n \n left arrow\n \n \n \n \n \n \n \n \n \n);\n\nexport default LeftArrow;\n","import React from \"react\";\n\nconst RightArrow = () => (\n \n \n \n \n \n \n \n \n \n \n);\n\nexport default RightArrow;\n","import React from \"react\";\nimport Image from \"../../Image\";\nimport imgBlank from \"./imgBlank.png\";\nimport LeftArrow from \"./LeftArrow\";\nimport RightArrow from \"./RightArrow\";\nimport \"./style.css\";\n\nexport default function Testimonial(props) {\n const { data } = props;\n if (!(data?.title || data?.subtitle)) {\n return (\n
    \n \"\"\n
    \n );\n }\n const { slides, title = \"\", subtitle = \"\", activeIndex = 0 } = data || {};\n const {\n attribute = \"\",\n authorImage = \"\",\n authorName = \"\",\n testimonial = \"\",\n } = slides?.[activeIndex] || {};\n const isMultiSlides = Boolean(data?.slides?.length > 1 ?? false);\n return (\n
    \n

    {title}

    \n

    {subtitle}

    \n {subtitle &&
    }\n
    \n {isMultiSlides && (\n
    \n \n
    \n )}\n
    \n
    \n \"\"\n
    \n
    {testimonial}
    \n
    \n
    {authorName}
    \n {authorName && attribute && }\n {attribute &&
    {attribute}
    }\n
    \n
    \n {isMultiSlides && (\n
    \n {\" \"}\n
    \n )}\n
    \n
    \n );\n}\n","import React from \"react\";\nimport { Input, Textarea, Upload } from \"../../../../components/Form\";\nimport Tabs from \"../../../../components/Tabs\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport Testimonial from \"../../../../components/Layout/Testimonial\";\n\nconst TestimonialLayout = ({ getState, updateState, parent }) => {\n // ----------------------------------------------------------\n // -------------------------sliders--------------------------\n const activeIndex = Number(getState([\"activeIndex\"])) || 0;\n const emptySlide = {\n testimonial: \"\",\n authorName: \"\",\n };\n const slides = getState([\"slides\"]) || [emptySlide];\n const currentSlide = slides[activeIndex] || emptySlide;\n\n if (!getState([\"slides\"])) {\n updateState([\"slides\"], slides); // TODO: Move this to componentWillMount of layout\n }\n\n // Since updateStateRecursively had some issues with this structure\n const newState = (key, value) => {\n parent.setState((prevState) => {\n const newState = Object.assign({}, prevState);\n newState.values.slides[activeIndex][key] = value;\n return prevState;\n });\n };\n const showDelete = slides && slides.length > 1;\n\n return (\n <>\n
    \n
    \n {\n updateState([\"title\"], value);\n }}\n />\n
    \n
    \n {\n updateState([\"subtitle\"], value);\n }}\n />\n
    \n
    \n\n
    \n
    \n (\n \n Slide {index + 1}\n {showDelete && (\n {\n slides.splice(index, 1);\n updateState(\n [\"activeIndex\"],\n index !== 0 && index === slides.length\n ? index - 1\n : index\n );\n }}\n >\n ×\n \n )}\n \n ))}\n default={activeIndex}\n active={activeIndex}\n onClick={(value) => {\n updateState([\"activeIndex\"], value);\n }}\n />\n {\n e.preventDefault();\n const slidesCount = slides.length;\n updateState([\"slides\"], slides.concat(emptySlide));\n updateState([\"activeIndex\"], slidesCount);\n }}\n >\n + {getMessage(\"imageSlideShow.addSlide\")}\n \n
    \n
    \n
    \n {\n newState(\"authorName\", value);\n }}\n />\n {\n newState(\"testimonial\", value);\n }}\n />\n
    \n
    \n {\n newState(\"attribute\", value);\n }}\n />\n {\n newState(\"authorImage\", value);\n }}\n />\n
    \n
    \n
    \n \n );\n};\nconst TestimonialLayoutWrp = () => {\n return {\n preview: Testimonial,\n fields: ({ getState, updateState, parent, registerValidation }) => (\n \n ),\n };\n};\n\nexport default TestimonialLayoutWrp;\n","import React from \"react\";\n\nconst LeftArrow = ({ ...props }) => (\n \n left arrow\n \n \n \n \n \n \n \n \n \n);\n\nexport default LeftArrow;\n","import React from \"react\";\n\nconst RightArrow = () => (\n \n \n \n \n \n \n \n \n \n \n);\n\nexport default RightArrow;\n","import React from \"react\";\nimport Image from \"../../Image\";\nimport imgHorizontal from \"./imgBlank.png\";\nimport LeftArrow from \"./LeftArrow\";\nimport RightArrow from \"./RightArrow\";\nimport \"./style.css\";\n\nexport default function Carousel(props) {\n const { data } = props;\n if (!data?.questions?.[0]?.question) {\n return (\n
    \n \"\"\n
    \n );\n }\n const { questions, arrowsPosition, layoutBackground = {} } = data || {};\n const { question, description } = questions?.[0] || {};\n const btnAlignCenter = arrowsPosition === \"CENTER\";\n const isMultiQuestion = Boolean(data?.questions?.length > 1 ?? false);\n\n const styleBgImg = {\n backgroundImage: `url(\"${layoutBackground?.backgroundImage || \"\"}\")`,\n backgroundPosition: \"center\",\n backgroundSize: \"cover\",\n backgroundRepeat: \"no-repeat\",\n };\n const styleBgColor = {\n backgroundColor: layoutBackground?.backgroundColor || \"#fbfcfc\",\n };\n const bgType = layoutBackground?.backgroundType || \"COLOR\";\n return (\n \n

    {question}

    \n \n {btnAlignCenter && isMultiQuestion && (\n
    \n \n
    \n )}\n
    \n
    {description}
    \n
    \n {btnAlignCenter && isMultiQuestion && (\n
    \n {\" \"}\n
    \n )}\n \n\n {!btnAlignCenter && isMultiQuestion && (\n
    \n
    {\"<\"}
    \n
    {\">\"}
    \n
    \n )}\n \n );\n}\n","import React, { useEffect } from \"react\";\nimport { Input, Radio, Textarea, Upload } from \"../../../../components/Form\";\nimport Tabs from \"../../../../components/Tabs\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport Carousel from \"../../../../components/Layout/Carousel\";\n\nconst COLOR_PATTERN = /^#([A-F0-9]{3}|[A-F0-9]{6})$/i;\n\nconst CarouselLayout = ({\n getState,\n updateState,\n parent,\n registerValidation,\n}) => {\n // -------------------------sliders--------------------------\n const activeIndex = Number(getState([\"activeIndex\"])) || 0;\n const emptySlide = {\n question: \"\",\n description: \"\",\n };\n const slides = getState([\"questions\"]) || [emptySlide];\n const currentSlide = slides[activeIndex] || emptySlide;\n\n if (!getState([\"questions\"])) {\n updateState([\"questions\"], slides); // TODO: Move this to componentWillMount of layout\n }\n\n // Since updateStateRecursively had some issues with this structure\n const newState = (key, value) => {\n parent.setState((prevState) => {\n const newState = Object.assign({}, prevState);\n newState.values.questions[activeIndex][key] = value;\n return prevState;\n });\n };\n const showDelete = slides && slides.length > 1;\n\n // -------------------------img & color--------------------------\n useEffect(() => {\n if (!getState([\"layoutBackground\", \"backgroundType\"])) {\n updateState([\"layoutBackground\", \"backgroundType\"], \"IMAGE\");\n }\n handleThemeColorValidator(\n getState([\"layoutBackground\", \"backgroundColor\"]) || \"#000000\"\n );\n // eslint-disable-next-line\n }, []);\n const handleThemeColorValidator = (value) => {\n const error = {\n patternMismatch: !COLOR_PATTERN.test(value),\n valid: COLOR_PATTERN.test(value),\n };\n registerValidation([\"layoutBackground\", \"backgroundColor\"], error);\n };\n const isColorOption =\n getState([\"layoutBackground\", \"backgroundType\"]) === \"COLOR\";\n const colorVal = getState([\"layoutBackground\", \"backgroundColor\"]);\n const isColorError = !COLOR_PATTERN.test(colorVal);\n return (\n <>\n
    \n
    \n (\n \n Slide {index + 1}\n {showDelete && (\n {\n slides.splice(index, 1);\n updateState(\n [\"activeIndex\"],\n index !== 0 && index === slides.length\n ? index - 1\n : index\n );\n }}\n >\n ×\n \n )}\n \n ))}\n default={activeIndex}\n active={activeIndex}\n onClick={(value) => {\n updateState([\"activeIndex\"], value);\n }}\n />\n {\n e.preventDefault();\n const slidesCount = slides.length;\n updateState([\"questions\"], slides.concat(emptySlide));\n updateState([\"activeIndex\"], slidesCount);\n }}\n >\n + {getMessage(\"imageSlideShow.addSlide\")}\n \n
    \n
    \n
    \n {\n newState(\"question\", value);\n }}\n />\n {\n newState(\"description\", value);\n }}\n />\n
    \n
    \n
    \n
    \n
    \n
    \n {\n updateState([\"layoutBackground\", \"backgroundType\"], value);\n }}\n />\n {isColorOption ? (\n
    \n {\n updateState([\"layoutBackground\", \"backgroundColor\"], value);\n handleThemeColorValidator(value);\n }}\n siblings={{\n after: (\n {\n updateState(\n [\"layoutBackground\", \"backgroundColor\"],\n value\n );\n handleThemeColorValidator(value);\n }}\n showErrors={isColorError}\n pattern={COLOR_PATTERN}\n validationStrings={{\n patternMismatch: \"Please enter valid color\",\n }}\n />\n ),\n }}\n />\n
    \n ) : (\n {\n updateState([\"layoutBackground\", \"backgroundImage\"], value);\n }}\n />\n )}\n
    \n {\n updateState([\"arrowsPosition\"], value);\n }}\n />\n
    \n
    \n \n );\n};\nconst CarouselLayoutWrp = () => {\n return {\n preview: Carousel,\n fields: ({ getState, updateState, parent, registerValidation }) => (\n \n ),\n };\n};\n\nexport default CarouselLayoutWrp;\n","import React from \"react\";\nimport imgHorizontal from \"./imageHorizontal.png\";\n\nexport default function RichText(props) {\n return (\n
    \n \"\"\n
    \n );\n}\n","import React, { useState } from \"react\";\nimport { useEffect } from \"react\";\nimport {\n Input,\n Upload,\n Radio,\n Toggle,\n} from \"../../../../components/Form\";\nimport RichText from \"../../../../components/Layout/RichText\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport RichEditor from \"../../../../components/RichEditor\";\nconst COLOR_PATTERN = /^#([A-F0-9]{3}|[A-F0-9]{6})$/i;\n\nconst RichTextLayout = (props) => {\n const [islayoutBackgroundEnabled, setIsLayoutBackgroundEnabled] =\n useState(false);\n const { getState, updateState, registerValidation } = props;\n useEffect(() => {\n const backgroundType = getState([\"layoutBackground\", \"backgroundType\"]);\n \n const isEnabled = !!backgroundType;\n setIsLayoutBackgroundEnabled(isEnabled);\n \n if (!backgroundType) {\n updateState([\"layoutBackground\", \"backgroundType\"], \"IMAGE\");\n }\n \n handleThemeColorValidator(\n getState([\"layoutBackground\", \"backgroundColor\"]) || \"#000000\"\n );\n \n // eslint-disable-next-line\n }, []);\n \n const handleThemeColorValidator = (value) => {\n const error = {\n patternMismatch: !COLOR_PATTERN.test(value),\n valid: COLOR_PATTERN.test(value),\n };\n registerValidation([\"layoutBackground\", \"backgroundColor\"], error);\n };\n\n const handleToggleChange = () => {\n setIsLayoutBackgroundEnabled((prev) => {\n const newState = !prev;\n \n if (newState) {\n if (!getState([\"layoutBackground\", \"backgroundType\"])) {\n updateState([\"layoutBackground\", \"backgroundType\"], \"IMAGE\");\n }\n } else {\n resetBackgroundType(); \n }\n \n return newState;\n });\n };\n \n \n const resetBackgroundType = () => {\n updateState([\"layoutBackground\", \"backgroundType\"], \"\");\n updateState([\"layoutBackground\", \"backgroundColor\"], \"\");\n updateState([\"layoutBackground\", \"backgroundImage\"], \"\");\n };\n \n const isColorOption =\n getState([\"layoutBackground\", \"backgroundType\"]) === \"COLOR\";\n const colorVal = getState([\"layoutBackground\", \"backgroundColor\"]);\n const isColorError = !COLOR_PATTERN.test(colorVal);\n return (\n
    \n
    \n {\n updateState([\"title\"], value);\n }}\n />\n
    \n
    \n {\n updateState([\"subtitle\"], value);\n }}\n />\n
    \n
    \n {\n updateState([\"description\"], value);\n }}\n />\n
    \n {getMessage(\"Layout Background\")}\n \n
    \n {islayoutBackgroundEnabled && (\n
    \n {\n updateState([\"layoutBackground\", \"backgroundType\"], value);\n if (value === \"IMAGE\") {\n updateState([\"layoutBackground\", \"backgroundColor\"], \"\");\n }else{\n updateState([\"layoutBackground\", \"backgroundImage\"], \"\");\n }\n }}\n />\n\n {isColorOption ? (\n
    \n {\n updateState([\"layoutBackground\", \"backgroundColor\"], value);\n handleThemeColorValidator(value);\n }}\n siblings={{\n after: (\n {\n updateState(\n [\"layoutBackground\", \"backgroundColor\"],\n value\n );\n handleThemeColorValidator(value);\n }}\n showErrors={isColorError}\n pattern={COLOR_PATTERN}\n validationStrings={{\n patternMismatch: \"Please enter valid color\",\n }}\n />\n ),\n }}\n />\n
    \n ) : (\n {\n updateState([\"layoutBackground\", \"backgroundImage\"], value);\n updateState([\"layoutBackground\", \"backgroundColor\"], \"\");\n }}\n />\n )}\n
    \n )}\n
    \n
    \n );\n};\nconst RichTextLayoutWrp = () => {\n return {\n preview: RichText,\n fields: ({ getState, updateState, registerValidation }) => (\n \n ),\n };\n};\nexport default RichTextLayoutWrp;\n","import React from \"react\";\nimport { BaseForm, Upload } from \"../../../../../components/Form\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport MOBILE2 from \"./Mobile2.svg\";\n\nconst resolutionsAndroid = [\n //andriod\n { width: 200, height: 320 },\n { width: 320, height: 480 },\n { width: 480, height: 800 },\n { width: 720, height: 1280 },\n { width: 960, height: 1600 },\n { width: 1280, height: 1920 },\n];\n\n// ios\nconst resolutionsIos = [\n { width: 640, height: 1136 },\n { width: 750, height: 1334 },\n { width: 828, height: 1792 },\n { width: 1125, height: 2436 },\n { width: 1242, height: 2208 },\n { width: 1242, height: 2688 },\n { width: 1536, height: 2048 },\n { width: 1668, height: 2224 },\n { width: 2048, height: 2732 },\n];\n\nclass AndroidForm extends BaseForm {\n handleUpdateSplashMdpi = (e) => {\n const { updateState } = this.props;\n updateState([\"config\", \"androidAppConfig\", \"splashMdpi\"], e);\n updateState([\"config\", \"iosAppConfig\", \"splashMdpi\"], e);\n };\n\n render() {\n const { Form } = this.components;\n const { getState } = this.props;\n const splashMdpi = getState([\"config\", \"androidAppConfig\", \"splashMdpi\"]);\n const splashImageUrl = splashMdpi?.imageUpload?.url || splashMdpi?.url;\n\n return (\n <>\n
    \n
    \n
    \n
    \n \n
    \n {getMessage(\"mobileApps.longDescription.suggestion\")}\n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n \n );\n }\n}\n\nexport default AndroidForm;\n","import React from \"react\";\nimport AndroidForm from \"./AndriodForm\";\nimport SplashScreen from \"../../../../../components/Layout/Carousel\";\n\nimport \"./style.css\";\n\nconst SplashScreenComponent = (props) => {\n const {\n getState,\n updateState,\n } = props;\n \n return (\n
    \n \n
    \n );\n};\n\nconst SplashScreenWrapper = () => {\n return {\n preview: SplashScreen,\n fields: (props) => ,\n };\n};\n\nexport default SplashScreenWrapper;\n","import React from \"react\";\nimport ProductCollection from \"../../../../components/Layout/ProductCollection\";\nimport { Input, Radio } from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\nconst SellerCollectionLayout = () => {\n return {\n preview: ProductCollection,\n fields: function () {\n return (\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n );\n },\n };\n};\n\nexport default SellerCollectionLayout;\n","import React, { Component } from \"react\";\nimport img from \"./gridBlank.png\";\n\nexport default class extends Component {\n render() {\n return (\n
    \n
    \n \"\"\n
    \n
    \n );\n }\n}\n","import React from \"react\";\nimport { Input, Upload } from \"../../../../components/Form\";\nimport Tabs from \"../../../../components/Tabs\";\nimport GridCollectionLayout from \"../../../../components/Layout/GridCollection\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nconst GridCollection = (props) => {\n const { getState, updateState, parent } = props;\n\n const activeIndex = Number(getState([\"activeIndex\"])) || 0;\n const emptySlide = {\n imageUrl: \"\",\n imgText: \"\",\n link: \"\",\n linkText: \"\",\n bannerText: \"\",\n };\n const slides = getState([\"images\"]) || [emptySlide];\n const currentSlide = slides[activeIndex] || emptySlide;\n\n if (!getState([\"images\"])) {\n updateState([\"images\"], slides); // TODO: Move this to componentWillMount of layout\n }\n\n // Since updateStateRecursively had some issues with this structure\n const newState = (key, value) => {\n parent.setState((prevState) => {\n const newState = Object.assign({}, prevState);\n newState.values.images[activeIndex][key] = value;\n return prevState;\n });\n };\n const showDelete = slides && slides.length > 1;\n return (\n <>\n
    \n
    \n {\n updateState([\"title\"], value);\n }}\n />\n
    \n
    \n
    \n
    \n (\n \n image {index + 1}\n {showDelete && (\n {\n slides.splice(index, 1);\n updateState(\n [\"activeIndex\"],\n index !== 0 && index === slides.length\n ? index - 1\n : index\n );\n }}\n >\n ×\n \n )}\n \n ))}\n default={activeIndex}\n active={activeIndex}\n onClick={(value) => {\n updateState([\"activeIndex\"], value);\n }}\n />\n {\n e.preventDefault();\n const slidesCount = slides.length;\n updateState([\"images\"], slides.concat(emptySlide));\n updateState([\"activeIndex\"], slidesCount);\n }}\n >\n + {getMessage(\"imageCollection.addImage\")}\n \n
    \n
    \n
    \n {\n newState(\"imgText\", value);\n }}\n />\n {\n newState(\"link\", value);\n }}\n />\n {\n newState(\"linkText\", value);\n }}\n />\n {\n newState(\"bannerText\", value);\n }}\n />\n
    \n
    \n {\n newState(\"imageUrl\", value);\n }}\n />\n
    \n
    \n
    \n \n );\n};\nconst GridCollectionWrp = () => {\n return {\n preview: GridCollectionLayout,\n fields: ({ getState, updateState, parent }) => (\n \n ),\n };\n};\n\nexport default GridCollectionWrp;\n","import React from \"react\";\nimport ProductCollection from \"../../../../components/Layout/ProductCollection\";\nimport { Radio } from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\nconst InfluencerCollection = () => {\n return {\n preview: ProductCollection,\n fields: function () {\n return (\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n );\n },\n };\n};\n\nexport default InfluencerCollection;\n","import React, { Component } from \"react\";\nimport debounce from \"lodash.debounce\";\nimport FooterImg from \"../SplashScreen/image.png\"\n\nexport default class FooterLayout extends Component {\n constructor(props) {\n super(props);\n this.handleResize = debounce(this.handleResize.bind(this), 400);\n }\n\n handleResize() {\n this.setState(this.state);\n }\n\n componentDidMount() {\n window.addEventListener(\"resize\", this.handleResize);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.handleResize);\n }\n\n render() {\n return (\n
    \n
    \n \"\"\n
    \n
    \n );\n }\n}\n","import React from \"react\";\nimport { Input, Upload } from \"../../../../components/Form\";\nimport Tabs from \"../../../../components/Tabs\";\nimport FooterLayout from \"../../../../components/Layout/Footer\";\nimport { getMessage } from \"../../../../lib/translator\";\n// import \"./style.css\";\n\nconst Footer = props => {\n const { getState, updateState } = props;\n\n const emptyItem = { text: \"\", url: \"\", image: \"\" };\n const emptySection = { text: \"\", items: [emptyItem] };\n const sections = getState([\"sections\"]) || [emptySection];\n const activeSectionIndex = Number(getState([\"activeSectionIndex\"])) || 0;\n const activeItemIndex = Number(getState([\"activeItemIndex\"])) || 0;\n\n const activeSection = sections[activeSectionIndex] || emptySection;\n const activeItem = activeSection.items[activeItemIndex] || emptyItem;\n\n // Section Management\n const addSection = () => {\n const newSections = [...sections, { text: \"\", items: [emptyItem] }];\n updateState([\"sections\"], newSections);\n updateState([\"activeSectionIndex\"], newSections.length - 1);\n updateState([\"activeItemIndex\"], 0);\n };\n\n const deleteSection = index => {\n const updatedSections = sections.filter((_, i) => i !== index);\n updateState([\"sections\"], updatedSections);\n updateState([\"activeSectionIndex\"], Math.max(0, index - 1));\n updateState([\"activeItemIndex\"], 0);\n };\n\n const updateSectionText = text => {\n const updatedSections = [...sections];\n updatedSections[activeSectionIndex].text = text;\n updateState([\"sections\"], updatedSections);\n };\n\n // Item Management within a Section\n const addItem = () => {\n const updatedSections = [...sections];\n updatedSections[activeSectionIndex].items.push(emptyItem);\n updateState([\"sections\"], updatedSections);\n updateState(\n [\"activeItemIndex\"],\n updatedSections[activeSectionIndex].items.length - 1\n );\n };\n\n const deleteItem = index => {\n const updatedSections = [...sections];\n updatedSections[activeSectionIndex].items.splice(index, 1);\n updateState([\"sections\"], updatedSections);\n updateState([\"activeItemIndex\"], Math.max(0, index - 1));\n };\n\n const updateItem = (key, value) => {\n const updatedSections = [...sections];\n updatedSections[activeSectionIndex].items[activeItemIndex][key] = value;\n updateState([\"sections\"], updatedSections);\n };\n\n return (\n <>\n {/* Section Tabs */}\n
    \n (\n \n {`Section ${index + 1}`}\n {sections.length > 1 && (\n deleteSection(index)}\n >\n ×\n \n )}\n \n ))}\n default={activeSectionIndex}\n active={activeSectionIndex}\n onClick={value => {\n updateState([\"activeSectionIndex\"], value);\n updateState([\"activeItemIndex\"], 0); // Reset item index on section change\n }}\n />\n {\n e.preventDefault();\n addSection();\n }}\n >\n + {getMessage(\"footer.addSection\")}\n \n
    \n\n {/* Section Content */}\n
    \n
    \n updateSectionText(value)}\n required\n />\n
    \n
    \n\n {/* Item Tabs */}\n
    \n (\n \n {`Item ${index + 1}`}\n {activeSection.items.length > 1 && (\n deleteItem(index)}>\n ×\n \n )}\n \n ))}\n default={activeItemIndex}\n active={activeItemIndex}\n onClick={value => updateState([\"activeItemIndex\"], value)}\n />\n {\n e.preventDefault();\n addItem();\n }}\n >\n + {getMessage(\"footer.addItem\")}\n \n
    \n\n {/* Item Content */}\n
    \n
    \n updateItem(\"text\", value)}\n required\n />\n
    \n
    \n updateItem(\"url\", value)}\n required\n />\n
    \n
    \n updateItem(\"image\", value)}\n />\n
    \n
    \n \n );\n};\n\nconst FooterWrapper = () => {\n return {\n preview: FooterLayout,\n fields: ({ getState, updateState }) => (\n
    \n ),\n };\n};\n\nexport default FooterWrapper;\n","import React, { Component } from \"react\";\nimport debounce from \"lodash.debounce\";\nimport img from './ImageCollection.png'\n\nexport default class extends Component {\n constructor(props) {\n super(props);\n this.handleResize = debounce(this.handleResize.bind(this), 400);\n }\n\n handleResize() {\n this.setState(this.state);\n }\n\n componentDidMount() {\n window.addEventListener(\"resize\", this.handleResize);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.handleResize);\n }\n\n render() {\n return (\n
    \n
    \n \"\"\n
    \n
    \n );\n }\n}\n","// eslint-disable-next-line\nimport React from \"react\";\nimport { CheckboxGroup } from \"../../../../../components/Form\";\nimport { getMessage } from \"../../../../../lib/translator\";\n\nexport default function LayoutVisibility({\n stateKey = \"allowedPlatforms\",\n getState,\n updateState,\n className,\n ...props\n}) {\n return (\n <>\n
    \n
    \n {\n updateState([stateKey], value);\n }}\n className={\"\"}\n />\n
    \n
    {props.children}
    \n
    \n \n );\n}\n","import React, { useEffect } from \"react\";\nimport { Input, Upload } from \"../../../../components/Form\";\nimport Tabs from \"../../../../components/Tabs\";\nimport ImagecollectionLayout from \"../../../../components/Layout/ImageCollection\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { Radio } from \"../../../../components/Form\";\nimport LayoutVisibility from \"./HelperComponents/LayoutVisibility\";\n\nconst ImageCollection = (props) => {\n const { getState, updateState, parent } = props;\n\n const activeIndex = Number(getState([\"activeIndex\"])) || 0;\n const emptySlide = {\n imageUrl: \"\",\n text: \"\",\n link: \"\",\n };\n const slides = getState([\"images\"]) || [emptySlide];\n const currentSlide = slides[activeIndex] || emptySlide;\n\n if (!getState([\"images\"])) {\n updateState([\"images\"], slides); // TODO: Move this to componentWillMount of layout\n }\n\n // Since updateStateRecursively had some issues with this structure\n const newState = (key, value) => {\n parent.setState((prevState) => {\n const newState = Object.assign({}, prevState);\n newState.values.images[activeIndex][key] = value;\n return prevState;\n });\n };\n const showDelete = slides && slides.length > 1;\n\n useEffect(() => {\n if (!getState([\"layoutType\"])) {\n updateState([\"layoutType\"], \"GRID\");\n }\n if (!getState([\"loadMoreType\"])) {\n updateState([\"loadMoreType\"], \"INFINITE\");\n }\n // eslint-disable-next-line\n }, [slides]);\n return (\n <>\n
    \n
    \n {\n updateState([\"title\"], value);\n }}\n />\n {\n updateState([\"layoutType\"], value);\n }}\n />\n
    \n
    \n {\n updateState([\"subtitle\"], value);\n }}\n />\n {\n updateState([\"loadMoreType\"], value);\n }}\n />\n
    \n
    \n
    \n
    \n (\n \n image {index + 1}\n {showDelete && (\n {\n slides.splice(index, 1);\n updateState(\n [\"activeIndex\"],\n index !== 0 && index === slides.length\n ? index - 1\n : index\n );\n }}\n >\n ×\n \n )}\n \n ))}\n default={activeIndex}\n active={activeIndex}\n onClick={(value) => {\n updateState([\"activeIndex\"], value);\n }}\n />\n {\n e.preventDefault();\n const slidesCount = slides.length;\n updateState([\"images\"], slides.concat(emptySlide));\n updateState([\"activeIndex\"], slidesCount);\n }}\n >\n + {getMessage(\"imageCollection.addImage\")}\n \n
    \n
    \n
    \n {\n newState(\"link\", value);\n }}\n />\n {\n newState(\"text\", value);\n }}\n />\n
    \n \n
    \n
    \n
    \n {\n newState(\"imageUrl\", value);\n }}\n />\n
    \n
    \n
    \n \n );\n};\nconst ImageCollectionWrp = () => {\n return {\n preview: ImagecollectionLayout,\n fields: ({ getState, updateState, parent }) => (\n \n ),\n };\n};\n\nexport default ImageCollectionWrp;\n","import ImageSlideShow from \"./ImageSlideShow\";\nimport ImageWithTextLayout from \"./ImageWithText\";\nimport ProductCollectionLayout from \"./ProductCollection\";\nimport BannerWithTextLayout from \"./BannerWithText\";\nimport BannerWithMultipleButtons from \"./BannerWithMultipleButtons\";\nimport VideoCarouselLayout from \"./VideoCarousel\";\nimport CategoryCollection from \"./CategoryCollection\";\nimport BrandCollection from \"./BrandCollection\";\nimport SubCategoryCollection from \"./SubCategoryCollection\";\nimport DualImageBanner from \"./DualImageBanner\";\nimport \"./style.css\";\nimport AppointmentFormLayout from \"./AppointmentForm\";\nimport DualImageLayout from \"./DualImageGrid\";\nimport BlogCollection from \"./BlogCollection\";\nimport TestimonialLayout from \"./TestimonialLayout\";\nimport CarouselLayout from \"./CarouselLayout\";\nimport RichTextLayout from \"./RichTextLayout\";\nimport SplashScreen from \"./SplashScreen/SplashScreen\";\nimport SellerCollection from \"./SellerCollection\";\nimport GridCollection from \"./GridCollection\";\nimport InfluencerCollection from \"./InfluencerCollection\";\nimport Footer from \"./Footer\";\nimport ImageCollection from \"./ImageCollection\";\nimport Highlights from \"./Highlights\";\n\n/**\n *Object of all layouts and their respective jsx components\n */\nconst layouts = {\n ImageSlideShow: ImageSlideShow,\n ImageWithText: ImageWithTextLayout,\n ProductCollection: ProductCollectionLayout,\n BannerWithText: BannerWithTextLayout,\n BannerWithButton: BannerWithTextLayout,\n BannerWithMultipleButtons: BannerWithMultipleButtons,\n VideoCardCarousel: VideoCarouselLayout,\n CategoryCollection: CategoryCollection,\n BrandCollection: BrandCollection,\n SearchResults: ProductCollectionLayout,\n SubCategoryCollection: SubCategoryCollection,\n AppointmentForm: AppointmentFormLayout,\n DualImageBanner: DualImageBanner,\n DualImage: DualImageLayout,\n RichText: RichTextLayout,\n BlogCollection: BlogCollection,\n Testimonial: TestimonialLayout,\n Carousel: CarouselLayout,\n FooterLayout: Footer,\n Splash: SplashScreen,\n SellerCollection: SellerCollection,\n GridCollection: GridCollection,\n InfluencerCollection,\n ImageCollection,\n Highlights,\n};\n\n/**\n * @param {*} pageIndex\n * @param {*} layoutName\n * @param {*} pagesArray\n */\nexport const getLayout = (pageIndex, layoutName, pagesArray, selectOptions) => {\n const defaultOption =\n pagesArray[pageIndex] !== \"home\" && pagesArray[pageIndex] !== \"search\"\n ? \"CURRENT\"\n : \"ALL\";\n if (layoutName === \"ProductCollection\" || layoutName === \"SearchResults\") {\n return layouts[layoutName](selectOptions, defaultOption);\n } else {\n return layouts[layoutName]();\n }\n};\nexport default getLayout;\n","import React from \"react\";\nimport { EditHighlightsSection } from \"@zopsmart/zs-components\";\nconst FeatureLayoutWrp = () => {\n return {\n fields: (props) => {\n return (\n \n );\n },\n };\n};\nexport default FeatureLayoutWrp;\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Upload,\n Searchable,\n VALIDATION_TYPES,\n} from \"../../../../components/Form\";\nimport { cloneMutables } from \"../../../../lib/stateManagement/\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { getSession } from \"../../../../lib/auth\";\nimport {\n SortableContainer,\n SortableElement,\n arrayMove,\n SortableHandle,\n} from \"react-sortable-hoc\";\nimport { Dialog, Popup } from \"../../../../components/Popup\";\nimport API from \"../../../../lib/api\";\nimport Loader from \"../../../../components/Loader\";\nimport ProductCollection from \"../../../../components/Layout/ProductCollection\";\nimport DualImageGrid from \"../../../../components/Layout/DualImageGrid\";\nimport Layout from \"../../../settings/Themes/layout\";\nimport getLayout from \"../../../settings/Themes/Layouts/getLayout\";\nimport RichText from \"../../../../components/Layout/RichText\";\nimport ImageWithText from \"../../../../components/Layout/ImageWithText\";\n\nimport \"./style.css\";\nimport { Helmet } from \"react-helmet\";\nfunction getSlugFromText(text) {\n if (!text) {\n return \"\";\n }\n return text.toLowerCase().replace(/\\s+/g, \"-\");\n}\nconst blogUrlPattern = \"^(?!.*--)(?!.*[ ]$).*(?=.*[a-zA-Z0-9].*)(.)+$\";\n\nconst SortableItem = SortableElement((props) => {\n const { value, layoutIndex, onEditClick, onRemoveClick } = props;\n let LayoutComponent = \"\";\n Object.keys(availableComponents).forEach(function (component, index) {\n if (availableComponents[component][value.name]) {\n LayoutComponent = availableComponents[component][value.name];\n }\n });\n let element = \"\";\n const isShowLayout = typeof LayoutComponent !== \"string\";\n return (\n
    \n {isShowLayout && (\n <>\n

    \n \n {value.name.replace(/([A-Z])/g, \" $1\").trim()}\n \n

    \n {\n element = el;\n }}\n >\n \n
    \n {![\"MarketingBanners\"].includes(value.name) && (\n {\n onEditClick(layoutIndex, element.offsetTop);\n }}\n >\n Edit\n \n )}\n {\n e.preventDefault();\n onRemoveClick(layoutIndex);\n }}\n >\n Remove\n \n
    \n
    \n \n )}\n
    \n );\n});\n\nconst SortableList = SortableContainer((props) => {\n return (\n
    \n {Array.isArray(props.items) &&\n props.items.map((value, index) => (\n \n ))}\n
    \n );\n});\n\n// Support only for Fashion Trends theme as of now\nconst dualImageLayouts = [\"DualImageBanner\", \"DualImage\"];\n\n// Layout components mapping with their names\nconst availableComponents = {\n \"E-commerce\": {\n ProductCollection: ProductCollection,\n CategoryCollection: ProductCollection,\n BrandCollection: ProductCollection,\n SearchResults: ProductCollection,\n DualImage: DualImageGrid,\n },\n Images: {\n ImageWithText: ImageWithText,\n },\n Text: {\n RichText: RichText,\n },\n};\n\nconst DragHandle = SortableHandle((props) => (\n {props.children}\n));\n\nexport default class BlogForm extends BaseForm {\n constructor(props) {\n super(props);\n this.domain = getSession().organization.domain;\n this.state.showImageEdit = false;\n this.state.editingIndex = null;\n this.state.showLayoutPopup = false;\n this.state.showDialog = false;\n this.state.currentComponent = \"E-commerce\";\n this.pages = [\"blog\"];\n this.data = [];\n this.currentLayout = {};\n this.selectOptionsData = {\n categories: [],\n tags: [],\n brands: [],\n };\n }\n\n getSelectOptionsData(selectField, dataFor) {\n const api = new API({\n url: `/catalogue-service/${selectField}`,\n });\n\n api\n .get()\n .then((response) => {\n if (response.status === \"ERROR\") {\n console.error(`Error in fetching details of ${dataFor}`);\n return;\n }\n this.selectOptionsData[dataFor] = [];\n if (!response.data[selectField]) {\n response.data[selectField] = [];\n }\n this.selectOptionsData[dataFor] = response.data[selectField].map(\n function (field) {\n return { text: field.name, value: field.slug };\n }\n );\n this.selectOptionsData[dataFor].push(\n { text: `All ${dataFor}`, value: \"ALL\" },\n { text: `Current ${selectField}`, value: \"CURRENT\" }\n );\n const state = `${dataFor}DataLoaded`;\n this.setState({\n loaded: true,\n [state]: true,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n fetchScheduledLayout() {\n this.setState({\n loaded: false,\n });\n const page = this.pages[0];\n let url = `/website-service/layout`;\n let params = { id: \"blog\", url: this.state.values.url };\n\n if (this.state[page]) {\n params.url = this.state[page];\n }\n\n const api = new API({\n url: url,\n });\n api.get(params).then((response) => {\n if (response.status === \"ERROR\") {\n console.error(`Error in fetching details for ${page}`); // Todo: Handle this error\n return;\n }\n if (!response.data?.page?.length) {\n this.data = [];\n this.setState({ loaded: true });\n return;\n }\n if (page !== \"search\") {\n delete availableComponents[\"E-commerce\"][\"SearchResults\"];\n } else {\n availableComponents[\"E-commerce\"][\"SearchResults\"] = ProductCollection;\n }\n\n if (page !== \"category\") {\n delete availableComponents[\"E-commerce\"][\"SubCategoryCollection\"];\n } else {\n availableComponents[\"E-commerce\"][\"SubCategoryCollection\"] =\n ProductCollection;\n }\n this.pageId = response.data?.page?.[0].pageId;\n this.data = this.formatResponse(response.data.page[0].layouts);\n this.originalData = this.data;\n\n if (!this.state.categoryDataLoaded) {\n this.getSelectOptionsData(\"category\", \"categories\");\n }\n if (this.pages.includes(\"tag\")) {\n if (!this.state.tagDataLoaded) {\n this.getSelectOptionsData(\"tag\", \"tags\");\n }\n }\n if (this.pages.includes(\"brand\")) {\n if (!this.state.brandDataLoaded) {\n this.getSelectOptionsData(\"brand\", \"brands\");\n }\n }\n });\n }\n\n componentDidMount() {\n this.fetchScheduledLayout();\n }\n\n addLayout = (layoutName, data) => {\n const layout = {\n name: layoutName,\n data: data,\n };\n this.data.push(layout);\n this.setState({\n showLayoutPopup: false,\n });\n };\n\n showDelete = (index) => {\n this.setState({\n showDelete: true,\n deleteIndex: index,\n });\n };\n\n onSortEnd = ({ oldIndex, newIndex }) => {\n this.data = arrayMove(this.data, oldIndex, newIndex);\n this.forceUpdate();\n };\n\n onSubmit = (values) => {\n this.setState(\n (prevState) => Object.assign({}, prevState, { values }),\n this._submitHandler\n );\n };\n\n getRespectiveComponents = (component) => {\n this.setState({\n currentComponent: component,\n });\n };\n\n onEditClick = (layoutIndex, top) => {\n const layout = this.data[layoutIndex];\n Object.assign(this.currentLayout, layout);\n this.currentLayout.top = top;\n this.setState({\n editing: true,\n layoutIndex,\n });\n };\n\n onRemoveClick = (index) => {\n this.saveLayouts(index);\n this.setState({\n showPrompt: false,\n deleteIndex: \"\",\n });\n };\n\n showPrompt = (index) => {\n this.setState({\n showPrompt: true,\n deleteIndex: index,\n });\n };\n\n onAddClick = () => {\n this.setState({\n showLayoutPopup: true,\n });\n };\n\n listView = () => {\n const View = () => {\n if (this.state.loaded) {\n return (\n <>\n \n
    \n —————————\n \n ————————\n
    \n \n );\n }\n return ;\n };\n return (\n
    \n \n {this.state.loaded && (\n
    \n \n {getMessage(\"order.form.cancel.text\")}\n \n \n save\n \n
    \n )}\n
    \n );\n };\n\n formatResponse(response) {\n let newResponse = Object.assign([], response);\n const page = this.pages[this.state.page];\n newResponse.forEach((layout) => {\n if (\n layout.name === \"CategoryCollection\" ||\n layout.name === \"BrandCollection\"\n ) {\n let key = layout.name === \"CategoryCollection\" ? \"category\" : \"brand\";\n let collection = (layout.value && layout.value.collection) || [];\n collection = collection.map((val) => val[key]);\n layout[\"data\"][key] = collection;\n layout.value && delete layout.value.collection;\n }\n if (\n layout.name === \"CategoryCollection\" &&\n layout.data &&\n layout.data.subcategories &&\n page === \"category\"\n ) {\n layout.name = \"SubCategoryCollection\";\n }\n });\n return newResponse;\n }\n\n saveLayouts = (index, formData = null) => {\n this.setState({\n submitting: true,\n });\n // if (formData && formData.name === AppointmentFormLayout) {\n // this.appointmentForm(formData);\n // return;\n // }\n\n let data = this.data;\n if (!formData) {\n data =\n index !== undefined\n ? this.data.filter((_, idx) => idx !== index)\n : this.data;\n } else {\n data = data.filter((_, i) => i !== index);\n let layoutname = formData.name;\n delete formData.name;\n data.splice(index, 0, { name: layoutname, data: { ...formData } });\n }\n if (!index && index !== 0) {\n data = this.data;\n }\n const page = this.pages[0];\n let url = `/website-service/layout/${page}`;\n data &&\n data.forEach((layout, i) => {\n const layoutName = layout.name;\n if (layoutName === \"SubCategoryCollection\") {\n layout.name = \"CategoryCollection\";\n layout.data.subcategories = true;\n }\n\n if (layoutName === \"CategoryCollection\") {\n if (formData && i === index) {\n layout.data.categoryIds =\n layout.data.category &&\n layout.data.category\n .map((category) => category.id)\n .filter(Boolean);\n delete layout.data.category;\n }\n }\n if (layoutName === \"BlogCollection\") {\n if (formData && i === index) {\n layout.data.blogIds =\n layout.data.blog &&\n layout.data.blog.map((blog) => blog.id).filter(Boolean);\n delete layout.data.blog;\n }\n }\n if (layoutName === \"BrandCollection\") {\n if (formData && i === index) {\n layout.data.brandIds =\n layout.data.brand &&\n layout.data.brand.map((brand) => brand.id).filter(Boolean);\n }\n delete layout.data.brand;\n }\n if (layoutName === \"ProductCollection\") {\n layout.data && delete layout.data.collection;\n if (layout.data.hasImage === -1) {\n layout.data.hasImage = \"\";\n }\n if (layout.data.hasStock === -1) {\n layout.data.hasStock = \"\";\n }\n if (layout.data.hasOffers === -1) {\n layout.data.hasOffers = \"\";\n }\n if (\n layout.data.category &&\n typeof layout.data.category === \"object\"\n ) {\n layout.data.category = layout.data.category.slug;\n }\n if (layout.data.brand && typeof layout.data.brand === \"object\") {\n layout.data.brand = layout.data.brand.slug;\n }\n if (layout.data.tag && typeof layout.data.tag === \"object\") {\n layout.data.tag = layout.data.tag.slug;\n }\n }\n if (layout.name === \"ImageSlideShow\") {\n layout.data &&\n layout.data.activeIndex &&\n delete layout.data.activeIndex;\n }\n\n // if (layout.name === AppointmentFormLayout) {\n // layout.data = {};\n // }\n\n delete layout.value;\n layout.data && delete layout.data.collection;\n });\n\n const api = new API({\n url: url,\n });\n let params = {\n layouts: data,\n url: this.state.values?.url,\n };\n\n // if (page === 'tag' && !this.state.hideFilter) {\n // params.hideFilter = true\n // }\n\n if (page === \"tag\") {\n params.showFilter = this.state.showFilter;\n }\n if (\n page !== \"home\" &&\n this.state[page] !== \"\" &&\n this.state[page] !== \"ALL\" &&\n this.state[page]\n ) {\n params.url = `${this.state[page]}`;\n }\n\n api.put(params).then(\n (response) => {\n this.data = this.formatResponse(response.data.page.layouts);\n this.originalData = this.data;\n this.pageId = response.data.page.pageId;\n this.setState({\n editing: false,\n submitting: false,\n showDialog: true,\n error: false,\n errors: {},\n });\n },\n (error) => {\n this.setState({\n showDialog: true,\n error: error.message,\n submitting: false,\n });\n }\n );\n };\n\n reorderLayout = () => {\n this.saveLayouts();\n };\n\n cancelReordering = () => {\n this.data = this.originalData;\n this.forceUpdate();\n };\n render() {\n const { CancelButton } = this.buttons;\n const { Form } = this.components;\n\n const View = () => {\n if (this.state.editing) {\n const layout = this.data[this.state.layoutIndex];\n const layoutInfo =\n getLayout(\n this.state.page,\n layout.name,\n this.pages,\n this.selectOptionsData\n ) || {};\n const top = this.currentLayout.top;\n return (\n {\n this.saveLayouts(this.state.layoutIndex, form);\n }}\n onCancel={() => {\n this.setState({\n editing: false,\n });\n }}\n onRemove={() => {\n console.info(\"Remove this layout\");\n }}\n sortable\n />\n );\n }\n return ;\n };\n\n return (\n
    \n \n
    \n {\n if (!this.getState([\"url\"])) {\n this.updateState(\n [\"url\"],\n getSlugFromText(this.getState([\"title\"]))\n );\n }\n }}\n />\n \n \n \n \n response.data.tag || []}\n createButton={getMessage(\"product.form.tag.addButton\")}\n multiple\n {...this.generateStateMappers({\n stateKeys: [\"tags\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n \n\n
    \n
    \n {this.state.showLayoutPopup && (\n <>\n \n this.setState({\n showLayoutPopup: false,\n })\n }\n >\n {\n
    \n
      \n {Object.keys(availableComponents).map(\n (component, index) => {\n return (\n {\n this.getRespectiveComponents(component);\n }}\n >\n {component.replace(/([A-Z])/g, \" $1\").trim()}\n \n );\n }\n )}\n
    \n \n {Object.keys(\n availableComponents[this.state.currentComponent]\n )\n .filter(\n (layout) =>\n !(\n this.props.theme?.name !== \"Trends\" &&\n dualImageLayouts.includes(layout)\n )\n )\n .map((layout, index) => {\n const Component =\n availableComponents[\n this.state.currentComponent\n ][layout];\n let data = {};\n if (layout === \"BannerWithButton\") {\n data.button = true;\n }\n let categoryAndbrandCollection =\n layout === \"SubCategoryCollection\";\n return (\n
    \n

    \n {layout.replace(/([A-Z])/g, \" $1\").trim()}\n {categoryAndbrandCollection && (\n Beta\n )}\n

    \n
    \n \n
    \n {\n this.addLayout(layout, data);\n }}\n >\n {getMessage(\"themes.selection.add\")}\n \n
    \n
    \n
    \n );\n })}\n
    \n
    \n }\n \n \n )}\n {\n this.setState({\n showDialog: false,\n });\n }}\n />\n \n this.setState({\n showPrompt: false,\n deleteIndex: \"\",\n })\n }\n onOk={() => this.onRemoveClick(this.state.deleteIndex)}\n />\n
    \n
    \n
    \n {\n e.preventDefault();\n let updates = {\n isDraft: false,\n };\n if (!this.state.values.publishTime) {\n let now = new Date();\n updates.publishTime = `${now.getFullYear()}-${String(\n now.getMonth() + 1\n ).padStart(2, \"0\")}-${String(now.getDate()).padStart(\n 2,\n \"0\"\n )} ${now.toTimeString().split(\" \")[0]}`;\n }\n this.onSubmit(\n Object.assign({}, cloneMutables(this.state.values), updates)\n );\n }}\n >\n {getMessage(\"marketing.blog.form.submitText\")}\n \n {/* */}\n {getMessage(\"cancel.text\")}\n
    \n \n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport ListingPageWithRoutes from \"../../../containers/ListingPage/listingRouter\";\nimport { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport BlogForm from \"./Form\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport { Dialog } from \"../../../components/Popup\";\nimport API from \"../../../lib/api\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { getPrintableTime } from \"../../../lib/datetime\";\nimport moment from \"moment\";\nimport { getSiteURL } from \"../../../lib/commonlyused\";\n\nimport \"./style.css\";\nimport emptyIcon from \"./blogs-empty.svg\";\n\nclass BlogActions extends Component {\n constructor(props) {\n super(props);\n this.state = {\n statusAction: null,\n };\n this.showStatusActionDialog = this.showStatusActionDialog.bind(this);\n this.hideStatusActionDialog = this.hideStatusActionDialog.bind(this);\n }\n showStatusActionDialog(statusAction) {\n this.setState({ statusAction });\n }\n hideStatusActionDialog() {\n this.setState({ statusAction: null });\n }\n componentWillReceiveProps() {\n this.setState({ statusAction: false });\n }\n setPublishStatus(isDraft) {\n let id = this.props.id;\n let api = new API({ url: `/blog-service/blog/${id}` });\n let publishTime = isDraft\n ? null\n : moment().utc().format(\"YYYY-MM-DD HH:mm:ss\");\n return api\n .put({ isDraft, publishTime })\n .then((response) => {\n this.props.onAction(\n TABLE_ACTIONS.REFRESH,\n { id },\n { isDraft, publishTime }\n );\n }, console.error)\n .catch((error) => {\n console.error(error);\n });\n }\n render() {\n let { id, isDraft, url } = this.props;\n const siteUrl = getSiteURL();\n let blogLink = `${siteUrl}/blog/${url}`;\n return (\n
    \n {\n this.props.isDraft\n ? this.setPublishStatus(false)\n : this.setPublishStatus(true);\n }}\n close={this.hideStatusActionDialog}\n closeText={getMessage(\"cancel.text\")}\n okText={\n isDraft\n ? getMessage(\"marketing.blog.form.submitText\")\n : getMessage(\"marketing.blog.table.action.unpublish\")\n }\n />\n }>\n \n \n {getMessage(\"marketing.action.edit.text\")}\n \n \n \n {\n this.showStatusActionDialog(id);\n }}\n >\n {isDraft\n ? getMessage(\"marketing.blog.form.submitText\")\n : getMessage(\"marketing.blog.table.action.unpublish\")}\n
    \n \n {\n this.props.onAction(TABLE_ACTIONS.DELETE, { id });\n }}\n >\n {getMessage(\"delete.text\")}\n \n \n \n {getMessage(\"View in website\")}\n \n \n \n \n );\n }\n}\n\nfunction AddBlog() {\n return (\n
    \n \n +{\" \"}\n {getMessage(\"marketing.blog.add.text\")}\n \n
    \n );\n}\n\nconst emptyState = {\n icon: emptyIcon,\n message: getMessage(\"marketing.blog.helpItems.message\"),\n additionalViews: [AddBlog],\n};\n\nconst tableProperties = {\n headers: [\n getMessage(\"marketing.title.heading.text\"),\n getMessage(\"marketing.table.heading.publishTime\"),\n getMessage(\"marketing.table.heading.author\"),\n // getMessage('marketing.table.heading.interaction'),\n getMessage(\"marketing.actions.text\"),\n ],\n row: ({ id, title, publishTime, author, isDraft, onAction, url }) => (\n \n \n \n {title}\n \n \n \n {isDraft ? (\n \n {getMessage(\"marketing.blog.table.status.draft\")}\n \n ) : (\n
    \n
    \n \n {publishTime\n ? getPrintableTime(publishTime).split(\",\")[0]\n : null}\n \n
    \n
    \n \n {publishTime\n ? getPrintableTime(publishTime).split(\",\")[1]\n : null}\n \n
    \n
    \n )}\n
    \n {author ? author.name : null}\n \n \n \n
    \n ),\n};\n\nexport default function Blog(props) {\n return (\n response.data.blog,\n }}\n form={{\n component: BlogForm,\n transformSubmit: (formData) => {\n let {\n title,\n url,\n description,\n imageUrl,\n alternateTextForImage,\n tags,\n } = formData;\n\n let tagId = tags?.map((tag) => {\n return String(tag.id);\n });\n\n return {\n title,\n url,\n description,\n imageUrl,\n alternateTextForImage,\n tagIds: tagId,\n content: [],\n };\n },\n transformResponse: (response) => {\n return response?.data?.blog || {};\n },\n }}\n tableProperties={tableProperties}\n />\n );\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Upload,\n VALIDATION_TYPES,\n ProductSearch,\n} from \"../../../../components/Form\";\nimport RichEditor, { importText } from \"../../../../components/RichEditor\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport \"./style.css\";\nimport { Helmet } from \"react-helmet\";\nimport { get } from \"../../../../lib/storage\";\n\nexport default class RecipeForm extends BaseForm {\n constructor(props) {\n super(props);\n this.data = [];\n this.direction = get(\"dataLang\") === \"ar\" ? \"rtl\" : \"ltr\";\n }\n\n renderRichEditor = (sectionKey, headingKey, placeholderKey) => (\n <>\n
    \n {getMessage(headingKey)}\n
    \n this.updateState([sectionKey], value)}\n />\n \n );\n\n render() {\n const { CancelButton, SubmitButton } = this.buttons;\n const { Form } = this.components;\n\n return (\n
    \n \n
    \n \n\n \n \n \n\n response.data.product}\n multiple\n {...this.generateStateMappers({\n stateKeys: [\"products\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n getVariantData = {false}\n />\n \n {this.renderRichEditor(\n \"ingredients\",\n \"marketing.recipe.form.ingredients.heading\",\n \"marketing.recipe.form.ingredients.placeholder\"\n )}\n {this.renderRichEditor(\n \"directions\",\n \"marketing.recipe.form.directions.heading\",\n \"marketing.recipe.form.directions.placeholder\"\n )}\n {this.renderRichEditor(\n \"metadata\",\n \"marketing.recipe.form.metadata.heading\",\n \"marketing.recipe.form.metadata.placeholder\"\n )}\n\n
    \n {getMessage(\"save.text\")}\n {getMessage(\"cancel.text\")}\n
    \n \n
    \n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport ListingPageWithRoutes from \"../../../containers/ListingPage/listingRouter\";\nimport { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport RecipeForm from \"./Form\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport { Dialog } from \"../../../components/Popup\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { exportText, importText } from \"../../../components/RichEditor\";\nimport API from \"../../../lib/api\";\nimport { get } from \"../../../lib/storage\";\n\nimport \"./style.css\";\nimport emptyIcon from \"./recipe-empty.svg\";\n\nclass RecipeActions extends Component {\n constructor(props) {\n super(props);\n this.state = {\n statusAction: null,\n };\n this.showStatusActionDialog = this.showStatusActionDialog.bind(this);\n this.hideStatusActionDialog = this.hideStatusActionDialog.bind(this);\n }\n showStatusActionDialog(statusAction) {\n this.setState({ statusAction });\n }\n hideStatusActionDialog() {\n this.setState({ statusAction: false });\n }\n setPublishStatus(isDraft) {\n let id = this.props.id;\n let api = new API({ url: `/recipe-service/recipe/${id}` });\n return api\n .put({ isDraft })\n .then((response) => {\n this.props.onAction(TABLE_ACTIONS.EDIT, { id }, { isDraft });\n this.hideStatusActionDialog();\n }, console.error)\n .catch((error) => {\n console.error(error);\n });\n }\n render() {\n let { id, isDraft } = this.props;\n return (\n
    \n {\n this.props.isDraft\n ? this.setPublishStatus(false)\n : this.setPublishStatus(true);\n }}\n close={this.hideStatusActionDialog}\n closeText={getMessage(\"cancel.text\")}\n okText={\n isDraft\n ? getMessage(\"marketing.recipe.table.action.publish\")\n : getMessage(\"marketing.recipe.table.action.unpublish\")\n }\n />\n }>\n \n \n {getMessage(\"marketing.action.edit.text\")}\n \n \n \n {\n this.showStatusActionDialog(id);\n }}\n >\n {isDraft\n ? getMessage(\"marketing.recipe.table.action.publish\")\n : getMessage(\"marketing.recipe.table.action.unpublish\")}\n
    \n \n {\n this.props.onAction(TABLE_ACTIONS.DELETE, { id });\n }}\n >\n {getMessage(\"delete.text\")}\n \n \n \n );\n }\n}\n\nfunction AddRecipe() {\n return (\n
    \n \n + \n {getMessage(\"marketing.recipe.add.text\")}\n \n
    \n );\n}\n\nconst emptyState = {\n icon: emptyIcon,\n message: getMessage(\"marketing.recipe.helpItems.message\"),\n additionalViews: [AddRecipe],\n};\n\nconst tableProperties = {\n headers: [\n getMessage(\"marketing.title.heading.text\"),\n getMessage(\"marketing.table.heading.recipe.description\"),\n getMessage(\"marketing.table.heading.status\"),\n getMessage(\"marketing.actions.text\"),\n ],\n row: ({ id, name, createdAt, author, isDraft, onAction, description, hasInfluencer }) => (\n \n \n \n {name}\n \n \n \n {description ? description : null}\n { description && hasInfluencer && - }\n {hasInfluencer && (\n \n {getMessage(\"influencer.recipe.check\")}\n \n )}\n \n \n {isDraft ? (\n \n {getMessage(\"marketing.recipe.table.status.draft\")}\n \n ) : (\n \n {getMessage(\"marketing.recipe.table.status.published\")}\n \n )}\n \n\n \n \n \n \n ),\n};\n\nexport default function Recipe(props) {\n return (\n response.data.recipes,\n }}\n showLanguageDropDown\n form={{\n component: RecipeForm,\n transformSubmit: (formData) => {\n let {\n name,\n description,\n image,\n thumbnail,\n ingredients,\n directions,\n metadata,\n products,\n } = formData;\n\n let productIds = products\n ?.map((product) => String(product.id))\n .join(\",\");\n\n return {\n name,\n description,\n image,\n thumbnail,\n ingredients: exportText(importText(ingredients)), // using importText is a temporary fix for RichEditor state issue\n directions: exportText(importText(directions)),\n metadata: exportText(importText(metadata)),\n productIds,\n };\n },\n transformResponse: (response) => {\n return response?.data?.recipe || {};\n },\n }}\n tableProperties={tableProperties}\n />\n );\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Upload,\n Searchable,\n VALIDATION_TYPES,\n Textarea,\n Radio,\n Select,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport \"./style.css\";\nimport { Helmet } from \"react-helmet\";\nimport { get } from \"../../../../lib/storage\";\nimport {\n SortableContainer,\n SortableElement,\n SortableHandle,\n arrayMove,\n} from \"react-sortable-hoc\";\n\nconst SOCIAL_MEDIA = [\n { text: \"Snapchat\", value: \"snapchat\" },\n { text: \"Tiktok\", value: \"tiktok\" },\n { text: \"Instagram\", value: \"instagram\" },\n { text: \"Youtube\", value: \"youtube\" },\n { text: \"Facebook\", value: \"facebook\" },\n { text: \"Twitter\", value: \"twitter\" },\n { text: \"Pinterest\", value: \"pinterest\" },\n { text: \"Whatsapp\", value: \"whatsapp\" },\n];\n\nconst DragHandle = SortableHandle(() => (\n â ¿\n));\n\nconst SortableItem = SortableElement(({ deleteKey, renderInputAndSelect }) => {\n return (\n
    \n \n deleteKey()}\n >\n {getMessage(\"delete\")}\n \n {renderInputAndSelect()}\n
    \n );\n});\n\nconst SortableList = SortableContainer(\n ({ items, deleteKey, renderInputAndSelect, selectedTypes }) => {\n return (\n
    \n {items?.map((platform, index) => {\n return (\n deleteKey(index)}\n renderInputAndSelect={() =>\n renderInputAndSelect(index, selectedTypes)\n }\n />\n );\n })}\n
    \n );\n }\n);\n\nexport default class InfluencerForm extends BaseForm {\n constructor(props) {\n super(props);\n this.direction = get(\"dataLang\") === \"ar\" ? \"rtl\" : \"ltr\";\n }\n\n addKey = () => {\n this.setState((prevState) => ({\n values: {\n ...prevState?.values,\n metaData: [\n ...(prevState?.values?.metaData || []),\n { socialMediaType: \"\", socialMediaId: \"\" },\n ],\n },\n }));\n };\n\n deleteKey = (index) => {\n this.setState((prevState) => {\n const updatedValuesMetaData = [...(prevState?.values?.metaData || [])];\n const deletedType = updatedValuesMetaData[index]?.socialMediaType;\n updatedValuesMetaData.splice(index, 1);\n const updatedDefault =\n prevState.values?.default === deletedType\n ? null\n : prevState.values?.default;\n\n return {\n values: {\n ...prevState?.values,\n metaData: updatedValuesMetaData,\n default: updatedDefault,\n },\n };\n });\n };\n\n onSortEnd = ({ oldIndex, newIndex }) => {\n this.setState((prevState) => {\n const updatedMetaData = arrayMove(\n prevState?.values?.metaData || [],\n oldIndex,\n newIndex\n );\n return {\n values: {\n ...prevState?.values,\n metaData: updatedMetaData,\n },\n };\n });\n };\n\n renderInputAndSelect = (index, selectedTypes) => {\n const selectedTypeOptions =\n this.state.values?.metaData?.[index]?.socialMediaType;\n\n const availableOptions = SOCIAL_MEDIA?.filter(\n ({ value }) =>\n !selectedTypes?.includes(value) || value === selectedTypeOptions\n );\n\n return (\n <>\n \n \n \n );\n };\n\n render() {\n const { CancelButton, SubmitButton } = this.buttons;\n const { Form } = this.components;\n\n const selectedTypes = (this.state.values?.metaData || [])?.map(\n (item) => item.socialMediaType\n );\n const availableRadioOptions = SOCIAL_MEDIA?.filter(({ value }) =>\n selectedTypes?.includes(value)\n );\n const remainingSocialMediaOptions = SOCIAL_MEDIA?.filter(\n ({ value }) => !selectedTypes?.includes(value)\n );\n\n return (\n
    \n \n
    \n \n
    \n \n {remainingSocialMediaOptions.length > 0 && (\n
    \n \n
    \n )}\n
    \n {availableRadioOptions?.length > 0 && (\n \n )}\n \n \n response?.data?.recipes}\n transformRequest={(searchText, paramsDefault) => {\n paramsDefault[\"name\"] = `%${paramsDefault?.name}%`;\n return paramsDefault;\n }}\n multiple\n {...this.generateStateMappers({\n stateKeys: [\"recipes\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n
    \n {getMessage(\"save.text\")}\n {getMessage(\"cancel.text\")}\n
    \n \n
    \n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport ListingPageWithRoutes from \"../../../containers/ListingPage/listingRouter\";\nimport { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport InfluencerForm from \"./Form\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport { Dialog } from \"../../../components/Popup\";\nimport { getMessage } from \"../../../lib/translator\";\nimport API from \"../../../lib/api\";\nimport { get } from \"../../../lib/storage\";\n\nimport \"./style.css\";\nimport emptyIcon from \"./influencer-empty.svg\";\n\nclass InfluencerActions extends Component {\n constructor(props) {\n super(props);\n this.state = {\n statusAction: null,\n };\n this.showStatusActionDialog = this.showStatusActionDialog.bind(this);\n this.hideStatusActionDialog = this.hideStatusActionDialog.bind(this);\n }\n showStatusActionDialog(statusAction) {\n this.setState({ statusAction });\n }\n hideStatusActionDialog() {\n this.setState({ statusAction: false });\n }\n setPublishStatus(status) {\n let id = this.props.id;\n let api = new API({ url: `/recipe-service/influencer/${id}` });\n return api\n .put({ status })\n .then((response) => {\n this.props.onAction(TABLE_ACTIONS.EDIT, { id }, { status });\n this.hideStatusActionDialog();\n }, console.error)\n .catch((error) => {\n console.error(error);\n });\n }\n render() {\n let { id, status } = this.props;\n const isEnabled = status === \"ENABLED\";\n return (\n
    \n {\n isEnabled\n ? this.setPublishStatus(\"HIDDEN\")\n : this.setPublishStatus(\"ENABLED\");\n }}\n close={this.hideStatusActionDialog}\n closeText={getMessage(\"cancel.text\")}\n okText={\n isEnabled\n ? getMessage(\"marketing.influencer.table.action.hide\")\n : getMessage(\"marketing.influencer.table.action.enable\")\n }\n />\n }>\n \n \n {getMessage(\"marketing.action.edit.text\")}\n \n \n \n {\n this.showStatusActionDialog(id);\n }}\n >\n {isEnabled\n ? getMessage(\"marketing.influencer.table.action.hide\")\n : getMessage(\"marketing.influencer.table.action.enable\")}\n
    \n \n {\n this.props.onAction(TABLE_ACTIONS.DELETE, { id });\n }}\n >\n {getMessage(\"delete.text\")}\n \n \n \n );\n }\n}\n\nfunction AddInfluencer() {\n return (\n
    \n \n + \n \n {getMessage(\"marketing.influencer.add.text\")}\n \n \n
    \n );\n}\n\nconst emptyState = {\n icon: emptyIcon,\n message: getMessage(\"marketing.influencer.helpItems.message\"),\n additionalViews: [AddInfluencer],\n};\n\nconst tableProperties = {\n headers: [\n getMessage(\"marketing.influencer.name\"),\n getMessage(\"marketing.influencer.description\"),\n getMessage(\"marketing.influencer.status\"),\n getMessage(\"marketing.influencer.action.text\"),\n ],\n row: ({ id, name, isDraft, onAction, description, status }) => (\n \n \n \n {name}\n \n \n \n {description ? description : null}\n \n \n {status}\n \n \n \n \n \n ),\n};\n\nexport default function Influencer(props) {\n return (\n response.data?.influencer || [],\n }}\n showLanguageDropDown\n form={{\n component: InfluencerForm,\n transformSubmit: (formData) => {\n if (Array.isArray(formData?.metaData)) {\n // Filtering out entries with missing socialMediaId\n let validMetaData = formData?.metaData.filter(\n ({ socialMediaType, socialMediaId }) =>\n socialMediaType && socialMediaId\n );\n\n // Converting metadata into key-value format\n let transformedMetaData = validMetaData.reduce(\n (acc, { socialMediaType, socialMediaId }) => {\n acc[socialMediaType] = socialMediaId;\n return acc;\n },\n {}\n );\n // Extracting valid social media types\n let validTypes = new Set(Object.keys(transformedMetaData));\n\n // Reseting default if it no longer exists in valid metadata\n if (!validTypes.has(formData.default)) {\n formData.default = null;\n }\n\n // Converting transformedMetaData back into an array of objects\n let finalMetaData = Object.entries(transformedMetaData).map(\n ([key, value]) => ({ [key]: value })\n );\n\n // Ensuring default is at the top\n if (formData.default) {\n finalMetaData.unshift({ default: formData.default });\n }\n\n // Assigning corrected metadata back\n formData.metaData = finalMetaData;\n }\n formData.recipeIds = formData.recipes?.map((recipe) => recipe.id);\n delete formData.recipes;\n return formData;\n },\n transformResponse: (response) => {\n const transformedResponse = response?.data?.influencer || {};\n\n if (Array.isArray(transformedResponse?.metaData)) {\n let defaultValue = null;\n\n // Converting back to original format\n const restoredMetaData = transformedResponse?.metaData\n .map((item) => {\n const [key, value] = Object.entries(item)[0];\n\n if (key === \"default\") {\n defaultValue = value; // Storing default separately\n return null; // Remove it from metadata array\n }\n\n return { socialMediaType: key, socialMediaId: value };\n })\n .filter(Boolean); // Remove null entries (which were the default value)\n\n // Assigning default separately\n if (defaultValue) {\n transformedResponse.default = defaultValue;\n }\n\n transformedResponse.metaData = restoredMetaData;\n }\n return transformedResponse;\n },\n }}\n tableProperties={tableProperties}\n />\n );\n}\n","import React, { Component } from \"react\";\nimport moment from \"moment\";\nimport {\n SingleDatePicker,\n Input,\n MultiSelect,\n Searchable,\n Select,\n} from \"../Form\";\nimport API from \"../../lib/api\";\nimport { getMessage } from \"../../lib/translator\";\nimport { camelToReading, storeSelection } from \"../../lib/commonlyused\";\nimport DeleteIcon from \"../../pages/catalogue/Categories/delete.svg\";\n\nimport \"./style.css\";\n\nconst Components = {\n datetime: {\n component: SingleDatePicker,\n },\n int: {\n component: Input,\n type: \"number\",\n },\n float: {\n component: Input,\n type: \"number\",\n step: \"0.01\",\n },\n string: {\n component: Input,\n type: \"text\",\n },\n CSV: {\n component: MultiSelect,\n },\n CustomersMappedToTag: {\n component: Searchable,\n config: {\n label: getMessage(\"product.filters.tag.heading\"),\n placeholder: getMessage(\"product.filters.tag.placeholder\"),\n searchUrl: \"/customer-service/tag\",\n valueKey: \"id\",\n nameKey: \"name\",\n searchKey: \"name\",\n multiple: true,\n transformResponse: (response) => response.data.tag,\n },\n },\n};\n\nexport function formatDataBeforeSubmit(data, isDel) {\n const values = JSON.parse(JSON.stringify(data));\n let userSet = values.userSet;\n if (userSet) {\n userSet.type = \"SEGMENTS\";\n }\n if (userSet && userSet.data) {\n userSet.data.forEach((segment) => {\n if (segment.id === \"CustomersMappedToTag\") {\n segment.tagId = Array.isArray(segment.tags)\n ? segment.tags.map((tag) => tag.id).join(\",\")\n : segment.tagId;\n !isDel && delete segment.tags;\n }\n });\n values.userSet = userSet;\n }\n return values;\n}\n\nclass SegmentsForm extends Component {\n constructor(props) {\n super(props);\n this.selectSegment = this.selectSegment.bind(this);\n this.getTagDetails = this.getTagDetails.bind(this);\n this.deleteSegment = this.deleteSegment.bind(this);\n }\n\n componentWillUnmount() {\n this.tagAPi && this.tagAPi.cancel();\n this.segmentsApi && this.segmentsApi.cancel();\n }\n\n componentDidMount() {\n let parent = this.props._this;\n this.setState({\n segmentsLoaded: false,\n });\n const values = parent.state.values;\n if (values && values.userSet && values.userSet.data) {\n this.getTagDetails();\n } else {\n this.setState({\n tagsLoaded: true,\n });\n }\n // TODO: Use search by name after API starts supporting it instead of getting first 20 segments\n this.segmentsApi = new API({ url: \"/promo-service/segment\" });\n this.segmentsApi\n .get()\n .then((response) => {\n const segments = response.data.segment || [];\n this.segments = {};\n this.segmentOptions = segments.map((segment) => {\n this.segments[segment.name] = segment.variables;\n return {\n text: getMessage(camelToReading(segment.name)),\n value: segment.name,\n };\n });\n this.setState({\n segmentsLoaded: true,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n getTagDetails() {\n let parent = this.props._this;\n let values = JSON.parse(JSON.stringify(parent.state.values));\n values = formatDataBeforeSubmit(values, true);\n\n let params = \"\";\n let tags =\n values &&\n values.userSet &&\n values.userSet.data &&\n values.userSet.data.filter(\n (segment) => segment.id === \"CustomersMappedToTag\"\n );\n tags &&\n tags.forEach((tag) => {\n tag.tagId &&\n tag.tagId.split(\",\").forEach((tagId) => {\n params += `id=${Number(tagId)}&`;\n });\n });\n this.tagAPi = new API({ url: `/customer-service/tag?${params}` });\n if (params) {\n this.tagAPi\n .get()\n .then((response) => {\n let tags = response.data.tag || [];\n if (tags.length > 0) {\n values &&\n values.userSet &&\n values.userSet.data &&\n values.userSet.data.forEach((segment) => {\n if (segment.id === \"CustomersMappedToTag\") {\n let tagDetails = [];\n let tagIds = segment.tagId && segment.tagId.split(\",\");\n tagDetails =\n tagIds &&\n tagIds\n .map((id) => {\n let tagD = tags.filter(\n (tag) => tag.id === Number(id)\n )[0];\n return tagD;\n })\n .filter(Boolean);\n segment.tags = tagDetails;\n delete segment.tagId;\n }\n });\n parent.setState({\n values,\n });\n this.setState({\n tagsLoaded: true,\n });\n }\n })\n .catch((error) => {\n console.error(error);\n });\n } else {\n this.setState({\n tagsLoaded: true,\n });\n }\n }\n\n selectSegment(segment) {\n let parent = this.props._this;\n let values = Object.assign({}, parent.state.values);\n let newSegment = {};\n newSegment.id = segment;\n if (values && values.userSet && values.userSet.data) {\n values.userSet.data.splice(0, 0, newSegment);\n } else {\n if (values && !values.userSet) {\n values.userSet = {};\n }\n values.userSet.data = [newSegment];\n }\n parent.setState({\n values,\n });\n }\n\n deleteSegment(index) {\n const parent = this.props._this;\n const values = Object.assign({}, parent.state.values);\n let validations = Object.assign({}, parent.state.validations);\n validations &&\n validations.userSet &&\n validations.userSet.data &&\n validations.userSet.data.splice(index, 1);\n values && values.userSet && values.userSet.data.splice(index, 1);\n parent.setState({\n values,\n validations,\n });\n }\n\n render() {\n const _this = this.props._this;\n const { state } = this;\n const { tagsLoaded, segmentsLoaded } = state || {};\n const userSet =\n _this.state &&\n _this.state.values &&\n Object.assign({}, _this.state.values.userSet);\n const data = userSet ? userSet.data : \"\";\n const { isDisabled } = this.props;\n return (\n
    \n
    {getMessage(\"Segments\")}
    \n
    \n this.selectSegment(e)}\n readOnly={isDisabled}\n />\n
    \n
    \n {segmentsLoaded &&\n tagsLoaded &&\n data &&\n data.map((segment, segmentIndex) => {\n const id = segment.id;\n const variables = this.segments[id];\n if (variables) {\n return (\n \n
    \n
    {getMessage(camelToReading(id))}
    \n this.deleteSegment(segmentIndex)}\n >\n \"delete\"\n {getMessage(\"deleteText\")}\n \n
    \n
    \n {Object.entries(variables)\n .reverse()\n .map(([key, type], index) => {\n let extraProps = {};\n if (key === \"endDate\") {\n extraProps = {\n allowAllDates: true,\n };\n } else {\n extraProps = {\n isOutsideRange: (day) => moment().diff(day) < 0,\n };\n }\n const obj = Components[id] || Components[type];\n const config = obj.config || {};\n if (obj) {\n const Component = obj.component;\n return (\n
    \n \n
    \n );\n }\n return null;\n })\n .filter(Boolean)}\n
    \n
    \n );\n } else {\n return (\n
    \n
    \n
    {getMessage(camelToReading(id))}
    \n this.deleteSegment(segmentIndex)}\n >\n \"delete\"\n {getMessage(\"deleteText\")}\n \n
    \n
    \n );\n }\n })}\n
    \n );\n }\n}\n\nexport default SegmentsForm;\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Radio,\n VALIDATION_TYPES,\n Textarea,\n CheckboxGroup,\n DateRangePicker,\n Select,\n} from \"../../../../components/Form\";\nimport SelectStoresSearch from \"../../../../components/SelectStoresSearch\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { getCurrency } from \"../../../../lib/userDetails\";\nimport SegmentsForm from \"../../../../components/SegmentsForm\";\nimport { slotTimes } from \"../../../../lib/datetime\";\nimport \"./style.css\";\nimport moment from \"moment\";\n\nfunction checkForNegativeValue(value) {\n if (value && value < 0) {\n return getMessage(\"input.invalidNumber\");\n }\n return \"\";\n}\n\nexport default class CouponForm extends BaseForm {\n constructor(props) {\n super(props);\n const { value } = props;\n this.state.values.type = (value && value.type) || \"PERCENT\";\n this.state.values.discountType =\n (value && value.discountType) || \"DIRECT_DISCOUNT\";\n this.state.values.validOnDays = (value && value.validOnDays) || [\n \"MON\",\n \"TUE\",\n \"WED\",\n \"THU\",\n \"FRI\",\n \"SAT\",\n \"SUN\",\n ];\n this.state.values.userSet = (value && value.userSet) || { data: [] };\n this.state.tagsLoaded = true;\n }\n\n timeRangeDiable = (value) => {\n if (this.state?.values?.dateRange?.startDate) {\n if (\n `${this.state.values.dateRange.startDate} ${value}` <\n `${moment().format(\"YYYY-MM-DD HH:mm:ss\")}`\n ) {\n return true;\n }\n }\n return false;\n };\n\n render() {\n const { SubmitButton, CancelButton } = this.buttons;\n const { Form } = this.components;\n const { options } = this.props;\n const multiStores = options && options.multiStores;\n const bulk = options && options.bulk;\n const {\n discount,\n maxSingleRedemption,\n maxRedemption,\n minOrderAmount,\n maxDiscountAmount,\n } = this.state.values;\n const negDiscountErr = checkForNegativeValue(discount);\n const negSingleRedemptionErr = checkForNegativeValue(maxSingleRedemption);\n const negRedemptionErr = checkForNegativeValue(maxRedemption);\n const negOrderAmountErr = checkForNegativeValue(minOrderAmount);\n const negMaxDiscountErr = checkForNegativeValue(maxDiscountAmount);\n return (\n
    \n
    \n
    \n
    \n {bulk ? (\n \n ) : (\n \n )}\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n {bulk && (\n
    \n \n
    \n )}\n {bulk && (\n
    \n \n
    \n )}\n
    \n \n \n
    ,\n ],\n }}\n required\n {...this.generateStateMappers({\n stateKeys: [\"discount\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n
    \n
    \n \n
    \n\n
    \n \n {getMessage(\"coupon.form.comment.description\")}\n \n
    \n {/* Limit section */}\n
    \n
    \n {getMessage(\"coupon.form.limits.heading\")}\n
    \n {!bulk && (\n \n )}\n
    \n {!bulk && (\n
    \n \n
    \n )}\n
    \n \n
    \n
    \n {/* Conditions section */}\n
    \n {getMessage(\"coupon.form.conditions.heading\")}\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n {/* only if multi store extension is enabled and store has multiple store */}\n {multiStores &&\n multiStores.isEnabled &&\n multiStores.data.length > 1 && (\n
    \n \n
    \n )}\n \n
    \n
    \n \n {getMessage(\"coupon.form.submit.text\")}\n \n \n {getMessage(\"coupon.form.cancel.text\")}\n \n
    \n \n \n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Radio,\n VALIDATION_TYPES,\n} from \"../../../../components/Form\";\n\nimport { getMessage } from \"../../../../lib/translator\";\n\nexport default class CouponFiltersForm extends BaseForm {\n render() {\n const { SubmitButton, ClearButton } = this.buttons;\n const { Form } = this.components;\n return (\n
    \n
    \n {\n \n }\n \n
    \n {getMessage(\"coupon.filters.submitText\")}\n \n {getMessage(\"coupon.filters.clearFiltersText\")}\n \n
    \n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport { Row, Cell } from \"../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport { Dialog, Popup } from \"../../../components/Popup\";\nimport { Input, BaseForm, Toggle } from \"../../../components/Form\";\n\nimport { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport ListingPageWithRoutes from \"../../../containers/ListingPage/listingRouter\";\n\nimport { getMessage } from \"../../../lib/translator\";\nimport { isExtensionEnabled, getStores } from \"../../../lib/auth\";\nimport { getCurrency } from \"../../../lib/userDetails\";\n\nimport API from \"../../../lib/api\";\n\nimport CouponForm from \"./Form\";\nimport CouponFilters from \"./Filters\";\nimport emptyIcon from \"./coupons-empty.svg\";\nimport downloadIcon from \"./download.svg\";\nimport { formatDataBeforeSubmit } from \"../../../components/SegmentsForm\";\nimport {\n utcToLocalTime,\n getPrintableTime,\n localTimeToUtc,\n getStandradDateTime,\n} from \"../../../lib/datetime\";\n\nimport \"./style.css\";\nimport moment from \"moment\";\n\nfunction AddCoupon() {\n return (\n
    \n \n + {getMessage(\"coupon.add.text\")}\n \n
    \n );\n}\n\nconst emptyState = {\n icon: emptyIcon,\n message: getMessage(\"coupon.helpItems.message\"),\n additionalViews: [AddCoupon],\n};\n\nclass CouponActions extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showDialog: false,\n };\n this.showDialog = this.showDialog.bind(this);\n this.hideDialog = this.hideDialog.bind(this);\n }\n\n showDialog(id) {\n this.setState({\n showDialog: id,\n });\n }\n\n hideDialog() {\n this.setState({\n showDialog: false,\n });\n }\n\n render() {\n const { id, status, route, onAction, startDate } = this.props;\n let dropDownItem = null;\n let currentDate = new Date();\n let startDateFormat = new Date(startDate);\n if (startDateFormat < currentDate) {\n dropDownItem = (\n \n \n {getMessage(\"coupon.action.viewAnalytics\")}\n \n \n );\n }\n const targetStatus = status === \"ENABLED\" ? \"DISABLED\" : \"ENABLED\";\n return (\n
    \n }>\n \n \n {getMessage(\"coupon.action.edit\")}\n \n \n this.showDialog(id)}>\n {status === \"ENABLED\"\n ? getMessage(\"coupon.action.disable\")\n : getMessage(\"coupon.action.enable\")}\n \n {dropDownItem}\n \n {\n {\n onAction(TABLE_ACTIONS.UPDATE, { id }, { status: targetStatus });\n this.hideDialog();\n }}\n close={this.hideDialog}\n closeText={getMessage(\"coupon.dialog.cancelText\")}\n okText={getMessage(\"coupon.dialog.okText\")}\n />\n }\n
    \n );\n }\n}\n\nconst tableProperties = (route, apiKey, isMobileView) => {\n return {\n headers: [\n getMessage(\"coupon.header.coupon\"),\n getMessage(\"coupon.header.discount\"),\n getMessage(\"coupon.header.limit\"),\n getMessage(\"coupon.header.validity\"),\n getMessage(\"coupon.header.status\"),\n getMessage(\"coupon.header.actions\"),\n ],\n row: ({\n id,\n couponCode,\n prefix,\n suffix,\n type,\n discount,\n discountType,\n maxRedemption,\n maxSingleRedemption,\n startDate,\n expiryDate,\n comment,\n minOrderAmount,\n maxDiscountAmount,\n validOnPayment,\n validOnUser,\n validOnDays,\n validOnSlots,\n status,\n onAction,\n }) => (\n \n \n {!isMobileView ? (\n \n {couponCode || `${prefix} ${suffix}`}\n \n ) : (\n \n {`${getMessage(\"coupon.header.coupon\")}: `}\n \n {couponCode || `${prefix} ${suffix}`}\n \n \n )}\n \n \n {!isMobileView ? (\n
    \n
    \n {type === \"PERCENT\"\n ? `${Math.round(discount)}%`\n : `${getCurrency().symbol} ${discount}`}\n
    \n \n {discountType === \"DIRECT_DISCOUNT\"\n ? \"Cart Discount\"\n : \"Cashback\"}\n \n
    \n ) : (\n
    \n {`${getMessage(\n \"coupon.header.discount\"\n )}: `}\n\n
    \n {type === \"PERCENT\"\n ? `${Math.round(discount)}%`\n : `${getCurrency().symbol} ${discount}`}\n
    \n \n {discountType === \"DIRECT_DISCOUNT\"\n ? \"Cart Discount\"\n : \"Cashback\"}\n \n
    \n )}\n
    \n \n {!isMobileView ? (\n
    \n {maxDiscountAmount && (\n
    {`${getCurrency().symbol} ${maxDiscountAmount}`}
    \n )}\n {maxSingleRedemption && (\n {`${maxSingleRedemption} per user`}\n )}\n
    \n ) : (\n
    \n {`${getMessage(\n \"coupon.header.limit\"\n )}: `}\n {maxDiscountAmount && (\n
    {`${\n getCurrency().symbol\n } ${maxDiscountAmount}`}
    \n )}\n {maxSingleRedemption && (\n {`${maxSingleRedemption} per user`}\n )}\n
    \n )}\n
    \n \n {!isMobileView ? (\n
    \n
    \n {getPrintableTime(startDate).split(\",\")[0]}\n {getPrintableTime(startDate).split(\",\")[1]}\n
    \n \n {getPrintableTime(expiryDate).split(\",\")[0]}\n {getPrintableTime(expiryDate).split(\",\")[1]}\n \n
    \n ) : (\n
    \n {`${getMessage(\n \"coupon.header.validity\"\n )}: \n `}\n
    \n {getPrintableTime(startDate).split(\",\")[0]}\n
    \n \n {getPrintableTime(expiryDate).split(\",\")[0]}\n \n\n
    \n {getPrintableTime(startDate).split(\",\")[1]}\n
    \n
    \n {getPrintableTime(expiryDate).split(\",\")[1]}\n
    \n
    \n )}\n
    \n \n {!isMobileView ? (\n {status}\n ) : (\n {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n { status: status === \"ENABLED\" ? \"DISABLED\" : \"ENABLED\" }\n );\n }}\n />\n )}\n \n \n \n \n
    \n ),\n };\n};\n\nclass BulkCouponMailForm extends BaseForm {\n constructor(props) {\n super(props);\n this.generateCouponOnSubmit = this.generateCouponOnSubmit.bind(this);\n }\n generateCouponOnSubmit(formData) {\n let data = Object.assign({}, formData);\n const api = new API({ url: `/promo-service/bulk-coupon` });\n api\n .get({\n prefix: data.prefix,\n suffix: data.suffix,\n })\n .then((response) => {\n this.props.callbackgenerateCoupon();\n })\n .catch((error) => {\n console.error(error);\n this.setState({ error: error.message });\n this.setState({\n submitting: false,\n });\n });\n }\n\n onSubmit(formData) {\n this.setState({\n submitting: true,\n error: \"\",\n });\n this.generateCouponOnSubmit(formData);\n }\n render() {\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n const error = this.state && this.state.error;\n return (\n
    \n {error && (\n
    \n {getMessage(\"coupon.download.form.error\")}\n
    \n )}\n \n \n Submit\n \n );\n }\n}\n\nfunction getMobileView() {\n return window.screen.width <= 480;\n}\n\nexport default class Coupons extends Component {\n constructor(props) {\n super(props);\n this.state = {\n stores: [],\n showModal: false,\n showDialog: false,\n isMobileView: getMobileView(),\n };\n this.mobileView = this.mobileView.bind(this);\n this.handleOnclickimg = this.handleOnclickimg.bind(this);\n this.handleModalClose = this.handleModalClose.bind(this);\n this.closeDialog = this.closeDialog.bind(this);\n this.generateCoupon = this.generateCoupon.bind(this);\n }\n\n handleOnclickimg() {\n this.setState({\n showModal: true,\n });\n }\n\n handleModalClose() {\n this.setState({\n showModal: false,\n });\n }\n\n closeDialog() {\n this.setState({\n showDialog: false,\n });\n }\n\n generateCoupon() {\n this.setState({\n showModal: false,\n showDialog: true,\n });\n }\n\n mobileView() {\n this.setState({ isMobileView: getMobileView() });\n }\n componentDidMount() {\n window.addEventListener(\"resize\", this.mobileView, false);\n // If multi store extension is enabled, get the stores data\n if (isExtensionEnabled(\"MultiStoreSupport\")) {\n let stores = getStores() || [];\n this.setState({\n stores: stores,\n });\n }\n }\n componentWillUnmount() {\n this.storeApi && this.storeApi.cancel();\n window.removeEventListener(\"resize\", this.mobileView, false);\n }\n\n render() {\n const multiStoresEnabled = isExtensionEnabled(\"MultiStoreSupport\");\n const { props } = this;\n const route = props.bulk ? \"unique-coupons\" : \"coupons\";\n const apiKey = props.bulk ? \"bulkCoupon\" : \"coupon\";\n const showModal = this.state.showModal;\n const showDialog = this.state.showDialog;\n return (\n {\n if (Array.isArray(response.data.coupon)) {\n response.data.coupon.map((coupon) => {\n if (coupon.startDate) {\n coupon.startDate = getStandradDateTime(\n utcToLocalTime,\n coupon.startDate\n );\n }\n if (coupon.expiryDate) {\n coupon.expiryDate = getStandradDateTime(\n utcToLocalTime,\n coupon.expiryDate\n );\n }\n return coupon;\n });\n }\n\n return response.data.coupon;\n },\n }\n }\n emptyState={emptyState}\n headerActions={({ onAction }) => (\n \n
    \n \n
    \n \n \n \n {showDialog && (\n \n )}\n
    \n \n {`+ ${getMessage(\n \"Add unique coupons\"\n )}`}\n \n \n {`+ ${getMessage(\n \"coupon.add.text\"\n )}`}\n \n
    \n
    \n )}\n tableProperties={tableProperties(\n route,\n apiKey,\n this.state && this.state.isMobileView\n )}\n form={{\n component: CouponForm,\n options: {\n bulk: props.bulk,\n multiStores: {\n isEnabled: multiStoresEnabled,\n data: this.state.stores,\n },\n },\n transformResponse: (response) => {\n let coupon = response.data[apiKey];\n let newCoupon = Object.assign({}, coupon);\n let validOnDays = [];\n for (let key in coupon[\"validOnDays\"]) {\n if (coupon[\"validOnDays\"][key] === \"1\") {\n validOnDays.push(key);\n }\n }\n if (coupon[\"validOnStores\"]) {\n coupon[\"validOnStores\"].forEach(function (element, index) {\n newCoupon[\"validOnStores\"][index] = parseInt(element, 10);\n });\n }\n newCoupon[\"validOnDays\"] = validOnDays;\n newCoupon[\"dateRange\"] = {\n startDate: getStandradDateTime(\n utcToLocalTime,\n coupon.startDate\n ).split(\" \")[0],\n endDate: getStandradDateTime(\n utcToLocalTime,\n coupon.expiryDate\n ).split(\" \")[0],\n };\n newCoupon[\"timeRange\"] = {\n startTime: getStandradDateTime(\n utcToLocalTime,\n coupon.startDate\n ).split(\" \")[1],\n endTime: getStandradDateTime(\n utcToLocalTime,\n coupon.expiryDate\n ).split(\" \")[1],\n };\n\n const newDataArray = coupon?.userSet?.data?.map((userSetData) => {\n if (userSetData.date) {\n userSetData.date = getStandradDateTime(\n utcToLocalTime,\n userSetData.date\n ).split(\" \")[0];\n }\n if (userSetData.startDate) {\n userSetData.startDate = getStandradDateTime(\n utcToLocalTime,\n userSetData.startDate\n ).split(\" \")[0];\n }\n if (userSetData.endDate) {\n userSetData.endDate = getStandradDateTime(\n utcToLocalTime,\n userSetData.endDate\n ).split(\" \")[0];\n }\n return userSetData;\n });\n\n newCoupon[\"userSet\"] = {\n ...coupon.userSet,\n data: newDataArray,\n };\n return newCoupon;\n },\n overwriteWithApiParams: !props.bulk,\n\n transformSubmit:\n props.transformSubmit ||\n ((formData) => {\n let response = Object.assign({}, formData);\n response.validOnUser = \"ALL\";\n if (formData[\"validOnDays\"]) {\n delete response[\"validOnDays\"];\n let validOnDays = {};\n formData[\"validOnDays\"].forEach(function (key) {\n validOnDays[key] = \"1\";\n });\n response.validOnDays = validOnDays;\n }\n if (formData.dateRange && formData.timeRange) {\n response.startDate = getStandradDateTime(\n localTimeToUtc,\n `${formData.dateRange.startDate} ${formData.timeRange.startTime}`\n );\n response.expiryDate = getStandradDateTime(\n localTimeToUtc,\n `${formData.dateRange.endDate} ${formData.timeRange.endTime}`\n );\n delete response[\"dateRange\"];\n delete response[\"timeRange\"];\n }\n if (\n this.props.match.params.action === \"edit\" &&\n moment(response.startDate).isSame(new Date(), \"day\")\n ) {\n delete response.startDate;\n }\n if (response && response.userSet) {\n // date inside userSet should be sent in YYYY-MM-DD HH:mm:ss format\n const newUserSetData = response?.userSet?.data?.map(\n (userSetData) => {\n if (userSetData.date && userSetData.date.length === 10) {\n userSetData.date = getStandradDateTime(\n localTimeToUtc,\n `${userSetData.date} 00:00:00`\n );\n }\n if (\n userSetData.startDate &&\n userSetData.startDate.length === 10\n ) {\n userSetData.startDate =\n userSetData.startDate === moment().format(\"YYYY-MM-DD\")\n ? getStandradDateTime(\n localTimeToUtc,\n `${moment().format(\"YYYY-MM-DD\")} 00:00:00`\n )\n : getStandradDateTime(\n localTimeToUtc,\n `${userSetData.startDate} 00:00:00`\n );\n }\n if (\n userSetData.endDate &&\n userSetData.endDate.length === 10\n ) {\n userSetData.endDate = getStandradDateTime(\n localTimeToUtc,\n `${userSetData.endDate} 23:59:59`\n );\n }\n return userSetData;\n }\n );\n\n if (response.userSet.data) {\n response.userSet.data = newUserSetData;\n }\n response = formatDataBeforeSubmit(response);\n }\n // remove all null or undefined values from response\n for (let i in response) {\n if (response[i] === null || response[i] === undefined) {\n delete response[i];\n }\n }\n return response;\n }),\n }}\n filters={{\n component: CouponFilters,\n forceShow: true,\n options: {\n bulk: this.props.bulk,\n },\n }}\n />\n );\n }\n}\n","import React, { Component } from \"react\";\nimport Coupons from \"../Coupons\";\nimport { localTimeToUtc, getStandradDateTime } from \"../../../lib/datetime\";\n\nimport { getMessage } from \"../../../lib/translator\";\n\nclass BulkCoupons extends Component {\n render() {\n return (\n
    \n response.data.bulkCoupon,\n }}\n transformSubmit={(formData) => {\n const {\n validOnStores,\n comment,\n maxDiscountAmount,\n discountType,\n discount,\n type,\n validOnUser,\n validOnPayment,\n dateRange,\n validOnDays,\n minOrderAmount,\n userSet,\n timeRange,\n ...others\n } = formData;\n let response = Object.assign({}, others);\n response.coupon = {};\n response.coupon = {\n validOnStores,\n discount,\n discountType,\n type,\n validOnUser,\n validOnPayment,\n minOrderAmount,\n maxDiscountAmount,\n comment,\n userSet,\n };\n if (formData[\"validOnDays\"]) {\n delete response[\"validOnDays\"];\n let validOnDays = {};\n formData[\"validOnDays\"].forEach(function (key) {\n validOnDays[key] = \"1\";\n });\n response.coupon.validOnDays = validOnDays;\n }\n if (formData.dateRange && formData.timeRange) {\n response.coupon.startDate = getStandradDateTime(\n localTimeToUtc,\n `${formData.dateRange.startDate} ${formData.timeRange.startTime}`\n );\n response.coupon.expiryDate = getStandradDateTime(\n localTimeToUtc,\n `${formData.dateRange.endDate} ${formData.timeRange.endTime}`\n );\n delete response[\"dateRange\"];\n delete response[\"timeRange\"];\n }\n if (formData.userSet) {\n response.coupon.userSet.type = \"SEGMENTS\";\n }\n return response;\n }}\n menu={this.props.menu}\n bulk\n />\n
    \n );\n }\n}\n\nexport default BulkCoupons;\n","import React from \"react\";\nimport img from \"./banner.svg\";\n\nexport default function Banner(props) {\n if (!props.data) {\n return (\n
    \n \"\"\n
    \n );\n }\n return (\n
    \n {props.data.title &&

    {props.data.title}

    }\n \"\"\n
    \n );\n}\n","import React from \"react\";\nimport {\n SortableContainer,\n SortableElement,\n SortableHandle,\n arrayMove,\n} from \"react-sortable-hoc\";\nimport { BaseForm, Input, VALIDATION_TYPES } from \"../../../../components/Form\";\nimport { cloneMutables } from \"../../../../lib/stateManagement/\";\nimport { BannerWithText, BannerWithMultipleButtons } from \"zopsmart-ui\";\nimport { Popup, Dialog } from \"../../../../components/Popup\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { getSession } from \"../../../../lib/auth\";\n\nimport Layout from \"../../../settings/Themes/layout\";\nimport getLayout from \"../../../settings/Themes/Layouts/getLayout\";\nimport Banner from \"../../../../components/Layout/Banner\";\nimport RichText from \"../../../../components/Layout/RichText\";\nimport ImageWithText from \"../../../../components/Layout/ImageWithText\";\nimport \"./style.css\";\nimport API from \"../../../../lib/api\";\nimport Loader from \"../../../../components/Loader\";\nimport { get } from \"../../../../lib/storage\";\n\nfunction getSlugFromText(text) {\n if (!text) {\n return \"\";\n }\n return text.toLowerCase().replace(/\\s+/g, \"-\");\n}\n\nconst SortableItem = SortableElement((props) => {\n const { value, layoutIndex, onEditClick, onRemoveClick } = props;\n let LayoutComponent = \"\";\n Object.keys(availableComponents).forEach(function (component, index) {\n if (availableComponents[component][value.name]) {\n LayoutComponent = availableComponents[component][value.name];\n }\n });\n let element = \"\";\n const isShowLayout = typeof LayoutComponent !== \"string\";\n return (\n
    \n {isShowLayout && (\n <>\n

    \n \n {value.name.replace(/([A-Z])/g, \" $1\").trim()}\n \n

    \n {\n element = el;\n }}\n >\n \n
    \n {![\"MarketingBanners\"].includes(value.name) && (\n {\n onEditClick(layoutIndex, element.offsetTop);\n }}\n >\n Edit\n \n )}\n {\n e.preventDefault();\n onRemoveClick(layoutIndex);\n }}\n >\n Remove\n \n
    \n
    \n \n )}\n \n );\n});\n\nconst SortableList = SortableContainer((props) => {\n return (\n
    \n {Array.isArray(props.items) &&\n props.items.map((value, index) => (\n \n ))}\n
    \n );\n});\n\n// Support only for Fashion Trends theme as of now\nconst dualImageLayouts = [\"DualImageBanner\", \"DualImage\"];\n\nconst availableComponents = {\n Banners: {\n MarketingBanners: Banner,\n BannerWithText: BannerWithText,\n BannerWithButton: BannerWithText,\n BannerWithMultipleButtons: BannerWithMultipleButtons,\n },\n Images: {\n ImageWithText: ImageWithText,\n },\n Text: {\n RichText: RichText,\n },\n};\n\nconst DragHandle = SortableHandle((props) => (\n {props.children}\n));\n\nexport default class WebsitePageForm extends BaseForm {\n constructor(props) {\n super(props);\n this.domain = getSession().organization.domain;\n this.state.showDialog = false;\n this.direction = get(\"dataLang\") === \"ar\" ? \"rtl\" : \"ltr\";\n let layouts =\n this.state.values?.layouts && this.state.values?.layouts?.filter(Boolean);\n if (!layouts) {\n this.state.values = {\n layouts: [],\n };\n }\n this.state.showLayoutPopup = false;\n this.state.showDialog = false;\n this.state.currentComponent = \"Banners\";\n this.pages = [\"staticPage\"];\n this.data = [];\n this.currentLayout = {};\n this.selectOptionsData = {\n categories: [],\n tags: [],\n brands: [],\n };\n }\n getSelectOptionsData(selectField, dataFor) {\n const api = new API({\n url: `/catalogue-service/${selectField}`,\n });\n\n api\n .get()\n .then((response) => {\n if (response.status === \"ERROR\") {\n console.error(`Error in fetching details of ${dataFor}`);\n return;\n }\n this.selectOptionsData[dataFor] = [];\n if (!response.data[selectField]) {\n response.data[selectField] = [];\n }\n this.selectOptionsData[dataFor] = response.data[selectField].map(\n function (field) {\n return { text: field.name, value: field.slug };\n }\n );\n this.selectOptionsData[dataFor].push(\n { text: `All ${dataFor}`, value: \"ALL\" },\n { text: `Current ${selectField}`, value: \"CURRENT\" }\n );\n const state = `${dataFor}DataLoaded`;\n this.setState({\n loaded: true,\n [state]: true,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n fetchScheduledLayout() {\n this.setState({\n loaded: false,\n });\n const page = this.pages[0];\n let params = this.props?.resourceId ;\n const api = new API({ url: `/account-service/static-page/${params}` });\n api.get().then((response) => {\n if (response.status === \"ERROR\") {\n console.error(`Error in fetching details for ${page}`); // Todo: Handle this error\n return;\n }\n if (!response.data?.staticpage?.layouts?.length) {\n this.data = [];\n this.setState({ loaded: true });\n return;\n }\n this.data = this.formatResponse(response.data?.staticpage?.layouts);\n this.originalData = this.data;\n\n if (!this.state.categoryDataLoaded) {\n this.getSelectOptionsData(\"category\", \"categories\");\n }\n if (this.pages.includes(\"tag\")) {\n if (!this.state.tagDataLoaded) {\n this.getSelectOptionsData(\"tag\", \"tags\");\n }\n }\n if (this.pages.includes(\"brand\")) {\n if (!this.state.brandDataLoaded) {\n this.getSelectOptionsData(\"brand\", \"brands\");\n }\n }\n });\n }\n\n componentDidMount() {\n this.props.method === \"edit\" && this.fetchScheduledLayout();\n }\n\n addLayout = (layoutName, data) => {\n const layout = {\n name: layoutName,\n data: data,\n };\n this.data.push(layout);\n this.setState({\n showLayoutPopup: false,\n });\n };\n\n onSortEnd = ({ oldIndex, newIndex }) => {\n this.data = arrayMove(this.data, oldIndex, newIndex);\n this.forceUpdate();\n };\n\n onSubmit = (values) => {\n this.setState(\n (prevState) => Object.assign({}, prevState, { values }),\n this._submitHandler\n );\n };\n\n getRespectiveComponents = (component) => {\n this.setState({\n currentComponent: component,\n });\n };\n\n onEditClick = (layoutIndex, top) => {\n const layout = this.data[layoutIndex];\n Object.assign(this.currentLayout, layout);\n this.currentLayout.top = top;\n this.setState({\n editing: true,\n layoutIndex,\n });\n };\n\n onRemoveClick = (index) => {\n this.saveLayouts(index);\n this.setState({\n showPrompt: false,\n deleteIndex: \"\",\n });\n };\n\n showPrompt = (index) => {\n this.setState({\n showPrompt: true,\n deleteIndex: index,\n });\n };\n\n onAddClick = () => {\n this.setState({\n showLayoutPopup: true,\n });\n };\n\n listView = () => {\n const View = () => {\n if (this.state.loaded || this.props.method === \"add\") {\n return (\n <>\n \n
    \n —————————\n \n ————————\n
    \n \n );\n }\n return ;\n };\n return (\n
    \n \n { (this.props.method === \"add\" || this.state.loaded) && (\n
    \n \n {getMessage(\"order.form.cancel.text\")}\n \n \n save\n \n
    \n )}\n
    \n );\n };\n\n formatResponse(response) {\n let newResponse = Object.assign([], response);\n const page = this.pages[this.state.page];\n newResponse.forEach((layout) => {\n if (\n layout.name === \"CategoryCollection\" ||\n layout.name === \"BrandCollection\"\n ) {\n let key = layout.name === \"CategoryCollection\" ? \"category\" : \"brand\";\n let collection = (layout.value && layout.value.collection) || [];\n collection = collection.map((val) => val[key]);\n layout[\"data\"][key] = collection;\n layout.value && delete layout.value.collection;\n }\n if (\n layout.name === \"CategoryCollection\" &&\n layout.data &&\n layout.data.subcategories &&\n page === \"category\"\n ) {\n layout.name = \"SubCategoryCollection\";\n }\n });\n return newResponse;\n }\n\n saveLayouts = (index, formData = null) => {\n this.setState({\n submitting: true,\n });\n\n let data = this.data;\n if (!formData) {\n data =\n index !== undefined\n ? this.data.filter((_, idx) => idx !== index)\n : this.data;\n } else {\n data = data.filter((_, i) => i !== index);\n let layoutname = formData.name;\n delete formData.name;\n data.splice(index, 0, { name: layoutname, data: { ...formData } });\n }\n if (!index && index !== 0) {\n data = this.data;\n }\n data &&\n data.forEach((layout, i) => {\n const layoutName = layout.name;\n if (layoutName === \"SubCategoryCollection\") {\n layout.name = \"CategoryCollection\";\n layout.data.subcategories = true;\n }\n\n if (layoutName === \"CategoryCollection\") {\n if (formData && i === index) {\n layout.data.categoryIds =\n layout.data.category &&\n layout.data.category\n .map((category) => category.id)\n .filter(Boolean);\n delete layout.data.category;\n }\n }\n if (layoutName === \"BlogCollection\") {\n if (formData && i === index) {\n layout.data.blogIds =\n layout.data.blog &&\n layout.data.blog.map((blog) => blog.id).filter(Boolean);\n delete layout.data.blog;\n }\n }\n if (layoutName === \"BrandCollection\") {\n if (formData && i === index) {\n layout.data.brandIds =\n layout.data.brand &&\n layout.data.brand.map((brand) => brand.id).filter(Boolean);\n }\n delete layout.data.brand;\n }\n if (layoutName === \"ProductCollection\") {\n layout.data && delete layout.data.collection;\n if (layout.data.hasImage === -1) {\n layout.data.hasImage = \"\";\n }\n if (layout.data.hasStock === -1) {\n layout.data.hasStock = \"\";\n }\n if (layout.data.hasOffers === -1) {\n layout.data.hasOffers = \"\";\n }\n if (\n layout.data.category &&\n typeof layout.data.category === \"object\"\n ) {\n layout.data.category = layout.data.category.slug;\n }\n if (layout.data.brand && typeof layout.data.brand === \"object\") {\n layout.data.brand = layout.data.brand.slug;\n }\n if (layout.data.tag && typeof layout.data.tag === \"object\") {\n layout.data.tag = layout.data.tag.slug;\n }\n }\n if (layout.name === \"ImageSlideShow\") {\n layout.data &&\n layout.data.activeIndex &&\n delete layout.data.activeIndex;\n }\n\n delete layout.value;\n layout.data && delete layout.data.collection;\n });\n\n let params = {\n layouts: data,\n };\n\n this.data = params?.layouts\n\n this.setState(prevState => ({\n values: {\n ...prevState?.values,\n layouts: params?.layouts?.map((layout, index) => ({\n ...prevState?.values?.layouts[index], \n ...layout, \n data: {\n ...prevState?.values?.layouts[index]?.data,\n ...layout?.data, \n },\n })),\n },\n editing: false,\n submitting: false,\n showDialog: true,\n error: false,\n errors: {},\n }));\n };\n\n reorderLayout = () => {\n this.saveLayouts();\n };\n\n render() {\n const { CancelButton } = this.buttons;\n const { Form } = this.components;\n const View = () => {\n if (this.state.editing) {\n const layout = this.data[this.state.layoutIndex];\n const layoutInfo =\n getLayout(\n this.state.page,\n layout.name,\n this.pages,\n this.selectOptionsData\n ) || {};\n const top = this.currentLayout.top;\n return (\n {\n this.saveLayouts(this.state.layoutIndex, form);\n }}\n onCancel={() => {\n this.setState({\n editing: false,\n });\n }}\n onRemove={() => {\n console.info(\"Remove this layout\");\n }}\n sortable\n />\n );\n }\n return ;\n };\n return (\n
    \n
    \n {\n if (!this.getState([\"url\"])) {\n this.updateState(\n [\"url\"],\n getSlugFromText(this.getState([\"title\"]))\n );\n }\n }}\n validationStrings={{\n valueMissing: getMessage(\n \"websitePage.form.title.requiredMessage\"\n ),\n }}\n dir={this.direction}\n />\n \n \n\n
    \n
    \n {this.state.showLayoutPopup && (\n <>\n \n this.setState({\n showLayoutPopup: false,\n })\n }\n >\n {\n
    \n
      \n {Object.keys(availableComponents).map(\n (component, index) => {\n return (\n {\n this.getRespectiveComponents(component);\n }}\n >\n {component.replace(/([A-Z])/g, \" $1\").trim()}\n \n );\n }\n )}\n
    \n \n {Object.keys(\n availableComponents[this.state.currentComponent]\n )\n .filter(\n (layout) =>\n !(\n this.props.theme?.name !== \"Trends\" &&\n dualImageLayouts.includes(layout)\n )\n )\n .map((layout, index) => {\n const Component =\n availableComponents[\n this.state.currentComponent\n ][layout];\n let data = {};\n if (layout === \"BannerWithButton\") {\n data.button = true;\n }\n let categoryAndbrandCollection =\n layout === \"SubCategoryCollection\";\n return (\n
    \n

    \n {layout.replace(/([A-Z])/g, \" $1\").trim()}\n {categoryAndbrandCollection && (\n Beta\n )}\n

    \n
    \n \n
    \n {\n this.addLayout(layout, data);\n }}\n >\n {getMessage(\"themes.selection.add\")}\n \n
    \n
    \n
    \n );\n })}\n
    \n
    \n }\n \n \n )}\n {\n this.setState({\n showDialog: false,\n });\n }}\n />\n \n this.setState({\n showPrompt: false,\n deleteIndex: \"\",\n })\n }\n onOk={() => this.onRemoveClick(this.state.deleteIndex)}\n />\n
    \n
    \n
    \n {\n e.preventDefault();\n let updates = {\n isDraft: false,\n };\n if (!this.state.values.publishTime) {\n let now = new Date();\n updates.publishTime = `${now.getFullYear()}-${String(\n now.getMonth() + 1\n ).padStart(2, \"0\")}-${String(now.getDate()).padStart(\n 2,\n \"0\"\n )} ${now.toTimeString().split(\" \")[0]}`;\n }\n this.onSubmit(\n Object.assign({}, cloneMutables(this.state.values), updates)\n );\n }}\n >\n {getMessage(\"marketing.blog.form.submitText\")}\n \n \n {getMessage(\"websitePage.form.cancelText\")}\n \n
    \n \n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport ListingPageWithRoutes from \"../../../containers/ListingPage/listingRouter\";\nimport { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport WebsitePageForm from \"./Form\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport { Dialog } from \"../../../components/Popup\";\nimport API from \"../../../lib/api\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { getSession } from \"../../../lib/auth\";\n\nimport emptyIcon from \"./pages-empty.svg\";\n\nimport \"./style.css\";\nimport { get } from \"../../../lib/storage\";\n\nfunction getStatusText(status) {\n if (!status) {\n return \"\";\n }\n status = status.toLowerCase();\n switch (status) {\n case \"enabled\":\n case \"disabled\":\n return getMessage(`websitePage.status.${status}`);\n default:\n return status;\n }\n}\n\nclass PagesActions extends Component {\n constructor(props) {\n super(props);\n this.state = {\n statusActionID: null,\n };\n this.showStatusActionDialog = this.showStatusActionDialog.bind(this);\n this.hideStatusActionDialog = this.hideStatusActionDialog.bind(this);\n }\n showStatusActionDialog(statusActionID) {\n this.setState({ statusActionID });\n }\n hideStatusActionDialog() {\n this.setState({ statusActionID: null });\n }\n componentWillReceiveProps() {\n this.setState({ statusActionID: false });\n }\n modifyStatus(status) {\n let id = this.props.id;\n let api = new API({ url: `/account-service/static-page/${id}` });\n return api\n .put({ id, status })\n .then((response) => {\n this.props.onAction(TABLE_ACTIONS.EDIT, { id }, { status });\n }, console.error)\n .catch((error) => {\n console.error(error);\n });\n }\n render() {\n let { status, id } = this.props;\n return (\n
    \n {\n status === \"ENABLED\"\n ? this.modifyStatus(\"DISABLED\")\n : this.modifyStatus(\"ENABLED\");\n }}\n close={this.hideStatusActionDialog}\n closeText={getMessage(\"websitePage.dialogs.disable.cancelText\")}\n okText={getMessage(\"websitePage.dialogs.disable.okText\")}\n />\n }>\n \n \n {getMessage(\"websitePage.table.action.edit\")}\n \n \n \n {\n this.showStatusActionDialog(id);\n }}\n >\n {status === \"ENABLED\"\n ? getMessage(\"websitePage.table.action.disable\")\n : getMessage(\"websitePage.table.action.enable\")}\n
    \n \n \n \n );\n }\n}\n\nfunction AddButton() {\n return (\n \n + {getMessage(\"websitePage.add.text\")}\n \n );\n}\n\nconst emptyState = {\n icon: emptyIcon,\n message: getMessage(\"websitePage.emptyList.message\"),\n submessage: getMessage(\"websitePage.emptyList.submessage\"),\n additionalViews: [AddButton],\n};\n\nconst tableProperties = (isMobileView) => {\n return {\n headers: [\n getMessage(\"websitePage.table.title\"),\n getMessage(\"websitePage.table.url\"),\n getMessage(\"websitePage.table.status\"),\n getMessage(\"websitePage.table.actions\"),\n ],\n row: ({ id, title, url, status, actions, onAction }) => (\n \n \n {isMobileView ? (\n
    \n {getMessage(\"websitePage.table.title\")}\n
    \n ) : (\n \"\"\n )}\n \n {title}\n \n
    \n \n {isMobileView ? (\n
    \n {getMessage(\"websitePage.table.url\")}\n
    \n ) : (\n \"\"\n )}\n {`/${url}`}\n
    \n \n {getStatusText(status)}\n \n \n \n \n
    \n ),\n };\n};\nfunction getMobileView() {\n return window.screen.width <= 480;\n}\n\nexport default class Pages extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isMobileView: getMobileView(),\n };\n this.mobileView = this.mobileView.bind(this);\n }\n\n mobileView() {\n this.setState({ isMobileView: getMobileView() });\n }\n\n componentDidMount() {\n window.addEventListener(\"resize\", this.mobileView, false);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.mobileView, false);\n }\n render() {\n return (\n response.data.staticpage,\n }}\n emptyState={emptyState}\n headerActions={AddButton}\n // showLanguageDropDown\n form={{\n component: WebsitePageForm,\n transformResponse: (response) => {\n let title = response.data.staticpage.title;\n let url = response.data.staticpage.url;\n let layouts = response.data.staticpage.layouts;\n return { title, url, layouts };\n },\n }}\n tableProperties={tableProperties(this.state.isMobileView)}\n />\n );\n }\n}\n","import React from \"react\";\n\nconst variables = {\n name: \"Customer\",\n};\n\nconst parseTemplate = (template) => {\n Object.keys(variables).forEach((variable) => {\n let regex = new RegExp(\"{{s*\" + variable + \"s*}}\", \"g\");\n template = template.replace(regex, variables[variable]);\n });\n return template;\n};\n\nconst PreviewElement = (props) => {\n let { subject, body, sms, templateType, img, url } = props;\n subject = subject && parseTemplate(subject);\n body = body && parseTemplate(body);\n sms = sms && parseTemplate(sms);\n return (\n
    \n {templateType === \"EMAIL\" && (\n
    \n

    {subject}

    \n
    \n
    \n          
    \n
    \n )}\n {templateType === \"SMS\" &&
    {sms}
    }\n {templateType === \"PUSH\" && (\n
    \n

    {subject}

    \n
    {body}
    \n \n {url}\n \n {img && (\n \"push-notification\"\n )}\n
    \n )}\n
    \n );\n};\n\nexport { PreviewElement };\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n VALIDATION_TYPES,\n Textarea,\n SingleDatePicker,\n Select,\n ImageUpload,\n RichTextEditorQuill,\n} from \"../../../../components/Form\";\nimport Loader from \"../../../../components/Loader\";\nimport SegmentsForm from \"../../../../components/SegmentsForm\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport Tabs from \"../../../../components/Tabs\";\nimport API from \"../../../../lib/api\";\nimport { PreviewElement } from \"./utils\";\nimport debounce from \"../../../../lib/debounce\";\nimport moment from \"moment\";\nimport { getTimes } from \"../../../../lib/commonlyused\";\n\nimport \"./style.css\";\n\nconst checkIfValidDateTime = (date, time) => {\n let dateTime = date + \" \" + moment(time, \"hh:mm\").format(\"HH:mm:00\");\n return moment(dateTime) >= moment();\n};\n\nexport default class CouponForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.values.time = (props.value && props.value.time) || \"\";\n this.state.variables = [];\n this.state.mediums = [];\n this.state.showLoader = false;\n this.state.activeMediumId = null;\n this.state.lastFocussedElementId = null;\n this.state.lastCaretPosition = null;\n [\n \"updateMediumId\",\n \"updateLastFocussedElement\",\n \"variableClicked\",\n \"updateLastCaretPosition\",\n ].forEach((fn) => {\n this[fn] = this[fn].bind(this);\n });\n this.debouncedCaretPositionUpdate = debounce(\n this.debouncedCaretPositionUpdate.bind(this),\n 100\n );\n }\n\n variableClicked(e) {\n const variableName = e.target.getAttribute(\"data-variable\");\n const { lastFocussedElementId, lastCaretPosition } = this.state;\n if (\n lastFocussedElementId &&\n (lastFocussedElementId === \"emailBody\" ||\n lastFocussedElementId === \"emailSubject\" ||\n lastFocussedElementId === \"smsContent\") &&\n document.getElementById(lastFocussedElementId)\n ) {\n let values = { ...this.state.values };\n let prevValue = values[lastFocussedElementId];\n if (!prevValue) {\n prevValue = `{{${variableName}}}`;\n } else {\n if (lastCaretPosition == null) {\n prevValue += `{{${variableName}}}`;\n } else {\n prevValue =\n prevValue.slice(0, lastCaretPosition) +\n `{{${variableName}}}` +\n prevValue.slice(lastCaretPosition);\n }\n }\n values[lastFocussedElementId] = prevValue;\n this.setState({\n values,\n });\n }\n }\n\n debouncedCaretPositionUpdate(selectionStart) {\n this.setState({\n lastCaretPosition: selectionStart,\n });\n }\n\n updateLastCaretPosition(e) {\n this.debouncedCaretPositionUpdate(e.target.selectionStart);\n }\n\n updateLastFocussedElement({ e, id }) {\n this.setState({\n lastFocussedElementId: e ? e.target.id : id,\n });\n }\n\n componentDidMount() {\n this.setState({\n showLoader: true,\n });\n const mediumApi = new API({ url: \"/promo-service/medium\" });\n const variableApi = new API({ url: \"/promo-service/campaignVariable\" });\n Promise.all([mediumApi.get(), variableApi.get()])\n .then(\n ([mediumApiResponse, variableApiResponse]) => {\n const mediumsData = mediumApiResponse.data.medium;\n const activeMediumId =\n mediumApiResponse.data.medium.reverse()[0][\"id\"];\n const variables = variableApiResponse.data;\n this.setState({\n mediums: mediumsData,\n activeMediumId,\n showLoader: false,\n variables,\n });\n },\n () => {\n this.setState({ showLoader: false });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n updateMediumId(mediumId) {\n this.setState({\n activeMediumId: mediumId,\n });\n }\n\n render() {\n const { SubmitButton, CancelButton } = this.buttons;\n const { Form } = this.components;\n const { variables, values, activeMediumId, mediums } = this.state;\n const {\n emailSubject,\n emailBody,\n smsContent,\n date,\n time,\n pushImage,\n pushBody,\n pushSubject,\n pushUrl,\n status,\n } = values;\n let isDateTimeValid = true;\n if (date) {\n isDateTimeValid = checkIfValidDateTime(date, time);\n }\n const isDisabled = status === \"COMPLETED\";\n const EmailComponent = (\n
    \n this.updateLastFocussedElement({ e })}\n onMouseUp={this.updateLastCaretPosition}\n onKeyPress={this.updateLastCaretPosition}\n {...this.generateStateMappers({\n stateKeys: [\"emailSubject\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n readOnly={isDisabled}\n />\n \n
    \n );\n\n const SMSComponent = (\n
    \n this.updateLastFocussedElement({ e })}\n onMouseUp={this.updateLastCaretPosition}\n onKeyPress={this.updateLastCaretPosition}\n {...this.generateStateMappers({\n stateKeys: [\"smsContent\"],\n loseEmphasisOnFill: true,\n })}\n readOnly={isDisabled}\n />\n
    \n {getMessage(\"campaign.form.maxcharacters.description\")}\n
    \n
    \n );\n\n const PushNotificationComponent = (\n
    \n this.updateLastFocussedElement({ e })}\n onMouseUp={this.updateLastCaretPosition}\n onKeyPress={this.updateLastCaretPosition}\n readOnly={isDisabled}\n {...this.generateStateMappers({\n stateKeys: [\"pushSubject\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n this.updateLastFocussedElement({ e })}\n onMouseUp={this.updateLastCaretPosition}\n onKeyPress={this.updateLastCaretPosition}\n readOnly={isDisabled}\n {...this.generateStateMappers({\n stateKeys: [\"pushBody\"],\n loseEmphasisOnFill: true,\n })}\n />\n this.updateLastFocussedElement({ e })}\n onMouseUp={this.updateLastCaretPosition}\n onKeyPress={this.updateLastCaretPosition}\n readOnly={isDisabled}\n {...this.generateStateMappers({\n stateKeys: [\"pushUrl\"],\n loseEmphasisOnFill: true,\n })}\n />\n \n {getMessage(\"product.form.variant.image.description\")}\n \n
    \n );\n\n return (\n
    \n {this.state.showLoader ? (\n \n ) : (\n
    \n
    \n this.updateLastFocussedElement({ e })}\n required\n readOnly={isDisabled}\n {...this.generateStateMappers({\n stateKeys: [\"name\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n />\n
    \n \n
    \n \n
    \n
    \n
    \n {!isDateTimeValid && !isDisabled && (\n
    \n {getMessage(\"campaign.form.invalidDateTime\")}\n
    \n )}\n this.updateLastFocussedElement({ e })}\n type=\"text\"\n {...this.generateStateMappers({\n stateKeys: [\"comment\"],\n loseEmphasisOnFill: true,\n })}\n readOnly={isDisabled}\n />\n {variables && variables.length > 0 && (\n
    \n

    {getMessage(\"campaign.form.vairableList.heading\")}

    \n {variables.map((variable) => (\n \n {variable}\n
    \n ))}\n
    \n )}\n {activeMediumId && mediums && mediums.length > 0 && (\n
    \n
    \n \n {activeMediumId === 1 && EmailComponent}\n {activeMediumId === 2 && SMSComponent}\n {activeMediumId === 3 && PushNotificationComponent}\n
    \n
    \n

    \n {getMessage(\"campaign.form.preview.heading\")}\n

    \n
    \n {activeMediumId === 1 && (\n \n )}\n {activeMediumId === 2 && (\n \n )}\n {activeMediumId === 3 && (\n \n )}\n
    \n
    \n
    \n )}\n \n {!isDisabled && (\n
    \n \n {getMessage(\"campaign.form.submit.text\")}\n \n \n {getMessage(\"campaign.form.cancel.text\")}\n \n
    \n )}\n \n )}\n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport ListingPageWithRoutes from \"../../../containers/ListingPage/listingRouter\";\nimport { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport { Link } from \"react-router-dom\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { getMessage } from \"../../../lib/translator\";\nimport EmptyIcon from \"./campaigns-empty.svg\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport CampaignsForm from \"./Form\";\nimport { formatDate } from \"../../../lib/datetime\";\nimport {\n localTimeToUtc,\n utcToLocalTime,\n getPrintableTime,\n getStandradDateTime,\n} from \"../../../lib/datetime\";\nimport moment from \"moment\";\nimport { formatDataBeforeSubmit } from \"../../../components/SegmentsForm\";\n\nimport \"./style.css\";\n\nfunction AddCampaign() {\n return (\n
    \n \n +{\" \"}\n {getMessage(\"campaign.add.text\")}\n \n
    \n );\n}\n\nconst emptyState = {\n icon: EmptyIcon,\n message: getMessage(\"campaign.helpItems.message\"),\n additionalViews: [AddCampaign],\n};\n\nconst tableProperties = {\n headers: [\n getMessage(\"campaign.table.heading.name\"),\n getMessage(\"campaign.table.heading.status\"),\n getMessage(\"campaign.table.heading.runDate\"),\n getMessage(\"campaign.table.heading.actions\"),\n ],\n row: ({ id, name, comment, status, scheduledTime, onAction }) => (\n \n \n \n {name}\n \n \n \n
    \n {getMessage(\"campaign.table.heading.status\")}\n
    \n {status}\n
    \n \n
    \n {getMessage(\"campaign.table.heading.runDate\")}\n
    \n
    \n
    \n \n {scheduledTime ? formatDate(scheduledTime.split(\" \")[0]) : null}\n \n
    \n
    \n \n {scheduledTime\n ? getPrintableTime(scheduledTime).split(\",\")[1]\n : null}\n \n
    \n
    \n
    \n \n }>\n \n \n {getMessage(\"campaign.action.edit\")}\n \n \n {\n onAction(TABLE_ACTIONS.DELETE, { id });\n }}\n >\n {getMessage(\"campaign.action.delete\")}\n \n \n \n
    \n ),\n};\n\nclass Campaigns extends Component {\n render() {\n const { menu } = this.props;\n return (\n {\n const campaigns = response.data.campaign;\n campaigns.map((campaign) => {\n if (campaign.scheduledTime) {\n campaign.scheduledTime = getStandradDateTime(\n utcToLocalTime,\n campaign.scheduledTime\n );\n }\n return campaign;\n });\n return campaigns;\n },\n }}\n tableProperties={tableProperties}\n form={{\n component: CampaignsForm,\n transformResponse: (response) => {\n const campaign = response.data.campaign;\n let newCampaign = { ...campaign };\n campaign.campaignData.forEach((data) => {\n if (data.mediumName === \"EMAIL\") {\n newCampaign[\"emailSubject\"] = data.template.subject;\n newCampaign[\"emailBody\"] = (data.template.body || \"\").replace(\n /
    /g,\n \"\\n\"\n );\n } else if (data.mediumName === \"SMS\") {\n newCampaign[\"smsContent\"] = data.template.content;\n } else if (data.mediumName === \"PUSH\") {\n newCampaign[\"pushSubject\"] = data.template.title;\n newCampaign[\"pushBody\"] = data.template.message;\n newCampaign[\"pushImage\"] = data.template.image && [\n data.template.image,\n ];\n newCampaign[\"pushUrl\"] =\n data.template.deepLinkUrl && data.template.deepLinkUrl;\n }\n });\n if (campaign.scheduledTime) {\n const temp = getStandradDateTime(\n utcToLocalTime,\n campaign.scheduledTime\n ).split(\" \");\n newCampaign[\"date\"] = temp[0];\n newCampaign[\"time\"] = `${temp[1].split(\":\")[0]}:${\n temp[1].split(\":\")[1]\n }`;\n }\n const newDataArray = campaign?.userSet?.data?.map((userSetData) => {\n if (userSetData.date) {\n userSetData.date = getStandradDateTime(\n utcToLocalTime,\n userSetData.date\n ).split(\" \")[0];\n }\n\n if (userSetData.startDate) {\n userSetData.startDate = getStandradDateTime(\n utcToLocalTime,\n userSetData.startDate\n ).split(\" \")[0];\n }\n if (userSetData.endDate) {\n userSetData.endtDate = getStandradDateTime(\n utcToLocalTime,\n userSetData.endDate\n ).split(\" \")[0];\n }\n return userSetData;\n });\n\n newCampaign[\"userSet\"] = {\n ...campaign.userSet,\n data: newDataArray,\n };\n\n delete newCampaign[\"campaignData\"];\n return newCampaign;\n },\n transformSubmit: (formData) => {\n let newFormData = {\n name: formData.name,\n comment: formData.comment || \"\",\n };\n let campaignData = [];\n if (formData.emailSubject) {\n campaignData.push({\n mediumId: 1,\n template: {\n body: (formData.emailBody || \"\").replace(/\\n/g, \"
    \"),\n subject: formData.emailSubject,\n },\n });\n }\n if (formData.smsContent) {\n campaignData.push({\n mediumId: 2,\n template: {\n content: formData.smsContent,\n },\n });\n }\n if (formData.pushSubject) {\n campaignData.push({\n mediumId: 3,\n template: {\n title: formData.pushSubject,\n message: formData.pushBody,\n image: formData.pushImage?.[0],\n deepLinkUrl: formData.pushUrl ?? \"\",\n },\n });\n }\n newFormData[\"campaignData\"] = campaignData;\n if (formData.date) {\n newFormData[\"scheduledTime\"] = moment(\n localTimeToUtc(`${formData.date} ${formData.time}`)\n ).format(\"YYYY-MM-DD HH:mm\");\n }\n\n if (formData?.userSet) {\n // date inside userSet should be sent in YYYY-MM-DD HH:mm:ss format\n const newUserSetData = formData.userSet.data.map(\n (userSetData) => {\n if (userSetData.date && userSetData.date.length === 10) {\n userSetData.date = getStandradDateTime(\n localTimeToUtc,\n `${userSetData.date} 00:00:00`\n );\n }\n if (\n userSetData.startDate &&\n userSetData.startDate.length === 10\n ) {\n userSetData.startDate =\n userSetData.startDate === moment().format(\"YYYY-MM-DD\")\n ? moment().format(\"YYYY-MM-DD HH:mm:ss\")\n : getStandradDateTime(\n localTimeToUtc,\n `${userSetData.startDate} 00:00:00`\n );\n }\n if (\n userSetData.endDate &&\n userSetData.endDate.length === 10\n ) {\n userSetData.endDate = getStandradDateTime(\n localTimeToUtc,\n `${userSetData.endDate} 23:59:59`\n );\n }\n return userSetData;\n }\n );\n\n newFormData.userSet = { data: newUserSetData };\n newFormData = formatDataBeforeSubmit(newFormData);\n }\n return newFormData;\n },\n }}\n />\n );\n }\n}\n\nexport default Campaigns;\n","import React, { Component } from \"react\";\nimport Table, { Header, Row, Cell } from \"../../../../components/Table\";\nimport Image from \"../../../../components/Image\";\nimport { Input, Select } from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nclass ItemTable extends Component {\n constructor(props) {\n super(props);\n this.state = {\n entityType: props.entityType,\n };\n this.imageKey = {\n product: \"images\",\n category: \"image\",\n brand: \"logo\",\n };\n this.onDiscountTypeChange = this.onDiscountTypeChange.bind(this);\n }\n\n onDiscountTypeChange(type, stateTypeKeys, stateValueKeys) {\n let { _this } = this.props;\n _this.updateState(stateTypeKeys, type);\n _this.updateState(stateValueKeys, \"\");\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.entityType !== this.props.entityType) {\n this.setState({\n entityType: this.props.entityType,\n });\n }\n }\n render() {\n const {\n comboDiscount,\n entityType,\n items,\n discountTypes,\n _this,\n buyAny,\n buy,\n buyKey,\n buyQty,\n hasOfferStarted,\n nestedKeys,\n } = this.props;\n let changeKey = \"product\";\n if (\n _this &&\n _this.state &&\n _this.state.values &&\n _this.state.values.type === \"BMINXGFG\" &&\n !buy &&\n this.props.changeKey &&\n this.props.nestedKeys\n ) {\n changeKey = this.props.changeKey;\n }\n\n let isChangeKeyArray = Array.isArray(changeKey);\n\n return (\n \n
    \n {getMessage(\"offer.image\")}\n {getMessage(\"offer.name\")}\n {((!buyAny && !buy) || buyQty) && (\n {getMessage(\"offer.quantity\")}\n )}\n {!comboDiscount && !buyAny && (\n {getMessage(\"offer.discounttype\")}\n )}\n {!comboDiscount && !buyAny && (\n {getMessage(\"offer.discountvalue\")}\n )}\n {!hasOfferStarted && {getMessage(\"offer.delete\")}}\n
    \n {items &&\n items.map((item, i) => (\n \n \n \n \n \n {entityType === \"product\" ? (\n item.brand && item.brand.name ? (\n \n {item.brand.name} {item.fullName || item.name}\n \n ) : (\n item.fullName || item.name\n )\n ) : (\n item.fullName || item.name\n )}\n \n {((!buyAny && !buy) || buyQty) && (\n \n \n \n )}\n {!comboDiscount && !buyAny && (\n \n \n this.onDiscountTypeChange(\n type,\n buy\n ? [`${buyKey}${changeKey}`, i, \"t\"]\n : isChangeKeyArray\n ? [...changeKey, i, \"t\"]\n : [changeKey, i, \"t\"],\n buy\n ? [`${buyKey}${changeKey}`, i, \"v\"]\n : isChangeKeyArray\n ? [...changeKey, i, \"v\"]\n : [changeKey, i, \"v\"]\n )\n }\n />\n \n )}\n {!comboDiscount && !buyAny && (\n \n \n _this.updateState(\n buy\n ? [`${buyKey}${changeKey}`, i, \"v\"]\n : isChangeKeyArray\n ? [...changeKey, i, \"v\"]\n : [changeKey, i, \"v\"],\n val === \"\" || val > 0 ? val : 0\n )\n }\n />\n \n )}\n {!hasOfferStarted && (\n \n {\n \n entityType === \"product\"\n ? buy\n ? _this.deleteBuyItem(i)\n : _this.deleteItem(i, nestedKeys)\n : (entityType === \"category\" ||\n entityType === \"brand\") &&\n _this.deleteCategoryBrandsItem(\n i,\n _this.state.values.type === \"BMINXGFG\" ||\n _this.state.values.type === \"BMIN\" ||\n _this.state.values.type === \"SFEGSD\"\n ? entityType\n : \"product\"\n )\n }\n />\n }\n \n )}\n \n ))}\n
    \n );\n }\n}\n\nexport default ItemTable;\n","import React, { Component } from \"react\";\nimport {\n ProductSearch,\n Input,\n Select,\n BrandSearch,\n CategorySearch,\n} from \"../../../../components/Form\";\nimport ItemTable from \"./ItemTable\";\n\nimport { getMessage } from \"../../../../lib/translator\";\n\nclass BANYATP extends Component {\n constructor(props) {\n super(props);\n this.submitHandler = this.submitHandler.bind(this);\n this.validationHandler = this.validationHandler.bind(this);\n }\n\n validationHandler(parent) {\n let validations = JSON.parse(JSON.stringify(parent.state.validations));\n parent.setState({\n validations,\n });\n }\n\n submitHandler(formData) {\n let data = JSON.parse(JSON.stringify(formData));\n const entityType = data.entityType.toLowerCase();\n let rule = data.rule || {};\n if (rule && rule.total) {\n rule.total.v = Number(rule.total.v);\n }\n if (rule.minAmount) {\n rule.minAmount = Number(rule.minAmount);\n }\n if (rule.minQuantity) {\n rule.minQuantity = Number(rule.minQuantity);\n delete rule.minQuantity;\n }\n rule[\"entity\"] = {\n type: data.entityType === \"PRODUCT\" ? \"VARIANT\" : data.entityType,\n id: data.entityType === \"PRODUCT\" ? null : data[entityType].id, // TODO: change this for brands and category\n };\n rule.limit = Number(rule.limit);\n\n if (entityType === \"product\") {\n rule.variants = data.product.map((pdt) => pdt.id).filter(Boolean);\n }\n\n data.rule = rule;\n // data.entityId = 1\n data.offerType = data.type;\n delete data.pwpTagId;\n delete data.quantity;\n delete data.minQuantity;\n delete data.product;\n delete data.category;\n delete data.brand;\n delete data.entity;\n delete data.includes;\n delete data.itemDiscountType;\n return data;\n }\n render() {\n let { entityType, discountTypes, _this, type, hasOfferStarted } =\n this.props;\n const { values } = _this.state;\n const { itemDiscountType } = _this.state.values;\n entityType = this.props.entityTypeMap[entityType];\n const comboDiscount = itemDiscountType === \"COMBO_DISCOUNT\";\n const items = values[entityType];\n const itemsLength = items ? items.length : 0;\n return (\n
    \n
    \n {entityType === \"product\" && (\n \n )}\n {entityType === \"category\" && (\n \n )}\n {entityType === \"brand\" && (\n \n )}\n \n \n \n
    \n
    \n {itemsLength ? (\n \n ) : null}\n
    \n
    \n );\n }\n}\n\nexport default BANYATP;\n","import React, { Component } from \"react\";\nimport {\n ProductSearch,\n Input,\n Radio,\n Select,\n BrandSearch,\n CategorySearch,\n} from \"../../../../components/Form\";\nimport ItemTable from \"./ItemTable\";\nimport { isAllRulesValid } from \"../../../../lib/commonlyused\";\nimport deleteIcon from \"./delete.svg\";\n\nimport { getMessage } from \"../../../../lib/translator\";\n\nclass BMINXATP extends Component {\n constructor(props) {\n super(props);\n this.submitHandler = this.submitHandler.bind(this);\n this.validationHandler = this.validationHandler.bind(this);\n this.initData = this.initData.bind(this);\n this.handleAddRule = this.handleAddRule.bind(this);\n this.handleDeleteRule = this.handleDeleteRule.bind(this);\n }\n\n initData() {\n let { method, _this, onUpdateValues } = this.props;\n if (method === \"add\") {\n let { values } = _this && _this.state;\n if (!(values.rule && values.rule.elementGroups)) {\n onUpdateValues({\n ...values,\n rule: { ...values.rule, elementGroups: [{ total: {} }] },\n });\n }\n }\n }\n\n validationHandler(parent) {\n let validations = JSON.parse(JSON.stringify(parent.state.validations));\n parent.setState({\n validations,\n });\n }\n\n handleAddRule(e) {\n e && e.preventDefault();\n let { _this } = this.props;\n let { values } = _this.state;\n let { rule } = values || {};\n let { elementGroups } = rule || {};\n\n if (!elementGroups) {\n rule = { ...rule, elementGroups: [{ total: {} }] };\n }\n\n rule = { ...rule, elementGroups: [...rule.elementGroups, { total: {} }] };\n\n _this.setState({ pressedSubmitWithCurrentData: false });\n\n this.props.onUpdateValues({ ...values, rule });\n }\n\n handleDeleteRule(index) {\n let { _this } = this.props;\n let { values } = _this.state;\n let validations = JSON.parse(JSON.stringify(_this.state.validations));\n let validationsRule = validations.rule;\n let { rule } = values || {};\n\n if (rule && rule.elementGroups) {\n let elementGroups = rule.elementGroups.filter((_, idx) => idx !== index);\n rule = { ...rule, elementGroups };\n }\n\n if (validationsRule && validationsRule.elementGroups) {\n let elementGroups = validationsRule.elementGroups.filter(\n (_, idx) => idx !== index\n );\n validationsRule = { ...validationsRule, elementGroups };\n }\n\n this.props.onUpdateValues({ ...values, rule });\n this.props.onUpdateValidations({ ...validations, validationsRule });\n }\n\n submitHandler(formData) {\n let { method, oldFormat } = formData;\n let data = JSON.parse(JSON.stringify(formData));\n const entityType = data.entityType.toLowerCase();\n const isCombo =\n data.rule && data.rule.itemDiscountType === \"COMBO_DISCOUNT\";\n let newRule = {\n elementGroups: data.rule.elementGroups.map((eg) => ({\n ...eg,\n maxDiscount: eg.maxDiscount !== \"\" ? eg.maxDiscount : undefined,\n })),\n entity: {\n type: data.entityType === \"PRODUCT\" ? \"VARIANT\" : data.entityType,\n id: data.entityType === \"PRODUCT\" ? null : data[entityType].id,\n },\n };\n if (entityType === \"product\") {\n newRule.variants = data.product.map((pdt) => pdt.id).filter(Boolean);\n }\n if (oldFormat && method === \"edit\") {\n newRule = { ...newRule, ...newRule.elementGroups[0] };\n delete newRule.elementGroups;\n }\n newRule.limit = Number(newRule.limit);\n\n if (isCombo) {\n newRule.isCombo = true;\n } else {\n delete newRule.isCombo;\n }\n\n data.rule = newRule;\n // data.entityId = 1\n data.offerType = data.type;\n delete data.pwpTagId;\n delete data.quantity;\n delete data.minQuantity;\n delete data.product;\n delete data.category;\n delete data.brand;\n delete data.entity;\n delete data.includes;\n delete data.itemDiscountType;\n return data;\n }\n\n componentDidMount() {\n this.initData();\n }\n\n render() {\n let {\n entityType,\n discountTypes,\n _this,\n type,\n hasOfferStarted,\n itemDiscountTypes,\n method,\n } = this.props;\n const { values } = _this.state;\n const { itemDiscountType } = _this.state.values;\n entityType = this.props.entityTypeMap[entityType];\n const comboDiscount = itemDiscountType === \"COMBO_DISCOUNT\";\n const items = values[entityType];\n const itemsLength = items ? items.length : 0;\n\n const { rule } = values || {};\n const { elementGroups } = rule || {};\n\n return (\n
    \n
    \n {entityType === \"product\" && (\n \n )}\n {entityType === \"category\" && (\n \n )}\n {entityType === \"brand\" && (\n \n )}\n \n {elementGroups &&\n elementGroups.map((_, index) => (\n
    \n
    \n {Boolean(index) && (\n this.handleDeleteRule(index)}\n src={deleteIcon}\n alt=\"delete\"\n />\n )}\n
    \n \n \n _this.handleDiscountChange(type, [\"elementGroups\", index])\n }\n readOnly={hasOfferStarted}\n />\n \n {elementGroups[index].total &&\n values.rule.elementGroups[index].total.t ===\n `PERCENT_OFF` && (\n \n )}\n
    \n ))}\n {method === \"add\" && (\n \n +\n \n )}\n
    \n
    \n {itemsLength ? (\n \n ) : null}\n
    \n
    \n );\n }\n}\n\nexport default BMINXATP;\n","import React, { Component } from \"react\";\nimport {\n Input,\n Radio,\n Select,\n ProductSearch,\n BrandSearch,\n CategorySearch,\n} from \"../../../../components/Form\";\nimport ItemTable from \"./ItemTable\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nclass BANYGYD extends Component {\n constructor(props) {\n super(props);\n this.validationHandler = this.validationHandler.bind(this);\n this.submitHandler = this.submitHandler.bind(this);\n }\n\n validationHandler(parent) {\n let formData = JSON.parse(JSON.stringify(parent.state.values));\n let validations = JSON.parse(JSON.stringify(parent.state.validations));\n const comboDiscount = formData.itemDiscountType === \"COMBO_DISCOUNT\";\n const entityType = \"product\";\n if (comboDiscount && validations[entityType]) {\n validations[entityType].forEach((validation) => {\n delete validation.t;\n delete validation.v;\n });\n } else {\n if (validations.rule) {\n delete validations.rule.total;\n }\n }\n parent.setState({\n validations,\n });\n }\n\n submitHandler(formData, buyKey) {\n let data = Object.assign({}, formData);\n const comboDiscount = formData.itemDiscountType === \"COMBO_DISCOUNT\";\n const entityType = formData.entityType.toLowerCase();\n data.offerType = data.type;\n let get = {};\n if (!comboDiscount) {\n delete data.rule.total;\n }\n let rule = {};\n rule.limit = data.rule ? Number(data.rule.limit) : null;\n if (data.rule.quantity) {\n rule.quantity = Number(data.rule.quantity);\n }\n if (comboDiscount) {\n rule.total = data.rule.total;\n rule.total.v = Number(rule.total.v);\n }\n rule.entity = {\n type: data.entityType === \"PRODUCT\" ? \"VARIANT\" : formData.entityType,\n id:\n data.entityType === \"PRODUCT\"\n ? null\n : data[entityType] && data[entityType].id,\n };\n let getItems = data.product || [];\n getItems.forEach((item) => {\n let res = { q: Number(item.q) };\n if (!comboDiscount) {\n res.t = item.t;\n res.v = Number(item.v);\n }\n get[item.id] = res;\n });\n rule.get = get;\n data.rule = rule;\n // data[entityType] = data[`${buyKey}${entityType}`].map(item => item.id)\n if (entityType === \"product\") {\n rule.variants = (data[`${buyKey}${entityType}`] || [])\n .map((pdt) => pdt.id)\n .filter(Boolean);\n }\n delete data.product;\n delete data.category;\n delete data.brand;\n delete data[`${buyKey}product`];\n delete data[`${buyKey}category`];\n delete data[`${buyKey}brand`];\n return data;\n }\n\n render() {\n let {\n entityType,\n discountTypes,\n itemDiscountTypes,\n _this,\n buyKey,\n hasOfferStarted,\n } = this.props;\n const { values } = _this.state;\n const { itemDiscountType } = _this.state.values;\n entityType = this.props.entityTypeMap[entityType];\n const comboDiscount = itemDiscountType === \"COMBO_DISCOUNT\";\n const buyItems = values[`buy${entityType}`];\n const buyItemsLength = buyItems ? buyItems.length : 0;\n const items = values.product;\n const itemsLength = items ? items.length : 0;\n return (\n
    \n
    \n \n \n {comboDiscount && (\n \n \n \n \n )}\n
    \n

    {`Buy`}

    \n {entityType === \"product\" && (\n \n )}\n {entityType === \"brand\" && (\n \n )}\n {entityType === \"category\" && (\n response.data.category}\n label={getMessage(`offer.${entityType}`)}\n placeholder={getMessage(`offer.${entityType}.placeholder`)}\n {..._this.generateStateMappers({\n stateKeys: [\"category\"],\n loseEmphasisOnFill: true,\n })}\n readOnly={hasOfferStarted}\n />\n )}\n
    \n {buyItemsLength ? (\n \n ) : null}\n
    \n

    Get

    \n {\n \n }\n
    \n {itemsLength ? (\n \n ) : null}\n
    \n
    \n );\n }\n}\n\nexport default BANYGYD;\n","import React, { Component } from \"react\";\nimport {\n Radio,\n Select,\n Input,\n ProductSearch,\n} from \"../../../../components/Form\";\n\nimport { getMessage } from \"../../../../lib/translator\";\nimport ItemTable from \"./ItemTable\";\n\nclass BXATP extends Component {\n constructor(props) {\n super(props);\n this.submitHandler = this.submitHandler.bind(this);\n this.validationHandler = this.validationHandler.bind(this);\n this.selectOnEnter = this.selectOnEnter.bind(this);\n }\n\n selectOnEnter(e) {\n e && e.preventDefault();\n }\n validationHandler(parent) {\n let validations = JSON.parse(JSON.stringify(parent.state.validations));\n let formData = JSON.parse(JSON.stringify(parent.state.values));\n const comboDiscount = formData.itemDiscountType === \"COMBO_DISCOUNT\";\n const entityType = formData.entityType.toLowerCase();\n if (comboDiscount) {\n (validations[entityType] || []).forEach((validation) => {\n delete validation.t;\n delete validation.v;\n });\n } else {\n delete validations.rule;\n }\n parent.setState({\n validations,\n });\n }\n\n submitHandler(data) {\n let formData = Object.assign({}, data);\n const comboDiscount = formData.itemDiscountType === \"COMBO_DISCOUNT\";\n const entityType = formData.entityType.toLowerCase();\n let buy = {};\n data.offerType = data.type;\n formData[entityType].forEach((item) => {\n let res = { q: Number(item.q) };\n if (!comboDiscount) {\n res.t = item.t;\n res.v = Number(item.v);\n }\n buy[item.id] = res;\n });\n let total = comboDiscount && formData.rule.total;\n formData.rule = {\n buy: buy,\n // entity: {\n // type: formData.entityType === 'PRODUCT' ? 'VARIANT' : formData.entityType,\n // id: formData.entityType === 'PRODUCT' ? null : 0\n // },\n limit: formData.rule ? Number(formData.rule.limit) : null,\n };\n if (comboDiscount) {\n total.v = Number(total.v);\n formData.rule.total = total;\n }\n delete formData.product;\n delete formData.brand;\n delete formData.category;\n return formData;\n }\n render() {\n let {\n entityType,\n discountTypes,\n itemDiscountTypes,\n _this,\n hasOfferStarted,\n } = this.props;\n const { values } = _this.state;\n const { itemDiscountType } = _this.state.values;\n entityType = this.props.entityTypeMap[entityType];\n const comboDiscount = itemDiscountType === \"COMBO_DISCOUNT\";\n const items = values[entityType];\n const itemsLength = items ? items.length : 0;\n return (\n
    \n
    \n \n {comboDiscount && (\n \n \n \n \n )}\n
    \n {entityType === \"product\" && (\n \n )}\n
    \n {itemsLength ? (\n \n ) : null}\n
    \n
    \n );\n }\n}\n\nexport default BXATP;\n","import React, { Component } from \"react\";\nimport {\n Input,\n Radio,\n Select,\n ProductSearch,\n} from \"../../../../components/Form\";\nimport ItemTable from \"./ItemTable\";\n\nimport { getMessage } from \"../../../../lib/translator\";\n\nclass BXGYD extends Component {\n constructor(props) {\n super(props);\n this.validationHandler = this.validationHandler.bind(this);\n this.submitHandler = this.submitHandler.bind(this);\n }\n\n validationHandler(parent) {\n let formData = JSON.parse(JSON.stringify(parent.state.values));\n let validations = JSON.parse(JSON.stringify(parent.state.validations));\n const comboDiscount = formData.itemDiscountType === \"COMBO_DISCOUNT\";\n const entityType = formData.entityType.toLowerCase();\n if (comboDiscount) {\n (validations[entityType] || []).forEach((validation) => {\n delete validation.t;\n delete validation.v;\n });\n } else {\n validations.rule && delete validations.rule;\n }\n parent.setState({\n validations,\n });\n }\n\n submitHandler(formData, buyKey) {\n let data = Object.assign({}, formData);\n const comboDiscount = formData.itemDiscountType === \"COMBO_DISCOUNT\";\n const entityType = formData.entityType.toLowerCase();\n data.offerType = data.type;\n let get = {};\n if (!comboDiscount) {\n data.rule && delete data.rule.total;\n }\n let rule = {};\n if (comboDiscount) {\n rule.total = data.rule.total;\n rule.total.v = Number(rule.total.v);\n }\n rule.entity = {\n type: data.entityType === \"PRODUCT\" ? \"VARIANT\" : formData.entityType,\n id: data.entityType === \"PRODUCT\" ? null : 0,\n };\n rule.limit = data.rule ? Number(data.rule.limit) : null;\n let getItems = data[entityType];\n getItems.forEach((item) => {\n let res = { q: Number(item.q) };\n if (!comboDiscount) {\n res.t = item.t;\n res.v = Number(item.v);\n }\n get[item.id] = res;\n });\n rule.get = get;\n rule.buy = {};\n data[`${buyKey}product`] &&\n data[`${buyKey}product`].forEach((item) => {\n rule.buy[item.id] = Number(item.q);\n });\n data.rule = rule;\n delete data.product;\n delete data.category;\n delete data.brand;\n delete data[`${buyKey}product`];\n delete data[`${buyKey}category`];\n delete data[`${buyKey}brand`];\n return data;\n }\n\n render() {\n let {\n entityType,\n discountTypes,\n itemDiscountTypes,\n _this,\n buyKey,\n hasOfferStarted,\n } = this.props;\n const { values } = _this.state;\n const { itemDiscountType } = _this.state.values;\n entityType = this.props.entityTypeMap[entityType];\n const comboDiscount = itemDiscountType === \"COMBO_DISCOUNT\";\n const buyItems = values[`buy${entityType}`];\n const buyItemsLength = buyItems ? buyItems.length : 0;\n const items = values[entityType];\n const itemsLength = items ? items.length : 0;\n return (\n
    \n
    \n \n {comboDiscount && (\n \n \n \n \n )}\n
    \n

    {`Buy`}

    \n {/* {buyItemsLength === 0 && entityType === 'product' && generateProducts(response.data.product)}\n onChange={_this.addItemBuy}\n />} */}\n {buyItemsLength === 0 && entityType === \"product\" && (\n \n )}\n
    \n {buyItemsLength ? (\n \n ) : null}\n
    \n

    Get

    \n {/* {entityType === 'product' && generateProducts(response.data.product)}\n onChange={_this.addItem}\n />} */}\n {entityType === \"product\" && (\n \n )}\n
    \n {itemsLength ? (\n \n ) : null}\n
    \n
    \n );\n }\n}\n\nexport default BXGYD;\n","import React, { Component } from \"react\";\nimport {\n Input,\n Radio,\n Select,\n ProductSearch,\n CategorySearch,\n BrandSearch,\n} from \"../../../../components/Form\";\n\nimport { getMessage } from \"../../../../lib/translator\";\nimport ItemTable from \"./ItemTable\";\n\nclass SF extends Component {\n constructor(props) {\n super(props);\n this.submitHandler = this.submitHandler.bind(this);\n this.validationHandler = this.validationHandler.bind(this);\n }\n\n validationHandler(parent) {\n const validations = JSON.parse(JSON.stringify(parent.state.validations));\n const formData = JSON.parse(JSON.stringify(parent.state.values));\n const comboDiscount = formData.itemDiscountType === \"COMBO_DISCOUNT\";\n const entityType = formData.entityType.toLowerCase();\n if (comboDiscount) {\n entityType === \"product\" &&\n (validations[entityType] || []).forEach((validation) => {\n delete validation.t;\n delete validation.v;\n });\n }\n if (!comboDiscount) {\n validations.rule && delete validations.rule;\n }\n switch (entityType) {\n case \"product\":\n delete validations.category;\n delete validations.brand;\n break;\n case \"category\":\n delete validations.product;\n delete validations.brand;\n break;\n case \"brand\":\n delete validations.product;\n delete validations.category;\n break;\n default:\n break;\n }\n parent.setState({\n validations: validations,\n });\n }\n\n submitHandler(formData) {\n const data = Object.assign({}, formData);\n const comboDiscount = formData.itemDiscountType === \"COMBO_DISCOUNT\";\n const entityType = formData.entityType.toLowerCase();\n let rule = {};\n if (!comboDiscount) {\n data.rule && delete data.rule.total;\n } else {\n rule.total = data.rule.total;\n rule.total.v = Number(rule.total.v);\n }\n delete data.total;\n rule.cartPrice = Number(data.cartPrice);\n delete data.cartPrice;\n rule.limit = data.rule ? Number(data.rule.limit) : null;\n rule.entity = {\n type: data.entityType === \"PRODUCT\" ? \"VARIANT\" : data.entityType,\n id: data.entityType === \"PRODUCT\" ? null : data[entityType].id, // TODO: change this for brands and category\n };\n let get = {};\n data.entityType === \"PRODUCT\" &&\n data[entityType].forEach((item) => {\n get[item.id] = {\n q: Number(item.q),\n };\n if (!comboDiscount) {\n get[item.id].t = item.t;\n get[item.id].v = (item.v && Number(item.v)) || 0;\n }\n });\n rule.get = get;\n data.rule = rule;\n delete data.product;\n delete data.category;\n delete data.brand;\n return data;\n }\n\n render() {\n let {\n entityType,\n discountTypes,\n itemDiscountTypes,\n _this,\n hasOfferStarted,\n } = this.props;\n const { values } = _this.state;\n const { itemDiscountType } = _this.state.values;\n entityType = this.props.entityTypeMap[entityType];\n const comboDiscount = itemDiscountType === \"COMBO_DISCOUNT\";\n const items = values[entityType];\n const itemsLength = items ? items.length : 0;\n return (\n
    \n
    \n {entityType === \"product\" && (\n \n )}\n {entityType === \"category\" && (\n \n )}\n {entityType === \"brand\" && (\n \n )}\n \n {comboDiscount && (\n \n \n \n \n )}\n
    \n {entityType === \"product\" && (\n \n

    {getMessage(\"offer.get\")}

    \n

    smoe

    \n {/* {entityType === 'product' && generateProducts(response.data.product)}\n onChange={_this.addItem}\n />} */}\n \n
    \n )}\n
    \n {itemsLength ? (\n \n ) : null}\n
    \n
    \n );\n }\n}\n\nexport default SF;\n","import React, { Component, Fragment } from \"react\";\nimport { Input, Select, MultiSelect } from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport API from \"../../../../lib/api\";\nimport { getDisplaySlot, isAllRulesValid } from \"../../../../lib/commonlyused\";\nimport { isExtensionEnabled } from \"../../../../lib/auth\";\n\nimport deleteIcon from \"./delete.svg\";\n\nclass SFXGSD extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n slotOptions: [],\n };\n this.validationHandler = this.validationHandler.bind(this);\n this.submitHandler = this.submitHandler.bind(this);\n this.handleAddRule = this.handleAddRule.bind(this);\n this.handleDeleteRule = this.handleDeleteRule.bind(this);\n this.initData = this.initData.bind(this);\n }\n\n initData() {\n let { method, _this, onUpdateValues } = this.props;\n if (method === \"add\") {\n let { values } = _this && _this.state;\n if (!values.rule) {\n onUpdateValues({ ...values, rule: [{ total: {} }] });\n }\n }\n }\n\n validationHandler(parent) {\n let validations = JSON.parse(JSON.stringify(parent.state.validations));\n parent.setState({\n validations,\n });\n }\n\n submitHandler(formData) {\n let data = Object.assign({}, formData);\n\n delete data.ruleDetail;\n delete data.product;\n delete data.category;\n delete data.brand;\n delete data.total;\n delete data.entity;\n return data;\n }\n\n handleAddRule(e) {\n e && e.preventDefault();\n let { _this } = this.props;\n let { values } = _this.state;\n let { rule } = values || {};\n\n if (!rule) {\n rule = [{ total: {} }];\n }\n\n rule = [...rule, { total: {} }];\n\n _this.setState({ pressedSubmitWithCurrentData: false });\n\n this.props.onUpdateValues({ ...values, rule });\n }\n\n handleDeleteRule(index) {\n let { _this } = this.props;\n let { values } = _this.state;\n let { rule } = values || {};\n\n if (rule) {\n rule = rule.filter((_, idx) => idx !== index);\n }\n\n this.props.onUpdateValues({ ...values, rule });\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.type !== this.props.type) {\n this.initData();\n }\n }\n\n componentDidMount() {\n this.initData();\n if (isExtensionEnabled(\"DeliverySlots\")) {\n this.api = new API({ url: `/order-service/slot` });\n this.api\n .get({ paginated: \"false\" })\n .then((response) => {\n let slots = response.data.slot;\n let slotOptions = slots.map((slot) => {\n let ob = {};\n ob.text = getDisplaySlot(slot);\n ob.value = slot.id;\n return ob;\n });\n this.setState({\n slotOptions,\n });\n })\n .catch((err) => {\n console.error(err);\n if (err.code === 401) {\n throw err;\n }\n this.error = err;\n });\n }\n }\n\n render() {\n let { discountTypes, _this, hasOfferStarted, type, method } = this.props;\n const { values } = _this.state;\n const { rule } = values || {};\n\n return (\n \n {rule\n ? rule.map((_, index) => (\n \n
    \n {Boolean(index) && (\n this.handleDeleteRule(index)}\n src={deleteIcon}\n alt=\"delete\"\n />\n )}\n
    \n
    \n \n \n _this.handleDiscountChange(type, [index])\n }\n disabled={hasOfferStarted}\n />\n \n {values &&\n values.rule &&\n values.rule[index] &&\n values.rule[index].total &&\n values.rule[index].total.t === `PERCENT_OFF` && (\n \n )}\n
    \n {isExtensionEnabled(\"DeliverySlots\") && type === \"SFXGCD\" && (\n
    \n \n
    \n )}\n \n ))\n : null}\n {method === \"add\" && type === \"SFXGCD\" && (\n \n +\n \n )}\n
    \n );\n }\n}\n\nexport default SFXGSD;\n","import React, { Component } from \"react\";\nimport { Input, Select, ProductSearch } from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nclass PWP extends Component {\n constructor(props) {\n super(props);\n this.validationHandler = this.validationHandler.bind(this);\n this.submitHandler = this.submitHandler.bind(this);\n }\n validationHandler(parent) {\n let validations = JSON.parse(JSON.stringify(parent.state.validations));\n parent.setState({\n validations,\n });\n }\n\n submitHandler(formData) {\n let data = Object.assign({}, formData);\n let total = data.rule.total;\n total.variantId = total.variantId && total.variantId.id;\n let newRule = {\n PWPTagId:\n formData.pwpTagId ||\n (formData.rule && (formData.rule.PWPTagId || formData.rule.PWPTagID)),\n cartPrice: data.rule.cartPrice,\n total: total,\n limit: Number(data.rule.limit),\n };\n data.rule = newRule;\n delete data.pwpTagId;\n delete data.ruleDetail;\n delete data.product;\n delete data.category;\n delete data.brand;\n delete data.total;\n delete data.entity;\n return data;\n }\n\n render() {\n let { discountTypes, _this, hasOfferStarted } = this.props;\n const { values } = _this.state;\n let maxDiscount =\n _this.getState([\"rule\", \"total\", \"t\"]) === `PERCENT_OFF`\n ? 100\n : _this.getState([\"rule\", \"cartPrice\"]);\n return (\n
    \n
    \n \n \n \n \n
    \n
    \n );\n }\n}\n\nexport default PWP;\n","import React, { Component } from \"react\";\nimport {\n Input,\n Radio,\n Select,\n Checkbox,\n ProductSearch,\n BrandSearch,\n CategorySearch,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport ItemTable from \"./ItemTable\";\nimport { isAllRulesValid } from \"../../../../lib/commonlyused\";\nimport deleteIcon from \"./delete.svg\";\n\nclass BMIN extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n slotOptions: [],\n };\n this.validationHandler = this.validationHandler.bind(this);\n this.submitHandler = this.submitHandler.bind(this);\n this.initData = this.initData.bind(this);\n this.handleAddRule = this.handleAddRule.bind(this);\n this.handleDeleteRule = this.handleDeleteRule.bind(this);\n }\n\n initData() {\n let { method, _this, onUpdateValues } = this.props;\n if (method === \"add\") {\n let { values } = _this && _this.state;\n if (!(values.rule && values.rule.elementGroups)) {\n onUpdateValues({\n ...values,\n rule: { ...values.rule, elementGroups: [{ total: {} }] },\n });\n }\n }\n }\n\n validationHandler(parent) {\n const validations = JSON.parse(JSON.stringify(parent.state.validations));\n parent.setState({\n validations,\n });\n }\n\n submitHandler(formData) {\n let data = JSON.parse(JSON.stringify(formData));\n const comboDiscount = data.rule.itemDiscountType === \"COMBO_DISCOUNT\";\n let nonEntity = false;\n if (!data.includes) {\n nonEntity = true;\n }\n const entityType = data.entityType.toLowerCase();\n const entityIds = Array.isArray(data[entityType])\n ? data[entityType].map((item) => item.id)\n : [data[entityType].id];\n const newRule = {\n elementGroups: data.rule.elementGroups.map((eg) => ({\n ...eg,\n maxDiscount: eg.maxDiscount !== \"\" ? eg.maxDiscount : undefined,\n })),\n entity: {\n type: data.entityType === \"PRODUCT\" ? \"VARIANT\" : data.entityType,\n },\n entityIds: entityIds,\n };\n\n if (nonEntity) {\n newRule[\"non-entity\"] = JSON.parse(JSON.stringify(newRule.entity));\n delete newRule.entity;\n }\n if (comboDiscount) {\n newRule.isCombo = true;\n }\n data.rule = newRule;\n delete data.includes;\n delete data.ruleDetail;\n delete data.product;\n delete data.category;\n delete data.brand;\n delete data.total;\n delete data.entity;\n return data;\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.type !== this.props.type) {\n this.initData();\n }\n }\n\n componentDidMount() {\n this.initData();\n }\n\n handleAddRule(e) {\n e && e.preventDefault();\n let { _this } = this.props;\n let { values } = _this.state;\n let { rule } = values || {};\n let { elementGroups } = rule || {};\n\n if (!elementGroups) {\n rule = { ...rule, elementGroups: [{ total: {} }] };\n }\n\n rule = { ...rule, elementGroups: [...rule.elementGroups, { total: {} }] };\n\n _this.setState({ pressedSubmitWithCurrentData: false });\n\n this.props.onUpdateValues({ ...values, rule });\n }\n\n handleDeleteRule(index) {\n let { _this } = this.props;\n let { values } = _this.state;\n let { rule } = values || {};\n\n if (rule && rule.elementGroups) {\n let elementGroups = rule.elementGroups.filter((_, idx) => idx !== index);\n rule = { ...rule, elementGroups };\n }\n\n this.props.onUpdateValues({ ...values, rule });\n }\n\n render() {\n let {\n discountTypes,\n itemDiscountTypes,\n _this,\n hasOfferStarted,\n type,\n method,\n } = this.props;\n const { values } = _this.state;\n const entityTypeLowerCase = values.entityType.toLowerCase();\n const includes = values.includes;\n let entityText = \"\";\n if (entityTypeLowerCase === \"product\") {\n entityText = \"Products\";\n } else if (entityTypeLowerCase === \"category\") {\n entityText = \"Categories\";\n } else {\n entityText = \"Brands\";\n }\n\n const items = values[entityTypeLowerCase];\n const itemsLength = items ? items.length : 0;\n\n const { rule } = values || {};\n\n const { elementGroups } = rule || {};\n\n return (\n
    \n
    \n {entityTypeLowerCase === \"product\" && (\n \n )}\n {entityTypeLowerCase === \"brand\" && (\n \n )}\n {entityTypeLowerCase === \"category\" && (\n response.data.category}\n label={getMessage(`offer.${entityTypeLowerCase}`)}\n placeholder={getMessage(`offer.categories.placeholder`)}\n {..._this.generateStateMappers({\n stateKeys: [\"category\"],\n loseEmphasisOnFill: true,\n })}\n multiple\n readOnly={hasOfferStarted}\n />\n )}\n \n {elementGroups\n ? elementGroups.map((_, index) => (\n
    \n
    \n {Boolean(index) && (\n this.handleDeleteRule(index)}\n src={deleteIcon}\n alt=\"delete\"\n />\n )}\n
    \n \n \n _this.handleDiscountChange(type, [\"elementGroups\", index])\n }\n disabled={hasOfferStarted}\n />\n \n {values &&\n values.rule &&\n values.rule.elementGroups &&\n values.rule.elementGroups[index] &&\n values.rule.elementGroups[index].total &&\n values.rule.elementGroups[index].total.t ===\n `PERCENT_OFF` && (\n \n )}\n
    \n ))\n : null}\n {method === \"add\" && type === \"BMIN\" && (\n \n +\n \n )}\n
    \n \n {itemsLength ? (\n
    \n

    \n {includes\n ? `${entityText} ${getMessage(\"offer.includeText\")} :`\n : `${entityText} ${getMessage(\"offer.excludeText\")} :`}\n

    \n \n
    \n ) : null}\n
    \n );\n }\n}\n\nexport default BMIN;\n","import React, { Component } from \"react\";\nimport { Input, Select, Searchable } from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport Loader from \"../../../../components/Loader\";\n\nclass BFXATP extends Component {\n constructor(props) {\n super(props);\n this.state = {\n options: [],\n selectedVal: [],\n };\n this.validationHandler = this.validationHandler.bind(this);\n this.submitHandler = this.submitHandler.bind(this);\n }\n validationHandler(parent) {\n let validations = JSON.parse(JSON.stringify(parent.state.validations));\n parent.setState({\n validations,\n });\n }\n\n submitHandler(formData) {\n let data = Object.assign({}, formData);\n let tagIds = data.tagIds && data.tagIds.map((tag) => tag.id);\n const newRule = {\n tagIds: tagIds,\n total: data.rule.total,\n };\n data.rule = newRule;\n delete data.ruleDetail;\n delete data.product;\n delete data.category;\n delete data.brand;\n delete data.total;\n delete data.entity;\n return data;\n }\n\n render() {\n let { discountTypes, _this, hasOfferStarted, isNewOffer } = this.props;\n const { values, tagsLoaded } = _this.state;\n return (\n
    \n
    \n {isNewOffer || (!isNewOffer && tagsLoaded) ? (\n {\n let tags = response.data.tag || [];\n tags = (tags || []).map((tag) => {\n tag.name = `${tag.name}`;\n tag.id = `${tag.id}`;\n return tag;\n });\n return tags;\n }}\n multiple\n {..._this.generateStateMappers({\n stateKeys: [\"tags\"],\n loseEmphasisOnFill: true,\n })}\n readOnly={hasOfferStarted}\n />\n ) : (\n \n )}\n \n \n
    \n
    \n );\n }\n}\n\nexport default BFXATP;\n","import React, { Component } from \"react\";\nimport {\n Input,\n Radio,\n Select,\n ProductSearch,\n BrandSearch,\n CategorySearch,\n Checkbox,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { isAllRulesValid } from \"../../../../lib/commonlyused\";\nimport ItemTable from \"./ItemTable\";\nimport deleteIcon from \"./delete.svg\";\n\nclass BMINXGFG extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n slotOptions: [],\n };\n this.validationHandler = this.validationHandler.bind(this);\n this.submitHandler = this.submitHandler.bind(this);\n this.handleAddRule = this.handleAddRule.bind(this);\n this.handleDeleteRule = this.handleDeleteRule.bind(this);\n }\n\n initData() {\n let { method, _this, onUpdateValues } = this.props;\n if (method === \"add\") {\n let { values } = _this && _this.state;\n if (!(values.rule && values.rule.elementGroups)) {\n onUpdateValues({\n ...values,\n rule: { ...values.rule, elementGroups: [{ total: {} }] },\n });\n }\n }\n }\n\n validationHandler(parent) {\n let formData = JSON.parse(JSON.stringify(parent.state.values));\n const validations = JSON.parse(JSON.stringify(parent.state.validations));\n const comboDiscount = formData.itemDiscountType === \"COMBO_DISCOUNT\";\n if (comboDiscount) {\n ((validations.rule && validations.rule.elementGroups) || []).forEach(\n (group) => {\n group.product &&\n group.product.forEach((pdt) => {\n delete pdt.t;\n delete pdt.v;\n });\n }\n );\n } else {\n ((validations.rule && validations.rule.elementGroups) || []).forEach(\n (group) => {\n group.total && delete group.total;\n }\n );\n }\n parent.setState({\n validations,\n });\n }\n\n submitHandler(formData, buyKey) {\n let data = Object.assign({}, formData);\n const comboDiscount = formData.itemDiscountType === \"COMBO_DISCOUNT\";\n let nonEntity = false;\n if (!data.includes) {\n nonEntity = true;\n }\n if (!comboDiscount) {\n data.rule && delete data.rule.total;\n }\n\n const entityType = data.entityType.toLowerCase();\n // let getObject = {}\n let entityIds = [];\n if (entityType === \"product\") {\n Array.isArray(data[`${buyKey}product`]) &&\n data[`${buyKey}product`].map((item) => {\n entityIds.push(item.id);\n return null;\n });\n } else {\n Array.isArray(data[entityType]) &&\n data[entityType].map((item) => {\n entityIds.push(item.id);\n return null;\n });\n }\n\n // Array.isArray(data['product']) && data['product'].map(item => {\n // getObject[item.id] = {q: Number(item.q)}\n // if (!comboDiscount) {\n // getObject[item.id].t = item.t\n // getObject[item.id].v = Number(item.v)\n // }\n // return null\n // })\n\n const newRule = {\n minAmount: data.rule && data.rule.minAmount,\n entityIds: entityIds.length > 0 ? entityIds : undefined,\n entity:\n entityIds.length > 0\n ? {\n type: data.entityType === \"PRODUCT\" ? \"VARIANT\" : data.entityType,\n }\n : undefined,\n // get: {...getObject}\n elementGroups:\n data.rule.elementGroups &&\n data.rule.elementGroups.map((group) => {\n let getObject = {};\n group.product &&\n group.product.map((item) => {\n getObject[item.id] = { q: Number(item.q) };\n if (!comboDiscount) {\n getObject[item.id].t = item.t;\n getObject[item.id].v = Number(item.v);\n }\n return null;\n });\n group.get = getObject;\n delete group.product;\n !comboDiscount && delete group.total;\n return group;\n }),\n };\n // if (comboDiscount) {\n // newRule.total = data.rule.total\n // }\n if (nonEntity && entityIds.length > 0) {\n newRule[\"non-entity\"] = JSON.parse(JSON.stringify(newRule.entity));\n delete newRule.entity;\n }\n\n data.rule = newRule;\n delete data.itemDiscountType;\n delete data.pwpTagId;\n delete data.includes;\n delete data.ruleDetail;\n delete data.product;\n delete data.category;\n delete data.brand;\n delete data.entity;\n return data;\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.type !== this.props.type) {\n this.initData();\n }\n }\n\n componentDidMount() {\n this.initData();\n }\n\n handleAddRule(e) {\n e && e.preventDefault();\n let { _this } = this.props;\n let { values } = _this.state;\n let { rule } = values || {};\n let { elementGroups } = rule || {};\n\n if (!elementGroups) {\n rule = { ...rule, elementGroups: [{ total: {} }] };\n }\n\n rule = { ...rule, elementGroups: [...rule.elementGroups, { total: {} }] };\n\n _this.setState({ pressedSubmitWithCurrentData: false });\n\n this.props.onUpdateValues({ ...values, rule });\n }\n\n handleDeleteRule(index) {\n let { _this } = this.props;\n let { values } = _this.state;\n let validations = JSON.parse(JSON.stringify(_this.state.validations));\n let validationsRule = validations.rule;\n let { rule } = values || {};\n\n if (rule && rule.elementGroups) {\n let elementGroups = rule.elementGroups.filter((_, idx) => idx !== index);\n rule = { ...rule, elementGroups };\n }\n\n if (validationsRule && validationsRule.elementGroups) {\n let elementGroups = validationsRule.elementGroups.filter(\n (_, idx) => idx !== index\n );\n validationsRule = { ...validationsRule, elementGroups };\n }\n\n this.props.onUpdateValues({ ...values, rule });\n this.props.onUpdateValidations({ ...validations, validationsRule });\n }\n\n render() {\n let {\n discountTypes,\n itemDiscountTypes,\n _this,\n hasOfferStarted,\n buyKey,\n type,\n method,\n } = this.props;\n const { values } = _this.state;\n const { itemDiscountType } = _this.state.values;\n const includes = values.includes;\n const entityType = values.entityType.toLowerCase();\n const comboDiscount = itemDiscountType === \"COMBO_DISCOUNT\";\n const buyItems = values[`buy${entityType}`];\n const buyItemsLength = buyItems ? buyItems.length : 0;\n const items = values[entityType];\n const itemsLength = items ? items.length : 0;\n let entityText = \"\";\n if (entityType === \"product\") {\n entityText = \"Products\";\n } else if (entityType === \"category\") {\n entityText = \"Categories\";\n } else {\n entityText = \"Brands\";\n }\n\n const { rule } = values || {};\n const { elementGroups } = rule || {};\n\n return (\n
    \n
    \n \n
    \n

    {getMessage(\"offer.buy\")}

    \n {entityType === \"product\" && (\n \n )}\n {entityType === \"brand\" && (\n \n )}\n {entityType === \"category\" && (\n response.data.category}\n label={\n includes\n ? `${entityText} ${getMessage(\"offer.includeText\")} :`\n : `${entityText} ${getMessage(\"offer.excludeText\")} :`\n }\n placeholder={getMessage(`offer.categories.placeholder`)}\n {..._this.generateStateMappers({\n stateKeys: [\"category\"],\n loseEmphasisOnFill: true,\n })}\n multiple\n readOnly={hasOfferStarted}\n />\n )}\n \n {entityType === \"brand\" && itemsLength ? (\n
    \n \n
    \n ) : null}\n {entityType === \"category\" && itemsLength ? (\n
    \n \n
    \n ) : null}\n {buyItemsLength ? (\n
    \n \n
    \n ) : null}\n
    \n {elementGroups\n ? elementGroups.map((_, index) => {\n const getProductItems =\n (values &&\n values.rule &&\n values.rule.elementGroups &&\n values.rule.elementGroups[index] &&\n values.rule.elementGroups[index].product) ||\n [];\n return (\n
    \n
    \n
    \n {Boolean(index) && (\n this.handleDeleteRule(index)}\n src={deleteIcon}\n alt=\"delete\"\n />\n )}\n
    \n \n {comboDiscount && (\n \n \n _this.handleDiscountChange(type, [\n \"elementGroups\",\n index,\n ])\n }\n readOnly={hasOfferStarted}\n />\n \n {/* {\n (rule && rule.elementGroups && rule.elementGroups[index] && rule.elementGroups[index].total && rule.elementGroups[index].total.t === `PERCENT_OFF`) &&\n \n } */}\n \n )}\n
    \n

    {getMessage(\"offer.get\")}

    \n \n _this.addItem(item, [\"elementGroups\", index])\n }\n readOnly={hasOfferStarted}\n />\n
    \n {getProductItems.length > 0 ? (\n \n ) : null}\n
    \n
    \n );\n })\n : null}\n {method === \"add\" && type === \"BMINXGFG\" && (\n \n +\n \n )}\n
    \n
    \n );\n }\n}\n\nexport default BMINXGFG;\n","import React, { Component } from \"react\";\nimport { Input, Select, BrandSearch } from \"../../../../components/Form\";\nimport ItemTable from \"./ItemTable\";\n\nimport { getMessage } from \"../../../../lib/translator\";\n\nclass SFBGSD extends Component {\n constructor(props) {\n super(props);\n this.submitHandler = this.submitHandler.bind(this);\n this.validationHandler = this.validationHandler.bind(this);\n }\n\n validationHandler(parent) {\n let validations = JSON.parse(JSON.stringify(parent.state.validations));\n parent.setState({\n validations,\n });\n }\n\n submitHandler(formData) {\n let data = JSON.parse(JSON.stringify(formData));\n const entityType = data.entityType.toLowerCase();\n let rule = data.rule || {};\n if (rule && rule.total) {\n rule.total.v = Number(rule.total.v);\n }\n rule[\"entity\"] = {\n type: data.entityType === \"PRODUCT\" ? \"VARIANT\" : data.entityType,\n id: data.entityType === \"PRODUCT\" ? null : data[entityType].id, // TODO: change this for brands and category\n };\n rule.limit = Number(rule.limit);\n\n data.rule = rule;\n // data.entityId = 1\n data.offerType = data.type;\n delete data.pwpTagId;\n delete data.quantity;\n delete data.minQuantity;\n delete data.product;\n delete data.category;\n delete data.brand;\n delete data.entity;\n delete data.includes;\n delete data.itemDiscountType;\n return data;\n }\n render() {\n let { entityType, discountTypes, _this, type, hasOfferStarted } =\n this.props;\n const { values } = _this.state;\n entityType = this.props.entityTypeMap[entityType];\n const items = values[entityType];\n const itemsLength = items ? items.length : 0;\n return (\n
    \n
    \n {entityType === \"brand\" && (\n \n )}\n \n \n
    \n
    \n {itemsLength ? (\n \n ) : null}\n
    \n
    \n );\n }\n}\n\nexport default SFBGSD;\n","import React, { Component } from \"react\";\nimport {\n ProductSearch,\n Input,\n Select,\n BrandSearch,\n CategorySearch,\n} from \"../../../../components/Form\";\nimport ItemTable from \"./ItemTable\";\n\nimport { getMessage } from \"../../../../lib/translator\";\n\nclass SFEGSD extends Component {\n constructor(props) {\n super(props);\n this.submitHandler = this.submitHandler.bind(this);\n this.validationHandler = this.validationHandler.bind(this);\n }\n\n validationHandler(parent) {\n let validations = JSON.parse(JSON.stringify(parent.state.validations));\n parent.setState({\n validations,\n });\n }\n\n submitHandler(formData) {\n let data = JSON.parse(JSON.stringify(formData));\n const entityType = data.entityType.toLowerCase();\n let rule = data.rule || {};\n if (rule && rule.total) {\n rule.total.v = Number(rule.total.v);\n }\n if (rule.minAmount) {\n rule.minAmount = Number(rule.minAmount);\n }\n if (rule.minQuantity) {\n rule.minQuantity = Number(rule.minQuantity);\n delete rule.minQuantity;\n }\n rule[\"entity\"] = {\n type: data.entityType === \"PRODUCT\" ? \"VARIANT\" : data.entityType,\n id: data.entityType === \"PRODUCT\" ? null : data[entityType].id, // TODO: change this for brands and category\n };\n rule.limit = Number(rule.limit);\n\n if (entityType === \"product\") {\n rule.variants = data.product.map((pdt) => pdt.id).filter(Boolean);\n }\n\n // these should be enhanced later as it is made only for SFEGSD\n\n if (entityType === \"category\" && data?.type === \"SFEGSD\") {\n rule.variants = data.category.map((pdt) => pdt.id).filter(Boolean);\n }\n if (entityType === \"brand\" && data?.type === \"SFEGSD\") {\n rule.variants = data.brand.map((pdt) => pdt.id).filter(Boolean);\n }\n\n data.rule = rule;\n // data.entityId = 1\n data.offerType = data.type;\n delete data.pwpTagId;\n delete data.quantity;\n delete data.minQuantity;\n delete data.product;\n delete data.category;\n delete data.brand;\n delete data.entity;\n delete data.includes;\n delete data.itemDiscountType;\n return data;\n }\n render() {\n let { entityType, discountTypes, _this, type, hasOfferStarted } =\n this.props;\n const { values } = _this.state;\n const { itemDiscountType } = _this.state.values;\n entityType = this.props.entityTypeMap[entityType];\n const comboDiscount = itemDiscountType === \"COMBO_DISCOUNT\";\n const items = values[entityType];\n const itemsLength = items ? items.length : 0;\n return (\n
    \n
    \n {entityType === \"product\" && (\n \n )}\n {entityType === \"category\" && (\n _this.addItem(item, undefined, entityType)}\n />\n )}\n {entityType === \"brand\" && (\n _this.addItem(item, undefined, entityType)}\n />\n )}\n \n \n \n
    \n
    \n {itemsLength ? (\n \n ) : null}\n
    \n
    \n );\n }\n}\n\nexport default SFEGSD;\n","import React from \"react\";\nimport moment from \"moment\";\nimport {\n BaseForm,\n Radio,\n Select,\n SingleDatePicker,\n Input,\n Upload,\n Textarea,\n MultiSelect,\n Toggle,\n MultiTextInput,\n Checkbox,\n TimePicker,\n} from \"../../../../components/Form\";\nimport Tabs from \"../../../../components/Tabs\";\nimport SelectStoresSearch from \"../../../../components/SelectStoresSearch\";\nimport BANYATP from \"./BANYATP\";\nimport BMINXATP from \"./BMINXATP\";\nimport BANYGYD from \"./BANYGYD\";\nimport BXATP from \"./BXATP\";\nimport BXGYD from \"./BXGYD\";\nimport SF from \"./SF\";\nimport SFXGSD from \"./SFXGSD\";\nimport PWP from \"./PWP\";\nimport BMIN from \"./BMIN\";\nimport BFXATP from \"./BFXATP\";\nimport BMINXGFG from \"./BMINXGFG\";\nimport { withRouter } from \"react-router-dom\";\nimport \"./style.css\";\n\nimport { getMessage } from \"../../../../lib/translator\";\nimport API from \"../../../../lib/api\";\nimport SegmentsForm from \"../../../../components/SegmentsForm\";\nimport downloadIcon from \"../../Coupons/download.svg\";\nimport { Dialog } from \"../../../../components/Popup\";\nimport { isExtensionEnabled } from \"../../../../lib/auth\";\nimport MetaDataFormFields from \"../../../../components/MetaDataFormFields\";\nimport { getNestedValues } from \"../../../../lib/commonlyused\";\nimport checkHttpResponseCode from \"../../../../utils/isApiCallSuccessfull\";\nimport SFBGSD from \"./SFBGSD\";\nimport SFEGSD from \"./SFEGSD\";\n\nconst noop = () => {\n return null;\n};\n\nlet orderTypeOptions = [\n {\n text: getMessage(\"offer.ordertype.options.bulk\"),\n value: \"BULK\",\n },\n {\n text: getMessage(\"offer.ordertype.options.delivery\"),\n value: \"DELIVERY\",\n },\n {\n text: getMessage(\"offer.ordertype.options.pickup\"),\n value: \"PICKUP\",\n },\n {\n text: getMessage(\"offer.ordertype.options.offline\"),\n value: \"OFFLINE\",\n },\n];\n\nlet tabsList = [\n {\n text: \"Promotion\",\n },\n {\n text: \"Restrictions\",\n },\n {\n text: \"Override Content\",\n },\n];\n\nclass OfferForm extends BaseForm {\n constructor(props) {\n super(props);\n this.isNewOffer = this.props.method === \"add\";\n this.offerForm = {\n BANYATP: BANYATP,\n BMINXATP: BMINXATP,\n BANYGYD: BANYGYD,\n SFXGSD: SFXGSD,\n SFXGCD: SFXGSD,\n BXATP: BXATP,\n BXGYD: BXGYD,\n SF: SF,\n PWP: PWP,\n BMIN: BMIN,\n BFXATP: BFXATP,\n BMINXGFG: BMINXGFG,\n SFBGSD: SFBGSD,\n SFEGSD: SFEGSD,\n };\n this.entityType = {\n PRODUCT: \"product\",\n BRAND: \"brand\",\n CATEGORY: \"category\",\n };\n this.noMaxRedemption = [\"SFXGSD\", \"SFXGCD\", \"BMIN\", \"BFXATP\", \"BMINXGFG\"];\n this.buyKey = this.props.options.buyKey;\n const entityType = this.state.values.entityType;\n if (!entityType) {\n this.state.values.entityType = \"PRODUCT\";\n }\n if (!this.state.values.itemDiscountType) {\n this.state.values.itemDiscountType = \"COMBO_DISCOUNT\";\n }\n\n if (this.props.method === \"add\" && this.state.values) {\n this.state.values.status = \"ENABLED\";\n }\n this.freeDiscoutOffers = [\n \"SF\",\n \"BXGYD\",\n \"BANYGYD\",\n \"SFXGSD\",\n \"SFXGCD\",\n \"PWP\",\n \"SFBGSD\",\n \"SFEGSD\",\n ]; // offers that offer free pdts\n this.saveData = this.saveData.bind(this);\n this.addItem = this.addItem.bind(this);\n this.deleteItem = this.deleteItem.bind(this);\n this.addItemBuy = this.addItemBuy.bind(this);\n this.deleteBuyItem = this.deleteBuyItem.bind(this);\n this.handleEntityTypeOnchange = this.handleEntityTypeOnchange.bind(this);\n this.handleDiscountChange = this.handleDiscountChange.bind(this);\n this.fetchData = this.fetchData.bind(this);\n this.handleOfferTypeOnchange = this.handleOfferTypeOnchange.bind(this);\n this.handleImageClick = this.handleImageClick.bind(this);\n this.onClosePopup = this.onClosePopup.bind(this);\n this.noItemsOffers = [\"SFXGSD\", \"SFXGCD\", \"PWP\"];\n this.handleUniquePromocodeValidations =\n this.handleUniquePromocodeValidations.bind(this);\n this.changeTab = this.changeTab.bind(this);\n this.readyForSubmission = this.readyForSubmission.bind(this);\n this.handleCloneOffer = this.handleCloneOffer.bind(this);\n this.handleToggleClonePopup = this.handleToggleClonePopup.bind(this);\n this.closeErrorDialog = this.closeErrorDialog.bind(this);\n this.handleUpdateValues = this.handleUpdateValues.bind(this);\n this.handleUpdateValidations = this.handleUpdateValidations.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.options.pwpTagId !== this.props.options.pwpTagId) {\n let values = JSON.parse(JSON.stringify(this.state.values));\n values.pwpTagId = this.props.options.pwpTagId;\n this.setState({\n values,\n });\n }\n if (\n this.state.values &&\n this.state.values.type === \"BMINXGFG\" &&\n this.state.values.stackable\n ) {\n let disableCheckbox = false;\n let isCombo =\n this.state.values &&\n this.state.values.itemDiscountType === \"COMBO_DISCOUNT\";\n if (isCombo) {\n disableCheckbox =\n this.state.values.rule &&\n this.state.values.rule.elementGroups &&\n this.state.values.rule.elementGroups.some(\n (group) => group.total && group.total.t === \"FIXED\"\n );\n } else {\n let items =\n (this.state.values.rule &&\n this.state.values.rule.elementGroups.reduce(\n (acc, group) => acc.concat(group.product || []),\n []\n )) ||\n [];\n items.length > 0 &&\n items.map((item) => {\n if (item.t === \"FIXED\") {\n disableCheckbox = true;\n }\n return null;\n });\n }\n\n if (disableCheckbox) {\n this.setState({\n values: { ...this.state.values, stackable: false },\n });\n disableCheckbox = false;\n }\n } else if (\n this.state.values &&\n this.state.values.type === \"BMINXATP\" &&\n this.state.values.stackable\n ) {\n let disableCheckbox = false;\n disableCheckbox =\n this.state.values.rule &&\n this.state.values.rule.elementGroups &&\n this.state.values.rule.elementGroups.some(\n (group) => group.total && group.total.t === \"FIXED\"\n );\n if (disableCheckbox) {\n this.setState({\n values: { ...this.state.values, stackable: false },\n });\n }\n } else {\n if (\n this.state.values &&\n this.state.values.itemDiscountType === \"COMBO_DISCOUNT\"\n ) {\n if (\n this.state.values &&\n this.state.values.rule &&\n this.state.values.rule.total &&\n this.state.values.rule.total.t &&\n this.state.values.rule.total.t === \"FIXED\" &&\n this.state.values.stackable\n ) {\n this.setState({\n values: { ...this.state.values, stackable: false },\n });\n }\n } else if (\n this.state.values &&\n this.state.values.itemDiscountType === \"INDIVIDUAL_DISCOUNT\" &&\n this.state.values.stackable\n ) {\n let items = this.state.values.product || [];\n let disableCheckbox = false;\n items.length > 0 &&\n items.map((item) => {\n if (item.t === \"FIXED\") {\n disableCheckbox = true;\n }\n return null;\n });\n\n if (disableCheckbox) {\n this.setState({\n values: { ...this.state.values, stackable: false },\n });\n disableCheckbox = false;\n }\n }\n }\n }\n\n componentDidMount() {\n const { state, props } = this;\n const { method } = props;\n const { values } = state;\n this.tabForms =\n method === \"add\" ? [false, false, true] : [\"true\", true, true];\n this.fetchData();\n\n // This is for cloning an offer. From the offer details page,\n // the values are stored in sessionStorage and user is redirected to add offers page\n // and in this page hydrate the state from sessionStorage\n if (method === \"add\") {\n let clonedOffer = JSON.parse(\n window.sessionStorage.getItem(\"clonedOffer\") || \"{}\"\n );\n clonedOffer = { ...values, ...clonedOffer };\n this.setState({ values: clonedOffer });\n }\n }\n\n componentWillReceiveProps(nextProps) {\n if (nextProps.options.activeIndex !== this.props.options.activeIndex) {\n // this.fetchData()\n }\n }\n\n componentWillUnmount() {\n if (this.props.method === \"add\") {\n window.sessionStorage.removeItem(\"clonedOffer\");\n }\n }\n\n readyForSubmission() {\n let activeIndex = this.props.options.activeIndex;\n for (let i = 0; i < this.tabForms.length; i++) {\n if (activeIndex === i) {\n continue;\n } else {\n if (!this.tabForms[i]) {\n return { val: false, nextTabIndex: i };\n }\n }\n }\n\n return { value: true, nextTabIndex: undefined };\n }\n\n async fetchData() {\n this.hasOfferStarted =\n moment().diff(this.state.values.offerValidFrom) > 0 &&\n this.props.method === \"edit\";\n let entityId =\n this.state.values.rule &&\n this.state.values.rule.entity &&\n this.state.values.rule.entity.id;\n\n if (isExtensionEnabled(\"EntityMetaData\")) {\n const metaDataApi = new API({ url: \"/config-service/meta-data\" });\n metaDataApi\n .get()\n .then((response) => {\n let offerMetadata = response.data.config.entityMetaData.offer || {};\n this.setState({\n metadataFormTypes: offerMetadata,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n if (this.props.method !== \"add\") {\n const offerType = this.props.value.offerType;\n let cartPrice =\n this.props.value &&\n this.props.value.rule &&\n this.props.value.rule.cartPrice;\n const entityType = this.state.values.entityType.toLowerCase();\n let getParams = \"\";\n let multiTierGetParams = \"\";\n let multiTierGetPdts =\n offerType === \"BMINXGFG\" &&\n (this.props.value.rule.elementGroups || []).map((group) => group.get);\n if (multiTierGetPdts) {\n multiTierGetPdts.map((getPdts) => {\n (Object.keys(getPdts) || []).forEach((id) => {\n multiTierGetParams += `id=${Number(id)}&`;\n });\n return null;\n });\n }\n let getPdts = this.props.value.rule.get;\n if (getPdts) {\n if (offerType === \"PWP\") {\n const rule = this.props.value.rule;\n const id = rule && rule.get && rule.get.variantId;\n getParams = `id=${id}`;\n } else {\n (Object.keys(getPdts) || []).forEach((id) => {\n getParams += `id=${Number(id)}&`;\n });\n }\n }\n\n if (this.state.values.tagIds && this.state.values.tagIds.length > 0) {\n let queryString = \"\";\n let tags = [];\n this.state.values.tagIds.map((id, index) => {\n if (index > 0) {\n queryString += `&id=${id}`;\n } else {\n queryString += `id=${id}`;\n }\n return null;\n });\n const tagApi = new API({\n url: `/catalogue-service/tag/?${queryString}`,\n });\n await tagApi\n .get()\n .then((res) => {\n if (checkHttpResponseCode(res.code) && res.status === \"SUCCESS\") {\n tags = res.data && res.data.tag;\n }\n })\n .catch((err) => console.error(err));\n\n this.setState((prevState) => {\n return {\n values: { ...prevState.values, tags },\n tagsLoaded: tags.length > 0,\n };\n });\n }\n\n if (getParams) {\n const getProductsAPI = new API({\n url: `/catalogue-service/product?${getParams}`,\n });\n await getProductsAPI\n .get()\n .then((response) => {\n let products = response.data.product || [];\n let productsFromProp = this.props.value.rule.get;\n products = products.map((product) => {\n let newProduct = product;\n let productFromProp =\n productsFromProp && productsFromProp[product.id];\n newProduct.q = productFromProp && productFromProp.q;\n if (this.props.value.itemDiscountType === \"INDIVIDUAL_DISCOUNT\") {\n newProduct.t = productFromProp && productFromProp.t;\n newProduct.v = productFromProp && productFromProp.v;\n }\n return newProduct;\n });\n let values = Object.assign({}, this.state.values);\n values.product = products;\n if (cartPrice) {\n values.cartPrice = cartPrice;\n }\n if (offerType === \"PWP\") {\n let rule = values.rule;\n rule.total = rule.get;\n rule.total.variantId = products[0];\n values.rule = rule;\n }\n this.setState({\n values,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n if (multiTierGetParams) {\n const getProductsAPI = new API({\n url: `/catalogue-service/product?${multiTierGetParams}`,\n });\n await getProductsAPI\n .get()\n .then((response) => {\n let products = response.data.product || [];\n let values = Object.assign({}, this.state.values);\n let { rule } = values;\n let { elementGroups } = rule;\n let newElementGroups = elementGroups.map((group) => {\n group.product =\n group.get &&\n Object.keys(group.get)\n .map((getPdtId) => {\n let newProduct =\n products.find(\n (pdt) => Number(pdt.id) === Number(getPdtId)\n ) || null;\n if (newProduct) newProduct.q = group.get[getPdtId].q;\n if (\n newProduct &&\n this.props.value.itemDiscountType ===\n \"INDIVIDUAL_DISCOUNT\"\n ) {\n newProduct.t = group.get[getPdtId].t;\n newProduct.v = group.get[getPdtId].v;\n }\n return newProduct;\n })\n .filter(Boolean);\n delete group.get;\n return group;\n });\n rule.elementGroups = newElementGroups;\n values.rule = rule;\n this.setState({\n values,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n if (entityType === \"product\") {\n let pdtIds = this.props.value.rule.variants || [];\n let buyParams = \"\";\n let entityParams = \"\";\n pdtIds.forEach((id) => {\n buyParams += `id=${id}&`;\n });\n let buyPdts = this.props.value.rule.buy;\n let entityIds = [];\n if (\n this.props.value.offerType === \"BMIN\" ||\n this.props.value.offerType === \"BMINXGFG\"\n ) {\n entityIds = this.props.value.rule.entityIds || [];\n }\n\n if (this.props.value.offerType === \"SFEGSD\") {\n entityIds = this.props.value.rule.entity.ids;\n }\n\n if (buyPdts) {\n Object.keys(buyPdts).forEach((id) => {\n buyParams += `id=${Number(id)}&`;\n });\n }\n\n if (entityIds.length > 0) {\n entityIds.map((id, index) => {\n if (index === 0) {\n entityParams += `id=${Number(id)}`;\n } else {\n entityParams += `&id=${Number(id)}`;\n }\n return null;\n });\n }\n\n if (buyParams) {\n const buyProductsAPI = new API({\n url: `/catalogue-service/product?${buyParams}`,\n });\n await buyProductsAPI\n .get()\n .then((response) => {\n let products = response.data.product || [];\n products = products.map((product) => {\n let newProduct = product;\n let buyProduct = buyPdts && buyPdts[product.id];\n buyProduct =\n typeof buyProduct === \"object\"\n ? buyProduct\n : { q: buyProduct };\n if (buyProduct) {\n newProduct.q = buyProduct.q;\n newProduct.t = buyProduct.t;\n newProduct.v = buyProduct.v;\n }\n return newProduct;\n });\n let values = Object.assign({}, this.state.values);\n if (\n this.props.value.offerType === \"BXATP\" ||\n this.props.value.offerType === \"BMINXATP\" ||\n this.props.value.offerType === \"BANYATP\" ||\n this.props.value.offerType === \"PT\"\n ) {\n values.product = products;\n } else {\n values[`${this.props.options.buyKey}product`] = products;\n }\n this.setState({\n values,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n if (entityIds.length > 0) {\n const entityProductsApi = new API({\n url: `/catalogue-service/product?${entityParams}`,\n });\n await entityProductsApi\n .get()\n .then((response) => {\n if (\n checkHttpResponseCode(response.code) &&\n response.status === \"SUCCESS\"\n ) {\n let values = JSON.parse(JSON.stringify(this.state.values));\n if (\n this.props.value.offerType === \"BMIN\" ||\n this.props.value.offerType === \"SFEGSD\"\n ) {\n values[\"product\"] = response.data.product;\n this.setState({\n values,\n });\n }\n if (this.props.value.offerType === \"BMINXGFG\") {\n let products = response.data.product || [];\n products = products.map((product) => {\n let newProduct = product;\n let buyProduct = buyPdts && buyPdts[product.id];\n buyProduct =\n typeof buyProduct === \"object\"\n ? buyProduct\n : { q: buyProduct };\n if (buyProduct) {\n newProduct.q = buyProduct.q;\n newProduct.t = buyProduct.t;\n newProduct.v = buyProduct.v;\n }\n return newProduct;\n });\n\n let values = Object.assign({}, this.state.values);\n values[`${this.props.options.buyKey}product`] = products;\n this.setState({\n values,\n });\n }\n }\n })\n .catch((err) => console.error(err));\n }\n } else {\n let values = Object.assign({}, this.state.values);\n if (entityType === \"category\") {\n if (entityId) {\n this.api = new API({\n url: `/catalogue-service/category?id=${entityId}`,\n });\n this.api\n .get()\n .then((response) => {\n values.category =\n (Array.isArray(response.data.category) &&\n response.data.category[0]) ||\n null;\n if (cartPrice) {\n values.cartPrice = cartPrice;\n }\n this.setState({\n values,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n } else {\n let entityIds = this.props.value.rule.entityIds || [];\n if (offerType === \"SFEGSD\") {\n entityIds = this.props.value.rule.entity.ids || [];\n }\n let entityParams = \"\";\n if (entityIds.length > 0) {\n entityIds.map((id, index) => {\n if (index === 0) {\n entityParams += `id=${Number(id)}`;\n } else {\n entityParams += `&id=${Number(id)}`;\n }\n return null;\n });\n\n const entityCategoryApi = new API({\n url: `/catalogue-service/category?${entityParams}`,\n });\n entityCategoryApi\n .get()\n .then((response) => {\n if (\n checkHttpResponseCode(response.code) &&\n response.status === \"SUCCESS\"\n ) {\n let values = JSON.parse(JSON.stringify(this.state.values));\n values[\"category\"] = response.data.category;\n this.setState({\n values,\n });\n }\n })\n .catch((err) => console.error(err));\n }\n }\n } else if (entityType === \"brand\") {\n if (entityId) {\n this.api = new API({\n url: `/catalogue-service/brand?id=${entityId}`,\n });\n this.api\n .get()\n .then((response) => {\n values.brand =\n (Array.isArray(response.data.brand) &&\n response.data.brand[0]) ||\n null;\n if (cartPrice) {\n values.cartPrice = cartPrice;\n }\n this.setState({\n values,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n } else {\n let entityIds = this.props.value.rule.entityIds || [];\n if (offerType === \"SFEGSD\") {\n entityIds = this.props.value.rule.entity.ids || [];\n }\n let entityParams = \"\";\n if (entityIds.length > 0) {\n entityIds.map((id, index) => {\n if (index === 0) {\n entityParams += `id=${Number(id)}`;\n } else {\n entityParams += `&id=${Number(id)}`;\n }\n return null;\n });\n\n const entityBrandsApi = new API({\n url: `/catalogue-service/brand?${entityParams}`,\n });\n entityBrandsApi\n .get()\n .then((response) => {\n if (\n checkHttpResponseCode(response.code) &&\n response.status === \"SUCCESS\"\n ) {\n let values = JSON.parse(JSON.stringify(this.state.values));\n values[\"brand\"] = response.data.brand;\n this.setState({\n values,\n });\n }\n })\n .catch((err) => console.error(err));\n }\n }\n }\n }\n }\n }\n\n saveData(data) {\n let formData = { ...data, ...this.state.values };\n if (this.isFormValid()) {\n this.props.onSubmit(formData);\n } else {\n }\n }\n\n deleteCategoryBrandsItem(index, entityType) {\n let values = JSON.parse(JSON.stringify(this.state.values));\n let items = (values && values[entityType]) || [];\n items.splice(index, 1);\n let validations = JSON.parse(JSON.stringify(this.state.validations));\n let itemsValidation = (validations && validations[entityType]) || [];\n if (itemsValidation) {\n if (items.length > 0) {\n itemsValidation.valueMissing = true;\n itemsValidation.valid = false;\n } else {\n itemsValidation.valueMissing = undefined;\n itemsValidation.valid = true;\n }\n }\n this.setState({\n values,\n validations,\n });\n }\n\n addItem(newItem, nestedKeys, entityType = \"product\") {\n if (!newItem) {\n return;\n }\n let values = JSON.parse(JSON.stringify(this.state.values));\n\n let valuesRef =\n values &&\n (nestedKeys !== undefined\n ? getNestedValues(values, [\"rule\", ...nestedKeys])\n : values);\n\n if (!valuesRef[entityType]) {\n valuesRef[entityType] = [];\n }\n const index = valuesRef[entityType].filter(\n (item) => item.id === newItem.id\n ).length;\n if (index > 0) {\n return;\n }\n valuesRef[entityType].push(newItem);\n this.setState({\n values,\n });\n }\n\n addItemBuy(newItem) {\n if (!newItem) {\n return;\n }\n const entityType = \"product\";\n let values = Object.assign({}, this.state.values);\n const key = `${this.props.options.buyKey}${entityType}`;\n if (!values[key]) {\n values[key] = [];\n }\n const index = values[key].filter((item) => item.id === newItem.id).length;\n if (index > 0) {\n return;\n }\n values[key].push(newItem);\n this.setState({\n values,\n });\n }\n\n deleteBuyItem(index) {\n let values = Object.assign({}, this.state.values);\n const entityType = \"product\";\n let key = `${this.props.options.buyKey}${entityType}`;\n let items = values[key] || [];\n items.splice(index, 1);\n let validations = Object.assign({}, this.state.validations);\n let itemsValidation = (validations && validations[key]) || [];\n itemsValidation.splice(index, 1);\n this.setState({\n validations,\n values,\n });\n }\n\n deleteItem(index, nestedKeys) {\n let values = JSON.parse(JSON.stringify(this.state.values));\n const entityType = \"product\";\n let items = !nestedKeys\n ? values && values[entityType]\n : getNestedValues(values, [\"rule\", ...nestedKeys, entityType]);\n items = items || [];\n\n items.splice(index, 1);\n let validations = JSON.parse(JSON.stringify(this.state.validations));\n let itemsValidation = !nestedKeys\n ? validations && validations[entityType]\n : getNestedValues(validations, [\"rule\", ...nestedKeys, entityType]);\n itemsValidation = itemsValidation || [];\n\n itemsValidation.splice(index, 1);\n this.setState({\n values,\n validations,\n });\n }\n\n handleDiscountChange(type, nestedKeys) {\n if (nestedKeys === undefined) {\n this.updateState([\"rule\", \"total\", \"t\"]);\n } else {\n this.updateState([\"rule\", ...nestedKeys, \"total\", \"t\"]);\n }\n\n this.setState((prevState) => {\n let newState = JSON.parse(JSON.stringify(prevState));\n let ruleValue =\n newState &&\n newState.values &&\n (nestedKeys !== undefined\n ? getNestedValues(newState.values, [\"rule\", ...nestedKeys])\n : newState.values.rule);\n let ruleValidation =\n newState &&\n newState.validations &&\n (nestedKeys !== undefined\n ? getNestedValues(newState.validations, [\"rule\", ...nestedKeys])\n : newState.validations.rule);\n if (ruleValue) {\n if (\n type === \"FREE\" &&\n ruleValidation &&\n ruleValidation.total &&\n ruleValidation.total.v &&\n !ruleValidation.total.v.valid\n ) {\n ruleValidation.total.v.valid = true;\n } else if (\n type !== \"FREE\" &&\n ruleValidation &&\n ruleValidation.total &&\n ruleValidation.total.v\n ) {\n ruleValidation.total.v.valid = false;\n }\n ruleValue.total.t = type;\n ruleValue.total.v = \"\";\n }\n return newState;\n });\n }\n\n beforeSubmit() {\n let data = Object.assign({}, this.state.values);\n let offerType = data.type;\n let instance = new this.offerForm[offerType]();\n instance.validationHandler(this);\n }\n async _submitHandler(e) {\n e && e.preventDefault();\n await this.beforeSubmit();\n this.setState({\n pressedSubmitWithCurrentData: true,\n });\n let isValid = this.isFormValid();\n let activeIndex = this.props.options.activeIndex;\n if (isValid) {\n this.tabForms[activeIndex] = true;\n let result = this.readyForSubmission();\n if (result.value) {\n if (this.props.onSubmit) {\n let values = JSON.parse(JSON.stringify(this.state.values));\n this.props.onSubmit(values);\n } else {\n this.onSubmit(this.state.values);\n }\n } else {\n this.changeTab(result.nextTabIndex);\n }\n } else {\n this.tabForms[activeIndex] = false;\n }\n }\n handleEntityTypeOnchange(targetValue) {\n let { productOnlyOffers, brandOnlyOffers, offerMapping } =\n this.props.options;\n let values = JSON.parse(JSON.stringify(this.state.values));\n let validations = JSON.parse(JSON.stringify(this.state.validations));\n let offersArray = [...offerMapping];\n offersArray = offersArray.filter((el) => {\n return (\n productOnlyOffers.indexOf(el.value) < 0 &&\n brandOnlyOffers.indexOf(el.value) < 0\n );\n });\n let offerType = values.type;\n if (\n targetValue !== \"PRODUCT\" &&\n offersArray.findIndex((offer) => offer.value === offerType) === -1\n ) {\n values.type = null;\n }\n values.entityType = targetValue;\n if (values.entityType === \"PRODUCT\") {\n delete values[\"brand\"];\n delete values[\"category\"];\n delete validations[\"brand\"];\n delete validations[\"category\"];\n }\n\n if (values.entityType === \"BRAND\") {\n delete values[\"buyproduct\"];\n delete values[\"product\"];\n delete values[\"category\"];\n delete validations[\"product\"];\n delete validations[\"category\"];\n }\n\n if (values.entityType === \"CATEGORY\") {\n delete values[\"buyproduct\"];\n delete values[\"product\"];\n delete values[\"brand\"];\n delete validations[\"product\"];\n delete validations[\"brand\"];\n }\n this.setState({ values, validations });\n }\n handleOfferTypeOnchange(type) {\n let values = {\n type: type,\n status: this.state.values.status,\n entityType: this.state.values.entityType,\n itemDiscountType: \"COMBO_DISCOUNT\",\n pwpTagId: this.state.values.pwpTagId,\n };\n if (values.type === \"BMIN\" || values.type === \"BMINXATP\") {\n values.rule = { itemDiscountType: \"COMBO_DISCOUNT\" };\n }\n let validations = { type: this.state.validations.type };\n this.setState({ values, validations, pressedSubmitWithCurrentData: false });\n }\n\n handleImageClick() {\n this.setState({\n showPromoDownloadPopup: true,\n });\n this.api = new API({\n url: `/offer-service/offer/${this.props.resourceId}/promocode`,\n });\n this.api\n .get()\n .then((res) => {})\n .catch((error) => {\n console.error(error);\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n });\n }\n\n onClosePopup() {\n this.setState({\n showPromoDownloadPopup: false,\n });\n }\n\n handleUniquePromocodeValidations(val) {\n if (!val) {\n let validations = JSON.parse(JSON.stringify(this.state.validations));\n let values = JSON.parse(JSON.stringify(this.state.values));\n values[\"hasUniquePromocode\"] = val;\n delete validations.prefix;\n delete validations.suffix;\n delete validations.numberOfPromos;\n this.setState({\n validations,\n values,\n });\n } else {\n let values = JSON.parse(JSON.stringify(this.state.values));\n values[\"hasUniquePromocode\"] = val;\n this.setState({\n values,\n });\n }\n return val;\n }\n\n changeTab(val) {\n let isValid = this.isFormValid();\n let activeIndex = this.props.options.activeIndex;\n if (isValid) {\n this.tabForms[activeIndex] = true;\n } else {\n this.tabForms[activeIndex] = false;\n }\n let validations = { type: this.state.validations.type };\n this.setState({ validations }, () => this.props.options.changeTab(val));\n }\n\n // This method is for updating the values in state, whatever values\n // are being sent from the child component, the parent is gonna save it.\n // So, handle it with care inside child component\n handleUpdateValues(values) {\n this.setState({ values });\n }\n\n handleUpdateValidations(validations) {\n this.setState({ validations });\n }\n\n handleCloneOffer(onlyCopy = true) {\n let { state, props } = this;\n let { values } = state || {};\n if (!onlyCopy) {\n this.disableOffer(values)\n .then(async () => {\n let redemptionValues;\n redemptionValues = await this.fetchRedemptionCount(values.id);\n let totalRedemption = redemptionValues.redemptionLimit;\n let redeemedCount = Number(redemptionValues.redemptionCount || 0);\n\n values = { ...values, totalRedemption, redeemedCount };\n\n this.cloneOffer(values, onlyCopy);\n props.history.push(\"/marketing/offers/add\");\n })\n .catch((error) => {\n this.setState({\n showClonePopup: false,\n disableError: true,\n error: error,\n });\n console.error(error);\n });\n } else {\n values = {\n ...values,\n totalRedemption: null,\n redeemedCount: null,\n customerRedemptionLimit: null,\n };\n this.cloneOffer(values, onlyCopy);\n props.history.push(\"/marketing/offers/add\");\n }\n }\n\n handleToggleClonePopup() {\n this.setState({ showClonePopup: !this.state.showClonePopup });\n }\n\n disableOffer(values) {\n let { id } = values;\n let url = `/offer-service/offer/${id}`;\n let api = new API({ url });\n return api.put({ id, status: \"DISABLED\" });\n }\n\n cloneOffer(state = {}, onlyCopy) {\n let { id, ...newOfferState } = state;\n if (!onlyCopy) {\n newOfferState = { ...newOfferState, copyOf: id };\n }\n delete newOfferState.clientId;\n window.sessionStorage.setItem(\"clonedOffer\", JSON.stringify(newOfferState));\n }\n\n closeErrorDialog() {\n this.setState({ disableError: false });\n }\n\n async fetchRedemptionCount(id) {\n let url = `/offer-service/offer/${id}/redemption`;\n let api = new API({ url });\n let res = await api.get();\n let { data } = res;\n let { redemptionCount, redemptionLimit } = data || {};\n\n return { redemptionCount, redemptionLimit };\n }\n\n render() {\n const { Form } = this.components;\n const { SubmitButton, CancelButton } = this.buttons;\n const { entityIds, stores, itemDiscountTypes } = this.props.options;\n let {\n offerMapping,\n discountTypes,\n pwpTagId,\n productOnlyOffers,\n brandOnlyOffers,\n } = this.props.options;\n const { values } = this.state;\n const { type, entityType, tags, oldFormat } = values;\n const tagsLength = tags && tags.length > 0;\n const offerType = values && values.type;\n const redeemedCount = values && values.redeemedCount;\n const FormComponent = this.offerForm[offerType] || noop;\n const itemsCount =\n values &&\n entityType &&\n values[entityType.toLowerCase()] &&\n (Array.isArray(values[entityType.toLowerCase()])\n ? values[entityType.toLowerCase()].length\n : values[entityType.toLowerCase()]);\n let activeIndex = this.props.options.activeIndex || 0;\n let promomtionsTab = activeIndex === 0;\n let restrictionsTab = activeIndex === 1;\n let overrideTab = activeIndex === 2;\n if (this.isNewOffer) {\n offerMapping = offerMapping.filter((offer) => offer.value !== \"SF\");\n }\n let applicableOffers = offerMapping.slice();\n if (entityType !== \"PRODUCT\") {\n // Not all offers are applicable on category and brand entities\n applicableOffers = applicableOffers.filter((el) => {\n return productOnlyOffers.indexOf(el.value) < 0;\n });\n }\n if (entityType !== \"BRAND\") {\n // Not all offers are applicable on category and brand entities\n applicableOffers = applicableOffers.filter((el) => {\n return brandOnlyOffers.indexOf(el.value) < 0;\n });\n }\n let applicableDiscounts = discountTypes.slice();\n if (this.freeDiscoutOffers.indexOf(offerType) > -1) {\n applicableDiscounts.push({\n text: \"Free\",\n value: \"FREE\",\n });\n }\n\n let disableCheckbox = false;\n if (values && values.type === \"BMINXGFG\") {\n let product = (values && values.product) || [];\n product.length > 0 &&\n product.map((item) => {\n if (item.t === \"FIXED\") {\n disableCheckbox = true;\n }\n return null;\n });\n } else if (values && values.type !== \"BMINXGFG\") {\n if (values.itemDiscountType === \"COMBO_DISCOUNT\") {\n disableCheckbox =\n values &&\n values.rule &&\n values.rule.total &&\n values.rule.total.t &&\n values.rule.total.t === \"FIXED\";\n } else {\n let product = (values && values.product) || [];\n product.length > 0 &&\n product.map((item) => {\n if (item.t === \"FIXED\") {\n disableCheckbox = true;\n }\n return null;\n });\n }\n }\n\n let isDisabled = this.props.value && this.props.value.status === \"DISABLED\";\n\n let isClonedOfferWithContinuation =\n redeemedCount !== null && redeemedCount !== undefined;\n\n return (\n \n {this.props.method === \"edit\" && (\n
    \n {!isDisabled && (\n \n )}\n \n
    \n )}\n
    \n `${tab.text}`)}\n default={0}\n onClick={this.changeTab}\n active={this.props.options.activeIndex}\n />\n
    \n
    \n {\n let status = !(this.getState([\"status\"]) === \"ENABLED\")\n ? \"ENABLED\"\n : \"DISABLED\";\n this.updateState([\"status\"], status);\n }}\n />\n
    \n
    \n
    \n {promomtionsTab && [\n ,\n ,\n ]}\n {restrictionsTab && [\n
    \n \n \n
    ,\n
    \n \n \n
    ,\n !this.noMaxRedemption.includes(type) && (\n \n ),\n ]}\n {restrictionsTab && stores && (\n <>\n \n
    \n \n {getMessage(\"offer.ordertype.label\")}\n
    \n Please choose the correct order type to avoid creating\n offers applicable to all order types\n
    \n
    \n \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n {this.props.method === \"edit\" &&\n this.state.values &&\n this.state.values.hasUniquePromocode && (\n \n \n \n )}\n\n {this.state.showPromoDownloadPopup && (\n \n )}\n {this.state.values &&\n !this.state.values.hasUniquePromocode && (\n \n )}\n {this.props.method === \"add\" &&\n this.state.values &&\n this.state.values.hasUniquePromocode && (\n \n )}\n {this.props.method === \"add\" &&\n this.state.values &&\n this.state.values.hasUniquePromocode && (\n \n )}\n {this.props.method === \"add\" &&\n this.state.values &&\n this.state.values.hasUniquePromocode && (\n \n )}\n
    \n
    \n

    Customer Level

    \n
    \n \n
    \n
    \n\n

    \n {getMessage(\"offer.heading.deliveyDate\")}\n

    \n
    \n \n \n
    \n
    \n \n \n
    \n \n {isClonedOfferWithContinuation && (\n \n {getMessage(\"offer.redeemedCount.placeholder\", {\n count: redeemedCount,\n })}\n \n )}\n \n \n )}\n {overrideTab && [\n ,\n ,\n ]}\n \n\n {overrideTab && (\n <>\n

    {getMessage(\"Custom fields\")}

    \n \n \n )}\n\n {restrictionsTab && }\n\n {promomtionsTab && (\n \n )}\n {((itemsCount || this.noItemsOffers.includes(type) || tagsLength) &&\n this.props.method === \"add\") ||\n type === \"BMINXGFG\" ||\n this.props.method === \"edit\" ? (\n
    \n \n Array.isArray(grp.product) && grp.product.length\n ))\n )\n }\n >\n {getMessage(\"offer.submit\")}\n \n {getMessage(\"offer.cancel\")}\n
    \n ) : null}\n \n {this.state.showClonePopup && (\n this.handleCloneOffer(false)}\n okText={getMessage(\"offer.dialog.clone.proceed\")}\n />\n )}\n {this.state.disableError && (\n \n )}\n
    \n );\n }\n}\n\nexport default withRouter(OfferForm);\n","import React from \"react\";\nimport {\n Input,\n BaseForm,\n Select,\n Radio,\n SingleDatePicker,\n ProductSearch,\n CategorySearch,\n BrandSearch,\n Searchable,\n} from \"../../../../components/Form\";\n\nimport { getMessage } from \"../../../../lib/translator\";\nimport { isExtensionEnabled } from \"../../../../lib/auth\";\n\nclass OfferFilters extends BaseForm {\n constructor(props) {\n super(props);\n this.entityOptions = [\n {\n text: getMessage(\"offer.all\"),\n value: \"\",\n },\n {\n text: getMessage(\"offer.product\"),\n value: \"PRODUCT\",\n },\n {\n text: getMessage(\"offer.category\"),\n value: \"CATEGORY\",\n },\n ];\n if (isExtensionEnabled(\"MultiBrandSupport\")) {\n this.entityOptions.push({\n text: getMessage(\"offer.brand\"),\n value: \"BRAND\",\n });\n }\n this.offerMapping = this.props.options.offerMapping.slice();\n this.offerMapping &&\n this.offerMapping.splice(0, 0, { text: \"ALL\", value: \"all\" });\n this.offerMapping = this.offerMapping.filter(\n (offer) => offer.value !== \"SF\"\n );\n this.handleEntityTypeChange = this.handleEntityTypeChange.bind(this);\n this.handleEntityIdChange = this.handleEntityIdChange.bind(this);\n }\n\n handleEntityIdChange(val) {\n let entityId = val && val.id;\n let values = JSON.parse(JSON.stringify(this.state.values));\n values[\"entityId\"] = entityId;\n values[\"selectedEntity\"] = val;\n this.setState({\n values,\n });\n }\n handleEntityTypeChange(val) {\n const values = JSON.parse(JSON.stringify(this.state.values));\n values[\"entityType\"] = val;\n values[\"entityId\"] = null;\n values[\"selectedEntity\"] = null;\n this.setState({\n values,\n });\n }\n render() {\n const { Form } = this.components;\n const { SubmitButton, ClearButton } = this.buttons;\n let { entityType } = this.state.values;\n let entityIdField = null;\n if (entityType === \"PRODUCT\") {\n entityIdField = (\n \n );\n } else if (entityType === \"CATEGORY\") {\n entityIdField = (\n \n );\n } else if (entityType === \"BRAND\") {\n entityIdField = (\n \n );\n } else if (entityType === \"TAG\") {\n entityIdField = (\n {\n let tags = response.data.tag || [];\n tags = (tags || []).map((tag) => {\n tag.name = `${tag.name}`;\n tag.id = `${tag.id}`;\n return tag;\n });\n return tags;\n }}\n {...this.generateStateMappers({\n stateKeys: [\"selectedEntity\"],\n loseEmphasisOnFill: true,\n })}\n onChange={this.handleEntityIdChange}\n />\n );\n }\n\n return (\n
    \n
    \n \n \n \n {entityIdField}\n \n \n \n \n
    \n {getMessage(\"offer.submit\")}\n {getMessage(\"offer.clear\")}\n
    \n );\n }\n}\n\nexport default OfferFilters;\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport ListingPageWithRoutes from \"../../../containers/ListingPage/listingRouter\";\nimport Image from \"../../../components/Image\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport { getMessage } from \"../../../lib/translator\";\nimport {\n getPrintableTime,\n utcToLocalTime,\n localTimeToUtc,\n getStandradDateTime,\n} from \"../../../lib/datetime\";\nimport API from \"../../../lib/api\";\nimport {\n isExtensionEnabled,\n hasPermissions,\n getStores,\n} from \"../../../lib/auth\";\nimport OfferForm from \"./Form\";\nimport BANYATP from \"./Form/BANYATP\";\nimport BMINXATP from \"./Form/BMINXATP\";\nimport BANYGYD from \"./Form/BANYGYD\";\nimport BXATP from \"./Form/BXATP\";\nimport BXGYD from \"./Form/BXGYD\";\nimport SF from \"./Form/SF\";\nimport SFXGSD from \"./Form/SFXGSD\";\nimport BMIN from \"./Form/BMIN\";\nimport PWP from \"./Form/PWP\";\nimport BFXATP from \"./Form/BFXATP\";\nimport BMINXGFG from \"./Form/BMINXGFG\";\nimport SFBGSD from \"./Form/SFBGSD\";\nimport SFEGSD from \"./Form/SFEGSD\";\nimport OfferFilter from \"./Filters\";\nimport EmptyIcon from \"../Coupons/coupons-empty.svg\";\nimport { formatDataBeforeSubmit } from \"../../../components/SegmentsForm\";\n\nimport \"./style.css\";\nimport { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport Toggle from \"../../../components/Form/Inputs/Toggle\";\nimport moment from \"moment\";\n\nconst OfferTypes = {\n BANYATP:\n \"Buy any `n` of the selected variants (X,Y....) and get discount on mrp\", // Buy any at Price Z\n BMINXATP: \"Buy n or more of X(or X, Y) and get discount on MRP\", // Buy min of X at Price X\n BANYGYD:\n \"Buy any `n` of the selected variants (X,Y....) and get Z at discounted price/Free\", // Buy Any Get Y at Discount (Z%)\n BXATP: \"Buy X Product At Price (Z)\", // Buy X Product At Price (Z)\n BXGYD: \"Buy X and Get Y at discounted price/Free\", // Buy X and Get Y at Discount\n SF: \"Shop For `n` Amount and get Y at discounted price/Free\", // Shop For Rs.X and GET Y at free/D% discount/X off,\n SFXGSD: \"Shop for X amount and get discount on shipping\",\n SFXGCD: \"Shop for X amount and get discount on cart\",\n PWP: \"Purchase with purchase\",\n BMIN: \"Buy for min amt in entity/non-entity and get discount\",\n BFXATP: \"Buy any of the tags at discounted price/Free\",\n BMINXGFG: \"Buy for min amt in entity/non-entity and get products at discount\",\n SFBGSD: \"Shop any from X Brand and get discount on shipping\",\n SFEGSD: \"Shop any from X entity and get discount on shipping\",\n};\n\nconst OfferMapping = [\n {\n text: OfferTypes.BANYATP,\n value: \"BANYATP\",\n },\n {\n text: OfferTypes.BMINXATP,\n value: \"BMINXATP\",\n },\n {\n text: OfferTypes.BANYGYD,\n value: \"BANYGYD\",\n },\n {\n text: OfferTypes.SF,\n value: \"SF\",\n },\n {\n text: OfferTypes.BMIN,\n value: \"BMIN\",\n },\n {\n text: OfferTypes.BMINXGFG,\n value: \"BMINXGFG\",\n },\n {\n text: OfferTypes.SFXGSD,\n value: \"SFXGSD\",\n },\n {\n text: OfferTypes.SFXGCD,\n value: \"SFXGCD\",\n },\n {\n text: OfferTypes.BXATP,\n value: \"BXATP\",\n },\n {\n text: OfferTypes.BXGYD,\n value: \"BXGYD\",\n },\n {\n text: OfferTypes.PWP,\n value: \"PWP\",\n },\n {\n text: OfferTypes.BFXATP,\n value: \"BFXATP\",\n },\n {\n text: OfferTypes.SFBGSD,\n value: \"SFBGSD\",\n },\n {\n text: OfferTypes.SFEGSD,\n value: \"SFEGSD\",\n },\n];\n\nconst ProductOnlyOffers = [\n \"SFXGSD\",\n \"SFXGCD\",\n \"BXATP\",\n \"BXGYD\",\n \"PWP\",\n \"BFXATP\",\n];\nconst BrandOnlyOffers = [\"SFBGSD\"];\n\nconst EntityIds = [\n {\n text: getMessage(\"offer.product\"),\n value: \"PRODUCT\",\n },\n {\n text: getMessage(\"offer.category\"),\n value: \"CATEGORY\",\n },\n];\n\nif (isExtensionEnabled(\"MultiBrandSupport\")) {\n EntityIds.push({\n text: getMessage(\"offer.brand\"),\n value: \"BRAND\",\n });\n}\n\nconst DiscountTypes = [\n {\n text: getMessage(\"offer.fixed\"),\n value: \"FIXED\",\n },\n {\n text: getMessage(\"offer.percentoff\"),\n value: \"PERCENT_OFF\",\n },\n {\n text: getMessage(\"offer.absoluteoff\"),\n value: \"ABSOLUTE_OFF\",\n },\n];\n\nconst StoreOptions = [\n {\n text: getMessage(\"offer.all.stores\"),\n value: \"ALL\",\n },\n {\n text: getMessage(\"offer.selected.stores\"),\n value: \"SELECTED\",\n },\n {\n text: getMessage(\"offer.all.except.selected.stores\"),\n value: \"ALL_EXCEPT_SELECTED\",\n },\n];\n\nconst ItemDiscountTypes = [\n {\n text: getMessage(\"offer.combo.discount\"),\n value: \"COMBO_DISCOUNT\",\n },\n {\n text: getMessage(\"offer.individual.discount\"),\n value: \"INDIVIDUAL_DISCOUNT\",\n },\n];\n\nfunction AddButton() {\n return (\n \n + {getMessage(\"offer.add.text\")}\n \n );\n}\n\nconst EmptyState = {\n icon: EmptyIcon,\n message: getMessage(\"offer.emptyMessage\"),\n additionalViews: [AddButton],\n};\n\nclass OfferActions extends Component {\n render() {\n const { id, onAction, status } = this.props;\n return (\n \n }>\n \n \n {getMessage(\"offer.edit\")}\n \n \n {!(status === \"ENABLED\") ? (\n {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n { status: \"ENABLED\", tableAction: true }\n );\n }}\n >\n {getMessage(\"offer.action.enable\")}\n \n ) : (\n {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n { status: \"DISABLED\", tableAction: true }\n );\n }}\n >\n {getMessage(\"offer.action.disable\")}\n \n )}\n \n \n );\n }\n}\n\nconst tableProperties = () => {\n return {\n headers: [\n getMessage(\"offer.image\"),\n getMessage(\"offer.description\"),\n getMessage(\"offer.type\"),\n getMessage(\"offer.status\"),\n getMessage(\"offer.actions\"),\n ],\n row: ({\n id,\n offerType,\n rule,\n offerValidFrom,\n offerValidTill,\n status,\n imageUrl,\n description,\n shortDescription,\n alertMessage,\n onAction,\n }) => (\n \n \n \"offer-logo\"\n \n \n
    \n \n
    \n {description}\n
    \n \n \n {offerValidFrom && offerValidTill\n ? `${getPrintableTime(offerValidFrom).split(\", \")[0]} - ${\n getPrintableTime(offerValidTill).split(\", \")[0]\n }`\n : null}\n \n
    \n
    \n \n {OfferTypes[offerType]}\n
    \n {`${getMessage(\n \"offer.type\"\n )} : `}\n {OfferTypes[offerType]}\n
    \n
    \n \n {status}\n {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n {\n status: status === \"ENABLED\" ? \"DISABLED\" : \"ENABLED\",\n tableAction: true,\n }\n );\n }}\n />\n \n \n \n \n
    \n ),\n };\n};\n\nclass Offer extends Component {\n constructor(props) {\n super(props);\n this.state = {\n activeIndex: 0,\n };\n this.changeTab = this.changeTab.bind(this);\n }\n\n changeTab(activeIndex) {\n this.setState({ activeIndex });\n }\n\n componentDidMount() {\n this.offerForm = {\n BANYATP: BANYATP,\n BMINXATP: BMINXATP,\n BANYGYD: BANYGYD,\n SFXGSD: SFXGSD,\n SFXGCD: SFXGSD,\n BXATP: BXATP,\n BXGYD: BXGYD,\n SF: SF,\n PWP: PWP,\n BMIN: BMIN,\n BFXATP: BFXATP,\n BMINXGFG: BMINXGFG,\n SFBGSD: SFBGSD,\n SFEGSD: SFEGSD,\n };\n this.buyKey = \"buy\";\n if (isExtensionEnabled(\"MultiStoreSupport\")) {\n this.setState({\n stores: getStores() || [],\n });\n }\n if (\n isExtensionEnabled(\"ProductTagSupport\") &&\n hasPermissions(\"catalogue\", \"tag\", \"get\")\n ) {\n this.pwpwApi = new API({ url: \"/catalogue-service/tag\" });\n this.pwpwApi\n .get({ name: \"pwp\" })\n .then((response) => {\n const tag = response.data.tag || [];\n if (tag.length) {\n this.offerForm.PWP = PWP; // PWP is an offer that can be added\n this.setState({\n pwpTagId: tag[0].id,\n });\n }\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n\n componentWillUnmount() {\n this.api && this.api.cancel();\n }\n\n render() {\n const { props, state } = this;\n const pwpTagId = state && state.pwpTagId;\n return (\n \n Array.isArray(response.data.offers)\n ? response.data.offers.filter((offer) => offer.offerType !== \"PT\")\n : response.data.offers,\n }}\n emptyState={EmptyState}\n addHeading={getMessage(\"offer.add.heading\")}\n editHeading={getMessage(\"offer.edit.heading\")}\n tableProperties={tableProperties()}\n headerActions={({ onAction }) => (\n \n + {getMessage(\"offer.add.text\")}\n \n )}\n filters={{\n component: OfferFilter,\n options: {\n offerTypes: OfferTypes,\n offerMapping: OfferMapping,\n stores: this.state && this.state.stores,\n entityIds: EntityIds,\n buyKey: this.buyKey,\n },\n transformSubmit: (response) => {\n let formData = JSON.parse(JSON.stringify(response));\n if (response.type === \"all\") {\n formData.type = \"\";\n }\n if (response.entityType === \"PRODUCT\") {\n formData.entityType = \"VARIANT\";\n }\n delete formData.selectedEntity;\n return formData;\n },\n }}\n form={{\n component: OfferForm,\n options: {\n offerTypes: OfferTypes,\n offerMapping: OfferMapping,\n productOnlyOffers: ProductOnlyOffers,\n brandOnlyOffers: BrandOnlyOffers,\n stores: this.state && this.state.stores,\n multiStoreEnabled: isExtensionEnabled(\"MultiStoreSupport\"),\n entityIds: EntityIds,\n discountTypes: DiscountTypes,\n storeOptions: StoreOptions,\n itemDiscountTypes: ItemDiscountTypes,\n buyKey: this.buyKey,\n pwpTagId: pwpTagId,\n activeIndex: this.state.activeIndex,\n changeTab: this.changeTab,\n },\n transformSubmit: (formData) => {\n let data = JSON.parse(JSON.stringify(formData));\n if (data.tableAction) {\n delete data.tableAction;\n return data;\n }\n if (data && data.userSet) {\n data = formatDataBeforeSubmit(data);\n }\n if (data && data.userSet && data.userSet.data) {\n if (data.userSet.data.length === 0) {\n data.userSet = null;\n data.method !== \"edit\" && delete data.userSet;\n }\n } else if (data && data.userSet === null) {\n delete data.userSet;\n }\n\n if (data.userSet && data.userSet.data === undefined)\n delete data.userSet;\n\n // Offer specific transforms\n let Offer = this.offerForm[data.type];\n let offer = new Offer();\n data = offer.submitHandler(data, this.buyKey);\n let idsString = \"\";\n data.storeId &&\n Array.isArray(data.storeId) &&\n data.storeId.forEach((id, i, arr) => {\n idsString += i !== arr.length - 1 ? id + \",\" : id;\n });\n data.storeId = idsString;\n delete data.storeType;\n if (data.validFrom && data.validFromTime) {\n data.offerValidFrom = getStandradDateTime(\n localTimeToUtc,\n `${data.validFrom} ${data.validFromTime}`\n );\n delete data.validFrom;\n delete data.validFromTime;\n }\n if (data.validTill && data.validTillTime) {\n data.offerValidTill = getStandradDateTime(\n localTimeToUtc,\n `${data.validTill} ${data.validTillTime}`\n );\n }\n\n if (data.offerValidTill === null) {\n delete data.offerValidTill;\n }\n\n delete data.validTill;\n delete data.validTillTime;\n\n if (data.startDeliveryDate && data.startDeliveryDateTime) {\n data.startDeliveryDate = getStandradDateTime(\n localTimeToUtc,\n `${data.startDeliveryDate} ${data.startDeliveryDateTime}`\n );\n delete data.startDeliveryDateTime;\n }\n if (data.endDeliveryDate && data.endDeliveryDateTime) {\n data.endDeliveryDate = getStandradDateTime(\n localTimeToUtc,\n `${data.endDeliveryDate} ${data.endDeliveryDateTime}`\n );\n delete data.endDeliveryDateTime;\n }\n data.offerType = data.type;\n delete data.entityType;\n if (\n data &&\n data.type &&\n data.type !== \"SFBGSD\" && //SFBGSD will send t as \"FREE\"\n data.rule &&\n data.rule.total &&\n data.rule.total.t &&\n data.type !== \"SFEGSD\" &&\n data.rule.total.t === \"FREE\"\n ) {\n data.rule.total.t = \"PERCENT_OFF\";\n data.rule.total.v = 100;\n }\n if (data.type === \"SFXGSD\") {\n data.rule = data.rule?.[0];\n data.rule.shippingDiscount = data.rule?.total;\n delete data.rule.total;\n delete data.entity;\n }\n if (data.type === \"SFBGSD\" || data.type === \"SFEGSD\") {\n data.rule.shippingDiscount = data.rule?.total;\n if (data.rule.shippingDiscount.t === \"FREE\") {\n data.rule.shippingDiscount = {\n t: \"FREE\",\n v: \"\",\n };\n }\n delete data.rule.total;\n }\n if (data.type === \"SFXGCD\") {\n data.rule =\n data.rule &&\n data.rule.map((rule) => ({\n cartDiscount: rule.total,\n timeSlots: rule.timeSlots,\n maxDiscount:\n rule.maxDiscount === \"\" ? undefined : rule.maxDiscount,\n cartPrice: rule.cartPrice,\n }));\n\n delete data.entity;\n }\n if (data.type === \"PWP\") {\n data.rule.get = data.rule.total;\n delete data.rule.total;\n delete data.entity;\n }\n\n if (data.type === \"BMIN\") {\n delete data.entity;\n delete data.type;\n }\n if (data.type === \"BFXATP\") {\n let tags = JSON.parse(JSON.stringify(data.tags));\n const tagIds = tags.map((item) => Number(item.id));\n data.rule.tagIds = tagIds;\n delete data.tags;\n }\n\n if (data && data.rule && data.rule.buy) {\n (Object.keys(data.rule.buy) || []).forEach((productId) => {\n if (data.rule.buy[productId].t === \"FREE\") {\n data.rule.buy[productId].t = \"PERCENT_OFF\";\n data.rule.buy[productId].v = 100;\n }\n });\n }\n if (data && data.rule && data.rule.get) {\n (Object.keys(data.rule.get) || []).forEach((productId) => {\n if (data.rule.get[productId].t === \"FREE\") {\n data.rule.get[productId].t = \"PERCENT_OFF\";\n data.rule.get[productId].v = 100;\n }\n });\n }\n if (data && data.rule && !data.rule.limit) {\n data.rule.limit = 0;\n }\n\n if (data.type === \"SFXGCD\") {\n delete data.pwpTagId;\n delete data.rule.limit;\n }\n\n if (data.type === \"SFEGSD\") {\n data.rule.entity.ids = data.rule.variants;\n\n delete data.rule.entity.id;\n delete data.rule.variants;\n }\n\n delete data.type;\n delete data.method;\n delete data.oldFormat;\n if (data && data.userSet) {\n // date inside userSet should be sent in YYYY-MM-DD HH:mm:ss format\n const newUserSetData = data?.userSet?.data?.map((userSetData) => {\n if (userSetData.date && userSetData.date.length === 10) {\n userSetData.date = getStandradDateTime(\n localTimeToUtc,\n `${userSetData.date} 00:00:00`\n );\n }\n if (\n userSetData.startDate &&\n userSetData.startDate.length === 10\n ) {\n userSetData.startDate =\n userSetData.startDate === moment().format(\"YYYY-MM-DD\")\n ? getStandradDateTime(\n localTimeToUtc,\n `${moment().format(\"YYYY-MM-DD\")} 00:00:00`\n )\n : getStandradDateTime(\n localTimeToUtc,\n `${userSetData.startDate} 00:00:00`\n );\n }\n if (userSetData.endDate && userSetData.endDate.length === 10) {\n userSetData.endDate = getStandradDateTime(\n localTimeToUtc,\n `${userSetData.endDate} 23:59:59`\n );\n }\n return userSetData;\n });\n\n if (data.userSet.data) {\n data.userSet.data = newUserSetData;\n }\n data = formatDataBeforeSubmit(data);\n }\n return data;\n },\n transformResponse: (response) => {\n let offer = response.data.offers;\n\n offer.includes = false;\n\n if (\n offer &&\n (offer.offerType === \"PT\" ||\n offer.offerType === \"BMIN\" ||\n offer.offerType === \"BMINXGFG\") &&\n offer.rule &&\n offer.rule.entity\n ) {\n offer.includes = true;\n }\n\n if (\n offer.offerType === \"PT\" &&\n offer.rule &&\n offer.rule[\"non-entity\"]\n ) {\n offer.rule.entity = offer.rule[\"non-entity\"];\n delete offer.rule[\"non-entity\"];\n }\n\n offer.entityType =\n !offer.rule.entity || offer.rule.entity.type === \"VARIANT\"\n ? \"PRODUCT\"\n : offer.rule.entity.type;\n\n if (\n (offer.offerType === \"BMIN\" || offer.offerType === \"BMINXGFG\") &&\n offer.rule &&\n offer.rule[\"non-entity\"]\n ) {\n offer.entityType =\n offer.rule[\"non-entity\"].type === \"VARIANT\"\n ? \"PRODUCT\"\n : offer.rule[\"non-entity\"].type;\n }\n offer.itemDiscountType = offer.rule.total\n ? \"COMBO_DISCOUNT\"\n : \"INDIVIDUAL_DISCOUNT\";\n if (offer.rule && offer.offerType === \"BMINXATP\") {\n offer.rule.itemDiscountType = offer.rule.isCombo\n ? \"COMBO_DISCOUNT\"\n : \"INDIVIDUAL_DISCOUNT\";\n if (!offer.rule.elementGroups) {\n offer.oldFormat = true;\n offer.rule.elementGroups = [\n {\n total: offer.rule.total,\n minQuantity: offer.rule.minQuantity,\n maxDiscount: offer.rule.maxDiscount,\n },\n ];\n\n delete offer.rule.total;\n delete offer.rule.minQuantity;\n delete offer.rule.maxDiscount;\n }\n }\n if (offer.rule && offer.offerType === \"BMINXGFG\") {\n offer.itemDiscountType =\n offer.rule.elementGroups &&\n offer.rule.elementGroups[0] &&\n offer.rule.elementGroups[0].total\n ? \"COMBO_DISCOUNT\"\n : \"INDIVIDUAL_DISCOUNT\";\n if (!offer.rule.elementGroups) {\n offer.rule.elementGroups = [\n {\n get: offer.rule.get,\n minAmount: offer.rule.minAmount,\n },\n ];\n if (offer.rule.total) {\n offer.rule.elementGroups[0][\"total\"] = offer.rule.total;\n }\n delete offer.rule.total;\n delete offer.rule.minAmount;\n }\n }\n if (offer.rule && offer.offerType === \"BMIN\") {\n offer.rule.itemDiscountType = offer.rule.isCombo\n ? \"COMBO_DISCOUNT\"\n : \"INDIVIDUAL_DISCOUNT\";\n if (!offer.rule.elementGroups) {\n offer.rule.elementGroups = [\n {\n total: offer.rule.total,\n minAmount: offer.rule.minAmount,\n maxDiscount: offer.rule.maxDiscount,\n },\n ];\n\n delete offer.rule.total;\n delete offer.rule.minAmount;\n delete offer.rule.maxDiscount;\n }\n }\n offer.type = offer.offerType;\n let storeIdArray = [];\n offer.storeId.split(\",\").forEach((id) => {\n id !== \"\" && storeIdArray.push(Number(id));\n });\n offer.storeId = storeIdArray;\n if (offer.offerValidFrom) {\n let time = offer.offerValidFrom;\n if (time.includes(\"T\")) {\n const newDate = offer.startDeliveryDate.split(/[TZ]/);\n time = `${newDate[0]} ${newDate[1]}`;\n }\n\n const offerValidFromLocal = getStandradDateTime(\n utcToLocalTime,\n time\n );\n\n offer.validFrom = offerValidFromLocal.split(\" \")[0];\n offer.validFromTime = offerValidFromLocal.split(\" \")[1];\n } else {\n offer.validFrom = null;\n offer.validFromTime = null;\n }\n\n if (offer.offerValidTill) {\n let time = offer.offerValidTill;\n if (time.includes(\"T\")) {\n const newDate = offer.startDeliveryDate.split(/[TZ]/);\n time = `${newDate[0]} ${newDate[1]}`;\n }\n\n const offerValidToLocal = getStandradDateTime(\n utcToLocalTime,\n time\n );\n\n offer.validTill = offerValidToLocal.split(\" \")[0];\n offer.validTillTime = offerValidToLocal.split(\" \")[1];\n } else {\n offer.validTill = null;\n offer.validTillTime = null;\n }\n\n if (offer.startDeliveryDate) {\n let time = offer.startDeliveryDate;\n if (time.includes(\"T\")) {\n const newDate = offer.startDeliveryDate.split(/[TZ]/);\n time = `${newDate[0]} ${newDate[1]}`;\n }\n const startDeliveryDateLocal = getStandradDateTime(\n utcToLocalTime,\n `${time}`\n );\n\n offer.startDeliveryDate = startDeliveryDateLocal.split(\" \")[0];\n offer.startDeliveryDateTime =\n startDeliveryDateLocal.split(\" \")[1];\n } else {\n offer.startDeliveryDate = null;\n offer.startDeliveryDateTime = null;\n }\n\n if (offer.endDeliveryDate) {\n let time = offer.endDeliveryDate;\n if (time.includes(\"T\")) {\n const newDate = offer.endDeliveryDate.split(/[TZ]/);\n time = `${newDate[0]} ${newDate[1]}`;\n }\n const endDeliveryDateLocal = getStandradDateTime(\n utcToLocalTime,\n time\n );\n\n offer.endDeliveryDate = endDeliveryDateLocal.split(\" \")[0];\n offer.endDeliveryDateTime = endDeliveryDateLocal.split(\" \")[1];\n } else {\n offer.endDeliveryDate = null;\n offer.endDeliveryDateTime = null;\n }\n if (offer && offer.rule && offer.rule.shippingDiscount) {\n offer.rule.total = offer.rule.shippingDiscount;\n delete offer.rule.shippingDiscount;\n }\n if (offer && offer.rule && offer.rule.cartDiscount) {\n offer.rule.total = offer.rule.cartDiscount;\n delete offer.rule.cartDiscount;\n }\n if (\n offer &&\n (offer.offerType === \"SFXGCD\" || offer.offerType === \"SFXGSD\")\n ) {\n if (!Array.isArray(offer.rule)) {\n offer.rule = [offer.rule];\n }\n offer.rule =\n offer.rule &&\n offer.rule.map((rule) => ({\n total:\n rule.total || rule.cartDiscount || rule.shippingDiscount,\n timeSlots: rule.timeSlots,\n maxDiscount: rule.maxDiscount,\n cartPrice: rule.cartPrice,\n }));\n }\n if (offer && offer.rule && offer.rule.pwpTagId) {\n offer.rule.total = offer.rule.get;\n delete offer.rule.get;\n }\n if (offer && offer.rule && offer.rule.timeSlots) {\n offer.timeSlots = offer.rule.timeSlots;\n delete offer.rule.timeSlots;\n }\n\n if (offer && offer.rule && offer.rule.tagIds) {\n offer.tagIds = offer.rule.tagIds;\n delete offer.rule.tagIds;\n }\n const newDataArray = offer?.userSet?.data?.map((userSetData) => {\n if (userSetData.date) {\n userSetData.date = getStandradDateTime(\n utcToLocalTime,\n userSetData.date\n ).split(\" \")[0];\n }\n if (userSetData.startDate) {\n userSetData.startDate = getStandradDateTime(\n utcToLocalTime,\n userSetData.startDate\n ).split(\" \")[0];\n }\n if (userSetData.endDate) {\n userSetData.endDate = getStandradDateTime(\n utcToLocalTime,\n userSetData.endDate\n ).split(\" \")[0];\n }\n return userSetData;\n });\n\n offer[\"userSet\"] = {\n ...offer.userSet,\n data: newDataArray,\n };\n offer.method = \"edit\";\n return offer;\n },\n }}\n />\n );\n }\n}\n\nexport default Offer;\n","import React from \"react\";\nimport {\n BaseForm,\n CategorySearch,\n Input,\n MultiTextInput,\n Upload,\n Select,\n Searchable,\n SingleDatePicker,\n Radio,\n VALIDATION_TYPES,\n MultiSelect,\n BrandSearch,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport moment from \"moment\";\nimport API from \"../../../../lib/api\";\nimport Loader from \"../../../../components/Loader\";\nimport deleteIcon from \"./delete-icon.svg\";\nimport Image from \"../../../../components/Image\";\nimport SelectStoresSearch from \"../../../../components/SelectStoresSearch\";\nimport infoIcon from \"./info-icon.svg\";\n\nimport \"./style.css\";\nimport { isExtensionEnabled } from \"../../../../lib/auth\";\nimport LayoutVisibility from \"../../../settings/Themes/Layouts/HelperComponents/LayoutVisibility\";\nimport { is_Domain_Scarlet, is_Staging } from \"../../../../utils/domainCheck\";\n\n\nconst getTimes = () => {\n let times = [];\n for (let i = 0; i <= 23; i++) {\n if (i < 10) {\n times.push(`0${i}:00`);\n times.push(`0${i}:30`);\n } else {\n times.push(`${i}:00`);\n times.push(`${i}:30`);\n }\n }\n return times;\n};\n\nconst removeSeconds = (status, time) => {\n let hourMinutes = [];\n if (status === \"start\") {\n hourMinutes =\n time &&\n time.startTime &&\n time.startTime.split(\" \")[1] &&\n time.startTime.split(\" \")[1].split(\":\");\n } else if (status === \"end\") {\n hourMinutes =\n time &&\n time.endTime &&\n time.endTime.split(\" \")[1] &&\n time.endTime.split(\" \")[1].split(\":\");\n }\n hourMinutes && hourMinutes.pop();\n hourMinutes = hourMinutes && hourMinutes.join(\":\");\n return hourMinutes;\n};\n\nclass BannerEditForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n values: {\n ...(props.value || {}),\n },\n submitting: false,\n };\n\n if (!this.props.value) {\n let value = this.state.values;\n if (this.props.method === \"add\") {\n value.scope = props.options.scopes.global;\n value.startTime = moment().format(\"YYYY-MM-DD HH:mm:ss\");\n }\n }\n }\n onDelete = () => {\n if (this.props.value) {\n let value = this.props.value;\n let { pageTypes } = this.props.options;\n value.linkUrl = value.linkUrl.replace(/^\\//, \"\");\n switch (value.pageType) {\n case pageTypes.category:\n value.categoryUrl = this.state.values.categoryUrl;\n break;\n case pageTypes.brand:\n value.brandUrl = this.state.values.brandUrl;\n break;\n case pageTypes.productTag:\n value.productTagUrl = this.state.values.productTagUrl;\n break;\n case pageTypes.search:\n value.searchUrl = this.state.values.searchUrl;\n break;\n default:\n break;\n }\n }\n this.props.onDelete();\n };\n\n beforeSubmit = () => {\n this.setState({\n submitting: true\n })\n }\n \n componentDidMount() {\n let { pageTypes } = this.props.options;\n if (this.props.method === \"add\") {\n this.setState({ loader: true });\n }\n if (this.state.values && this.props.method === \"edit\") {\n let pageType = this.state.values.pageType;\n let values = Object.assign({}, this.state.values);\n let url = values.url || [];\n values.linkUrl = values.linkUrl.replace(/^\\//, \"\");\n let params = \"\";\n this.setState({\n values,\n loader: false,\n });\n if (url.length > 0) {\n url.forEach((slug, i, arr) => {\n params += `slug=${slug}`;\n if (arr.length - 1 > i) {\n params += `&`;\n }\n });\n }\n if (pageType === pageTypes.category && url.length > 0) {\n let categoryApi = new API({\n url: `/catalogue-service/category?${params}`,\n });\n categoryApi.get().then((response) => {\n let category = response.data.category;\n values.categoryUrl = category;\n this.setState({\n values,\n loader: true,\n });\n });\n } else if (pageType === pageTypes.brand && url.length > 0) {\n let brandApi = new API({ url: `/catalogue-service/brand?${params}` });\n brandApi\n .get()\n .then((response) => {\n let brand = response.data.brand;\n values.brandUrl = brand;\n this.setState({\n values,\n loader: true,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n } else if (pageType === pageTypes.productTag && url.length > 0) {\n let tagApi = new API({ url: `/catalogue-service/tag?${params}` });\n tagApi\n .get()\n .then((response) => {\n let tag = response.data.tag;\n values.productTagUrl = tag;\n this.setState({\n values,\n loader: true,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n } else if (pageType === pageTypes.search && url.length > 0) {\n values.searchUrl = url;\n this.setState({\n values,\n loader: true,\n });\n } else {\n this.setState({ loader: true });\n }\n }\n }\n render() {\n let { Form } = this.components;\n let { SubmitButton, CancelButton } = this.buttons;\n let values = this.state.values;\n const is_Scarlet_Prod = is_Domain_Scarlet() && !is_Staging();\n const edit = this.props.method === \"edit\";\n const {\n stores,\n multiStoreEnabled,\n pages,\n productTagEnabled,\n brandsEnabled,\n pageTypes,\n scopes,\n availableLangs,\n } = this.props.options;\n let scope = !(values && values.scope !== scopes.storeSpecific);\n let pageType = values && values.pageType;\n let startTimePlaceholder = removeSeconds(\"start\", values);\n let endTimePlaceholder = removeSeconds(\"end\", values);\n let options = [\n {\n text: getMessage(\"banners.editForm.radio.option.global\"),\n value: values && values.scope === scopes.global ? scopes.global : \"\",\n },\n ];\n\n if (multiStoreEnabled) {\n options.push({\n text: getMessage(\"banners.editForm.radio.option.storeSpecific\"),\n value: scopes.storeSpecific,\n });\n }\n return (\n
    \n \n
    \n
    \n \n {pageType &&\n pageType !== pageTypes.home &&\n (this.state.loader ? (\n
    \n {pageType === pageTypes.category && (\n \n )}\n {pageType === pageTypes.brand && brandsEnabled && (\n \n )}\n {pageType === pageTypes.productTag && productTagEnabled && (\n response.data.tag || []}\n multiple\n {...this.generateStateMappers({\n stateKeys: [\"productTagUrl\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n )}\n {pageType === pageTypes.search && (\n
    \n \n
    \n )}\n
    \n ) : (\n \n ))}\n
    \n
    \n \n {multiStoreEnabled && stores && scope && (\n
    \n store.hasPicking || store.hasSelfCheckout\n )}\n stateKey=\"storeId\"\n required\n />\n
    \n )}\n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n \"note\"\n
    \n
    Note:
    \n
    \n * The link should be relative to the store url eg:\n product/Xioami or categories/Groceries\n
    \n
    \n
    \n \n
    \n\n
    \n {isExtensionEnabled(\"MultiLingualSupport\") && (\n {\n return {\n text: language.name,\n value: language.code,\n };\n })}\n {...this.generateStateMappers({\n stateKeys: [\"language\"],\n loseEmphasisOnFill: true,\n })}\n />\n )}\n
    \n {!is_Scarlet_Prod && (\n
    \n \n
    \n )}\n
    \n
    \n {edit && (\n \n \"delete\"\n {getMessage(\"banners.editForm.button.delete\")}\n \n )}\n \n {getMessage(\"banners.editForm.button.cancel\")}\n \n \n {getMessage(\"banners.editForm.button.save\")}\n \n
    \n \n );\n }\n}\n\nexport default BannerEditForm;\n","import React from \"react\";\nimport {\n BaseForm,\n Select,\n VALIDATION_TYPES,\n Searchable,\n BrandSearch,\n CategorySearch,\n Input,\n} from \"../../../../components/Form\";\n\nimport { getMessage } from \"../../../../lib/translator\";\nimport { isExtensionEnabled } from \"../../../../lib/auth\";\n\nexport default class BannerFilters extends BaseForm {\n render() {\n const { SubmitButton, ClearButton } = this.buttons;\n const { Form } = this.components;\n const { stores, multiStoreEnabled, pages, availableLangs } =\n this.props.options;\n const { pageType } = this.state.values;\n return (\n
    \n
    \n {pages && (\n \n )}\n {multiStoreEnabled && stores && (\n store.hasPicking || store.hasSelfCheckout)\n .map((store) => {\n return {\n text: store.name,\n value: store.id,\n };\n })}\n {...this.generateStateMappers({\n stateKeys: [\"storeId\"],\n loseEmphasisOnFill: true,\n })}\n />\n )}\n {isExtensionEnabled(\"MultiLingualSupport\") && (\n {\n return {\n text: language.name,\n value: language.code,\n };\n })}\n {...this.generateStateMappers({\n stateKeys: [\"language\"],\n loseEmphasisOnFill: true,\n })}\n />\n )}\n {pageType === \"CATEGORY\" && (\n \n )}\n {pageType === \"BRAND\" && isExtensionEnabled(\"MultiBrandSupport\") && (\n \n )}\n {pageType === \"PRODUCT_TAG\" &&\n isExtensionEnabled(\"ProductTagSupport\") && (\n response.data.tag || []}\n createButton={getMessage(\"product.form.tag.addButton\")}\n {...this.generateStateMappers({\n stateKeys: [\"PRODUCT_TAG\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n )}\n {pageType === \"SEARCH\" && (\n \n )}\n
    \n\n {getMessage(\"shifts.filters.submitText\")}\n \n {getMessage(\"shifts.filters.clearFiltersText\")}\n \n
    \n );\n }\n}\n","import React from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport PropTypes from \"prop-types\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport EmptyState from \"../../../components/EmptyState\";\nimport Table from \"../../../components/Table\";\nimport HelpCard from \"../../../components/HelpCard\";\nimport HelpWidget from \"../../../components/HelpWidget\";\nimport Loader from \"../../../components/Loader\";\nimport Pagination from \"../../../components/Pagination\";\nimport { Popup as Modal, Dialog } from \"../../../components/Popup\";\nimport API from \"../../../lib/api\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { get } from \"../../../lib/storage\";\nimport { getDefaultStore } from \"../../../containers/StoreSelector\";\nimport { isExtensionEnabled, isEnterprise } from \"../../../lib/auth\";\nimport {\n SortableContainer,\n SortableElement,\n arrayMove,\n} from \"react-sortable-hoc\";\n\nimport \"../../../containers/ListingPage/style.css\";\nimport \"./style.css\";\n\nexport const TABLE_ACTIONS = {\n ADD: \"ADD\",\n EDIT: \"EDIT\",\n VIEW: \"VIEW\",\n DELETE: \"DELETE\",\n FILTER: \"FILTER\",\n REFRESH: \"REFRESH\",\n UPDATE: \"UPDATE\",\n SET_API_PARAMS: \"SET_API_PARAMS\",\n};\n\nconst NullComponent = () => null;\n\nconst SortableItem = SortableElement((props) => {\n let { row, Row, onAction, apiParams, rowIndex } = props;\n return (\n \n );\n});\n\nconst SortableList = SortableContainer((props) => {\n return (\n
    \n {props.viewData &&\n props.viewData.map((row, index) => (\n \n ))}\n
    \n );\n});\n\nclass DraggableListingPage extends React.Component {\n constructor(props) {\n super(props);\n let searchParams = Object.assign(\n {},\n ...this.props.router.location.search\n .slice(1)\n .split(\"&\")\n .filter(Boolean)\n .map((keystr) => {\n keystr = keystr.split(\"=\");\n return {\n [keystr[0]]: decodeURIComponent(keystr[1]),\n };\n })\n );\n if (Object.keys(searchParams).length > 0) {\n window.localStorage.setItem(this.props.className, 1);\n }\n let apiParams = {};\n if (props.api) {\n if (props.api.params) {\n apiParams = props.api.params;\n }\n if (props.storeDependent && isExtensionEnabled(\"MultiStoreSupport\")) {\n apiParams.storeId = get(\"store\") || getDefaultStore().storeId;\n }\n }\n this.state = {\n data: {\n items: null,\n paging: null,\n filters: searchParams || {}, // Corresponds to the filters applied to the API\n viewItems: null,\n },\n filters: {\n // Corresponds to the state of the 'filters' view\n shown: Object.keys(searchParams).length > 0,\n },\n apiParams: apiParams,\n loaders: {\n data: false,\n },\n form: {\n shown: false,\n rowIndex: -1, // The row being edited\n data: null,\n },\n deleteDialog: {\n shown: false,\n data: {},\n },\n errorDialog: {\n shown: false,\n message: \"\",\n title: \"\",\n },\n saveBanner: false,\n firstLoadDone: false, // Indicate that we have gotten results from API at least once\n };\n\n this.primaryKey = this.props.primaryKey || \"id\";\n\n if (props.api && props.api.url) {\n this.api = new API({ url: props.api.url });\n }\n\n /* Default hooks */\n // Method to extract data from the API call made\n this._transformResponse = (response) => response;\n this._transformSubmit = (form) => form;\n\n /* Hook overrides */\n if (props.api && props.api.transform) {\n this._transformResponse = props.api.transform;\n }\n if (props.form && props.form.transformSubmit) {\n this._transformSubmit = props.form.transformSubmit;\n }\n if (props.updateView) {\n this.updateView = this.updateView.bind(this);\n }\n\n this._showDataLoader = this._showDataLoader.bind(this);\n this._hideDataLoader = this._hideDataLoader.bind(this);\n this.changePage = this.changePage.bind(this);\n this.performAction = this.performAction.bind(this);\n this._showForm = this._showForm.bind(this);\n this._hideForm = this._hideForm.bind(this);\n this._showFilters = this._showFilters.bind(this);\n this._hideFilters = this._hideFilters.bind(this);\n this._toggleFilters = this._toggleFilters.bind(this);\n this.createResource = this.createResource.bind(this);\n this.modifyResource = this.modifyResource.bind(this);\n this.getResource = this.getResource.bind(this);\n this.applyFilters = this.applyFilters.bind(this);\n this.clearFilters = this.clearFilters.bind(this);\n this.confirmDelete = this.confirmDelete.bind(this);\n this.throwError = this.throwError.bind(this);\n this._showDeleteDialog = this._showDeleteDialog.bind(this);\n this._hideDeleteDialog = this._hideDeleteDialog.bind(this);\n this._showErrorDialog = this._showErrorDialog.bind(this);\n this._hideErrorDialog = this._hideErrorDialog.bind(this);\n this.onSortEnd = this.onSortEnd.bind(this);\n this.onDraggableSubmit = this.onDraggableSubmit.bind(this);\n this.onAddBanner = this.onAddBanner.bind(this);\n this.handleMove = this.handleMove.bind(this);\n this.closeDragDialog = this.closeDragDialog.bind(this);\n }\n // Some data lookup methods\n _getRow(data) {\n let result = {\n data: null,\n index: -1,\n };\n let { items } = this.state.data;\n for (let i = 0, len = items.length; i < len; i++) {\n let item = items[i];\n let matched = true;\n for (let key in data) {\n if (!(key in item) || item[key] !== data[key]) {\n matched = false;\n break;\n }\n }\n if (matched) {\n result.data = item;\n result.index = i;\n break;\n }\n }\n return result;\n }\n // Some utility methods to manage states\n _showDataLoader() {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.loaders.data = true;\n return newState;\n });\n }\n _hideDataLoader() {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.loaders.data = false;\n return newState;\n });\n }\n _showForm(rowIndex, data) {\n // If rowIndex is specified, then a particular row is being edited\n if (this.props.form && this.props.form.component) {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.form.shown = true;\n newState.form.rowIndex = isFinite(rowIndex) ? rowIndex : -1;\n if (data) {\n newState.form.data = data;\n }\n return newState;\n });\n }\n }\n _hideForm() {\n // Clear the form and hide it\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.form.shown = false;\n newState.form.rowIndex = -1;\n newState.form.data = null;\n return newState;\n });\n }\n _showFilters() {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.filters.shown = true;\n return newState;\n });\n }\n _hideFilters() {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.filters.shown = false;\n return newState;\n });\n }\n _toggleFilters() {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.filters.shown = !prevState.filters.shown;\n return newState;\n });\n }\n _hideDeleteDialog() {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.deleteDialog.shown = false;\n return newState;\n });\n }\n _showDeleteDialog() {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.deleteDialog.shown = true;\n return newState;\n });\n }\n _hideErrorDialog() {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.errorDialog.shown = false;\n newState.errorDialog.message = \"\";\n newState.errorDialog.title = \"\";\n return newState;\n });\n }\n _showErrorDialog() {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.errorDialog.shown = true;\n return newState;\n });\n }\n // Methods to manage data via API\n /**\n * Makes API call to create the resource\n * @param {object} data - Data to be created in DB\n * @return {Oject} newState - updated state [Immutated]\n */\n createResource(data) {\n let api = new API({\n url: this.props.api.url,\n });\n let params =\n this.props.form && this.props.form.overwriteWithApiParams === false\n ? Object.assign({}, this.state.apiParams, this._transformSubmit(data))\n : Object.assign({}, this._transformSubmit(data), this.state.apiParams);\n return api\n .post(params)\n .then(\n (response) => {\n let data = this._transformResponse(response);\n this.setState({\n pageType: data && data.pageType,\n id: data && data.id,\n });\n /* Show new entry at top of the table */\n if (this.props.form && this.props.form.filterBeforeAdding) {\n let filterBeforeAdding = this.props.form.filterBeforeAdding;\n data = filterBeforeAdding(data, this);\n }\n if (data) {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n let updatedItems = newState.data.items;\n this.props.addNewItemToLast\n ? updatedItems.push(data)\n : updatedItems.unshift(data);\n newState.data.items = updatedItems;\n const updatedPaging = newState.data.paging;\n updatedPaging.count = (updatedPaging.count || 0) + 1;\n newState.data.paging = updatedPaging;\n return newState;\n });\n }\n this.viewData = this.props.updateView\n ? this.state.data.viewItems && this.state.data.viewItems.length > 0\n ? this.state.data.viewItems\n : this.state.data.items\n : this.state.data.items;\n if (this.viewData) {\n this.onAddBanner();\n }\n this._hideForm();\n },\n (error) => {\n this.throwError(error);\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n modifyResource(data) {\n // Make an API call to update the resource\n let api = new API({\n url: this.props.api.url + \"/\" + data[this.primaryKey],\n });\n let params =\n this.props.form && this.props.form.overwriteWithApiParams === false\n ? Object.assign({}, this.state.apiParams, this._transformSubmit(data))\n : Object.assign({}, this._transformSubmit(data), this.state.apiParams);\n return api\n .put(params)\n .then(\n (response) => {\n /* Update the table row */\n if (this.props.form && this.props.form.filterBeforeAdding) {\n let filterBeforeAdding = this.props.form.filterBeforeAdding;\n data = filterBeforeAdding(data, this);\n }\n let updatedRow = this._transformResponse(response);\n let row = this._getRow({\n [this.primaryKey]: updatedRow[this.primaryKey],\n });\n if (data) {\n if (row.index > -1) {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n let updatedItems = newState.data.items;\n updatedItems.splice(row.index, 1, updatedRow);\n newState.data.items = updatedItems;\n return newState;\n });\n }\n } else {\n if (row.index > -1) {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n let updatedItems = newState.data.items;\n updatedItems.splice(row.index, 1);\n newState.data.items = updatedItems;\n const updatedPaging = newState.data.paging;\n updatedPaging.count = updatedPaging.count - 1;\n newState.data.paging = updatedPaging;\n return newState;\n });\n }\n }\n this.props.api &&\n this.props.api.afterSubmit &&\n this.props.api.afterSubmit(response);\n this.viewData = this.props.updateView\n ? this.state.data.viewItems && this.state.data.viewItems.length > 0\n ? this.state.data.viewItems\n : this.state.data.items\n : this.state.data.items;\n this._hideForm();\n },\n (error) => {\n this.throwError(error);\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n /**\n * Makes API call to delete the resource\n * @param {object} data - Data to be deleted from DB\n * @return {Oject} newState - updated state [Immutated]\n */\n deleteResource(data) {\n let api = new API({\n url: this.props.api.url + \"/\" + data[this.primaryKey],\n });\n let params = Object.assign({}, data, this.state.apiParams);\n api\n .delete(params)\n .then(\n (response) => {\n /* Update the table row */\n let row = this._getRow({\n [this.primaryKey]: data[this.primaryKey],\n });\n if (row.index > -1) {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n let updatedItems = newState.data.items;\n updatedItems.splice(row.index, 1);\n newState.data.items = updatedItems;\n const updatedPaging = newState.data.paging;\n updatedPaging.count = updatedPaging.count - 1;\n newState.data.paging = updatedPaging;\n return newState;\n });\n }\n this.viewData = this.props.updateView\n ? this.state.data.viewItems && this.state.data.viewItems.length > 0\n ? this.state.data.viewItems\n : this.state.data.items\n : this.state.data.items;\n },\n (error) => {\n this.throwError(error, getMessage(\"errorDialog.delete.error.title\"));\n }\n )\n .then(this._hideForm)\n .catch((error) => {\n console.error(error);\n });\n }\n\n getResource(data) {\n let api = new API({\n url: this.props.api.url + \"/\" + data[this.primaryKey],\n });\n let params = Object.assign(\n {},\n this._transformSubmit(data),\n this.state.apiParams\n );\n api\n .get(params)\n .then(\n (response) => {\n /* Update the table row */\n let updatedRow = this._transformResponse(response);\n let row = this._getRow({\n [this.primaryKey]: updatedRow[this.primaryKey],\n });\n if (row.index > -1) {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n let updatedItems = newState.data.items;\n updatedItems.splice(row.index, 1, updatedRow);\n newState.data.items = updatedItems;\n return newState;\n });\n }\n this.props.api &&\n this.props.api.afterSubmit &&\n this.props.api.afterSubmit(response);\n\n this._hideForm();\n },\n (error) => {\n this.throwError(error);\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n fetchTableData(params = {}) {\n if (!this.api) {\n return;\n }\n this._showDataLoader();\n if (Object.keys(params).length > 0) {\n params = Object.assign({}, this.state.apiParams, params);\n } else {\n params = Object.assign({}, params, this.state.apiParams);\n }\n return this.api\n .get(params)\n .then((response) => {\n this.setState(\n (prevState) => {\n let newState = Object.assign({}, prevState);\n newState.data.items = this._transformResponse(response);\n if (this.props.updateView) {\n newState.data.viewItems = this._transformResponse(response);\n }\n\n newState.data.paging = (({ count, limit, offset }) => ({\n count,\n limit,\n offset,\n }))(response.data);\n newState.firstLoadDone = true;\n return newState;\n },\n () => {\n this.viewData = this.props.updateView\n ? this.state.data.viewItems &&\n this.state.data.viewItems.length > 0\n ? this.state.data.viewItems\n : this.state.data.items\n : this.state.data.items;\n this.previousData = this.viewData;\n }\n );\n })\n .then(this._hideDataLoader)\n .catch((error) => {\n if (error.code === 404) {\n this.setState(\n (prevState) => {\n let newState = Object.assign({}, prevState);\n newState.data.items = [];\n return newState;\n },\n () => {\n this._hideDataLoader();\n }\n );\n } else if (error.code === 401) {\n throw error;\n }\n console.error(error);\n });\n }\n changePage(page) {\n window.localStorage.setItem(this.props.className, page); // necessary for pagination\n if (Object.keys(this.state.data.filters).length) {\n this.applyFilters(this.state.data.filters, page);\n } else {\n this.fetchTableData({ page });\n }\n }\n applyFilters(filters, page = 1) {\n this.setState({ saveBanner: false });\n window.localStorage.setItem(this.props.className, page); // necessary for pagination\n var transformedFilters = filters;\n if (this.props.filters && this.props.filters.transformSubmit) {\n transformedFilters = this.props.filters.transformSubmit(filters);\n }\n let params = Object.assign(\n {\n offset: 0, // Reset page to 1 if applying filters\n page: page,\n },\n transformedFilters\n );\n this.setState(\n (prevState) => {\n let newState = Object.assign({}, prevState);\n newState.data.filters = filters;\n return newState;\n },\n () => {\n this.fetchTableData(params);\n }\n );\n }\n clearFilters() {\n window.localStorage.setItem(this.props.className, 1);\n this.setState(\n (prevState) => {\n let newState = Object.assign({}, prevState);\n newState.data.filters = {};\n return newState;\n },\n () => {\n this.fetchTableData();\n }\n );\n }\n confirmDelete() {\n this.deleteResource(this.state.deleteDialog.data);\n this._hideDeleteDialog();\n }\n throwError(error, title) {\n if (error.code === 400) {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.errorDialog.message = error.message; // if string does not have a colon\n newState.errorDialog.title = title || \"\";\n return newState;\n }, this._showErrorDialog());\n } else {\n throw error;\n }\n }\n performAction(action, data, updates, deleteRow = false) {\n // action: (string) Action to perform\n // data: The data needed to search a specific a row\n // updates: The data to update the row with\n // deleteRow: delete the row from view without making api call\n if (action in TABLE_ACTIONS) {\n switch (action) {\n case TABLE_ACTIONS.ADD:\n if (this.props.form) {\n this._showForm(-1, data);\n }\n break;\n case TABLE_ACTIONS.EDIT:\n if (this.props.form) {\n // Lookup row number for given data and send that row number\n let row = this._getRow(data);\n if (row.index >= 0) {\n if (updates) {\n // If there are updates, just update row instead of showing form\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n let updatedItems = newState.data.items;\n updatedItems.splice(\n row.index,\n 1,\n Object.assign({}, row.data, updates)\n );\n newState.data.items = updatedItems;\n return newState;\n });\n } else {\n this._showForm(row.index);\n }\n }\n }\n break;\n case TABLE_ACTIONS.UPDATE:\n let row = this._getRow(data);\n if (row.index >= 0 && updates) {\n let params = Object.assign({}, data, updates);\n return this.modifyResource(params);\n }\n break;\n case TABLE_ACTIONS.DELETE:\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.deleteDialog.data = data;\n return newState;\n });\n this._showDeleteDialog();\n break;\n case TABLE_ACTIONS.FILTER:\n // To the user, search & filters are mutually exclusive, but internally,\n // both are implemented as filters\n this.applyFilters(data);\n break;\n case TABLE_ACTIONS.REFRESH:\n let params = {};\n if (data && deleteRow) {\n // If data and delete row are not empty, simply delete the row from the view\n let row = this._getRow(data);\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n let updatedItems = newState.data.items.slice();\n updatedItems.splice(row.index, 1);\n newState.data.items = updatedItems;\n return newState;\n });\n return;\n } else if (data && updates) {\n // If 'data' and 'updates' are not empty, simply update the view by pushing 'updates' into the state\n let row = this._getRow(data);\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n let updatedItems = newState.data.items;\n updatedItems.splice(\n row.index,\n 1,\n Object.assign({}, row.data, updates)\n );\n newState.data.items = updatedItems;\n return newState;\n });\n } else if (data) {\n // TODO: If 'data' is not empty, fetch details for that row and update the data for that row\n this.getResource(data);\n return;\n } else if (this.state.data && this.state.data.filters) {\n // if filters are applied on the table then refresh the page with filters\n params = Object.assign(\n {\n offset: 0, // Reset page to 1 if applying filters\n },\n this.state.data.filters\n );\n }\n this.fetchTableData(params);\n break;\n case TABLE_ACTIONS.SET_API_PARAMS:\n this.setState((prevState) => {\n return {\n apiParams: Object.assign({}, prevState.apiParams, data),\n };\n }, this.fetchTableData);\n break;\n default:\n break;\n }\n } else if (\n this.props.tableProperties.actions &&\n action in this.props.tableProperties.actions\n ) {\n // Perform custom action\n }\n }\n componentDidMount() {\n this.fetchTableData({\n ...this.state.data.filters,\n page: window.localStorage.getItem(this.props.className),\n });\n }\n\n componentWillUnmount() {\n this.api && this.api.cancel();\n }\n\n updateView(data, key) {\n if (this.props.updateView) {\n let newView = this.props.updateView(data, key);\n let newData = Object.assign({}, this.state.data);\n newData.viewItems = newView;\n this.setState({\n data: newData,\n });\n }\n }\n\n closeDragDialog() {\n this.setState({ isDrag: false });\n }\n\n onSortEnd({ oldIndex, newIndex }) {\n let beforeSwap = JSON.parse(JSON.stringify(this.viewData));\n this.viewData =\n this.viewData && arrayMove(this.viewData, oldIndex, newIndex);\n let afterSwap = JSON.parse(JSON.stringify(this.viewData));\n\n beforeSwap.map((ele, index) => {\n if (ele.id !== afterSwap[index].id) {\n this.setState({ saveBanner: true });\n }\n return null;\n });\n\n let updatedArray = afterSwap.map((banner, index) => {\n let newSequence = Object.assign(\n { ...banner },\n { sequence: beforeSwap[index].sequence }\n );\n return newSequence;\n });\n\n this.viewData = updatedArray;\n this.forceUpdate();\n }\n\n onAddBanner() {\n const filter =\n this.state?.data?.filters?.hasOwnProperty(\"pageType\") || false;\n\n const params = {\n pageType: this.state.pageType || \"HOME\",\n };\n\n const updateBannerSequences = (banners) => {\n const promises = banners.map((banner) => {\n if (this.state.id !== banner.id) {\n const api = new API({\n url: `${this.props.api.url}/${banner.id}`,\n });\n return api\n .put({ sequence: banner.sequence + 1 })\n .then((response) => {\n if (this.viewData) {\n this.viewData = this.viewData.map((data) =>\n response.data.banner.id === data.id\n ? { ...data, sequence: response.data.banner.sequence }\n : data\n );\n this.previousData = this.viewData;\n }\n })\n .catch((error) => {\n console.error(`Error updating banner ID: ${banner.id}`, error);\n });\n }\n return Promise.resolve();\n });\n return Promise.all(promises);\n };\n\n const isPageTypeMatching =\n (!filter && this.state.pageType === \"HOME\") ||\n (filter && this.state.data.filters.pageType === this.state.pageType);\n\n if (isPageTypeMatching) {\n this.setState({\n loaders: {\n data: true,\n },\n });\n\n const filteredData = (this.previousData || []).filter(\n (banner) => banner.pageType === this.state.pageType\n );\n\n updateBannerSequences(filteredData)\n .then(() => {\n this.setState({\n isDrag: true,\n loaders: {\n data: false,\n },\n });\n })\n .catch((error) => {\n console.error(\n \"Error during banner update in isPageTypeMatching:\",\n error\n );\n });\n } else {\n this.setState({\n loaders: {\n data: true,\n },\n });\n\n if (this.api) {\n this.api\n .get(params)\n .then((response) => this._transformResponse(response) || [])\n .then((response) => updateBannerSequences(response))\n .then(() => {\n this.setState({\n isDrag: true,\n loaders: {\n data: false,\n },\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n }\n\n onDraggableSubmit() {\n const a = this.viewData;\n const b = this.previousData;\n\n if (a && b) {\n const promises = [];\n for (let index = 0; index < a.length; index++) {\n for (let index1 = 0; index1 < b.length; index1++) {\n if (\n a[index].id === b[index1].id &&\n a[index].sequence !== b[index1].sequence\n ) {\n const api = new API({\n url: `${this.props.api.url}/${a[index].id}`,\n });\n\n const promise = api\n .put({ sequence: a[index].sequence })\n .then(() => {})\n .catch((error) => {\n console.error(\n `Error updating banner ID: ${a[index].id}`,\n error\n );\n });\n\n promises.push(promise);\n }\n }\n }\n\n // Only proceed if there are promises to resolve\n if (promises.length > 0) {\n this.setState({\n loaders: {\n data: true,\n },\n });\n Promise.all(promises)\n .then(() => {\n this.setState({\n isDrag: true,\n loaders: {\n data: false,\n },\n });\n })\n .catch((error) => {\n console.error(\"Error during banner updates:\", error);\n });\n } else {\n console.log(\"No updates required.\");\n }\n } else {\n console.log(\"Invalid data for submission.\");\n }\n // Save the current state to previousData\n this.previousData = this.viewData;\n }\n\n handleMove(event) {\n if (window.innerHeight - event.clientY < 50) {\n window.scrollBy(0, 10);\n } else if (event.clientY < 50) {\n window.scrollBy(0, -10);\n }\n }\n\n render() {\n // TODO: Add support for replacing default messages with localized strings\n let { props } = this;\n let view = null;\n let data = this.state.data;\n let filtersCount = Object.keys(data.filters).filter((key) =>\n Boolean(data.filters[key])\n ).length;\n let filtersApplied = filtersCount > 0;\n let emptyStateShown = false;\n if (\n !this.api ||\n (data.paging &&\n data.paging.count === 0 &&\n !(data.items && data.items.length > 0)) ||\n (data.items && data.items.length === 0)\n ) {\n if (filtersApplied) {\n view =
    No results found
    ;\n } else {\n emptyStateShown = true;\n let emptyStateProps = Object.assign({}, props.emptyState);\n let emptyState = ;\n let helpItems = null;\n if (props.helpItems && !isEnterprise()) {\n helpItems = (\n \n {props.helpItems.instructions.map((instruction, index) => (\n \n {instruction.description}\n \n ))}\n \n );\n }\n view = (\n
    \n {emptyState}\n {helpItems}\n
    \n );\n }\n } else if (data.items && props.tableProperties.row && this.viewData) {\n let Row = props.tableProperties.row;\n let { count, offset, limit } = data.paging;\n count = Number(count);\n offset = Number(offset);\n limit = Number(limit);\n let totalPages = Math.ceil(count / limit);\n const page = window.localStorage.getItem(this.props.className);\n if (\n this.state &&\n this.state.data &&\n Object.keys(this.state.data.filters).length === 0\n ) {\n this.viewData = this.viewData.filter((banner) => {\n return banner.pageType === \"HOME\";\n });\n }\n\n let emptyStateProps = Object.assign({}, props.emptyState);\n let emptyState = ;\n\n let helpItems = null;\n if (props.helpItems && !isEnterprise()) {\n helpItems = (\n \n {props.helpItems.instructions.map((instruction, index) => (\n \n {instruction.description}\n \n ))}\n \n );\n }\n this.viewData.length === 0 && this.state.pageType !== \"HOME\"\n ? (view = (\n
    \n {emptyState}\n {helpItems}\n
    \n ))\n : (view = (\n
    \n \n \n\n {props.addToTable && (\n \n )}\n
    \n\n
    \n
    {`${getMessage(\n \"pagination.text\"\n )} ${offset + 1} - ${\n limit > 0 && offset >= 0\n ? Math.min(offset + limit, count)\n : count\n } ${getMessage(\"pagination.helperText\")} ${count}`}
    \n {totalPages > 1 ? (\n \n ) : null}\n
    \n {this.viewData &&\n this.viewData.length > 1 &&\n this.state.saveBanner && (\n
    \n \n Save\n \n
    \n )}\n
    \n ));\n }\n let HeaderActions = this.props.headerActions || NullComponent;\n const Form = props.form\n ? props.form.component || NullComponent\n : NullComponent;\n const Filters = props.filters\n ? props.filters.component || NullComponent\n : NullComponent;\n const allowDelete = props.form && props.form.allowDelete; // to allow delete action from inside the form\n if (emptyStateShown) {\n HeaderActions =\n props.emptyState && props.emptyState.actions\n ? props.emptyState.actions\n : NullComponent;\n }\n let WrapperComponent = this.props.menu\n ? AuthenticatedPage\n : ({ menu, title, storeDependent, ...props }) =>
    ;\n return (\n {\n this.performAction(TABLE_ACTIONS.SET_API_PARAMS, {\n storeId: get(\"store\"),\n });\n this.props.api &&\n this.props.api.onUpdateStore &&\n this.props.api.onUpdateStore();\n }}\n >\n
    \n

    {props.title}

    \n {(!emptyStateShown && this.state.firstLoadDone) ||\n (this.props.filters && this.props.filters.forceShow) ? (\n
    \n {this.props.filters ? (\n
    \n \n {/* {filtersCount || null} */}\n
    \n ) : null}\n \n
    \n ) : (\n emptyStateShown && (\n
    \n \n
    \n )\n )}\n
    \n {this.props.additionalViews\n ? this.props.additionalViews.map((View, index) => (\n \n ))\n : null}\n \n {this.state.firstLoadDone && (\n \n )}\n
    \n {this.state.form.shown ? (\n -1\n ? this.props.editHeading ||\n (this.props.getEditHeading &&\n this.props.getEditHeading(\n this.state.data.items[this.state.form.rowIndex]\n ))\n : this.props.addHeading ||\n (this.props.getAddHeading &&\n this.props.getAddHeading(this.state.form.data))\n }\n className={\n this.props.modalClassName ||\n (this.props.getModalClassName &&\n ((this.state.form.data &&\n this.props.getModalClassName(this.state.form.data)) ||\n (this.state.form.rowIndex > -1 &&\n this.props.getModalClassName(\n this.state.data.items[this.state.form.rowIndex]\n )))) ||\n \"\"\n }\n show={this.state.form.shown}\n close={this._hideForm}\n >\n -1\n ? this.state.data.items[this.state.form.rowIndex]\n : this.state.form.data\n }\n onSubmit={\n this.state.form.rowIndex > -1\n ? this.modifyResource\n : this.createResource\n }\n onCancel={this._hideForm}\n method={this.state.form.rowIndex > -1 ? \"edit\" : \"add\"}\n options={this.props.form && this.props.form.options}\n onDelete={\n allowDelete\n ? () =>\n this.performAction(\n \"DELETE\",\n this.state.data.items[this.state.form.rowIndex]\n )\n : null\n }\n />\n \n ) : null}\n {this.state.deleteDialog.shown && (\n \n )}\n {this.state.errorDialog.shown && (\n \n )}\n {this.state.loaders.data ? : view}\n {!emptyStateShown && this.props.additionalViewsBottom\n ? this.props.additionalViewsBottom.map((View, index) => (\n \n ))\n : null}\n \n \n );\n }\n}\n\nDraggableListingPage.propTypes = {\n title: PropTypes.string,\n api: PropTypes.shape({\n url: PropTypes.string.isRequired,\n transform: PropTypes.func,\n }),\n};\n\nexport default withRouter(({ location, history, match, ...props }) => (\n \n));\n","import React, { Component } from \"react\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport API from \"../../../lib/api\";\nimport {\n isExtensionEnabled,\n getSession,\n getExtensionDetails,\n} from \"../../../lib/auth\";\nimport BannerEditForm from \"./Forms\";\nimport BannerFilters from \"./Filters\";\nimport bannersEmpty from \"./images/banners_empty.svg\";\nimport imagePlaceholder from \"./images/image-placeholder.svg\";\nimport moment from \"moment\";\n\nimport \"./style.css\";\nimport DraggableListingPage from \"../DraggableListingPage\";\nimport {\n formatDate,\n formatTime,\n localTimeToUtc,\n utcToLocalTime,\n getStandradDateTime,\n} from \"../../../lib/datetime\";\nimport { getLanguages } from \"../../../lib/commonlyused\";\nimport { get } from \"../../../lib/storage\";\nimport { IS_STAGING } from \"../../../config/app\";\nconst eng = { name: \"English\", code: \"en\" };\n\nconst emptyState = {\n icon: bannersEmpty,\n message: getMessage(\"banners.empty.banner\"),\n actions: ({ onAction }) => (\n {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n + {getMessage(\"banners.view.add.button\")}\n \n ),\n};\n\nconst tableProperties = {\n headers: [\n getMessage(\"banners.header.image\"),\n getMessage(\"banners.header.actions\"),\n ],\n row: ({\n imageUrl,\n id,\n onAction,\n startTime,\n endTime,\n scope,\n linkUrl,\n storeId,\n }) => (\n \n \n \n {linkUrl && (\n \n \n {`${getMessage(\"banners.table.view.on.web.url\")}`}\n \n \n )}\n
    \n
    \n {getMessage(\"banners.table.validity\")}\n {startTime && endTime ? (\n \n {\" \"}\n {`${formatDate(startTime.split(\" \")[0])}, ${formatTime(\n startTime.split(\" \")[1]\n )} - ${formatDate(endTime.split(\" \")[0])}, ${formatTime(\n endTime.split(\" \")[1]\n )}`}\n \n ) : (\n getMessage(\"banners.table.na\")\n )}\n
    \n {scope && (\n
    \n {scope && {getMessage(\"banners.table.scope\")}}\n {scope === \"STORE\"\n ? window.localStorage.stores &&\n JSON.parse(window.localStorage.stores)\n .map((store) => {\n if (storeId.includes(store.id)) {\n return store.name;\n }\n return null;\n })\n .filter((name) => Boolean(name))\n .join(\", \")\n : \"Global\"}\n
    \n )}\n
    \n
    \n \n }>\n {\n onAction(TABLE_ACTIONS.EDIT, { id });\n }}\n >\n {getMessage(\"banners.action.edit\")}\n \n onAction(TABLE_ACTIONS.DELETE, { id })}>\n {getMessage(\"banners.action.delete\")}\n \n \n \n
    \n ),\n};\n\nclass ManageBanners extends Component {\n constructor(props) {\n super(props);\n this.state = {\n pages: [\n { text: getMessage(\"banners.pageType.home\"), value: \"HOME\" },\n { text: getMessage(\"banners.pageType.category\"), value: \"CATEGORY\" },\n ],\n pageTypes: {\n home: \"HOME\",\n category: \"CATEGORY\",\n brand: \"BRAND\",\n productTag: \"PRODUCT_TAG\",\n search: \"SEARCH\",\n },\n scopes: {\n global: \"GLOBAL\",\n storeSpecific: \"STORE\",\n },\n };\n }\n\n componentDidMount() {\n const productTagEnabled = isExtensionEnabled(\"ProductTagSupport\");\n const brandsEnabled = isExtensionEnabled(\"MultiBrandSupport\");\n const multiStoreEnabled = isExtensionEnabled(\"MultiStoreSupport\");\n\n this.setState({ productTagEnabled, brandsEnabled, multiStoreEnabled });\n\n if (multiStoreEnabled) {\n this.storesApi = new API({ url: \"/account-service/store\" });\n this.setState({\n stores: JSON.parse(get(\"stores\")),\n });\n }\n if (productTagEnabled) {\n let { pages } = this.state;\n pages.push({\n text: getMessage(\"banners.pageType.productTag\"),\n value: \"PRODUCT_TAG\",\n });\n this.setState({ pages });\n }\n if (brandsEnabled) {\n let { pages } = this.state;\n pages.push({\n text: getMessage(\"banners.pageType.brand\"),\n value: \"BRAND\",\n });\n this.setState({ pages });\n }\n let { pages } = this.state;\n pages.push({\n text: getMessage(\"banners.pageType.search\"),\n value: \"SEARCH\",\n });\n this.setState({ pages });\n const extension = getExtensionDetails(\"MultiLingualSupport\");\n const id = extension && extension.id;\n let availableLangs = [eng];\n if (id) {\n const api = new API({ url: `/account-service/extension/${id}` });\n api\n .get()\n .then((response) => {\n let savedLangs =\n response.data.extension.config.globalConfig.languages;\n savedLangs &&\n savedLangs.map((lng, i) => {\n let language = getLanguages().find((lang) => lang.code === lng);\n if (language && language.name !== \"english\") {\n availableLangs.push({ ...language });\n }\n return null;\n });\n this.setState({ availableLangs });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n\n render() {\n let { menu } = this.props;\n let {\n stores,\n pages,\n multiStoreEnabled,\n productTagEnabled,\n brandsEnabled,\n pageTypes,\n scopes,\n availableLangs,\n } = this.state;\n return (\n
    \n {\n let bannerData = response.data.banner;\n if (Array.isArray(bannerData)) {\n bannerData = bannerData.map((banner) => {\n let url = [...banner.url];\n switch (banner.pageType) {\n case pageTypes.category:\n banner.categoryUrl = [...url];\n break;\n case pageTypes.brand:\n banner.brandUrl = [...url];\n break;\n case pageTypes.productTag:\n banner.productTagUrl = [...url];\n break;\n case pageTypes.search:\n banner.searchUrl = [...url];\n break;\n default:\n break;\n }\n if (banner.startTime) {\n banner.startTime = getStandradDateTime(\n utcToLocalTime,\n banner.startTime\n );\n }\n\n if (banner.endTime) {\n banner.endTime = getStandradDateTime(\n utcToLocalTime,\n banner.endTime\n );\n }\n return banner;\n });\n }\n if (bannerData.startTime) {\n bannerData.startTime = getStandradDateTime(\n utcToLocalTime,\n bannerData.startTime\n );\n }\n\n if (bannerData.endTime) {\n bannerData.endTime = getStandradDateTime(\n utcToLocalTime,\n bannerData.endTime\n );\n }\n return bannerData;\n },\n }}\n editHeading={getMessage(\"banners.editForm.header\")}\n addHeading={getMessage(\"banners.addForm.header\")}\n tableProperties={tableProperties}\n modalClassName={\"manage-banners-popup\"}\n form={{\n component: BannerEditForm,\n overwriteWithApiParams: false,\n allowDelete: true,\n options: {\n multiStoreEnabled: multiStoreEnabled,\n stores: stores,\n pages: pages,\n pageTypes: pageTypes,\n scopes: scopes,\n productTagEnabled: productTagEnabled,\n brandsEnabled: brandsEnabled,\n availableLangs: availableLangs,\n },\n filterBeforeAdding: (response, _this) => {\n if (\n _this &&\n _this.state &&\n _this.state.data &&\n Object.keys(_this.state.data.filters).length === 0\n ) {\n return response;\n }\n if (\n _this &&\n _this.state &&\n _this.state.data &&\n _this.state.data.filters &&\n _this.state.data.filters.pageType === response.pageType\n ) {\n return response;\n }\n if (\n _this &&\n _this.state &&\n _this.state.data &&\n _this.state.data.filters.storeId\n ) {\n return response;\n }\n return null;\n },\n transformSubmit: (formData) => {\n let params = Object.assign({}, formData);\n let url = [];\n params.url = url;\n params.linkUrl = \"/\" + params.linkUrl;\n if (params.pageType && params.pageType === pageTypes.category) {\n url =\n params.categoryUrl &&\n params.categoryUrl.map((obj) => {\n let value = obj.slug || obj;\n return value;\n });\n delete params.categoryUrl;\n } else if (\n params.pageType &&\n params.pageType === pageTypes.brand\n ) {\n url =\n params.brandUrl &&\n params.brandUrl.map((obj) => {\n let value = obj.slug || obj;\n return value;\n });\n delete params.brandUrl;\n } else if (\n params.pageType &&\n params.pageType === pageTypes.productTag\n ) {\n url =\n params.productTagUrl &&\n params.productTagUrl.map((obj) => {\n let value = obj.slug || obj;\n return value;\n });\n delete params.productTagUrl;\n } else if (\n params.pageType &&\n params.pageType === pageTypes.search\n ) {\n url =\n params.searchUrl &&\n params.searchUrl.map((value) => {\n return value;\n });\n delete params.searchUrl;\n }\n params.url = (url && [...url]) || [];\n\n if (\n params.pageType &&\n params.pageType === pageTypes.search &&\n params.searchTerm &&\n params.url\n ) {\n url = [...params.url];\n params.url.push(...url);\n }\n\n if (\n params.pageType === pageTypes.home ||\n params.pageType === undefined\n ) {\n delete params.url;\n }\n\n if (moment(params.startTime).isSame(Date.now(), \"day\")) {\n if (params.startTime) {\n let startDate =\n params.startTime.split(\" \") || params.startTime;\n if (startDate[1]) {\n params.startTime = startDate[0] + \" \";\n params.startTime += params.bannerStartTime\n ? params.bannerStartTime + \":00\"\n : startDate[1];\n } else {\n params.startTime = params.startTime + \" \";\n params.startTime += params.bannerStartTime\n ? params.bannerStartTime + \":00\"\n : \"00:00:00\";\n }\n }\n let isBefore = new Date() > new Date(params.startTime);\n if (isBefore) {\n params.startTime =\n params.startTime || moment().format(\"YYYY-MM-DD HH:mm:ss\");\n }\n params.startTime = getStandradDateTime(\n localTimeToUtc,\n params.startTime\n );\n } else {\n if (params.startTime) {\n let startDate =\n params.startTime.split(\" \") || params.startTime;\n if (startDate[1]) {\n params.startTime = startDate[0] + \" \";\n params.startTime += params.bannerStartTime\n ? params.bannerStartTime + \":00\"\n : startDate[1];\n } else {\n params.startTime = params.startTime + \" \";\n params.startTime += params.bannerStartTime\n ? params.bannerStartTime + \":00\"\n : \"00:00:00\";\n }\n params.startTime = getStandradDateTime(\n localTimeToUtc,\n params.startTime\n );\n }\n }\n\n if (params.endTime) {\n let endDate = params.endTime.split(\" \") || params.endTime;\n if (endDate[1]) {\n params.endTime = endDate[0] + \" \";\n params.endTime += params.bannerEndTime\n ? params.bannerEndTime + \":00\"\n : endDate[1];\n } else {\n params.endTime = params.endTime + \" \";\n params.endTime += params.bannerEndTime\n ? params.bannerEndTime + \":00\"\n : \"00:00:00\";\n }\n params.endTime = getStandradDateTime(\n localTimeToUtc,\n params.endTime\n );\n }\n\n if (params.bannerStartTime) {\n delete params.bannerStartTime;\n }\n\n if (params.bannerEndTime) {\n delete params.bannerEndTime;\n }\n\n if (params.startTime === null) {\n delete params.startTime;\n }\n\n if (params.endTime === null) {\n delete params.endTime;\n }\n\n params.sequence = params.sequence ? params.sequence : 1;\n params.scope = params.scope ? params.scope : scopes.global;\n if (params.scope === scopes.global) {\n params.storeId = [];\n }\n return params;\n },\n }}\n emptyState={emptyState}\n filters={{\n component: BannerFilters,\n forceShow: true,\n options: {\n multiStoreEnabled: multiStoreEnabled,\n stores: stores,\n pages: pages,\n availableLangs: availableLangs,\n },\n transformSubmit: (formData) => {\n let data = Object.assign({}, formData);\n let { pageType } = data;\n data.url = data[pageType] && data[pageType].slug;\n if (pageType === \"SEARCH\") data.url = data[\"SEARCH_TERM\"];\n delete data[\"CATEGORY\"];\n delete data[\"BRAND\"];\n delete data[\"PRODUCT_TAG\"];\n delete data[\"SEARCH_TERM\"];\n return data;\n },\n }}\n headerActions={({ onAction }) => (\n {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n + {getMessage(\"banners.view.add.button\")}\n \n )}\n />\n
    \n );\n }\n}\n\nexport default ManageBanners;\n","import React from \"react\";\n\nfunction FilledStar(props) {\n return (\n \n \n \n );\n}\n\nexport default FilledStar;\n","import React from \"react\";\n\nfunction EmptyStar(props) {\n return (\n \n \n \n );\n}\n\nexport default EmptyStar;\n","import React, { Component } from \"react\";\n\nimport FilledStar from \"../FilledStar\";\nimport EmptyStar from \"../EmptyStar\";\n\nfunction findMaxNumber(one, two, three, four, five) {\n return Math.max(one, two, three, four, five);\n}\n\nconst DataFormater = (number) => {\n if (number > 1000000000) {\n return (number / 1000000000).toString() + \"B\";\n } else if (number > 1000000) {\n return (number / 1000000).toString() + \"M\";\n } else if (number > 1000) {\n return (number / 1000).toString() + \"K\";\n } else {\n return number;\n }\n};\n\nclass RatingAndReviews extends Component {\n render() {\n let { totalRating, avgRating, noOfReviews } = this.props;\n const totalWidth = findMaxNumber(\n noOfReviews?.one,\n noOfReviews?.two,\n noOfReviews?.three,\n noOfReviews?.four,\n noOfReviews?.five\n );\n let one = (noOfReviews?.one * 100) / totalWidth;\n let two = (noOfReviews?.two * 100) / totalWidth;\n let three = (noOfReviews?.three * 100) / totalWidth;\n let four = (noOfReviews?.four * 100) / totalWidth;\n let five = (noOfReviews?.five * 100) / totalWidth;\n const totalNumberOne = DataFormater(noOfReviews?.one);\n const totalNumberTwo = DataFormater(noOfReviews?.two);\n const totalNumberThree = DataFormater(noOfReviews?.three);\n const totalNumberFour = DataFormater(noOfReviews?.four);\n const totalNumberFive = DataFormater(noOfReviews?.five);\n totalRating = DataFormater(totalRating);\n return (\n <>\n {totalRating > 0 && (\n
    \n
    \n
    \n

    Total Ratings

    {totalRating}\n
    \n
    \n
    \n

    Average Rating

    \n
    \n {avgRating.toFixed(1)}\n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n 5\n
    \n {five > 0 && {totalNumberFive}}\n
    \n
    \n \n 4\n
    \n {four > 0 && {totalNumberFour}}\n
    \n
    \n \n 3\n
    \n {three > 0 && {totalNumberThree}}\n \n
    \n \n 2\n
    \n {two > 0 && {totalNumberTwo}}\n \n
    \n \n 1\n
    \n {one > 0 && {totalNumberOne}}\n \n \n \n )}\n \n );\n }\n}\n\nexport default RatingAndReviews;\n","/* eslint-disable react/jsx-no-literals */\nimport React from \"react\";\n\nfunction LeftArrow(props) {\n return (\n \n \n \n );\n}\n\nexport default LeftArrow;\n","/* eslint-disable react/jsx-no-literals */\nimport React from \"react\";\n\nfunction NoRating(props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default NoRating;\n","import React from \"react\";\n\nfunction ApproveIcon(props) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport default ApproveIcon;\n","import React from \"react\";\n\nfunction DisapproveIcon(props) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nexport default DisapproveIcon;\n","import React from \"react\";\n\nfunction PendingIcon(props) {\n return (\n \n \n \n \n \n \n );\n}\n\nexport default PendingIcon;\n","import React, { Component } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport { getMessage } from \"../../../lib/translator\";\nimport Tabs from \"../../../components/Tabs\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport {\n getStandradDateTime,\n utcToLocalTime,\n getPrintableTime,\n} from \"../../../lib/datetime\";\nimport { Link } from \"react-router-dom\";\nimport ListingPage from \"../../../containers/ListingPage\";\nimport ReviewStats from \"./ratingStatus\";\nimport { Radio } from \"../../../components/Form\";\nimport { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport Image from \"../../../components/Image\";\nimport \"./style.css\";\nimport API from \"../../../lib/api\";\nimport LeftArrow from \"./LeftArrow\";\nimport FilledStart from \"./FilledStar\";\nimport EmptyStar from \"./EmptyStar\";\nimport NoRating from \"./NoRating\";\nimport { Popup } from \"../../../components/Popup\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport ApproveIcon from \"./ApproveIcon\";\nimport DisapproveIcon from \"./DisapproveIcon\";\nimport PendingIcon from \"./PendingStatus\";\n\nfunction Rating(props) {\n const fullStars = Math.floor(props.rating);\n const EmptyStars = 5 - fullStars;\n const stars = [];\n for (let i = 0; i < fullStars; i++) {\n stars.push();\n }\n if (EmptyStars < 5) {\n for (let i = 0; i < EmptyStars; i++) {\n stars.push();\n }\n }\n return {stars};\n}\n\nconst getDropDownItems = (status) => {\n const items = [];\n if (status === REVIEW_STATUS.PENDING) items.push(\"APPROVED\", \"REJECTED\");\n else if (status === REVIEW_STATUS.APPROVED) items.push(\"REJECTED\");\n else if (status === REVIEW_STATUS.REJECTED) items.push(\"APPROVED\");\n return items;\n};\n\nconst REVIEW_STATUS = {\n APPROVED: \"APPROVED\",\n REJECTED: \"REJECTED\",\n PENDING: \"PENDING\",\n};\nclass ProductStatusAction extends Component {\n modifyStatus(status) {\n let id = this.props.id;\n let api = new API({ url: `/catalogue-service/product-rating/${id}` });\n return api\n .put({ id, status })\n .then((response) => {\n this.props.onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n { id: id, status: status },\n false\n );\n }, console.error)\n .catch((error) => {\n console.error(error);\n });\n }\n render() {\n let { status, onAction, id } = this.props;\n\n return (\n
    \n }>\n {getDropDownItems(status).map((action) => (\n {\n onAction(TABLE_ACTIONS.UPDATE, { id }, { status: action });\n }}\n >\n {getMessage(`marketing.action.${action}.status`)}\n \n ))}\n \n
    \n );\n }\n}\n\nclass Reviews extends Component {\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n entity: \"orders\",\n index: 0,\n totalRating: 0,\n avgRating: 0,\n noOfReviews: null,\n reviews: null,\n productType: \"All\",\n productId: null,\n showIndividaulInfo: false,\n showAllIndivisualProductReview: false,\n setProductId: null,\n productImage: null,\n productName: null,\n showPopup: false,\n selectedImage: null,\n };\n this.tabHeaders = [\"orders\", \"products\"];\n this.changeTab = this.changeTab.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleShowIndivisualProduct =\n this.handleShowIndivisualProduct.bind(this);\n this.handlePopup = this.handlePopup.bind(this);\n }\n handlePopup = (image) => {\n this.setState((prevState) => ({\n ...prevState,\n showPopup: true,\n selectedImage: image,\n }));\n };\n\n hidePopup = () => {\n this.setState((prevState) => ({\n ...prevState,\n showPopup: false,\n selectedImage: null,\n }));\n };\n\n tableProperties = {\n headers: [\n getMessage(\"review.order.table.header.orderid\"),\n getMessage(\"review.order.table.header.rating\"),\n getMessage(\"review.order.table.header.date\"),\n getMessage(\"review.order.table.header.customer\"),\n ],\n row: (props) => {\n const {\n referenceNumber,\n rating,\n title,\n review,\n customer,\n createdAt,\n images,\n } = props;\n return (\n \n \n
    \n \n #{referenceNumber}\n \n
    \n \n
    \n
    \n
    \n \n
    \n \n
    \n {title &&
    {title}
    }\n {review &&
    {review}
    }\n {images && images?.length > 0 && (\n
    \n {images.map((image) => {\n return (\n this.handlePopup(image)}\n >\n \"reviewImage\"\n
    \n );\n })}\n \n )}\n
    \n \n \n \n {\n getPrintableTime(\n getStandradDateTime(utcToLocalTime, createdAt)\n ).split(\",\")[0]\n }\n ,\n {\n getPrintableTime(\n getStandradDateTime(utcToLocalTime, createdAt)\n ).split(\",\")[1]\n }\n \n \n \n \n
    \n
    \n Date \n

    \n \n \n {\n getPrintableTime(\n getStandradDateTime(utcToLocalTime, createdAt)\n ).split(\",\")[0]\n }\n ,\n {\n getPrintableTime(\n getStandradDateTime(utcToLocalTime, createdAt)\n ).split(\",\")[1]\n }\n \n \n
    \n
    \n
    \n Customer\n

    \n {customer?.name}\n
    \n
    \n
    \n );\n },\n };\n tablePropertiesforAll = {\n headers: [\n getMessage(\"review.all.product.table.header.item\"),\n getMessage(\"review.order.table.header.rating\"),\n getMessage(\"review.order.table.header.date\"),\n getMessage(\"review.order.table.header.customer\"),\n getMessage(\"review.order.table.header.more\"),\n ],\n row: (props) => {\n const {\n product,\n rating,\n title,\n review,\n customerName,\n createdAt,\n images,\n onAction,\n status,\n id,\n } = props;\n const image = product.images ? product.images[0] : undefined;\n return (\n \n \n
    \n
    \n \n {product.name}\n
    \n
    \n \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n {title &&
    {title}
    }\n
    \n {status === REVIEW_STATUS.APPROVED ? (\n \n ) : status === REVIEW_STATUS.REJECTED ? (\n \n ) : (\n \n )}\n \n {status === REVIEW_STATUS.APPROVED\n ? \"Approved\"\n : status === REVIEW_STATUS.PENDING\n ? \"Pending\"\n : \"Disapproved\"}\n \n
    \n
    \n {review &&
    {review}
    }\n {images && images?.length > 0 && (\n
    \n {images.map((image) => {\n return (\n this.handlePopup(image)}\n >\n \"reviewImage\"\n
    \n );\n })}\n \n )}\n
    \n \n \n \n {\n getPrintableTime(\n getStandradDateTime(utcToLocalTime, createdAt)\n ).split(\",\")[0]\n }\n ,\n {\n getPrintableTime(\n getStandradDateTime(utcToLocalTime, createdAt)\n ).split(\",\")[1]\n }\n \n \n \n \n
    \n Date \n

    \n \n {\n getPrintableTime(\n getStandradDateTime(utcToLocalTime, createdAt)\n ).split(\",\")[0]\n }\n ,\n {\n getPrintableTime(\n getStandradDateTime(utcToLocalTime, createdAt)\n ).split(\",\")[1]\n }\n \n
    \n
    \n Customer\n

    \n {customerName}\n
    \n
    \n \n
    \n {status === REVIEW_STATUS.APPROVED ? (\n \n ) : status === REVIEW_STATUS.REJECTED ? (\n \n ) : (\n \n )}\n \n {status === REVIEW_STATUS.APPROVED\n ? \"Approved\"\n : status === REVIEW_STATUS.PENDING\n ? \"Pending\"\n : \"Disapproved\"}\n \n
    \n \n
    \n
    \n );\n },\n };\n\n tablePropertiesforIndividual = {\n headers: [\n getMessage(\"review.all.product.table.header.item\"),\n getMessage(\"review.individual.product.table.header.average.rating\"),\n getMessage(\"review.individual.product.table.header.reviews\"),\n ],\n row: (props) => {\n const { images, name, averageRating, totalReviews, id } = props;\n return (\n \n \n
    \n
    \n \"img\"\n {name}\n
    \n
    \n \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n \n \n this.handleShowIndivisualProduct(id, images && images[0], name)\n }\n >\n {totalReviews} Reviews\n \n \n
    \n );\n },\n };\n\n tablePropertiesforIndividualProductDetails = {\n headers: [\n getMessage(\"review.all.product.table.header.item\"),\n getMessage(\"review.order.table.header.rating\"),\n getMessage(\"review.order.table.header.date\"),\n getMessage(\"review.order.table.header.customer\"),\n ],\n row: (props) => {\n const { createdAt, title, review, rating, customerName, index, images } =\n props;\n const lengthOfReview = this.state.reviews.length;\n const remove = index === 0 && lengthOfReview > 1;\n const className = remove ? \"remove\" : \"first-index\";\n return (\n \n \n {index === 0 ? (\n
    \n
    \n \n
    \n {this.state.productName}\n
    \n ) : null}\n
    \n \n
    \n \n
    \n {title &&
    {title}
    }\n {review &&
    {review}
    }\n {images && images?.length > 0 && (\n
    \n {images.map((image) => {\n return (\n this.handlePopup(image)}\n >\n \"reviewImage\"\n
    \n );\n })}\n \n )}\n
    \n \n \n {\n getPrintableTime(\n getStandradDateTime(utcToLocalTime, createdAt)\n ).split(\",\")[0]\n }\n ,\n {\n getPrintableTime(\n getStandradDateTime(utcToLocalTime, createdAt)\n ).split(\",\")[1]\n }\n \n \n \n
    \n
    \n Date \n

    \n \n {\n getPrintableTime(\n getStandradDateTime(utcToLocalTime, createdAt)\n ).split(\",\")[0]\n }\n ,\n {\n getPrintableTime(\n getStandradDateTime(utcToLocalTime, createdAt)\n ).split(\",\")[1]\n }\n \n
    \n
    \n
    \n Customer\n

    \n {customerName}\n
    \n
    \n
    \n );\n },\n };\n\n fetchData() {\n if (this.state.index === 0) {\n return (\n {\n this.setState({\n loading: false,\n totalRating: response.data.count,\n avgRating: response.data.averageRating,\n noOfReviews: response.data.noOfReviews,\n reviews: response.data.reviews,\n });\n return response.data.reviews;\n },\n }}\n tableProperties={this.tableProperties}\n tableDynamic\n additionalViews={[\n () => (\n <>\n \n \n ),\n ]}\n />\n );\n }\n if (\n this.state.index === 1 &&\n this.state.productType === \"All\" &&\n !this.state.showAllIndivisualProductReview\n ) {\n return (\n {\n this.setState({\n loading: false,\n });\n return response.data.reviews;\n },\n }}\n tableProperties={this.tablePropertiesforAll}\n tableDynamic\n />\n );\n }\n\n if (\n this.state.index === 1 &&\n this.state.productType === \"Individual\" &&\n !this.state.showAllIndivisualProductReview\n ) {\n return (\n response.data.product,\n }}\n tableProperties={this.tablePropertiesforIndividual}\n tableDynamic\n />\n );\n }\n if (this.state.showAllIndivisualProductReview && this.state.index === 1) {\n return (\n
    \n {\n this.setState({\n loading: false,\n totalRating: response.data.count,\n avgRating: response.data.averageRating,\n noOfReviews: response.data.noOfReviews,\n reviews: response.data.reviews,\n });\n return response.data.reviews;\n },\n }}\n tableProperties={this.tablePropertiesforIndividualProductDetails}\n tableDynamic\n additionalViews={[\n () => (\n
    \n \n
    \n
    \n \n
    \n \n {this.state.productName}\n \n
    \n
    \n ),\n ]}\n />\n
    \n );\n }\n }\n\n fetchTabData() {\n if (this.state.index === 0) {\n return
    {this.fetchData()}
    ;\n } else if (\n this.state.index === 1 &&\n this.state.showAllIndivisualProductReview\n ) {\n return (\n <>\n \n \n

    Back

    \n \n
    {this.fetchData()}
    \n \n );\n } else {\n return (\n <>\n {this.state.totalRating > 0 && (\n
    \n {\n this.handleChange(value);\n }}\n />\n
    \n )}\n {this.fetchData()}\n \n );\n }\n }\n\n changeTab(index) {\n this.setState({\n index,\n showAllIndivisualProductReview: false,\n entity: this.tabHeaders[index],\n });\n }\n handleChange(value) {\n this.setState({\n productType: value,\n });\n }\n\n handleShowIndivisualProduct = (id = null, images = null, name = null) => {\n this.setState((prevState) => ({\n productName: name,\n productImage: images,\n setProductId: id,\n showAllIndivisualProductReview: !prevState.showAllIndivisualProductReview,\n }));\n };\n render() {\n const { loading, totalRating, index } = this.state;\n return (\n \n
    \n \n

    {getMessage(\"menu.item.rating-reviews\")}

    \n {loading ? (\n <>{this.fetchTabData()}\n ) : (\n <>\n
    \n {\n this.changeTab(index);\n }}\n />\n
    \n {this.fetchTabData()}\n \n )}\n {totalRating === 0 && !loading && (\n
    \n
    \n \n

    No Ratings to shows

    \n
    \n
    \n )}\n {this.state.showPopup && (\n \n
    \n \"selectedImage\"\n
    \n
    \n )}\n
    \n
    \n );\n }\n}\nexport default Reviews;\n","import React from \"react\";\nimport Table, { Row, Cell } from \"../../../components/Table\";\nimport NameValueCard from \"../../../components/NameValueCard\";\nimport IncrementIcon from \"./increase-icon.svg\";\nimport DecrementIcon from \"./decrease-icon.svg\";\nimport { getMessage } from \"../../../lib/translator\";\n\n// Formats Date object in YYYY-MM-DD format\nfunction formatDate(date) {\n var dd = date.getDate();\n var mm = date.getMonth() + 1; // January is 0!\n\n var yyyy = date.getFullYear();\n if (dd < 10) {\n dd = \"0\" + dd;\n }\n if (mm < 10) {\n mm = \"0\" + mm;\n }\n return yyyy + \"-\" + mm + \"-\" + dd;\n}\n\n// calculates percentage change in old value and new Value\n// Returns an element with change Icon and value if oldValue is not 0\nfunction getPercentageChange(todayStats, previousStats, key) {\n const newValue = todayStats;\n const oldValue = previousStats;\n if (Number(oldValue) && oldValue > 0 && Number(newValue)) {\n const value = ((newValue - oldValue) / oldValue) * 100;\n let attr = { className: \"green\", icon: IncrementIcon };\n if (value < 0) {\n attr = { className: \"red\", icon: DecrementIcon };\n }\n return (\n
    \n \"\"\n {`${Math.abs(Math.round(value))}%`}\n
    \n );\n }\n return -;\n}\n\n// calculates last week average data for all sales and customer parameters\nfunction getLastWeekAverage(salesStats, customerStats) {\n const today = formatDate(new Date());\n let totalDays = 0;\n let avgData = {\n amount: 0,\n customersAcquired: 0,\n transactedCustomers: 0,\n count: 0,\n };\n for (let key in customerStats) {\n if (key !== today) {\n avgData.customersAcquired += customerStats[key];\n avgData.amount += salesStats[key] && salesStats[key].amount;\n avgData.transactedCustomers +=\n salesStats[key] && salesStats[key].transactedCustomers;\n avgData.count += salesStats[key] && salesStats[key].count;\n totalDays++;\n }\n }\n if (totalDays > 0) {\n for (let key in avgData) {\n avgData[key] = avgData[key] / totalDays;\n }\n }\n return avgData;\n}\n\nfunction getStatsTableData(salesStats, customerStats, currency) {\n let oneWeekAgo = new Date();\n oneWeekAgo.setDate(oneWeekAgo.getDate() - 7);\n let yesterdayDate = new Date();\n yesterdayDate.setDate(yesterdayDate.getDate() - 1);\n\n const lastWeekDate = formatDate(oneWeekAgo);\n const today = formatDate(new Date());\n const yesterday = formatDate(yesterdayDate);\n\n const stats = {\n today: salesStats[today] || {},\n yesterday: salesStats[yesterday] || {},\n lastWeek: salesStats[lastWeekDate] || {},\n lastWeekAverage: getLastWeekAverage(salesStats, customerStats),\n };\n return [\n {\n name: getMessage(\"operations.dashboard.sales\"),\n color: \"green\",\n value: `${currency} ${\n isNaN(stats.today.amount) ? 0 : stats.today.amount\n }`,\n yesterdayPer: getPercentageChange(\n stats.today.amount,\n stats.yesterday.amount\n ),\n weeklyPer: getPercentageChange(\n stats.today.amount,\n stats.lastWeekAverage.amount\n ),\n lastWeekPer: getPercentageChange(\n stats.today.amount,\n stats.lastWeek.amount\n ),\n },\n {\n name: getMessage(\"operations.dashboard.customerAcquired\"),\n color: \"gray\",\n value: isNaN(customerStats[today]) ? 0 : customerStats[today],\n yesterdayPer: getPercentageChange(\n customerStats[today],\n customerStats[yesterday]\n ),\n weeklyPer: getPercentageChange(\n customerStats[today],\n stats.lastWeekAverage.customersAcquired\n ),\n lastWeekPer: getPercentageChange(\n customerStats[today],\n customerStats[lastWeekDate]\n ),\n },\n {\n name: getMessage(\"operations.dashboard.customersTransacted\"),\n color: \"red\",\n value: isNaN(stats.today.transactedCustomers)\n ? 0\n : stats.today.transactedCustomers,\n yesterdayPer: getPercentageChange(\n stats.today.transactedCustomers,\n stats.yesterday.transactedCustomers\n ),\n weeklyPer: getPercentageChange(\n stats.today.transactedCustomers,\n stats.lastWeekAverage.transactedCustomers\n ),\n lastWeekPer: getPercentageChange(\n stats.today.transactedCustomers,\n stats.lastWeek.transactedCustomers\n ),\n },\n {\n name: getMessage(\"operations.dashboard.orders\"),\n color: \"blue\",\n value: isNaN(stats.today.count) ? 0 : stats.today.count,\n yesterdayPer: getPercentageChange(\n stats.today.count,\n stats.yesterday.count\n ),\n weeklyPer: getPercentageChange(\n stats.today.count,\n stats.lastWeekAverage.count\n ),\n lastWeekPer: getPercentageChange(stats.today.count, stats.lastWeek.count),\n },\n ];\n}\n\nexport default function StatsTable(props) {\n const { customersStats, salesStats, currency } = props;\n const data = getStatsTableData(salesStats, customersStats, currency);\n return (\n
    \n {data.map((column, index) => (\n \n
    \n {index === 0 &&
    }\n
    \n \n
    \n
    \n
    \n \n
    \n \n \n {getMessage(\"operations.dashboard.yesterday\")}\n \n {column.yesterdayPer}\n \n \n \n {getMessage(\"operations.dashboard.weeklyAvg\")}\n \n {column.weeklyPer}\n \n \n \n {getMessage(\"operations.dashboard.lastWeek\")}\n \n {column.lastWeekPer}\n \n
    \n ))}\n
    \n );\n}\n","import React, { Component } from \"react\";\nimport moment from \"moment\";\nimport Table, { Row, Header, Cell } from \"../../../components/Table\";\nimport { SingleDatePicker } from \"../../../components/Form\";\nimport { Link } from \"react-router-dom\";\nimport {\n getMinutes,\n formatTime,\n formatDate,\n getStandradDateTime,\n utcToLocalTime,\n getPrintableTime,\n} from \"../../../lib/datetime\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { get } from \"../../../lib/storage\";\nimport { isEqual } from \"lodash\";\n\nclass SlotOrderTable extends Component {\n constructor() {\n super();\n this.state = {\n total: {},\n fixedSlotColumn: [],\n asapSlotColumn: [],\n };\n this.generateStateFromProps = this.generateStateFromProps.bind(this);\n }\n\n generateStateFromProps() {\n const { asapSlots, fixedSlots, statuses } = this.props.data;\n let total = {};\n statuses &&\n statuses.map((status) => {\n total[status] = 0;\n return null;\n });\n\n let fixedSlotColumn =\n fixedSlots &&\n fixedSlots.map((object) => {\n let countOb = object.count;\n if (countOb) {\n Object.keys(countOb).map((status) => {\n total[status] += Number(countOb[status]);\n return null;\n });\n }\n return object.slot;\n });\n let asapSlotColumn =\n asapSlots &&\n asapSlots.map((object) => {\n let countOb = object.count;\n if (countOb) {\n Object.keys(countOb).map((status) => {\n total[status] += Number(countOb[status]);\n return null;\n });\n }\n return object.slot;\n });\n this.setState({ fixedSlotColumn, asapSlotColumn, total });\n }\n\n componentDidMount() {\n this.generateStateFromProps();\n }\n\n componentDidUpdate(prevProps, prevState) {\n let currData = this.props.data;\n let prevData = prevProps.data;\n if (\n !isEqual(currData.asapSlots, currData.asapSlots) ||\n !isEqual(prevData.asapSlots, currData.asapSlots)\n ) {\n this.generateStateFromProps();\n }\n }\n render() {\n const { asapSlots, fixedSlots, noSlots, statuses, totalOrders } =\n this.props.data;\n const { areOrdersScheduled, selectedDate, handleDateChange } = this.props;\n const { fixedSlotColumn, asapSlotColumn } = this.state;\n const today = moment().format(\"YYYY-MM-DD\");\n return (\n
    \n
    \n
    \n
    \n {`Orders ${\n selectedDate === today\n ? \"Today\"\n : \"On \" + formatDate(selectedDate)\n }`}\n ({totalOrders})\n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n {statuses && statuses.length > 0 && (\n
    \n \n
    \n \n {noSlots\n ? getMessage(\"order.filters.status.heading\")\n : getMessage(\"operations.dashboard.slot\")}\n \n {statuses &&\n statuses.map((status, index) => (\n \n \n {status.toUpperCase()}\n \n \n ))}\n
    \n {statuses && asapSlotColumn && asapSlotColumn.length > 0 && (\n \n {asapSlotColumn.map((slot, index) => (\n \n \n \n {getMessage(\"slots.asap\") +\n \" \" +\n getMinutes(slot.endTime) +\n \" \" +\n getMessage(\"slots.asap.minute\")}\n \n \n \n ))}\n \n )}\n {statuses &&\n asapSlots &&\n asapSlots.map((slot, index) => (\n \n \n \n {getMessage(\"slots.asap\") +\n \" \" +\n getMinutes(slot.slot.endTime) +\n \" \" +\n getMessage(\"slots.asap.minute\")}\n \n \n {statuses &&\n statuses.map((status, i) => (\n \n \n {slot.count[status] || \"-\"}\n \n \n ))}\n \n ))}\n {statuses && fixedSlotColumn && fixedSlotColumn.length > 0 && (\n \n {fixedSlotColumn.map((slot, index) => (\n \n \n \n {`${\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n slot.startTime\n }`\n )\n ).split(\",\")[1]\n } - ${\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n slot.endTime\n }`\n )\n ).split(\",\")[1]\n }`}\n \n \n \n ))}\n \n )}\n {statuses &&\n fixedSlots &&\n fixedSlots.map((slot, index) => (\n \n \n {`${formatTime(slot.slot.startTime)} - ${formatTime(\n slot.slot.endTime\n )}`}\n \n {statuses &&\n statuses.map((status, i) => (\n \n \n {slot.count[status] || \"-\"}\n \n \n ))}\n \n ))}\n {noSlots && (\n \n {getMessage(\"operations.dashboard.counts\")}\n \n )}\n {noSlots && (\n \n {getMessage(\"operations.dashboard.counts\")}\n {noSlots &&\n statuses.map((status, index) => (\n \n \n {noSlots.count[status]}\n \n \n ))}\n \n )}\n {areOrdersScheduled && statuses && (\n \n {getMessage(\"operations.dashboard.total\")}\n {statuses.map((status, index) => {\n return (\n \n {this.state.total[status]}\n \n );\n })}\n \n )}\n
    \n
    \n )}\n
    \n );\n }\n}\n\nexport default SlotOrderTable;\n","import React, { Component } from \"react\";\nimport ListingPage from \"../../../containers/ListingPage\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { getMessage } from \"../../../lib/translator\";\n\nconst tableProperties = (currency) => {\n return {\n headers: [\n getMessage(\"operations.prodStats.statTable.name\"),\n getMessage(\"operations.prodStats.statTable.qty\"),\n getMessage(\"operations.prodStats.statTable.amt\"),\n ],\n row: (props) => {\n const { productName, totalQuantity, totalAmount } = props;\n return (\n \n {productName}\n {totalQuantity}\n \n
    {currency?.currency}
    \n {totalAmount}\n
    \n
    \n );\n },\n };\n};\n\nexport default class MarketPlaceProdStats extends Component {\n render() {\n const params = {\n sortBy: this.props.sortBy,\n };\n return (\n response.data?.productStats || [],\n }}\n tableProperties={tableProperties(this.props?.currency)}\n />\n );\n }\n}\n","import React, { Component } from \"react\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage/index\";\nimport StatsTable from \"./statsTable\";\n// import TopProductsTable from './topProductsTable'\n// import CategoriesStats from './categoriesStats'\nimport SlotOrderTable from \"./slotOrdertable\";\nimport Loader from \"../../../components/Loader\";\nimport StoreSelector, {\n makestoreDependentComponent,\n getDefaultStore,\n} from \"../../../containers/StoreSelector\";\nimport API from \"../../../lib/api\";\nimport { getCurrency } from \"../../../lib/userDetails\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { isExtensionEnabled } from \"../../../lib/auth\";\nimport { get } from \"../../../lib/storage\";\n\nimport \"./style.css\";\nimport { sortOrderStatus } from \"../../../lib/commonlyused\";\nimport MarketPlaceProdStats from \"./marketPlaceProdStats\";\n\n// Formats Date object in YYYY-MM-DD format\nfunction formatDate(date) {\n var dd = date.getDate();\n var mm = date.getMonth() + 1; // January is 0!\n\n var yyyy = date.getFullYear();\n if (dd < 10) {\n dd = \"0\" + dd;\n }\n if (mm < 10) {\n mm = \"0\" + mm;\n }\n return yyyy + \"-\" + mm + \"-\" + dd;\n}\n\nclass Dashboard extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showLoader: true,\n // showSmallLoader: true,\n showSlotLoader: true,\n storeId: get(\"store\") || getDefaultStore(this.props.stores).storeId,\n salesStatsData: {},\n customerStatsData: {},\n // topProductsData: [],\n // categoriesSalesData: [],\n showStore: false,\n selectedDate: formatDate(new Date()),\n };\n this.showLoader = this.showLoader.bind(this);\n this.hideLoader = this.hideLoader.bind(this);\n this.changeStore = this.changeStore.bind(this);\n this.handleDateChange = this.handleDateChange.bind(this);\n }\n\n hideLoader() {\n this.setState({\n showLoader: false,\n });\n }\n\n handleDateChange(date) {\n this.setState({ selectedDate: date }, () => this.updateContent());\n }\n\n showLoader() {\n this.setState({\n showLoader: true,\n });\n }\n\n changeStore(storeId) {\n this.setState(\n {\n storeId: storeId,\n },\n this.updateContent\n );\n }\n\n componentDidMount() {\n this.updateContent();\n }\n\n updateContent() {\n this.setState({\n showLoader: true,\n showSlotLoader: true,\n // showSmallLoader: true,\n showStore: true,\n });\n let storeId =\n this.state.storeId ||\n get(\"store\") ||\n getDefaultStore(this.props.stores).storeId;\n let org = JSON.parse(get(\"organization\"));\n storeId = storeId || org.defaultStoreId;\n let oneWeekAgo = new Date();\n oneWeekAgo.setDate(oneWeekAgo.getDate() - 7);\n const lastWeekDate = formatDate(oneWeekAgo);\n // const today = formatDate(new Date());\n this.orderStatsApi = new API({ url: \"/order-service/stats\" });\n this.customerStatsApi = new API({ url: \"/customer-service/stats\" });\n // this.catalogueSalesApi = new API({ url: '/catalogue-service/sales' })\n this.slotOrdersApi = new API({ url: \"/order-service/order-count\" });\n\n // storeId && this.catalogueSalesApi.get({ date: today, storeId: storeId }).then((catalogueResponse) => {\n // const catalogueSales = catalogueResponse.data.sales\n // this.setState({\n // showSmallLoader: false,\n // topProductsData: catalogueSales.topProducts,\n // categoriesSalesData: catalogueSales.categorySales,\n // showSlotLoader: false\n // })\n // })\n\n let apis = storeId\n ? [\n this.orderStatsApi.get({ from: lastWeekDate, storeId: storeId }),\n this.customerStatsApi.get({\n startDate: lastWeekDate,\n storeId: storeId,\n }),\n ]\n : [];\n if (isExtensionEnabled(\"DeliverySlots\")) {\n storeId &&\n apis.push(\n this.slotOrdersApi.get({\n preferredDate: this.state.selectedDate,\n storeId: storeId,\n })\n );\n } else {\n storeId &&\n apis.push(\n this.slotOrdersApi.get({\n createdAt: this.state.selectedDate,\n storeId: storeId,\n })\n );\n }\n\n Promise.all(apis)\n .then(([ordersResponse, customersResponse, slotOrdersResponse]) => {\n const salesStats = ordersResponse\n ? ordersResponse.data.stats.sales\n : {};\n const customerStats = customersResponse\n ? customersResponse.data.stats\n : {};\n const slotOrderStats =\n (slotOrdersResponse && slotOrdersResponse.data) || [];\n let statuses = [];\n let totalOrders = 0;\n slotOrderStats.forEach((slot) => {\n let keys = (slot.count && Object.keys(slot.count)) || [];\n keys.forEach((key) => {\n if (statuses.indexOf(key) === -1) {\n statuses.push(key);\n }\n totalOrders += slot.count[key];\n });\n });\n let fixedSlots = null;\n let asapSlots = null;\n let noSlots = null;\n let count = null;\n if (isExtensionEnabled(\"DeliverySlots\")) {\n fixedSlots =\n slotOrderStats &&\n slotOrderStats\n .filter(\n (slot) =>\n slot.slot && slot.slot && slot.slot.type === \"STANDARD\"\n )\n .sort((slot1, slot2) => {\n if (slot1.slot.startTime < slot2.slot.startTime) {\n return -1;\n } else {\n return 1;\n }\n });\n asapSlots =\n slotOrderStats &&\n slotOrderStats\n .filter((slot) => slot.slot && slot.slot.type === \"ASAP\")\n .sort((slot1, slot2) => {\n if (slot1.slot.endTime < slot2.slot.endTime) {\n return -1;\n } else {\n return 1;\n }\n });\n } else {\n count = {};\n slotOrderStats &&\n slotOrderStats.forEach((slot) => {\n let keys = Object.keys(slot.count) || [];\n keys.forEach((key) => {\n if (count[key]) {\n count[key] += slot.count[key];\n } else {\n count[key] = slot.count[key];\n }\n });\n });\n noSlots = { count: count };\n }\n\n this.setState({\n showLoader: false,\n customerStatsData: customerStats,\n salesStatsData: salesStats,\n statuses: sortOrderStatus(statuses),\n totalOrders,\n asapSlots,\n fixedSlots,\n noSlots,\n showSlotLoader: false,\n storeId: storeId,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n componentWillUnmount() {\n // this.catalogueSalesApi.cancel();\n this.customerStatsApi.cancel();\n this.slotOrdersApi && this.slotOrdersApi.cancel();\n this.orderStatsApi.cancel();\n }\n\n render() {\n const { props } = this;\n const {\n showLoader,\n customerStatsData,\n salesStatsData,\n showSlotLoader,\n statuses,\n asapSlots,\n totalOrders,\n fixedSlots,\n noSlots,\n showStore,\n } = this.state;\n const currency = getCurrency() && getCurrency().symbol;\n return (\n
    \n {showStore && isExtensionEnabled(\"MultiStoreSupport\") && (\n \n )}\n

    {getMessage(\"operations.dashboard.heading\")}

    \n
    \n {showLoader ? (\n \n ) : (\n \n )}\n {/*
    \n {(showSmallLoader) ? : (Object.keys(topProductsData).length > 0) && }\n {(showSmallLoader) ? : (Object.keys(categoriesSalesData).length > 0) && }\n
    */}\n {showSlotLoader ? (\n \n ) : (\n \n )}\n {isExtensionEnabled(\"MarketPlace\") && (\n
    \n
    \n {getMessage(\"operations.prodStats.heading\")}\n
    \n
    \n
    \n

    \n {getMessage(\"operations.prodStats.byQty.title\")}\n

    \n \n
    \n
    \n

    \n {getMessage(\"operations.prodStats.byAmt.title\")}\n

    \n \n
    \n
    \n
    \n )}\n
    \n
    \n );\n }\n}\n\nconst DashboardWithStores = makestoreDependentComponent(Dashboard);\n\nexport default class OperationsDashboard extends Component {\n render() {\n return (\n \n \n \n );\n }\n}\n","import React from \"react\";\n\nconst LocationIcon = (props) => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default LocationIcon;\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n VALIDATION_TYPES,\n SelectSearch,\n Checkbox,\n Phone,\n} from \"../../../../components/Form\";\nimport Toggle from \"../../../../components/Form/Inputs/Toggle\";\nimport { cloneMutables } from \"../../../../lib/stateManagement/\";\nimport MetaDataFormFields from \"../../../../components/MetaDataFormFields\";\nimport GoogleMaps, {\n Marker,\n SearchBox,\n} from \"../../../../components/GoogleMaps\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { isExtensionEnabled } from \"../../../../lib/auth\";\nimport { storeSelection } from \"../../../../lib/commonlyused\";\nimport API from \"../../../../lib/api\";\nimport Table, { Header, Row, Cell } from \"../../../../components/Table\";\nimport LocationIcon from \"../location\";\nimport \"./style.css\";\nimport { geocodeByAddress, getLatLng } from \"react-places-autocomplete\";\nimport { Dialog } from \"../../../../components/Popup\";\n\nlet daysOfWeak = {\n Monday: { o: \"\", c: \"\" },\n Tuesday: { o: \"\", c: \"\" },\n Wednesday: { o: \"\", c: \"\" },\n Thursday: { o: \"\", c: \"\" },\n Friday: { o: \"\", c: \"\" },\n Saturday: { o: \"\", c: \"\" },\n Sunday: { o: \"\", c: \"\" },\n};\n\nconst getBusinessHoursObject = (value) => {\n let values = cloneMutables(value);\n let newValues = values;\n Object.keys(daysOfWeak).map((day) => {\n newValues.businessHours[day] = newValues.businessHours[day] || {\n o: \"\",\n c: \"\",\n };\n return null;\n });\n return newValues;\n};\nexport default class StoreForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.mapMounted = false;\n this.onMapMounted = this.onMapMounted.bind(this);\n this.findLocation = this.findLocation.bind(this);\n this.tempHoursObject = daysOfWeak;\n this.state.values = props.value\n ? props.value.businessHours\n ? getBusinessHoursObject(props.value)\n : { ...props.value, businessHours: daysOfWeak }\n : { businessHours: daysOfWeak };\n this.handleStatusChange = this.handleStatusChange.bind(this);\n this.state.availablePayments = [\n \"ONLINE\",\n \"WALLET\",\n \"CREDIT-AMEX\",\n \"CREDIT-VISA\",\n \"CREDIT-MASTER\",\n \"DEBIT-MADA\",\n \"GIFTCARD\",\n \"APPLE_PAY\",\n \"COD\",\n ];\n this.state.showPaymentError = false;\n }\n\n handleStatusChange(val) {\n let values = JSON.parse(JSON.stringify(this.state.values || {}));\n values.status = val ? \"ENABLED\" : \"DISABLED\";\n this.setState({ values });\n }\n\n onMapMounted(node) {\n this.mapRef = node;\n this.setState({\n mapMounted: true,\n });\n if (\n (!this.state.values.latitude || !this.state.values.latitude) &&\n \"geolocation\" in window.navigator\n ) {\n /* geolocation is available */\n window.navigator.geolocation.getCurrentPosition(({ coords }) => {\n this.setLocation(coords);\n });\n }\n }\n componentWillReceiveProps(nextProps) {\n if (nextProps?.value && nextProps?.value !== this.props?.value) {\n const newValues = nextProps?.value?.businessHours\n ? getBusinessHoursObject(nextProps?.value)\n : { ...nextProps?.value, businessHours: daysOfWeak };\n\n this.setState({ values: { ...this?.state?.values, ...newValues } });\n }\n }\n setLocation({ latitude, longitude }) {\n this.updateState([\"latitude\"], latitude);\n this.updateState([\"longitude\"], longitude);\n }\n findLocation() {\n if (this.searchBoxRef) {\n const places = this.searchBoxRef.getPlaces();\n const bounds = new window.google.maps.LatLngBounds();\n if (places.length) {\n const place = places[0];\n this.setLocation({\n latitude: place.geometry.location.lat(),\n longitude: place.geometry.location.lng(),\n });\n const addressComponents = place.address_components;\n const city = addressComponents?.filter(({ types }) =>\n types?.includes(\"locality\")\n )[0]?.short_name;\n const state = addressComponents?.filter(({ types }) =>\n types?.includes(\"administrative_area_level_1\")\n )[0]?.long_name;\n const pincode = addressComponents?.filter(({ types }) =>\n types?.includes(\"postal_code\")\n )[0]?.short_name;\n this.updateState([\"city\"], city);\n this.updateState([\"state\"], state);\n this.updateState([\"pincode\"], pincode);\n }\n // Fit location area into the map\n places.forEach((place) => {\n if (place.geometry.viewport) {\n bounds.union(place.geometry.viewport);\n } else {\n bounds.extend(place.geometry.location);\n }\n });\n this.mapRef.fitBounds(bounds);\n }\n }\n\n getAllPayments = () => {\n return new Promise((resolve, reject) => {\n const configApi = new API({\n url: `/config-service/config/order`,\n });\n configApi\n .get()\n .then((res) => {\n const availablePayments = res.data.order;\n const paymentMethods = availablePayments.paymentMethods;\n this.setState((prevState) => {\n const newValues = {\n ...prevState.values,\n configuredPaymentsPickup: paymentMethods.PICKUP || [],\n configuredPaymentsDelivery: paymentMethods.DELIVERY || [],\n };\n return {\n orgPaymentModes: paymentMethods,\n values: newValues,\n };\n });\n resolve();\n })\n .catch((error) => {\n console.error(error);\n reject(error);\n });\n });\n };\n\n getPaymentModes = () => {\n const api = new API({\n url: `/config-service/config/order?storeId=${this.props.resourceId}`,\n });\n api\n .get()\n .then((response) => {\n const orderPayments = response.data.order;\n if (Object.keys(orderPayments.paymentMethods).length === 0) {\n this.setState((prevState) => {\n const newValues = {\n ...prevState.values,\n storeLevelPaymentSetup: true,\n };\n return {\n values: newValues,\n };\n });\n } else {\n let paymentMethods = {};\n if (orderPayments?.paymentMethods?.PICKUP) {\n paymentMethods.configuredPaymentsPickup =\n orderPayments.paymentMethods?.PICKUP;\n }\n if (orderPayments?.paymentMethods?.DELIVERY) {\n paymentMethods.configuredPaymentsDelivery =\n orderPayments.paymentMethods?.DELIVERY;\n }\n this.setState((prevState) => {\n const newValues = {\n ...prevState.values,\n ...paymentMethods,\n storeLevelPaymentSetup: true,\n };\n return {\n values: newValues,\n };\n });\n }\n })\n .catch((error) => {\n console.error(error);\n });\n };\n\n onPaymentChange = (value, type, key) => {\n if (type === \"PICKUP\") {\n const paymentMethods = this.state.values.configuredPaymentsPickup || [];\n if (value) {\n paymentMethods.push(key);\n } else {\n const index = paymentMethods.indexOf(key);\n paymentMethods.splice(index, 1);\n }\n this.setState((prevState) => {\n return {\n values: {\n ...prevState.values,\n configuredPaymentsPickup: paymentMethods,\n },\n };\n });\n } else {\n const paymentMethods = this.state.values.configuredPaymentsDelivery || [];\n if (value) {\n paymentMethods.push(key);\n } else {\n const index = paymentMethods.indexOf(key);\n paymentMethods.splice(index, 1);\n }\n this.setState((prevState) => {\n return {\n values: {\n ...prevState.values,\n configuredPaymentsDelivery: paymentMethods,\n },\n };\n });\n }\n };\n\n getOrderTypes = () => {\n const accountServiceApi = new API({ url: `/account-service/config/order` });\n\n accountServiceApi\n .get()\n .then((res) => {\n const accountServiceRes = res.data?.config?.order;\n this.setState((prevState) => {\n const newValues = {\n ...prevState.values,\n orderTypes: accountServiceRes.orderTypes,\n };\n return {\n values: newValues,\n };\n });\n })\n .catch((error) => {\n console.error(error);\n });\n };\n\n async getEveryPaymentMode() {\n await this.getAllPayments();\n if (this.props?.method !== \"add\") {\n this.getPaymentModes();\n }\n this.getOrderTypes();\n }\n\n componentDidMount() {\n this.getEveryPaymentMode();\n const api = new API({ url: `/config-service/meta-data` });\n api\n .get()\n .then((response) => {\n let storeMetaData =\n (response.data &&\n response.data.config &&\n response.data.config.entityMetaData &&\n response.data.config.entityMetaData.store) ||\n {};\n this.storeMetaDataWithType = storeMetaData;\n let values = Object.assign({}, this.state.values);\n let metaData = values.metaData;\n if (!metaData) {\n metaData = {};\n storeMetaData &&\n Object.keys(storeMetaData).forEach((mt) => {\n metaData[mt] = \"\";\n });\n values.metaData = metaData;\n } else {\n let newMetaData = {};\n storeMetaData &&\n Object.keys(storeMetaData).forEach((mt) => {\n newMetaData[mt] = metaData[mt] || \"\";\n });\n metaData = newMetaData;\n values.metaData = metaData;\n }\n this.setState({\n values,\n loadingProductMetaData: false,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n componentDidUpdate(prevprops, prevState) {\n if (!prevState.values.hasPicking && this.state.values.hasPicking) {\n let validations = Object.assign({}, this.state.validations);\n delete validations.pickingStoreId;\n this.setState({\n validations,\n });\n }\n }\n\n handleSelect = async (value) => {\n const results = await geocodeByAddress(value);\n const latlng = await getLatLng(results[0]);\n this.setLocation({\n latitude: latlng.lat,\n longitude: latlng.lng,\n });\n const addressComponents = results[0].address_components;\n const city = addressComponents?.filter(({ types }) =>\n types?.includes(\"locality\")\n )[0]?.short_name;\n const state = addressComponents?.filter(({ types }) =>\n types?.includes(\"administrative_area_level_1\")\n )[0]?.long_name;\n const pincode = addressComponents?.filter(({ types }) =>\n types?.includes(\"postal_code\")\n )[0]?.short_name;\n this.updateState([\"address\"], results[0].formatted_address);\n this.updateState([\"city\"], city);\n this.updateState([\"state\"], state);\n this.updateState([\"pincode\"], pincode);\n };\n\n useMyLocation = async () => {\n const success = ({ coords: { latitude, longitude } }) => {\n const latlng = new window.google.maps.LatLng(latitude, longitude);\n const geocoder = new window.google.maps.Geocoder();\n geocoder.geocode({ latLng: latlng }, (results, status) => {\n if (status !== window.google.maps.GeocoderStatus.OK) {\n console.error(\n \"Some error occurred while fetching address details for the location from Google API\"\n );\n }\n // If reverse geocoding of location coords is Successful\n if (status === window.google.maps.GeocoderStatus.OK) {\n this.handleSelect(results[0].formatted_address);\n }\n });\n };\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(\n /* call success if able to get location coords (Latitude, Longitude) */\n success,\n /* Else If browser unable to get location coords (Latitude, Longitude) */\n /* e.g. user denies location permission */\n function error(err) {\n console.error(`ERROR(${err.code}): ${err.message}`);\n }\n );\n } else {\n console.error(\"Geolocation not supported by your browser\");\n }\n };\n\n handlePaymentModesSave = () => {\n const {\n configuredPaymentsPickup,\n configuredPaymentsDelivery,\n } = this.state.values;\n let payload = {};\n if (this.state?.values?.orderTypes?.includes(\"PICKUP\")) {\n payload[\"PICKUP\"] = configuredPaymentsPickup;\n }\n if (this.state?.values?.orderTypes?.includes(\"DELIVERY\")) {\n payload[\"DELIVERY\"] = configuredPaymentsDelivery;\n }\n const api = new API({\n url: `/config-service/config`,\n });\n api\n .post({\n storeId: Number(this.props.resourceId),\n order: {\n paymentMethods: payload,\n },\n })\n .then((res) => {})\n .catch((error) => {\n console.error(error);\n });\n };\n\n beforeSubmit() {\n if(this.props.method !==\"add\"){\n this.handlePaymentModesSave();\n }\n }\n\n validatePaymentModes = () => {\n const data = this.state.values;\n const hasPickup = data?.orderTypes?.includes(\"PICKUP\");\n const hasDelivery =data?.orderTypes?.includes(\"DELIVERY\");\n switch (true) {\n case hasPickup && hasDelivery:\n return (\n data?.configuredPaymentsPickup?.length > 0 &&\n data?.configuredPaymentsDelivery?.length > 0\n );\n case hasPickup:\n return data?.configuredPaymentsPickup?.length > 0;\n case hasDelivery:\n return data?.configuredPaymentsDelivery?.length > 0;\n default:\n return false;\n }\n };\n\n closeDialogs = () => {\n this.setState({\n showPaymentError: false,\n });\n };\n\n render() {\n const { SubmitButton, CancelButton } = this.buttons;\n const { Form } = this.components;\n const { values, availablePayments = [] } = this.state;\n const hasPicking = values && values?.hasPicking;\n const usernamePattern =\n '^(([^<>()\\\\[\\\\]\\\\.,;:\\\\s@\"]+(\\\\.[^<>()\\\\[\\\\]\\\\.,;:\\\\s@\"]+)*)|(\".+\"))@((\\\\[[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\])|(([a-zA-Z\\\\-0-9]+\\\\.)+[a-zA-Z]{2,}))$';\n const status =\n this.props.method === \"add\" &&\n !(this.state?.values && this.state?.values?.status)\n ? \"ENABLED\"\n : this.state?.values && this.state?.values?.status;\n const storeLevelPaymentSetup = values?.storeLevelPaymentSetup;\n const { configuredPaymentsPickup, configuredPaymentsDelivery } = values;\n const isDeliverySupported =\n values?.orderTypes?.includes(\"DELIVERY\");\n const isPickupSupported =\n values?.orderTypes?.includes(\"PICKUP\");\n return (\n
    \n \n
    \n
    \n
    \n \n \n \n \n \n \n \n {getMessage(\"store.add.email.description\")}\n \n
    \n \n
    \n {getMessage(\"store.add.email.description\")}\n
    \n
    \n
    \n
    \n
    \n \n {getMessage(\"operations.store.form.location.heading\") + \" *\"}\n \n
    \n \n
    {getMessage(\"use.current.location\")}
    \n
    \n
    \n {\n this.registerValidation([\"coordinates\"], error);\n }}\n emphasize={\n !this.getState([\"latitude\"]) || !this.getState([\"longitude\"])\n }\n showErrors={this.validationScenarios.validateOnSubmit()}\n siblings={{\n after: (\n \n {this.state.mapMounted ? (\n {\n this.searchBoxRef = node;\n }}\n controlPosition={\n window.google.maps.ControlPosition.TOP_LEFT\n }\n onPlacesChanged={this.findLocation}\n >\n \n \n ) : null}\n {\n this.setLocation({\n latitude: e.latLng.lat(),\n longitude: e.latLng.lng(),\n });\n }}\n />\n \n ),\n }}\n validationStrings={{\n valueMissing: getMessage(\n \"operations.store.form.location.requiredMessage\"\n ),\n }}\n />\n
    \n
    \n
    \n \n \n \n
    \n
    \n \n \n
    \n {storeLevelPaymentSetup &&\n (isPickupSupported || isDeliverySupported) && (\n
    \n
    \n
    \n {getMessage(\"choose.payment.mode.for.order.type\")}\n
    \n \n \n \n \n {availablePayments.map((item) => {\n return (\n \n );\n })}\n \n \n \n {isDeliverySupported && (\n \n \n {availablePayments.map((item) => {\n const hasConfigured =\n configuredPaymentsDelivery?.includes(item);\n return (\n \n {\n \n this.onPaymentChange(e, \"DELIVERY\", item)\n }\n />\n }\n \n );\n })}\n \n )}\n {isPickupSupported && (\n \n \n {availablePayments.map((item) => {\n const hasConfigured =\n configuredPaymentsPickup?.includes(item);\n return (\n \n {\n \n this.onPaymentChange(e, \"PICKUP\", item)\n }\n />\n }\n \n );\n })}\n \n )}\n \n
    \n {getMessage(\"order.by.label.for.payment\")}\n \n {getMessage(\n `operations.store.form.payment.${item}`\n )}\n
    \n {getMessage(\"order.details.location.option.delivery\")}\n
    \n {getMessage(\"order.details.location.option.pickup\")}\n
    \n
    \n
    \n )}\n
    \n {!hasPicking && (\n \n )}\n
    \n {(this.props.method === \"add\" || this.getState([\"clientId\"])) && (\n \n )}\n
    \n

    {getMessage(\"operations.store.form.businessHours.title\")}

    \n \n {\n
    \n \n {getMessage(\"operations.store.form.businessHours.day\")}\n \n \n {getMessage(\n \"operations.store.form.businessHours.alwaysOpen\"\n )}\n \n \n {getMessage(\n \"operations.store.form.businessHours.openingTime\"\n )}\n \n \n {getMessage(\n \"operations.store.form.businessHours.closingTime\"\n )}\n \n
    \n }\n {Object.keys(daysOfWeak).map((day, index) => (\n \n {day}\n \n {\n let values = JSON.parse(\n JSON.stringify(this.state.values)\n );\n if (value) {\n this.tempHoursObject[day][\"o\"] =\n (values.businessHours[day] &&\n values.businessHours[day][\"o\"]) ||\n \"\";\n this.tempHoursObject[day][\"c\"] =\n (values.businessHours[day] &&\n values.businessHours[day][\"c\"]) ||\n \"\";\n values.businessHours[day][\"o\"] = \"00:00:00\";\n values.businessHours[day][\"c\"] = \"23:59:59\";\n this.setState({ values });\n } else {\n if (!values.businessHours[day]) {\n values.businessHours[day] = {};\n }\n values.businessHours[day][\"o\"] =\n (this.tempHoursObject[day] &&\n this.tempHoursObject[day][\"o\"]) ||\n \"\";\n values.businessHours[day][\"c\"] =\n (this.tempHoursObject[day] &&\n this.tempHoursObject[day][\"c\"]) ||\n \"\";\n this.setState({ values });\n }\n }}\n />\n \n \n \n \n \n \n \n \n ))}\n
    \n
    \n {isExtensionEnabled(\"EntityMetaData\") &&\n this.storeMetaDataWithType &&\n Object.keys(this.storeMetaDataWithType).length > 0 && (\n
    \n

    {getMessage(\"operations.store.form.metaData.heading\")}

    \n
    \n \n
    \n
    \n )}\n {\n if (!this.validatePaymentModes() && this.props?.method !== \"add\") {\n this.setState({\n showPaymentError: true,\n });\n e.preventDefault();\n }\n return false;\n }}\n >\n \n {getMessage(\"operations.store.form.submitText\")}\n \n \n {getMessage(\"operations.store.form.cancelText\")}\n \n
    \n \n \n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n VALIDATION_TYPES,\n Checkbox,\n} from \"../../../../components/Form\";\n\nimport { getMessage } from \"../../../../lib/translator\";\n\nexport default class StoresFiltersForm extends BaseForm {\n render() {\n const { SubmitButton, ClearButton } = this.buttons;\n const { Form } = this.components;\n return (\n
    \n
    \n \n \n
    \n
    \n \n \n
    \n {getMessage(\"store.filters.submitText\")}\n {getMessage(\"store.clear\")}\n
    \n );\n }\n}\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport ListingPageWithRoutes from \"../../../containers/ListingPage/listingRouter\";\nimport { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport StoreForm from \"./Form\";\nimport storesFilters from \"./Filters\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { setStores, getStores, isExtensionEnabled } from \"../../../lib/auth\";\nimport { set } from \"../../../lib/storage\";\n\nimport EmptyIcon from \"./store-empty.svg\";\nimport \"./style.css\";\n\nfunction AddStore() {\n return (\n
    \n \n +{\" \"}\n {getMessage(\"operations.store.add.text\")}\n \n
    \n );\n}\n\nconst EmptyState = {\n icon: EmptyIcon,\n message: getMessage(\"operations.store.empty.message\"),\n additionalViews: [AddStore],\n};\n\nconst tableProperties = {\n headers: [\n getMessage(\"operations.store.table.header.name\"),\n getMessage(\"operations.store.table.header.address\"),\n getMessage(\"operations.store.table.header.deliveyHub\"),\n getMessage(\"operations.store.table.header.picking\"),\n getMessage(\"operations.store.table.header.clientId\"),\n getMessage(\"operations.store.table.header.status\"),\n getMessage(\"operations.store.table.header.actions\"),\n ],\n row: ({\n id,\n name,\n address,\n clientId,\n onAction,\n hasDeliveryHub,\n hasPicking,\n status,\n }) => (\n \n \n \n {name || {getMessage(\"operations.store.default\")}}\n \n \n {address}\n \n
    \n {getMessage(\"operations.store.table.header.deliveyHub\")}\n
    \n \n {hasDeliveryHub\n ? getMessage(\"operations.store.table.row.picking.yes\")\n : getMessage(\"operations.store.table.row.picking.no\")}\n \n
    \n \n
    \n {getMessage(\"operations.store.table.header.picking\")}\n
    \n \n {hasPicking\n ? getMessage(\"operations.store.table.row.picking.yes\")\n : getMessage(\"operations.store.table.row.picking.no\")}\n \n
    \n \n
    \n {getMessage(\"operations.store.table.header.clientId\")}\n
    \n {clientId}\n
    \n \n
    \n {getMessage(\"operations.store.table.header.status\")}\n
    \n \n {status === \"ENABLED\"\n ? getMessage(\"operations.store.form.status.enable.label\")\n : getMessage(\"operations.store.form.status.disable.label\")}\n \n
    \n \n }>\n \n \n {getMessage(\"operations.store.actions.edit\")}\n \n \n {\n onAction(TABLE_ACTIONS.DELETE, { id });\n let allStores = getStores();\n allStores.splice(\n allStores.findIndex((store) => store.id === Number(id)),\n 1\n );\n setStores(allStores);\n allStores &&\n allStores.length > 0 &&\n set(\"store\", allStores[0].id);\n }}\n >\n {getMessage(\"operations.store.actions.delete\")}\n \n {status && status === \"ENABLED\" && (\n \n onAction(TABLE_ACTIONS.UPDATE, { id }, { status: \"DISABLED\" })\n }\n >\n {getMessage(\"operations.store.actions.disable\")}\n \n )}\n {status && status === \"DISABLED\" && (\n \n onAction(TABLE_ACTIONS.UPDATE, { id }, { status: \"ENABLED\" })\n }\n >\n {getMessage(\"operations.store.actions.enable\")}\n \n )}\n \n \n
    \n ),\n};\n\nexport default function Store(props) {\n return (\n response.data.store || [],\n }}\n form={{\n component: StoreForm,\n transformSubmit: (formData) => {\n let data = JSON.parse(JSON.stringify(formData));\n let { businessHours } = data;\n let newBusinessHours = {};\n businessHours &&\n Object.keys(businessHours).map((day) => {\n if (businessHours[day][\"o\"] || businessHours[day][\"c\"]) {\n newBusinessHours[day] = businessHours[day];\n }\n return null;\n });\n data.businessHours = newBusinessHours;\n if (!Object.keys(data.businessHours).length) {\n data.businessHours = null;\n }\n !isExtensionEnabled(\"EntityMetaData\") && delete data.metaData;\n delete data.configuredPayments;\n return data;\n },\n afterSubmit: (response) => {\n let store = (response.data && response.data.store) || {};\n let storeId = store.id;\n let allStores = getStores();\n let storeIndex = allStores.findIndex((store) => store.id === storeId);\n if (storeIndex > -1) {\n allStores[storeIndex] = store;\n } else {\n if (Object.keys(store).length) {\n allStores.push(store);\n }\n }\n setStores(allStores);\n },\n transformResponse: (response) => {\n let formattedResponse = Object.assign(\n {},\n response.data && response.data.store\n );\n if (formattedResponse.latitude) {\n formattedResponse.latitude = Number(formattedResponse.latitude);\n }\n if (formattedResponse.longitude) {\n formattedResponse.longitude = Number(formattedResponse.longitude);\n }\n if (\n formattedResponse.businessHours &&\n typeof formattedResponse.businessHours === \"object\"\n ) {\n if (!Object.keys(formattedResponse.businessHours).length) {\n formattedResponse.businessHours = null;\n }\n }\n return formattedResponse;\n },\n }}\n filters={{\n component: storesFilters,\n }}\n tableProperties={tableProperties}\n />\n );\n}\n","import React from \"react\";\nimport { getPrintableTime, formatTime } from \"../../../lib/datetime\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { Link } from \"react-router-dom\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { getSession, isExtensionEnabled } from \"../../../lib/auth\";\nimport { getAsapDuration } from \"../../../lib/commonlyused\";\n\nconst orderStatus = {\n COMPLETED: \"order.status.completed\",\n CANCELLED: \"order.status.cancelled\",\n PENDING: \"order.status.pending\",\n};\n\nexport function formatDate(date) {\n var dd = date.getDate();\n var mm = date.getMonth() + 1; // January is 0!\n\n var yyyy = date.getFullYear();\n if (dd < 10) {\n dd = \"0\" + dd;\n }\n if (mm < 10) {\n mm = \"0\" + mm;\n }\n return String(yyyy) + String(mm) + String(dd);\n}\n\nconst tableHeader = () => {\n let headers = [\n getMessage(\"operations.pickingQueue.header.referenceNumber\"),\n getMessage(\"operations.pickingQueue.header.placedTime\"),\n getMessage(\"operations.pickingQueue.header.amount\"),\n getMessage(\"operations.pickingQueue.header.status\"),\n ];\n if (!isExtensionEnabled(\"DeliverySlots\")) {\n return headers;\n } else {\n headers.splice(2, 0, getMessage(\"order.table.header.expectedTime\"));\n return headers;\n }\n};\n\nexport const tableProperties = (isMobileView) => {\n return {\n headers: tableHeader(),\n row: ({\n referenceNumber,\n clientId,\n store,\n pickupLocation,\n createdAt,\n invoiceAmount,\n itemCount,\n status,\n preferredDate,\n slotType,\n slotEndTime,\n slotStartTime,\n }) => (\n \n \n
    \n \n {clientId ? (\n \n #\n {clientId}\n \n ) : (\n \n Z\n {referenceNumber}\n \n )}\n \n
    \n {store ? {store.name} : null}\n {pickupLocation && !store ? (\n {pickupLocation.name}\n ) : null}\n
    \n \n {isMobileView ? (\n
    \n {getMessage(\"operations.pickingQueue.header.placedTime\")}\n
    \n ) : (\n \"\"\n )}\n
    \n {createdAt ? getPrintableTime(createdAt).split(\", \")[0] : null}\n
    \n \n {createdAt ? getPrintableTime(createdAt).split(\", \")[1] : null}\n \n
    \n {isExtensionEnabled(\"DeliverySlots\") ? (\n \n {isMobileView ? (\n
    \n {getMessage(\"order.table.header.expectedTime\")}\n
    \n ) : (\n \"\"\n )}\n
    \n {preferredDate\n ? getPrintableTime(preferredDate).split(\", \")[0]\n : null}\n
    \n \n {slotStartTime && slotEndTime && slotType !== \"ASAP\"\n ? formatTime(slotStartTime) + \" - \" + formatTime(slotEndTime)\n : getAsapDuration(slotStartTime, slotEndTime)}\n \n
    \n ) : null}\n \n {isMobileView ? (\n
    \n {getMessage(\"operations.pickingQueue.header.amount\")}\n
    \n ) : (\n \"\"\n )}\n
    \n {getSession().organization.currency.symbol + invoiceAmount}\n
    \n \n {getMessage(\"operations.pickingQueue.itemCount\", {\n count: itemCount,\n })}\n \n
    \n \n {isMobileView ? (\n
    \n {getMessage(\"operations.pickingQueue.header.status\")}\n
    \n ) : (\n \"\"\n )}\n
    \n {orderStatus[status] ? getMessage(orderStatus[status]) : null}\n
    \n
    \n
    \n ),\n };\n};\n","import React, { Component } from \"react\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { formatDate, tableProperties } from \"./utils.js\";\nimport StoreSelector, {\n getDefaultStore,\n} from \"../../../containers/StoreSelector\";\nimport { utcToLocalTime, getStandradDateTime } from \"../../../lib/datetime\";\n\nimport emptyIcon from \"./picking-queue.svg\";\nimport \"./style.css\";\n\nconst today = formatDate(new Date());\nconst emptyState = (props) => ({\n icon: emptyIcon,\n message: getMessage(\"operations.pickingQueue.emptyList.message\"),\n actions: ({ onAction, apiParams }) => (\n {\n onAction(TABLE_ACTIONS.SET_API_PARAMS, { storeId });\n }}\n />\n ),\n});\nfunction getMobileView() {\n return window.screen.width <= 480;\n}\n\nclass OrderPickingQueue extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isMobileView: getMobileView(),\n };\n this.mobileView = this.mobileView.bind(this);\n }\n\n mobileView() {\n this.setState({ isMobileView: getMobileView() });\n }\n\n componentDidMount() {\n window.addEventListener(\"resize\", this.mobileView, false);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.mobileView, false);\n }\n render() {\n let props = this.props;\n return (\n {\n const queue = response.data.orderQueue;\n if (Array.isArray(queue)) {\n queue.map((obj) => {\n if (obj.createdAt) {\n obj.createdAt = getStandradDateTime(\n utcToLocalTime,\n obj.createdAt\n );\n }\n if (obj.completedAt) {\n obj.completedAt = getStandradDateTime(\n utcToLocalTime,\n obj.completedAt\n );\n }\n if (obj.preferredDate && obj.slotStartTime) {\n const tempDate = getStandradDateTime(\n utcToLocalTime,\n `${obj.preferredDate} ${obj.slotStartTime}`\n ).split(\" \");\n obj.preferredDate = tempDate[0];\n obj.slotStartTime = tempDate[1];\n }\n if (obj.preferredDate && obj.slotEndTime) {\n const tempDate = getStandradDateTime(\n utcToLocalTime,\n `${obj.preferredDate} ${obj.slotEndTime}`\n ).split(\" \");\n obj.slotEndTime = tempDate[1];\n }\n return obj;\n });\n }\n return queue;\n },\n }}\n dontSavePagination\n emptyState={emptyState(props)}\n storeDependent\n primaryKey=\"referenceNumber\"\n tableProperties={tableProperties(this.state.isMobileView)}\n />\n );\n }\n}\n\nexport default OrderPickingQueue;\n","import React from \"react\";\nimport { BaseForm, Select } from \"../../../../components/Form\";\nimport Table, { Header, Row, Cell } from \"../../../../components/Table\";\nimport Loader from \"../../../../components/Loader\";\nimport { TABLE_ACTIONS } from \"../../../../containers/ListingPage\";\n\nimport API from \"../../../../lib/api\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { getPrintableTime } from \"../../../../lib/datetime\";\n\n// TODO: Add all resolutions translation\nconst resolutionOptions = (resolutions) => {\n if (!resolutions) {\n return null;\n }\n let options = [];\n resolutions.forEach((resolution) => {\n options.push({\n text: getMessage(`dispute.${resolution.name.toLowerCase()}`),\n value: resolution.name,\n });\n if (resolution.substituteResolutions) {\n options.push({\n text: getMessage(\n `dispute.${resolution.substituteResolutions.toLowerCase()}`\n ),\n value: resolution.substituteResolutions,\n });\n }\n });\n return options;\n};\n\nclass DisputeForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.showLoader = false;\n this.state.values = [];\n }\n\n componentDidMount() {\n this.setState({\n showLoader: true,\n });\n const api = new API({\n url: `/order-service/order/${this.props.referenceNumber}/dispute`,\n });\n api\n .get()\n .then((response) => {\n let disputes = response.data.dispute;\n let submitButtonshown = false;\n let disputeItems = disputes.map((dispute) => {\n if (dispute.status === \"PENDING\") {\n submitButtonshown = true;\n }\n return {\n resolution: dispute.resolution.name,\n status: dispute.status === \"PENDING\" ? \"APPROVED\" : dispute.status,\n id: dispute.id,\n };\n });\n this.setState({\n disputes,\n showLoader: false,\n submitButtonshown,\n values: {\n disputeItems,\n },\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n onSubmit(formData) {\n this.setState({\n submitting: true,\n });\n let values = Object.assign({}, formData);\n let disputesConfig =\n values.disputeItems &&\n values.disputeItems.filter((dispute) => dispute.disputeStatus);\n // let disputes = this.state.disputes.slice()\n disputesConfig.forEach((dispute, index) => {\n if (disputesConfig[index].status === \"REJECTED\") {\n delete disputesConfig[index].resolution;\n }\n // disputesConfig[index].id = dispute.id\n });\n values.disputeItems = disputesConfig;\n const { referenceNumber } = this.props;\n let deleteRow = true;\n const api = new API({\n url: `/order-service/order/${this.props.referenceNumber}/dispute`,\n });\n api\n .put(values)\n .then(\n (response) => {\n this.props.onAction(\n TABLE_ACTIONS.REFRESH,\n { referenceNumber },\n null,\n deleteRow\n );\n },\n (error) => {\n this.setState({\n formError: error.message,\n submitting: false,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n render() {\n const { disputes, submitButtonshown, submitting } = this.state;\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n return this.state.showLoader ? (\n \n ) : (\n
    \n \n
    \n {getMessage(\"dispute.orderItem\")}\n {getMessage(\"dispute.filingTime\")}\n {getMessage(\"dispute.disputedQuantity\")}\n {getMessage(\"dispute.reason\")}\n {getMessage(\"dispute.status\")}\n {getMessage(\"dispute.approveReject\")}\n {getMessage(\"dispute.actions\")}\n
    \n {disputes &&\n disputes.map((dispute, index) => (\n \n {dispute.orderItem.product.name}\n \n
    \n {dispute.createdAt\n ? getPrintableTime(dispute.createdAt).split(\", \")[0]\n : null}\n
    \n \n {dispute.createdAt &&\n getPrintableTime(dispute.createdAt).split(\", \")[1]}\n \n
    \n {dispute.quantity}\n {dispute.reason.name}\n {dispute.status}\n \n {dispute.status === \"PENDING\" ? (\n \n ) : (\n dispute.status\n )}\n \n \n {dispute.status === \"PENDING\" ? (\n \n ) : (\n getMessage(\n `dispute.${dispute.resolution.name.toLowerCase()}`\n )\n )}\n \n
    \n ))}\n
    \n {submitButtonshown && (\n
    \n {\n \n {getMessage(\"dispute.save\")}\n \n }\n \n {getMessage(\"dispute.cancel\")}\n \n
    \n )}\n
    \n );\n }\n}\n\nexport default DisputeForm;\n","import React from \"react\";\nimport { BaseForm, Radio } from \"../../../../components/Form\";\n\nimport { getMessage } from \"../../../../lib/translator\";\n\nclass DisputesFilter extends BaseForm {\n render() {\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n\n return (\n
    \n
    \n \n
    \n {getMessage(\"dispute.save\")}\n
    \n );\n }\n}\n\nexport default DisputesFilter;\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport StoreSelector, {\n getDefaultStore,\n} from \"../../../containers/StoreSelector\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport { Popup } from \"../../../components/Popup\";\n\nimport DisputeForm from \"./Form\";\nimport DisputesFilter from \"./Filters\";\n\nimport { getMessage } from \"../../../lib/translator\";\nimport { getPrintableTime } from \"../../../lib/datetime\";\n\nimport EmptyIcon from \"./dispute-empty.svg\";\nimport \"./style.css\";\n\nconst emptyState = (props) => {\n return {\n icon: EmptyIcon,\n message: getMessage(\"dispute.emptyMessage\"),\n actions: ({ apiParams, onAction }) => (\n {\n onAction(TABLE_ACTIONS.SET_API_PARAMS, { storeId });\n }}\n />\n ),\n };\n};\n\nclass TableActions extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showDisputePopup: false,\n };\n }\n render() {\n const { props } = this;\n return (\n \n this.setState({ showDisputePopup: false })}\n className=\"disputes-popup\"\n >\n this.setState({ showDisputePopup: false })}\n />\n \n }>\n this.setState({ showDisputePopup: true })}\n >\n {getMessage(\"dispute.view\")}\n \n \n \n );\n }\n}\n\nconst tableProperties = {\n headers: [\n getMessage(\"dispute.referenceNumber\"),\n getMessage(\"dispute.orderPlacedOn\"),\n getMessage(\"dispute.actions\"),\n ],\n row: ({ referenceNumber, apiParams, createdAt, onAction }) => (\n \n \n \n \n {referenceNumber}\n \n \n \n \n
    \n {createdAt ? getPrintableTime(createdAt).split(\", \")[0] : null}\n
    \n \n {createdAt && getPrintableTime(createdAt).split(\", \")[1]}\n \n
    \n \n \n \n
    \n ),\n};\n\nconst DisputesContainer = (props) => {\n let params = {};\n params.storeId = getDefaultStore(props.stores).storeId;\n params.disputeStatus = \"PENDING\";\n return (\n response.data.order,\n }}\n emptyState={emptyState(props)}\n tableProperties={tableProperties}\n headerActions={({ apiParams, onAction }) => (\n {\n onAction(TABLE_ACTIONS.SET_API_PARAMS, { storeId });\n }}\n />\n )}\n storeDependent\n filters={{\n component: DisputesFilter,\n }}\n />\n );\n};\n\nexport default DisputesContainer;\n","import React from \"react\";\nimport { BaseForm, Input, Checkbox, Select } from \"../../../../components/Form\";\nimport AuthenticatedPage from \"../../../../containers/AuthenticatedPage\";\nimport Loader from \"../../../../components/Loader\";\nimport API from \"../../../../lib/api\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { cloneMutables } from \"../../../../lib/stateManagement\";\nimport Table, { Row, Cell, Header } from \"../../../../components/Table\";\n\nimport \"./style.css\";\n\nclass FileDispute extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n loading: false,\n values: {},\n };\n }\n\n componentDidMount() {\n this.setState({\n loading: true,\n });\n const referenceNumber = this.props.match.params.id;\n const api = new API({ url: `/order-service/order/${referenceNumber}` });\n const disputeReasonsApi = new API({ url: \"/order-service/dispute-reason\" });\n api\n .get()\n .then((response) => {\n let order = response.data.order;\n this.setState({\n values: order,\n loading: false,\n referenceNumber,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n disputeReasonsApi.get().then((response) => {\n let disputeReasons = response.data.disputereason;\n let reasonResMap = {};\n let reasons = [];\n disputeReasons.forEach((reason) => {\n reasons.push({\n text: reason.name,\n value: reason.id,\n });\n let resolutions = [];\n reason.resolutions.forEach((resolution) => {\n // if (resolution.substituteResolutions) {\n // resolutions.push({\n // text: resolution.substituteResolutions,\n // value: resolution.id\n // })\n // }\n resolutions.push({\n text: resolution.name,\n value: resolution.id,\n });\n });\n reasonResMap[reason.id] = resolutions;\n });\n this.setState({\n reasonResMap,\n reasons,\n });\n });\n }\n\n onSubmit(formData) {\n let data = cloneMutables(formData);\n let disputedItems = data.items.filter((item) => item.dispute);\n let params = {};\n let items = [];\n disputedItems.forEach((item) => {\n items.push({\n orderItemId: item.orderDetails.orderItemId,\n quantity: item.quantity,\n reasonId: item.reasonId,\n resolutionId: item.resolutionId,\n });\n });\n params.items = items;\n\n const api = new API({\n url: `/order-service/order/${this.state.referenceNumber}/dispute`,\n });\n api\n .post(params)\n .then(\n (response) => {\n this.props.history.goBack();\n },\n (error) => {\n this.setState({\n formError: error.message,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n render() {\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n const { loading, referenceNumber, values, formError } = this.state;\n const items = values && values.items;\n const maxvalue =\n values.status === \"COMPLETED\" ? \"deliveredQuantity\" : \"orderedQuantity\";\n return (\n \n

    \n {getMessage(\"order.dispute.heading\")}\n {\" #\"}\n {referenceNumber}\n

    \n
    \n {loading ? (\n \n ) : (\n
    \n {formError &&
    {formError}
    }\n \n
    \n {getMessage(\"dispute.name\")}\n {getMessage(\"dispute.quantity\")}\n {getMessage(\"dispute.reason\")}\n {getMessage(\"dispute.resolution\")}\n
    \n {items &&\n items.map((item, index) => {\n let name =\n item[item.entityType.toLowerCase()].fullName ||\n item[item.entityType.toLowerCase()].name;\n let orderItemId = item.orderDetails.orderItemId;\n return (\n \n \n \n this.updateState([\"items\", index, \"dispute\"], e)\n }\n checked={this.getState([\"items\", index, \"dispute\"])}\n />\n \n \n {`/${Number(\n item.orderDetails[maxvalue]\n ).toFixed(2)}`},\n ],\n }}\n value={\n item.product.isSoldByWeight\n ? Number(\n this.getState([\"items\", index, \"quantity\"])\n ).toFixed(2)\n : Number(\n this.getState([\"items\", index, \"quantity\"])\n ).toFixed(0)\n }\n {...this.generateStateMappers({\n stateKeys: [\"items\", index, \"quantity\"],\n })}\n />\n \n \n \n \n \n \n \n \n );\n })}\n
    \n
    \n {getMessage(\"dispute.submit\")}\n this.props.history.goBack()}\n >\n {getMessage(\"dispute.cancel\")}\n \n
    \n
    \n )}\n
    \n
    \n );\n }\n}\n\nexport default FileDispute;\n","import React from \"react\";\nimport { BaseForm, Checkbox, Input } from \"../../../../../components/Form\";\n\nimport { formatTime } from \"../../../../../lib/datetime\";\nimport { getMessage } from \"../../../../../lib/translator\";\n\nconst getCutOffMins = (startTime, cutOff) => {\n if (!cutOff || !startTime) {\n return null;\n }\n const timeParts = startTime.split(\":\");\n const cutOffParts = cutOff.split(\":\");\n let difference = Math.abs(\n new Date(2018, 10, 20, timeParts[0], timeParts[1], timeParts[2]) -\n new Date(2018, 10, 20, cutOffParts[0], cutOffParts[1], cutOffParts[2])\n );\n let minutes = Math.ceil(difference / 1000 / 60);\n return minutes;\n};\n\nclass StoreSlotForm extends BaseForm {\n constructor(props) {\n super(props);\n let cutOff =\n props.value &&\n getCutOffMins(props.value.slot.startTime, props.value.cutOff);\n this.state.values.cutOff = cutOff;\n }\n render() {\n const { Form } = this.components;\n const { SubmitButton, CancelButton } = this.buttons;\n const { values } = this.state;\n const { slot } = { ...values };\n return (\n
    \n
    \n {this.state.formError &&
    {this.state.formError}
    }\n \n
    \n {slot.startTime\n ? `${formatTime(slot.startTime)} - ${formatTime(slot.endTime)}`\n : getMessage(\"slots.asap\") +\n \" \" +\n slot.endTime.split(\":\")[2] +\n \" \" +\n getMessage(\"slots.asap.minute\")}\n
    \n
    \n {!this.getState([\"permanentBlock\"]) &&\n !(this.state.values.slot.type === \"ASAP\") && (\n \n )}\n \n
    \n
    \n {getMessage(\"slots.save\")}\n {getMessage(\"slots.cancel\")}\n
    \n
    \n
    \n );\n }\n}\n\nexport default StoreSlotForm;\n\nexport { getCutOffMins };\n","import React, { Component } from \"react\";\nimport StoreSelector, {\n makestoreDependentComponent,\n getDefaultStore,\n} from \"../../../../containers/StoreSelector\";\nimport AuthenticatedPage from \"../../../../containers/AuthenticatedPage\";\nimport EmptyState from \"../../../../components/EmptyState\";\nimport \"./style.css\";\n\nimport EmptyIcon from \"../EditSlots/empty.svg\"; // TODO: Change this\nimport { getMessage } from \"../../../../lib/translator\";\nimport {\n formatTime,\n getMinutes,\n getPrintableTime,\n getStandradDateTime,\n localTimeToUtc,\n utcToLocalTime,\n} from \"../../../../lib/datetime\";\nimport { BaseForm, Checkbox, Select } from \"../../../../components/Form\";\nimport { Dialog } from \"../../../../components/Popup\";\nimport moment from \"moment\";\nimport API from \"../../../../lib/api\";\nimport { getExtensionDetails, isExtensionEnabled } from \"../../../../lib/auth\";\nimport Loader from \"../../../../components/Loader\";\nimport { getCutOffMins } from \"../StoreSlotConfigure/Form\";\n\nclass InterfaceContainer extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n values: { DELIVERY: [], PICKUP: [] },\n prevValues: { DELIVERY: [], PICKUP: [] },\n visibleDays: \"\",\n };\n\n this.changeStore = this.changeStore.bind(this);\n this.checkIfValueChanged = this.checkIfValueChanged.bind(this);\n this.findIndex = this.findIndex.bind(this);\n this.fetchSlotDetails = this.fetchSlotDetails.bind(this);\n this.handleOrderSelect = this.handleOrderSelect.bind(this);\n }\n\n handleOrderSelect(val) {\n this.setState({\n selectedOption: val,\n });\n }\n\n changeStore(storeId) {\n this.setState({ storeId }, this.fetchSlotDetails);\n }\n\n convertDataToMapState(data) {\n let newState = JSON.parse(JSON.stringify(data));\n newState = Object.keys(data).map(\n (date) =>\n date &&\n data[date].sort((time1, time2) => {\n if (time1.startTime < time2.startTime) {\n return -1;\n } else {\n return 1;\n }\n })\n );\n\n let modelData = {};\n Object.keys(data).forEach((day) => {\n data[day].forEach((item) => {\n if (item.type === \"STANDARD\") {\n const localDate = getStandradDateTime(\n utcToLocalTime,\n `${day} ${item.startTime}`\n ).split(\" \")[0];\n if (localDate >= moment().format(\"YYYY-MM-DD\")) {\n modelData[localDate] = [];\n }\n } else {\n modelData[day] = [];\n }\n });\n });\n\n Object.keys(data).forEach((day) => {\n data[day].forEach((item) => {\n if (item.type === \"STANDARD\") {\n const localDate = getStandradDateTime(\n utcToLocalTime,\n `${day} ${item.startTime}`\n ).split(\" \")[0];\n if (localDate >= moment().format(\"YYYY-MM-DD\")) {\n if (localDate !== day) {\n if (\n modelData[day].filter((slot) => slot.id === item.id).length ===\n 0\n ) {\n modelData[day].push({});\n }\n }\n modelData[localDate].push(item);\n }\n } else {\n modelData[day].push(item);\n }\n });\n });\n\n delete modelData[\n moment().add(this.state.visibleDays, \"days\").format(\"YYYY-MM-DD\")\n ];\n\n newState = Object.keys(modelData).map(\n (date) =>\n date &&\n modelData[date].sort((time1, time2) => {\n if (time1.startTime < time2.startTime) {\n return -1;\n } else {\n return 1;\n }\n })\n );\n\n newState = Object.keys(modelData).map((date) => {\n return modelData[date].map((slot) => {\n slot.date = date;\n slot.status = slot.status === \"ENABLED\";\n return slot;\n });\n });\n return newState;\n }\n\n fetchSlotDetails() {\n let { pickupSupported, deliverySupported } = this.state;\n this.setState({ loading: true });\n let storeId = getDefaultStore(this.props.stores).storeId;\n this.visibleDaysApi = new API({\n url: `/account-service/extension/${\n getExtensionDetails(\"DeliverySlots\").id\n }`,\n });\n this.visibleDaysApi\n .get()\n .then(async (response) => {\n let visibleDays =\n response.data &&\n response.data.extension.config &&\n response.data.extension.config.globalConfig.visibleDaysForSlot;\n this.setState({ visibleDays });\n let duration = moment.duration({ days: visibleDays - 1 });\n if (deliverySupported) {\n this.slotApi = new API({\n url: `/order-service/store/${storeId}/slot`,\n });\n let slotApiparams = {\n startDate: moment().format(\"YYYY-MM-DD\"),\n endDate: moment(new Date()).add(duration).format(\"YYYY-MM-DD\"),\n };\n await this.slotApi\n .get(slotApiparams)\n .then((response) => {\n let modifiedResponse = this.convertDataToMapState(response.data);\n let newvalues = JSON.parse(JSON.stringify(this.state.values));\n newvalues[\"DELIVERY\"] = JSON.parse(\n JSON.stringify(modifiedResponse)\n );\n this.setState((prevState) => {\n return {\n values: newvalues,\n dates: Object.keys(response.data),\n slots: Object.keys(response.data).length\n ? response.data[Object.keys(response.data)[0]]\n : [],\n loading: false,\n prevValues: {\n ...prevState.prevValues,\n DELIVERY: JSON.parse(JSON.stringify(modifiedResponse)),\n },\n };\n });\n })\n .catch((error) => {\n console.error(error);\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n });\n }\n if (pickupSupported) {\n this.pickupSlotsApi = new API({\n url: `/order-service/store/${storeId}/slot`,\n });\n let pickupApiParams = {\n startDate: moment().format(\"YYYY-MM-DD\"),\n endDate: moment(new Date()).add(duration).format(\"YYYY-MM-DD\"),\n orderType: \"PICKUP\",\n };\n await this.pickupSlotsApi\n .get(pickupApiParams)\n .then((response) => {\n let modifiedResponse = this.convertDataToMapState(response.data);\n let newvalues = JSON.parse(JSON.stringify(this.state.values));\n newvalues[\"PICKUP\"] = JSON.parse(\n JSON.stringify(modifiedResponse)\n );\n this.setState((prevState) => {\n return {\n pickUpDates: Object.keys(response.data),\n values: newvalues,\n pickupSlots: Object.keys(response.data).length\n ? response.data[Object.keys(response.data)[0]]\n : [],\n loading: false,\n prevValues: {\n ...prevState.prevValues,\n PICKUP: JSON.parse(JSON.stringify(modifiedResponse)),\n },\n };\n });\n })\n .catch((error) => {\n console.error(error);\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n });\n }\n })\n .catch((error) => {\n console.error(error);\n if (error.code === 401 || error.code === 403) {\n throw error;\n } else if (error.message === \"cancelled\") {\n return;\n }\n this.setState({\n error: error.message,\n loading: false,\n });\n });\n }\n\n componentWillUnmount() {\n this.visibleDaysApi && this.visibleDaysApi.cancel();\n this.slotApi && this.slotApi.cancel();\n this.pickupSlotsApi && this.pickupSlotsApi.cancel();\n }\n\n transformResponse(response) {\n let modifiedRule = response.data.storeslotrule;\n modifiedRule.cutOff = getCutOffMins(\n modifiedRule.slot.startTime,\n modifiedRule.cutOff\n );\n modifiedRule.slotName =\n modifiedRule.slot.type === \"STANDARD\"\n ? `${formatTime(modifiedRule.slot.startTime)} - ${formatTime(\n modifiedRule.slot.endTime\n )}`\n : `${getMessage(\"slots.asap\")} ${\n modifiedRule.slot.endTime.split(\":\")[2]\n } ${getMessage(\"slots.asap.minute\")}`;\n return modifiedRule;\n }\n\n findIndex(item) {\n let id = item.data.storeslotrule.slot.id;\n return this.state.values.findIndex((value) => value.slot.id === id);\n }\n\n checkIfValueChanged(data, type) {\n let changedSlots = [];\n data.forEach((date, dateIndex) => {\n date.forEach((slot, slotIndex) => {\n if (\n slot.status !==\n this.state.prevValues[type][dateIndex][slotIndex].status\n ) {\n changedSlots.push(slot);\n }\n });\n });\n return changedSlots;\n }\n\n onSubmit(formData) {\n let defaultSelected =\n (this.options && this.options.length > 0 && this.options[0].value) ||\n null;\n let val = this.state.selectedOption || defaultSelected;\n this.setState({ submitting: true });\n let data = JSON.parse(JSON.stringify(formData));\n let changedRules = this.checkIfValueChanged(\n JSON.parse(JSON.stringify(data[val])),\n val\n );\n let storeId = getDefaultStore(this.props.stores).storeId;\n changedRules = changedRules.map((rule) => {\n rule.status = rule.status ? \"ENABLED\" : \"DISABLED\";\n rule.slotId = rule.id || rule.slotId;\n delete rule.endTime;\n delete rule.startTime;\n delete rule.type;\n delete rule.id;\n return rule;\n });\n /* Grouping by slotId */\n let modifiedChangedRulesObj = {};\n changedRules.forEach((rule) => {\n let preferredDate;\n if (rule.slotId in modifiedChangedRulesObj) {\n modifiedChangedRulesObj[rule.slotId][rule.date] = rule.status;\n } else {\n if (rule.orderType === \"DELIVERY\") {\n this.state.slots.forEach((slot) => {\n if (slot.id === rule.slotId) {\n if (slot.startTime) {\n const tempTime = getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${slot.startTime}`\n ).split(\" \");\n const tempDate = getStandradDateTime(\n localTimeToUtc,\n `${rule.date} ${tempTime[1]}`\n ).split(\" \");\n preferredDate = tempDate[0].trim();\n } else {\n preferredDate = rule.date;\n }\n }\n });\n }\n\n if (rule.orderType === \"PICKUP\") {\n this.state.pickupSlots.forEach((slot) => {\n if (slot.id === rule.slotId) {\n if (slot.startTime) {\n const tempTime = getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${slot.startTime}`\n ).split(\" \");\n const tempDate = getStandradDateTime(\n localTimeToUtc,\n `${rule.date} ${tempTime[1]}`\n ).split(\" \");\n preferredDate = tempDate[0].trim();\n } else {\n preferredDate = rule.date;\n }\n }\n });\n }\n modifiedChangedRulesObj[rule.slotId] = {};\n modifiedChangedRulesObj[rule.slotId][preferredDate] = rule.status;\n }\n });\n let modifiedChangedRules = Object.keys(modifiedChangedRulesObj).map(\n (slotId) => {\n return {\n slotId,\n slotDetails: modifiedChangedRulesObj[slotId],\n };\n }\n );\n\n if (modifiedChangedRules.length) {\n Promise.all(\n modifiedChangedRules.map((params) => {\n let api = new API({ url: `/order-service/store/${storeId}/slot` });\n return api.put(params);\n })\n )\n .then((response) => {\n this.setState((prevState) => {\n return {\n submitting: false,\n successMessage: true,\n values: { ...prevState.values, [val]: data[val] },\n prevValues: {\n ...prevState.prevValues,\n [val]: JSON.parse(JSON.stringify(data[val])),\n },\n formError: null,\n };\n });\n })\n .catch((error) => {\n console.error(error);\n this.setState({\n submitting: false,\n successMessage: false,\n formError: error.message,\n });\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n });\n } else {\n this.setState({\n submitting: false,\n successMessage: true,\n formError: null,\n });\n }\n }\n\n async componentDidMount() {\n this.setState({ showSelector: true });\n this.configApi = new API({ url: \"/account-service/config/order\" });\n await this.configApi\n .get()\n .then((response) => {\n const orderTypes = response.data.config.order.orderTypes;\n if (orderTypes && orderTypes.includes(\"PICKUP\")) {\n this.setState({\n pickupSupported: true,\n });\n }\n if (orderTypes && orderTypes.includes(\"DELIVERY\")) {\n this.setState({\n deliverySupported: true,\n });\n }\n })\n .catch((error) => {\n console.error(error);\n if (error.code === 401 || error.code === 403) {\n throw error;\n } else {\n this.setState({\n formError: error.message,\n });\n }\n });\n if (this.state.pickupSupported && this.state.deliverySupported) {\n this.options = [\n { text: \"DELIVERY\", value: \"DELIVERY\" },\n { text: \"PICKUP\", value: \"PICKUP\" },\n ];\n } else if (this.state.pickupSupported) {\n this.options = [{ text: \"PICKUP\", value: \"PICKUP\" }];\n } else if (this.state.deliverySupported) {\n this.options = [{ text: \"DELIVERY\", value: \"DELIVERY\" }];\n }\n this.fetchSlotDetails();\n }\n\n render() {\n let { SubmitButton } = this.buttons;\n let { Form } = this.components;\n let defaultSelected =\n (this.options && this.options.length > 0 && this.options[0].value) ||\n null;\n let val = this.state.selectedOption || defaultSelected;\n let tableContent = null;\n if (val === \"DELIVERY\") {\n tableContent = (\n \n {this.state.values[\"DELIVERY\"].length ? (\n
    \n
    \n {getMessage(\"slots.heading\")}\n
    \n {this.state.slots &&\n this.state.slots.map((slot, index) => (\n
    \n {slot.type === \"STANDARD\"\n ? `${\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n slot.startTime\n }`\n )\n ).split(\", \")[1]\n }\n - \n ${\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n slot.endTime\n }`\n )\n ).split(\", \")[1]\n }`\n : `${getMessage(\"slots.asap\")} ${getMinutes(\n slot.endTime\n )} ${getMessage(\"slots.asap.minute\")}`}\n
    \n ))}\n
    \n ) : null}\n
    \n {this.state.values[\"DELIVERY\"].length > 0 ? (\n this.state.values[\"DELIVERY\"].map((date, dateIndex) => (\n \n
    \n {this.state.dates[dateIndex] ===\n moment().format(\"YYYY-MM-DD\")\n ? getMessage(\"slots.today\")\n : this.state.dates[dateIndex] ===\n moment().add(1, \"day\").format(\"YYYY-MM-DD\")\n ? getMessage(\"slots.tomorrow\")\n : moment(this.state.dates[dateIndex]).format(\n \"ddd, MMM Do\"\n )}\n
    \n {this.state.values[\"DELIVERY\"][dateIndex] &&\n this.state.values[\"DELIVERY\"][dateIndex].map(\n (slots, slotIndex) => (\n \n )\n )}\n
    \n ))\n ) : (\n
    \n {getMessage(\"slots.DELIVERY.empty\")}\n
    \n )}\n \n
    \n );\n }\n\n if (val === \"PICKUP\") {\n tableContent = (\n \n {this.state.values[\"PICKUP\"].length ? (\n
    \n
    \n {getMessage(\"slots.heading\")}\n
    \n {this.state.pickupSlots &&\n this.state.pickupSlots.map((slot, index) => (\n
    \n {slot.type === \"STANDARD\"\n ? `${\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n slot.startTime\n }`\n )\n ).split(\", \")[1]\n }\n - \n ${\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n slot.endTime\n }`\n )\n ).split(\", \")[1]\n }`\n : `${getMessage(\"slots.asap\")} ${getMinutes(\n slot.endTime\n )} ${getMessage(\"slots.asap.minute\")}`}\n
    \n ))}\n
    \n ) : null}\n
    \n {this.state.values[\"PICKUP\"].length > 0 ? (\n this.state.values[\"PICKUP\"].map((date, dateIndex) => (\n \n
    \n {this.state.pickUpDates[dateIndex] ===\n moment().format(\"YYYY-MM-DD\")\n ? getMessage(\"slots.today\")\n : this.state.pickUpDates[dateIndex] ===\n moment().add(1, \"day\").format(\"YYYY-MM-DD\")\n ? getMessage(\"slots.tomorrow\")\n : moment(this.state.pickUpDates[dateIndex]).format(\n \"ddd, MMM Do\"\n )}\n
    \n {this.state.values[\"PICKUP\"][dateIndex] &&\n this.state.values[\"PICKUP\"][dateIndex].map(\n (slots, slotIndex) => (\n \n )\n )}\n
    \n ))\n ) : (\n
    {getMessage(\"slots.PICKUP.empty\")}
    \n )}\n \n
    \n );\n }\n return (\n
    \n {this.state.showSelector && isExtensionEnabled(\"MultiStoreSupport\") && (\n \n )}\n

    {getMessage(\"slots.store.blocking.title\")}

    \n {this.state.loading ? (\n \n ) : !this.state.values[\"DELIVERY\"].length &&\n !this.state.values[\"PICKUP\"].length ? (\n \n ) : (\n
    \n
    \n \n
    \n
    {tableContent}
    \n {(!this.state.values[\"DELIVERY\"].length &&\n !this.state.values[\"PICKUP\"].length) ||\n val === null ? (\n \n ) : null}\n {this.state.values[\"DELIVERY\"].length ||\n this.state.values[\"PICKUP\"].length ? (\n
    \n {this.state.formError && (\n
    {this.state.formError}
    \n )}\n {this.state.successMessage && (\n this.setState({ successMessage: null })}\n title={getMessage(\"customer.address.success\")}\n information={getMessage(\"extension.slots.saved\")}\n closeText={getMessage(\"customer.address.okay\")}\n className=\"success\"\n />\n )}\n {this.state.values[val].length ? (\n <>\n \n {getMessage(\"deliveryArea.slots.save\")}\n \n \n {getMessage(\"slots.cancel\")}\n \n \n ) : null}\n
    \n ) : null}\n \n )}\n
    \n );\n }\n}\n\nconst InterfaceWithStores = makestoreDependentComponent(InterfaceContainer);\n\nclass StoreSlotConfiguration extends Component {\n render() {\n return (\n \n \n \n );\n }\n}\n\nexport default StoreSlotConfiguration;\n","import React from \"react\";\nimport { BaseForm, Input } from \"../../../../components/Form\";\nimport Dialog from \"../../../../components/Popup/Dialog\";\nimport AuthenticatedPage from \"../../../../containers/AuthenticatedPage\";\nimport Loader from \"../../../../components/Loader\";\nimport Table, { Row, Cell, Header } from \"../../../../components/Table\";\nimport { Popup } from \"../../../../components/Popup\";\nimport API from \"../../../../lib/api\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { getSession } from \"../../../../lib/auth\";\nimport \"./style.css\";\nimport { get } from \"../../../../lib/storage\";\nimport { is_Domain_WSI } from \"../../../../utils/domainCheck\";\n\nclass RegisterOrderPayment extends BaseForm {\n componentDidMount() {\n this.setState({\n loading: true,\n showErrorDialog: false,\n showCompletePopup: false,\n packingDetails: [],\n });\n let searchParams = new URL(window.location).searchParams;\n const pendingAmount = searchParams.get(\"pendingAmount\");\n const clientId = searchParams.get(\"clientId\");\n const orderType = searchParams.get(\"type\");\n this.setState({\n pendingAmount,\n clientId,\n });\n const storeId = get(\"store\");\n const configApi = new API({\n url: `/config-service/config/order?storeId=${storeId}`,\n });\n configApi.get().then((response) => {\n let disabledModes = response.data.order.finCloseDisabledPaymentModes;\n disabledModes = disabledModes || [];\n const paymentModes = response.data.order.paymentMethods?.[\n orderType\n ].filter((mode) => disabledModes.indexOf(mode) === -1);\n if (paymentModes && !paymentModes.length) {\n const api = new API({\n url: `/order-service/order/${this.props.match.params.id}`,\n });\n api\n .put({ status: \"COMPLETED\" })\n .then((response) => {\n this.setState(\n {\n submitting: false,\n },\n () => this.props.history.goBack()\n );\n })\n .catch((error) => {\n console.error(error);\n if (error.code === 401) {\n throw error;\n } else {\n this.setState({\n submitting: false,\n loading: false,\n errorMessage:\n (error && error.message) || \"Please try again later\",\n showErrorDialog: true,\n });\n }\n });\n } else {\n this.setState({\n loading: false,\n paymentModes,\n });\n }\n });\n if (!pendingAmount) {\n const orderApi = new API({\n url: `/order-service/order/${this.props.match.params.id}`,\n });\n orderApi\n .get()\n .then((response) => {\n const order = response.data.order;\n this.setState({\n pendingAmount: order.pendingAmount,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n const api = new API({\n url: `/order-service/order/${this.props.match.params.id}`,\n });\n api\n .get({ \"includes[0]\": \"offerProducts\" })\n .then((response) => {\n let order = response.data.order;\n if (order.packingDetails) {\n this.setState({\n packingDetails: order.packingDetails,\n sampleItems: this.getSampleItems(order?.items),\n });\n }\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n onSubmit(formData) {\n formData = this.state.values;\n this.setState({\n submitting: true,\n loading: true,\n showCompletePopup: false,\n });\n let data = Object.assign({}, formData);\n let newData = Object.keys(data)\n .map((mode) => {\n if (data[mode].amount) {\n return {\n mode: mode,\n amount: data[mode].amount,\n transactionId: data[mode].transactionId,\n };\n }\n return null;\n })\n .filter(Boolean);\n\n let paramsArray = newData.map((data) => {\n let params = {};\n params.amount = data.amount;\n params.mode = data.mode;\n params.orderReferenceNumber = this.props.match.params.id;\n if (data.transactionId) {\n params.metaData = { transaction_id: data.transactionId };\n }\n params.status = \"COMPLETED\";\n return params;\n });\n const apiPayment = new API({ url: \"/order-service/order-payment\" });\n let apiCallArray = [];\n apiCallArray = paramsArray.map((param) => {\n return function () {\n return apiPayment.post(param);\n };\n });\n apiCallArray\n .reduce((prev, curr) => {\n return prev.then(curr);\n }, Promise.resolve())\n .then((response) => {\n const api = new API({\n url: `/order-service/order/${this.props.match.params.id}`,\n });\n api\n .put({ status: \"COMPLETED\" })\n .then((response) => {\n this.setState(\n {\n submitting: false,\n loading: false,\n },\n () => this.props.history.goBack()\n );\n })\n .catch((error) => {\n console.log(error);\n this.setState({\n submitting: false,\n loading: false,\n errorMessage:\n (error && error.message) || \"Please try again later\",\n showErrorDialog: true,\n });\n });\n })\n .catch((error) => {\n console.error(error);\n if (error.code === 401) {\n throw error;\n } else {\n this.setState({\n submitting: false,\n loading: false,\n errorMessage: (error && error.message) || \"Please try again later\",\n showErrorDialog: true,\n });\n }\n });\n }\n\n getSampleItems = (orderItems = []) => {\n let samples = [];\n orderItems.forEach((item) => {\n if (item.orderDetails?.isFree) samples.push(item);\n });\n return samples;\n };\n\n render() {\n const { Form } = this.components;\n const referenceNumber = this.props.match.params.id;\n const {\n paymentModes,\n order,\n values,\n pendingAmount,\n submitting,\n errorMessage,\n sampleItems,\n } = this.state;\n const clientId =\n (this.state && this.state.clientId && this.state.clientId !== \"null\") ||\n (order && order.clientId);\n let remainingAmount = (\n pendingAmount -\n (values &&\n Object.keys(values) &&\n Object.keys(values).reduce(\n (acc, val) => Number(values[val].amount) + acc,\n 0\n ))\n ).toFixed(2);\n let isButtonDisabled =\n paymentModes &&\n paymentModes.length > 0 &&\n (submitting || !!Number(!!remainingAmount && Number(remainingAmount)));\n return (\n \n

    \n {getMessage(\"order.register.payments.for\")}{\" \"}\n {clientId ? \"#\" : \"Z\"}\n {clientId || referenceNumber}{\" \"}\n

    \n {this.state.showErrorDialog && (\n this.props.history.goBack()}\n closeText={getMessage(\"dialog.okText\")}\n />\n )}\n {this.state.loading ? (\n \n ) : (\n
    \n this.setState({ showCompletePopup: false })}\n className=\"pickup-pending-form\"\n heading={getMessage(\"order.details.popup.heading\")}\n >\n
    \n
    \n {getMessage(\"order.details.completion.title\")}\n
    \n
    \n {getMessage(\"order.details.completion.message\")}\n
    \n
    \n
    \n {getMessage(\"order.details.packing.title\")}\n
    \n
    \n {this.state?.packingDetails &&\n this.state?.packingDetails.map((item, index) => {\n return (\n
    \n
    \n \n {getMessage(\"order.details.packing.type\")}\n \n {Object.keys(item?.details)[0]}\n
    \n
    \n {item.details?.[\n Object.keys(item?.details)[0]\n ].map((data) => {\n return (\n
    \n {data}\n
    \n );\n })}\n
    \n
    \n );\n })}\n
    \n
    \n this.onSubmit()}\n >\n {getMessage(\"order.payment.submit\")}\n \n
    \n
    \n {sampleItems?.length !== 0 && (\n
    \n
    \n {getMessage(\"order.reg.payments.sample.heading\")}\n
    \n {sampleItems?.map((item) => {\n let name = item.fullName || item.name;\n let pickedQuantity = Number(\n item.orderDetails.deliveredQuantity\n );\n let isSoldByWeight = item.soldByWeight || false;\n let divider = 1;\n let unit =\n (name && name.split(\" \").slice(-1).pop()) || \"\";\n let weight = name ? name.split(\" \").slice(-2)[0] : 1;\n if (unit === \"KG\" || unit === \"L\") {\n divider = weight * 1000;\n }\n if (unit === \"G\" || unit === \"GM\" || unit === \"ML\") {\n divider = weight;\n }\n let orderedQuantity = item.orderDetails.orderedQuantity;\n return (\n
    \n {item.brand ? (\n
    \n {\" \"}\n \n {item?.brand?.name}\n {\" \"}\n {name}\n
    \n ) : (\n name\n )}\n \n {\" : \"}\n {pickedQuantity\n ? isSoldByWeight\n ? (pickedQuantity / divider).toFixed(3)\n : pickedQuantity.toFixed(0)\n : isSoldByWeight\n ? (Number(orderedQuantity) / divider).toFixed(3)\n : Number(orderedQuantity).toFixed(0)}\n {\"Qty\"}\n \n
    \n );\n })}\n
    \n )}\n
    \n \n \n
    \n {getMessage(\"order.payment.paymentmode\")}\n \n {getMessage(\"order.payment.amount\")} (\n {getSession() &&\n getSession().organization &&\n getSession().organization.currency.symbol}\n )\n \n {getMessage(\"order.payment.transactionid\")}\n
    \n {paymentModes &&\n paymentModes.map((mode, i) => (\n \n \n {is_Domain_WSI() && mode === \"COD\"\n ? getMessage(\"cop\")\n : mode}\n \n \n \n \n \n {mode !== \"COD\" && (\n \n )}\n \n \n ))}\n \n {getMessage(\"order.payment.pendingamount\")}\n {remainingAmount}\n \n \n
    \n
    \n {\n e.preventDefault();\n !isButtonDisabled &&\n this.setState({ showCompletePopup: true });\n }}\n >\n {getMessage(\"order.payment.submit\")}\n \n
    \n \n )}\n
    \n );\n }\n}\n\nexport default RegisterOrderPayment;\n","import React, { Component } from \"react\";\nimport Table, { Header, Row, Cell } from \"../../../../../components/Table\";\nimport Image from \"../../../../../components/Image\";\nimport {\n getNestedState,\n updateStateRecursively,\n} from \"../../../../../lib/stateManagement\";\nimport { getMessage } from \"../../../../../lib/translator\";\n\nimport \"../../Details/OrderItemsView/style.css\";\nfunction getMobileView() {\n return window.screen.width <= 480;\n}\n\nclass ItemsView extends Component {\n constructor(props) {\n super(props);\n this.state = this.generateStateFromProps(props, {\n items: [],\n isMobileView: getMobileView(),\n });\n\n this.getNestedState = getNestedState.bind(this);\n this.updateStateRecursively = updateStateRecursively.bind(this);\n this.mobileView = this.mobileView.bind(this);\n }\n\n mobileView() {\n this.setState({ isMobileView: getMobileView() });\n }\n\n generateStateFromProps(props, state) {\n let newState = Object.assign({}, state, {\n items: [...props.data.items],\n });\n // TODO: Use immutable data structures instead\n return JSON.parse(JSON.stringify(newState));\n }\n\n componentDidMount() {\n window.addEventListener(\"resize\", this.mobileView, false);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.mobileView, false);\n }\n render() {\n let productsInOrder = this.state.items;\n const notPendingOrCancelled =\n this.props.status !== \"PENDING\" || this.props.status !== \"CANCELLED\";\n const invoiceQuantity = !notPendingOrCancelled\n ? \"deliveredQuantity\"\n : \"orderedQuantity\";\n let totalMrp = this.state.items.reduce(\n (result, item) =>\n result +\n Number(item.orderDetails.mrp) *\n Number(item.orderDetails[invoiceQuantity]),\n 0\n );\n\n let totalDiscount = this.state.items.reduce(\n (result, item) =>\n result +\n Number(item.orderDetails.discount) *\n Number(item.orderDetails[invoiceQuantity]),\n 0\n );\n\n let totalAmountCalculated = 0;\n this.state.items.map((item) => {\n if (\n item.orderDetails.status === \"PENDING\" ||\n (item.orderDetails[\"deliveredQuantity\"] === undefined &&\n item.orderDetails.status === undefined)\n ) {\n totalAmountCalculated +=\n Number(item.orderDetails.mrp) *\n Number(item.orderDetails[\"orderedQuantity\"]) -\n Number(item.orderDetails.discount) *\n Number(item.orderDetails[\"orderedQuantity\"]);\n } else {\n totalAmountCalculated +=\n Number(item.orderDetails.mrp) *\n Number(item.orderDetails[\"deliveredQuantity\"]) -\n Number(item.orderDetails.discount) *\n Number(item.orderDetails[\"deliveredQuantity\"]);\n }\n return null;\n });\n\n let isMobileView = this.state.isMobileView;\n return (\n
    \n
    \n

    \n {getMessage(\"order.details.itemsTable.title\")}\n ({productsInOrder.length})\n

    \n
    \n \n
    \n \n {getMessage(\"order.details.itemsTable.header.image\")}\n \n \n {getMessage(\"order.details.itemsTable.header.name\")}\n \n \n {getMessage(\"order.details.itemsTable.header.quantity\")}\n \n {this.props.status !== \"PENDING\" &&\n this.props.status !== \"CANCELLED\" && (\n \n {\" \"}\n {getMessage(\"order.details.itemsTable.header.picked\")}\n \n )}\n \n {getMessage(\"order.details.itemsTable.header.mrp\")}\n \n \n {getMessage(\"order.details.itemsTable.header.discount\")}\n \n \n {getMessage(\"order.details.itemsTable.header.amount\")}\n \n
    \n {this.state.items &&\n this.state.items.map((item, index) => {\n let image = item.images && item.images[0] ? item.images[0] : null;\n let mrp = Number(item.orderDetails.mrp);\n let discount = Number(item.orderDetails.discount) || 0;\n let orderedQuantity = item.orderDetails.orderedQuantity;\n let pickedQuantity = Number(item.orderDetails.deliveredQuantity);\n let chargeableQuantity =\n item.orderDetails.status === \"PENDING\" ||\n (item.orderDetails[\"deliveredQuantity\"] === undefined &&\n item.orderDetails.status === undefined)\n ? orderedQuantity\n : pickedQuantity;\n let isSoldByWeight = item.soldByWeight || false;\n let name = item.fullName || item.name;\n let comment =\n item &&\n item.orderDetails &&\n item.orderDetails.metaData &&\n item.orderDetails.metaData.comment;\n let unit = (name && name.split(\" \").slice(-1).pop()) || \"\";\n unit = unit.toUpperCase();\n let weight = name ? name.split(\" \").slice(-2)[0] : 1;\n let divider = 1;\n let multiplier = 1;\n let smallUnit = \"g\";\n if (unit === \"KG\" || unit === \"L\") {\n smallUnit = unit === \"KG\" ? \" g\" : \" ml\";\n multiplier = weight * 1000;\n divider = weight * 1000;\n }\n if (unit === \"G\" || unit === \"GM\" || unit === \"ML\") {\n multiplier = weight;\n divider = weight;\n }\n if (orderedQuantity === 0) {\n return null;\n }\n return (\n \n \n \n \n \n \n {item.brand ? (\n
    \n {\" \"}\n \n {item.brand.name}\n {\" \"}\n {name}\n
    \n ) : (\n name\n )}\n
    \n {comment && (\n
    {comment}
    \n )}\n
    \n \n {isMobileView ? (\n \n {getMessage(\"order.details.itemsTable.header.quantity\")}\n \n ) : (\n \"\"\n )}\n \n {isSoldByWeight\n ? this.props.status !== \"PENDING\"\n ? (Number(orderedQuantity) / divider).toFixed(2)\n : Number(orderedQuantity).toFixed() + smallUnit\n : Number(orderedQuantity).toFixed(0)}\n \n \n {this.props.status !== \"PENDING\" &&\n this.props.status !== \"CANCELLED\" && (\n \n {isMobileView ? (\n \n {getMessage(\n \"order.details.itemsTable.header.picked\"\n )}\n \n ) : (\n \"\"\n )}\n\n \n {\n if (e) {\n let updatedValue =\n e.target.value === \"\"\n ? \"\"\n : isSoldByWeight ||\n Number(orderedQuantity) === 0\n ? Math.floor(Math.abs(e.target.value))\n : Math.floor(\n Math.min(\n Math.abs(e.target.value),\n Number(orderedQuantity)\n )\n );\n let items = JSON.parse(\n JSON.stringify(this.state.items)\n );\n items[index][\"orderDetails\"][\n \"deliveredQuantity\"\n ] = updatedValue;\n // this.updateStateRecursively(['items', index, 'orderDetails', 'deliveredQuantity'], updatedValue)\n this.setState(\n {\n items: items,\n },\n () => this.props.onChange(items)\n );\n }\n }}\n onBlur={() => {\n let keys = [\n \"items\",\n index,\n \"orderDetails\",\n \"deliveredQuantity\",\n ];\n this.updateStateRecursively(\n keys,\n Number(this.getNestedState(keys))\n );\n }}\n />\n \n \n )}\n \n {isMobileView ? (\n
    \n {getMessage(\"order.details.itemsTable.header.mrp\")}\n
    \n ) : (\n \"\"\n )}\n \n {this.props.currency.symbol}{\" \"}\n {isSoldByWeight\n ? (mrp * multiplier).toFixed(2)\n : mrp.toFixed(2)}\n \n
    \n \n {isMobileView ? (\n
    \n {getMessage(\"order.details.itemsTable.header.discount\")}\n
    \n ) : (\n \"\"\n )}\n \n {this.props.currency.symbol}{\" \"}\n {isSoldByWeight\n ? (discount * multiplier).toFixed(2)\n : discount.toFixed(2)}\n \n
    \n \n {isMobileView ? (\n
    \n {getMessage(\"order.details.itemsTable.header.amount\")}\n
    \n ) : (\n \"\"\n )}\n
    \n {this.props.currency.symbol}{\" \"}\n {((mrp - discount) * chargeableQuantity).toFixed(2)}\n
    \n
    \n
    \n );\n })}\n {productsInOrder.length > 0 && (\n \n \n \n {this.props.status !== \"PENDING\" &&\n this.props.status !== \"CANCELLED\" && }\n Total\n \n \n {this.props.currency.symbol} {totalMrp.toFixed(2)}\n \n \n \n \n {this.props.currency.symbol} {totalDiscount.toFixed(2)}\n \n \n \n {this.props.currency.symbol} {totalAmountCalculated.toFixed(2)}\n \n \n )}\n
    \n {productsInOrder.length <= 0 ? (\n
    \n {getMessage(\"order.details.itemsTable.clearingMessage\")}\n
    \n ) : null}\n
    \n );\n }\n}\n\nItemsView.defaultProps = {\n data: {\n items: [],\n },\n};\n\nexport default ItemsView;\n","import React from \"react\";\nimport AuthenticatedPage from \"../../../../containers/AuthenticatedPage\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { getSession, isExtensionEnabled } from \"../../../../lib/auth\";\nimport PlacementDetails from \"../Details/PlacementDetails\";\nimport ItemsView from \"./ItemsView\";\nimport API from \"../../../../lib/api\";\nimport Loader from \"../../../../components/Loader\";\nimport \"./style.css\";\nimport { Dialog } from \"../../../../components/Popup\";\nimport {\n BaseForm,\n MultiTextInput,\n VALIDATION_TYPES,\n} from \"../../../../components/Form\";\nimport Table, { Header, Row, Cell } from \"../../../../components/Table\";\nimport checkHttpResponseCode from \"../../../../utils/isApiCallSuccessfull\";\n\nclass EditPackedOrder extends BaseForm {\n constructor(props) {\n super(props);\n this.organization = getSession().organization;\n this.currency = this.organization.currency;\n this.state = {\n packingDetails: [],\n };\n\n this.getData = this.getData.bind(this);\n this.onChange = this.onChange.bind(this);\n this.onSubmit = this.onSubmit.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.hideError = this.hideError.bind(this);\n }\n\n hideError() {\n this.setState(\n {\n showError: false,\n },\n () => {\n let referenceNumber = this.props.match.params.id;\n this.props.history.push(`/operations/orders/${referenceNumber}`);\n }\n );\n }\n\n onChange(items) {\n this.postItems =\n items &&\n items.map((item) => {\n let isSoldByWeight = item.soldByWeight;\n let ob = {};\n let orderedQuantity =\n item &&\n item.orderDetails &&\n item.orderDetails.orderedQuantity &&\n Number(item.orderDetails.orderedQuantity);\n let deliveredQuantity =\n (item &&\n item.orderDetails &&\n item.orderDetails.deliveredQuantity &&\n Number(item.orderDetails.deliveredQuantity)) ||\n 0;\n if (\n deliveredQuantity > orderedQuantity &&\n !isSoldByWeight &&\n Number(orderedQuantity) !== 0\n ) {\n ob[\"quantity\"] = orderedQuantity;\n } else {\n ob[\"quantity\"] = deliveredQuantity;\n }\n ob[\"orderItemId\"] =\n item && item.orderDetails && item.orderDetails.orderItemId;\n return ob;\n });\n }\n\n onSubmit(formdata) {\n this.setState({\n loading: true,\n });\n let data = JSON.parse(JSON.stringify(this.state.data));\n let postParams = {};\n if (!this.postItems) {\n this.postItems =\n data &&\n data.items &&\n data.items.map((item) => {\n let ob = {};\n ob[\"orderItemId\"] =\n item && item.orderDetails && item.orderDetails.orderItemId;\n ob[\"quantity\"] =\n (item &&\n item.orderDetails &&\n item.orderDetails.deliveredQuantity &&\n Number(item.orderDetails.deliveredQuantity)) ||\n 0;\n return ob;\n });\n }\n postParams[\"items\"] = [...this.postItems];\n if (\n formdata &&\n formdata.packages &&\n formdata.packages.crates &&\n formdata.packages.crates.length > 0\n ) {\n postParams[\"details\"] = formdata && formdata.packages;\n }\n\n let referenceNumber = this.props.match.params.id;\n let api = new API({ url: `/order-service/order/${referenceNumber}/pack` });\n api\n .put(postParams)\n .then((response) => {\n this.setState(\n {\n loading: false,\n error: null,\n showError: false,\n },\n () => {\n let referenceNumber = this.props.match.params.id;\n this.props.history.push(`/operations/orders/${referenceNumber}`);\n }\n );\n })\n .catch((err) => {\n console.error(err);\n if (err.code === 401 || err.code === 403) {\n throw err;\n } else {\n this.setState({\n showError: true,\n loading: false,\n error: err.message,\n });\n }\n });\n }\n\n handleCancel() {\n let referenceNumber = this.props.match.params.id;\n this.props.history.push(`/operations/orders/${referenceNumber}`);\n }\n\n getData() {\n let referenceNumber = this.props.match.params.id;\n this.orderDetailsApi = new API({\n url: `/order-service/order/${referenceNumber}`,\n });\n this.setState(\n {\n loading: true,\n },\n () => {\n this.orderDetailsApi\n .get({\n \"include[0]\": \"cancelledItems\",\n })\n .then(\n (response) =>\n this.setState({\n data: response.data.order,\n packingDetails: (response.data &&\n response.data.order &&\n response.data.order.packingDetails &&\n response.data.order.packingDetails.length > 0 &&\n response.data.order.packingDetails) || [\n { details: { crates: [] } },\n ],\n }),\n (error) => {\n if (error.code === 401) {\n throw error;\n }\n }\n )\n .then(() => {\n this.setState({ loading: false });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n );\n }\n\n async componentDidMount() {\n if (isExtensionEnabled(\"InStoreProcessing\")) {\n this.api = new API({\n url: `/config-service/config/inStoreProcessing.packedOrderEditAllowed`,\n });\n await this.api\n .get()\n .then((res) => {\n if (checkHttpResponseCode(res.code) && res.status === \"SUCCESS\") {\n this.setState({\n isAuthorized:\n res &&\n res.data &&\n res.data.inStoreProcessing &&\n res.data.inStoreProcessing.packedOrderEditAllowed,\n });\n }\n })\n .catch((error) => {\n console.error(error);\n });\n\n if (this.state.isAuthorized) {\n this.getData();\n } else {\n this.setState({\n data: {},\n error: \"Not Authorized\",\n showError: true,\n });\n }\n } else {\n this.setState({\n data: {},\n error: \"Not Authorized\",\n showError: true,\n });\n }\n }\n componentDidUpdate(prevProps, prevState) {\n if (prevState.packingDetails !== this.state.packingDetails) {\n let values = {};\n values.packages =\n (Array.isArray(this.state.packingDetails) &&\n this.state.packingDetails.length > 0 &&\n this.state.packingDetails[0] &&\n this.state.packingDetails[0].details) ||\n {};\n this.setState({\n values,\n });\n }\n\n if (prevState.data !== this.state.data) {\n const isStatusPacked =\n (this.state.data && this.state.data.status === \"PACKED\") || false;\n const packedOrderEdit = this.state.isAuthorized;\n if (!packedOrderEdit || !isStatusPacked) {\n let referenceNumber = this.props.match.params.id;\n this.props.history.push(`/operations/orders/${referenceNumber}`);\n }\n }\n }\n\n render() {\n let { Form } = this.components;\n let { SubmitButton } = this.buttons;\n let packingDetails =\n this.state.packingDetails && this.state.packingDetails.length > 0;\n let packages = this.state.values && this.state.values.packages;\n let content = ;\n if (this.state.data) {\n let referenceNumber = this.props.match.params.id;\n content = (\n
    \n

    \n {getMessage(\"order.details.heading\")}{\" \"}\n {this.state.data &&\n (this.state.data.clientId\n ? getMessage(\"order.table.clientId.prefix\")\n : getMessage(\"order.table.referenceNumber.prefix\"))}\n \n {this.state.data && (this.state.data.clientId || referenceNumber)}\n \n

    \n {this.state.loading && (\n
    \n \n
    \n )}\n {this.state.showError && (\n \n )}\n \n
    \n \n {packingDetails && (\n
    \n

    {getMessage(\"order.details.packing.heading\")}

    \n \n
    \n {getMessage(\"order.packing.type\")}\n {getMessage(\"order.packing.labels\")}\n
    \n {packages &&\n Object.keys(packages).map((type, index) => (\n \n {getMessage(`order.packing.${type}`)}\n \n \n \n \n ))}\n
    \n
    \n )}\n
    \n \n {getMessage(\"order.details.itemsTable.actions.cancelText\")}\n \n \n {getMessage(\"order.details.itemsTable.actions.confirmText\")}\n \n
    \n \n
    \n );\n }\n return (\n \n

    {getMessage(\"order.details.edit-packed.heading\")}

    \n {content}\n \n );\n }\n}\n\nexport default EditPackedOrder;\n","import React from \"react\";\nimport {\n BaseForm,\n Select,\n Input,\n Radio,\n SingleDatePicker,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { getStores } from \"../../../../lib/auth\";\nimport {\n getDisplaySlot,\n sortSlots,\n toTitleCase,\n} from \"../../../../lib/commonlyused\";\nimport deleteIcon from \"../../../catalogue/Categories/delete.svg\";\nimport { isExtensionEnabled } from \"../../../../lib/auth\";\n\nfunction cutoffTimeOptionsGenerator() {\n let options = [];\n for (let i = 0; i <= 27; i++) {\n options.push({\n text: Number(i).toFixed(1) + \" h\",\n value: `${i > 9 ? i : \"0\" + i}:00:00`,\n });\n options.push({\n text: Number(i) + 0.5 + \" h\",\n value: `${i > 9 ? i : \"0\" + i}:30:00`,\n });\n }\n options.pop();\n return options;\n}\n\nconst capacityOptions = [\n {\n text: getMessage(\"Day\"),\n value: \"DAY\",\n },\n {\n text: getMessage(\"Date\"),\n value: \"DATE\",\n },\n];\n\nclass CapacityPlanningForm extends BaseForm {\n constructor(props) {\n super(props);\n const deliverySlots =\n props.options.deliverySlots && sortSlots(props.options.deliverySlots);\n this.deliverySlots =\n deliverySlots &&\n deliverySlots\n .filter((slot) => slot.type !== \"ASAP\")\n .map((slot) => {\n return {\n text: getDisplaySlot(slot),\n value: slot.id,\n };\n });\n const pickupSlots =\n props.options.pickupSlots && sortSlots(props.options.pickupSlots);\n this.pickupSlots =\n pickupSlots &&\n pickupSlots\n .filter((slot) => slot.type !== \"ASAP\")\n .map((slot) => {\n return {\n text: getDisplaySlot(slot),\n value: slot.id,\n };\n });\n this.zones =\n props.options.zones &&\n props.options.zones.map((zone) => {\n return {\n text: zone.name || zone.id,\n value: zone.id,\n };\n });\n\n // TODO: change this to pickup zones\n this.stores =\n getStores() &&\n getStores().map((store) => {\n return {\n text: store.name,\n value: store.id,\n };\n });\n\n if (!props.value) {\n this.state = {\n values: {},\n };\n this.state.values.capacityType = \"DAY\";\n this.state.values.orderType = \"DELIVERY\";\n }\n\n if (props.value && props.value.date) {\n this.state.values.capacityType = \"DATE\";\n } else if (props.value && props.value.day) {\n this.state.values.capacityType = \"DAY\";\n }\n if (props.value && props.value.day) {\n this.state.values.day = toTitleCase(props.value.day);\n }\n }\n\n render() {\n const { Form } = this.components;\n const { SubmitButton, CancelButton } = this.buttons;\n const { type, daysOfWeek } = this.props.options;\n const { values } = this.state || {};\n const { orderType, capacityType } = values;\n const isPickup = orderType === \"PICKUP\";\n const { props } = this;\n const readOnly = props.method === \"edit\";\n return (\n
    \n
    \n \n \n {capacityType === \"DATE\" ? (\n \n ) : (\n \n )}\n {isExtensionEnabled(\"DeliveryAreaSupport\") && (\n \n )}\n \n \n \n
    \n
    \n {props.method && props.method === \"edit\" && (\n this.props.onDelete()}\n >\n \"delete\"\n {getMessage(\"category.form.deleteText\")}\n \n )}\n {getMessage(\"cancel\")}\n {getMessage(\"save\")}\n
    \n
    \n );\n }\n}\n\nexport default CapacityPlanningForm;\n\nexport { cutoffTimeOptionsGenerator };\n","import React from \"react\";\nimport {\n BaseForm,\n Select,\n SingleDatePicker,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { getDisplaySlot, sortSlots } from \"../../../../lib/commonlyused\";\nimport { isEqual } from \"lodash\";\n\nclass CapacityFilters extends BaseForm {\n constructor(props) {\n super(props);\n this.getSlotsAndZones = this.getSlotsAndZones.bind(this);\n }\n componentDidMount() {\n this.getSlotsAndZones();\n }\n\n getSlotsAndZones() {\n const { props } = this;\n const deliverySlots =\n props.options.deliverySlots && sortSlots(props.options.deliverySlots);\n this.deliverySlots =\n deliverySlots &&\n deliverySlots.map((slot) => {\n return {\n text: getDisplaySlot(slot),\n value: slot.id,\n };\n });\n const pickupSlots =\n props.options.pickupSlots && sortSlots(props.options.pickupSlots);\n this.pickupSlots =\n pickupSlots &&\n pickupSlots.map((slot) => {\n return {\n text: getDisplaySlot(slot),\n value: slot.id,\n };\n });\n this.zones =\n props.options.zones &&\n props.options.zones.map((zone) => {\n return {\n text: zone.name || zone.id,\n value: zone.id,\n };\n });\n }\n componentDidUpdate(prevProps) {\n if (\n !isEqual(\n prevProps.options.deliverySlots,\n this.props.options.deliverySlots\n )\n ) {\n this.getSlotsAndZones();\n this.setState({\n updated: true,\n });\n }\n }\n render() {\n const { Form } = this.components;\n const { SubmitButton, ClearButton } = this.buttons;\n const { type, daysOfWeek } = this.props.options;\n const { orderType } = this.state.values || {};\n const isPickup = orderType === \"PICKUP\";\n\n return (\n
    \n
    \n \n \n \n \n \n
    \n
    \n {getMessage(\"submit\")}\n {getMessage(\"clear\")}\n
    \n
    \n );\n }\n}\n\nexport default CapacityFilters;\n","import React, { Component } from \"react\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport { Link } from \"react-router-dom\";\nimport CapacityPlanningForm from \"./Form\";\nimport CapacityPlanningFilter from \"./Filters\";\nimport { getMessage } from \"../../../lib/translator\";\nimport API from \"../../../lib/api\";\nimport { get } from \"../../../lib/storage\";\nimport { getDisplaySlot } from \"../../../lib/commonlyused\";\nimport { getPrintableTime, getDaysOfWeek } from \"../../../lib/datetime\";\nimport { SingleDatePicker } from \"../../../components/Form\";\n\nimport \"./style.css\";\n\nimport EmptyIcon from \"./capacityplanner.svg\";\nimport { isExtensionEnabled } from \"../../../lib/auth\";\n\nconst EmptyState = {\n icon: EmptyIcon,\n message: getMessage(\"cp.empty\"),\n actions: ({ onAction }) => (\n {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n {`+ ${getMessage(\"cp.add\")}`}\n \n ),\n};\n\nconst tableProperties = (options) => {\n return {\n headers: [\n getMessage(\"cp.type\"),\n getMessage(\"cp.area\"),\n getMessage(\"Slot\"),\n getMessage(\"cutoff.time\"),\n getMessage(\"Date\"),\n getMessage(\"Capacity\"),\n getMessage(\"Actions\"),\n ],\n row: ({\n id,\n orderType,\n cutOffTime,\n day,\n date,\n capacity,\n zone,\n slot,\n slotId,\n zoneId,\n onAction,\n }) => {\n const derivedZone =\n !zone &&\n options.zones &&\n options.zones.filter((zone) => zone.id === zoneId)[0];\n const slots =\n orderType === \"PICKUP\" ? options.pickupSlots : options.deliverySlots;\n const derivedSlot =\n !slot && slots && slots.filter((slot) => slot.id === slotId)[0];\n let split = cutOffTime && cutOffTime.split(\":\");\n let displayCutOffTime = split && split[0] && Number(split[0]);\n if (split.length > 1 && split[1].trim() === \"30\" && displayCutOffTime) {\n displayCutOffTime = Number(displayCutOffTime) + Number(0.5);\n } else if (\n split.length > 1 &&\n split[1].trim() === \"30\" &&\n displayCutOffTime === 0\n ) {\n displayCutOffTime = Number(displayCutOffTime) + Number(0.5);\n } else {\n displayCutOffTime = Number(displayCutOffTime) + \".0\";\n }\n return (\n \n \n onAction(TABLE_ACTIONS.EDIT, { id })}>\n {orderType &&\n orderType.split(\"\")[0] +\n orderType\n .toLowerCase()\n .split(\"\")\n .slice(1, orderType.length)\n .join(\"\")}\n \n \n \n \n {(zone && zone.name) || (derivedZone && derivedZone.name)}\n \n \n \n
    \n \n {getMessage(\"Slot\")}\n \n

    \n {(slot && getDisplaySlot(slot)) ||\n (derivedSlot && getDisplaySlot(derivedSlot))}\n

    \n
    \n
    \n \n
    \n \n {getMessage(\"cutoff.time\")}\n \n

    {`${displayCutOffTime} h`}

    \n
    \n
    \n \n {(date && getPrintableTime(date).split(\",\")[0]) ||\n (day && day === \"ALLDAYS\" ? \"All Days\" : day.toLowerCase())}\n \n \n
    \n \n {getMessage(\"Capacity\")}\n \n

    {capacity}

    \n
    \n
    \n \n }>\n onAction(TABLE_ACTIONS.EDIT, { id })}\n >\n Edit\n \n onAction(TABLE_ACTIONS.DELETE, { id })}\n >\n Delete\n \n \n \n
    \n );\n },\n };\n};\n\nconst planningTypes = [\n {\n text: getMessage(\"delivery\"),\n value: \"DELIVERY\",\n },\n {\n text: getMessage(\"pickup\"),\n value: \"PICKUP\",\n },\n];\nclass CapacityPlanning extends Component {\n constructor(props) {\n super(props);\n this.update = this.update.bind(this);\n this.getZonesAndSlots = this.getZonesAndSlots.bind(this);\n this.onDateChange = this.onDateChange.bind(this);\n this.state = {\n zones: [],\n slots: [],\n date: null,\n };\n }\n\n componentDidMount() {\n this.getZonesAndSlots();\n let daysOfWeek = getDaysOfWeek({ full: true });\n daysOfWeek.unshift({ text: \"All Days\", value: \"ALLDAYS\" });\n this.setState({ daysOfWeek });\n }\n onDateChange(date) {\n this.setState({\n date,\n });\n this.props.history.push({\n pathname: `capacity-planning/today`,\n date: date,\n });\n }\n\n getZonesAndSlots(storeId) {\n this.zonesApi = new API({ url: `/logistics-service/delivery-area` });\n const zonesParams = {\n paginated: \"false\",\n storeId: storeId || get(\"store\"),\n };\n\n if (isExtensionEnabled(\"DeliveryAreaSupport\")) {\n this.zonesApi.get(zonesParams).then((zonesResponse) => {\n this.setState({\n zones: zonesResponse.data.deliveryarea || [],\n });\n });\n }\n\n this.slotsApiPickup = new API({ url: `/order-service/slot` });\n const slotParams = {\n paginated: \"false\",\n storeId: storeId || get(\"store\"),\n orderType: \"PICKUP\",\n };\n\n this.slotsApiDelivery = new API({ url: \"/order-service/slot\" });\n const slotParamsDelivery = {\n paginated: \"false\",\n storeId: storeId || get(\"store\"),\n orderType: \"DELIVERY\",\n };\n\n // TODO: need to see abt pickup zones. right now using stores but need to be converted to zones\n\n Promise.all([\n this.slotsApiPickup.get(slotParams),\n this.slotsApiDelivery.get(slotParamsDelivery),\n ])\n .then(([slotsPickupResponse, slotsDeliveryResponse]) => {\n this.setState({\n pickupSlots: slotsPickupResponse.data.slot || [],\n deliverySlots: slotsDeliveryResponse.data.slot || [],\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n componentWillUnmount() {\n this.zonesApi && this.zonesApi.cancel();\n this.slotsApi && this.slotsApi.cancel();\n window.removeEventListener(\"resize\", this.mobileView, false);\n }\n\n update(storeId) {\n this.getZonesAndSlots(storeId);\n }\n\n render() {\n const options = {\n pickupSlots: this.state.pickupSlots,\n deliverySlots: this.state.deliverySlots,\n zones: this.state.zones,\n type: planningTypes,\n daysOfWeek: this.state.daysOfWeek,\n date: this.state.date,\n onDateChange: this.onDateChange,\n };\n return (\n response.data.capacityPlanning,\n updateApiParams: (\n prevParams,\n newParams,\n prevStateParams,\n newStateParams\n ) => {\n if (\n prevStateParams &&\n newStateParams &&\n prevStateParams.storeId !== newStateParams.storeId\n ) {\n this.update(newStateParams.storeId);\n return {\n shouldUpdate: true,\n params: {\n storeId: newStateParams.storeId,\n },\n };\n }\n },\n }}\n emptyState={EmptyState}\n headerActions={({ onAction }) => (\n \n
    \n \n
    \n \n Today\n \n {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n {\" \"}\n {`+ ${getMessage(\"cp.add\")}`}\n \n
    \n )}\n editHeading={getMessage(\"cp.edit\")}\n addHeading={getMessage(\"cp.add\")}\n tableProperties={tableProperties(options)}\n menu={this.props.menu}\n title={getMessage(\"cp.title\")}\n storeDependent\n modalClassName=\"capacity-planning-form\"\n form={{\n component: CapacityPlanningForm,\n options: options,\n allowDelete: true,\n transformSubmit: (formData) => {\n let data = Object.assign({}, formData);\n if (data.capacityType === \"DAY\") {\n delete data.date;\n } else {\n if (data.date && !data.date.includes(\"T\")) {\n data.date = data.date + \"T00:00:00Z\";\n }\n delete data.day;\n }\n if (data.orderType === \"PICKUP\") {\n delete data.zoneId;\n }\n delete data.capacityType;\n delete data.zone;\n delete data.slot;\n delete data.id;\n return data;\n },\n }}\n filters={{\n component: CapacityPlanningFilter,\n options: options,\n transformSubmit: (formData) => {\n return formData;\n },\n }}\n />\n );\n }\n}\n\nexport default CapacityPlanning;\n","import React from \"react\";\nimport AuthenticatedPage from \"../../../../containers/AuthenticatedPage\";\nimport API from \"../../../../lib/api\";\nimport Table, { Cell } from \"../../../../components/Table\";\nimport Headers from \"../../../../components/Table/Header\";\nimport Row from \"../../../../components/Table/Row\";\n\nimport \"./style.css\";\nimport moment from \"moment\";\nimport ArrowRight from \"./Arrow-right.svg\";\nimport ArrowLeft from \"./Arrow-left.svg\";\nimport PickupIcon from \"./pickup.svg\";\nimport VehicleIcon from \"../../../logistics/TripDetails/vehicle-icon.svg\";\nimport {\n getPrintableTime,\n getStandradDateTime,\n utcToLocalTime,\n} from \"../../../../lib/datetime\";\nimport { getAsapDuration, sortSlots } from \"../../../../lib/commonlyused\";\nimport { cutoffTimeOptionsGenerator } from \"../Form\";\nimport { Select, SingleDatePicker } from \"../../../../components/Form\";\nimport EditIcon from \"../../Orders/Details/edit-icon.svg\";\nimport { get } from \"../../../../lib/storage\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { Dialog } from \"../../../../components/Popup\";\nimport Loader from \"../../../../components/Loader\";\nimport { Link } from \"react-router-dom\";\nimport checkHttpResponseCode from \"../../../../utils/isApiCallSuccessfull\";\n\nfunction generateTabularDataSkeleton(slotsAndZones) {\n let skeleton = {};\n slotsAndZones &&\n slotsAndZones.totalSlots &&\n slotsAndZones.totalSlots.map((slot, i) => {\n skeleton[slot] = [];\n slotsAndZones &&\n slotsAndZones.totalZones &&\n slotsAndZones.totalZones.map((zone, j) => {\n let ob = JSON.parse(\n JSON.stringify({\n delivery: { capacity: null, orderCount: null },\n pickup: { capacity: null, orderCount: null },\n zone: JSON.parse(JSON.stringify(zone)),\n })\n );\n skeleton[slot].push(ob);\n return null;\n });\n return null;\n });\n return skeleton;\n}\n\nfunction generateTabularData(tableSkeleton, inComingData) {\n inComingData.forEach((item, index) => {\n let slot = item.startTime\n ? item.startTime + \"-\" + item.endTime\n : item.endTime;\n if (item.orderType === \"DELIVERY\") {\n tableSkeleton[slot].forEach((eachZone, i) => {\n eachZone.delivery.slotId = item.id;\n eachZone.delivery.capacity = item.zones[i].capacity;\n eachZone.delivery.orderCount = item.zones[i].orderCount;\n });\n } else {\n tableSkeleton[slot].forEach((eachZone, i) => {\n eachZone.pickup.slotId = item.id;\n eachZone.pickup.capacity = item.zones[i].capacity;\n eachZone.pickup.orderCount = item.zones[i].orderCount;\n });\n }\n });\n return tableSkeleton;\n}\nfunction getSortedSlots(slots) {\n let formattedSlots = slots.map((item) => {\n let data = item.split(\"-\");\n let ob =\n data.length > 1\n ? { type: \"STANDARD\", endTime: data[1], startTime: data[0] }\n : { type: \"ASAP\", endTime: data[0] };\n return ob;\n });\n\n let sortedFormattedSlots = sortSlots(formattedSlots);\n return sortedFormattedSlots\n .filter((item) => item.type !== \"ASAP\")\n .map((item) => {\n let slot = item.startTime\n ? item.startTime + \"-\" + item.endTime\n : item.endTime;\n return slot;\n });\n}\n\nfunction slotsAndZones(slots) {\n let uniqueSlots = {};\n let slotMapToOrderType = {};\n slots.map((slot) => {\n uniqueSlots[\n slot.startTime ? slot.startTime + \"-\" + slot.endTime : slot.endTime\n ] = slot;\n if (\n slotMapToOrderType[\n slot.startTime ? slot.startTime + \"-\" + slot.endTime : slot.endTime\n ]\n ) {\n slotMapToOrderType[\n slot.startTime ? slot.startTime + \"-\" + slot.endTime : slot.endTime\n ] = \"BOTH\";\n } else {\n slotMapToOrderType[\n slot.startTime ? slot.startTime + \"-\" + slot.endTime : slot.endTime\n ] = slot.orderType;\n }\n return null;\n });\n return {\n totalSlots: (uniqueSlots && Object.keys(uniqueSlots)) || [],\n totalZones:\n (uniqueSlots &&\n Object.values(uniqueSlots).length > 0 &&\n Object.values(uniqueSlots)[0] &&\n Object.values(uniqueSlots)[0].zones) ||\n [],\n slotMapToOrderType,\n };\n}\n\nfunction isEquals(data, tableIndex) {\n if (\n data.deliveryTotal !== null &&\n Number(data.deliveryTotal) !== Number(tableIndex.deliveryTotal)\n ) {\n return false;\n }\n\n if (\n data.pickUpTotal !== null &&\n Number(data.pickUpTotal) !== Number(tableIndex.pickUpTotal)\n ) {\n return false;\n }\n return true;\n}\n\nfunction calcPercent(total, curr) {\n if (total === 0) {\n return 0;\n }\n return (curr / total) * 100;\n}\n\nclass ZoneProgressBar extends React.Component {\n render() {\n let width = calcPercent(this.props.total, this.props.curr);\n return (\n
    \n
    \n \n
    \n
    \n );\n }\n}\n\nclass Today extends React.Component {\n constructor(props) {\n super(props);\n\n this.tableRef = null;\n this.table = {};\n\n this.state = {\n edit: [],\n sortedSlots: [],\n currentStore: get(\"store\"),\n selectedOption: \"00:00:00\",\n errorMessage: null,\n showErrorDialog: false,\n date:\n (this.props.location && this.props.location.date) ||\n moment().format(\"YYYY-MM-DD\"),\n loading: true,\n };\n\n this.includes = this.includes.bind(this);\n this.handleEdit = this.handleEdit.bind(this);\n this.arrowClickRight = this.arrowClickRight.bind(this);\n this.arrowClickLeft = this.arrowClickLeft.bind(this);\n this.onSubmit = this.onSubmit.bind(this);\n this.disableEdit = this.disableEdit.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleOnKeyDown = this.handleOnKeyDown.bind(this);\n this.closePopup = this.closePopup.bind(this);\n this.onDateChange = this.onDateChange.bind(this);\n this.onTodayButtonClick = this.onTodayButtonClick.bind(this);\n this.onStoreChange = this.onStoreChange.bind(this);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n }\n\n handleClickOutside(event) {\n if (this.tableRef && !this.tableRef.contains(event.target)) {\n this.setState({\n edit: [],\n });\n }\n }\n\n onStoreChange() {\n let currentStore = get(\"store\");\n this.setState({\n currentStore,\n loading: true,\n });\n }\n\n onTodayButtonClick() {\n this.setState((prevState) => {\n return {\n loading: prevState.date !== moment().format(\"YYYY-MM-DD\"),\n date: moment().format(\"YYYY-MM-DD\"),\n };\n });\n }\n\n onDateChange(date) {\n this.setState((prevState) => {\n return {\n date,\n loading: prevState.date !== date,\n };\n });\n }\n closePopup() {\n this.setState({\n showErrorDialog: false,\n errorMessage: null,\n });\n }\n\n handleOnKeyDown(e, index, i) {\n if (e.key === \"Escape\") {\n this.disableEdit(index, i);\n }\n }\n\n handleChange(val) {\n this.setState({\n loading: true,\n selectedOption: val,\n });\n }\n\n includes(x, y) {\n return this.state.edit.find((item) => item.x === x && item.y === y);\n }\n\n handleEdit(index, i, pickupCapacity, deliveryCapacity) {\n let newob = { x: index, y: i };\n let uniqueState = index + \",\" + i;\n this.setState((prevState) => {\n return {\n edit: prevState.edit.concat(newob),\n indices: {\n ...prevState.indices,\n [uniqueState]: {\n pickUpTotal: pickupCapacity ? Number(pickupCapacity) : null,\n deliveryTotal: deliveryCapacity ? Number(deliveryCapacity) : null,\n },\n },\n };\n });\n }\n\n onChange(e, type, index, i) {\n let val = e.target.value;\n if (type === \"delivery\") {\n this.setState((prevState) => {\n return {\n indices: {\n ...prevState.indices,\n [index + \",\" + i]: {\n ...prevState.indices[index + \",\" + i],\n deliveryTotal: val,\n },\n },\n };\n });\n }\n if (type === \"pickup\") {\n this.setState((prevState) => {\n return {\n indices: {\n ...prevState.indices,\n [index + \",\" + i]: {\n ...prevState.indices[index + \",\" + i],\n pickUpTotal: val,\n },\n },\n };\n });\n }\n }\n\n disableEdit(index, i) {\n let newEditState = this.state.edit.filter(\n (item) => item.x !== index || item.y !== i\n );\n this.setState({\n edit: newEditState,\n });\n }\n\n arrowClickLeft() {\n if (!this.once) {\n this.timer = setInterval(() => {\n if (this.tableRef) {\n this.once = true;\n this.tableRef.scrollLeft -= 5;\n }\n }, 5);\n }\n\n setTimeout(() => {\n this.once = undefined;\n clearInterval(this.timer);\n }, 240);\n }\n arrowClickRight() {\n if (!this.once) {\n this.timer = setInterval(() => {\n if (this.tableRef) {\n this.once = true;\n this.tableRef.scrollLeft += 5;\n }\n }, 5);\n }\n\n setTimeout(() => {\n this.once = undefined;\n clearInterval(this.timer);\n }, 240);\n }\n\n onSubmit(e, index, i, slot, zoneId) {\n e.preventDefault();\n if (this.state.selectedOption) {\n Object.keys(this.state.indices).map(async (key) => {\n if (!isEquals(this.state.indices[key], this.table[key])) {\n let deliveryOb = JSON.parse(JSON.stringify(this.state.indices[key]));\n let pickupOb = JSON.parse(JSON.stringify(this.state.indices[key]));\n this.putApi = new API({ url: `/logistics-service/zone-capacity` });\n let promises = [];\n if (\n slot.delivery.slotId &&\n deliveryOb.deliveryTotal &&\n Number(deliveryOb.deliveryTotal) !==\n Number(this.table[key].deliveryTotal)\n ) {\n deliveryOb.slotId = Number(slot.delivery.slotId);\n let capacity = deliveryOb.deliveryTotal;\n deliveryOb.capacity = capacity;\n deliveryOb.orderType = \"DELIVERY\";\n deliveryOb.zoneId = Number(zoneId);\n deliveryOb.date = `${this.state.date}T00:00:00+00:00`;\n deliveryOb.storeId = Number(this.state.currentStore);\n deliveryOb.cutOffTime = this.state.selectedOption;\n delete deliveryOb.deliveryTotal;\n delete deliveryOb.pickUpTotal;\n promises.push(this.putApi.put(deliveryOb));\n }\n\n if (\n slot.pickup.slotId &&\n pickupOb.pickUpTotal &&\n Number(pickupOb.pickUpTotal) !== Number(this.table[key].pickUpTotal)\n ) {\n pickupOb.slotId = Number(slot.pickup.slotId);\n let capacity = pickupOb.pickUpTotal;\n pickupOb.capacity = capacity;\n pickupOb.orderType = \"PICKUP\";\n pickupOb.date = `${this.state.date}T00:00:00+00:00`;\n pickupOb.storeId = Number(this.state.currentStore);\n pickupOb.cutOffTime = this.state.selectedOption;\n delete pickupOb.deliveryTotal;\n delete pickupOb.pickUpTotal;\n promises.push(this.putApi.put(pickupOb));\n }\n\n Promise.all(promises)\n .then((res) => {\n let newZoneCapacity = JSON.parse(JSON.stringify(this.state.data));\n res.forEach((response) => {\n if (\n checkHttpResponseCode(response.code) &&\n response.status === \"SUCCESS\"\n ) {\n let zoneCapacity =\n (response.data && response.data.capacityPlanning) || {};\n let slot = zoneCapacity.slot.startTime\n ? zoneCapacity.slot.startTime +\n \"-\" +\n zoneCapacity.slot.endTime\n : zoneCapacity.slot.endTime;\n let type =\n zoneCapacity.orderType || zoneCapacity.slot.orderType;\n let found = newZoneCapacity[slot].find(\n (item) => item.zone.zoneId === zoneId\n );\n if (type === \"PICKUP\") {\n newZoneCapacity[slot] = newZoneCapacity[slot].map(\n (item) => {\n item.pickup.capacity = zoneCapacity.capacity;\n return item;\n }\n );\n } else {\n if (found) {\n found.delivery.capacity = zoneCapacity.capacity;\n }\n }\n }\n });\n this.setState({\n data: newZoneCapacity,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n return null;\n });\n } else {\n this.setState({\n errorMessage: \"CutOff Time is not selected.\",\n showErrorDialog: true,\n });\n }\n\n this.disableEdit(index, i);\n this.setState({\n indices: undefined,\n });\n }\n\n componentDidMount() {\n document.addEventListener(\"mousedown\", this.handleClickOutside);\n this.api = new API({ url: \"/logistics-service/slot-capacity\" });\n const params = {\n date: this.state.date\n ? this.state.date + \"/\" + this.state.date\n : moment().utc().format(\"YYYY-MM-DD\") +\n \"/\" +\n moment().utc().format(\"YYYY-MM-DD\"),\n storeId: Number(this.state.currentStore || get(\"store\")),\n cutOffTime: this.state.selectedOption,\n };\n this.api\n .get(params)\n .then((res) => {\n let filteredData = res.data.slotCapacity;\n let filteredTabularData =\n (filteredData &&\n filteredData.length > 0 &&\n filteredData[0].capacity) ||\n [];\n let tableProperties = slotsAndZones(filteredTabularData);\n let tabularSkeleton = generateTabularDataSkeleton(tableProperties);\n let data = generateTabularData(tabularSkeleton, filteredTabularData);\n let sortedSlots = getSortedSlots(tableProperties.totalSlots);\n this.setState({\n loading: false,\n data,\n tableProperties,\n sortedSlots,\n });\n })\n .catch((err) => {\n console.error(err);\n if (err.code === 401 || err.code === 403) {\n throw err;\n }\n this.setState({\n loading: false,\n sortedSlots: [],\n });\n });\n }\n\n componentWillUnmount() {\n document.removeEventListener(\"mousedown\", this.handleClickOutside);\n this.api && this.api.cancel();\n this.putApi && this.putApi.cancel();\n }\n\n componentDidUpdate(prevProps, prevState) {\n let prevDate = prevState.date;\n let currentDate = this.state.date;\n\n if (\n this.state.currentStore !== prevState.currentStore ||\n prevState.selectedOption !== this.state.selectedOption ||\n (currentDate && currentDate !== prevDate)\n ) {\n this.api = new API({ url: \"/logistics-service/slot-capacity\" });\n const params = {\n date: this.state.date\n ? this.state.date + \"/\" + this.state.date\n : moment().format(\"YYYY-MM-DD\") + \"/\" + moment().format(\"YYYY-MM-DD\"),\n storeId: Number(this.state.currentStore),\n cutOffTime: this.state.selectedOption,\n };\n this.api\n .get(params)\n .then((res) => {\n if (checkHttpResponseCode(res.code) && res.status === \"SUCCESS\") {\n let filteredData = res.data.slotCapacity;\n let filteredTabularData =\n (filteredData &&\n filteredData.length > 0 &&\n filteredData[0].capacity) ||\n [];\n let tableProperties = slotsAndZones(filteredTabularData);\n let tabularSkeleton = generateTabularDataSkeleton(tableProperties);\n let data = generateTabularData(\n tabularSkeleton,\n filteredTabularData\n );\n let sortedSlots = getSortedSlots(tableProperties.totalSlots);\n this.setState({\n loading: false,\n data,\n tableProperties,\n sortedSlots,\n });\n } else {\n this.setState({\n loading: false,\n sortSlots: [],\n });\n }\n })\n .catch((err) => {\n console.error(err);\n if (err.code === 400) {\n this.setState({\n loading: false,\n sortedSlots: [],\n });\n return err;\n }\n throw err;\n });\n }\n }\n\n render() {\n let content = ;\n if (this.state.loading) {\n content = ;\n } else {\n if (this.state.sortedSlots.length > 0) {\n content = (\n
    \n
    \n
    \n
    \n
    \n
    \n {getMessage(\"cp.today.table.slot\")}\n
    \n {this.state.sortedSlots.map((data, index) => {\n let slot = data.split(\"-\");\n let slotHeading =\n slot.length > 1\n ? getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n slot[0]\n }`\n )\n ).split(\",\")[1] +\n \" - \" +\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n slot[1]\n }`\n )\n ).split(\",\")[1]\n : getAsapDuration(\"12:00 AM\", slot[0]);\n let slotMapToOrderType =\n this.state.tableProperties.slotMapToOrderType;\n let orderType = slotMapToOrderType[data];\n return (\n \n {slotHeading}\n {orderType === \"BOTH\" && (\n \n \n \"PickupIcon\"\n \n \n \"VehicleIcon\"\n \n \n )}\n {orderType === \"DELIVERY\" && (\n \n \n \"VehicleIcon\"\n \n \n )}\n {orderType === \"PICKUP\" && (\n \n \n \"PickupIcon\"\n \n \n )}\n \n );\n })}\n
    \n
    \n
    \n {\n this.tableRef = el;\n }}\n >\n zone.name\n )}\n />\n {this.state.sortedSlots.map((slot, index) => {\n let slotMapToOrderType =\n this.state.tableProperties.slotMapToOrderType;\n let orderType = slotMapToOrderType[slot];\n let zoneCapacity = this.state.data[slot];\n return zoneCapacity.length > 0 ? (\n \n {zoneCapacity &&\n zoneCapacity.map((item, i) => {\n this.table[index + \",\" + i] = {\n deliveryTotal: item.delivery.capacity || null,\n pickUpTotal: item.pickup.capacity || null,\n };\n if (this.includes(index, i)) {\n return (\n \n \n this.onSubmit(\n e,\n index,\n i,\n {\n delivery: {\n slotId: item.delivery.slotId,\n },\n pickup: {\n slotId: item.pickup.slotId,\n },\n },\n item.zone.zoneId\n )\n }\n >\n {orderType === \"BOTH\" && (\n
    \n
    \n \n {item.pickup.orderCount || 0}\n \n \n {item.pickup.slotId ? (\n \n this.onChange(\n e,\n \"pickup\",\n index,\n i\n )\n }\n onKeyDown={(e) =>\n this.handleOnKeyDown(\n e,\n index,\n i\n )\n }\n />\n ) : (\n item.pickup.capacity || 0\n )}\n
    \n
    \n \n {item.delivery.orderCount || 0}\n \n \n {item.delivery.slotId ? (\n \n this.onChange(\n e,\n \"delivery\",\n index,\n i\n )\n }\n onKeyDown={(e) =>\n this.handleOnKeyDown(\n e,\n index,\n i\n )\n }\n />\n ) : (\n item.delivery.capacity || 0\n )}\n \n
    \n
    \n )}\n {orderType === \"PICKUP\" && (\n
    \n \n {item.pickup.orderCount || 0}\n \n \n {item.pickup.slotId ? (\n \n this.onChange(\n e,\n \"pickup\",\n index,\n i\n )\n }\n onKeyDown={(e) =>\n this.handleOnKeyDown(\n e,\n index,\n i\n )\n }\n />\n ) : (\n item.pickup.capacity || 0\n )}\n
    \n )}\n {orderType === \"DELIVERY\" && (\n
    \n \n {item.delivery.orderCount || 0}\n \n \n {item.delivery.slotId ? (\n \n this.onChange(\n e,\n \"delivery\",\n index,\n i\n )\n }\n onKeyDown={(e) =>\n this.handleOnKeyDown(\n e,\n index,\n i\n )\n }\n />\n ) : (\n item.delivery.capacity || 0\n )}\n \n
    \n )}\n \n
    \n );\n }\n return (\n \n {orderType === \"BOTH\" && (\n
    \n
    \n \n {item.pickup.orderCount || 0}\n \n \n \n {item.pickup.capacity || 0}\n \n
    \n
    \n \n {item.delivery.orderCount || 0}\n \n \n \n {item.delivery.capacity || 0}\n \n
    \n
    \n )}\n {orderType === \"DELIVERY\" && (\n
    \n
    \n \n {item.delivery.orderCount || 0}\n \n \n \n {item.delivery.capacity || 0}\n \n
    \n
    \n )}\n {orderType === \"PICKUP\" && (\n
    \n
    \n \n {item.pickup.orderCount || 0}\n \n \n \n {item.pickup.capacity || 0}\n \n
    \n
    \n )}\n {this.state.edit.length === 0 ? (\n \n this.handleEdit(\n index,\n i,\n item.pickup.capacity,\n item.delivery.capacity\n )\n }\n />\n ) : null}\n
    \n );\n })}\n
    \n ) : (\n \n {\" \"}\n No Zones to display{\" \"}\n \n );\n })}\n \n \n \"arrow-right\"\n \n \n \"arrow-right\"\n \n
    \n
    \n
    \n
    \n

    \n \n \"VehicleIcon\"\n {getMessage(\"cp.today.delivery\")}\n \n \n \"VehicleIcon\"\n {getMessage(\"cp.today.pickup\")}\n \n

    \n
    \n
    \n );\n } else {\n content =

    No Data Available

    ;\n }\n }\n return (\n \n
    \n {getMessage(\"cp.today\")}\n \n \n \n {getMessage(\"cp.today.button\")}\n \n \n {getMessage(\"cp.title\")}\n \n \n
    \n
    \n \n
    \n {content}\n {this.state.showErrorDialog && (\n \n )}\n \n );\n }\n}\n\nexport default Today;\n","import React, { Component } from \"react\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport Table, { Row, Cell } from \"../../../components/Table\";\nimport Headers from \"../../../components/Table/Header\";\nimport { SingleDatePicker } from \"../../../components/Form\";\nimport Tabs from \"../../../components/Tabs\";\nimport { getMessage } from \"../../../lib/translator\";\nimport API from \"../../../lib/api\";\nimport { getDisplaySlot, sortSlots } from \"../../../lib/commonlyused\";\nimport { get } from \"../../../lib/storage\";\nimport Loader from \"../../../components/Loader\";\nimport { Dialog } from \"../../../components/Popup\";\nimport EditIcon from \"../Orders/Details/edit-icon.svg\";\nimport moment from \"moment\";\n\nimport \"./style.css\";\n\nconst chargeTypes = [\n {\n text: \"Surcharge\",\n key: \"surcharge\",\n },\n {\n text: \"Order Discount\",\n key: \"orderDiscount\",\n },\n {\n text: \"Handling Discount\",\n key: \"discount\",\n },\n];\nclass SlotCharges extends Component {\n constructor(props) {\n super(props);\n this.state = {\n deliverySlots: [],\n pickupSlots: [],\n slotCharge: [],\n allSortedSlots: [],\n slotChargeMapping: {},\n activeIndex: 0,\n selectedDate: moment().format(\"YYYY-MM-DD\"),\n editingCell: {},\n errorMessage: null,\n showErrorDialog: false,\n loading: false,\n };\n this.getSlots = this.getSlots.bind(this);\n this.getSLotCharges = this.getSLotCharges.bind(this);\n this.getSlotChargesMapping = this.getSlotChargesMapping.bind(this);\n this.changeTab = this.changeTab.bind(this);\n this.handleDateChange = this.handleDateChange.bind(this);\n this.handleCellEditClick = this.handleCellEditClick.bind(this);\n this.onStoreChange = this.onStoreChange.bind(this);\n this.fetchTableData = this.fetchTableData.bind(this);\n this.closePopup = this.closePopup.bind(this);\n this.showError = this.showError.bind(this);\n }\n componentDidMount() {\n this.fetchTableData();\n }\n fetchTableData() {\n this.setState({\n loading: true,\n editingCell: {},\n });\n this.getSlots();\n this.getSLotCharges();\n }\n onKeyPress(scope, type, dataArr, slotId, e) {\n let editAPI = new API({\n url: `/order-service/slot-charge/${\n dataArr && dataArr[0] && dataArr[0].id\n }`,\n });\n let addAPI = new API({ url: \"/order-service/slot-charge/X\" });\n if (e.key === \"Enter\") {\n if (e.target.value === \"\") {\n this.setState({ editingCell: {} });\n return null;\n }\n if (dataArr.length) {\n let params = {};\n if (scope === \"date\") {\n params.date =\n this.state.selectedDate || moment().format(\"YYYY-MM-DD\");\n if (params.date && !params.date.includes(\"T\")) {\n params.date = `${params.date}T00:00:00+00:00`;\n }\n }\n params.id = dataArr[0].id;\n params[chargeTypes[this.state.activeIndex][\"key\"]] = Number(\n e.target.value\n );\n params.storeId = Number(get(\"store\"));\n params.slotId = slotId;\n editAPI\n .put(params)\n .then((response) => {\n this.fetchTableData();\n })\n .catch((error) => {\n console.error(error);\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n this.showError(error);\n });\n } else {\n let params = {};\n if (scope === \"date\") {\n params.date =\n this.state.selectedDate || moment().format(\"YYYY-MM-DD\");\n if (params.date && !params.date.includes(\"T\")) {\n params.date = `${params.date}T00:00:00+00:00`;\n }\n }\n params.orderType = type;\n params.slotId = slotId;\n params[chargeTypes[this.state.activeIndex][\"key\"]] = Number(\n e.target.value\n );\n params.storeId = Number(get(\"store\"));\n addAPI\n .put(params)\n .then((response) => {\n this.fetchTableData();\n })\n .catch((error) => {\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n this.showError(error);\n console.error(error)\n });\n }\n }\n }\n showError(error) {\n this.setState({\n errorMessage: error.message,\n showErrorDialog: true,\n });\n }\n handleDateChange(selectedDate) {\n this.setState({ selectedDate }, () => this.fetchTableData());\n }\n handleCellEditClick(index, scope, type) {\n this.setState({ editingCell: { index, scope, type } });\n }\n closePopup() {\n this.setState({\n showErrorDialog: false,\n errorMessage: null,\n });\n }\n changeTab(activeIndex) {\n this.setState({ activeIndex });\n }\n getSLotCharges() {\n let chargesApi = new API({ url: \"/order-service/slot-charge\" });\n let dateChargesApi = new API({ url: `/order-service/slot-charge` });\n let dateChargesParams = {\n date: this.state.selectedDate,\n storeId: get(\"store\"),\n paginated: \"false\",\n };\n Promise.all([\n chargesApi.get({ storeId: get(\"store\"), paginated: \"false\" }),\n dateChargesApi.get(dateChargesParams),\n ])\n .then(([chargesResponse, dateChargesResponse]) => {\n let charges = chargesResponse.data.slotCharge.filter((el) => !el.date);\n let dateCharges = dateChargesResponse.data.slotCharge.filter(\n (el) => el.date\n );\n let slotCharge = charges.concat(dateCharges);\n this.setState({ slotCharge }, () => this.getSlotChargesMapping());\n })\n .catch((error) => {\n console.error(error);\n });\n }\n getSlotChargesMapping() {\n let currentState = JSON.parse(JSON.stringify(this.state));\n let { slotCharge, allSortedSlots } = currentState;\n let slotChargeMapping = {};\n allSortedSlots.map((slot) => {\n if (slotChargeMapping[getDisplaySlot(slot)]) {\n slotChargeMapping[getDisplaySlot(slot)][slot.orderType] = {\n slotId: slot.id,\n data: slotCharge.filter((s) => s.slotId === slot.id),\n };\n } else {\n slotChargeMapping[getDisplaySlot(slot)] = {\n [slot.orderType]: {\n slotId: slot.id,\n data: slotCharge.filter((s) => s.slotId === slot.id),\n },\n };\n }\n return null;\n });\n this.setState({ slotChargeMapping });\n }\n getSlots(storeId = get(\"store\")) {\n this.deliverySlots = new API({ url: \"/order-service/slot\" });\n let deliverySlotsParams = { orderType: \"DELIVERY\" };\n // Uncomment storeId part when we need store specific slots\n // deliverySlotsParams.storeId = Number(storeId)\n this.pickupSlots = new API({ url: \"/order-service/slot\" });\n let pickupSlotsParams = { orderType: \"PICKUP\" };\n // pickupSlotsParams.storeId = Number(storeId)\n Promise.all([\n this.deliverySlots.get(deliverySlotsParams),\n this.pickupSlots.get(pickupSlotsParams),\n ])\n .then(([deliverySlots, pickupSlots]) => {\n this.setState({\n deliverySlots: deliverySlots.data.slot,\n pickupSlots: pickupSlots.data.slot,\n allSortedSlots: sortSlots(\n deliverySlots.data.slot.concat(pickupSlots.data.slot)\n ),\n loading: false,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n onStoreChange() {\n this.fetchTableData();\n }\n componentDidUpdate(prevProps, prevState) {\n if (prevState.allSortedSlots.length !== this.state.allSortedSlots.length) {\n this.getSlotChargesMapping();\n }\n }\n\n render() {\n const scopes = [\"default\", \"date\"];\n const types = [\"DELIVERY\", \"PICKUP\"];\n let content = ;\n const dateSelect = (\n \n );\n if (this.state.loading) {\n content = ;\n } else {\n if (this.state.allSortedSlots && this.state.allSortedSlots.length > 0) {\n content = (\n
    \n `${tab.text}`)}\n default={this.state.activeIndex}\n onClick={(index) => {\n this.changeTab(index);\n }}\n />\n\n
    \n
    \n \n \n {Object.keys(this.state.slotChargeMapping).map(\n (key, index) => {\n return (\n \n \n {key}\n \n \n );\n }\n )}\n
    \n
    \n
    \n {\n this.tableRef = el;\n }}\n >\n \n {Object.entries(this.state.slotChargeMapping).map(\n ([slot, details], index) => {\n return (\n \n {scopes.map((scope, i) => {\n return (\n \n
    \n {types.map((type, ti) => {\n const dataArr =\n scope === \"default\"\n ? details[type] &&\n details[type][\"data\"] &&\n details[type][\"data\"].filter(\n (el) => !el.date\n )\n : details[type] &&\n details[type][\"data\"] &&\n details[type][\"data\"].filter(\n (el) =>\n el.date &&\n el.date.split(\"T\")[0] ===\n this.state.selectedDate\n );\n const {\n index: savedIndex,\n scope: savedScope,\n type: savedType,\n } = this.state.editingCell;\n const isCellSelected =\n savedIndex === index &&\n savedScope === scope &&\n savedType === type;\n return (\n \n {index === 0 && (\n
    \n {type}\n
    \n )}\n \n {!isCellSelected &&\n dataArr &&\n dataArr.length > 0 &&\n dataArr[0][\n chargeTypes[\n this.state.activeIndex\n ][\"key\"]\n ]}\n {!isCellSelected && !dataArr && \"-\"}\n {isCellSelected && dataArr && (\n \n this.setState({\n editingCell: {},\n })\n }\n type=\"number\"\n defaultValue={\n (dataArr.length > 0 &&\n dataArr[0][\n chargeTypes[\n this.state.activeIndex\n ][\"key\"]\n ]) ||\n \"\"\n }\n onKeyPress={this.onKeyPress.bind(\n this,\n scope,\n type,\n dataArr,\n details[type][\"slotId\"]\n )}\n autoFocus\n />\n )}\n
    \n {dataArr ? (\n dataArr.length > 0 ? (\n \n this.handleCellEditClick(\n index,\n scope,\n type\n )\n }\n >\n \"edit\"\n \n ) : (\n \n this.handleCellEditClick(\n index,\n scope,\n type\n )\n }\n >\n +\n \n )\n ) : null}\n
    \n );\n })}\n
    \n \n );\n })}\n \n );\n }\n )}\n \n
    \n \n \n );\n } else {\n content =

    No Data Available

    ;\n }\n }\n return (\n \n

    Slot Charges

    \n {content}\n {\n \n }\n \n );\n }\n}\n\nexport default SlotCharges;\n","import React, { Component } from \"react\";\nimport Table, { Row } from \"../../../../../components/Table\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport \"./style.css\";\n\nconst PackageDataList = (props) => {\n const { packageData, handleCreatePackage, handleSetPackageName } = props;\n return (\n \n
    \n {packageData?.map((packageItem, index) => {\n return (\n \n handleSetPackageName(packageItem.type)}\n className=\"package-type\"\n >\n {packageItem.type}\n \n \n );\n })}\n
    \n \n
    handleCreatePackage()}>\n +\n \n {getMessage(\"order.pack.create.package\")}\n \n
    \n
    \n
    \n );\n};\n\nclass AddPackageView extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showPackageDataList: false,\n };\n this.handleClickOutside = this.handleClickOutside.bind(this);\n }\n\n handleClickOutside(event) {\n if (\"select-a-package\" !== event.target.id) {\n this.setState({\n showPackageDataList: false,\n });\n }\n }\n\n componentDidMount() {\n document.addEventListener(\"click\", this.handleClickOutside, false);\n }\n componentWillUnmount() {\n document.removeEventListener(\"click\", this.handleClickOutside, false);\n }\n\n handleLabelChange = (e) => {\n const value = e.target?.value;\n const currentIndex = this.props.currentIndex;\n this.props.handleUpdateState(\n [\"packageList\", currentIndex, \"labelName\"],\n value\n );\n };\n handleWeightChange = (e) => {\n const value = e.target?.value;\n const currentIndex = this.props.currentIndex;\n this.props.handleUpdateState(\n [\"packageList\", currentIndex, \"weight\"],\n value\n );\n };\n handleSetPackageName = (packageName) => {\n const currentIndex = this.props.currentIndex;\n const statePathKey = [\"packageList\", currentIndex, \"packageName\"];\n this.props.handleUpdateState(statePathKey, packageName);\n };\n handleSelectPackage = (event) => {\n this.setState({\n showPackageDataList: !this.state.showPackageDataList,\n });\n event.stopPropagation();\n event.preventDefault();\n };\n childMethod(packageName) {\n this.handleSetPackageName(packageName);\n }\n render() {\n const {\n currentPackage: { packageName },\n currentIndex,\n packageData,\n handleCreatePackage,\n handleGetState,\n } = this.props;\n const labelNameValue = handleGetState([\n \"packageList\",\n currentIndex,\n \"labelName\",\n ]);\n const weightValue = handleGetState([\"packageList\", currentIndex, \"weight\"]);\n return (\n
    \n \n
    \n \n {packageName ? packageName : getMessage(\"product.form.select\")}\n \n {this.state.showPackageDataList && (\n \n )}\n
    \n\n {packageName && (\n <>\n
    \n \n \n
    \n\n
    \n \n \n
    \n \n )}\n
    \n );\n }\n}\n\nexport default AddPackageView;\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n VALIDATION_TYPES,\n} from \"../../../../../components/Form\";\nimport { getMessage } from \"../../../../../lib/translator\";\n\nclass CreateNewPackageForm extends BaseForm {\n componentDidMount() {\n const { editPackage } = this.props;\n if (editPackage) {\n this.setState({\n values: {\n ...editPackage,\n },\n });\n }\n }\n\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n const typePattern = \"^([a-zA-Z0-9])[a-zA-Z0-9 ]*$\";\n const { submitting, editPackage } = this.props;\n const {\n validations: { length = {}, breadth = {}, height = {}, type = {} } = {},\n } = this.state;\n\n const disableSubmit =\n !(length.valid && breadth.valid && height.valid && type.valid) ||\n submitting;\n\n return (\n
    \n \n \n \n \n \n {submitting\n ? `${getMessage(\n editPackage\n ? \"orderPackageConfig.package.editing\"\n : \"orderPackageConfig.package.creating\"\n )}...`\n : getMessage(\"orderPackageConfig.submit.text\")}\n \n \n );\n }\n}\n\nexport default CreateNewPackageForm;\n","import React, { forwardRef, useImperativeHandle, useState } from \"react\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { Dialog, Popup } from \"../../../../components/Popup\";\nimport API from \"../../../../lib/api\";\nimport { getSession } from \"../../../../lib/auth\";\nimport CreateNewPackageForm from \"../../../settings/OrderPackageConfig/Table/CreateNewPackageForm.js\";\n\nconst CreatePackage = forwardRef((props, ref) => {\n const organizationId = getSession()?.organization?.id?.toString?.();\n const [showPackagePopup, setShowPackagePopup] = useState(false);\n const [createPackageError, setCreatePackageError] = useState(false);\n const [createPackageSuccess, setCreatePackageSuccess] = useState(false);\n const [submitting, setSubmitting] = useState(false);\n const [deletePackage, setDeletePackage] = useState(null);\n\n useImperativeHandle(ref, () => ({\n childMethod() {\n handleClickShowPackage();\n },\n }));\n\n const handleCloseCreatePackage = () => {\n setShowPackagePopup(false);\n };\n const handleClickShowPackage = () => {\n setShowPackagePopup(true);\n };\n\n const handleSubmitAddPackage = (formData) => {\n setSubmitting(true);\n const createPackageAPI = new API({ url: \"/order-service/package\" });\n createPackageAPI\n .post({ organizationId, ...formData })\n .then((response) => {\n setSubmitting(false);\n handleCloseCreatePackage();\n setCreatePackageSuccess(true);\n props.getPackageConfiguration(formData?.type);\n })\n .catch((error) => {\n console.error(error);\n setSubmitting(false);\n handleCloseCreatePackage();\n setCreatePackageError(true);\n });\n };\n\n const handleSubmitDeletePackage = () => {\n const deletePackageAPI = new API({\n url: `/order-service/package/${deletePackage}`,\n });\n deletePackageAPI\n .delete({ organizationId })\n .then((response) => {\n setDeletePackage(null);\n })\n .catch((error) => {\n console.error(error);\n });\n };\n\n const dismissPackageError = () => {\n setCreatePackageError(false);\n };\n const dismissPackageSuccess = () => {\n setCreatePackageSuccess(false);\n };\n\n const dismissDeletePackage = () => {\n setDeletePackage(null);\n };\n\n const errorDialogTitle = getMessage(\n \"orderPackageConfig.createPackage.errorMsg\"\n );\n const errorDialogInfo = getMessage(\n \"orderPackageConfig.createPackage.errorMsg.dsc\"\n );\n\n const successDialogTitle = getMessage(\n \"orderPackageConfig.createPackage.successMsg\"\n );\n const successDialogInfo = getMessage(\n \"orderPackageConfig.createPackage.successMsg.dsc\"\n );\n\n return (\n <>\n \n \n \n \n \n\n \n \n );\n});\n\nexport default CreatePackage;\n","import React, { Component } from \"react\";\nimport Loader from \"../../../../components/Loader\";\nimport AuthenticatedPage from \"../../../../containers/AuthenticatedPage\";\nimport API from \"../../../../lib/api\";\nimport { getSession } from \"../../../../lib/auth\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport AddPackageView from \"../Details/AddPackageView\";\nimport CreatePackage from \"./CreatePackage\";\nimport \"./style.css\";\nimport {\n getNestedState,\n updateStateRecursively,\n} from \"../../../../lib/stateManagement\";\nimport { Dialog } from \"../../../../components/Popup\";\n\nexport class PackOrder extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showSuccessDialog: false,\n showErrorDialog: false,\n formError: \"\",\n referenceNumber: this.props.match.params.id,\n submitting: false,\n packageList: [{ packageName: \"\", items: [], labelName: \"\", weight: \"\" }],\n };\n this.organization = getSession().organization;\n this.currency = this.organization.currency;\n this.showPackagePopupRef = React.createRef();\n this.selectPackageRef = React.createRef();\n this.updateStateRecursively = updateStateRecursively.bind(this);\n this.getNestedState = getNestedState.bind(this);\n }\n\n handlePrefillForm() {\n const packingDetails = this.state.data?.packingDetails?.[0] || {};\n const { details = {}, metaData } = packingDetails;\n const detailsData = Object.entries(details);\n const packList = {\n packageName: detailsData?.[0]?.[0],\n labelName: detailsData?.[0]?.[1]?.[0],\n weight: metaData?.packages?.[detailsData?.[0]?.[1]?.[0]]?.weight,\n };\n\n Object.keys(packList).forEach((key) => {\n if (packList[key]) {\n this.handleUpdateState([\"packageList\", 0, key], packList[key]);\n }\n });\n }\n\n getData() {\n let referenceNumber = this.state.referenceNumber;\n let api = new API({ url: `/order-service/order/${referenceNumber}` });\n this.setState(\n {\n loading: true,\n failed: false,\n },\n () => {\n api\n .get()\n .then(\n (response) => {\n this.setState(\n {\n failed: false,\n data: response.data.order,\n },\n () => {\n if (this.props.match.params?.action === \"edit\") {\n this.handlePrefillForm();\n }\n }\n );\n },\n (error) => {\n this.setState({ failed: true });\n if (error.code === 401) {\n throw error;\n }\n }\n )\n .catch((error) => {\n console.error(error);\n })\n .finally(() => {\n this.setState((prevState) => {\n return { loading: false };\n });\n });\n }\n );\n }\n getPackageConfiguration = (packageName) => {\n const organizationId = this.organization?.id;\n let params = {};\n params.id = organizationId;\n let api = new API({ url: `/order-service/package` });\n api\n .get(params)\n .then((response) => {\n this.setState(\n {\n packageData: response.data.package,\n },\n () => {\n if (packageName) {\n this.handleSelectPackage(packageName);\n }\n }\n );\n })\n .catch((error) => {\n console.error(error);\n });\n };\n\n componentDidMount() {\n this.getData();\n this.getPackageConfiguration();\n }\n\n handleCreatePackage = () => {\n this.showPackagePopupRef.current.childMethod();\n };\n\n handleSelectPackage = (packageName) => {\n this.selectPackageRef.current.childMethod(packageName);\n };\n\n handleUpdateState = (statePath, value) => {\n this.updateStateRecursively(statePath, value);\n };\n\n handleGetState = (statePath) => {\n return this.getNestedState(statePath);\n };\n\n sendPackageConfig = () => {\n this.setState({ submitting: true });\n const { packageName, labelName, weight } = this.state.packageList[0];\n const referenceNumber = this.state.referenceNumber;\n const id = this.state.data.customer.id;\n const { items } = this.state.data;\n const data = {\n user: { id },\n details: {},\n status: \"PACKED\",\n packageMetaData: { packages: {} },\n };\n data.details[packageName] = [labelName];\n data.packageMetaData.packages[labelName] = {\n weight: Number(weight),\n items: {},\n };\n items.forEach((item) => {\n data.packageMetaData.packages[labelName].items[item.id] = Number(\n item.orderDetails?.orderedQuantity\n );\n });\n data.user = JSON.stringify(data.user);\n data.details = JSON.stringify(data.details);\n const api = new API({ url: `/order-service/order/${referenceNumber}` });\n api\n .put(data)\n .then((response) => {\n if (response.status === \"SUCCESS\") {\n this.setState({\n formError: \"\",\n showSuccessDialog: true,\n });\n }\n })\n .catch((error) => {\n this.setState({\n formError: error.message,\n showErrorDialog: true,\n });\n console.error(error);\n })\n .finally(() => {\n this.setState({ submitting: false });\n });\n };\n sendEditPackageConfig = () => {\n this.setState({ submitting: true });\n const { packageName, labelName, weight } = this.state.packageList[0];\n const { items } = this.state.data;\n const referenceNumber = this.state.referenceNumber;\n const orderItemId = this.state.data.items[0].orderDetails.orderItemId;\n const quantity = Number(\n this.state.data.items[0].orderDetails.deliveredQuantity\n );\n const dataPacked = {\n items: [{ orderItemId, quantity }],\n details: {},\n\n packageMetaData: { packages: {} },\n };\n dataPacked.details[packageName] = Array(labelName);\n dataPacked.packageMetaData.packages[labelName] = {\n weight: Number(weight),\n items: {},\n };\n items.forEach((item) => {\n dataPacked.packageMetaData.packages[labelName].items[item.id] = Number(\n item.orderDetails?.orderedQuantity\n );\n });\n const api = new API({\n url: `/order-service/order/${referenceNumber}/pack`,\n });\n api\n .put(dataPacked)\n .then((response) => {\n if (response.status === \"SUCCESS\") {\n this.setState({\n formError: \"\",\n showSuccessDialog: true,\n });\n }\n })\n .catch((error) => {\n this.setState({\n formError: error.message,\n showErrorDialog: true,\n });\n console.error(error);\n })\n .finally(() => {\n this.setState({ submitting: false });\n });\n };\n\n handleSubmit = () => {\n if (this.props.match.params?.action === \"edit\") {\n this.sendEditPackageConfig();\n } else {\n this.sendPackageConfig();\n }\n };\n\n closeDialogs = () => {\n this.setState(\n {\n showSuccessDialog: false,\n showErrorDialog: false,\n },\n () => {\n if (!this.state.formError) {\n if (this.props.match.params?.action === \"edit\") {\n const { referenceNumber } = this.state;\n this.props.history.push(`/orders/orders/${referenceNumber}`);\n return;\n }\n this.props.history.push(\"/operations/orders\");\n }\n }\n );\n };\n\n render() {\n let contentLoaded =\n !this.state.loading && !this.state.failed && this.state.data;\n const { submitting, packageData, packageList } = this.state;\n return (\n \n
    \n

    {getMessage(\"order.action.packed\")}

    \n
    \n {!contentLoaded ? (\n <>\n \n \n ) : (\n <>\n {packageList.map((packageListData, index) => {\n return (\n \n );\n })}\n {packageList && packageList[0]?.packageName && (\n <>\n
    \n
    \n {\n if (this.props.match.params?.action === \"edit\") {\n const { referenceNumber } = this.state;\n this.props.history.push(\n `/orders/orders/${referenceNumber}`\n );\n return;\n }\n this.props.history.push(\"/operations/orders\");\n }}\n >\n {getMessage(\"order.form.cancel.text\")}\n \n
    \n
    \n \n {submitting ? \"...\" : getMessage(\"order.action.packed\")}\n \n
    \n
    \n \n )}\n\n \n\n \n \n \n )}\n
    \n );\n }\n}\n\nexport default PackOrder;\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n SingleDatePicker,\n Select,\n} from \"../../../../components/Form\";\nimport API from \"../../../../lib/api\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nexport default class OrderFiltersForm extends BaseForm {\n constructor(props) {\n // lastOrderType is being used to track the change in selected orderType\n // As the state is getting mutated, we are not able to get correct prevState\n super(props);\n this.lastOrderType = undefined;\n }\n\n componentDidMount() {\n this.configApi = new API({ url: \"/account-service/config/order\" });\n this.configApi\n .get()\n .then((response) => {\n let orderTypes = response.data.config.order.orderTypes;\n orderTypes = (orderTypes || []).map((orderType) => {\n return {\n text:\n orderType.split(\"\")[0] +\n orderType\n .toLowerCase()\n .split(\"\")\n .splice(1, orderType.length)\n .join(\"\"),\n value: orderType,\n };\n });\n this.setState({ orderTypes });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n // This componentDidUpdate method used to track the change in orderType\n // As inside BaseForm the state is getting mutated, we are not able to compare\n // prevState and current state. This is why lastOrderType variable is introduced\n // to store the last value of orderType. As it does not have any impact on the UI,\n // we are not storing it inside state, thus we can prevent unnecessary render.\n componentDidUpdate(prevProps, prevState) {\n const { values } = this.state;\n if (values && values.orderType !== this.lastOrderType) {\n this.lastOrderType = values.orderType;\n }\n }\n\n render() {\n const { SubmitButton, ClearButton } = this.buttons;\n const { Form } = this.components;\n const { orderTypes } = this.state;\n return (\n
    \n
    \n \n \n \n \n
    \n {getMessage(\"order.filters.submitText\")}\n \n {getMessage(\"order.filters.clearFiltersText\")}\n \n
    \n );\n }\n}\n","import React from \"react\";\nimport { BaseForm, Input } from \"../../../../components/Form\";\nimport Dialog from \"../../../../components/Popup/Dialog\";\nimport Loader from \"../../../../components/Loader\";\nimport Table, { Row, Cell, Header } from \"../../../../components/Table\";\n\nimport API from \"../../../../lib/api\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { getSession } from \"../../../../lib/auth\";\nimport \"./style.css\";\n\nclass RegisterOrderPayment extends BaseForm {\n componentDidMount() {\n this.setState({\n loading: true,\n showErrorDialog: false,\n });\n const pendingAmount = this.props.pendingAmount;\n const clientId = this.props.clientId;\n this.setState({\n pendingAmount,\n clientId,\n });\n const configApi = new API({ url: \"/config-service/config/order\" });\n configApi.get().then((response) => {\n let disabledModes = response.data.order.finCloseDisabledPaymentModes;\n disabledModes = disabledModes || [];\n const paymentModes = response.data.order.paymentMethods?.[\n \"PICKUP\"\n ].filter((mode) => disabledModes.indexOf(mode) === -1);\n if (paymentModes && !paymentModes.length) {\n const api = new API({\n url: `/order-service/order/${this.props.referenceNumber}`,\n });\n api\n .put({ status: \"COMPLETED\" })\n .then((response) => {\n this.setState(\n {\n submitting: false,\n },\n () => this.props.closePopup()\n );\n })\n .catch((error) => {\n console.error(error);\n if (error.code === 401) {\n throw error;\n } else {\n this.setState({\n submitting: false,\n loading: false,\n errorMessage:\n (error && error.message) || \"Please try again later\",\n showErrorDialog: true,\n });\n }\n });\n } else {\n this.setState({\n loading: false,\n paymentModes,\n });\n }\n });\n if (!pendingAmount) {\n const orderApi = new API({\n url: `/order-service/order/${this.props.referenceNumber}`,\n });\n orderApi\n .get()\n .then((response) => {\n const order = response.data.order;\n this.setState({\n pendingAmount: order.pendingAmount,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n\n onSubmit(formData) {\n this.setState({\n submitting: true,\n loading: true,\n });\n let data = Object.assign({}, formData);\n let newData = Object.keys(data)\n .map((mode) => {\n if (data[mode].amount) {\n return {\n mode: mode,\n amount: data[mode].amount,\n transactionId: data[mode].transactionId,\n };\n }\n return null;\n })\n .filter(Boolean);\n\n const api = new API({ url: \"/order-service/order-payment\" });\n Promise.all(\n newData.map((data) => {\n let params = {};\n params.amount = data.amount;\n params.mode = data.mode;\n params.orderReferenceNumber = this.props.referenceNumber;\n if (data.transactionId) {\n params.metaData = { transaction_id: data.transactionId };\n }\n params.status = \"COMPLETED\";\n return api.post(params);\n })\n )\n .then((response) => {\n const api = new API({\n url: `/order-service/order/${this.props.referenceNumber}`,\n });\n api\n .put({ status: \"COMPLETED\" })\n .then((response) => {\n this.setState(\n {\n submitting: false,\n loading: false,\n },\n () => this.props.closePopup()\n );\n })\n .catch((error) => {\n console.error(error);\n });\n })\n .catch((error) => {\n if (error.code === 401) {\n throw error;\n } else {\n this.setState({\n submitting: false,\n loading: false,\n errorMessage: (error && error.message) || \"Please try again later\",\n showErrorDialog: true,\n });\n }\n console.error(error)\n });\n }\n render() {\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n const { paymentModes, values, pendingAmount, submitting, errorMessage } =\n this.state;\n let remainingAmount = (\n pendingAmount -\n (values &&\n Object.keys(values) &&\n Object.keys(values).reduce(\n (acc, val) => Number(values[val].amount) + acc,\n 0\n ))\n ).toFixed(2);\n return (\n <>\n {this.state.showErrorDialog && (\n this.props.closePopup()}\n closeText={getMessage(\"dialog.okText\")}\n />\n )}\n {this.state.loading ? (\n \n ) : (\n
    \n \n
    \n {getMessage(\"order.payment.paymentmode\")}\n \n {getMessage(\"order.payment.amount\")} (\n {getSession() &&\n getSession().organization &&\n getSession().organization.currency.symbol}\n )\n \n {getMessage(\"order.payment.transactionid\")}\n
    \n {paymentModes &&\n paymentModes.map((mode, i) => (\n \n {mode}\n \n \n \n \n {mode !== \"COD\" && (\n \n )}\n \n \n ))}\n \n {getMessage(\"order.payment.pendingamount\")}\n {remainingAmount}\n \n \n
    \n
    \n 0 &&\n (submitting ||\n !!Number(!!remainingAmount && Number(remainingAmount)))\n }\n >\n {getMessage(\"order.payment.submit\")}\n \n
    \n
    \n )}\n \n );\n }\n}\n\nexport default RegisterOrderPayment;\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Row, Cell } from \"../../../../components/Table\";\nimport { Dialog, Popup } from \"../../../../components/Popup\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../../components/DropDown\";\nimport {\n Email as CustomerEmailWidget,\n Call as CustomerCallWidget,\n Address as CustomerMapWidget,\n} from \"../../../../containers/CustomerWidgets\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport {\n getSession,\n isExtensionEnabled,\n hasPermissions,\n} from \"../../../../lib/auth\";\nimport { getPrintableTime, formatTime } from \"../../../../lib/datetime\";\nimport { getAsapDuration } from \"../../../../lib/commonlyused\";\nimport { TABLE_ACTIONS } from \"../../../../containers/ListingPage\";\nimport OrderInvoice from \"../../Orders/Details/OrderInvoice\";\nimport FileForReturn from \"../../Returns/Form/FileForReturn\";\nimport CompletePickupPendingOrder from \"../../Returns/Form/CompletePickupPending\";\nimport OrderRegisterPayments from \"../RegisterPayments\";\nimport { Consumer } from \"../index\";\nimport pickupImage from \"./pickup.svg\";\nimport deliveyImage from \"./delivery.svg\";\nimport offlineImage from \"./offline.svg\";\nimport B2BImage from \"./b2b.svg\";\n\nimport Image from \"../../../../components/Image\";\n\nconst orderTypeImages = {\n PICKUP: pickupImage,\n DELIVERY: deliveyImage,\n B2B: B2BImage,\n OFFLINE: offlineImage,\n};\n\nconst tripStatus = [\"DISPATCHED\", \"COMPLETED\", \"RETURNED\"];\n\nclass TableActions extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showCompleteDialog: false,\n showCancelDialog: false,\n showInvoice: false,\n printInvoice: false,\n showLog: false,\n showPickupPending: false,\n showMovePendingToPacked: false,\n showCompleteOrderPopup: false,\n };\n this.returnableStatuses = [\"COMPLETED\"];\n this.isInStoreEnabled = isExtensionEnabled(\"InStoreProcessing\");\n this.isLogisticsEnabled = isExtensionEnabled(\"LogisticsSupport\");\n this.returnableStatuses.push(\"PACKED\");\n this.returnableStatuses.push(\"DISPATCHED\");\n\n this.printInvoice = this.printInvoice.bind(this);\n }\n printInvoice() {\n this.setState((prevState) => {\n return {\n showInvoice: true,\n printInvoice: true,\n };\n });\n }\n\n render() {\n let {\n referenceNumber,\n status,\n onAction,\n type,\n paymentStatus,\n pendingAmount,\n clientId,\n url,\n returnsByRE,\n } = this.props;\n const productReturned = (returnsByRE && returnsByRE.length > 0) || false; // to know product returned or not\n let hasOrderEditPermissions = hasPermissions(\"order\", \"order\", \"PUT\");\n let hasOrderPostPermissions = hasPermissions(\"order\", \"order\", \"post\");\n let canBeCompleted =\n hasOrderEditPermissions && isExtensionEnabled(\"InStoreProcessing\")\n ? isExtensionEnabled(\"LogisticsSupport\")\n ? status === \"DISPATCHED\"\n : status === \"PACKED\"\n : isExtensionEnabled(\"LogisticsSupport\")\n ? status === \"DISPATCHED\"\n : status === \"PENDING\";\n let canBePendingToPacked =\n hasOrderEditPermissions &&\n isExtensionEnabled(\"LogisticsSupport\") &&\n !isExtensionEnabled(\"InStoreProcessing\") &&\n status === \"PENDING\";\n let canBeReturned =\n hasOrderPostPermissions &&\n isExtensionEnabled(\"OrderReturns\") &&\n this.returnableStatuses.indexOf(status) > -1;\n const canBeDisputed =\n isExtensionEnabled(\"OrderDisputes\") && status === \"COMPLETED\";\n let canShowTrip =\n isExtensionEnabled(\"LogisticsSupport\") &&\n tripStatus.indexOf(status) > -1 &&\n hasPermissions(\"logistics\", \"trip\", \"get\") &&\n type.name === \"DELIVERY\";\n if (type && type.name === \"PICKUP\" && status === \"PACKED\") {\n canBeCompleted = true;\n }\n let canBeCancelled =\n (status === \"PENDING\" || status === \"RETURNED\") &&\n hasPermissions(\"order\", \"order\", \"put\");\n let registerPayments =\n paymentStatus === \"PENDING\" &&\n (!isExtensionEnabled(\"LogisticsSupport\") ||\n (type && type.name === \"PICKUP\"));\n const isStatusPacked = status === \"PACKED\" || false;\n const packedOrderEdit = this.props.packedOrderEdit || false;\n const fromOperations = this.props.url === \"/operations\";\n return (\n
    \n {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { referenceNumber },\n { status: \"PACKED\" }\n );\n this.setState({ showMovePendingToPacked: false });\n }}\n close={() => this.setState({ showMovePendingToPacked: false })}\n okText={getMessage(\"order.details.packed.confirmText\")}\n closeText={getMessage(\"order.details.packed.cancelText\")}\n />\n {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { referenceNumber },\n { status: \"COMPLETED\" }\n );\n this.setState({ showCompleteDialog: false });\n }}\n close={() => this.setState({ showCompleteDialog: false })}\n okText={getMessage(\"order.details.completion.confirmText\")}\n closeText={getMessage(\"order.details.completion.cancelText\")}\n />\n {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { referenceNumber },\n { status: \"CANCELLED\" }\n );\n this.setState({ showCancelDialog: false });\n }}\n close={() => this.setState({ showCancelDialog: false })}\n okText={getMessage(\"order.details.cancellation.confirmText\")}\n closeText={getMessage(\"order.details.cancellation.cancelText\")}\n />\n {this.state.showMoveToPendingDialog && (\n {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { referenceNumber },\n { status: \"PENDING\" }\n );\n }}\n close={() => this.setState({ moveCancelledToPending: false })}\n okText={getMessage(\"order.details.cancellation.confirmText\")}\n closeText={getMessage(\"order.details.cancellation.cancelText\")}\n />\n )}\n {this.state.showInvoice && (\n \n this.setState({ showInvoice: false, printInvoice: false })\n }\n print={this.state.printInvoice}\n />\n )}\n {this.state.showReturn && (\n this.setState({ showReturn: false })}\n className=\"file-for-return\"\n heading={`${getMessage(\"return.file.heading\")} #${referenceNumber}`}\n >\n this.setState({ showReturn: false })}\n onAction={onAction}\n status={status}\n />\n \n )}\n this.setState({ showCompleteOrderPopup: false })}\n heading={\n <>\n {getMessage(\"order.register.payments.for\")}{\" \"}\n {clientId ? \"#\" : \"Z\"}\n {clientId || referenceNumber}{\" \"}\n \n }\n >\n this.setState({ showCompleteOrderPopup: false })}\n />\n \n {this.state.showPickupPending && (\n this.setState({ showPickupPending: false })}\n className=\"pickup-pending-form\"\n >\n this.setState({ showPickupPending: false })}\n onComplete={() => {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { referenceNumber },\n { status: \"COMPLETED\" }\n );\n this.setState({\n showPickupPending: false,\n });\n }}\n onPickupPendingComplete={(params) => {\n onAction(TABLE_ACTIONS.UPDATE, { referenceNumber }, params);\n }}\n />\n \n )}\n }>\n \n \n {getMessage(\"order.action.viewDetails\")}\n \n \n this.setState({ showInvoice: true })}>\n {getMessage(\"order.action.viewInvoice\")}\n \n {canBeDisputed && (\n \n \n {getMessage(\"order.details.dispute.optionText\")}\n \n \n )}\n {canShowTrip && (\n \n \n {getMessage(\"order.actions.trips\")}\n \n \n )}\n \n {getMessage(\"order.action.printInvoice\")}\n \n {canBeCancelled && (\n {\n this.setState({\n showCancelDialog: true,\n });\n }}\n >\n {getMessage(\"order.action.cancel\")}\n \n )}\n {canBePendingToPacked && (\n {\n this.setState({\n showMovePendingToPacked: true,\n });\n }}\n >\n {getMessage(\"order.action.packed\")}\n \n )}\n {canBeCompleted &&\n (!registerPayments ? (\n {\n if (!isExtensionEnabled(\"OrderReturns\")) {\n this.setState({ showCompleteDialog: true });\n } else {\n this.setState({ showPickupPending: true });\n }\n }}\n >\n {getMessage(\"order.action.complete\")}\n \n ) : (\n this.setState({ showCompleteOrderPopup: true })}\n >\n {getMessage(\"order.action.complete\")}\n \n ))}\n {canBeReturned && (\n \n \n {getMessage(\"order.action.return\")}\n \n \n )}\n \n \n {getMessage(\"order.actions.logs\")}\n \n \n {isStatusPacked && packedOrderEdit && fromOperations && (\n \n \n {getMessage(\"order.action.editPackedOrder\")}\n \n \n )}\n \n
    \n );\n }\n}\n\nconst tableHeader = (url) => {\n let headers = [\n getMessage(\"order.table.header.referenceNumber\"),\n getMessage(\"order.table.header.customer\"),\n getMessage(\"order.table.header.placedTime\"),\n getMessage(\"order.filters.paymentStatus\"),\n getMessage(\"operations.order.click.collect.customer.location\"),\n getMessage(\"order.details.packing.heading\"),\n getMessage(\"order.table.header.actions\"),\n ];\n if (!isExtensionEnabled(\"DeliverySlots\")) {\n return headers;\n } else {\n headers.splice(3, 0, getMessage(\"order.table.header.expectedTime\"));\n return headers;\n }\n};\nconst getCustomerLocationDistance = (customerLocation, countryCode) => {\n if (customerLocation?.distance) {\n if (customerLocation.distance > 500) {\n if (countryCode === \"US\") {\n return `${(customerLocation.distance * 0.000621371).toFixed(2)} mi`;\n } else {\n return `${(customerLocation.distance / 1000).toFixed(2)} km`;\n }\n } else return `${customerLocation.distance} m`;\n }\n return ``;\n};\nconst tableProperties = (url, packedOrderEdit) => {\n return {\n headers: tableHeader(),\n row: ({\n items,\n slotType,\n clientId,\n referenceNumber,\n customer,\n address,\n completedAt,\n createdAt,\n invoiceAmount,\n itemCount,\n status,\n store,\n pickupLocation,\n pendingAmount,\n refundAmount,\n type,\n onAction,\n preferredDate,\n slotStartTime,\n slotEndTime,\n paymentStatus,\n fillRate,\n returnsByRE,\n packingDetails,\n id,\n customerLocation,\n }) => (\n \n {(value) => {\n const organization = (getSession() || {}).organization || {};\n let allowCall =\n value &&\n value.communication &&\n value.communication.allowCall !== false &&\n hasPermissions(\"communication\", \"call\", \"post\");\n let allowEmail =\n value &&\n value.communication &&\n value.communication.allowEmail !== false &&\n hasPermissions(\"communication\", \"email\", \"post\");\n return (\n \n \n
    \n
    \n {type.name && (\n
    \n \n
    \n )}\n
    \n
    \n
    \n \n {clientId ? (\n \n \n {\" \"}\n {getMessage(\"order.table.clientId.prefix\")}{\" \"}\n {\" \"}\n {clientId}\n \n ) : (\n \n {\" \"}\n \n {\" \"}\n {getMessage(\n \"order.table.referenceNumber.prefix\"\n )}{\" \"}\n {\" \"}\n {referenceNumber}\n \n )}\n \n
    \n {type.name === \"PICKUP\" ? (\n \n {pickupLocation && pickupLocation.name}\n \n ) : (\n store && (\n \n {store.name}\n \n )\n )}\n
    \n
    \n
    \n \n
    \n {customer ? (\n \n {customer.name}\n \n ) : null}\n
    \n
    \n {address && (\n \n )}\n {allowEmail &&\n customer &&\n customer.emails &&\n !!customer.emails.length && (\n \n )}\n {allowCall &&\n customer &&\n customer.phones &&\n !!customer.phones.length && (\n \n )}\n
    \n
    \n \n
    \n {createdAt\n ? getPrintableTime(createdAt).split(\", \")[0]\n : null}\n
    \n \n {createdAt\n ? getPrintableTime(createdAt).split(\", \")[1]\n : null}\n \n
    \n {isExtensionEnabled(\"DeliverySlots\") ? (\n \n
    \n {preferredDate\n ? getPrintableTime(preferredDate).split(\", \")[0]\n : null}\n
    \n \n {slotStartTime && slotEndTime && slotType !== \"ASAP\"\n ? formatTime(slotStartTime) +\n \" - \" +\n formatTime(slotEndTime)\n : getAsapDuration(slotStartTime, slotEndTime)}\n \n
    \n ) : null}\n \n
    {paymentStatus}
    \n {pendingAmount && (\n {`${\n organization?.currency?.symbol ?? \"\"\n }${pendingAmount}`}\n )}\n
    \n \n {getCustomerLocationDistance(\n customerLocation,\n organization?.countryCode\n )}\n \n \n
    \n {packingDetails.map((packingDetail) => {\n const { orderId, details, id: packingId } = packingDetail;\n return orderId === id ? (\n
    \n {Object.keys(details).map((detail) => (\n \n
    \n {detail}\n
    \n {`: `} \n
    {details[detail].join(\", \")}
    \n
    \n ))}\n
    \n ) : null;\n })}\n \n
    \n \n \n \n
    \n );\n }}\n
    \n ),\n };\n};\n\nexport default tableProperties;\n\nexport { tripStatus };\n","import React, { Component } from \"react\";\nimport moment from \"moment\";\nimport ListingPage from \"../../../containers/ListingPage\";\nimport { getDefaultStore } from \"../../../containers/StoreSelector\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { isExtensionEnabled } from \"../../../lib/auth\";\nimport API from \"../../../lib/api\";\nimport { get } from \"../../../lib/storage\";\nimport OrderFilters from \"./Filters\";\nimport { tabularView } from \"./Views\";\nimport emptyIcon from \"./click-collect-empty.svg\";\nimport { getStandradDateTime, utcToLocalTime } from \"../../../lib/datetime\";\nimport checkHttpResponseCode from \"../../../utils/isApiCallSuccessfull\";\n\nconst emptyState = () => {\n return {\n icon: emptyIcon,\n message: getMessage(\"order.click.collect.empty\"),\n };\n};\nconst { Provider, Consumer } = React.createContext(\"commConfig\");\n\nclass ClickCollectOrders extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isCollectCenterWithPickup: false,\n customLoading: true,\n };\n }\n componentDidMount() {\n this.communicationApi = new API({\n url: `/account-service/config/communication`,\n });\n this.communicationApi\n .get()\n .then((response) => {\n this.setState({ communicationConfig: response.data.config });\n })\n .catch((error) => {\n throw error;\n });\n\n if (isExtensionEnabled(\"InStoreProcessing\")) {\n this.api = new API({\n url: `/config-service/config/inStoreProcessing.packedOrderEditAllowed`,\n });\n this.api\n .get()\n .then((res) => {\n if (checkHttpResponseCode(res.code) && res.status === \"SUCCESS\") {\n this.setState({\n packedOrderEdit:\n res &&\n res.data &&\n res.data.inStoreProcessing &&\n res.data.inStoreProcessing.packedOrderEditAllowed,\n });\n }\n })\n .catch((err) => {\n console.error(err);\n if (err.code === 401 || err.code === 403) {\n throw err;\n }\n });\n }\n const storeId = get(\"store\") || getDefaultStore().storeId;\n this.storeApi = new API({ url: `/account-service/store/${storeId}` });\n this.orderConfigApi = new API({ url: `/account-service/config/order` });\n Promise.all([this.storeApi.get(), this.orderConfigApi.get()])\n .then(([storeApiRes, orderConfigRes]) => {\n this.setState({\n isCollectCenterWithPickup:\n storeApiRes?.data?.store?.hasClickCollect &&\n orderConfigRes?.data?.config?.order?.orderTypes?.includes(\"PICKUP\"),\n customLoading: false,\n });\n })\n .catch((error) => {\n console.error(error);\n this.setState({ customLoading: false });\n throw error;\n });\n }\n componentWillUnmount() {\n this.communicationApi && this.communicationApi.cancel();\n }\n render() {\n const { props } = this;\n // If url is present in the props, then we need to show customer support related interfaces\n return (\n \n {\n let orders = response.data.order;\n if (Array.isArray(orders)) {\n orders.map((order) => {\n if (order.createdAt) {\n order.createdAt = getStandradDateTime(\n utcToLocalTime,\n order.createdAt\n );\n }\n if (order.completedAt) {\n order.completedAt = getStandradDateTime(\n utcToLocalTime,\n order.completedAt\n );\n }\n if (order.updatedAt) {\n order.updatedAt = getStandradDateTime(\n utcToLocalTime,\n order.updatedAt\n );\n }\n if (order.preferredDate && order.slotStartTime) {\n const tempDate = getStandradDateTime(\n utcToLocalTime,\n `${order.preferredDate} ${order.slotStartTime}`\n ).split(\" \");\n order.preferredDate = tempDate[0];\n order.slotStartTime = tempDate[1];\n }\n if (order.preferredDate && order.slotEndTime) {\n const tempDate = getStandradDateTime(\n utcToLocalTime,\n `${order.preferredDate} ${order.slotEndTime}`\n ).split(\" \");\n order.slotEndTime = tempDate[1];\n }\n return order;\n });\n }\n orders = orders?.sort((a, b) => {\n if (\n a.customerLocation?.distance > 0 &&\n b.customerLocation?.distance > 0 &&\n a.customerLocation?.distance > b.customerLocation?.distance\n ) {\n return 1;\n } else return -1;\n });\n return orders;\n },\n }}\n primaryKey=\"referenceNumber\"\n emptyState={emptyState()}\n filters={{\n component: OrderFilters,\n transformFilter: (formData) => {\n let result = Object.assign({}, formData);\n if (result.customer) {\n result.customerId = result.customer.id;\n delete result.customer;\n }\n return result;\n },\n transformSubmit: (formData) => {\n let searchParams = \"\";\n Object.keys(formData)\n .filter(\n (key) =>\n key !== \"filters\" && (formData[key] === 0 || formData[key])\n )\n .forEach((key, index) => {\n if (index === 0) {\n searchParams += `?${key}=${formData[key]}`;\n } else {\n searchParams += `&${key}=${formData[key]}`;\n }\n });\n if (searchParams !== \"\") {\n props.history.push({ search: searchParams });\n }\n let result = Object.assign({}, formData);\n if (result.customer) {\n result.customerId = result.customer.id;\n delete result.customer;\n }\n return result;\n },\n }}\n onClear={() => props.history.push({ search: \"filters=all\" })}\n tableProperties={tabularView(\n `/operations`,\n this.state && this.state.packedOrderEdit\n )}\n tableDynamic\n storeDependent={true}\n />\n )\n \n );\n }\n}\n\nexport default ClickCollectOrders;\nexport { Provider, Consumer };\n","import React from \"react\";\nimport {\n BaseForm,\n Searchable,\n Radio,\n Input,\n VALIDATION_TYPES,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nimport deleteIcon from \"./delete.svg\";\n\nexport default class DesignationForm extends BaseForm {\n constructor(props) {\n super(props);\n this.delete = this.delete.bind(this);\n }\n delete() {\n this.props.onDelete();\n }\n\n render() {\n const { SubmitButton, CancelButton } = this.buttons;\n const { Form } = this.components;\n const designationId = this.state.values.id;\n return (\n
    \n \n \n response.data.designation.filter(\n (designation) => designation.id !== designationId\n )\n }\n {...this.generateStateMappers({\n stateKeys: [\"manager\"],\n loseEmphasisOnFill: true,\n })}\n />\n response.data.role}\n {...this.generateStateMappers({\n stateKeys: [\"roles\"],\n loseEmphasisOnFill: true,\n })}\n />\n \n
    \n {this.props.method && this.props.method === \"edit\" && (\n \n \"delete\"\n {getMessage(\"brand.form.deleteText\")}\n \n )}\n {getMessage(\"designations.form.cancel\")}\n {getMessage(\"designations.form.save\")}\n
    \n \n );\n }\n}\n","import React from \"react\";\nimport { BaseForm, Searchable } from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nexport default class DesignationFilter extends BaseForm {\n render() {\n const { SubmitButton, ClearButton } = this.buttons;\n const { Form } = this.components;\n return (\n
    \n
    \n
    \n response.data.designation}\n {...this.generateStateMappers({\n stateKeys: [\"name\"],\n loseEmphasisOnFill: true,\n })}\n />\n response.data.designation}\n {...this.generateStateMappers({\n stateKeys: [\"manager\"],\n loseEmphasisOnFill: true,\n })}\n />\n
    \n {getMessage(\"designations.form.submit\")}\n \n {getMessage(\"designations.form.clearFiltersText\")}\n \n
    \n
    \n );\n }\n}\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\n\nimport EmptyIcon from \"./designation.svg\";\nimport DesignationForm from \"./Form\";\nimport DesignationFilter from \"./Filters\";\nimport \"./style.css\";\n\nimport { getMessage } from \"../../../lib/translator\";\n\nconst EmptyState = {\n icon: EmptyIcon,\n message: getMessage(\"designations.empty.message\"),\n actions: ({ onAction }) => (\n {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n + {getMessage(\"designations.add\")}\n \n ),\n};\n\nconst tableProperties = () => {\n return {\n headers: [\n getMessage(\"designations.header.name\"),\n getMessage(\"designations.header.timingType\"),\n getMessage(\"designations.header.manager\"),\n getMessage(\"designations.header.actions\"),\n ],\n row: ({ id, name, timingType, manager, onAction }) => (\n \n \n onAction(TABLE_ACTIONS.EDIT, { id })}\n >\n {name}\n \n \n \n
    {timingType}
    \n
    \n {\n \n {getMessage(\"designations.header.timing\")}\n \n }\n

    \n {timingType &&\n timingType.split(\"\")[0] +\n timingType\n .toLowerCase()\n .split(\"\")\n .slice(1, timingType.length)\n .join(\"\")}\n

    \n
    \n
    \n \n
    \n \n {getMessage(\"designations.header.manager\")}\n \n

    {manager && manager.name}

    \n
    \n
    \n \n }>\n {\n onAction(TABLE_ACTIONS.EDIT, { id });\n }}\n >\n {getMessage(\"designations.edit\")}\n \n onAction(TABLE_ACTIONS.DELETE, { id })}\n >\n {getMessage(\"designations.delete\")}\n \n \n \n {getMessage(\"designations.view.employees\")}\n \n \n \n \n
    \n ),\n };\n};\n\nexport default class Designations extends React.Component {\n render() {\n return (\n response.data.designation,\n }}\n emptyState={EmptyState}\n tableProperties={tableProperties()}\n headerActions={({ onAction }) => (\n {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n + {getMessage(\"designations.add\")}\n \n )}\n addHeading={getMessage(\"designations.addheader\")}\n editHeading={getMessage(\"designations.editheader\")}\n form={{\n component: DesignationForm,\n allowDelete: true,\n transformSubmit: (formData) => {\n let result = Object.assign({}, formData);\n if (formData.manager === \"\" || formData.manager === null) {\n result.managerId = \"\";\n } else if (formData.manager) {\n result.managerId = formData.manager.id;\n }\n delete result.manager;\n\n if (formData.roles) {\n let roleIds = formData.roles.map((role) => role.id);\n result.roleIds = roleIds;\n delete result.roles;\n }\n return result;\n },\n }}\n filters={{\n component: DesignationFilter,\n transformSubmit: (formData) => {\n let result = Object.assign({}, formData);\n if (formData.name) {\n result.name = formData.name.name;\n }\n if (formData.manager) {\n result.managerId = formData.manager.id;\n delete result.manager;\n }\n return result;\n },\n }}\n />\n );\n }\n}\n","import React from \"react\";\n\nimport {\n BaseForm,\n SingleDatePicker,\n Searchable,\n Select,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nexport default class Filters extends BaseForm {\n render() {\n const { SubmitButton, ClearButton } = this.buttons;\n const { Form } = this.components;\n const { stores } = this.props.options;\n\n return (\n
    \n
    \n response.data.employee}\n {...this.generateStateMappers({\n stateKeys: [\"user\"],\n loseEmphasisOnFill: true,\n })}\n />\n {stores && (\n {\n return {\n text: store.name,\n value: store.id,\n };\n })}\n {...this.generateStateMappers({\n stateKeys: [\"storeId\"],\n loseEmphasisOnFill: true,\n })}\n />\n )}\n
    \n
    \n \n \n
    \n {getMessage(\"leaves.filter.submit\")}\n \n {getMessage(\"leaves.filter.clearFiltersText\")}\n \n
    \n );\n }\n}\n","import React, { Component } from \"react\";\nimport Row from \"../../../../components/Table/Header\";\nimport { Cell } from \"../../../../components/Table\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport previous from \"./previous.png\";\nimport next from \"./next.png\";\nimport \"./style.css\";\nimport { formatTime, getDifferenceInHours } from \"../../../../lib/datetime\";\n\nclass AttendanceTable extends Component {\n constructor(props) {\n super(props);\n this.state = {\n index: 0,\n headers: props.headers.slice(0, 3),\n };\n this.goToPrevious = this.goToPrevious.bind(this);\n this.goToNext = this.goToNext.bind(this);\n }\n\n goToPrevious() {\n let headers = this.props.headers || [];\n let index = this.state.index || 0;\n this.setState({\n headers: headers.slice(index - 1, index + 2),\n index: index - 1,\n });\n }\n\n goToNext() {\n let headers = this.props.headers || [];\n let index = this.state.index || 0;\n this.setState({\n headers: headers.slice(index + 1, index + 4),\n index: index + 1,\n });\n }\n\n render() {\n let { headers, data, index, id } = this.props;\n return index === 0 ? (\n \n \n {getMessage(\"attendance.summary.table.employee.name\")}\n \n \"previous\"\n \n {this.state.headers}\n \n \"next\"\n \n \n {(data || []).map((employee) => {\n return (\n \n \n
    {employee.name}
    \n \n {employee?.designation?.name}\n \n
    \n {(this.state.headers || []).map(({ key }) => {\n return employee.attendance[key] ? (\n \n
    \n {getMessage(\n `attendance.summary.table.${employee.attendance[key].status}`\n )}\n
    \n {employee.attendance[key].inTime &&\n employee.attendance[key].expectedOut && (\n \n {formatTime(\n employee.attendance[key].inTime &&\n employee.attendance[key].inTime.split(\" \")[1]\n )}{\" \"}\n {getMessage(\"attendance.summary.table.to\")}{\" \"}\n {formatTime(\n employee.attendance[key].outTime &&\n employee.attendance[key].outTime.split(\" \")[1]\n )}\n \n )}\n {employee.attendance[key].inTime &&\n employee.attendance[key].outTime && (\n
    \n \n {getDifferenceInHours(\n employee.attendance[key].inTime,\n employee.attendance[key].outTime\n )}\n \n
    \n )}\n
    \n ) : (\n \n {getMessage(\"attendance.summary.table.na\")}\n \n );\n })}\n
    \n );\n })}\n
    \n ) : null;\n }\n}\n\nexport default AttendanceTable;\n","import React, { Component } from \"react\";\n\nimport ListingPage from \"../../../containers/ListingPage\";\n\nimport { Cell } from \"../../../components/Table\";\n\nimport { getMessage } from \"../../../lib/translator\";\nimport {\n getPrintableTime,\n formatDate,\n getPrintableDay,\n getMonthStartEnd,\n getDateInSQL,\n getStandradDateTime,\n utcToLocalTime,\n} from \"../../../lib/datetime\";\n\nimport { isExtensionEnabled } from \"../../../lib/auth\";\nimport API from \"../../../lib/api\";\n\nimport Filters from \"./Filters\";\nimport \"./style.css\";\nimport EmptyIcon from \"./attendance-empty.svg\";\nimport AttendanceSummaryTable from \"./AttendanceTable\";\n\nfunction getHeaderSet(data) {\n let headerSet = [];\n let maxKeysIndex = 0;\n let maxHeaderLength = 0;\n data.forEach((element, index, data) => {\n if (Object.keys(element.attendance).length > maxHeaderLength) {\n maxKeysIndex = index;\n maxHeaderLength = Object.keys(data[index].attendance).length;\n }\n });\n\n if (data.length) {\n for (const dateKey in data[maxKeysIndex].attendance) {\n if (headerSet.indexOf(dateKey) === -1) {\n headerSet.push(dateKey);\n headerSet.sort();\n }\n }\n }\n return headerSet;\n}\n\nconst tableProperties = (data) => {\n let headerSet = [];\n return {\n row: ({ id, name, designation, attendance, index }) => {\n const attendanceStatus = [];\n const headers = [];\n\n headerSet = getHeaderSet(data);\n\n for (let i = headerSet.length - 1; i >= 0; i--) {\n const key = headerSet[i];\n if (new Date(key) <= new Date()) {\n headers.push(\n \n
    \n {formatDate(key)}\n
    \n {getPrintableDay(key)}\n
    \n
    \n );\n if (attendance[key]) {\n attendanceStatus.push(\n \n
    \n {getMessage(\n `attendance.summary.table.${attendance[key].status}`\n )}\n
    \n {attendance[key].inTime && attendance[key].expectedOut && (\n \n {formatTime(attendance[key].inTime)}{\" \"}\n {getMessage(\"attendance.summary.table.to\")}{\" \"}\n {formatTime(attendance[key].outTime)}\n \n )}\n
    \n );\n } else {\n attendanceStatus.push(\n \n {getMessage(\"attendance.summary.table.na\")}\n \n );\n }\n }\n }\n\n if (headerSet.length) {\n return (\n \n );\n } else {\n return (\n
    \n \"attendance\"\n {getMessage(\"attendance.summary.empty.message\")}\n
    \n );\n }\n },\n };\n};\n\nconst EmptyState = {\n icon: EmptyIcon,\n message: getMessage(\"attendance.summary.empty.message\"),\n};\n\nconst formatTime = (t) => getPrintableTime(t).split(\", \")[1];\n\nclass AttendanceSummary extends Component {\n constructor(props) {\n super(props);\n this.state = {\n from: getMonthStartEnd()[0],\n to: getDateInSQL(new Date()),\n stores: [],\n tableBody: [],\n };\n }\n\n componentWillMount() {\n if (isExtensionEnabled(\"MultiStoreSupport\")) {\n this.storeApi = new API({\n url: \"/account-service/store\",\n });\n this.storeApi\n .get({ paginate: false })\n .then((response) => {\n if (response.data.store.length > 0) {\n const stores = response.data.store;\n this.setState({\n stores,\n });\n }\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n componentWillUnmount() {\n this.storeApi && this.storeApi.cancel();\n }\n\n getStandardTableData = (attendace) => {\n let modelData = {};\n Object.entries(attendace).forEach(([key, data]) => {\n if (\n data.status === \"ABSENT\" ||\n data.status === \"WEEKLY_OFF\" ||\n data.status === \"ON_LEAVE\"\n ) {\n modelData[key] = {};\n } else {\n const localInTime = getStandradDateTime(\n utcToLocalTime,\n data.inTime\n ).split(\" \");\n modelData[localInTime[0]] = {};\n }\n });\n\n Object.entries(attendace).forEach(([key, data]) => {\n if (\n data.status === \"ABSENT\" ||\n data.status === \"WEEKLY_OFF\" ||\n data.status === \"ON_LEAVE\"\n ) {\n modelData[key] = data;\n } else {\n const localInTime = getStandradDateTime(utcToLocalTime, data.inTime);\n data.inTime = localInTime;\n if (data.outTime) {\n const localOutTime = getStandradDateTime(\n utcToLocalTime,\n data.outTime\n );\n data.outTime = localOutTime;\n }\n modelData[localInTime.split(\" \")[0]] = data;\n }\n });\n return modelData;\n };\n\n getDisplayAttendance = (attendanceSummary) => {\n attendanceSummary.map((employee) => {\n employee.attendance = this.getStandardTableData(employee.attendance);\n return employee;\n });\n return attendanceSummary;\n };\n\n render() {\n const { from, to, tableBody, stores } = this.state;\n return (\n {\n response.data.attendancesummary = this.getDisplayAttendance(\n response.data.attendancesummary\n );\n this.setState({\n tableBody: tableProperties(response.data.attendancesummary),\n });\n return response.data.attendancesummary;\n },\n params: {\n from,\n to,\n },\n }}\n tableProperties={tableBody}\n filters={{\n component: Filters,\n forceShow: true,\n options: {\n stores,\n },\n transformSubmit: (fd) => {\n const data = Object.assign({}, fd);\n const from = getMonthStartEnd()[0];\n const to = getMonthStartEnd()[1];\n\n if (data.from === null) {\n this.setState({ from });\n data.from = from;\n }\n if (data.to === null) {\n this.setState({ to });\n data.to = to;\n }\n if (data.user) {\n data.userId = data.user.id;\n delete data.user;\n }\n\n return data;\n },\n }}\n />\n );\n }\n}\n\nexport default AttendanceSummary;\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Upload,\n VALIDATION_TYPES,\n} from \"../../../components/Form\";\nimport { IS_STAGING } from \"../../../config/app\";\nimport { getMessage } from \"../../../lib/translator\";\nimport API from \"../../../lib/api\";\nimport Loader from \"../../../components/Loader\";\nimport { Dialog } from \"../../../components/Popup\";\nimport { withRouter } from \"react-router-dom\";\nimport GoogleMaps, { Marker, SearchBox } from \"../../../components/GoogleMaps\";\nimport { getSession, saveSession, isExtensionEnabled } from \"../../../lib/auth\";\nimport { get } from \"../../../lib/storage\";\n\nclass BasicInformationForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.values = {\n organizationName: \"\",\n siteUrl: \"\",\n logo: \"\",\n latitude: \"\",\n longitude: \"\",\n address: \"\",\n };\n this.state.formError = \"\";\n this.state.showLoader = false;\n this.state.showSuccessDialog = false;\n this.state.showErrorDialog = false;\n this.isCustomUrl = false;\n this.state.mapMounted = false;\n this.onMapMounted = this.onMapMounted.bind(this);\n this.findLocation = this.findLocation.bind(this);\n this.changeUrlElement = this.changeUrlElement.bind(this);\n this.handleClose = this.handleClose.bind(this);\n this.closeDialogs = this.closeDialogs.bind(this);\n }\n\n onMapMounted(node) {\n this.mapRef = node;\n this.setState({\n mapMounted: true,\n });\n if (\n (!this.state.values.latitude || !this.state.values.longitude) &&\n \"geolocation\" in window.navigator\n ) {\n /* geolocation is available */\n window.navigator.geolocation.getCurrentPosition(({ coords }) => {\n this.setLocation(coords);\n });\n }\n }\n\n setLocation({ latitude, longitude }) {\n this.updateState([\"latitude\"], latitude);\n this.updateState([\"longitude\"], longitude);\n }\n\n findLocation() {\n if (this.searchBoxRef) {\n const places = this.searchBoxRef.getPlaces();\n const bounds = new window.google.maps.LatLngBounds();\n if (places.length) {\n const place = places[0];\n this.setLocation({\n latitude: place.geometry.location.lat(),\n longitude: place.geometry.location.lng(),\n });\n this.updateState([\"address\"], place.formatted_address);\n }\n // Fit location area into the map\n places.forEach((place) => {\n if (place.geometry.viewport) {\n bounds.union(place.geometry.viewport);\n } else {\n bounds.extend(place.geometry.location);\n }\n });\n this.mapRef.fitBounds(bounds);\n }\n }\n\n handleClose() {\n this.props.history.goBack();\n }\n\n componentDidMount() {\n this.setState({\n showLoader: true,\n });\n this.api = new API({ url: \"/account-service/config/basic\" });\n this.api\n .get()\n .then((basicResponse) => {\n const basic = basicResponse.data.config.basic;\n let siteUrl = basic.siteUrl;\n siteUrl =\n siteUrl &&\n !IS_STAGING &&\n siteUrl.indexOf(\".staging.zopsmart.com\") !== -1\n ? siteUrl.replace(\".staging.\", \".\")\n : siteUrl;\n if (\n siteUrl &&\n siteUrl.indexOf(\".staging.zopsmart.com\") === -1 &&\n siteUrl.indexOf(\".zopsmart.com\") !== -1 &&\n IS_STAGING\n ) {\n let index = siteUrl.indexOf(\".zopsmart.com\");\n siteUrl = siteUrl.substr(0, index);\n siteUrl += \".staging.zopsmart.com\";\n }\n if (siteUrl) {\n let index = IS_STAGING\n ? siteUrl.indexOf(\".staging.zopsmart.com\")\n : siteUrl.indexOf(\".zopsmart.com\");\n if (index !== -1) {\n siteUrl = siteUrl.substr(0, index);\n } else {\n this.isCustomUrl = true;\n }\n }\n const logo = basic.logo ? basic.logo : \"\";\n let values = {\n organizationName: basic.organizationName,\n logo: logo,\n siteUrl: siteUrl,\n id: basic.id,\n supportEmail: basic.supportEmail,\n supportPhone: basic.supportPhone && basic.supportPhone.toString(),\n address: basic.address,\n latitude: Number(basic.latitude),\n longitude: Number(basic.longitude),\n };\n this.setState({\n values,\n });\n })\n .then(() => {\n this.configApi = new API({ url: \"/config-service/config/basic\" });\n this.configApi\n .get()\n .then((response) => {\n let basic = response.data.basic;\n let values = JSON.parse(JSON.stringify(this.state.values));\n values.favicon = basic.favicon;\n this.setState({\n values,\n showLoader: false,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n componentWillUnmount() {\n this.api && this.api.cancel();\n }\n\n handleSubmit(data) {\n const basicParams = [\n \"logo\",\n \"organizationName\",\n \"siteUrl\",\n \"address\",\n \"latitude\",\n \"longitude\",\n \"supportEmail\",\n \"supportPhone\",\n ];\n const basicInfo = new API({ url: \"/account-service/config/basic\" });\n if (!data.logo) {\n delete data[\"logo\"];\n }\n let params = {};\n params[\"basic\"] = {};\n for (let field in data) {\n if (basicParams.indexOf(field) >= 0) {\n params[\"basic\"][field] = data[field] || \"\";\n if (field === \"siteUrl\" && !this.isCustomUrl) {\n params[\"basic\"][field] =\n data[field] +\n (IS_STAGING ? \".staging.zopsmart.com\" : \".zopsmart.com\");\n }\n }\n }\n\n return basicInfo\n .put(params)\n .then(\n (basicResponse) => {\n const orgSession = Object.assign(getSession().organization, {\n name: basicResponse.data.config.basic.organizationName,\n domain: basicResponse.data.config.basic.siteUrl,\n });\n saveSession({\n organization: orgSession,\n });\n this.setState({ formError: \"\", showSuccessDialog: true });\n },\n (error) => {\n this.setState({ formError: error.message, showErrorDialog: true });\n if (error.code === 401) {\n throw error;\n }\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n changeUrlElement(isCustomUrl) {\n return (e) => {\n e && e.preventDefault();\n this.isCustomUrl = isCustomUrl;\n this.forceUpdate();\n };\n }\n\n onSubmit(data) {\n this.setState({\n submitting: true,\n });\n this.handleSubmit(data).then(() => {\n let configApi = new API({ url: \"/config-service/config\" });\n let params = {};\n params[\"basic\"] = {};\n params[\"basic\"][\"favicon\"] = data.favicon;\n configApi\n .post(params)\n .then((response) => {})\n .catch((error) => {\n console.error(error);\n });\n this.setState({ submitting: false });\n });\n }\n\n closeDialogs() {\n this.setState({\n showSuccessDialog: false,\n showErrorDialog: false,\n });\n }\n\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n const MultiStoreEnabled = isExtensionEnabled(\"MultiStoreSupport\");\n let isHttpsEnabled = JSON.parse(get(\"organization\")).httpsEnabled;\n return (\n
    \n {this.state.formError && (\n
    \n {getMessage(`error.${this.state.formError}`)}\n
    \n )}\n \n \n {this.state.showLoader ? (\n \n ) : (\n
    \n \n {getMessage(\"basicInfo.storename.description\")}\n \n \n {this.isCustomUrl /* TODO: Translate */ ? (\n [\n \n {getMessage(\"basicInfo.customDomain.description\", {\n domain: \"stores.zopsmart.com\",\n })}\n ,\n
    \n {\" \"}\n Or use{\" \"}\n \n {IS_STAGING ? `staging.zopsmart.com` : `zopsmart.com`}\n {\" \"}\n subdomain\n
    ,\n ]\n ) : (\n \n Your store URL is provided free of cost at smartstore.express.\n If you already own a domain,{\" \"}\n \n use custom domain\n \n \n )}\n \n\n \n {getMessage(\"basicInfo.uploadImage.description\")}\n \n \n {getMessage(\"basicInfo.uploadFavicon.description\")}\n \n {!MultiStoreEnabled && (\n
    \n {\n this.registerValidation([\"coordinates\"], error);\n }}\n emphasize={\n !this.getState([\"latitude\"]) ||\n !this.getState([\"longitude\"])\n }\n showErrors={this.validationScenarios.validateOnSubmit()}\n siblings={{\n after: (\n \n {this.state.mapMounted ? (\n {\n this.searchBoxRef = node;\n }}\n controlPosition={\n window.google.maps.ControlPosition.TOP_LEFT\n }\n onPlacesChanged={this.findLocation}\n >\n \n \n ) : null}\n {\n this.setLocation({\n latitude: e.latLng.lat(),\n longitude: e.latLng.lng(),\n });\n }}\n />\n \n ),\n }}\n validationStrings={{\n valueMissing: getMessage(\n \"basicInfo.form.location.requiredMessage\"\n ),\n }}\n />\n
    \n )}\n
    \n \n {getMessage(\"basicInfo.submit.text\")}\n \n \n {getMessage(\"basicInfo.cancel.text\")}\n \n
    \n \n )}\n
    \n );\n }\n}\n\nexport default withRouter(BasicInformationForm);\n","import React, { Component } from \"react\";\nimport \"./style.css\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport BasicInformationForm from \"./form\";\nimport { getMessage } from \"../../../lib/translator\";\n\nexport default class BasicInformation extends Component {\n render() {\n return (\n \n

    {getMessage(\"basicInfo.heading\")}

    \n \n \n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Textarea,\n VALIDATION_TYPES,\n} from \"../../../components/Form\";\nimport { getMessage } from \"../../../lib/translator\";\nimport API from \"../../../lib/api\";\nimport Loader from \"../../../components/Loader\";\n\nclass AnalyticsForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.values = {\n gaAccount: \"\",\n conversionTag: \"\",\n };\n this.state.formError = \"\";\n this.state.showLoader = false;\n this.hideLoader = this.hideLoader.bind(this);\n this.showLoader = this.showLoader.bind(this);\n }\n\n showLoader() {\n this.setState({\n showLoader: true,\n });\n }\n\n hideLoader() {\n this.setState({\n showLoader: false,\n });\n }\n\n componentDidMount() {\n this.setState({\n showLoader: true,\n });\n const api = new API({ url: \"/account-service/config/analytics\" });\n api\n .get()\n .then(\n (response) => {\n if (response.status === \"SUCCESS\") {\n const analytics = response.data.config.analytics;\n const values = {\n gaAccount: analytics.gaAccount,\n conversionTag: analytics.conversionTag,\n };\n this.setState({ values, showLoader: false });\n }\n },\n (error) => {\n this.setState({ formError: error.message, showLoader: false });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n handleSubmit(data) {\n const api = new API({ url: \"/account-service/config/analytics\" });\n let params = {};\n params[\"analytics\"] = {};\n for (let field in data) {\n params[\"analytics\"][field] = data[field];\n }\n return api\n .put(params)\n .then(\n (response) => {},\n (error) => {\n this.setState({ formError: error.message });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n onSubmit(data) {\n this.setState({\n submitting: true,\n });\n this.handleSubmit(data)\n .then(() => {\n this.setState({ submitting: false });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n render() {\n const { SubmitButton, CancelButton } = this.buttons;\n const { Form } = this.components;\n return (\n
    \n {this.state.formError && (\n
    {this.state.formError}
    \n )}\n {this.state.showLoader ? (\n \n ) : (\n
    \n \n {getMessage(\"analytics.tracking.description\")}\n \n\n //code for conversion pixel \"\n name=\"pixel\"\n value={this.getState([\"pixel\"])}\n onChange={(value, error) => {\n this.updateState([\"conversionTag\"], value);\n }}\n onValidation={(error) => {\n this.registerValidation([\"conversionTag\"], error);\n }}\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n }}\n >\n {getMessage(\"analytics.conversionPixel.description\")}\n \n
    \n \n {getMessage(\"analytics.submit.text\")}\n \n \n {getMessage(\"analytics.cancel.text\")}\n \n
    \n \n )}\n
    \n );\n }\n}\n\nexport default AnalyticsForm;\n","import React from \"react\";\nimport \"./style.css\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage/index\";\nimport AnalyticsForm from \"./form\";\nimport { getMessage } from \"../../../lib/translator\";\n\nexport default function Analytics(props) {\n return (\n \n

    {getMessage(\"analytics.heading\")}

    \n \n \n );\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Checkbox,\n Textarea,\n Phone,\n VALIDATION_TYPES,\n} from \"../../../components/Form\";\nimport API from \"../../../lib/api\";\nimport { getMessage } from \"../../../lib/translator\";\nimport Loader from \"../../../components/Loader\";\nimport { withRouter } from \"react-router-dom\";\nimport { Dialog } from \"../../../components/Popup\";\nimport Table, { Row } from \"../../../components/Table\";\nimport addIcon from \"./add-button.svg\";\nimport deleteIcon from \"./delete.svg\";\n\nconst AccountList = (props) => {\n const { accounts, toggleAccountAction } = props;\n return (\n \n {(accounts || []).map((account, index) => {\n let actionIcon = account.isAdd ? (\n \"add\"\n ) : (\n \"delete\"\n );\n return (\n \n
    \n \n {getMessage(`media.select.${account.name}`)}\n \n toggleAccountAction(account.name)}\n >\n {actionIcon}\n \n
    \n
    \n );\n })}\n
    \n );\n};\n\nclass SocialMediaForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.values = {\n facebookHandle: \"\",\n twitterHandle: \"\",\n hasFacebookLogin: false,\n hasTwitterLogin: false,\n iosAppLink: \"\",\n androidAppLink: \"\",\n };\n this.state.formError = \"\";\n this.state.showLoader = false;\n this.state.showSuccessDialog = false;\n this.state.showErrorDialog = false;\n this.state.showAccountList = false;\n\n this.toggleCheckboxChange = this.toggleCheckboxChange.bind(this);\n this.handleClose = this.handleClose.bind(this);\n this.closeDialogs = this.closeDialogs.bind(this);\n this.handleClickOutside = this.handleClickOutside.bind(this);\n this.toggleAccountAction = this.toggleAccountAction.bind(this);\n this.handleWhatsappToggle = this.handleWhatsappToggle.bind(this);\n }\n\n closeDialogs() {\n this.setState({\n showSuccessDialog: false,\n showErrorDialog: false,\n });\n }\n\n handleClose() {\n this.props.history.goBack();\n }\n\n handleClickOutside(event) {\n if (![\"select\", \"select-store\"].includes(event.target.id)) {\n this.setState({ showAccountList: false, showStoreList: false });\n }\n }\n\n toggleAccountAction(name) {\n let accounts = this.state.accounts;\n let accountsArray =\n accounts &&\n accounts.map((account) => {\n if (account.name === name) {\n account.isAdd = !account.isAdd;\n }\n return account;\n });\n let appLinks = this.state.appLinks;\n let appLinksArray =\n appLinks &&\n appLinks.map((appStore) => {\n if (appStore.name === name) {\n appStore.isAdd = !appStore.isAdd;\n }\n return appStore;\n });\n this.setState({\n accounts: accountsArray,\n appLinks: appLinksArray,\n });\n }\n\n componentDidMount() {\n this.setState({\n showLoader: true,\n });\n this.socialApi = new API({ url: \"/account-service/config/social\" });\n this.basicInfoApi = new API({ url: \"/account-service/config/basic\" });\n this.appStoreApi = new API({ url: \"/config-service/config/basic\" });\n\n Promise.all([\n this.socialApi.get(),\n this.basicInfoApi.get(),\n this.appStoreApi.get(),\n ])\n .then(([socialResponse, basicInfoResponse, appStoreResponse]) => {\n if (\n socialResponse.status === \"SUCCESS\" &&\n basicInfoResponse.status === \"SUCCESS\" &&\n appStoreResponse.status === \"SUCCESS\"\n ) {\n const social = socialResponse.data.config.social;\n const basic = basicInfoResponse.data.config.basic;\n const appStore = appStoreResponse.data.basic;\n const values = {\n facebookHandle: social.facebookHandle,\n twitterHandle: social.twitterHandle,\n hasFacebookLogin: social.hasFacebookLogin\n ? social.hasFacebookLogin\n : false,\n hasTwitterLogin: social.hasTwitterLogin\n ? social.hasTwitterLogin\n : false,\n supportEmail: basic.supportEmail,\n supportPhone: basic.supportPhone && basic.supportPhone.toString(),\n iosAppLink: appStore.iosAppLink,\n androidAppLink: appStore.androidAppLink,\n whatsappSupportEnabled: appStore.whatsappSupportEnabled,\n whatsappSupportPhone: appStore.whatsappSupportPhone\n ? `+${appStore.whatsappSupportPhone}`\n : \"\",\n whatsappSupportEnquiryText: appStore.whatsappSupportEnquiryText,\n };\n this.setState({\n values,\n showLoader: false,\n appLinks: this.getAppLinks(values),\n accounts: this.getSocialMediaAccounts(values),\n });\n }\n })\n .catch((error) => {\n console.error(error);\n });\n document.addEventListener(\"click\", this.handleClickOutside, false);\n }\n\n componentWillUnmount() {\n this.socialApi && this.socialApi.cancel();\n document.removeEventListener(\"click\", this.handleClickOutside, false);\n }\n\n handleWhatsappToggle(value) {\n this.updateState([\"whatsappSupportEnabled\"], value);\n const validations = { ...this.state.validations };\n if (value && !this.state.values.whatsappSupportPhone) {\n validations.whatsappSupportPhone = {\n valid: false,\n valueMissing: getMessage(\"input.requiredMessage\"),\n };\n } else {\n validations.whatsappSupportPhone = { valid: true, valueMissing: false };\n }\n this.setState({ validations });\n }\n\n handleSubmit(data) {\n let socialApi = new API({ url: \"/account-service/config/social\" });\n let basicInfoApi = new API({ url: \"/account-service/config/basic\" });\n let appLinkApi = new API({ url: \"/config-service/config\" });\n\n let socialParams = {};\n let basicParams = {};\n let appLinkParams = {};\n\n const basicParamsArray = [\"supportEmail\", \"supportPhone\"];\n const appLinksKeys = [\n \"iosAppLink\",\n \"androidAppLink\",\n \"whatsappSupportEnabled\",\n \"whatsappSupportPhone\",\n \"whatsappSupportEnquiryText\",\n ];\n socialParams[\"social\"] = {};\n basicParams[\"basic\"] = {};\n appLinkParams[\"basic\"] = {};\n\n for (let field in data) {\n if (!basicParamsArray.includes(field)) {\n if (!appLinksKeys.includes(field)) {\n socialParams[\"social\"][field] = data[field];\n // Removed deleted keys from payload\n this.state.accounts.forEach((account) => {\n if (field.toLowerCase().includes(account.name) && account.isAdd) {\n if (typeof data[field] === \"boolean\") {\n socialParams[\"social\"][field] = false;\n } else {\n socialParams[\"social\"][field] = \"\";\n }\n }\n });\n } else {\n appLinkParams[\"basic\"][field] = data[field];\n if (field === \"whatsappSupportPhone\") {\n appLinkParams[\"basic\"][field] = data[field]\n ? data[field].slice(1)\n : \"\";\n }\n // Removed deleted keys from payload\n this.state.appLinks.forEach((account) => {\n if (field === account.name && account.isAdd) {\n appLinkParams[\"basic\"][field] = \"\";\n }\n });\n }\n } else {\n basicParams[\"basic\"][field] = data[field];\n }\n }\n return Promise.all([\n socialApi.put(socialParams),\n basicInfoApi.put(basicParams),\n appLinkApi.post(appLinkParams),\n ])\n .then(\n ([socialResponse, basicInfoResponse, storeInfoResponse]) => {\n this.setState({ formError: \"\", showSuccessDialog: true });\n },\n (error) => {\n this.setState({ formError: error.message, showErrorDialog: true });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n onSubmit(data) {\n if (\n this.state.values.whatsappSupportEnabled &&\n !this.state.values.whatsappSupportPhone\n ) {\n return;\n }\n this.setState({\n submitting: true,\n });\n this.handleSubmit(data).then(() => {\n this.setState({ submitting: false });\n });\n }\n\n toggleCheckboxChange(e) {\n const stateName = e.target.value;\n var values = { ...this.state.values };\n values[stateName] = !values[stateName];\n this.setState({ values });\n }\n\n getSocialMediaAccounts(values) {\n let facebook = {\n name: \"facebook\",\n isAdd: !values.facebookHandle,\n };\n let twitter = {\n name: \"twitter\",\n isAdd: !values.twitterHandle,\n };\n\n return [facebook, twitter];\n }\n\n getAppLinks(values) {\n let ios = { name: \"iosAppLink\", isAdd: !values.iosAppLink };\n let android = { name: \"androidAppLink\", isAdd: !values.androidAppLink };\n\n return [ios, android];\n }\n\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n const { accounts, showAccountList, appLinks, showStoreList, values } =\n this.state;\n const isWhatsappphoneRequired = Boolean(\n values.whatsappSupportEnabled && !values.whatsappSupportPhone\n );\n return (\n
    \n \n \n {this.state.showLoader ? (\n \n ) : (\n
    \n \n\n \n (\n \n )}\n />\n \n \n {\n this.setState({ showAccountList: true });\n event.stopPropagation();\n event.preventDefault();\n }}\n >\n {getMessage(\"socialMedia.accounts.placeholder\")}\n {showAccountList && (\n \n )}\n
    \n {accounts && !accounts.find((o) => o.name === \"facebook\").isAdd && (\n (\n {\n this.updateState([\"hasFacebookLogin\"], value);\n }}\n className=\"checkLabel\"\n />\n )}\n value={this.getState([\"facebookHandle\"])}\n onChange={(value, error) => {\n this.updateState([\"facebookHandle\"], value);\n }}\n >\n {getMessage(\"socialMedia.facebook.description\")}\n \n )}\n {accounts && !accounts.find((o) => o.name === \"twitter\").isAdd && (\n (\n {\n this.updateState([\"hasTwitterLogin\"], value);\n }}\n className=\"checkLabel\"\n />\n )}\n value={this.getState([\"twitterHandle\"])}\n onChange={(value, error) => {\n this.updateState([\"twitterHandle\"], value);\n }}\n >\n {getMessage(\"socialMedia.twitter.description\")}\n \n )}\n \n {\n this.setState({ showStoreList: !this.state.showStoreList });\n event.stopPropagation();\n event.preventDefault();\n }}\n >\n {getMessage(\"store.accounts.placeholder\")}\n {showStoreList && (\n \n )}\n \n {appLinks &&\n !appLinks.find((o) => o.name === \"iosAppLink\").isAdd && (\n {\n this.updateState([\"iosAppLink\"], value);\n }}\n >\n {getMessage(\"store.ios.description\")}\n \n )}\n {appLinks &&\n !appLinks.find((o) => o.name === \"androidAppLink\").isAdd && (\n {\n this.updateState([\"androidAppLink\"], value);\n }}\n >\n {getMessage(\"store.android.description\")}\n \n )}\n
    \n \n {getMessage(\"socialMedia.submit.text\")}\n \n \n {getMessage(\"socialMedia.cancel.text\")}\n \n
    \n \n )}\n \n );\n }\n}\n\nexport default withRouter(SocialMediaForm);\n","import React from \"react\";\nimport \"./style.css\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport SocialMediaForm from \"./form\";\nimport { getMessage } from \"../../../lib/translator\";\n\nexport default function SocialMedia(props) {\n return (\n \n

    {getMessage(\"contactDetails.heading\")}

    \n \n \n );\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Dialog } from \"../../../../../components/Popup\";\n\nimport { getMessage } from \"../../../../../lib/translator\";\n\nimport \"./style.css\";\n\nconst ActionButtons = ({ onSubmit, onCancel, error, disabled, setError }) => {\n return ReactDOM.createPortal(\n
    \n setError()}\n />\n
    \n \n \n {getMessage(\"extensions.deliveryArea.save\")}\n \n
    \n
    ,\n document.getElementById(\"delivery-area-form-action-btn\")\n );\n};\n\nexport default ActionButtons;\n","import React from \"react\";\nimport { Input } from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nexport const DeliveryFeeFormulaForm = ({ value = {}, onChange }) => {\n const inputData = [\n {\n placeholder: \"Additional fixed cost\",\n className: \"delivery-fee edit-section\",\n name: \"DeliveryFee\",\n key: \"deliveryFee\",\n },\n {\n placeholder: \"Lower weight limit\",\n className: \"lower-weight-limit edit-section\",\n name: \"LowerWeightLimit\",\n key: \"lowerWeightLimit\",\n },\n {\n placeholder: \"Rate per weight unit\",\n className: \"rate-per-weight-unit edit-section\",\n name: \"RatePerWeightUnit\",\n key: \"ratePerWeightUnit\",\n },\n {\n placeholder: \"Charge percentage\",\n className: \"charge-percentage edit-section\",\n name: \"ChargePercentage\",\n key: \"chargePercentage\",\n },\n ];\n const handleChange = (val, key) => {\n onChange({ ...value, [key]: val });\n };\n return (\n <>\n
    \n
    \n {getMessage(\"delivery.fee.formula.heading\")}\n
    \n

    \n {getMessage(\"delivery.fee.formula.left.text\")}{\" \"}\n {getMessage(\"delivery.fee.formula.right.text\")}\n

    \n
    \n {inputData.map((item) => {\n return (\n handleChange(value, item.key)}\n />\n );\n })}\n \n );\n};","import React, { Component, Fragment, useState, useEffect, useRef } from \"react\";\nimport { Input, Select } from \"../../../../../components/Form\";\nimport ActionButtons from \"../ActionButtons\";\nimport { Dialog } from \"../../../../../components/Popup\";\nimport { getStores } from \"../../../../../lib/auth\";\n\nimport API from \"../../../../../lib/api\";\nimport { getCurrency } from \"../../../../../lib/userDetails\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport { getSingularPluralForm } from \"../../../../../lib/commonlyused\";\nimport deleteIcon from \"../icon-dustbin.svg\";\nimport emptyIcon from \"../../KMLUpload/trip-upload.svg\";\nimport \"./style.css\";\nimport { DeliveryFeeFormulaForm } from \"..\";\n\nconst getLatlngFromPincode = (pincodes = []) => {\n let geocoder = new window.google.maps.Geocoder();\n let promises = [];\n pincodes &&\n pincodes.forEach(({ pincode }) => {\n let promise = new Promise((resolve, reject) => {\n geocoder.geocode({ address: `${pincode}` }, (results, status) => {\n if (status === window.google.maps.GeocoderStatus.OK) {\n const location = results[0].geometry.location;\n const lat = location.lat();\n const lng = location.lng();\n resolve({ lat, lng });\n }\n });\n });\n promises.push(promise);\n });\n\n return Promise.all(promises).then((locations) => locations);\n};\n\nconst preventDefaultBehavior = (e) => {\n e && e.preventDefault && e.preventDefault();\n e && e.stopPropagation && e.stopPropagation();\n};\n\nconst PinCodeList = ({\n pincodes = [],\n editable,\n onDelete,\n onAddPincode,\n onDeleteZone,\n}) => {\n const [showPincodeInput, setShowPincodeInput] = useState(false);\n const [tempPincode, setTempPincode] = useState(\"\");\n const [showDeletePopup, setShowDeletePopup] = useState(false);\n\n const createHandleDelete = (index) => (e) => {\n preventDefaultBehavior(e);\n onDelete(index);\n };\n\n const handleAddPincode = (e) => {\n preventDefaultBehavior(e);\n onAddPincode(\"\");\n setShowPincodeInput(true);\n };\n\n const handleChange = (value) => {\n setTempPincode(value);\n };\n\n const handleEnter = (e) => {\n if (e.which === 13) {\n preventDefaultBehavior(e);\n handleSave();\n }\n };\n\n const handleSave = (e) => {\n if (e) {\n preventDefaultBehavior(e);\n }\n onAddPincode(tempPincode);\n setShowPincodeInput(false);\n setTempPincode(\"\");\n };\n\n const handleCancel = (e) => {\n preventDefaultBehavior(e);\n setShowPincodeInput(false);\n onDelete(pincodes?.length - 1);\n setTempPincode(\"\");\n };\n\n const handleShowDeletePopup = (e) => {\n preventDefaultBehavior(e);\n setShowDeletePopup(true);\n };\n\n const hanldeDeleteZone = (e) => {\n preventDefaultBehavior(e);\n setShowDeletePopup(false);\n onDeleteZone();\n };\n\n return (\n \n {pincodes?.map(({ pincode }, index, arr) => (\n \n {showPincodeInput && index === arr.length - 1 ? (\n \n ) : (\n {pincode.toString().padStart(6, \"0\")}\n )}\n {editable && !(showPincodeInput && index === arr.length - 1) && (\n \n )}\n \n ))}\n {editable &&\n (!showPincodeInput ? (\n \n \n \n Delete Group\n \n \n ) : (\n \n \n + Add\n \n \n \n ))}\n {showDeletePopup && (\n setShowDeletePopup(false)}\n information={getMessage(\"extensions.deliveryArea.delete.warning\")}\n closeText=\"Cancel\"\n okText=\"Delete\"\n onOk={hanldeDeleteZone}\n />\n )}\n \n );\n};\n\nconst PinCodesDisplay = (props) => {\n const { pincodeGroups } = props;\n const pincodeDisplayRef = useRef();\n const [expanded, setExpanded] = useState(false);\n const [isContentOverflown, setIsContentOverflown] = useState(false);\n const [containerHeight, setContainerHeight] = useState();\n\n useEffect(() => {\n if (pincodeDisplayRef) {\n const domEl = pincodeDisplayRef.current;\n const containerHeight = domEl.clientHeight;\n const contentHeight = domEl.querySelector(\n \".pincode-group-list-content\"\n ).offsetHeight;\n if (contentHeight > containerHeight) {\n setIsContentOverflown(true);\n setContainerHeight(contentHeight + 10); // Adding 10 to match margins\n }\n }\n }, [pincodeGroups]);\n\n const toggleExpand = (e) => {\n e && e.preventDefault && e.preventDefault();\n setExpanded(!expanded);\n };\n\n return (\n
    \n \n
    \n {pincodeGroups.map((group, index) => {\n return (\n \n
    \n \n {group.name\n ? group.name\n : getMessage(\"extensions.deliveryArea.zone.unnamed\")}\n \n {`${getCurrency().symbol} ${\n group.area.deliveryFee\n }`}\n
    \n
    \n \n {getSingularPluralForm(\n group.area.pincodes?.length,\n \"zipcode\"\n )}\n \n \n {getMessage(\"extensions.deliveryArea.deliveryFee\")}\n \n
    \n
    \n \n
    \n
    \n );\n })}\n
    \n \n {isContentOverflown && (\n \n )}\n \n );\n};\n\nconst AddForm = ({ value = {}, onChange, onDeleteZone, setNewLocation }) => {\n const [continuedAddition, setContinuedAddition] = useState(false);\n const [showError, setShowError] = useState(false);\n\n const handleChange = (newValue) => {\n onChange({ ...value, ...newValue });\n };\n\n const handleDeletePincode = (index) => {\n const newPincodes = value.pincodes?.filter((_, i) => i !== index);\n handleChange({ pincodes: newPincodes });\n };\n\n const handleSubmit = (e) => {\n e && e.preventDefault();\n if (!value.storeId) {\n setShowError(true);\n } else {\n setContinuedAddition(true);\n }\n };\n\n const handleAddPincode = (pincode) => {\n const newPincode = { pincode };\n let oldPincodes;\n\n if (pincode) {\n oldPincodes = value.pincodes;\n oldPincodes = oldPincodes?.slice(0, oldPincodes?.length - 1);\n } else {\n oldPincodes = value.pincodes?.filter(({ pincode }) => Boolean(pincode));\n }\n\n const newPincodes = oldPincodes?.concat(newPincode);\n\n handleChange({ pincodes: newPincodes });\n };\n\n useEffect(() => {\n if (continuedAddition && value.pincodes) {\n getLatlngFromPincode(value.pincodes).then((latlng) =>\n setNewLocation(latlng)\n );\n }\n\n if (value.pincodes && !value.pincodes?.length) {\n setContinuedAddition(false);\n }\n }, [continuedAddition, value.pincodes, setNewLocation]);\n\n const allStores = getStores()?.filter((store) => store.hasDeliveryHub) || [];\n const storeOptions = [\n ...allStores.map((store) => ({ text: store.name, value: store.id })),\n ];\n\n return (\n
    \n {\n setShowError(false);\n handleChange({ storeId: Number(storeId) });\n }}\n />\n {showError && (\n \n {getMessage(\"product.selectStore\")}\n \n )}\n handleChange({ name })}\n />\n \n {!continuedAddition ? (\n \n handleChange({ pincodes: [{ pincode }] })}\n value={value.pincodes && value.pincodes[0]?.pincode}\n required\n />\n \n \n ) : (\n
    \n Zip codes\n \n
    \n )}\n \n );\n};\n\nconst EditForm = ({\n value = {},\n onChange,\n pincodeGroup,\n action,\n onDeleteZone,\n setNewLocation,\n}) => {\n const [selectedGroup, setSelectedGroup] = useState();\n const groups =\n pincodeGroup &&\n pincodeGroup.map(({ name, id }) => ({\n text: name || getMessage(\"extensions.deliveryArea.zone.unnamed\"),\n value: id,\n }));\n const isEditable = action === \"add\" || selectedGroup;\n\n const handleSelectGroup = (groupId) => {\n const groupData = pincodeGroup.filter(({ id }) => id === Number(groupId));\n setSelectedGroup(groupId);\n onChange(groupData[0], true);\n };\n\n const handleChange = (newValue, replace) => {\n if (replace) {\n onChange({ ...newValue });\n } else {\n onChange({ ...value, ...newValue });\n }\n };\n\n const handleAddPincode = (pincode) => {\n const newPincode = { pincode };\n let oldPincodes;\n\n if (pincode) {\n oldPincodes = value.area.pincodes;\n oldPincodes = oldPincodes?.slice(0, oldPincodes?.length - 1);\n } else {\n oldPincodes = value.area.pincodes?.filter(({ pincode }) =>\n Boolean(pincode)\n );\n }\n\n const newPincodes = oldPincodes?.concat(newPincode);\n\n handleChange({\n area: {\n ...value.area,\n pincodes: newPincodes,\n },\n });\n };\n\n const handleDeletePincode = (index) => {\n const newPincodes = value.area.pincodes?.filter((_, i) => i !== index);\n handleChange({\n area: {\n ...value.area,\n pincodes: newPincodes,\n },\n });\n };\n\n useEffect(() => {\n if (value.area?.pincodes) {\n getLatlngFromPincode(value.area.pincodes).then((latlng) =>\n setNewLocation(latlng)\n );\n }\n }, [value.area, setNewLocation]);\n\n return (\n \n {action === \"edit\" && (\n \n )}\n handleChange({ name })}\n readOnly={!isEditable}\n />\n \n {isEditable && (\n
    \n Zip codes\n \n
    \n )}\n
    \n );\n};\nexport default class PincodeFromComponent extends Component {\n constructor(props) {\n super(props);\n this.state = {\n editing: false,\n data: {},\n };\n this.handlePincodeGroupAddEdit = this.handlePincodeGroupAddEdit.bind(this);\n this.toggleAction = this.toggleAction.bind(this);\n this.handleToggleExpand = this.handleToggleExpand.bind(this);\n this.handleDeleteZone = this.handleDeleteZone.bind(this);\n this.handleDataChange = this.handleDataChange.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.setError = this.setError.bind(this);\n }\n\n handlePincodeGroupAddEdit() {\n const { action, data } = this.state;\n const { storeId, fetchAndUpdate, toggleStoreError, setNewLocation } =\n this.props;\n\n if (!storeId) {\n toggleStoreError();\n return;\n }\n\n // unseting the existing error by passing empty param\n this.setError();\n\n let params, requestMethod, url;\n\n if (action === \"add\") {\n url = \"/logistics-service/delivery-area\";\n requestMethod = \"post\";\n params = { ...data, configType: \"PINCODE\" };\n } else if (action === \"edit\") {\n url = `/logistics-service/delivery-area/${data.id}`;\n requestMethod = \"put\";\n params = {\n configType: data.configType,\n name: data.name,\n pincodes: data.area.pincodes,\n deliveryFee: data?.deliveryFee,\n lowerWeightLimit: data?.lowerWeightLimit,\n ratePerWeightUnit: data?.ratePerWeightUnit,\n chargePercentage: data.chargePercentage,\n };\n }\n params.storeId = Number(storeId);\n\n const api = new API({ url });\n api[requestMethod](params)\n .then(() => fetchAndUpdate(storeId))\n .then(() => {\n this.setAction();\n this.handleDataChange({});\n setNewLocation([]);\n })\n .catch((error) => {\n this.setError(error.message);\n console.error(error);\n });\n }\n\n toggleAction(nextAction) {\n return (e) => {\n e && e.preventDefault && e.preventDefault();\n const { action } = this.state;\n if (action === nextAction) {\n this.setAction(undefined);\n } else {\n this.setAction(nextAction);\n }\n };\n }\n\n setAction(action) {\n this.setState({ action });\n }\n\n setError(error) {\n this.setState({ error });\n }\n\n handleDataChange(data) {\n this.setState({ data });\n }\n\n handleToggleExpand() {\n this.props.handleOpenClose(\"pincode\");\n this.setAction(undefined);\n this.setState({ data: {} });\n this.props.setNewLocation([]);\n }\n\n handleDeleteZone() {\n const { action, data } = this.state;\n const { storeId, fetchAndUpdate, setNewLocation } = this.props;\n\n if (action === \"add\") {\n this.setState({ data: {} });\n this.setAction(undefined);\n } else if (action === \"edit\") {\n const api = new API({\n url: `/logistics-service/delivery-area/${data.id}`,\n });\n api\n .delete({ id: data.id })\n .then(() => fetchAndUpdate(storeId))\n .then(() => {\n this.setAction(undefined);\n this.setState({ data: {} });\n setNewLocation([]);\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n\n handleCancel() {\n this.setError();\n this.setAction();\n this.handleDataChange({});\n this.props.setNewLocation([]);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.active !== this.props.active && !this.props.active) {\n this.handleCancel();\n }\n\n if (Boolean(prevState.action) ^ Boolean(this.state.action)) {\n this.props.changeEditMode();\n }\n }\n\n render() {\n const { action, data, error } = this.state;\n const { active, pincodeArea = [], setNewLocation, editing } = this.props;\n const hasPincodesSet = Boolean(pincodeArea && pincodeArea.length);\n\n const FormComp = action === \"add\" ? AddForm : EditForm;\n const hidden = editing && !action;\n return (\n \n \n {getMessage(\"extensions.deliveryArea.pincodes.heading\")}\n \n {!active && (\n \n {hasPincodesSet\n ? `${getSingularPluralForm(pincodeArea.length, \"zone\")} covered`\n : \"No zone defined\"}\n \n )}\n \n {active ? \"\\u2013\" : \"+\"}\n \n {!(hasPincodesSet || action) ? (\n active && (\n
    \n \"no-pincode\"\n \n + Add New Zipcode\n \n
    \n )\n ) : (\n
    \n {active && !action && (\n
    \n \n Edit\n \n \n Add New\n \n
    \n )}\n {action && (\n \n )}\n\n {!action && active && pincodeArea && pincodeArea.length > 0 && (\n val}\n />\n )}\n
    \n )}\n {action && (\n \n )}\n \n );\n }\n}\n","import React, { Component, Fragment, useState, useEffect, useRef } from \"react\";\nimport { Input, Select } from \"../../../../../components/Form\";\nimport PlacesWithStandaloneSearchBox from \"../../../../../components/StandaloneSearchBox\";\nimport ActionButtons from \"../ActionButtons\";\nimport { Dialog } from \"../../../../../components/Popup\";\nimport { DeliveryFeeFormulaForm } from \"..\";\n\nimport API from \"../../../../../lib/api\";\nimport { getCurrency } from \"../../../../../lib/userDetails\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport { getSingularPluralForm } from \"../../../../../lib/commonlyused\";\nimport emptyIcon from \"../../KMLUpload/trip-upload.svg\";\nimport \"./style.css\";\n\nconst preventDefaultBehavior = (e) => {\n e && e.preventDefault && e.preventDefault();\n e && e.stopPropagation && e.stopPropagation();\n};\n\nconst handleKeyDown = (e) => {\n if (e.which === 13) {\n preventDefaultBehavior(e);\n }\n};\n\nconst RadialList = ({ pincodes = [], distinctColors }) => {\n return pincodes?.map(({ area, name, id }, index) => {\n return (\n
    \n \n \n {name || getMessage(\"extensions.deliveryArea.polygon.unnamed\")}\n \n \n {getCurrency().symbol} {area?.deliveryFee}\n \n
    \n );\n });\n};\n\nconst RadialDisplay = (props) => {\n const { polygonGroups, distinctColors } = props;\n const pincodeDisplayRef = useRef();\n const [expanded, setExpanded] = useState(false);\n const [isContentOverflown, setIsContentOverflown] = useState(false);\n const [containerHeight, setContainerHeight] = useState();\n\n useEffect(() => {\n if (pincodeDisplayRef) {\n const domEl = pincodeDisplayRef.current;\n const containerHeight = domEl.clientHeight;\n const contentHeight = domEl.querySelector(\n \".pincode-group-list-content\"\n ).offsetHeight;\n if (contentHeight > containerHeight) {\n setIsContentOverflown(true);\n setContainerHeight(contentHeight + 10); // Adding 10 to match margins\n }\n }\n }, [polygonGroups]);\n\n const toggleExpand = (e) => {\n e && e.preventDefault && e.preventDefault();\n setExpanded(!expanded);\n };\n\n return (\n
    \n \n
    \n
    \n
    \n Zone\n {getMessage(\"extensions.deliveryArea.deliveryFee\")}\n
    \n
    \n \n
    \n
    \n
    \n
    \n {isContentOverflown && (\n \n )}\n \n );\n};\n\nconst AddForm = ({ value = {}, onChange, onSave, setNewLocation }) => {\n const handleChange = (newValue) => {\n onChange({ ...value, ...newValue });\n };\n\n const handleSubmit = (e) => {\n e && e.preventDefault();\n onSave();\n };\n\n const handlePlaceSearch = (data) => {\n if (data && data[0] && data[0].geometry && data[0].geometry.location) {\n const location = data[0].geometry.location;\n const latitude = location.lat();\n const longitude = location.lng();\n\n handleChange({ latitude, longitude });\n }\n };\n\n useEffect(() => {\n if (value.latitude && value.longitude) {\n const markerLocation = [{ lat: value.latitude, lng: value.longitude }];\n setNewLocation(markerLocation);\n }\n }, [value.latitude, value.longitude, setNewLocation]);\n\n return (\n
    \n handleChange({ name })}\n />\n
    \n \n }\n onPlacesSearched={handlePlaceSearch}\n />\n
    \n
    \n handleChange({ startRadius })}\n required\n />\n
    \n {getMessage(\"radial.form.to\")}\n
    \n handleChange({ endRadius })}\n required\n />\n
    \n
    \n {getMessage(\"radial.form.distance.description\")}\n
    \n \n \n \n );\n};\n\nconst EditForm = ({\n value = {},\n onChange,\n pincodeGroup,\n action,\n onDeleteZone,\n setNewLocation,\n}) => {\n const [selectedGroup, setSelectedGroup] = useState();\n const [showDeletePopup, setShowDeletePopup] = useState(false);\n\n const groups =\n pincodeGroup &&\n pincodeGroup.map(({ name, id }) => ({\n text: name || getMessage(\"extensions.deliveryArea.zone.unnamed\"),\n value: id,\n }));\n const isEditable = Boolean(selectedGroup);\n\n const handleSelectGroup = (groupId) => {\n const groupData = pincodeGroup.filter(({ id }) => id === Number(groupId));\n setSelectedGroup(groupId);\n onChange(groupData[0], true);\n };\n\n const handleChange = (newValue, replace) => {\n if (replace) {\n onChange({ ...newValue });\n } else {\n onChange({ ...value, ...newValue });\n }\n };\n\n const handlePlaceSearch = (data) => {\n if (data && data[0] && data[0].geometry && data[0].geometry.location) {\n const location = data[0].geometry.location;\n const latitude = location.lat();\n const longitude = location.lng();\n\n handleChange({ area: { ...value.area, latitude, longitude } });\n }\n };\n\n const handleShowDeletePopup = (e) => {\n preventDefaultBehavior(e);\n setShowDeletePopup(true);\n };\n\n const hanldeDeleteZone = (e) => {\n preventDefaultBehavior(e);\n setShowDeletePopup(false);\n onDeleteZone();\n };\n\n useEffect(() => {\n if (value.area?.latitude || value.area?.longitude) {\n const markerLocation = [\n { lat: value.area.latitude, lng: value.area.longitude },\n ];\n setNewLocation(markerLocation);\n }\n }, [value.area, setNewLocation]);\n\n return (\n \n {action === \"edit\" && (\n \n )}\n handleChange({ name })}\n readOnly={!isEditable}\n />\n
    \n \n }\n onPlacesSearched={handlePlaceSearch}\n />\n
    \n
    \n \n handleChange({ area: { ...value.area, startRadius } })\n }\n readOnly={!isEditable}\n required\n />\n
    \n {getMessage(\"radial.form.to\")}\n
    \n \n handleChange({ area: { ...value.area, endRadius } })\n }\n readOnly={!isEditable}\n required\n />\n
    \n
    \n {getMessage(\"radial.form.distance.description\")}\n
    \n \n {isEditable && (\n \n )}\n {showDeletePopup && (\n setShowDeletePopup(false)}\n information={getMessage(\"extensions.deliveryArea.delete.warning\")}\n closeText=\"Cancel\"\n okText=\"Delete\"\n onOk={hanldeDeleteZone}\n />\n )}\n
    \n );\n};\nexport default class RadialFormComponent extends Component {\n constructor(props) {\n super(props);\n this.state = {\n editing: false,\n data: {},\n };\n this.handleRadialGroupAddEdit = this.handleRadialGroupAddEdit.bind(this);\n this.handleZoneDelete = this.handleZoneDelete.bind(this);\n this.toggleAction = this.toggleAction.bind(this);\n this.handleToggleExpand = this.handleToggleExpand.bind(this);\n this.handleDeleteZone = this.handleDeleteZone.bind(this);\n this.handleDataChange = this.handleDataChange.bind(this);\n this.toggleLocationError = this.toggleLocationError.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.setError = this.setError.bind(this);\n }\n\n handleZoneDelete(id) {\n const { action } = this.state;\n if (action === \"add\") {\n this.clearTempData();\n }\n this.props.handleZoneDelete(id);\n }\n\n toggleLocationError() {\n this.setState({\n locationError: !this.state.locationError,\n });\n }\n\n handleRadialGroupAddEdit() {\n const { action, data } = this.state;\n const { storeId, fetchAndUpdate, toggleStoreError, setNewLocation } =\n this.props;\n\n if (!storeId) {\n toggleStoreError();\n return;\n }\n\n // unseting the existing error by passing empty param\n this.setError();\n\n let params, requestMethod, url;\n\n if (action === \"add\") {\n url = \"/logistics-service/delivery-area\";\n requestMethod = \"post\";\n params = { ...data, configType: \"RADIAL\", unit: \"KILOMETRE\" };\n } else if (action === \"edit\") {\n url = `/logistics-service/delivery-area/${data.id}`;\n requestMethod = \"put\";\n params = {\n configType: data.configType,\n name: data.name,\n latitude: data.area.latitude,\n longitude: data.area.longitude,\n startRadius: data.area.startRadius,\n endRadius: data.area.endRadius,\n deliveryFee: data.deliveryFee,\n unit: data.area.unit,\n lowerWeightLimit: data?.lowerWeightLimit,\n ratePerWeightUnit: data?.ratePerWeightUnit,\n chargePercentage: data.chargePercentage,\n };\n }\n params.storeId = Number(storeId);\n\n const api = new API({ url });\n api[requestMethod](params)\n .then(() => fetchAndUpdate(storeId))\n .then(() => {\n this.setAction();\n this.handleDataChange({});\n setNewLocation([]);\n })\n .catch((error) => {\n this.setError(error.message);\n console.error(error);\n });\n }\n\n toggleAction(nextAction) {\n return (e) => {\n e && e.preventDefault && e.preventDefault();\n const { action } = this.state;\n if (action === nextAction) {\n this.setAction(undefined);\n } else {\n this.setAction(nextAction);\n }\n };\n }\n\n setAction(action) {\n this.setState({ action });\n }\n\n setError(error) {\n this.setState({ error });\n }\n\n handleDataChange(data) {\n this.setState({ data });\n }\n\n handleToggleExpand() {\n this.props.handleOpenClose(\"radial\");\n this.setAction(undefined);\n this.setState({ data: {} });\n }\n\n handleDeleteZone() {\n const { action, data } = this.state;\n const { storeId, fetchAndUpdate } = this.props;\n\n if (action === \"add\") {\n this.setState({ data: {} });\n this.setAction(undefined);\n } else if (action === \"edit\") {\n const api = new API({\n url: `/logistics-service/delivery-area/${data.id}`,\n });\n api\n .delete({ id: data.id })\n .then(() => fetchAndUpdate(storeId))\n .then(() => {\n this.setAction(undefined);\n this.setState({ data: {} });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n\n handleCancel() {\n this.setError();\n this.setAction();\n this.handleDataChange({});\n this.props.setNewLocation([]);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.active !== this.props.active && !this.props.active) {\n this.handleCancel();\n }\n\n if (Boolean(prevState.action) ^ Boolean(this.state.action)) {\n this.props.changeEditMode();\n }\n }\n\n render() {\n const { action, data, error } = this.state;\n const {\n active,\n polygonalArea = [],\n distinctColors,\n setNewLocation,\n editing,\n } = this.props;\n const hasPincodesSet = Boolean(polygonalArea && polygonalArea.length);\n\n const FormComp = action === \"add\" ? AddForm : EditForm;\n const hidden = editing && !action;\n return (\n \n \n {getMessage(\"extensions.deliveryArea.radial.title\")}\n \n {!active && (\n \n {hasPincodesSet\n ? `${getSingularPluralForm(polygonalArea.length, \"zone\")} covered`\n : \"No zones defined\"}\n \n )}\n \n {active ? \"\\u2013\" : \"+\"}\n \n {!(hasPincodesSet || action) ? (\n active && (\n
    \n \"no-pincode\"\n \n + Add New Zone\n \n
    \n )\n ) : (\n
    \n {active && !action && (\n
    \n \n Edit\n \n \n Add New\n \n
    \n )}\n {action && (\n \n )}\n\n {!action && active && hasPincodesSet && (\n \n )}\n
    \n )}\n {action && (\n \n )}\n \n );\n }\n}\n","import React, { Component, Fragment, useState, useEffect, useRef } from \"react\";\nimport ActionButtons from \"../ActionButtons\";\nimport { Input, Select } from \"../../../../../components/Form\";\nimport { Dialog } from \"../../../../../components/Popup\";\n\nimport API from \"../../../../../lib/api\";\nimport { getCurrency } from \"../../../../../lib/userDetails\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport { getSingularPluralForm } from \"../../../../../lib/commonlyused\";\nimport emptyIcon from \"../../KMLUpload/trip-upload.svg\";\nimport \"./style.css\";\nimport { DeliveryFeeFormulaForm } from \"..\";\n\nconst getPolygonLocations = (deliveryArea) =>\n deliveryArea?.configType === \"POLYGON\" ? deliveryArea.area?.locations : [];\n\nconst preventDefaultBehavior = (e) => {\n e && e.preventDefault && e.preventDefault();\n e && e.stopPropagation && e.stopPropagation();\n};\n\nconst PinCodeList = ({ pincodes = [], distinctColors }) =>\n pincodes?.map(({ area, name, id }, index) => (\n
    \n \n \n {name || getMessage(\"extensions.deliveryArea.polygon.unnamed\")}\n \n \n {getCurrency().symbol} {area?.deliveryFee}\n \n
    \n ));\n\nconst PinCodesDisplay = (props) => {\n const { polygonGroups, distinctColors } = props;\n const pincodeDisplayRef = useRef();\n const [expanded, setExpanded] = useState(false);\n const [isContentOverflown, setIsContentOverflown] = useState(false);\n const [containerHeight, setContainerHeight] = useState();\n\n useEffect(() => {\n if (pincodeDisplayRef) {\n const domEl = pincodeDisplayRef.current;\n const containerHeight = domEl.clientHeight;\n const contentHeight = domEl.querySelector(\n \".pincode-group-list-content\"\n ).offsetHeight;\n if (contentHeight > containerHeight) {\n setIsContentOverflown(true);\n setContainerHeight(contentHeight + 10); // Adding 10 to match margins\n }\n }\n }, [polygonGroups]);\n\n const toggleExpand = (e) => {\n e && e.preventDefault && e.preventDefault();\n setExpanded(!expanded);\n };\n\n return (\n
    \n \n
    \n
    \n
    \n Zone\n {getMessage(\"extensions.deliveryArea.deliveryFee\")}\n
    \n
    \n \n
    \n
    \n
    \n
    \n {isContentOverflown && (\n \n )}\n \n );\n};\n\nconst AddForm = ({\n value = {},\n onChange,\n newlyAddedLocations,\n onSave,\n locationError,\n name,\n}) => {\n useEffect(() => {\n if (name) {\n handleChange({ name });\n }\n // eslint-disable-next-line\n }, []);\n const handleChange = (newValue) => {\n onChange({ ...value, ...newValue });\n };\n\n const handleSubmit = (e) => {\n e && e.preventDefault();\n onSave();\n };\n\n const isDisabled = !(newlyAddedLocations && newlyAddedLocations.length);\n\n return (\n
    \n handleChange({ name })}\n />\n \n {locationError && (\n \n No new polygon found. Please draw a polygon on the map for your\n delivery area.\n \n )}\n \n + Add Group\n \n \n );\n};\n\nconst EditForm = ({\n value = {},\n onChange,\n pincodeGroup,\n action,\n onDeleteZone,\n setTempLocation,\n}) => {\n const [selectedGroup, setSelectedGroup] = useState();\n const [showDeletePopup, setShowDeletePopup] = useState(false);\n\n const groups =\n pincodeGroup &&\n pincodeGroup.map(({ name, id }) => ({\n text: name || getMessage(\"extensions.deliveryArea.polygon.unnamed\"),\n value: id,\n }));\n const isEditable = Boolean(selectedGroup);\n\n const handleSelectGroup = (groupId) => {\n const groupData = pincodeGroup.filter(({ id }) => id === Number(groupId));\n setSelectedGroup(groupId);\n onChange(groupData[0], true);\n setTempLocation({\n ...groupData[0],\n locations: groupData[0]?.area?.locations?.map(\n ({ latitude, longitude }) => ({ lat: latitude, lng: longitude })\n ),\n });\n };\n\n const handleChange = (newValue, replace) => {\n if (replace) {\n onChange({ ...newValue });\n } else {\n onChange({ ...value, ...newValue });\n }\n };\n\n const handleShowDeletePopup = (e) => {\n preventDefaultBehavior(e);\n setShowDeletePopup(true);\n };\n\n const hanldeDeleteZone = (e) => {\n preventDefaultBehavior(e);\n setShowDeletePopup(false);\n onDeleteZone();\n };\n\n return (\n \n {action === \"edit\" && (\n \n )}\n handleChange({ name })}\n readOnly={!isEditable}\n />\n \n {isEditable && (\n \n )}\n {showDeletePopup && (\n setShowDeletePopup(false)}\n information={getMessage(\"extensions.deliveryArea.delete.warning\")}\n closeText=\"Cancel\"\n okText=\"Delete\"\n onOk={hanldeDeleteZone}\n />\n )}\n \n );\n};\nexport default class PolygonFromComponent extends Component {\n constructor(props) {\n super(props);\n this.state = {\n data: {},\n };\n this.handlePincodeGroupAddEdit = this.handlePincodeGroupAddEdit.bind(this);\n this.handleZoneDelete = this.handleZoneDelete.bind(this);\n this.toggleAction = this.toggleAction.bind(this);\n this.handleToggleExpand = this.handleToggleExpand.bind(this);\n this.handleDeleteZone = this.handleDeleteZone.bind(this);\n this.handleDataChange = this.handleDataChange.bind(this);\n this.toggleLocationError = this.toggleLocationError.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.setError = this.setError.bind(this);\n }\n\n handleZoneDelete(id) {\n const { action } = this.state;\n if (action === \"add\") {\n this.handleDataChange({});\n }\n this.props.handleZoneDelete(id);\n }\n\n toggleLocationError() {\n this.setState({\n locationError: !this.state.locationError,\n });\n }\n\n handlePincodeGroupAddEdit() {\n const { action, data, locationError } = this.state;\n const {\n storeId,\n fetchAndUpdate,\n toggleStoreError,\n newlyAddedPolygon,\n clearTempData,\n } = this.props;\n\n if (!storeId) {\n toggleStoreError();\n return;\n }\n\n if (locationError) {\n return;\n }\n\n // unseting the existing error by passing empty param\n this.setError();\n\n const locations = getPolygonLocations(newlyAddedPolygon);\n let params, requestMethod, url;\n\n if (action === \"add\") {\n if (!(locations && locations.length)) {\n this.toggleLocationError();\n return;\n }\n url = \"/logistics-service/delivery-area\";\n requestMethod = \"post\";\n params = { ...data, locations, configType: \"POLYGON\" };\n } else if (action === \"edit\") {\n url = `/logistics-service/delivery-area/${data.id}`;\n requestMethod = \"put\";\n params = {\n configType: data.configType,\n name: data.name,\n locations: locations || data.area.pincodes,\n deliveryFee: data.deliveryFee,\n lowerWeightLimit: data?.lowerWeightLimit,\n ratePerWeightUnit: data?.ratePerWeightUnit,\n chargePercentage: data.chargePercentage,\n };\n }\n params.storeId = Number(storeId);\n\n const api = new API({ url });\n api[requestMethod](params)\n .then(() => fetchAndUpdate(storeId))\n .then(() => {\n this.setAction();\n this.handleDataChange({});\n clearTempData();\n })\n .catch((error) => {\n this.setError(error.message);\n console.error(error);\n });\n }\n\n toggleAction(nextAction) {\n return (e) => {\n e && e.preventDefault && e.preventDefault();\n const { action } = this.state;\n if (action === nextAction) {\n this.setAction(undefined);\n } else {\n this.setAction(nextAction);\n }\n };\n }\n\n setAction(action) {\n this.setState({ action });\n }\n\n setError(error) {\n this.setState({ error });\n }\n\n handleDataChange(data) {\n this.setState({ data });\n }\n\n handleToggleExpand() {\n this.props.handleOpenClose(\"polygon\");\n this.setAction(undefined);\n this.setState({ data: {} });\n }\n\n handleDeleteZone() {\n const { action, data } = this.state;\n const { storeId, fetchAndUpdate, clearTempData } = this.props;\n\n if (action === \"add\") {\n this.setState({ data: {} });\n this.setAction(undefined);\n } else if (action === \"edit\") {\n const api = new API({\n url: `/logistics-service/delivery-area/${data.id}`,\n });\n api\n .delete({ id: data.id })\n .then(() => fetchAndUpdate(storeId))\n .then(() => {\n this.setAction(undefined);\n this.setState({ data: {} });\n clearTempData();\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n\n handleCancel() {\n this.setError();\n this.setAction();\n this.handleDataChange({});\n this.props.clearTempData();\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (\n prevProps.newlyAddedPolygon !== this.props.newlyAddedPolygon &&\n this.state.locationError\n ) {\n this.toggleLocationError();\n }\n // Bitwise XOR operator\n if (Boolean(prevState.action) ^ Boolean(this.state.action)) {\n this.props.changeEditMode();\n this.props.changeMapEditMode();\n\n if (this.state.action === \"add\") {\n this.props.setShowDrawOption(true);\n } else {\n this.props.setShowDrawOption(false);\n }\n }\n\n if (prevProps.active !== this.props.active && !this.props.active) {\n this.handleCancel();\n }\n }\n\n render() {\n const { action, data, locationError, error } = this.state;\n const {\n active,\n polygonalArea = [],\n newlyAddedPolygon,\n distinctColors,\n setTempLocation,\n editing,\n } = this.props;\n const hasPincodesSet = Boolean(polygonalArea && polygonalArea.length);\n\n const FormComp = action === \"add\" ? AddForm : EditForm;\n const newlyAddedLocations = getPolygonLocations(newlyAddedPolygon);\n const hidden = editing && !action;\n return (\n \n \n {getMessage(\"extensions.deliveryArea.polygon.title\")}\n \n {!active && (\n \n {hasPincodesSet\n ? `${getSingularPluralForm(\n polygonalArea.length,\n \"zone\"\n )} covered`\n : \"No zone defined\"}\n \n )}\n \n {active ? \"\\u2013\" : \"+\"}\n \n {!(hasPincodesSet || action) ? (\n active && (\n
    \n \"no-pincode\"\n \n + Add New Zone\n \n
    \n )\n ) : (\n
    \n {active && !action && (\n
    \n \n Edit\n \n \n Add New\n \n
    \n )}\n {action && (\n \n )}\n\n {!action && active && hasPincodesSet && (\n \n )}\n
    \n )}\n {action && (\n \n )}\n \n );\n }\n}\n","import React, { Component, Fragment, useState, useEffect, useRef } from \"react\";\nimport PlacesWithStandaloneSearchBox from \"../../../../../components/StandaloneSearchBox\";\nimport { Input, Select } from \"../../../../../components/Form\";\nimport ActionButtons from \"../ActionButtons\";\nimport { Dialog } from \"../../../../../components/Popup\";\n\nimport API from \"../../../../../lib/api\";\nimport { getCurrency } from \"../../../../../lib/userDetails\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport { getSingularPluralForm } from \"../../../../../lib/commonlyused\";\nimport deleteIcon from \"../icon-dustbin.svg\";\nimport emptyIcon from \"../../KMLUpload/trip-upload.svg\";\n\nimport \"./style.css\";\nimport { DeliveryFeeFormulaForm } from \"..\";\n\nconst preventDefaultBehavior = (e) => {\n e && e.preventDefault && e.preventDefault();\n e && e.stopPropagation && e.stopPropagation();\n};\n\nconst handleKeyDown = (e) => {\n if (e.which === 13) {\n preventDefaultBehavior(e);\n }\n};\n\nconst ApartmentList = ({\n apartments = [],\n editable,\n onDelete,\n onAddapartment,\n onDeleteZone,\n}) => {\n const [showDeletePopup, setShowDeletePopup] = useState(false);\n\n const createHandleDelete = (index) => (e) => {\n preventDefaultBehavior(e);\n onDelete(index);\n };\n\n const handleAddPincode = (e) => {\n preventDefaultBehavior(e);\n onAddapartment();\n };\n\n const handleShowDeletePopup = (e) => {\n preventDefaultBehavior(e);\n setShowDeletePopup(true);\n };\n\n const hanldeDeleteZone = (e) => {\n preventDefaultBehavior(e);\n setShowDeletePopup(false);\n onDeleteZone();\n };\n\n return (\n \n {apartments?.map(({ name, pincode, legendColor }, index) => {\n return (\n \n {!editable && (\n \n )}\n {name + \", \" + pincode.toString().padStart(6, \"0\")}\n {editable && (\n \n )}\n \n );\n })}\n {editable && (\n \n \n \n \n )}\n {showDeletePopup && (\n setShowDeletePopup(false)}\n information={getMessage(\"extensions.deliveryArea.delete.warning\")}\n closeText=\"Cancel\"\n okText=\"Delete\"\n onOk={hanldeDeleteZone}\n />\n )}\n \n );\n};\n\nconst PinCodesDisplay = (props) => {\n const { apartmentGroups, distinctColors } = props;\n const pincodeDisplayRef = useRef();\n const [expanded, setExpanded] = useState(false);\n const [isContentOverflown, setIsContentOverflown] = useState(false);\n const [containerHeight, setContainerHeight] = useState();\n\n useEffect(() => {\n if (pincodeDisplayRef) {\n const domEl = pincodeDisplayRef.current;\n const containerHeight = domEl.clientHeight;\n const contentHeight = domEl.querySelector(\n \".pincode-group-list-content\"\n ).offsetHeight;\n if (contentHeight > containerHeight) {\n setIsContentOverflown(true);\n setContainerHeight(contentHeight + 10); // Adding 10 to match margins\n }\n }\n }, [apartmentGroups]);\n\n const toggleExpand = (e) => {\n e && e.preventDefault && e.preventDefault();\n setExpanded(!expanded);\n };\n\n return (\n
    \n \n
    \n {apartmentGroups &&\n apartmentGroups.map((group, index) => {\n return (\n \n
    \n \n {group.name\n ? group.name\n : getMessage(\"extensions.deliveryArea.zone.unnamed\")}\n \n {`${getCurrency().symbol} ${\n group.area.deliveryFee\n }`}\n
    \n
    \n \n {getSingularPluralForm(\n group.area.building?.length,\n \"apartment\"\n )}\n \n \n {getMessage(\"extensions.deliveryArea.deliveryFee\")}\n \n
    \n
    \n \n
    \n
    \n );\n })}\n
    \n \n {isContentOverflown && (\n \n )}\n \n );\n};\n\nconst AddForm = ({ value = {}, onChange, onDeleteZone, setNewLocation }) => {\n const [continuedAddition, setContinuedAddition] = useState(false);\n const [addBuilding, setAddBuilding] = useState(false);\n const [tempBuildingData, setTempBuildingData] = useState({});\n\n const handleChange = (newValue) => {\n onChange({ ...value, ...newValue });\n };\n\n const handleDeleteapartment = (index) => {\n const newBuildings = value.building?.filter((_, i) => i !== index);\n handleChange({ building: newBuildings });\n };\n\n const handleSubmit = (e) => {\n e && e.preventDefault();\n if (addBuilding) {\n const newBuildigData = [...value.building, tempBuildingData];\n handleChange({ building: newBuildigData });\n setAddBuilding(false);\n setTempBuildingData(undefined);\n } else {\n setContinuedAddition(true);\n }\n };\n\n const handlePlaceSearch = (data) => {\n if (data && data[0] && data[0].geometry && data[0].geometry.location) {\n const location = data[0].geometry.location;\n const latitude = location.lat();\n const longitude = location.lng();\n const name = data[0].name;\n const addressComponents = data[0].address_components;\n const city = addressComponents?.filter(({ types }) =>\n types?.includes(\"locality\")\n )[0]?.short_name;\n const pincode = addressComponents?.filter(({ types }) =>\n types?.includes(\"postal_code\")\n )[0]?.short_name;\n\n const building = [\n {\n ...(value.building && value.building[0]),\n name,\n pincode,\n latitude,\n longitude,\n },\n ];\n\n if (addBuilding) {\n setTempBuildingData(building[0]);\n } else {\n handleChange({ building, city });\n }\n }\n };\n\n const createBuildingValuesChangeHandler = (key) => (val) => {\n const building = [\n {\n ...(value.building && value.building[0]),\n [key]: val,\n },\n ];\n handleChange({ building });\n };\n\n const createTempBuildingDataChangeHandler = (key) => (val) => {\n setTempBuildingData({ ...tempBuildingData, [key]: val });\n };\n\n useEffect(() => {\n if (continuedAddition && value.building) {\n const buildingLatlng = value.building?.map(({ latitude, longitude }) => ({\n lat: latitude,\n lng: longitude,\n }));\n setNewLocation(buildingLatlng);\n }\n\n if (value.building && !value.building?.length) {\n setContinuedAddition(false);\n }\n }, [continuedAddition, value.building, setNewLocation]);\n\n const canBeSubmitted =\n value.building &&\n value.building?.filter(({ latitude, longitude }) => latitude && longitude)\n .length === value.building?.length;\n\n return (\n
    \n {(!continuedAddition || addBuilding) && (\n
    \n \n }\n onPlacesSearched={handlePlaceSearch}\n />\n
    \n )}\n {!addBuilding && (\n handleChange({ name })}\n required\n />\n )}\n {!continuedAddition && (\n \n )}\n {!addBuilding && (\n handleChange({ city })}\n />\n )}\n {!continuedAddition && (\n \n )}\n {!addBuilding && (\n \n )}\n\n {addBuilding && (\n \n \n \n \n )}\n {!continuedAddition ? (\n \n + Add Group\n \n ) : !addBuilding ? (\n
    \n apartments\n setAddBuilding(true)}\n onDeleteZone={onDeleteZone}\n editable\n />\n
    \n ) : (\n \n + Add apartment\n \n )}\n \n );\n};\n\nconst EditForm = ({\n value = {},\n onChange,\n pincodeGroup,\n action,\n onDeleteZone,\n setNewLocation,\n}) => {\n const [selectedGroup, setSelectedGroup] = useState();\n const [addBuilding, setAddBuilding] = useState(false);\n const [tempBuildingData, setTempBuildingData] = useState({});\n\n const groups =\n pincodeGroup &&\n pincodeGroup.map(({ name, id }) => ({\n text: name || getMessage(\"extensions.deliveryArea.zone.unnamed\"),\n value: id,\n }));\n const isEditable = action === \"add\" || selectedGroup;\n\n const handleSelectGroup = (groupId) => {\n const groupData = pincodeGroup.filter(({ id }) => id === Number(groupId));\n setSelectedGroup(groupId);\n onChange(groupData[0], true);\n };\n\n const handlePlaceSearch = (data) => {\n if (data && data[0] && data[0].geometry && data[0].geometry.location) {\n const location = data[0].geometry.location;\n const latitude = location.lat();\n const longitude = location.lng();\n const name = data[0].name;\n const addressComponents = data[0].address_components;\n const pincode = addressComponents?.filter(({ types }) =>\n types?.includes(\"postal_code\")\n )[0]?.short_name;\n\n setTempBuildingData({\n ...tempBuildingData,\n name,\n pincode,\n latitude,\n longitude,\n });\n }\n };\n\n const handleChange = (newValue, replace) => {\n if (replace) {\n onChange({ ...newValue });\n } else {\n onChange({ ...value, ...newValue });\n }\n };\n\n const handleDeleteapartment = (index) => {\n const newPincodes = value.area.building?.filter((_, i) => i !== index);\n handleChange({\n area: {\n ...value.area,\n building: newPincodes,\n },\n });\n };\n\n const handleAddapartmentSubmit = (e) => {\n e && e.preventDefault();\n const newBuildigData = [...value.area.building, tempBuildingData];\n handleChange({\n area: {\n ...value.area,\n building: newBuildigData,\n },\n });\n setAddBuilding(false);\n setTempBuildingData(undefined);\n };\n\n const createTempBuildingDataChangeHandler = (key) => (val) => {\n setTempBuildingData({ ...tempBuildingData, [key]: val });\n };\n\n useEffect(() => {\n if (value.area?.building) {\n const buildingLatlng = value.area.building?.map(\n ({ latitude, longitude }) => ({ lat: latitude, lng: longitude })\n );\n setNewLocation(buildingLatlng);\n }\n }, [value.area, setNewLocation]);\n\n return !addBuilding ? (\n \n {action === \"edit\" && (\n \n )}\n handleChange({ name })}\n readOnly={!isEditable}\n />\n \n {isEditable && (\n
    \n apartments\n setAddBuilding(true)}\n onDeleteZone={onDeleteZone}\n />\n
    \n )}\n
    \n ) : (\n
    \n
    \n \n }\n onPlacesSearched={handlePlaceSearch}\n />\n
    \n \n \n \n \n );\n};\nexport default class apartmentFormComponent extends Component {\n constructor(props) {\n super(props);\n this.state = {\n editing: false,\n data: {},\n };\n this.handleBuildingGroupAddEdit =\n this.handleBuildingGroupAddEdit.bind(this);\n this.toggleAction = this.toggleAction.bind(this);\n this.handleToggleExpand = this.handleToggleExpand.bind(this);\n this.handleDeleteZone = this.handleDeleteZone.bind(this);\n this.handleDataChange = this.handleDataChange.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.setError = this.setError.bind(this);\n }\n\n handleBuildingGroupAddEdit() {\n const { action, data } = this.state;\n const { storeId, fetchAndUpdate, toggleStoreError, setNewLocation } =\n this.props;\n\n if (!storeId) {\n toggleStoreError();\n return;\n }\n\n // unseting the existing error by passing empty param\n this.setError();\n\n let params, requestMethod, url;\n\n if (action === \"add\") {\n url = \"/logistics-service/delivery-area\";\n requestMethod = \"post\";\n params = { ...data, configType: \"BUILDING\" };\n } else if (action === \"edit\") {\n url = `/logistics-service/delivery-area/${data.id}`;\n requestMethod = \"put\";\n params = {\n configType: data.configType,\n name: data.name,\n building: data.area.building,\n deliveryFee: data?.deliveryFee,\n lowerWeightLimit: data?.lowerWeightLimit,\n ratePerWeightUnit: data?.ratePerWeightUnit,\n chargePercentage: data.chargePercentage,\n };\n }\n params.storeId = Number(storeId);\n\n const api = new API({ url });\n api[requestMethod](params)\n .then(() => fetchAndUpdate(storeId))\n .then(() => {\n this.setAction();\n this.handleDataChange({});\n setNewLocation([]);\n })\n .catch((error) => {\n this.setError(error.message);\n console.error(error);\n });\n }\n\n toggleAction(nextAction) {\n return (e) => {\n e && e.preventDefault && e.preventDefault();\n const { action } = this.state;\n if (action === nextAction) {\n this.setAction(undefined);\n } else {\n this.setAction(nextAction);\n }\n };\n }\n\n setAction(action) {\n this.setState({ action });\n }\n\n setError(error) {\n this.setState({ error });\n }\n\n handleDataChange(data) {\n this.setState({ data });\n }\n\n handleToggleExpand() {\n this.props.handleOpenClose(\"apartment\");\n this.setAction(undefined);\n this.setState({ data: {} });\n this.props.setNewLocation([]);\n }\n\n handleDeleteZone() {\n const { action, data } = this.state;\n const { storeId, fetchAndUpdate, setNewLocation } = this.props;\n\n if (action === \"add\") {\n this.setState({ data: {} });\n this.setAction(undefined);\n } else if (action === \"edit\") {\n const api = new API({\n url: `/logistics-service/delivery-area/${data.id}`,\n });\n api\n .delete({ id: data.id })\n .then(() => fetchAndUpdate(storeId))\n .then(() => {\n this.setAction(undefined);\n this.setState({ data: {} });\n setNewLocation([]);\n })\n .catch((error) => {\n console.error(error);\n });\n }\n }\n\n handleCancel() {\n this.setError();\n this.setAction();\n this.handleDataChange({});\n this.props.setNewLocation([]);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.active !== this.props.active && !this.props.active) {\n this.handleCancel();\n }\n\n if (Boolean(prevState.action) ^ Boolean(this.state.action)) {\n this.props.changeEditMode();\n }\n }\n\n render() {\n const { action, data, error } = this.state;\n const {\n active,\n apartments = [],\n setNewLocation,\n distinctColors,\n editing,\n } = this.props;\n const hasPincodesSet = Boolean(apartments && apartments.length);\n\n let colorIndex = 0;\n const apartmentsWithColor = apartments.map((group) => ({\n ...group,\n area: {\n ...group.area,\n building: group.area.building?.map((buildingObj) => {\n const index = colorIndex % distinctColors.length;\n colorIndex++;\n return {\n ...buildingObj,\n legendColor: distinctColors[index]?.value,\n };\n }),\n },\n }));\n\n const FormComp = action === \"add\" ? AddForm : EditForm;\n const hidden = editing && !action;\n const canBeSubmitted =\n data.area ||\n (data.building &&\n data.building[0] &&\n data.building[0]?.latitude &&\n data.building[0]?.longitude);\n return (\n \n \n {getMessage(\"extensions.deliveryArea.apartment.heading\")}\n \n {!active && (\n \n {hasPincodesSet\n ? `${getSingularPluralForm(apartments.length, \"zone\")} covered`\n : \"No zone defined\"}\n \n )}\n \n {active ? \"\\u2013\" : \"+\"}\n \n {!(hasPincodesSet || action) ? (\n active && (\n
    \n \"no-pincode\"\n \n + Add New Apartment\n \n
    \n )\n ) : (\n
    \n {active && !action && (\n
    \n \n Edit\n \n \n Add New\n \n
    \n )}\n {action && (\n \n )}\n\n {!action && active && apartments && apartments.length > 0 && (\n \n )}\n
    \n )}\n {action && (\n \n )}\n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport GoogleMaps, {\n Polygon,\n DrawingManager,\n} from \"../../../../components/GoogleMaps\";\nimport { Marker, InfoWindow } from \"react-google-maps\";\nimport MarkerDefault from \"./icon-marker-default.svg\";\nimport MarkerOrange from \"./icon-marker-orange.svg\";\nimport MarkerSeagreen from \"./icon-marker-seagreen.svg\";\nimport MarkerDarkmagenta from \"./icon-marker-darkmagenta.svg\";\nimport MarkerDarkvoilet from \"./icon-marker-darkvoilet.svg\";\nimport MarkerMaroon from \"./icon-marker-maroon.svg\";\nimport { get } from \"../../../../lib/storage\";\nimport { isEqual } from \"lodash\";\nimport \"./style.css\";\n\nconst polygonOptions = {\n fillColor: \"#7ac8ed\",\n fillOpacity: 0.4,\n strokeOpacity: 0.8,\n strokeWeight: 1,\n};\n\nconst radialOptions = {\n strokeOpacity: 0.8,\n strokeWeight: 2,\n};\n\nconst apartmentMarkerColor = [\n MarkerOrange,\n MarkerSeagreen,\n MarkerDarkmagenta,\n MarkerDarkvoilet,\n];\n\nexport function drawCircle(point, radius, dir, pts) {\n let d2r = Math.PI / 180; // degrees to radians\n let r2d = 180 / Math.PI; // radians to degrees\n let earthsradius = 6371000; // 6371000 is the radius of the earth in meters\n\n let points = pts || 40; // we will get 40 points that lies on circle's circumference\n\n // find the radius in lat/lng\n let rlat = (radius / earthsradius) * r2d;\n let rlng = rlat / Math.cos(point.lat * d2r);\n\n let extp = [];\n let start = points + 1;\n let end = 0;\n if (dir === 1) {\n start = 0;\n end = points + 1;\n }\n for (let i = start; dir === 1 ? i < end : i > end; i = i + dir) {\n let theta = Math.PI * (i / (points / 2));\n let ey = point.lng + rlng * Math.cos(theta); // center a + radius x * cos(theta)\n let ex = point.lat + rlat * Math.sin(theta); // center b + radius y * sin(theta)\n extp.push({ lat: ex, lng: ey });\n }\n return extp;\n}\n\nfunction formatDataForAllZones({ pincodeArea, radialArea, polygonalArea }) {\n const pincodeLocations = pincodeArea.map((zone) => ({\n pincodes: zone.area.pincodes,\n id: zone.id,\n }));\n\n const polygonLocationZones = polygonalArea.map((zone) => ({\n id: zone.id,\n name: zone.name,\n points: zone.area.locations?.map(({ latitude, longitude }) => ({\n lat: parseFloat(latitude),\n lng: parseFloat(longitude),\n })),\n }));\n\n const radialZones = radialArea.map((zone) => ({\n id: zone.id,\n markerLocation: {\n lat: parseFloat(zone.area.latitude),\n lng: parseFloat(zone.area.longitude),\n },\n name: zone.name,\n startRadius:\n zone.area.startRadius * (zone.unit === \"KILOMETRE\" ? 1000 : 1609.34),\n endRadius:\n zone.area.endRadius * (zone.unit === \"KILOMETRE\" ? 1000 : 1609.34),\n }));\n\n return { pincodeLocations, polygonLocationZones, radialZones };\n}\n\nclass MarkerWithInfo extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isOpen: props.infoOpen || false,\n };\n this.closeInfoWindow = this.closeInfoWindow.bind(this);\n this.openInfoWindow = this.openInfoWindow.bind(this);\n this.handlePincodeClick = this.handlePincodeClick.bind(this);\n }\n\n closeInfoWindow() {\n this.setState({\n isOpen: false,\n });\n }\n\n openInfoWindow() {\n this.setState({\n isOpen: true,\n });\n }\n handlePincodeClick(groupId) {\n this.props.handlePincodeEdit(groupId);\n }\n render() {\n const { location, MarkerIcon } = this.props;\n return (\n \n {this.state.isOpen && location.label && (\n \n
    \n {location.label}\n
    \n
    \n )}\n \n );\n }\n}\n\nexport default class CommonMapComponent extends Component {\n constructor(props) {\n super(props);\n this.state = {\n locationsGroups: [],\n mapMounted: !!window.google,\n };\n this.polygonRef = null;\n this._isMounted = true;\n this.onMapMounted = this.onMapMounted.bind(this);\n this.getLatLngPoints = this.getLatLngPoints.bind(this);\n this.getDefaultLocation = this.getDefaultLocation.bind(this);\n this.setFitBounds = this.setFitBounds.bind(this);\n this.enableDrawingMode = this.enableDrawingMode.bind(this);\n [\"onPolygonComplete\", \"setPolygonRef\", \"updatePolygon\"].forEach((fn) => {\n this[fn] = this[fn].bind(this);\n });\n }\n\n getDefaultLocation(stores) {\n let defaultCenter = {};\n if (stores && get(\"store\")) {\n let store = stores.filter(\n (store) => Number(store.id) === Number(get(\"store\"))\n )[0];\n if (store && store.latitude && store.longitude) {\n defaultCenter = {\n lat: Number(store.latitude),\n lng: Number(store.longitude),\n };\n }\n }\n return defaultCenter;\n }\n onMapMounted(ref) {\n this.map = ref;\n this.setState({ mapMounted: true });\n if (this._isMounted && window.google) {\n this.setFitBounds(this.getLatLngPoints());\n }\n }\n\n onPolygonComplete(polygon) {\n let path = polygon.getPath();\n let paths = [];\n for (let i = 0; i < path.getLength(); i++) {\n let xy = path.getAt(i);\n paths.push({ lat: xy.lat(), lng: xy.lng() });\n }\n polygon.setMap(null);\n this.props.setNewLocations({ locations: paths });\n }\n\n getLatLngPoints() {\n const { storeId, pincodeArea, polygonalArea, radialArea, stores } =\n this.props;\n const { locationsGroups } = this.state;\n const { polygonLocationZones, radialZones } = formatDataForAllZones({\n pincodeArea,\n polygonalArea,\n radialArea,\n });\n\n const points = [];\n\n locationsGroups.forEach((pinCodeZone) => {\n pinCodeZone.locations.forEach((pincode) => {\n points.push({ lat: pincode.location.lat, lng: pincode.location.lng });\n });\n });\n polygonLocationZones.forEach((polygonZone) => {\n polygonZone.points.forEach((point) => {\n points.push(point);\n });\n });\n radialZones.forEach((zone) => {\n points.push(...drawCircle(zone.markerLocation, zone.endRadius, 1, 4));\n points.push(...drawCircle(zone.markerLocation, zone.endRadius, -1, 4));\n });\n\n stores\n .filter(\n (store) =>\n store.latitude &&\n store.longitude &&\n (!storeId || Number(storeId) === store.id)\n )\n .forEach((store) => {\n points.push({\n lat: Number(store.latitude),\n lng: Number(store.longitude),\n });\n });\n\n return points;\n }\n\n setFitBounds(points) {\n if (points && points.length > 0 && window.google) {\n let bounds = new window.google.maps.LatLngBounds();\n for (let i = 0; i < points.length; i++) {\n bounds.extend(points[i]);\n }\n this.map && this.map.fitBounds(bounds);\n }\n }\n\n geocodeAddress(pincodeLocations) {\n let geocoder = new window.google.maps.Geocoder();\n let promises = [];\n let locationsGroups = [];\n pincodeLocations &&\n pincodeLocations.forEach((pincodeGroup) => {\n let locations = [];\n pincodeGroup?.pincodes &&\n pincodeGroup.pincodes.forEach((pincode) => {\n let promise = new Promise((resolve, reject) => {\n geocoder.geocode(\n { address: pincode.pincode.toString() },\n (results, status) => {\n if (status === window.google.maps.GeocoderStatus.OK) {\n const location = results[0].geometry.location;\n const lat = location.lat();\n const lng = location.lng();\n locations.push({\n location: { lat, lng },\n label: pincode.pincode,\n });\n }\n resolve();\n }\n );\n });\n promises.push(promise);\n });\n locationsGroups.push({ id: pincodeGroup.id, locations: locations });\n });\n Promise.all(promises).then(() => {\n this.setState(\n {\n locationsGroups,\n },\n () => {\n this.setFitBounds(this.getLatLngPoints());\n }\n );\n });\n }\n updatePolygon(polygonPath) {\n let path = polygonPath;\n let paths = [];\n for (let i = 0; i < path.getLength(); i++) {\n let xy = path.getAt(i);\n paths.push({ lat: xy.lat(), lng: xy.lng() });\n }\n this.props.setNewEditedLocations({ locations: paths });\n }\n setPolygonRef(polygon) {\n if (polygon) {\n this.polygonRef = polygon.getPath();\n }\n }\n\n enableDrawingMode() {\n this.props.setShowDrawOption(false);\n this.setState({\n isDrawingEnabled: true,\n });\n }\n\n componentDidUpdate(prevProps) {\n const nextProps = this.props;\n const editingCancel = prevProps.editing && !nextProps.editing;\n const prevPincodes = prevProps.pincodeArea;\n const nextPincodes = nextProps.pincodeArea;\n const nextPolygons = nextProps.polygonalArea;\n const prevPolygons = prevProps.polygonalArea;\n\n let pincodesChanged = !isEqual(prevPincodes, nextPincodes);\n let polygonChanged = !isEqual(prevPolygons, nextPolygons);\n\n let { pincodeLocations } = formatDataForAllZones({\n pincodeArea: nextPincodes,\n polygonalArea: nextPolygons,\n radialArea: nextProps.radialArea,\n });\n\n if (window.google && pincodesChanged) {\n this.geocodeAddress(pincodeLocations);\n }\n // if polygon changes dont re-calculate\n if (polygonChanged) {\n this.setFitBounds(this.getLatLngPoints());\n }\n if (editingCancel) {\n this.setFitBounds(this.getLatLngPoints());\n }\n if (prevProps.tempMarkers !== nextProps.tempMarkers) {\n if (nextProps.tempMarkers.length) {\n this.setFitBounds(nextProps.tempMarkers);\n } else {\n this.setFitBounds(this.getLatLngPoints());\n }\n } else {\n if (prevProps !== nextProps) {\n this.setFitBounds(this.getLatLngPoints());\n }\n }\n\n if (this.props.editing && this.polygonRef) {\n window.google.maps.event.addListener(this.polygonRef, \"set_at\", () => {\n this.updatePolygon(this.polygonRef);\n });\n window.google.maps.event.addListener(this.polygonRef, \"insert_at\", () => {\n this.updatePolygon(this.polygonRef);\n });\n window.google.maps.event.addListener(this.polygonRef, \"remove_at\", () => {\n this.updatePolygon(this.polygonRef);\n });\n }\n\n if (prevProps.editing && !nextProps.editing) {\n this.setState({\n isDrawingEnabled: false,\n });\n }\n }\n\n componentWillUnmount() {\n this._isMounted = false;\n }\n\n render() {\n const {\n pincodeArea,\n polygonalArea,\n radialArea,\n apartments,\n editing,\n distinctColors,\n storeId,\n tempMarkers,\n stores,\n editPolygon,\n showDrawOption,\n } = this.props;\n const { locationsGroups, isDrawingEnabled } = this.state;\n\n // fill colors\n const distinctColorsPolygon = distinctColors.slice(0, 5);\n const distinctColorsRadial = distinctColors.slice(5, 10);\n\n const defaultCenter = this.getDefaultLocation(stores);\n const allStoresLocations = stores\n .filter(\n (store) =>\n store.hasDeliveryHub &&\n store.latitude &&\n store.longitude &&\n (!storeId || Number(storeId) === store.id)\n )\n .map((store) => ({\n location: { lat: Number(store.latitude), lng: Number(store.longitude) },\n label: `Store: ${store.name}`,\n }));\n\n const { polygonLocationZones, radialZones } = formatDataForAllZones({\n pincodeArea,\n polygonalArea,\n radialArea,\n });\n\n // Newly added / edit in progress pincode marker\n const tempMarkersMarker = tempMarkers?.map((location) => (\n \n ));\n\n // Pincode markers\n const markers = [];\n\n // Pincode Markers\n locationsGroups.forEach((group, i) => {\n group.locations.forEach((location, index) => {\n markers.push(\n \n );\n });\n });\n\n // Store Markers\n allStoresLocations.forEach((locationObj, index) => {\n markers.push(\n \n );\n });\n\n // Polygon area\n const polygons =\n polygonLocationZones.length > 0\n ? polygonLocationZones\n .filter(({ id }) => id !== editPolygon.id)\n .map((polygonZone, index) => {\n return (\n polygonZone.points.length > 0 && (\n \n )\n );\n })\n : null;\n\n // Drawn polygon\n const drawnPolygon = editPolygon?.area ? (\n ({\n lat: Number(latitude),\n lng: Number(longitude),\n }))}\n ref={(ref) => this.setPolygonRef(ref)}\n options={{\n ...polygonOptions,\n editable: editing,\n fillColor:\n distinctColors[polygonLocationZones.length % distinctColors.length]\n .value,\n }}\n />\n ) : null;\n\n // Radial polygon area\n const radialPolygons =\n radialZones.length > 0\n ? radialZones.map((radialZone, index) => {\n let center = radialZone.markerLocation || defaultCenter;\n let { startRadius, endRadius } = radialZone;\n\n return (\n \n );\n })\n : null;\n\n // Radial Markers\n const radialMarkers = radialZones.map((radialZone, index) => (\n \n ));\n\n // Apartment Markers\n const apartmentMarkers = apartments.reduce((acc, curr) => {\n let counter = acc.length;\n const buildings = curr.area?.building\n ?.filter(({ latitude, longitude }) => latitude && longitude)\n .map(({ latitude, longitude, name }) => ({\n location: { lat: latitude, lng: longitude },\n label: name,\n }));\n const markers = buildings?.map((building, index) => {\n const colorIndex = counter;\n counter++;\n return (\n \n );\n });\n return [...acc, ...markers];\n }, []);\n\n return (\n \n \n {isDrawingEnabled && (\n \n )}\n {markers.length > 0 && markers}\n {polygons}\n {drawnPolygon}\n {radialPolygons}\n {radialMarkers.length > 0 && radialMarkers}\n {tempMarkersMarker}\n {apartmentMarkers.length > 0 && apartmentMarkers}\n \n {showDrawOption && (\n \n Draw on map\n \n )}\n \n );\n }\n}\n","import React from \"react\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nimport \"./style.css\";\n\nexport default function UploadKML({ handleKmlUpload }) {\n return (\n
    \n
    \n {getMessage(\"Upload KML file\")}\n
    \n
    \n );\n}\n","import React, { Component } from \"react\";\n\nimport Upload from \"../../../../components/FileUpload\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport kmlIcon from \"./kml.svg\";\nimport uploadIcon from \"./trip-upload.svg\";\n\nimport \"./style.css\";\n\nexport default class KMLUpload extends Component {\n render() {\n return (\n
    \n
    \n
    \n \"\"\n
    \n {\n data.append(\"storeId\", this.props.storeId);\n return data;\n }}\n uploadKey=\"kmlFile\"\n icon={kmlIcon}\n successCallback={this.props.successCallback}\n errorCallBack={this.props.errorCallBack}\n />\n
    \n
    \n );\n }\n}\n","import React, { Component } from \"react\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport { Select } from \"../../../components/Form\";\nimport { Popup, Dialog } from \"../../../components/Popup\";\nimport { getStores } from \"../../../lib/auth\";\nimport API from \"../../../lib/api\";\nimport { getMessage } from \"../../../lib/translator\";\nimport PincodeFormComponent from \"./FormComponents/Pincode\";\nimport RadialFormComponent from \"./FormComponents/Radial\";\nimport PolygonFormComponent from \"./FormComponents/Polygon\";\nimport ApartmentComponent from \"./FormComponents/Apartment\";\nimport CommonMapComponent from \"./CommonMapComponent\";\nimport AddDeliveryArea from \"./AddDeliveryArea\";\nimport KMLUpload from \"./KMLUpload\";\n\nimport \"./style.css\";\n\nconst distinctColors = [\n { color: \"default\", value: \"#7ac8ed\" },\n { color: \"blue\", value: \"#0000ff\" },\n { color: \"maroon\", value: \"#800000\" },\n { color: \"darkolivegreen\", value: \"#556b2f\" },\n { color: \"darkblue\", value: \"#00008b\" },\n { color: \"darkmagenta\", value: \"#8b008b\" },\n { color: \"darkvoilet\", value: \"#eca5b7\" },\n { color: \"darkorchid\", value: \"#9932cc\" },\n { color: \"darkcyan\", value: \"#008b8b\" },\n { color: \"darkgreen\", value: \"#006400\" },\n { color: \"darkorange\", value: \"#ff8c00\" },\n { color: \"seagreen\", value: \"#55CFAF\" },\n { color: \"darkmagenta\", value: \"#8b008b\" },\n { color: \"darkvoilet\", value: \"#eca5b7\" },\n];\n\nclass MapControls extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n this.storeSelectReadOnly = false;\n\n this.handleOpenClose = this.handleOpenClose.bind(this);\n }\n\n handleOpenClose(section) {\n this.setState((prevState) => {\n if (prevState.activeSection === section) {\n return {\n ...prevState,\n activeSection: \"\",\n };\n } else {\n return {\n ...prevState,\n activeSection: section,\n };\n }\n });\n }\n\n render() {\n const {\n pincodeArea,\n radialArea,\n polygonalArea,\n apartments,\n distinctColors,\n setNewLocation,\n fetchAndUpdate,\n storeId,\n toggleStoreError,\n tempDeliveryAreaData,\n changeEditMode,\n changeMapEditMode,\n setTempLocation,\n clearTempData,\n setShowDrawOption,\n editing,\n } = this.props;\n\n const { activeSection } = this.state;\n\n return (\n \n \n \n \n \n \n );\n }\n}\n\nclass InterfaceContainer extends Component {\n constructor(props) {\n super(props);\n this.setStore = this.setStore.bind(this);\n this.setNewLocation = this.setNewLocation.bind(this);\n this.setNewLocations = this.setNewLocations.bind(this);\n this.setNewEditedLocations = this.setNewEditedLocations.bind(this);\n this.fetchDeliveryAreaData = this.fetchDeliveryAreaData.bind(this);\n this.changeEditMode = this.changeEditMode.bind(this);\n this.changeMapEditMode = this.changeMapEditMode.bind(this);\n this.clearTempData = this.clearTempData.bind(this);\n this.showModal = this.showModal.bind(this);\n this.hideModal = this.hideModal.bind(this);\n this.uploadSuccessCallback = this.uploadSuccessCallback.bind(this);\n this.toggleStoreError = this.toggleStoreError.bind(this);\n this.setShowDrawOption = this.setShowDrawOption.bind(this);\n\n this.state = {\n deliveryArea: [],\n tempDeliveryArea: {},\n storeId: null,\n values: null,\n editing: false,\n selectedLocation: [],\n showError: false,\n apiError: null,\n pincodeEditId: null,\n radialEditId: null,\n kmlUploadPopupShown: false,\n showSelectStoreDialog: false,\n };\n }\n showModal() {\n if (!this.state.storeId) {\n this.setState({ showSelectStoreDialog: true });\n return;\n }\n this.setState({\n kmlUploadPopupShown: true,\n });\n }\n hideModal() {\n this.setState({\n kmlUploadPopupShown: false,\n });\n }\n\n postLocationsAfterKML = (tempDeliveryArea) => {\n const payload = {\n configType: tempDeliveryArea.configType,\n name: tempDeliveryArea.name,\n locations: tempDeliveryArea.area?.locations,\n storeId: this.state.storeId,\n };\n\n const deliveryAreaApi = new API({\n url: \"/logistics-service/delivery-area\",\n });\n deliveryAreaApi\n .post(payload)\n .then(() => {\n this.fetchDeliveryAreaData(payload.storeId);\n this.setState({\n tempDeliveryArea,\n deliveryArea: [tempDeliveryArea],\n showSuccessDialog: true,\n });\n })\n .catch((error) => {\n console.error(error);\n this.setState({\n showErrorDialog: true,\n kmlUploadError: error.message,\n });\n });\n };\n\n setTempDeliveryArea = (locations = [], name, id) => {\n let tempDeliveryArea = {\n configType: \"POLYGON\",\n name,\n id,\n area: {\n locations,\n },\n };\n this.postLocationsAfterKML(tempDeliveryArea);\n };\n\n uploadSuccessCallback(response) {\n this.hideModal();\n const deliveryArea = response.data.deliveryAreas?.[0] || {};\n this.setTempDeliveryArea(deliveryArea?.locations, deliveryArea?.name);\n }\n setNewLocation(selectedLocation) {\n this.setState({\n selectedLocation,\n });\n }\n\n setStore(id) {\n let storeId = id === \"ALL\" ? null : id;\n this.setState({ storeId });\n if (!this.state.editing) {\n this.fetchDeliveryAreaData(storeId);\n }\n }\n changeMapEditMode() {\n const mapEditing = !this.state.mapEditing;\n this.setState({ mapEditing });\n }\n changeEditMode() {\n const editing = !this.state.editing;\n this.setState({ editing });\n }\n clearTempData() {\n this.setState({ tempDeliveryArea: {} });\n }\n\n setNewLocations({ locations, name, id }) {\n let tempDeliveryArea = {\n configType: \"POLYGON\",\n name,\n id,\n area: {\n locations: locations?.map(({ lat, lng }) => ({\n latitude: lat,\n longitude: lng,\n })),\n },\n };\n this.setState({\n tempDeliveryArea,\n });\n }\n\n setNewEditedLocations(params) {\n let { tempDeliveryArea } = this.state;\n this.setState({\n tempDeliveryArea: {\n ...tempDeliveryArea,\n area: {\n ...tempDeliveryArea.area,\n locations: params.locations?.map(({ lat, lng }) => ({\n latitude: lat,\n longitude: lng,\n })),\n },\n },\n });\n }\n\n fetchDeliveryAreaData(storeId) {\n let api = new API({ url: \"/logistics-service/delivery-area\" });\n let params = storeId\n ? { storeId, paginated: \"false\" }\n : { paginated: \"false\" };\n api\n .get(params)\n .then((response) => {\n let deliveryArea = response.data.deliveryarea || [];\n this.setState({ deliveryArea });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n toggleStoreError() {\n let { showStoreError } = this.state;\n this.setState({ showStoreError: !showStoreError });\n }\n setShowDrawOption(showDrawOption) {\n this.setState({ showDrawOption });\n }\n componentDidMount() {\n this.fetchDeliveryAreaData();\n }\n\n closeDialogs = () => {\n this.setState({\n showSuccessDialog: false,\n showErrorDialog: false,\n });\n };\n\n render() {\n const {\n deliveryArea,\n editing,\n mapEditing,\n storeId,\n showStoreError,\n tempDeliveryArea,\n showDrawOption,\n } = this.state;\n const allStores =\n getStores()?.filter((store) => store.hasDeliveryHub) || [];\n const storeOptions = [\n { text: \"All stores\", value: \"ALL\" },\n ...allStores.map((store) => ({ text: store.name, value: store.id })),\n ];\n let pincodeArea = deliveryArea.filter(\n (zone) => zone.configType === \"PINCODE\"\n );\n let radialArea = deliveryArea.filter(\n (zone) => zone.configType === \"RADIAL\"\n );\n let polygonalArea = deliveryArea.filter(\n (zone) => zone.configType === \"POLYGON\"\n );\n let apartments = deliveryArea.filter(\n (zone) => zone.configType === \"BUILDING\"\n );\n\n return (\n
    \n {this.state.kmlUploadPopupShown && (\n \n \n \n )}\n \n this.setState({ showError: false }, this.fetchDeliveryAreaData)\n }\n information={this.state.apiError}\n closeText={getMessage(\"extensions.error.dialog.okay\")}\n />\n this.setState({ showSelectStoreDialog: false })}\n information={\"select a store before uploading kml file\"}\n closeText={getMessage(\"extensions.error.dialog.okay\")}\n />\n \n \n
    \n

    {getMessage(\"extensions.deliveryArea.title\")}

    \n \n
    \n {\n this.setState({ showStoreError: false });\n this.setStore(id);\n }}\n />\n {showStoreError && (\n \n {getMessage(\"extensions.deliveryArea.store.error\")}\n \n )}\n
    \n

    \n {getMessage(\"extensions.deliveryArea.zones.heading\")}\n

    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\nexport default class DeliveryAreas extends Component {\n render() {\n return (\n \n \n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Link, Redirect } from \"react-router-dom\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { getSession, saveSession } from \"../../../lib/auth\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport API from \"../../../lib/api\";\nimport Loader from \"../../../components/Loader\";\nimport \"./style.css\";\n\nexport default class extends Component {\n constructor(props) {\n super(props);\n const org = getSession().organization;\n this.state = {\n themes: null,\n submitting: false,\n themeChosen: false,\n currentTheme: org.theme,\n };\n this.org = org;\n }\n\n componentDidMount() {\n const api = new API({\n url: \"/account-service/theme?paginated=false\",\n });\n api\n .get()\n .then(\n (response) => {\n this.setState({\n themes: response.data.theme,\n });\n },\n (error) => console.error(error)\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n selectTheme(id) {\n this.setState({\n submitting: true,\n });\n const api = new API({\n url: \"/account-service/organization\",\n });\n const params = {\n id: this.org.id,\n themeId: id,\n };\n api\n .put(params)\n .then(\n (response) => {\n saveSession({\n organization: response.data.organization,\n });\n this.setState({\n themeChosen: true,\n });\n },\n (error) => {\n this.setState({\n submitting: false,\n });\n console.error(error);\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n render() {\n const { props } = this;\n if (this.state.themeChosen) {\n return ;\n }\n return (\n \n

    {getMessage(\"themes.change.heading\")}

    \n
    \n \n
    \n

    \n {getMessage(\"themes.subheading\", {\n name: this.state.currentTheme.name,\n })}\n

    \n

    {this.state.currentTheme.description}

    \n \n {getMessage(\"themes.customize.text\")}\n \n
    \n
    \n {!this.state.themes ? (\n \n ) : (\n
    \n {this.state.themes.map((theme, index) => {\n return (\n
    \n
    \n {theme.name}\n
    \n {\n this.selectTheme(theme.id);\n }}\n >\n {this.state.submitting\n ? \"...\"\n : getMessage(\"themes.selectTheme.text\")}\n \n
    \n
    \n

    {theme.name}

    \n

    {theme.description}

    \n
    \n );\n })}\n
    \n )}\n
    \n );\n }\n}\n","import React from \"react\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { Toggle } from \"../../../components/Form\";\nimport RichEditor from \"../../../components/RichEditor\";\nimport closeAnnouncementIcon from \"./announcementBar-close-icon.svg\";\nimport { get } from \"../../../lib/storage\";\n\nexport default function AnnouncementBar(props) {\n const {\n announcementBar,\n isAnnouncementBarEnabled,\n handleAnnouncementBarSave,\n announcementBarSubmitting,\n handleOnChange,\n description,\n updateState,\n } = props;\n return (\n
    \n
    \n {getMessage(\"themes.customize.announcementBar.text\")}\n {\n handleOnChange();\n }}\n icons={false}\n />\n
    \n {isAnnouncementBarEnabled && (\n
    \n
    \n
    \n updateState([\"description\"], value)}\n allowedMethods={[\n \"BOLD\",\n \"ITALIC\",\n \"LINK\",\n \"STRIKETHROUGH\",\n \"UNDERLINE\",\n ]}\n />\n
    \n
    \n
    \n \n {getMessage(\"themes.customize.preview\")}\n \n
    \n \n `,\n }}\n />\n
    \n
    \n
    \n )}\n
    \n \n {\n handleAnnouncementBarSave();\n }}\n >\n {announcementBarSubmitting ? \". . .\" : getMessage(\"save.text\")}\n \n
    \n
    \n );\n}\n","import React, { Component, Fragment } from \"react\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport API from \"../../../lib/api\";\nimport Loader from \"../../../components/Loader\";\nimport Tabs from \"../../../components/Tabs\";\nimport {\n SingleDatePicker,\n Select,\n CategorySearch,\n BrandSearch,\n Searchable,\n Checkbox,\n} from \"../../../components/Form\";\nimport {\n SortableContainer,\n SortableElement,\n SortableHandle,\n arrayMove,\n} from \"react-sortable-hoc\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { isExtensionEnabled } from \"../../../lib/auth\";\nimport { Link } from \"react-router-dom\";\nimport { getTimes } from \"../../../lib/datetime\";\nimport moment from \"moment\";\nimport { DropDown, DropDownItem } from \"../../../components/DropDown\";\n\nimport Layout from \"./layout\";\nimport SplashScreen from \"../../../components/Layout/SplashScreen\";\nimport ImageSlideshow from \"../../../components/Layout/ImageSlideshow\";\nimport AppointmentForm from \"../../../components/Layout/AppointmentForm\";\nimport Banner from \"../../../components/Layout/Banner\";\nimport ImageWithText from \"../../../components/Layout/ImageWithText\";\nimport ProductCollection from \"../../../components/Layout/ProductCollection\";\nimport { Popup, Dialog } from \"../../../components/Popup\";\nimport \"./style.css\";\nimport getLayout from \"./Layouts/getLayout\";\nimport DualImageGrid from \"../../../components/Layout/DualImageGrid\";\nimport arrow from \"../../../components/Form/Inputs/Select/dropdown arrow.svg\";\nimport deleteIcon from \"./cx-delete-icon.svg\";\nimport Carousel from \"../../../components/Layout/Carousel\";\n\nimport DualImageBanner from \"../../../components/Layout/DualImageBanner\";\nimport checkHttpResponseCode from \"../../../utils/isApiCallSuccessfull\";\nimport Testimonial from \"../../../components/Layout/Testimonial\";\nimport RichText from \"../../../components/Layout/RichText\";\n\nimport { updateStateRecursively } from \"../../../lib/stateManagement\";\nimport { exportText } from \"../../../components/RichEditor\";\n\nimport {\n BannerWithText,\n BannerWithMultipleButtons,\n VideoCardCarousel,\n} from \"zopsmart-ui\";\nimport AnnouncementBar from \"./AnnouncementBar\";\nimport { get } from \"../../../lib/storage\";\nimport GridCollection from \"../../../components/Layout/GridCollection\";\nimport FooterLayout from \"../../../components/Layout/Footer\";\nimport { faro } from \"@grafana/faro-web-sdk\";\nimport { specialLayout } from \"./constants\";\nimport ImageCollection from \"../../../components/Layout/ImageCollection\";\nimport Highlights from \"../../../components/Layout/Highlights\";\n\n// Support only for Fashion Trends theme as of now\nconst dualImageLayouts = [\"DualImageBanner\", \"DualImage\"];\n\nconst AppointmentFormLayout = \"AppointmentForm\";\n\nconst ANNOUNCEMENT_BAR_STATUS = {\n enabled: \"ENABLED\",\n disabled: \"DISABLED\",\n};\n\n// serchable component for brand and category\nconst searchableComponent = {\n brand: BrandSearch,\n category: CategorySearch,\n};\n\n// Layout components mapping with their names\nconst availableComponents = {\n Images: {\n ImageSlideShow: ImageSlideshow,\n ImageWithText: ImageWithText,\n DualImageBanner: DualImageBanner,\n ImageCollection: ImageCollection,\n GridCollection: GridCollection,\n },\n \"E-commerce\": {\n ProductCollection: ProductCollection,\n CategoryCollection: ProductCollection,\n BrandCollection: ProductCollection,\n SearchResults: ProductCollection,\n DualImage: DualImageGrid,\n },\n Banners: {\n MarketingBanners: Banner,\n BannerWithText: BannerWithText,\n BannerWithButton: BannerWithText,\n BannerWithMultipleButtons: BannerWithMultipleButtons,\n },\n Videos: {\n VideoCardCarousel: VideoCardCarousel,\n },\n Forms: {\n AppointmentForm: AppointmentForm,\n },\n Text: {\n RichText: RichText,\n },\n Carousel: {\n Carousel: Carousel,\n Testimonial: Testimonial,\n },\n Blog: {\n BlogCollection: ProductCollection,\n },\n Seller: {\n SellerCollection: ProductCollection,\n },\n FooterLayout: {\n FooterLayout: FooterLayout,\n },\n Splash: {\n Splash: SplashScreen,\n },\n Influencer: {\n InfluencerCollection: ProductCollection,\n },\n Features: {\n Highlights: Highlights,\n },\n};\n\nconst DragHandle = SortableHandle((props) => (\n {props.children}\n));\n\nconst SortableItem = SortableElement((props) => {\n const { value, layoutIndex, onEditClick, onRemoveClick } = props;\n let LayoutComponent = \"\";\n Object.keys(availableComponents).forEach(function (component, index) {\n if (availableComponents[component][value.name]) {\n LayoutComponent = availableComponents[component][value.name];\n }\n });\n let element = \"\";\n const isShowLayout = typeof LayoutComponent !== \"string\";\n return (\n
    \n {isShowLayout && (\n <>\n

    \n \n {value.name.replace(/([A-Z])/g, \" $1\").trim()}\n \n

    \n {\n element = el;\n }}\n >\n \n
    \n {![\"MarketingBanners\"].includes(value.name) && (\n {\n onEditClick(layoutIndex, element.offsetTop);\n }}\n >\n Edit\n \n )}\n {value?.name !== \"Splash\" && (\n {\n onRemoveClick(layoutIndex);\n }}\n >\n Remove\n \n )}\n
    \n
    \n \n )}\n
    \n );\n});\n\nconst SortableList = SortableContainer((props) => {\n return (\n
    \n {Array.isArray(props.items) &&\n props.items.map((value, index) => (\n \n ))}\n
    \n );\n});\n\nexport default class LayoutManager extends Component {\n constructor(props) {\n super(props);\n this.state = {\n page: 0,\n loaded: false,\n editing: false,\n submitting: false,\n previousState: null,\n showDialog: false,\n showPrompt: false,\n category: \"\",\n brand: \"\",\n tag: \"\",\n categoriesDataLoaded: false,\n tagsDataLoaded: false,\n brandsDataLoaded: false,\n currentComponent: \"Images\",\n timeLine: \"default\",\n errors: {},\n showFilter: false,\n announcementBar: {},\n isAnnouncementBarEnabled: false,\n values: {\n description: \"\",\n },\n showLoader: true,\n showSaveDialog: false,\n showErrorDialog: false,\n };\n this.pages = [\"home\", \"category\"];\n const productTagEnabled = isExtensionEnabled(\"ProductTagSupport\");\n const brandsEnabled = isExtensionEnabled(\"MultiBrandSupport\");\n\n if (productTagEnabled) {\n this.pages.push(\"tag\");\n }\n if (brandsEnabled) {\n this.pages.push(\"brand\");\n }\n\n this.pages.push(\"search\");\n if (isExtensionEnabled(\"RecipePageGenerator\")) {\n this.pages.push(\"influencer\");\n }\n this.pages.push(\"footer\");\n this.pages.push(\"Splash Screen\");\n\n this.data = {}; // Discuss: Didn't want to put this in state\n this.currentLayout = {};\n this.selectOptionsData = {\n categories: [],\n tags: [],\n brands: [],\n };\n this.listView = this.listView.bind(this);\n this.onSortEnd = this.onSortEnd.bind(this);\n this.onAddClick = this.onAddClick.bind(this);\n this.onEditClick = this.onEditClick.bind(this);\n this.onRemoveClick = this.onRemoveClick.bind(this);\n this.showPrompt = this.showPrompt.bind(this);\n this.updateLayouts = this.updateLayouts.bind(this);\n this.getSelectOptionsData = this.getSelectOptionsData.bind(this);\n this.getSelectElement = this.getSelectElement.bind(this);\n this.formatResponse = this.formatResponse.bind(this);\n this.reorderLayout = this.reorderLayout.bind(this);\n this.cancelReordering = this.cancelReordering.bind(this);\n this.setLayoutSchedulerValues = this.setLayoutSchedulerValues.bind(this);\n this.setLayoutTimeline = this.setLayoutTimeline.bind(this);\n this.fetchScheduledLayout = this.fetchScheduledLayout.bind(this);\n this.handleDeleteSceduledLayout =\n this.handleDeleteSceduledLayout.bind(this);\n this.fetchWrapper = this.fetchWrapper.bind(this);\n }\n\n componentDidMount() {\n if (!isExtensionEnabled(\"MarketPlace\")) {\n delete availableComponents[\"Seller\"];\n }\n if (!isExtensionEnabled(\"RecipePageGenerator\")) {\n delete availableComponents[\"Influencer\"];\n }\n this.fetchAnnouncementBarData();\n this.fetchWrapper();\n }\n\n fetchAnnouncementBarData() {\n const api = new API({\n url: `/website-service/announcement`,\n });\n api\n .get(\"\", {\n \"Accept-Language\": get(\"dataLang\") || \"en\",\n })\n .then((response) => {\n const { description, status } = response.data;\n if (status === ANNOUNCEMENT_BAR_STATUS.enabled && description) {\n this.setState({\n isAnnouncementBarEnabled: true,\n announcementBar: {\n description: description,\n },\n values: {\n ...this.state.values,\n description: description,\n },\n });\n } else {\n this.setState({\n isAnnouncementBarEnabled: false,\n });\n }\n })\n .catch((error) => {\n console.error(error);\n })\n .finally(() => {\n this.setState({\n showLoader: false,\n });\n });\n }\n\n // This method can be removed later once the scheduler api will be supported for all pages\n fetchWrapper() {\n this.fetchScheduledLayout();\n }\n\n formatResponse(response) {\n let newResponse = Object.assign([], response);\n const page = this.pages[this.state.page];\n newResponse.forEach((layout) => {\n if (\n layout.name === \"CategoryCollection\" ||\n layout.name === \"BrandCollection\"\n ) {\n let key = layout.name === \"CategoryCollection\" ? \"category\" : \"brand\";\n let collection = (layout.value && layout.value.collection) || [];\n collection = collection.map((val) => val[key]);\n layout[\"data\"][key] = collection;\n layout.value && delete layout.value.collection;\n }\n if (\n layout.name === \"CategoryCollection\" &&\n layout.data &&\n layout.data.subcategories &&\n page === \"category\"\n ) {\n layout.name = \"SubCategoryCollection\";\n }\n });\n return newResponse;\n }\n\n fetchScheduledLayout() {\n this.setState({\n loaded: false,\n });\n const page = this.pages[this.state.page];\n let timeline = this.state.timeLine;\n const urlMap = {\n footer: `/account-service/footer`,\n \"Splash Screen\":\n \"/config-service/config?category=androidAppConfig,iosAppConfig\",\n };\n let url = urlMap[page] || `/website-service/layout`;\n let params = specialLayout?.includes(page) ? {} : { id: page };\n\n if (timeline !== \"new\") {\n params.validFrom = timeline === \"default\" ? null : timeline.split(\"/\")[0];\n params.validTill = timeline === \"default\" ? null : timeline.split(\"/\")[1];\n }\n\n if (this.state[page]) {\n params.url = this.state[page];\n }\n\n const api = new API({\n url: url,\n });\n api\n .get(params, {\n \"Accept-Language\": get(\"dataLang\") || \"en\",\n })\n .then((response) => {\n if (response.status === \"ERROR\") {\n console.error(`Error in fetching details for ${page}`); // Todo: Handle this error\n return;\n }\n if (\n (response?.data === null && specialLayout?.includes(page)) ||\n (!response.data.page?.length && !specialLayout?.includes(page))\n ) {\n this.data = [];\n this.originalData = [];\n this.setState({ loaded: true });\n return;\n }\n if (page !== \"search\") {\n delete availableComponents[\"E-commerce\"][\"SearchResults\"];\n } else {\n availableComponents[\"E-commerce\"][\"SearchResults\"] =\n ProductCollection;\n }\n\n if (page !== \"category\") {\n delete availableComponents[\"E-commerce\"][\"SubCategoryCollection\"];\n } else {\n availableComponents[\"E-commerce\"][\"SubCategoryCollection\"] =\n ProductCollection;\n }\n this.pageId =\n page === \"footer\" ? null : response?.data?.page?.[0]?.pageId;\n this.data = this.formatResponse(response?.data?.page?.[0]?.layouts);\n if (page === \"Splash Screen\") {\n let splashObjectData = {\n name: \"Splash\",\n data: response.data,\n };\n this.pageId = page;\n this.data = [splashObjectData];\n this.originalData = this.data;\n } else if (page === \"footer\") {\n let footerLayoutData = {\n name: \"FooterLayout\",\n data: {\n id: response?.data?.id,\n sections: response?.data?.layouts,\n },\n };\n\n this.data = [footerLayoutData];\n this.originalData = this.data;\n } else {\n this.pageId = response?.data?.page?.[0]?.pageId;\n this.data = this.formatResponse(response.data.page[0].layouts);\n this.originalData = this.data;\n if (!this.state.categoryDataLoaded) {\n this.getSelectOptionsData(\"category\", \"categories\");\n }\n if (this.pages.includes(\"tag\")) {\n if (!this.state.tagDataLoaded) {\n this.getSelectOptionsData(\"tag\", \"tags\");\n }\n }\n if (this.pages.includes(\"brand\")) {\n if (!this.state.brandDataLoaded) {\n this.getSelectOptionsData(\"brand\", \"brands\");\n }\n }\n }\n let validFrom = specialLayout?.includes(page)\n ? \"\"\n : response?.data?.page?.[0]?.validFrom;\n let validTill = specialLayout?.includes(page)\n ? \"\"\n : response?.data?.page?.[0]?.validTill;\n\n this.setState(\n {\n loaded: true,\n fromDate: validFrom && moment(validFrom).format(\"YYYY-MM-DD\"),\n fromTime: validFrom && moment(validFrom).format(\"HH:mm:ss\"),\n toDate: validTill && moment(validTill).format(\"YYYY-MM-DD\"),\n toTime: validTill && moment(validTill).format(\"HH:mm:ss\"),\n },\n () => {\n timeline !== \"new\" &&\n isExtensionEnabled(\"LayoutSchedulingSupport\") &&\n this.fetchLayoutTimeLine();\n this.getAppointmentFormData();\n }\n );\n })\n .catch((error) => {\n this.data = [];\n this.setState({ loaded: true });\n console.error(error);\n });\n }\n\n getAppointmentFormData = async () => {\n let layoutNames = this.data && this.data.map(({ name }) => name);\n if (layoutNames.includes(AppointmentFormLayout)) {\n let configAPI = new API({\n url: \"/config-service/config/website\",\n });\n try {\n let resp = await configAPI.get();\n this.data =\n this.data &&\n this.data.map((layout) => {\n if (layout.name === AppointmentFormLayout) {\n const { googleCaptchaKey = \"\", googleCaptchaSecret = \"\" } =\n resp?.data?.website;\n layout.data = {\n ...layout.data,\n googleCaptchaKey: googleCaptchaKey,\n googleCaptchaSecret: googleCaptchaSecret,\n };\n }\n return layout;\n });\n } catch (error) {\n this.setState({\n error: `${error.message}`,\n });\n console.error(error);\n }\n }\n };\n\n fetchLayoutTimeLine() {\n let page = this.pages[this.state.page];\n if (specialLayout?.includes(page)) return;\n let url = `/website-service/layout/${page}/date`;\n let params = this.state[page] && {\n url: this.state[page],\n };\n const api = new API({ url });\n\n api\n .get(params, {\n \"Accept-Language\": get(\"dataLang\") || \"en\",\n })\n .then((resp) => {\n let timeLines = resp.data.date;\n timeLines =\n timeLines &&\n timeLines\n .filter((time) => time.validTill && time.validFrom)\n .map((time) => {\n let startDatetime = moment(time.validFrom);\n let endDatetime = moment(time.validTill);\n return {\n value: time.validFrom + \"/\" + time.validTill,\n text: (\n \n {startDatetime.format(\"Do MMM\")}\n \n {startDatetime.format(\"hh:mm A\")}\n \n {\" - \"}\n  \n {endDatetime.format(\"Do MMM\")}\n \n {endDatetime.format(\"hh:mm A\")}\n \n \n ),\n };\n });\n\n timeLines = [\n { text: \"Default\", value: \"default\" },\n ...timeLines,\n { text: \"Add New\", value: \"new\" },\n ];\n\n this.setState({ timeLines });\n })\n .catch((error) => {\n console.error(error);\n this.setState({\n error: `Unable to fetch timeline dates: ${error.message}`,\n });\n });\n }\n\n updateState = (keys, value, registerAsUserInput = true) => {\n this.setState({\n pressedSubmitWithCurrentData: false,\n });\n updateStateRecursively.call(this, [\"values\", ...keys], value);\n if (registerAsUserInput) {\n updateStateRecursively.call(this, [\"touched\", ...keys], true);\n }\n\n this.setState({\n announcementBar: {\n description: exportText(value),\n },\n });\n };\n\n handleOnChange = () => {\n this.setState({\n isAnnouncementBarEnabled: !this.state.isAnnouncementBarEnabled,\n });\n };\n\n handleAnnouncementBarSave = () => {\n let payloadData;\n if (this.state.isAnnouncementBarEnabled) {\n payloadData = {\n description: exportText(this.state.values.description),\n status: ANNOUNCEMENT_BAR_STATUS.enabled,\n };\n } else {\n payloadData = {\n description: null,\n status: ANNOUNCEMENT_BAR_STATUS.disabled,\n };\n this.setState({\n isAnnouncementBarEnabled: false,\n });\n }\n const api = new API({ url: \"/website-service/announcement\" });\n if (\n !this.state.isAnnouncementBarEnabled ||\n (this.state.isAnnouncementBarEnabled && payloadData.description)\n ) {\n this.setState({\n announcementBarSubmitting: true,\n });\n api\n .post(payloadData, {\n \"Accept-Language\": get(\"dataLang\") || \"en\",\n })\n .then(() => {\n this.setState({\n showSaveDialog: true,\n });\n })\n .catch((error) => {\n console.error(error);\n this.setState({\n showErrorDialog: true,\n });\n })\n .finally(() => {\n this.setState({\n announcementBarSubmitting: false,\n });\n });\n }\n };\n\n getSelectOptionsData(selectField, dataFor) {\n const api = new API({\n url: `/catalogue-service/${selectField}`,\n });\n\n api\n .get()\n .then((response) => {\n if (response.status === \"ERROR\") {\n console.error(`Error in fetching details of ${dataFor}`);\n return;\n }\n this.selectOptionsData[dataFor] = [];\n if (!response.data[selectField]) {\n response.data[selectField] = [];\n }\n this.selectOptionsData[dataFor] = response.data[selectField].map(\n function (field) {\n return { text: field.name, value: field.slug };\n }\n );\n this.selectOptionsData[dataFor].push(\n { text: `All ${dataFor}`, value: \"ALL\" },\n { text: `Current ${selectField}`, value: \"CURRENT\" }\n );\n const state = `${dataFor}DataLoaded`;\n this.setState({\n loaded: true,\n [state]: true,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n changePage(page) {\n this.setState(\n {\n page: page,\n timeLine: \"default\",\n timeLines: [],\n fromDate: \"\",\n toDate: \"\",\n fromTime: \"\",\n toTime: \"\",\n currentComponent:\n this.pages.length - 2 === page ? \"FooterLayout\" : \"Images\",\n },\n this.fetchWrapper\n );\n }\n\n reorderLayout() {\n this.saveLayouts();\n }\n\n cancelReordering() {\n this.data = this.originalData;\n this.forceUpdate();\n }\n\n onSortEnd({ oldIndex, newIndex }) {\n this.data = arrayMove(this.data, oldIndex, newIndex);\n this.forceUpdate();\n }\n\n appointmentForm = async (formData) => {\n if (!formData) {\n return;\n }\n\n let configAPI = new API({\n url: \"/config-service/config\",\n });\n\n let { googleCaptchaKey, googleCaptchaSecret } = formData;\n\n let website = { googleCaptchaKey, googleCaptchaSecret };\n try {\n let resp = await configAPI.post({ website });\n if (checkHttpResponseCode(resp.code)) {\n this.data =\n this.data &&\n this.data.map((layout) => {\n if (layout.name === AppointmentFormLayout) {\n layout.data = { ...website };\n }\n return layout;\n });\n }\n this.setState({\n submitting: false,\n editing: false,\n showDialog: true,\n });\n } catch (error) {\n this.setState({\n showDialog: true,\n error: error.message,\n submitting: false,\n });\n console.error(error);\n }\n };\n\n mappingPayload(formData) {\n const androidAppConfig = { ...formData?.config?.androidAppConfig };\n const iosAppConfig = { ...formData?.config?.iosAppConfig };\n \n const mapSplashResolutions = (config, mapping, platform) => {\n const splashResolutions = {};\n const splash = config?.splashMdpi?.imageUpload?.resizedUrls;\n const splashFileUrl = config?.splashMdpi?.url;\n const isGif = splashFileUrl?.endsWith(\".gif\");\n \n if (isGif) {\n for (let resolution in mapping) {\n splashResolutions[`splash${mapping[resolution]}`] = splashFileUrl;\n }\n } else {\n for (let key in splash) {\n const resolution = mapping[key];\n if(resolution){\n splashResolutions[`splash${resolution}`] = splash[key]?.[0];\n }\n \n }\n }\n \n Object.assign(config, splashResolutions);\n if (platform === \"ios\") {\n delete config.splashMdpi; // Remove splashMdpi from iOS config\n }\n return config;\n };\n \n const androidMapping = {\n \"200x320\": \"Ldpi\",\n \"320x480\": \"Mdpi\",\n \"480x800\": \"Hdpi\",\n \"720x1280\": \"Xhdpi\",\n \"960x1600\": \"Xxhdpi\",\n \"1280x1920\": \"Xxxhdpi\",\n };\n \n const iosMapping = {\n \"640x1136\": \"640x1136\",\n \"750x1334\": \"750x1334\",\n \"828x1792\": \"828x1792\",\n \"1125x2436\": \"1125x2436\",\n \"1242x2208\": \"1242x2208\",\n \"1242x2688\": \"1242x2688\",\n \"1536x2048\": \"1536x2048\",\n \"1668x2224\": \"1668x2224\",\n \"2048x2732\": \"2048x2732\",\n };\n \n return {\n androidAppConfig: mapSplashResolutions(androidAppConfig, androidMapping, \"android\"),\n iosAppConfig: mapSplashResolutions(iosAppConfig, iosMapping, \"ios\"),\n };\n }\n \n\n saveLayouts(index, formData = null, isDelete = false) {\n let { fromDate, fromTime, toDate, toTime, timeLine } = this.state;\n const page = this.pages[this.state.page];\n let footerId = this.data?.[0]?.data?.id ?? \"\";\n this.setState({\n submitting: true,\n });\n\n if (formData && formData.name === AppointmentFormLayout) {\n this.appointmentForm(formData);\n }\n let data = this.data;\n if (!formData) {\n data =\n index !== undefined\n ? this.data.filter((_, idx) => idx !== index)\n : this.data;\n } else {\n data = data.filter((_, i) => i !== index);\n let layoutname = formData.name;\n delete formData.name;\n data.splice(index, 0, { name: layoutname, data: { ...formData } });\n }\n if (!index && index !== 0) {\n data = this.data;\n }\n if (page === \"footer\" && isDelete) {\n const api = new API({ url: \"/account-service/footer\" });\n this.setState({ loaded: false, showDeleteLayoutPopup: false });\n if (!footerId) {\n this.data = this.data.filter(\n (layout) => layout.name !== \"FooterLayout\"\n );\n this.setState({\n loaded: true,\n timeLine: \"default\",\n editing: false,\n submitting: false,\n showDialog: true,\n error: false,\n });\n return;\n }\n api\n .delete()\n .then(() => {\n this.data = [];\n this.setState({\n loaded: true,\n timeLine: \"default\",\n editing: false,\n submitting: false,\n showDialog: true,\n error: false,\n });\n })\n .catch((error) => {\n this.setState({\n showDialog: true,\n error: error.message,\n submitting: false,\n });\n if (faro?.api?.pushError) {\n faro.api.pushError(error);\n }\n });\n return;\n }\n if (page === \"Splash Screen\") {\n const { iosAppConfig, androidAppConfig } = this.mappingPayload(\n data?.[0]?.data\n );\n\n const api = new API({\n url: \"/config-service/config\",\n });\n this.setState({ loaded: false, submitting: true, showDialog: false });\n api\n .post({ androidAppConfig, iosAppConfig })\n .then(() => {\n this.setState({\n loaded: true,\n timeLine: \"default\",\n editing: false,\n submitting: false,\n showDialog: true,\n error: false,\n });\n })\n .catch((error) => {\n this.setState({\n showDialog: true,\n error: \"Something went wrong\",\n submitting: false,\n loaded: true,\n });\n console.error(error);\n throw error;\n });\n return;\n }\n\n let url =\n page === \"footer\"\n ? \"/account-service/footer\"\n : `/website-service/layout/${page}`;\n data &&\n data.forEach((layout, i) => {\n const layoutName = layout.name;\n if (layoutName === \"SubCategoryCollection\") {\n layout.name = \"CategoryCollection\";\n layout.data.subcategories = true;\n }\n\n if (layoutName === \"CategoryCollection\") {\n if (formData && i === index) {\n layout.data.categoryIds =\n layout.data.category &&\n layout.data.category\n .map((category) => category.id)\n .filter(Boolean);\n delete layout.data.category;\n }\n }\n if (layoutName === \"BlogCollection\") {\n if (formData && i === index) {\n layout.data.blogIds =\n layout.data.blog &&\n layout.data.blog.map((blog) => blog.id).filter(Boolean);\n delete layout.data.blog;\n }\n }\n if (layoutName === \"BrandCollection\") {\n if (formData && i === index) {\n layout.data.brandIds =\n layout.data.brand &&\n layout.data.brand.map((brand) => brand.id).filter(Boolean);\n }\n delete layout.data.brand;\n }\n if (layoutName === \"ProductCollection\") {\n layout.data && delete layout.data.collection;\n if (layout.data.hasImage === -1) {\n layout.data.hasImage = \"\";\n }\n if (layout.data.hasStock === -1) {\n layout.data.hasStock = \"\";\n }\n if (layout.data.hasOffers === -1) {\n layout.data.hasOffers = \"\";\n }\n if (\n layout.data.category &&\n typeof layout.data.category === \"object\"\n ) {\n layout.data.category = layout.data.category.slug;\n }\n if (layout.data.brand && typeof layout.data.brand === \"object\") {\n layout.data.brand = layout.data.brand.slug;\n }\n if (layout.data.tag && typeof layout.data.tag === \"object\") {\n layout.data.tag = layout.data.tag.slug;\n }\n }\n if (layout.name === \"ImageSlideShow\") {\n layout.data &&\n layout.data.activeIndex &&\n delete layout.data.activeIndex;\n }\n if (layout.name === \"GridCollection\") {\n layout.data &&\n layout.data.activeIndex &&\n delete layout.data.activeIndex;\n }\n\n if (layout.name === AppointmentFormLayout) {\n delete layout.data.googleCaptchaKey;\n delete layout.data.googleCaptchaSecret;\n }\n if (layout.name === \"FooterLayout\") {\n layout.data = layout.data.sections;\n layout.name = \"footer\";\n }\n delete layout?.value;\n layout.data && delete layout.data.collection;\n });\n\n const api = new API({\n url: url,\n });\n let params = {\n layouts: data,\n };\n\n if (page === \"footer\") {\n params = {\n layouts: data?.[0]?.data,\n };\n }\n\n if (fromDate && fromTime && toDate && toTime) {\n let fromTimeStamp = moment(fromDate + fromTime, [\"YYYY-MM-DDHH:mm:ss\"])\n .utc()\n .format();\n let toTimeStamp = moment(toDate + toTime, [\"YYYY-MM-DDHH:mm:ss\"])\n .utc()\n .format();\n\n if (timeLine === \"new\") {\n toTimeStamp = moment(toTimeStamp).subtract(1, \"second\").utc().format();\n }\n\n params.validFrom = fromTimeStamp;\n params.validTill = toTimeStamp;\n }\n // if (page === 'tag' && !this.state.hideFilter) {\n // params.hideFilter = true\n // }\n if (page === \"tag\") {\n params.showFilter = this.state.showFilter;\n }\n if (\n page !== \"home\" &&\n this.state[page] !== \"\" &&\n this.state[page] !== \"ALL\" &&\n this.state[page]\n ) {\n params.url = `${this.state[page]}`;\n }\n if (page === \"footer\") {\n let method = footerId === \"\" ? \"post\" : \"put\";\n api[method](params, {\n \"Accept-Language\": get(\"dataLang\") || \"en\",\n }).then(\n (response) => {\n const footerResponseObject = {\n name: \"FooterLayout\",\n data: {\n id: response?.data?.id,\n sections: response?.data?.layouts,\n },\n };\n this.data = [footerResponseObject];\n this.originalData = this.data;\n this.pageId = response?.data.page?.pageId;\n\n this.setState({\n editing: false,\n loaded: true,\n submitting: false,\n showDialog: true,\n error: false,\n errors: {},\n });\n },\n (error) => {\n this.setState({\n showDialog: true,\n loaded: true,\n error: error.message,\n submitting: false,\n editing: false,\n });\n }\n );\n } else if (\n timeLine !== \"new\" ||\n (timeLine === \"new\" && fromDate && fromTime && toDate && toTime)\n ) {\n api\n .put(params, {\n \"Accept-Language\": get(\"dataLang\") || \"en\",\n })\n .then(\n (response) => {\n this.data = this.formatResponse(response?.data?.page?.layouts);\n this.originalData = this.data;\n let validFrom = response?.data?.page?.validFrom;\n let validTill = response?.data?.page?.validTill;\n let fromDate = validFrom && moment(validFrom).format(\"YYYY-MM-DD\");\n let fromTime = validFrom && moment(validFrom).format(\"HH:mm:ss\");\n let toDate = validTill && moment(validTill).format(\"YYYY-MM-DD\");\n let toTime = validTill && moment(validTill).format(\"HH:mm:ss\");\n\n let timeLine =\n validFrom && validTill ? validFrom + \"/\" + validTill : \"default\";\n\n this.pageId = response?.data?.page?.pageId;\n\n this.setState(\n {\n editing: false,\n submitting: false,\n showDialog: true,\n error: false,\n fromDate,\n fromTime,\n toDate,\n toTime,\n timeLine: timeLine,\n errors: {},\n },\n () => {\n this.fetchLayoutTimeLine();\n this.getAppointmentFormData();\n }\n );\n },\n (error) => {\n this.setState({\n showDialog: true,\n error: error.message,\n submitting: false,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n } else if (timeLine === \"new\") {\n this.data = data;\n window.scrollTo(0, 0);\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.editing = false;\n newState.error = {};\n if (!newState.fromDate) {\n newState.errors.fromDate = true;\n }\n if (!newState.toDate) {\n newState.errors.toDate = true;\n }\n if (!newState.fromTime) {\n newState.errors.fromTime = true;\n }\n if (!newState.toTime) {\n newState.errors.toTime = true;\n }\n return newState;\n });\n }\n }\n\n onAddClick() {\n this.setState({\n showLayoutPopup: true,\n });\n }\n\n addLayout(layoutName, data) {\n const layout = {\n name: layoutName,\n data: data,\n };\n this.data.push(layout);\n this.setState({\n showLayoutPopup: false,\n });\n }\n\n onEditClick(layoutIndex, top) {\n const layout = this.data[layoutIndex];\n Object.assign(this.currentLayout, layout);\n this.currentLayout.top = top;\n this.setState({\n editing: true,\n layoutIndex,\n previousState: JSON.parse(JSON.stringify(this.data)),\n });\n }\n\n onRemoveClick(index) {\n this.saveLayouts(index, null, true);\n this.setState({\n showPrompt: false,\n deleteIndex: \"\",\n });\n }\n\n showPrompt(index) {\n this.setState({\n showPrompt: true,\n deleteIndex: index,\n });\n }\n\n updateLayouts(value) {\n const state = this.pages[this.state.page];\n this.setState(\n {\n [state]: value,\n },\n this.fetchScheduledLayout\n );\n }\n\n getRespectiveComponents(component) {\n this.setState({\n currentComponent: component,\n });\n }\n\n getSelectElement(selectField, dataFor) {\n let SearchableComponent = searchableComponent[selectField];\n return selectField !== \"tag\" ? (\n {\n this.setState({ [`${selectField}Object`]: value });\n this.updateLayouts(value.slug);\n }}\n />\n ) : (\n response.data.tag}\n value={this.state[`${selectField}Object`]}\n onChange={(value) => {\n this.setState({ [`${selectField}Object`]: value });\n this.updateLayouts(value.slug);\n }}\n />\n );\n }\n\n setLayoutSchedulerValues(key, value) {\n this.setState({\n [key]: value,\n });\n }\n\n handleDeleteSceduledLayout() {\n let pageId = this.pageId;\n let page = this.pages[this.state.page];\n let api = new API({ url: `/website-service/layout/${page}` });\n this.setState({ loaded: false, showDeleteLayoutPopup: false }, () => {\n api\n .delete(\n { pageId },\n {\n \"Accept-Language\": get(\"dataLang\") || \"en\",\n }\n )\n .then((response) => {\n this.setState(\n { loaded: true, timeLine: \"default\" },\n this.fetchWrapper\n );\n })\n .catch((error) => {\n console.error(error);\n this.setState({ error: error.message });\n });\n });\n }\n\n setLayoutTimeline(value) {\n this.setState({ timeLine: value }, () => {\n if (value === \"new\") {\n this.setState(\n {\n showNewLayoutForm: true,\n fromDate: \"\",\n fromTime: \"\",\n toDate: \"\",\n toTime: \"\",\n },\n this.fetchScheduledLayout\n );\n } else if (value !== \"default\") {\n this.fetchScheduledLayout();\n } else {\n this.changePage(this.state.page);\n }\n });\n }\n\n getSchedulerForm() {\n return (\n \n
    \n
    \n \n \n this.setLayoutSchedulerValues(\"fromDate\", value)\n }\n enableToday\n required\n showError={this.state.errors.fromDate}\n />\n
    \n \n this.setLayoutSchedulerValues(\"fromTime\", value)\n }\n required\n showError={this.state.errors.fromTime}\n />\n
    \n
    \n
    \n \n \n this.setLayoutSchedulerValues(\"toDate\", value)\n }\n enableToday\n required\n showError={this.state.errors.toDate}\n />\n
    \n this.setLayoutSchedulerValues(\"toTime\", value)}\n required\n showError={this.state.errors.toTime}\n />\n
    \n \n );\n }\n\n getTimelineSelector() {\n let { timeLine, timeLines } = this.state;\n let value =\n timeLines &&\n timeLine &&\n (timeLines.filter((t) => t.value === timeLine)[0] || {}).text;\n return (\n isExtensionEnabled(\"LayoutSchedulingSupport\") && (\n
    \n \n }>\n {this.state.timeLines &&\n this.state.timeLines.map((t) => {\n return (\n timeLine !== t.value && (\n this.setLayoutTimeline(t.value)}\n >\n
    {t.text}
    \n \n )\n );\n })}\n
    \n
    \n )\n );\n }\n\n getDeleteButton() {\n return (\n
    \n this.setState({ showDeleteLayoutPopup: true })}\n className=\"delete-btn\"\n title=\"Delete Layout\"\n >\n \"delete\"\n \n \n this.setState({\n showDeleteLayoutPopup: false,\n })\n }\n onOk={this.handleDeleteSceduledLayout}\n />\n
    \n );\n }\n\n listView() {\n const View = () => {\n if (this.state.loaded) {\n return (\n
    \n \n {this.pages[this.state.page] !== \"Splash Screen\" &&\n (this.pages[this.state.page] !== \"footer\" ||\n this.data?.length === 0) && (\n
    \n —————————{\" \"}\n {\" \"}\n ————————\n
    \n )}\n\n \n this.setState({\n showLayoutPopup: false,\n })\n }\n >\n {\n
    \n
      \n {Object.keys(availableComponents).map(\n (component, index) => {\n const isSplashScreen =\n this.pages[this.state.page] === \"Splash Screen\";\n const isFooterPage =\n this.pages[this.state.page] === \"footer\";\n if (\n (isSplashScreen && component !== \"Splash\") ||\n (!isSplashScreen && component === \"Splash\") ||\n (isFooterPage && component !== \"FooterLayout\") ||\n (!isFooterPage && component === \"FooterLayout\")\n ) {\n return null; // Skip rendering this component\n }\n return (\n {\n this.getRespectiveComponents(component);\n }}\n >\n {component.replace(/([A-Z])/g, \" $1\").trim()}\n \n );\n }\n )}\n
    \n \n {Object.keys(\n availableComponents[this.state.currentComponent]\n )\n .filter(\n (layout) =>\n !(\n this.props.theme.name !== \"Trends\" &&\n dualImageLayouts.includes(layout)\n )\n )\n .map((layout, index) => {\n const Component =\n availableComponents[this.state.currentComponent][\n layout\n ];\n let data = {};\n if (layout === \"BannerWithButton\") {\n data.button = true;\n }\n let categoryAndbrandCollection =\n layout === \"SubCategoryCollection\";\n return (\n
    \n

    \n {layout.replace(/([A-Z])/g, \" $1\").trim()}{\" \"}\n {categoryAndbrandCollection && (\n Beta\n )}\n

    \n
    \n \n
    \n {\n this.addLayout(layout, data);\n }}\n >\n {getMessage(\"themes.selection.add\")}\n \n
    \n
    \n
    \n );\n })}\n
    \n
    \n }\n \n {\n this.setState({\n showDialog: false,\n });\n }}\n />\n \n this.setState({\n showPrompt: false,\n deleteIndex: \"\",\n })\n }\n onOk={() => this.onRemoveClick(this.state.deleteIndex)}\n />\n \n );\n }\n return ;\n };\n let selectForCategoryTagBrandSelection = \"\";\n let selectScheduler = this.getTimelineSelector();\n let datePicker =\n this.state.timeLine !== \"default\" &&\n (this.state.timeLine === \"new\"\n ? this.getSchedulerForm()\n : this.getDeleteButton());\n switch (this.pages[this.state.page]) {\n case \"category\":\n selectForCategoryTagBrandSelection = this.getSelectElement(\n \"category\",\n \"categories\"\n );\n break;\n case \"tag\":\n selectForCategoryTagBrandSelection = this.getSelectElement(\n \"tag\",\n \"tags\"\n );\n break;\n case \"brand\":\n selectForCategoryTagBrandSelection = this.getSelectElement(\n \"brand\",\n \"brands\"\n );\n break;\n default:\n selectForCategoryTagBrandSelection = \"\";\n }\n return (\n
    \n {\n this.setState({\n showSaveDialog: false,\n });\n }}\n />\n {\n this.setState({\n showErrorDialog: false,\n });\n }}\n />\n

    \n {getMessage(\"themes.customize.subheading\", {\n name: this.props.theme.name,\n })}\n

    \n \n specialLayout?.includes(page) ? page : `${page} page`\n )}\n default={this.state.page}\n onClick={(index) => {\n this.changePage(index);\n }}\n />\n {!specialLayout?.includes(this.pages[this.state.page]) && (\n \n {this.pages[this.state.page] === \"tag\" && (\n
    \n this.setState({ showFilter: value })}\n />\n
    \n )}\n {datePicker}\n\n
    \n {selectScheduler}\n {selectForCategoryTagBrandSelection}\n
    \n
    \n )}\n \n {this.state.loaded && (\n
    \n \n {getMessage(\"order.form.cancel.text\")}\n \n \n save\n \n
    \n )}\n \n );\n }\n\n render() {\n const { props } = this;\n const View = () => {\n if (this.state.editing) {\n const layout = this.data[this.state.layoutIndex];\n const layoutInfo =\n getLayout(\n this.state.page,\n layout.name,\n this.pages,\n this.selectOptionsData\n ) || {};\n const top = this.currentLayout.top;\n return (\n {\n this.saveLayouts(this.state.layoutIndex, form);\n }}\n onCancel={() => {\n if (this.state.previousState) {\n this.data = JSON.parse(JSON.stringify(this.state.previousState));\n }\n this.setState({\n editing: false,\n previousState: null,\n });\n }}\n onRemove={() => {\n console.info(\"Remove this layout\");\n }}\n sortable\n editing={this.state?.editing}\n />\n );\n }\n return ;\n };\n return (\n \n
    \n
    \n

    {getMessage(\"themes.heading\")}

    \n \n {getMessage(\"themes.customize.nav\")}\n \n
    \n
    \n
    \n
    \n {this.state.showLoader ? (\n \n ) : (\n \n )}\n
    \n
    \n
    \n
    \n \n \n );\n }\n}\n","import React from \"react\";\nimport img from \"./image.png\";\n\nexport default function SplashScreen(props) {\n return (\n
    \n \"\"\n
    \n );\n}\n","import React from \"react\";\nimport HighlightsImg from \"./highlight.png\";\nexport default function Highlights(props) {\n return (\n
    \n \"\"\n
    \n );\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Searchable,\n VALIDATION_TYPES,\n} from \"../../../../../components/Form\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport { get } from \"../../../../../lib/storage\";\n\nexport default class AddForm extends BaseForm {\n render() {\n const { SubmitButton } = this.buttons;\n const { val } = this.props;\n const { Form } = this.components;\n this.direction = get(\"dataLang\") === \"ar\" ? \"rtl\" : \"ltr\";\n return (\n
    \n {val === \"Link\" ? (\n \n \n \n \n ) : (\n \n response.data.tag}\n {...this.generateStateMappers({\n stateKeys: [\"tag\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n \n )}\n {getMessage(\"category.form.submitText\")}\n
    \n );\n }\n}\n","import React from \"react\";\nimport Tree from \"../../../../components/Tree\";\nimport Loader from \"../../../../components/Loader\";\nimport AuthenticatedPage from \"../../../../containers/AuthenticatedPage\";\nimport API from \"../../../../lib/api\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../../components/DropDown\";\nimport AddForm from \"./AddForm\";\nimport \"./style.css\";\nimport { Popup } from \"../../../../components/Popup\";\nimport Image from \"../../../../components/Image\";\nimport TagIcon from \"./Tag-icon.svg\";\nimport LinkIcon from \"./Link-icon.svg\";\nimport { get } from \"../../../../lib/storage\";\n\nfunction recursivelyTraversing(data, path, index) {\n if (path.length <= index) {\n return data;\n } else {\n let key = path[index];\n return data.filter((item) => {\n if (item.index === key) {\n if (item.hasOwnProperty(\"children\")) {\n if (path.length > index + 1) {\n item.children = recursivelyTraversing(item.children, path, ++index);\n item.menu = item.children;\n return item;\n }\n }\n return null;\n } else {\n return item;\n }\n });\n }\n}\n\nfunction generateSubMenu(data, submit = false, counter = 0) {\n data.map((item, index) => {\n item.index = index.toString() + \",\" + counter.toString();\n if (!item.menu) {\n if (item.id) {\n // Either category or tag\n if (item.url && item.url.includes(\"category\")) {\n item[\"c\"] = item.id;\n }\n if (item.url && item.url.includes(\"tag\")) {\n item[\"t\"] = item.id;\n }\n }\n } else {\n if (item.id) {\n // Either category or tag\n if (item.url && item.url.includes(\"category\")) {\n item[\"c\"] = item.id;\n }\n if (item.url && item.url.includes(\"tag\")) {\n item[\"t\"] = item.id;\n }\n }\n item[submit ? \"menu\" : \"children\"] = generateSubMenu(\n submit ? item.children : item.menu,\n submit,\n item.index\n );\n }\n if (!submit) {\n item.title = item.name;\n item.link = item.url;\n delete item.name;\n delete item.url;\n } else {\n item.name = item.title;\n if (item.hasOwnProperty(\"c\")) {\n item.c = item.id;\n delete item.name;\n delete item.link;\n }\n\n if (item.hasOwnProperty(\"t\")) {\n item.t = item.id;\n delete item.name;\n delete item.link;\n }\n\n delete item.children;\n delete item.id;\n delete item.url;\n delete item.title;\n delete item.index;\n }\n\n return item;\n });\n\n return data;\n}\n\nfunction findingNode(data, path, index) {\n if (path.length <= index) {\n return data;\n } else {\n if (index !== 0) {\n data = data.children;\n }\n }\n let key = path[index];\n let returnedObject = null;\n data.map((item) => {\n if (item.index === key) {\n returnedObject = findingNode(item, path, ++index);\n }\n return null;\n });\n return returnedObject;\n}\nclass CategorySequencing extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n treeData: [],\n showPopup: false,\n };\n\n this.removeItem = this.removeItem.bind(this);\n this.showPopup = this.showPopup.bind(this);\n this.hidePopup = this.hidePopup.bind(this);\n this.onAddClick = this.onAddClick.bind(this);\n this.onConfirmClick = this.onConfirmClick.bind(this);\n this.removeItemFromList = this.removeItemFromList.bind(this);\n this.onAppendMethod = this.onAppendMethod.bind(this);\n this.onAppendClick = this.onAppendClick.bind(this);\n this.headers= { \"Accept-Language\": get(\"dataLang\") || \"en\" }\n }\n\n onAppendClick(type) {\n this.setState({\n showPopup: true,\n append: true,\n val: type,\n });\n }\n\n onAppendMethod() {\n let treeData = JSON.parse(JSON.stringify(this.state.treeData));\n if (this.state.val === \"Link\") {\n treeData.push({\n title: this.state.data.linkText,\n link: this.state.data.href,\n index: this.state.treeData.length,\n });\n } else {\n let tagId = (this.state.data.tag && this.state.data.tag.id) || null;\n let tagName = (this.state.data.tag && this.state.data.tag.name) || null;\n treeData.push({\n t: tagId,\n id: tagId,\n title: tagName,\n index: this.state.treeData.length,\n });\n }\n this.setState({\n treeData,\n onSubmit: true,\n append: false,\n });\n }\n\n removeItemFromList(list, key) {\n return list.filter((item) => {\n if (item.index !== key) {\n return item;\n }\n return null;\n });\n }\n removeItem(path) {\n let treeData = JSON.parse(JSON.stringify(this.state.treeData));\n let data = recursivelyTraversing(treeData, path, 0);\n this.setState({\n treeData: data,\n onSubmit: true,\n });\n }\n\n async onConfirmClick(data) {\n await this.setState({\n data,\n });\n\n this.state.append ? await this.onAppendMethod() : await this.onAddClick();\n this.hidePopup();\n }\n\n showPopup(path, type) {\n this.setState({\n showPopup: true,\n path,\n val: type,\n });\n }\n\n hidePopup() {\n this.setState({\n showPopup: false,\n });\n }\n\n onAddClick() {\n let treeData = JSON.parse(JSON.stringify(this.state.treeData));\n let item = findingNode(treeData, this.state.path, 0);\n if (item) {\n if (this.state.val === \"Link\") {\n if (item.hasOwnProperty(\"children\")) {\n item.children.push({\n title: this.state.data.linkText,\n link: this.state.data.href,\n index: item.children.length + \",\" + item.index,\n });\n item.menu = item.children;\n } else {\n item.children = [];\n item.children.push({\n title: this.state.data.linkText,\n link: this.state.data.href,\n index: item.children.length + \",\" + item.index,\n });\n item.menu = item.children;\n }\n } else {\n let tagId = (this.state.data.tag && this.state.data.tag.id) || null;\n let tagName = (this.state.data.tag && this.state.data.tag.name) || null;\n if (this.state.val === \"Tag\" && tagId && tagName) {\n if (item.hasOwnProperty(\"children\")) {\n item.children.push({\n t: tagId,\n id: tagId,\n title: tagName,\n index: item.children.length + \",\" + item.index,\n });\n item.menu = item.children;\n } else {\n item.children = [];\n item.children.push({\n t: tagId,\n id: tagId,\n title: tagName,\n index: item.children.length + \",\" + item.index,\n });\n item.menu = item.children;\n }\n }\n }\n this.setState({\n treeData,\n onSubmit: true,\n });\n }\n }\n\n fetchNavData = () => {\n this.menuapi = new API({ url: \"/website-service/nav\" });\n this.menuapi\n .get({},this.headers)\n .then((res) => {\n const menu = res.data || [];\n if (menu && menu.length > 0) {\n let generateTree = generateSubMenu(menu);\n this.setState({\n loading: false,\n treeData: generateTree,\n });\n } else {\n this.setState({\n loading: false,\n });\n }\n })\n .catch((error) => {\n console.error(error);\n if (error.code === 401 || error.code === 403) {\n throw error;\n } else {\n this.setState({\n error: error.message,\n loading: false,\n });\n }\n });\n };\n\n componentDidMount() {\n this.fetchNavData();\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (this.state.onSubmit && this.state.onSubmit !== prevState.onSubmit) {\n const tree = JSON.parse(JSON.stringify(this.state.treeData));\n let data = generateSubMenu(tree, true);\n this.api = new API({ url: \"/website-service/nav\" });\n this.api.post(\n { menu: data }, \n this.headers\n ).then(\n (response) => {\n this.setState({\n success: true,\n onSubmit: false,\n });\n },\n (error) => {\n if (error.code === 401 || error.code === 403) {\n throw error;\n } else {\n this.setState({\n error: error.message,\n onSubmit: false,\n });\n }\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n }\n componentWillUnmount() {\n this.api && this.api.cancel();\n this.menuapi && this.menuapi.cancel();\n }\n\n handleResetCatagories = () => {\n this.api = new API({ url: \"/website-service/nav\" });\n const data = { menu: [] };\n this.api\n .post({ data }, this.headers)\n .then((response) => {\n this.fetchNavData();\n })\n .catch((error) => {\n console.error(error);\n if (error.code === 401 || error.code === 403) {\n throw error;\n } else {\n this.setState({\n error: error.message,\n loading: false,\n });\n }\n });\n };\n\n render() {\n const { loading, treeData, error, showPopup, val } = this.state;\n return (\n \n
    \n

    {getMessage(\"navigation.sequencing.heading\")}

    \n
    \n \n {\n \n {getMessage(\"navigation.add.button\")}\n \n }\n >\n {\n this.onAppendClick(\"Tag\");\n }}\n >\n {getMessage(\"navigation.dropdown.item.addTag\")}\n \n {\n this.onAppendClick(\"Link\");\n }}\n >\n {getMessage(\"navigation.dropdown.item.addLink\")}\n \n \n }\n
    \n
    \n \n \n \n {loading ? (\n \n ) : (\n \n {error &&
    {error}
    }\n {treeData.length > 0 ? (\n {\n if (isDragging) {\n this.treeData = this.state.treeData;\n }\n }}\n getNodeKey={({ node }) => node.index}\n onVisibilityToggle={() => {\n this.setState({\n onSubmit: false,\n });\n }}\n onChange={(e) => this.setState({ treeData: e, onSubmit: true })}\n canDrop={({ node, nextParent, prevParent }) => {\n const nextParentId = nextParent && nextParent.id;\n const prevParentId = prevParent && prevParent.id;\n if (node.hasOwnProperty(\"c\")) {\n if (nextParentId === prevParentId) {\n return true;\n }\n return false;\n }\n return true;\n }}\n generateNodeProps={({ node, path }) => ({\n buttons: [\n node.hasOwnProperty(\"c\") ? null : node.hasOwnProperty(\n \"t\"\n ) ? (\n \n ) : (\n \n ),\n }>\n {\n this.showPopup(path, \"Tag\");\n }}\n >\n {getMessage(\"navigation.dropdown.item.addTag\")}\n \n {\n this.showPopup(path, \"Link\");\n }}\n >\n {getMessage(\"navigation.dropdown.item.addLink\")}\n \n ,\n !node.hasOwnProperty(\"c\") ? (\n this.removeItem(path)}\n >\n Delete Category\n \n ) : null,\n ],\n })}\n />\n ) : (\n

    \n {getMessage(\"navigation.nosequence.display\")}\n

    \n )}\n
    \n )}\n \n );\n }\n}\n\nexport default CategorySequencing;\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { getMessage } from \"../../../lib/translator\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport { getSession } from \"../../../lib/auth\";\nimport Change from \"./change\";\nimport Customize from \"./customize\";\nimport CategorySequence from \"../../catalogue/Categories/CategorySequencing\";\nimport \"./style.css\";\n\nfunction getPage(action) {\n const pages = {\n change: Change,\n customize: Customize,\n navigation: CategorySequence,\n };\n return pages[action];\n}\n\nfunction getThemeDetails() {\n const org = getSession().organization;\n return org.theme;\n}\n\nexport default function (props) {\n const Page = getPage(props.match.params.action);\n const theme = getThemeDetails();\n\n return Page ? (\n \n ) : (\n \n

    {getMessage(\"themes.heading\")}

    \n
    \n \"theme\"\n

    {getMessage(\"themes.subheading\", { name: theme.name })}

    \n
    \n \n {getMessage(\"themes.change.text\")}\n \n \n {getMessage(\"themes.customize.text\")}\n \n
    \n
    \n \n );\n}\n","import React, { Component } from \"react\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport Checkbox from \"../../../../components/Form/Inputs/Checkbox\";\nimport \"./style.css\";\n\nclass ExtensionForm extends Component {\n constructor(props) {\n super(props);\n this.state = {\n error: \"\",\n submitting: false,\n checked: this.props.value.status === \"ENABLED\",\n };\n }\n getList(desc) {\n if (!desc) {\n return null;\n }\n let descriptions = desc.map(function (description, i) {\n return
  • {description}
  • ;\n });\n return
      {descriptions}
    ;\n }\n render() {\n const { props } = this;\n const data = this.props.value;\n // TODO: Get this info from API\n return (\n
    \n {this.state.formError && (\n
    {this.state.formError}
    \n )}\n
    \n {data.icon ? (\n
    \n \"extension\n
    \n ) : (\n \"\"\n )}\n
    \n {data.name}\n
    \n {data.pricing && (\n
    \n
    {data.pricing.split(\" \")[0]}
    \n
    \n {data.pricing.split(\" \").slice(1).join(\" \")}\n
    \n
    \n )}\n
    \n {data.version ? (\n
    \n \n {getMessage(\"extensions.version\")}:{\" \"}\n \n {data.version}\n
    \n ) : (\n \"\"\n )}\n
    \n
    \n
    \n
    \n
    {data.description}
    \n {this.props.details && (\n
    \n
    \n {getMessage(\"extensions.whatwillchange\")}\n
    \n {this.getList(this.props.details.split(\"|\").filter(Boolean))}\n
    \n )}\n {props.showExtra ? (\n
    \n
    \n \n {getMessage(\"extensions.lastUpdated\")}:{\" \"}\n \n \n {data.lastUpdated ? data.lastUpdated : \"-\"}\n \n
    \n
    \n \n {getMessage(\"extensions.activeInstallations\")}:{\" \"}\n \n \n {data.activeInstallations ? data.activeInstallations : 0}\n \n
    \n
    \n ) : (\n \"\"\n )}\n
    \n
    \n
    \n {data.status === \"DISABLED\" || props.value.status === \"DISABLED\" ? (\n {\n this.setState({ checked: value });\n }}\n className=\"extension-checkbox\"\n />\n ) : (\n \"\"\n )}\n
    \n \n {data.status === \"ENABLED\"\n ? getMessage(\"extensions.uninstall\")\n : getMessage(\"extensions.install\")}\n \n \n
    \n
    \n
    \n );\n }\n}\n\nexport default ExtensionForm;\n","import React from \"react\";\nimport {\n BaseForm,\n Select,\n VALIDATION_TYPES,\n Radio,\n Input,\n} from \"../../../../../components/Form\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport API from \"../../../../../lib/api\";\nimport \"./style.css\";\nimport { Dialog } from \"../../../../../components/Popup\";\nimport { withRouter } from \"react-router-dom\";\n\nfunction generateData(oldArray, languageKey) {\n return oldArray.map((data) => {\n let key = data.toLowerCase().replace(/_/g, \"\");\n return {\n text: getMessage(`orderprocessing.${languageKey}.${key}`),\n value: data,\n };\n });\n}\n// Function to change if two objects are same . It does not do a deep comparision.\nfunction isObjSame(obj1, obj2) {\n for (let key in obj1) {\n if (obj2[key] !== obj1[key]) {\n return false;\n }\n }\n return true;\n}\n\nclass InstoreConfigForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.showSuccessDialog = false;\n this.state.showErrorDialog = false;\n this.state.formError = \"\";\n this.handleClose = this.handleClose.bind(this);\n this.closeDialogs = this.closeDialogs.bind(this);\n this.resetToDefault = this.resetToDefault.bind(this);\n }\n\n handleClose() {\n this.props.history.goBack();\n }\n\n resetToDefault() {\n let values = { ...this.state.values };\n const globalConfig = { ...this.props.data.config.globalConfig };\n values = globalConfig;\n this.setState({\n values,\n });\n }\n\n handleSubmit(data) {\n const { props } = this;\n const id = props.data.id;\n const api = new API({ url: `/account-service/extension/${id}` });\n const storeId = props.storeId;\n const { storeSpecific, globalConfig } = props.config.config;\n let config = {};\n if (storeId) {\n // saving store specific settings\n config[\"globalConfig\"] = { ...globalConfig };\n if (storeSpecific) {\n config[\"storeSpecific\"] = { ...storeSpecific };\n } else {\n config[\"storeSpecific\"] = {};\n }\n config[\"storeSpecific\"][storeId] = data;\n if (isObjSame(data, config[\"globalConfig\"])) {\n delete config[\"storeSpecific\"][storeId];\n }\n } else {\n // saving global settings\n config[\"globalConfig\"] = data;\n if (storeSpecific) {\n config[\"storeSpecific\"] = { ...storeSpecific };\n }\n }\n let params = { status: props.data.status };\n params[\"config\"] = {};\n params[\"config\"][\"globalConfig\"] = { ...config.globalConfig };\n if (config.storeSpecific) {\n params[\"config\"][\"storeSpecific\"] = [];\n for (let key in config.storeSpecific) {\n config.storeSpecific[key][\"storeId\"] = key;\n params[\"config\"][\"storeSpecific\"].push(config.storeSpecific[key]);\n }\n }\n return api\n .put(params)\n .then(\n (response) => {\n props.updateConfig(response.data.extension.config);\n this.setState({ formError: \"\", showSuccessDialog: true });\n },\n (error) => {\n this.setState({ formError: error.message, showErrorDialog: true });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n onSubmit(data) {\n this.setState({\n submitting: true,\n });\n this.handleSubmit(data).then(() => {\n this.setState({ submitting: false });\n });\n }\n\n closeDialogs() {\n this.setState({\n showSuccessDialog: false,\n showErrorDialog: false,\n });\n }\n\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n const { data, storeId } = this.props;\n const { values } = this.state;\n const {\n pickingSequence,\n pickerSeesOrder,\n packingOfOrder,\n orderLabelPrinting,\n orderLabelFormat,\n additionalQCStep,\n } = data.allowedConfig;\n\n const pickingSequenceMethodsOpts =\n data && generateData(pickingSequence.typeMeta, \"pickingMethod\");\n const pickingViewOptions =\n data && generateData(pickerSeesOrder.typeMeta, \"pickingView\");\n const OrderLabelPrintingOptions =\n data && generateData(orderLabelPrinting.typeMeta, \"orderLabelPrinting\");\n const OrderLabelFormatOptions =\n data && generateData(orderLabelFormat.typeMeta, \"orderLabelFormat\");\n const qualityCheckingOptions =\n data && generateData(additionalQCStep.typeMeta, \"qualityChecking\");\n\n let packingDetailsOptions = [];\n packingOfOrder.typeMeta.forEach((data) => {\n if (\n data !== \"DONE_BY_CHECKER\" ||\n (data === \"DONE_BY_CHECKER\" &&\n values.additionalQCStep === \"DONE_BY_CHECKER\")\n ) {\n let key = data.toLowerCase().replace(/_/g, \"\");\n packingDetailsOptions.push({\n text: getMessage(`orderprocessing.packingDetails.${key}`),\n value: data,\n });\n }\n });\n return (\n
    \n \n \n
    \n \n \n \n {this.state.values.orderLabelPrinting !== \"NOT_NEEDED\" && (\n \n )}\n \n \n \n {getMessage(\"orderprocessing.qrCodeFormat.description\")}\n \n
    \n \n {getMessage(\"orderprocessing.config.form.submit.text\")}\n \n {storeId && (\n \n {getMessage(\"orderprocessing.config.form.resetToDefault\")}\n \n )}\n \n {getMessage(\"orderprocessing.config.form.cancel.text\")}\n \n
    \n \n
    \n );\n }\n}\nexport default withRouter(InstoreConfigForm);\n","import React, { Component } from \"react\";\nimport InstoreConfigForm from \"./form\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport { isExtensionEnabled, getStores } from \"../../../../../lib/auth\";\nimport Loader from \"../../../../../components/Loader\";\n\nconst multiStoresEnabled = isExtensionEnabled(\"MultiStoreSupport\");\n\nfunction modifyData(response) {\n let config = {};\n config[\"globalConfig\"] = { ...response.globalConfig };\n if (response.storeSpecific) {\n config[\"storeSpecific\"] = {};\n response[\"storeSpecific\"].forEach((obj) => {\n config[\"storeSpecific\"][obj.storeId] = obj;\n });\n }\n return config;\n}\n\nclass StoreSelect extends Component {\n constructor(props) {\n super(props);\n this.onChange = this.onChange.bind(this);\n }\n\n onChange(e) {\n this.props.onChange(e.target.value);\n }\n\n render() {\n const { stores, value } = this.props;\n return (\n \n );\n }\n}\n\nexport default class InstoreSettings extends Component {\n constructor(props) {\n super(props);\n let modifiedResponse = props.data.config;\n if (modifiedResponse[\"storeSpecific\"]) {\n modifiedResponse = modifyData(props.data.config);\n }\n this.state = {\n storeId: null,\n stores: [],\n config: modifiedResponse,\n showLoader: false,\n };\n this.updateStoreId = this.updateStoreId.bind(this);\n this.updateConfig = this.updateConfig.bind(this);\n }\n\n updateStoreId(storeId) {\n this.setState({\n storeId: storeId,\n });\n }\n\n componentDidMount() {\n // If multi store extension is enabled, get the stores data\n if (multiStoresEnabled) {\n this.setState({\n showLoader: true,\n });\n let stores = getStores();\n if (stores) {\n stores = stores\n .filter((store) => store.hasPicking)\n .map((store) => {\n return {\n text: store.name,\n value: store.id,\n };\n });\n }\n this.setState({\n stores: stores,\n showLoader: false,\n });\n }\n }\n\n updateConfig(updatedConfig) {\n this.setState({\n config: modifyData(updatedConfig),\n });\n }\n\n render() {\n const { data } = this.props;\n const { storeId, stores, config, showLoader } = this.state;\n return showLoader ? (\n \n ) : (\n
    \n
    \n

    \n {getMessage(\"orderprocessing.config.heading\")}\n

    \n
    \n {data.isStoreConfigurable && stores.length > 0 && (\n \n )}\n
    \n
    \n \n
    \n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Textarea,\n VALIDATION_TYPES,\n} from \"../../../../../components/Form\";\nimport { Dialog } from \"../../../../../components/Popup\";\nimport API from \"../../../../../lib/api\";\nimport { getMessage } from \"../../../../../lib/translator\";\n\nexport default class AnalyticsForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.showSuccessDialog = false;\n this.state.showErrorDialog = false;\n this.state.formError = \"\";\n this.closeDialogs = this.closeDialogs.bind(this);\n }\n\n handleSubmit(data) {\n const api = new API({ url: `/config-service/config` });\n\n let params = {\n analytics: data.analytics,\n };\n\n return api\n .post(params)\n .then(\n (response) => {\n this.setState({ formError: \"\", showSuccessDialog: true });\n },\n (error) => {\n this.setState({ formError: error.message, showErrorDialog: true });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n onSubmit(data) {\n this.setState({\n submitting: true,\n });\n this.handleSubmit(data).then(() => {\n this.setState({ submitting: false });\n });\n }\n\n closeDialogs() {\n this.setState({\n showSuccessDialog: false,\n showErrorDialog: false,\n });\n }\n render() {\n const { Form } = this.components;\n const { SubmitButton, CancelButton } = this.buttons;\n return (\n
    \n

    {getMessage(\"extensions.analytics.heading\")}

    \n \n \n
    \n \n {getMessage(\"extensions.analytics.gaAccount.description\")}\n \n \n {getMessage(\"extensions.analytics.conversionTag.description\")}\n \n Submit\n Cancel\n \n
    \n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n VALIDATION_TYPES,\n} from \"../../../../../components/Form\";\nimport { Dialog } from \"../../../../../components/Popup\";\nimport API from \"../../../../../lib/api\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport \"./style.css\";\n\nexport default class TawkChatForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.showSuccessDialog = false;\n this.state.showErrorDialog = false;\n this.state.formError = \"\";\n this.closeDialogs = this.closeDialogs.bind(this);\n }\n\n closeDialogs() {\n this.setState({\n showErrorDialog: false,\n showSuccessDialog: false,\n });\n }\n\n handleSubmit(data) {\n const id = this.props.data.id;\n const api = new API({ url: `/account-service/extension/${id}` });\n\n let params = { status: this.props.data.status };\n params[\"config\"] = {};\n for (let field in data) {\n params[\"config\"][field] = data[field];\n }\n\n return api\n .put(params)\n .then(\n (response) => {\n this.setState({ formError: \"\", showSuccessDialog: true });\n },\n (error) => {\n this.setState({\n formError: error.message,\n showErrorDialog: true,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n onSubmit(data) {\n this.setState({\n submitting: true,\n });\n this.handleSubmit(data).then(() => {\n this.setState({ submitting: false });\n });\n }\n\n render() {\n const { Form } = this.components;\n const { SubmitButton, CancelButton } = this.buttons;\n\n return (\n
    \n

    {getMessage(\"extensions.tawk.live.chat\")}

    \n \n \n
    \n \n {getMessage(\"extensions.tawk.site.id.description\")}\n Admin → Property Settings\n \n \n {getMessage(\"extensions.tawk.widget.id.description\")}\n Admin → Chat Widget → Direct Chat Link\n \n {getMessage(\"extensions.tawk.save\")}\n {getMessage(\"extensions.tawk.cancel\")}\n \n
    \n );\n }\n}\n","import React from \"react\";\nimport Tabs from \"../../../../../components/Tabs\";\nimport {\n BaseForm,\n Input,\n Select,\n VALIDATION_TYPES,\n MultiTextInput,\n Checkbox,\n} from \"../../../../../components/Form\";\nimport Loader from \"../../../../../components/Loader\";\nimport { Dialog } from \"../../../../../components/Popup\";\n\nimport { saveEntityMetaData } from \"../../../../../lib/auth\";\nimport API from \"../../../../../lib/api\";\nimport { getMessage } from \"../../../../../lib/translator\";\n\nimport \"./style.css\";\n\nconst ConfigTypes = [\n {\n text: \"Number\",\n value: \"number\",\n },\n {\n text: \"String\",\n value: \"string\",\n },\n {\n text: \"Text\",\n value: \"text\",\n },\n {\n text: \"Boolean\",\n value: \"boolean\",\n },\n {\n text: \"Enum\",\n value: \"enum\",\n },\n {\n text: \"Country\",\n value: \"country\",\n },\n {\n text: \"MultiValued Enum\",\n value: \"multiValued Enum\",\n },\n {\n text: \"File\",\n value: \"file\",\n },\n {\n text: \"Date\",\n value: \"date\",\n },\n {\n text: \"Percentage\",\n value: \"percentage\",\n },\n];\n\nclass EntityMetaData extends BaseForm {\n constructor(props) {\n super(props);\n\n this.tabHeaders = [\n \"order\",\n \"customer\",\n \"product\",\n \"store\",\n \"address\",\n \"offer\",\n ];\n this.layouts = [\"text\", \"string\", \"number\"];\n\n this.state.currentTabIndex = 0;\n this.state.showLoader = 0;\n this.state.showErrorDialog = false;\n this.state.showDeleteDialog = false;\n this.state.showSuccessDialog = false;\n\n this.handleOnTabClick = this.handleOnTabClick.bind(this);\n this.addLayout = this.addLayout.bind(this);\n this.deleteKey = this.deleteKey.bind(this);\n }\n\n componentDidMount() {\n // const id = this.props.data.id\n const api = new API({ url: `/config-service/meta-data` });\n this.setState({\n showLoader: true,\n });\n api\n .get()\n .then(\n (response) => {\n let tranformedResponse = response.data.config.entityMetaData;\n let values = {};\n Object.entries(tranformedResponse).forEach(([key, value]) => {\n values[key] = [];\n value &&\n Object.entries(value) &&\n Object.entries(value).forEach(([entity, details, index]) => {\n let entityMetadata = {\n name: entity,\n type: details.type,\n typeMeta: details.typeMeta && details.typeMeta.allowedValue,\n indexed: details.indexed,\n searchable: details.searchable,\n isPrivate: details?.isPrivate,\n mandatory: details.mandatory,\n id: details.id,\n };\n if (\n details.type === \"country\" &&\n details.typeMeta &&\n details.typeMeta.allowedValue\n ) {\n if (details.typeMeta.allowedValue.length) {\n entityMetadata.typeMeta = details.typeMeta.allowedValue.map(\n (c) => {\n return { name: c };\n }\n );\n }\n }\n values[key].push(entityMetadata);\n });\n });\n this.setState({\n values,\n showLoader: false,\n });\n },\n (error) => {\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n this.setState({\n formError: error,\n showLoader: false,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n handleOnTabClick(index) {\n this.setState({\n currentTabIndex: index,\n });\n }\n\n addLayout() {\n let values = Object.assign({}, this.state.values);\n const name = this.tabHeaders[this.state.currentTabIndex];\n const fields = this.state.values[name] || [];\n fields.push({\n name: \"\",\n type: \"string\",\n });\n values[name] = fields;\n this.setState({\n values,\n });\n }\n\n deleteKey(index) {\n const deleteIndex = this.state.deleteIndex;\n let values = Object.assign({}, this.state.values);\n const name = this.tabHeaders[this.state.currentTabIndex];\n let keys = values[name];\n keys.splice(deleteIndex, 1);\n values[name] = keys;\n this.setState({\n values,\n deleteIndex: null,\n showDeleteDialog: false,\n });\n }\n\n onSubmit(data) {\n this.setState({\n submitting: true,\n });\n const api = new API({ url: `/config-service/meta-data` });\n let dataToSend = {};\n let values = Object.assign({}, this.state.values);\n Object.entries(values).forEach(([key, value]) => {\n let entityMetaData = {};\n value.forEach((obj, index) => {\n entityMetaData[obj.name] = {\n type: obj.type,\n indexed: obj.indexed,\n mandatory: obj.mandatory,\n searchable: obj?.searchable,\n isPrivate: obj?.isPrivate,\n };\n if (obj.id) {\n entityMetaData[obj.name].id = obj.id;\n }\n if (obj.type === \"enum\" || obj.type === \"multiValued Enum\") {\n entityMetaData[obj.name].typeMeta = { allowedValue: obj.typeMeta };\n } else if (obj.type === \"country\") {\n delete entityMetaData[obj.name].typeMeta;\n }\n if (obj.name === \"\") {\n delete entityMetaData[obj.name];\n }\n });\n dataToSend[key] = entityMetaData;\n });\n let params = {\n config: {\n entityMetaData: dataToSend,\n },\n };\n api\n .put(params)\n .then(\n (response) => {\n this.setState({\n showSuccessDialog: true,\n submitting: false,\n });\n saveEntityMetaData(response.data.config.entityMetaData);\n },\n (error) => {\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n this.setState({\n formError: error.message,\n showErrorDialog: true,\n submitting: false,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n render() {\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n const name = this.tabHeaders[this.state.currentTabIndex];\n const fields = this.state.values[name];\n return this.state.showLoader ? (\n \n

    {getMessage(\"entityMetaData.heading\")}

    \n \n
    \n ) : (\n
    \n

    {getMessage(\"entityMetaData.heading\")}

    \n \n {\n this.setState({ showSuccessDialog: false });\n }}\n closeText={getMessage(\"entityMetaData.okay\")}\n />\n this.setState({ showErrorDialog: false })}\n closeText={getMessage(\"entityMetaData.okay\")}\n />\n \n this.setState({ showDeleteDialog: false, deleteIndex: null })\n }\n closeText={getMessage(\"entityMetaData.cancel\")}\n okText={getMessage(\"entityMetaData.delete\")}\n onOk={this.deleteKey}\n />\n
    \n \n
    \n
    \n
    \n {fields &&\n fields.map((field, index) => {\n const type = field.type;\n return (\n
    \n
    \n \n \n {(type === \"enum\" ||\n type === \"multiValued Enum\") && (\n \n )}\n {name === \"product\" && (\n \n )}\n {name === \"product\" && (\n \n )}\n {name === \"product\" && (\n \n )}\n \n this.setState({\n showDeleteDialog: true,\n deleteIndex: index,\n })\n }\n >\n {getMessage(\"entityMetadata.delete\")}\n \n
    \n
    \n );\n })}\n
    \n
    \n \n {getMessage(\"entityMetadata.add\")}\n \n
    \n
    \n \n {getMessage(\"entityMetaData.submitText\")}\n \n this.props.history.goBack()}\n >\n {getMessage(\"entityMetaData.cancel\")}\n \n
    \n
    \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default EntityMetaData;\n","import React from \"react\";\nimport {\n BaseForm,\n VALIDATION_TYPES,\n SelectSearch,\n} from \"../../../../../components/Form\";\nimport { Dialog } from \"../../../../../components/Popup\";\nimport API from \"../../../../../lib/api\";\nimport { getLanguages } from \"../../../../../lib/commonlyused\";\nimport { getMessage } from \"../../../../../lib/translator\";\n\nexport default class LanguageSelect extends BaseForm {\n constructor(props) {\n super(props);\n this.state.showSuccessDialog = false;\n this.state.showErrorDialog = false;\n this.state.formError = \"\";\n if (this.state.values?.globalConfig?.languages?.length) {\n // format languages from ['en'] to [{ name: 'Engligh', code: 'en' }]\n this.state.values.globalConfig.languages = getLanguages().filter((lang) =>\n this.state.values.globalConfig.languages.includes(lang.code)\n );\n }\n this.closeDialogs = this.closeDialogs.bind(this);\n }\n\n handleSubmit(data) {\n const id = this.props.data.id;\n const api = new API({ url: `/account-service/extension/${id}` });\n\n let params = { status: this.props.data.status };\n params[\"config\"] = JSON.parse(JSON.stringify(data));\n // format languages from [{ name: 'Engligh', code: 'en' }] to ['en']\n params.config.globalConfig.languages =\n params.config.globalConfig.languages.map((lang) => lang.code);\n\n return api\n .put(params)\n .then(\n (response) => {\n this.setState({ formError: \"\", showSuccessDialog: true });\n },\n (error) => {\n this.setState({ formError: error.message, showErrorDialog: true });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n onSubmit(data) {\n this.setState({\n submitting: true,\n });\n this.handleSubmit(data).then(() => {\n this.setState({ submitting: false });\n });\n }\n\n closeDialogs() {\n this.setState({\n showSuccessDialog: false,\n showErrorDialog: false,\n });\n }\n render() {\n const { Form } = this.components;\n const { SubmitButton, CancelButton } = this.buttons;\n return (\n
    \n

    \n {getMessage(\"extensions.multiLingual.heading\")}\n

    \n \n \n
    \n
    \n {\n let x = a.name.toLowerCase();\n let y = b.name.toLowerCase();\n return x < y ? -1 : x > y ? 1 : 0;\n })}\n nameKey=\"name\"\n valueKey=\"code\"\n searchByName\n multiple\n autoComplete=\"off\"\n {...this.generateStateMappers({\n stateKeys: [\"globalConfig\", \"languages\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n
    \n Submit\n Cancel\n
    \n
    \n );\n }\n}\n","import React from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport Loader from \"../../../../../components/Loader\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport { BaseForm, Input } from \"../../../../../components/Form\";\nimport API from \"../../../../../lib/api\";\nimport { Dialog } from \"../../../../../components/Popup\";\nimport \"./style.css\";\n\nclass OrderManagementForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.showLoader = false;\n this.handleClose = this.handleClose.bind(this);\n this.closeDialogs = this.closeDialogs.bind(this);\n }\n\n componentDidMount() {\n const api = new API({ url: \"/config-service/config/passwordPolicy\" });\n api\n .get()\n .then((res) => {\n const { customer } = res.data.passwordPolicy;\n this.setState({\n values: customer,\n });\n })\n .catch((error) => {\n console.error(error);\n this.setState({ formError: error.message, showErrorDialog: true });\n if (error.code === 401) {\n throw error;\n }\n });\n }\n\n handleSubmit(data) {\n const api = new API({ url: `/config-service/config` });\n return api\n .post({ passwordPolicy: { customer: data } })\n .then(() => {\n this.setState({ formError: \"\", showSuccessDialog: true });\n })\n .catch((error) => {\n console.error(error);\n this.setState({ formError: error.message, showErrorDialog: true });\n if (error.code === 401) {\n throw error;\n }\n });\n }\n\n onSubmit(data) {\n this.setState({\n submitting: true,\n });\n this.handleSubmit(data).then(() => {\n this.setState({ submitting: false });\n });\n }\n\n handleClose() {\n this.props.history.goBack();\n }\n\n closeDialogs() {\n this.setState({\n showSuccessDialog: false,\n showErrorDialog: false,\n });\n }\n\n render() {\n const { config } = this.props.data;\n const { globalConfig } = config;\n\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n return (\n
    \n

    \n {getMessage(\"extensions.password-policy.heading\")}\n

    \n \n \n

    customer password policy

    \n {this.state.showLoader ? (\n \n ) : (\n
    \n {Object.keys(globalConfig).map((config) => {\n return (\n \n );\n })}\n
    \n \n {getMessage(\"basicInfo.submit.text\")}\n \n \n {getMessage(\"basicInfo.cancel.text\")}\n \n
    \n \n )}\n
    \n );\n }\n}\n\nexport default withRouter(OrderManagementForm);\n","import React, { Component } from \"react\";\nimport API from \"../../../../lib/api\";\nimport Loader from \"../../../../components/Loader\";\nimport EmptyState from \"../../../../components/EmptyState\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport AuthenticatedPage from \"../../../../containers/AuthenticatedPage\";\nimport InstoreSettings from \"./InstoreSettings\";\nimport AnalyticsForm from \"./AnalyticsForm\";\nimport TawkChatSettings from \"./TawkChatSetting\";\nimport EntityMetaData from \"./EntityMetaData\";\nimport LanguageSelect from \"./LanguageConfig\";\nimport PasswordPolicySupport from \"./PasswordPolicySupport\";\nimport { getExtensionDetails } from \"../../../../lib/auth\";\n\nclass MissingDetails extends Component {\n render() {\n const emptyState = {\n message: getMessage(\"extension.details.notfound\"),\n };\n\n return ;\n }\n}\n\nexport const slugComponentDetail = {\n InStoreProcessing: InstoreSettings,\n Analytics: AnalyticsForm,\n TawkToLiveChat: TawkChatSettings,\n EntityMetaData: EntityMetaData,\n MultiLingualSupport: LanguageSelect,\n PasswordPolicySupport: PasswordPolicySupport,\n};\nexport default class ExtensionDetailsForm extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showLoader: true,\n data: null,\n };\n this.state.showLoader = false;\n this.handleClose = this.handleClose.bind(this);\n }\n\n handleClose() {\n this.props.history.goBack();\n }\n\n componentDidMount() {\n this.setState({\n showLoader: true,\n });\n let metaDataExtension = getExtensionDetails(\"EntityMetaData\");\n\n const id = this.props.match.params.id;\n const api = new API({ url: `/account-service/extension/${id}` });\n if (\n metaDataExtension &&\n Number(metaDataExtension.id) === Number(this.props.match.params.id)\n ) {\n this.setState(\n {\n data: {\n id: Number(this.props.match.params.id),\n slug: metaDataExtension.slug,\n },\n },\n () => {\n this.setState({ showLoader: false });\n }\n );\n return;\n }\n api\n .get()\n .then(\n async (response) => {\n const data = response.data.extension;\n const slug = data && data.slug;\n\n // Hardcoding only for analytics extn as it is an exception\n if (slug === \"Analytics\") {\n const configApi = new API({\n url: \"/config-service/config/analytics\",\n });\n const gaData = await configApi.get();\n data.config.analytics = gaData.data.analytics;\n }\n\n this.setState({\n data,\n showLoader: false,\n });\n },\n () => {\n this.setState({ showLoader: false });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n render() {\n const { data, showLoader } = this.state;\n let slug = data ? data.slug : null;\n let value = data ? data.config : null;\n let Component = slugComponentDetail[slug] || MissingDetails;\n return (\n \n {showLoader ? (\n \n ) : (\n \n )}\n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport Image from \"../../../../components/Image\";\nimport ExtensionForm from \"../Form\";\nimport { TABLE_ACTIONS } from \"../../../../containers/ListingPage\";\nimport { Popup } from \"../../../../components/Popup\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { Link } from \"react-router-dom\";\nimport { extensionRoutes } from \"../../../../lib/auth\";\nimport { slugComponentDetail } from \"../ExtensionDetailsForms\";\n\nclass ExtensionTableRow extends Component {\n constructor(props) {\n super(props);\n this.state = {\n detailsPopup: false,\n quickActionPopup: false,\n refreshPrompt: false,\n };\n this.hideDetailsPopup = this.hideDetailsPopup.bind(this);\n this.showDetailsPopup = this.showDetailsPopup.bind(this);\n this.hideQuickActionPopup = this.hideQuickActionPopup.bind(this);\n this.showQuickActionPopup = this.showQuickActionPopup.bind(this);\n this.showRefreshPrompt = this.showRefreshPrompt.bind(this);\n this.hideRefreshPrompt = this.hideRefreshPrompt.bind(this);\n }\n showDetailsPopup() {\n this.setState({\n detailsPopup: true,\n });\n }\n hideDetailsPopup() {\n this.setState({\n detailsPopup: false,\n });\n }\n hideQuickActionPopup() {\n this.setState({\n quickActionPopup: false,\n });\n }\n showQuickActionPopup() {\n this.setState({\n quickActionPopup: true,\n });\n }\n showRefreshPrompt() {\n this.setState({ refreshPrompt: true });\n }\n hideRefreshPrompt() {\n this.setState({ refreshPrompt: false });\n }\n render() {\n let _targetStatus =\n this.props.status === \"ENABLED\" ? \"DISABLED\" : \"ENABLED\";\n let {\n id,\n icon,\n enableHelperText,\n disableHelperText,\n description,\n name,\n addedOn,\n pricing,\n status,\n version,\n lastUpdated,\n activeInstallations,\n slug,\n onAction,\n isConfigurable,\n } = this.props;\n let configureable = status === \"ENABLED\" && extensionRoutes[slug];\n const extensionSettingAvailable = slugComponentDetail[slug];\n return (\n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n {this.props.status === \"ENABLED\" && (\n
    \n \n {\n this.hideQuickActionPopup();\n this.props.onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n { status: _targetStatus }\n );\n }}\n />\n \n
    \n )}\n {this.props.status === \"DISABLED\" && (\n
    \n \n {\n this.hideQuickActionPopup();\n this.props.onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n { status: _targetStatus }\n );\n }}\n />\n \n
    \n )}\n
    \n
    \n
    \n {name}\n
    {description?.split(\". \", 1)[0]}
    \n
    \n
    \n {pricing && (\n
    \n
    \n {getMessage(\"extensions.price\")}\n
    \n
    \n {pricing.split(\" \")[0] + \" \"}\n {pricing.split(\" \").length > 1 &&\n pricing.split(\" \").slice(1).join(\" \")}\n
    \n
    \n )}\n
    \n
    \n
    \n {this.props.status === \"ENABLED\" && (\n
    \n \n {\n this.hideDetailsPopup();\n this.props\n .onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n { status: _targetStatus }\n )\n .then(this.showRefreshPrompt);\n }}\n />\n \n
    \n )}\n {this.props.status === \"DISABLED\" && (\n
    \n \n {\n this.hideDetailsPopup();\n this.props\n .onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n { status: _targetStatus }\n )\n .then(this.showRefreshPrompt);\n }}\n />\n \n
    \n )}\n
    \n {status === \"ENABLED\" ? (\n
    \n \n {\" \"}\n {status === \"ENABLED\"\n ? getMessage(\"extensions.uninstall\")\n : getMessage(\"extensions.install\")}\n \n {isConfigurable &&\n slug !== \"DeliverySlots\" &&\n extensionSettingAvailable && (\n \n {getMessage(\"extensions.configure\")}\n \n )}\n {configureable ? (\n \n {getMessage(\"extensions.configure\")}\n \n ) : (\n \"\"\n )}\n
    \n ) : (\n
    \n {version ? (\n \n {getMessage(\"extensions.version\")}: {version}\n \n ) : (\n \"\"\n )}\n \n {\" \"}\n {status === \"ENABLED\"\n ? getMessage(\"extensions.uninstall\")\n : getMessage(\"extensions.install\")}\n \n
    \n )}\n
    \n
    \n );\n }\n}\n\nconst desktopView = {\n row: ExtensionTableRow,\n};\nexport default desktopView;\n","import React, { Component } from \"react\";\nimport ListingPage from \"../../../containers/ListingPage\";\nimport { desktopView } from \"./Tables\";\nimport {\n saveSession,\n disableExtension,\n enableExtension,\n} from \"../../../lib/auth\";\nimport API from \"../../../lib/api\";\nimport \"./style.css\";\n\nconst ExtensionTypes = {\n All: \"\",\n Operations: [\n \"OrderReturns\",\n \"DeliverySlots\",\n \"LogisticsSupport\",\n \"DeliveryAreaSupport\",\n \"MultiStoreSupport\",\n \"InStoreProcessing\",\n \"SlotCharges\",\n \"PreOrderSupport\",\n \"BulkOrderSupport\",\n \"CapacityPlanning\",\n \"ShipRocket\",\n \"MultipleAndPartialOrderPicking\",\n ],\n Catalogue: [\n \"StockManagement\",\n \"SoldByWeightSupport\",\n \"SubstitutionGroups\",\n \"ProductTagSupport\",\n \"MultiVariantSupport\",\n \"MultiBrandSupport\",\n \"StockOverride\",\n \"SearchOverride\",\n ],\n Marketing: [\n \"Marketing\",\n \"Campaigns\",\n \"LayoutSchedulingSupport\",\n \"OffersManagement\",\n \"MarketingBanners\",\n \"ProductRatings\",\n \"UniqueCouponGenerator\",\n \"AbandonedCart\",\n \"PushNotification\",\n \"ReferralManagement\",\n \"GoogleMerchantCenter\",\n ],\n CustomerSupport: [\n \"CustomerSupport\",\n \"TawkToLiveChat\",\n \"CustomerTags\",\n \"CustomerGroups\",\n ],\n OnlineStore: [\n \"MultiLingualSupport\",\n \"EntityMetaData\",\n \"Personalization\",\n \"PasswordPolicySupport\",\n \"MarketPlace\",\n ],\n Payments: [\"Wallet\", \"OnlinePaymentSupport\"],\n Analytics: [\"Seo\", \"Analytics\", \"FacebookAnalytics\", \"ReportsAndAnalytics\"],\n HumanResource: [\"HrManagement\", \"MultiUserSupport\", \"LeaveManagement\"],\n};\n\nconst emptyState = {\n // icon: emptyIcon,\n message: \"There are no extensions\", // TODO: Add translation\n};\n\nconst tableProperties = desktopView;\n\nfunction filterExtensions(extensions, type) {\n if (!extensions) {\n return [];\n }\n if (!type) {\n return extensions;\n }\n let newExtensions = ExtensionTypes[type] || [];\n return extensions\n .filter((extn) => {\n if (newExtensions.indexOf(extn.slug) > -1) {\n return extn;\n }\n return null;\n })\n .filter(Boolean);\n}\n\nclass ExtnTypeFilters extends Component {\n constructor(props) {\n super(props);\n this.state = {\n selected: \"All\",\n };\n this.extensions = Object.keys(ExtensionTypes);\n }\n render() {\n const { data, updateView } = this.props;\n const { selected } = this.state;\n return (\n
    \n {this.extensions &&\n this.extensions.map((extn, i) => {\n return (\n {\n this.setState({\n selected: extn,\n });\n updateView(data, extn);\n }}\n >\n \n {extn\n .replace(/([A-Z])/g, \" $1\")\n .replace(/^./, (str) => str.toUpperCase())}\n \n \n );\n })}\n
    \n );\n }\n}\n\nexport default class Extensions extends Component {\n constructor(props) {\n super(props);\n this.state = {\n windowSize: window.innerWidth,\n };\n this.registerResize = this.registerResize.bind(this);\n }\n registerResize(e) {\n this.setState({\n windowSize: e.target.innerWidth,\n });\n }\n componentDidMount() {\n window.addEventListener(\"resize\", this.registerResize, true);\n }\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.registerResize, true);\n this.api && this.api.cancel();\n }\n\n render() {\n let { props } = this;\n return (\n response.data.extension,\n afterSubmit: (response) => {\n response.data.extension.status === \"ENABLED\"\n ? enableExtension(response.data.extension)\n : disableExtension(response.data.extension);\n this.api = new API({ url: \"/account-service/me\" });\n this.api\n .get()\n .then((response) => {\n saveSession(response.data);\n this.props.rerender && this.props.rerender();\n })\n .catch((error) => {\n console.error(error);\n });\n },\n }}\n emptyState={emptyState}\n additionalViews={[ExtnTypeFilters]}\n updateView={(data, key) => {\n return filterExtensions(data, key);\n }}\n tableProperties={tableProperties}\n />\n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n ProductSearch,\n CategorySearch,\n Select,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport Image from \"../../../../components/Image\";\nimport { VALIDATION_TYPES } from \"../../../../components/Form\";\n\nexport default class ProductForm extends BaseForm {\n constructor(props) {\n super(props);\n this.delete = this.delete.bind(this);\n this.store = 0;\n }\n\n delete() {\n this.props.onDelete();\n }\n\n render() {\n const { SubmitButton, CancelButton } = this.buttons;\n const { Form } = this.components;\n const { props } = this;\n const { options, value } = props;\n const product = value && value.product;\n const category = value && value.category;\n const entity = options && options.entityName;\n return (\n
    \n
    \n {props.method === \"add\" ? (\n entity === \"product\" ? (\n \n ) : (\n \n )\n ) : null}\n
    \n {product ? (\n \n ) : category ? (\n \n ) : null}\n {product ? (\n

    \n {product.brand ? (\n \n {product.brand.name}{\" \"}\n {product.name}\n \n ) : (\n product.name\n )}\n

    \n ) : category ? (\n

    {category.name}

    \n ) : null}\n
    \n
    \n {\n let value = DomNode.value;\n if (value === \"\") {\n Object.keys(validationObj).map((key) => {\n validationObj[key] = key === \"valid\";\n return null;\n });\n }\n return validationObj;\n }}\n />\n \n \n \n
    \n
    \n {getMessage(\"brand.form.submitText\")}\n {getMessage(\"brand.form.cancelText\")}\n
    \n \n
    \n );\n }\n}\n","import React from \"react\";\nimport { BaseForm, Select, Input } from \"../../../../components/Form\";\nimport API from \"../../../../lib/api\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { getStores, sortStores } from \"../../../../lib/auth\";\n\nclass StoreConfigForm extends BaseForm {\n constructor(props) {\n super(props);\n this.getDetails = this.getDetails.bind(this);\n }\n componentDidMount() {\n const api = new API({ url: \"/catalogue-service/stock-override\" });\n api\n .get()\n .then((response) => {\n let values = response.data.stockOverride;\n values.storeId = \"all\";\n this.setState({\n values,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n onSubmit(formData) {\n this.setState({\n submitting: true,\n });\n let data = Object.assign({}, formData);\n if (!Number(data.storeId)) {\n data.storeId = null;\n } else {\n data.storeId = Number(data.storeId);\n }\n if (data.minPurchasableStock) {\n data.minPurchasableStock = Number(data.minPurchasableStock);\n } else {\n delete data.minPurchasableStock;\n }\n if (data.maxPurchasableStock) {\n data.maxPurchasableStock = Number(data.maxPurchasableStock);\n } else {\n delete data.maxPurchasableStock;\n }\n if (data.stockBuffer) {\n data.stockBuffer = Number(data.stockBuffer);\n } else {\n delete data.stockBuffer;\n }\n const api = new API({ url: \"/catalogue-service/stock-override\" });\n api\n .put(data)\n .then(\n (response) => {\n this.setState({\n submitting: false,\n });\n },\n (error) => {\n if (error.code === 401) throw error;\n this.setState({\n error: error,\n submitting: false,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n getDetails(storeId) {\n if (!Number(storeId)) {\n storeId = null;\n }\n this.props.saveSelectedStore(storeId);\n this.setState({\n submitting: true,\n });\n const api = new API({ url: \"/catalogue-service/stock-override\" });\n api\n .get({ storeId: storeId })\n .then(\n (response) => {\n let values = response.data.stockOverride;\n values.storeId = storeId || \"all\";\n this.setState({\n values,\n submitting: false,\n });\n },\n (error) => {\n if (error.code === 401) throw error;\n this.setState({\n error: error,\n submitting: false,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n render() {\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n let stores = getStores && getStores();\n let allStores =\n Array.isArray(stores) &&\n stores\n .filter(({ hasPicking }) => hasPicking)\n .map((store) => {\n return { text: store.name, value: store.id };\n });\n sortStores(allStores);\n allStores = [{ text: \"All\", value: \"all\" }].concat(allStores);\n return (\n
    \n
    \n {\n this.getDetails(id);\n }}\n />\n \n \n \n
    \n \n {getMessage(\"store.submit\")}\n \n
    \n
    \n
    \n );\n }\n}\nexport default StoreConfigForm;\n","import React, { Component } from \"react\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport Tabs from \"../../../components/Tabs\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport Image from \"../../../components/Image\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport { getMessage } from \"../../../lib/translator\";\nimport editForm from \"./Form\";\n// import Filters from './Filter'\nimport StoreConfigVariables from \"./StoreConfigForm\";\nimport \"./style.css\";\nimport EmptyIcon from \"./empty.svg\";\nimport { ProductSearch } from \"../../../components/Form\";\n\nconst tableProperties = {\n headers: [\n getMessage(\"category.header.image\"),\n getMessage(\"category.header.name\"),\n getMessage(\"store.min.stock.count\"),\n getMessage(\"store.min.purchaseable.qty\"),\n getMessage(\"store.max.purchaseable.qty\"),\n getMessage(\"store.stock.orderType\"),\n getMessage(\"store.actions\"),\n ],\n row: ({\n id,\n name,\n entityId,\n category,\n product,\n stockBuffer,\n minPurchasableStock,\n maxPurchasableStock,\n orderType,\n onAction,\n }) => {\n return (\n \n \n \n \n \n {\n onAction(TABLE_ACTIONS.EDIT, { entityId });\n }}\n >\n {name ? (\n name.name\n ) : category ? (\n category.name\n ) : product ? (\n product.brand ? (\n \n {product.brand.name} \n {product.name}\n \n ) : (\n product.name\n )\n ) : null}\n
    \n \n \n \n {getMessage(\"store.min.stock.count\")}\n \n {stockBuffer}\n \n \n \n {getMessage(\"store.min.purchaseable.quantity\")}\n \n {minPurchasableStock}\n \n \n \n {getMessage(\"store.max.purchaseable.quantity\")}\n \n {maxPurchasableStock}\n \n \n \n {getMessage(\"store.stock.orderType\")}\n \n {orderType}\n \n \n }>\n {\n onAction(TABLE_ACTIONS.EDIT, { entityId });\n }}\n >\n {getMessage(\"category.action.edit\")}\n \n {\n onAction(TABLE_ACTIONS.DELETE, { entityId, orderType });\n }}\n >\n {getMessage(\"category.action.delete\")}\n \n \n \n \n );\n },\n};\n\n// const filterTransform = (formData) => {\n// let data = Object.assign({}, formData)\n// if (data.storeId) {\n// if (!Number(data.storeId)) {\n// data.storeId = ''\n// }\n// }\n// return data\n// }\n\nconst EmptyState = {\n icon: EmptyIcon,\n message: getMessage(\"stores.empty.stock\"),\n actions: ({ onAction }) => (\n {\n onAction(TABLE_ACTIONS.EDIT);\n }}\n >\n +{\" \"}\n {getMessage(\"store.configuraion.add.text\")}\n \n ),\n};\n\nclass CategoriesListing extends Component {\n constructor(props) {\n super(props);\n this.state = {\n storeId: props.selectedStoreId,\n };\n }\n componentDidUpdate() {\n let storeId = this.props.selectedStoreId;\n this.state.storeId !== storeId && this.setState({ storeId });\n }\n render() {\n const props = this.props;\n const params = { type: props.entity.toUpperCase() };\n params.includeAllOrderType = true;\n if (this.state.storeId) {\n params.storeId = Number(this.state.storeId);\n }\n if (this.state.searchProduct) {\n params.entityId = this.state.searchProduct.id;\n }\n return (\n \n {props.entity === \"product\" && (\n this.setState({ searchProduct: value })}\n />\n )}\n {\n let stockOverride = response.data.stockOverride || [];\n let category = response.data.category || [];\n let product = response.data.product || [];\n if (stockOverride.length > 0) {\n stockOverride.forEach((item) => {\n item.category = category.filter(\n (cat) => cat.id === item.entityId\n )[0];\n item.product = product.filter(\n (pdt) => pdt.id === item.entityId\n )[0];\n });\n } else {\n stockOverride.category = category[0];\n stockOverride.product = product[0];\n }\n return stockOverride;\n },\n updateApiParams: (prevParams, newParams) => {\n if (\n prevParams.entityId !== newParams.entityId ||\n prevParams.type !== newParams.type ||\n prevParams.storeId !== newParams.storeId\n ) {\n return {\n shouldUpdate: true,\n params: {\n type: newParams.type,\n storeId: newParams.storeId,\n entityId: newParams.entityId,\n },\n };\n }\n },\n }}\n emptyState={EmptyState}\n form={{\n component: editForm,\n transformSubmit: (formData) => {\n let data = Object.assign({}, formData);\n if (this.state.storeId) {\n data.storeId = Number(this.state.storeId);\n }\n if (data.category && data.category.id) {\n data.entityId = data.category.id;\n delete data.category;\n }\n if (data.product && data.product.id) {\n data.entityId = data.product.id;\n delete data.product;\n }\n if (data.minPurchasableStock) {\n data.minPurchasableStock = Number(data.minPurchasableStock);\n } else {\n delete data.minPurchasableStock;\n }\n if (data.maxPurchasableStock) {\n data.maxPurchasableStock = Number(data.maxPurchasableStock);\n } else {\n delete data.maxPurchasableStock;\n }\n if (data.stockBuffer) {\n data.stockBuffer = Number(data.stockBuffer);\n } else {\n delete data.stockBuffer;\n }\n return data;\n },\n options: {\n entityName: props.entity,\n },\n allowDelete: true,\n overwriteWithApiParams: false,\n }}\n noId\n primaryKey=\"entityId\"\n tableProperties={tableProperties}\n addHeading=\"Add Configuration\"\n editHeading=\"Edit Configuration\"\n headerActions={({ onAction }) => (\n {\n onAction(TABLE_ACTIONS.EDIT);\n }}\n >\n +{\" \"}\n \n {getMessage(\"store.configuraion.add.text\")}\n \n \n )}\n />\n \n );\n }\n}\n\nconst categoryEntity = [\n {\n name: \"Categories\",\n component: CategoriesListing,\n },\n];\nconst productEntity = [\n {\n name: \"Products\",\n component: CategoriesListing,\n },\n];\nconst entities = categoryEntity.concat(productEntity);\n\nclass TabsComponent extends Component {\n render() {\n const { activeIndex, entities, changePage, entity, selectedStoreId } =\n this.props;\n let ListingComponent = entities[activeIndex].component;\n return (\n
    \n `${entity.name}`)}\n default={activeIndex}\n onClick={(index) => {\n changePage(index);\n }}\n />\n
    \n \n
    \n
    \n );\n }\n}\nclass InterfaceContainer extends Component {\n constructor(props) {\n super(props);\n this.state = {\n activeIndex: 0,\n entity: \"category\",\n storeId: null,\n };\n this.mapping = [\"category\", \"product\"];\n this.changePage = this.changePage.bind(this);\n this.saveSelectedStore = this.saveSelectedStore.bind(this);\n }\n changePage(activeIndex) {\n this.setState({\n activeIndex,\n entity: this.mapping[activeIndex],\n });\n }\n saveSelectedStore(storeId) {\n this.setState({ storeId });\n }\n\n render() {\n return (\n
    \n

    Stock Overrides

    \n \n \n
    \n );\n }\n}\n\nexport default class StoreConfig extends Component {\n render() {\n return (\n \n \n \n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Phone,\n VALIDATION_TYPES,\n} from \"../../../../../components/Form\";\nimport { getMessage } from \"../../../../../lib/translator\";\n\nexport default class InviteForm extends BaseForm {\n render() {\n const { Form } = this.components;\n const { SubmitButton, CancelButton } = this.buttons;\n return (\n
    \n \n \n \n
    \n \n {getMessage(\"settings.users.inviteForm.invite.buttonText\")}\n \n \n {getMessage(\"settings.users.inviteForm.cancelText\")}\n \n
    \n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../../containers/ListingPage\";\nimport InviteForm from \"./InviteForm\";\nimport { Row, Cell } from \"../../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../../components/DropDown\";\nimport { Popup } from \"../../../../components/Popup\";\nimport API from \"../../../../lib/api\";\nimport { getSession } from \"../../../../lib/auth\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nimport \"./style.css\";\n\nfunction handleException(error) {\n if (error.code === 401) {\n throw error;\n }\n}\n\nclass InviteUserButton extends Component {\n constructor(props) {\n super(props);\n this.state = {\n modalShown: false,\n inviteError: null,\n };\n this.showModal = this.showModal.bind(this);\n this.hideModal = this.hideModal.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n componentDidMount() {\n const api = new API({ url: \"/account-service/country\" });\n api\n .get()\n .then((response) => {\n this.countryIsoCode = response.data.country.isoCode;\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n showModal() {\n this.setState({ modalShown: true, inviteError: null });\n }\n hideModal() {\n this.setState({ modalShown: false, inviteError: null });\n }\n handleSubmit(formData) {\n let api = new API({ url: \"/account-service/invite\" });\n api\n .post(formData)\n .then(this.hideModal, (error) => {\n handleException(error);\n this.setState({\n inviteError: getMessage(error.message),\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n render() {\n return (\n
    \n {\n this.setState({ inviteError: null });\n }}\n >\n
    {this.state.inviteError}
    \n \n \n \n
    \n );\n }\n}\n\nconst tableProperties = {\n headers: [\n getMessage(\"settings.users.header.name\"),\n getMessage(\"settings.users.header.phone\"),\n getMessage(\"settings.users.header.email\"),\n getMessage(\"settings.users.header.actions\"),\n ],\n row: ({ id, name, verified, isOwner, phones, emails, onAction }) => (\n \n \n {isOwner ? (\n name\n ) : (\n \n {name}\n \n )}\n \n {phones && phones[0] && phones[0].phone}\n {emails && emails[0] && emails[0].email}\n \n {isOwner || Number(getSession().user.id) === Number(id) ? null : (\n }>\n {\n onAction(TABLE_ACTIONS.DELETE, { id });\n }}\n >\n {getMessage(\"settings.users.action.revoke\")}\n \n \n \n {getMessage(\"settings.users.action.editPermissions\")}\n \n \n \n )}\n \n \n ),\n};\n\nexport default class Users extends Component {\n render() {\n const { props } = this;\n return (\n response.data.user,\n }}\n headerActions={InviteUserButton}\n tableProperties={tableProperties}\n />\n );\n }\n}\n","import React, { Component } from \"react\";\n\nimport \"./style.css\";\n\nexport default class StyledSelect extends Component {\n constructor(props) {\n super(props);\n this.state = {\n expanded: false,\n };\n this.toggle = this.toggle.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.selectOption = this.selectOption.bind(this);\n }\n toggle(e) {\n e && e.preventDefault();\n this.setState({\n expanded: !this.state.expanded,\n });\n }\n handleClick(e) {\n if (this.dropdownRef.contains(e.target)) {\n if (this.toggleRef.contains(e.target)) {\n // The toggle handle was clicked\n this.toggle();\n } else if (e.target.classList.contains(\"dropdown-item\")) {\n // An item was clicked\n this.setState({ expanded: false });\n }\n } else if (this.state.expanded) {\n // Click was outside the dropdown. Close the menu if it was open\n this.setState({ expanded: false });\n }\n }\n selectOption(value) {\n this.props.onChange && this.props.onChange(value);\n this.setState({ expanded: false });\n }\n componentDidMount() {\n window.addEventListener(\"click\", this.handleClick);\n }\n componentWillUnmount() {\n window.removeEventListener(\"click\", this.handleClick);\n }\n render() {\n let { options = [], value } = this.props;\n let selected = options.find((option) => option.value === value);\n return (\n {\n this.dropdownRef = dropdownRef;\n }}\n >\n {\n this.toggleRef = toggleRef;\n }}\n >\n {selected ? selected.content : this.props.placeholder}\n \n \n {options.map(({ content, value }) => (\n {\n this.selectOption(value);\n }}\n >\n {content}\n \n ))}\n \n \n );\n }\n}\n","import React from \"react\";\nimport { BaseForm } from \"../../../../../components/Form\";\nimport Checkbox from \"../../../../../components/Form/Inputs/Checkbox\";\nimport {\n toggleAll,\n computeChecked,\n} from \"../../../../../components/Form/Inputs/MultiLevelCheckbox\";\nimport StyledSelect from \"../StyledSelect\";\nimport API from \"../../../../../lib/api\";\nimport { getMessage } from \"../../../../../lib/translator\";\n\nimport \"./style.css\";\n\nfunction handleException(error) {\n if (error.code === 401) {\n throw error;\n }\n}\n\nexport default class PermissionsForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state = Object.assign(this.state, {\n users: [],\n loadingUsers: false,\n loadingUserPermissions: false,\n failedLoadingData: false,\n failedLoadingUsers: false,\n failedLoadingUserPermissions: false,\n selectedUser: null, // ID of the user whose permissions are being copied\n });\n this.getUserList = this.getUserList.bind(this);\n this.computeChecked = this.computeChecked.bind(this);\n this.toggleAll = this.toggleAll.bind(this);\n this.getUserPermissions = this.getUserPermissions.bind(this);\n this.copyUserPermissions = this.copyUserPermissions.bind(this);\n }\n computeChecked(service, mode) {\n let value = this.state.values[service];\n return Object.keys(value)\n .map((endpoint) => value[endpoint])\n .reduce((acc, { GET = true, PUT = true, POST = true, DELETE = true }) => {\n let result;\n if (mode === \"READ\") {\n result = acc && GET;\n } else if (mode === \"WRITE\") {\n result = acc && PUT && POST && DELETE;\n }\n return result;\n }, true);\n }\n updatePermissions({ service, api }, mode, value) {\n let methods = [];\n switch (mode) {\n case \"READ\":\n methods = [\"GET\"];\n break;\n case \"WRITE\":\n methods = [\"PUT\", \"POST\", \"DELETE\"];\n break;\n default:\n break;\n }\n let apis;\n if (api) {\n apis = [api];\n } else {\n apis = Object.keys(this.state.values[service]);\n }\n apis.forEach((api) => {\n let newValue = Object.assign({}, this.state.values[service][api]);\n let allowedPermissions = this.props.allPermissions[service][api];\n let methodsToUpdate = methods.slice();\n while (methodsToUpdate.length) {\n let method = methodsToUpdate.pop();\n if (allowedPermissions[method]) {\n newValue[method] = value;\n }\n }\n this.updateState([service, api], newValue, false);\n });\n this.setState({ selectedUser: null });\n }\n toggleAll(value) {\n this.setState((prevState) => {\n let newState = Object.assign(prevState);\n newState.values = toggleAll(prevState.values, value);\n newState.selectedUser = null;\n return newState;\n });\n }\n getUserList() {\n this.setState({ loadingUsers: true, failedLoadingUsers: false });\n this.api = new API({ url: `/account-service/user` });\n this.api\n .get({ paginated: \"false\" })\n .then(\n (response) => {\n this.setState({ users: response.data.user });\n },\n (err) => {\n this.setState({ failedLoadingUsers: true });\n handleException(err);\n }\n )\n .then(() => {\n this.setState({ loadingUsers: false });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n componentWillUnmount() {\n this.api && this.api.cancel();\n }\n getUserPermissions(id) {\n this.setState({ loadingUserPermissions: true });\n let api = new API({ url: `/account-service/user/${id}` });\n return new Promise((resolve, reject) => {\n api\n .get()\n .then((response) => {\n resolve(response.data.user.endpointPermissions);\n })\n .catch((error) => {\n console.error(error);\n reject(error);\n })\n .then(() => {\n this.setState({ loadingUserPermissions: false });\n })\n .catch((error) => {\n console.error(error);\n });\n });\n }\n copyUserPermissions(id) {\n this.getUserPermissions(id).then((permissions) => {\n this.setState({\n selectedUser: id,\n values: this.props.parsePermissions(permissions),\n });\n });\n }\n componentDidMount() {\n this.getUserList();\n }\n render() {\n const { Form } = this.components;\n const { SubmitButton, CancelButton } = this.buttons;\n return (\n
    \n \n
    \n this.scrollRef.offsetHeight\n ? \" overflown\"\n : \"\")\n }\n >\n
    \n \n
    \n
    \n {getMessage(\"settings.users.permissionsForm.header.read\")}\n
    \n
    \n {getMessage(\"settings.users.permissionsForm.header.write\")}\n
    \n
    \n {\n this.scrollRef = node;\n }}\n >\n {Object.keys(this.props.allPermissions)\n .sort()\n .map((service) => (\n
    \n
    \n
    \n
    {service}
    \n
    \n
    \n {Object.values(this.getState([service]) || {})\n .filter((obj) => \"GET\" in obj)\n .filter(Boolean).length ? (\n {\n this.updatePermissions(\n { service },\n \"READ\",\n value\n );\n }}\n />\n ) : null}\n
    \n
    \n {Object.values(this.getState([service]) || {}).filter(\n (obj) =>\n \"POST\" in obj || \"PUT\" in obj || \"DELETE\" in obj\n ).length ? (\n {\n this.updatePermissions(\n { service },\n \"WRITE\",\n value\n );\n }}\n />\n ) : null}\n
    \n
    \n {Object.keys(this.getState([service]) || {})\n .sort()\n .map((api) => (\n
    \n
    {api}
    \n
    \n {\"GET\" in\n this.props.allPermissions[service][api] ? (\n {\n return GET;\n })(this.getState([service, api]))}\n onChange={(value) => {\n this.updatePermissions(\n { service, api },\n \"READ\",\n value\n );\n }}\n />\n ) : null}\n
    \n
    \n {\"PUT\" in this.props.allPermissions[service][api] ||\n \"POST\" in this.props.allPermissions[service][api] ||\n \"DELETE\" in\n this.props.allPermissions[service][api] ? (\n PUT || POST || DELETE)(\n this.getState([service, api])\n )}\n onChange={(value) => {\n this.updatePermissions(\n { service, api },\n \"WRITE\",\n value\n );\n }}\n />\n ) : null}\n
    \n
    \n ))}\n
    \n ))}\n \n \n
    \n
    \n

    Copy from

    \n Number(user.id) !== Number(this.props.userId)\n )\n .map(\n ({\n id,\n name,\n emails: [{ email }] = [{}], // Extract first email\n }) => ({\n content: (\n
    \n {name}\n
    \n {email}\n
    \n
    \n ),\n value: id,\n })\n )}\n placeholder={\n
    \n {getMessage(\n \"settings.users.permissionsForm.copyPlaceholder.name\"\n )}\n
    \n \n {getMessage(\n \"settings.users.permissionsForm.copyPlaceholder.text\"\n )}\n \n
    \n
    \n }\n value={this.state.selectedUser}\n onChange={this.copyUserPermissions}\n />\n
    \n
    \n \n \n {getMessage(\"settings.users.permissionsForm.submitText\")}\n \n \n {getMessage(\"settings.users.permissionsForm.cancelText\")}\n \n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport AuthenticatedPage from \"../../../../containers/AuthenticatedPage\";\nimport PermissionsForm from \"./Form\";\nimport Loader from \"../../../../components/Loader\";\nimport API from \"../../../../lib/api\";\nimport { getAllPermissions } from \"../../../../lib/auth\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nimport \"./style.css\";\n\nfunction handleException(error) {\n if (error.code === 401) {\n throw error;\n }\n}\n\nexport default class Permissions extends Component {\n constructor(props) {\n super(props);\n this.state = {\n data: null,\n permissions: null,\n loading: false,\n failed: false,\n submitting: false,\n };\n this.allPermissions = this.categorizePermissions(getAllPermissions(), true);\n this.getData = this.getData.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.parsePermissions = this.parsePermissions.bind(this);\n }\n parsePermissions(endpointPermissions) {\n let permissions = this.categorizePermissions(\n Object.assign(\n {},\n ...endpointPermissions.map(({ url, allowedMethods }) => ({\n [url]: allowedMethods,\n }))\n )\n );\n return this.prunePermissions(this.allPermissions, permissions);\n }\n getData() {\n this.setState({ loading: true, failed: false });\n let api = new API({\n url: `/account-service/user/${this.props.router.match.params.id}`,\n });\n api\n .get()\n .then(\n (response) => {\n let { endpointPermissions } = response.data.user;\n\n // sometimes endpointPermissions has duplicate permission objects, objects with same value for key 'url' are appearing\n // for example [{url: 'account-service/user', allowedMethods: {GET: true}}, {url: 'account-service/user', allowedMethods: {PUT: true, POST: false}}]\n // the following code is merging the two entries into single one with allowedMethods object merged, like so:\n // final array: [{{url: 'account-service/user', allowedMethods: {GET: true, PUT: true, POST: false}}}]\n\n let permissions = this.parsePermissions(\n endpointPermissions.reduce((finalArray, permissionObj) => {\n if (\n finalArray.findIndex((obj) => obj.url === permissionObj.url) >\n -1\n ) {\n let final = finalArray.slice();\n let originalIndex = final.findIndex(\n (obj) => obj.url === permissionObj.url\n );\n final.splice(\n final.findIndex((obj) => obj.url === permissionObj.url),\n 1,\n {\n ...permissionObj,\n allowedMethods: {\n ...permissionObj.allowedMethods,\n ...final[originalIndex].allowedMethods,\n },\n }\n );\n return final;\n } else {\n return finalArray.concat([permissionObj]);\n }\n }, [])\n );\n delete response.data.endpointPermissions;\n this.setState({\n data: response.data.user,\n permissions,\n });\n },\n (err) => {\n this.setState({ failed: true });\n handleException(err);\n }\n )\n .then(() => {\n this.setState({ loading: false });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n categorizePermissions(uncategorized = {}, prune = false) {\n let result = {};\n Object.keys(uncategorized).map((endpoint) => {\n let [service, api] = endpoint.split(\"/\").filter(Boolean);\n let permissions = uncategorized[endpoint];\n let allKeysFalse = !Object.values(permissions).reduce(\n (acc, val) => acc || val,\n false\n );\n if (prune ? !allKeysFalse : true) {\n if (!(service in result)) {\n result[service] = {};\n }\n result[service][api] = prune\n ? Object.assign(\n {},\n ...Object.keys(permissions)\n .filter((method) => permissions[method])\n .map((method) => ({\n [method]: permissions[method],\n }))\n )\n : permissions;\n }\n return null;\n });\n return result;\n }\n prunePermissions(allowedPermissions, newPermissions) {\n // Remove all the changes that are not allowed\n let result = {};\n for (let service in allowedPermissions) {\n let apiPermissions = {};\n for (let api in allowedPermissions[service]) {\n let methodPermissions = {};\n for (let method in allowedPermissions[service][api]) {\n if (allowedPermissions[service][api][method]) {\n if (\n newPermissions[service] &&\n newPermissions[service][api] &&\n newPermissions[service][api][method]\n ) {\n methodPermissions[method] = newPermissions[service][api][method];\n }\n }\n }\n if (Object.keys(methodPermissions).length) {\n apiPermissions[api] = methodPermissions;\n }\n }\n if (Object.keys(apiPermissions).length) {\n result[service] = apiPermissions;\n }\n }\n return result;\n }\n handleSubmit(value) {\n const userId = this.props.router.match.params.id;\n let permissions = [];\n for (let service in value) {\n for (let api in value[service]) {\n for (let method in value[service][api]) {\n permissions.push({\n endpoint: `${service}/${api}`,\n method,\n hasPermission: value[service][api][method],\n });\n }\n }\n }\n let api = new API({ url: \"/account-service/permission\" });\n this.setState({ submitting: true, permissions: value });\n return api\n .put({ userId, permissions })\n .then((response) => {\n this.setState({ submitting: false });\n const { history, location } = this.props;\n history.push(\n location.pathname.replace(/(\\/edit-permissions\\/.*)$/, \"\")\n );\n })\n .catch((error) => {\n console.error(error);\n });\n }\n componentDidMount() {\n this.getData();\n }\n render() {\n const { props } = this;\n return (\n \n

    \n {this.state.data\n ? getMessage(\"settings.users.permissionsForm.heading\", {\n name: this.state.data.name,\n })\n : getMessage(\"settings.users.permissionsForm.headingWithoutName\")}\n

    \n {this.state.data ? (\n {\n const { history, location } = this.props;\n history.push(\n location.pathname.replace(/(\\/edit-permissions\\/.*)$/, \"\")\n );\n }}\n />\n ) : (\n \n )}\n
    \n );\n }\n}\n","import React, { Component } from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport Table from \"./Table\";\nimport Permissions from \"./Permissions\";\n\nclass UsersRouter extends Component {\n render() {\n let { router, ...props } = this.props;\n if (router.match.params.action === \"edit-permissions\") {\n return ;\n } else {\n return ;\n }\n }\n}\n\nexport default withRouter(({ match, ...props }) => (\n \n));\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Textarea,\n Upload,\n VALIDATION_TYPES,\n} from \"../../../components/Form\";\nimport { getMessage } from \"../../../lib/translator\";\nimport API from \"../../../lib/api\";\nimport Loader from \"../../../components/Loader\";\nimport { Dialog } from \"../../../components/Popup\";\nimport { withRouter } from \"react-router-dom\";\nimport tooltipImg from \"./tooltip.svg\";\n\nconst Tooltip = (props) => (\n
    \n \"?\"\n
    {props.children}
    \n
    \n);\n\nclass MobileAppsForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state = Object.assign({}, this.state, {\n themes: null,\n showLoader: false,\n showSuccessDialog: false,\n showErrorDialog: false,\n loadingThemes: false,\n });\n this.handleClose = this.handleClose.bind(this);\n this.closeDialogs = this.closeDialogs.bind(this);\n this.loadData = this.loadData.bind(this);\n this.loadThemes = this.loadThemes.bind(this);\n }\n loadData() {\n this.setState({ showLoader: true });\n this.api = new API({ url: \"/account-service/config/mobileApp\" });\n this.api\n .get()\n .then((response) => {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState, {\n values: response.data.config.mobileApp,\n loader: false,\n });\n return newState;\n });\n })\n .then(() => {\n this.setState({ showLoader: false });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n componentWillUnmount() {\n this.api && this.api.cancel();\n }\n loadThemes() {\n let api = new API({ url: \"/account-service/theme?paginated=false\" });\n api\n .get()\n .then((response) => {\n this.setState({\n themes: response.data.theme,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n handleClose() {\n this.props.history.goBack();\n }\n onSubmit(data) {\n const api = new API({ url: \"/account-service/config/mobileApp\" });\n this.setState({ submitting: true });\n api\n .put({ mobileApp: data })\n .then(\n () => {\n this.setState({ showSuccessDialog: true });\n },\n () => {\n this.setState({ showErrorDialog: true });\n }\n )\n .then(() => {\n this.setState({ submitting: false });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n closeDialogs() {\n this.setState({\n showSuccessDialog: false,\n showErrorDialog: false,\n });\n }\n componentDidMount() {\n this.loadData();\n // this.loadThemes()\n }\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n return (\n
    \n \n \n {this.state.showLoader ? (\n \n ) : (\n
    \n
    \n \n \n \n
    \n

    {getMessage(\"mobileApps.assets.heading\")}

    \n
    \n (\n {getMessage(\"mobileApps.appIcon.tooltip\")}\n )}\n {...this.generateStateMappers({\n stateKeys: [\"appIcon\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n required\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n fileSizeExeeded: getMessage(\"input.fileSizeExeeded\"),\n invalidFileType: getMessage(\"input.invalidFileType\"),\n }}\n />\n (\n \n {getMessage(\"mobileApps.splashScreen.tooltip\")}\n \n )}\n {...this.generateStateMappers({\n stateKeys: [\"splashScreen\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n required\n validationStrings={{\n valueMissing: getMessage(\"input.requiredMessage\"),\n fileSizeExeeded: getMessage(\"input.fileSizeExeeded\"),\n invalidFileType: getMessage(\"input.invalidFileType\"),\n }}\n />\n
    \n {this.state.themes && (\n

    {getMessage(\"mobileApps.theme.heading\")}

    \n )}\n {this.state.loadingThemes ? (\n
    \n \n
    \n {getMessage(\"mobileApps.theme.loadingText\")}\n
    \n
    \n ) : this.state.themes ? (\n
    \n {this.state.themes.map((theme) => (\n \n \n
    \n ))}\n
    \n ) : null}\n
    \n \n {getMessage(\"mobileApps.submit.text\")}\n \n \n {getMessage(\"mobileApps.cancel.text\")}\n \n
    \n \n )}\n \n );\n }\n}\n\nexport default withRouter(MobileAppsForm);\n","import React, { Component } from \"react\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport MobileAppsForm from \"./form\";\nimport { getMessage } from \"../../../lib/translator\";\n\nimport \"./style.css\";\n\nexport default class MobileApps extends Component {\n render() {\n return (\n \n

    {getMessage(\"mobileApps.heading\")}

    \n \n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport \"./style.css\";\n\nclass Send extends Component {\n render() {\n const { props } = this;\n return (\n
    \n
    \n
    \n \"\"\n
    \n
    {props.name}
    \n
    \n
    {props.midText}
    \n
    \n
    {props.value}
    \n
    \n
    \n
    \n );\n }\n}\nexport default Send;\n","import React from \"react\";\nimport { BaseForm, Input, VALIDATION_TYPES } from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nclass AddEmail extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n submitting: false,\n formError: \"\",\n };\n }\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n return (\n
    \n
    \n {this.state.formError && (\n
    {this.state.formError}
    \n )}\n \n
    \n \n {getMessage(\"notifications.submitText\")}\n \n
    \n \n
    \n );\n }\n}\nexport default AddEmail;\n","import React from \"react\";\nimport { BaseForm, VALIDATION_TYPES, Phone } from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nclass AddPhoneNumberForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n submitting: false,\n formError: \"\",\n };\n }\n\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n return (\n
    \n
    \n {this.state.formError && (\n
    {this.state.formError}
    \n )}\n \n
    \n \n {getMessage(\"notifications.submitText\")}\n \n
    \n \n
    \n );\n }\n}\nexport default AddPhoneNumberForm;\n","import React from \"react\";\nimport { BaseForm, Toggle } from \"../../../components/Form\";\nimport { getMessage } from \"../../../lib/translator\";\nimport API from \"../../../lib/api\";\nimport Loader from \"../../../components/Loader\";\nimport { DropDown, DropDownItem } from \"../../../components/DropDown\";\nimport Send from \"../../../components/Send\";\nimport Popup from \"../../../components/Popup/Popup\";\nimport { withRouter } from \"react-router-dom\";\nimport AddEmailForm from \"./Email\";\nimport AddPhoneForm from \"./Phone\";\nimport { parse, format, isValidNumber } from \"libphonenumber-js\";\nimport { Dialog } from \"../../../components/Popup\";\n\nimport SmsIcon from \"./sms.svg\";\nimport MailIcon from \"./mail.svg\";\nimport AddIcon from \"./plus.svg\";\n\nclass NotificationsForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n submitting: false,\n showLoader: true,\n formError: \"\",\n popupFormError: \"\",\n showOrderEmailPopup: false,\n showOrderPhonePopup: false,\n showCustomerEmailPopup: false,\n showCustomerPhonePopup: false,\n showOrderDeleteEmailDialog: false,\n showOrderDeletePhoneDialog: false,\n showCustomerDeleteEmailDialog: false,\n showCustomerDeletePhoneDialog: false,\n showSuccessDialog: false,\n values: {\n orderNotificationEmails: [],\n orderNotificationPhones: [],\n customerNotificationEmails: [],\n customerNotificationPhones: [],\n },\n };\n this.handleOrderEmailDelete = this.handleOrderEmailDelete.bind(this);\n this.handleOrderPhoneDelete = this.handleOrderPhoneDelete.bind(this);\n\n this.handleOrderEmailAdd = this.handleOrderEmailAdd.bind(this);\n this.handleOrderPhoneAdd = this.handleOrderPhoneAdd.bind(this);\n this.handleCustomerEmailAdd = this.handleCustomerEmailAdd.bind(this);\n this.handleCustomerPhoneAdd = this.handleCustomerPhoneAdd.bind(this);\n this.handleCustomerEmailDelete = this.handleCustomerEmailDelete.bind(this);\n this.handleCustomerPhoneDelete = this.handleCustomerPhoneDelete.bind(this);\n\n this.showOrderEmailPopup = this.showOrderEmailPopup.bind(this);\n this.showOrderPhonePopup = this.showOrderPhonePopup.bind(this);\n this.closeOrderEmailPopup = this.closeOrderEmailPopup.bind(this);\n this.closeOrderPhonePopup = this.closeOrderPhonePopup.bind(this);\n this.showCustomerEmailPopup = this.showCustomerEmailPopup.bind(this);\n this.closeCustomerEmailPopup = this.closeCustomerEmailPopup.bind(this);\n this.showCustomerPhonePopup = this.showCustomerPhonePopup.bind(this);\n this.closeCustomerPhonePopup = this.closeCustomerPhonePopup.bind(this);\n this.closeSuccess = this.closeSuccess.bind(this);\n\n this.handleClose = this.handleClose.bind(this);\n this.hideEmailDeleteConfirmation =\n this.hideEmailDeleteConfirmation.bind(this);\n this.hidePhoneDeleteConfirmation =\n this.hidePhoneDeleteConfirmation.bind(this);\n this.hideCustomerDeleteEmailDialog =\n this.hideCustomerDeleteEmailDialog.bind(this);\n this.hideCustomerDeletePhoneDialog =\n this.hideCustomerDeletePhoneDialog.bind(this);\n this.showOrderDeleteEmailDialog =\n this.showOrderDeleteEmailDialog.bind(this);\n this.showOrderDeletePhoneDialog =\n this.showOrderDeletePhoneDialog.bind(this);\n this.showCustomerDeleteEmailDialog =\n this.showCustomerDeleteEmailDialog.bind(this);\n this.showCustomerDeletePhoneDialog =\n this.showCustomerDeletePhoneDialog.bind(this);\n this.getData = this.getData.bind(this);\n }\n\n componentDidMount() {\n this.getData();\n this.api = new API({ url: \"/account-service/country\" });\n this.api\n .get()\n .then(\n (response) => {\n this.countryIsoCode = response.data.country.isoCode;\n },\n (error) => {\n if (error.message === \"cancelled\") {\n return;\n }\n this.countryIsoCode = \"IN\";\n this.setState({\n countryError: error,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n getData() {\n this.setState({\n showLoader: true,\n });\n this.configApi = new API({ url: \"/account-service/config/notification\" });\n this.configApi\n .get()\n .then(\n (response) => {\n const notification = response.data.config.notification;\n const values = {\n orderNotificationEmails:\n notification.orderPlaceEmailRecipients || [],\n orderNotificationPhones: notification.orderPlaceSmsRecipients || [],\n customerNotificationPhones:\n notification.customerSignUpSmsRecipients || [],\n customerNotificationEmails:\n notification.customerSignUpEmailRecipients || [],\n notifyOnCustomerSignUp:\n notification.notifyOnCustomerSignUp || false,\n notifyOnCustomerWalletRecharge:\n notification.notifyOnCustomerWalletRecharge || false,\n notifyOnCustomerAddNewAddress:\n notification.notifyOnCustomerAddNewAddress || false,\n notifyOnOrderCancel: notification.notifyOnOrderCancel || false,\n notifyOnOrderPlace: notification.notifyOnOrderPlace || false,\n notifyOnOrderRefund: notification.notifyOnOrderRefund || false,\n };\n this.setState({ values, showLoader: false });\n },\n (error) => {\n if (error.message === \"cancelled\") {\n return;\n }\n this.setState({ formError: error.message, showLoader: false });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n handleClose() {\n this.props.history.goBack();\n }\n\n showOrderEmailPopup() {\n this.setState({\n showOrderEmailPopup: true,\n });\n }\n\n closeOrderEmailPopup() {\n this.setState({\n showOrderEmailPopup: false,\n popupFormError: \"\",\n });\n }\n\n showOrderPhonePopup() {\n this.setState({\n showOrderPhonePopup: true,\n });\n }\n\n closeOrderPhonePopup() {\n this.setState({\n showOrderPhonePopup: false,\n popupFormError: \"\",\n });\n }\n\n showCustomerEmailPopup() {\n this.setState({\n showCustomerEmailPopup: true,\n });\n }\n\n closeCustomerEmailPopup() {\n this.setState({\n showCustomerEmailPopup: false,\n popupFormError: \"\",\n });\n }\n\n showCustomerPhonePopup() {\n this.setState({\n showCustomerPhonePopup: true,\n });\n }\n\n closeCustomerPhonePopup() {\n this.setState({\n showCustomerPhonePopup: false,\n popupFormError: \"\",\n });\n }\n\n handleOrderEmailAdd({ email }) {\n let newState = Object.assign({}, this.state.values);\n if (!newState.orderNotificationEmails.includes(email)) {\n newState.orderNotificationEmails.push(email);\n } else {\n return this.setState({\n popupFormError: getMessage(\"notification.email.error\"),\n });\n }\n\n this.setState({\n values: newState,\n showOrderEmailPopup: false,\n });\n }\n\n handleCustomerEmailAdd({ email }) {\n let newState = Object.assign({}, this.state.values);\n if (!newState.customerNotificationEmails.includes(email)) {\n newState.customerNotificationEmails.push(email);\n } else {\n return this.setState({\n popupFormError: getMessage(\"notification.email.error\"),\n });\n }\n\n this.setState({\n values: newState,\n showCustomerEmailPopup: false,\n });\n }\n\n handleOrderEmailDelete() {\n const index = this.state.index;\n let newState = Object.assign({}, this.state.values);\n let newEmails = this.state.values.orderNotificationEmails.filter(\n (email, i) => i !== index\n );\n newState.orderNotificationEmails = newEmails;\n this.setState({\n values: newState,\n showOrderDeleteEmailDialog: false,\n });\n }\n\n handleCustomerEmailDelete() {\n const index = this.state.index;\n let newState = Object.assign({}, this.state.values);\n let newEmails = this.state.values.customerNotificationEmails.filter(\n (email, i) => i !== index\n );\n newState.customerNotificationEmails = newEmails;\n this.setState({\n values: newState,\n showCustomerDeleteEmailDialog: false,\n });\n }\n\n hideEmailDeleteConfirmation() {\n this.setState({\n showOrderDeleteEmailDialog: false,\n });\n }\n\n handleOrderPhoneAdd({ phone }) {\n let newState = Object.assign({}, this.state.values);\n if (isValidNumber(phone)) {\n if (!newState.orderNotificationPhones.includes(phone)) {\n newState.orderNotificationPhones.push(phone);\n } else {\n return this.setState({\n popupFormError: getMessage(\"notification.phone.error\"),\n });\n }\n } else {\n return this.setState({\n popupFormError: getMessage(\"input.invalidPhoneFormat\"),\n });\n }\n this.setState({\n newState,\n showOrderPhonePopup: false,\n });\n }\n\n handleOrderPhoneDelete() {\n const index = this.state.index;\n let newState = Object.assign({}, this.state.values);\n let newPhones = this.state.values.orderNotificationPhones.filter(\n (phone, i) => i !== index\n );\n newState.orderNotificationPhones = newPhones;\n this.setState({\n values: newState,\n showOrderDeletePhoneDialog: false,\n });\n }\n\n handleCustomerPhoneAdd({ phone }) {\n let newState = Object.assign({}, this.state.values);\n if (isValidNumber(phone)) {\n if (!newState.customerNotificationPhones.includes(phone)) {\n newState.customerNotificationPhones.push(phone);\n } else {\n return this.setState({\n popupFormError: getMessage(\"notification.phone.error\"),\n });\n }\n } else {\n return this.setState({\n popupFormError: getMessage(\"input.invalidPhoneFormat\"),\n });\n }\n this.setState({\n newState,\n showCustomerPhonePopup: false,\n });\n }\n\n handleCustomerPhoneDelete() {\n const index = this.state.index;\n let newState = Object.assign({}, this.state.values);\n let newPhones = this.state.values.customerNotificationPhones.filter(\n (phone, i) => i !== index\n );\n newState.customerNotificationPhones = newPhones;\n this.setState({\n values: newState,\n showCustomerDeletePhoneDialog: false,\n });\n }\n\n hidePhoneDeleteConfirmation() {\n this.setState({\n showOrderDeletePhoneDialog: false,\n });\n }\n\n hideCustomerDeletePhoneDialog() {\n this.setState({\n showCustomerDeletePhoneDialog: false,\n });\n }\n\n showEmails(emailsToShow) {\n let _this = this;\n let emails = emailsToShow.map((email, i) => {\n return (\n {\n _this.showOrderDeleteEmailDialog(i);\n }}\n />\n );\n });\n return emails;\n }\n\n showCustomerEmails(emailsToShow) {\n let _this = this;\n let emails = emailsToShow.map((email, i) => {\n return (\n {\n _this.showCustomerDeleteEmailDialog(i);\n }}\n />\n );\n });\n return emails;\n }\n\n showOrderDeleteEmailDialog(index) {\n this.setState({\n index: index,\n showOrderDeleteEmailDialog: true,\n });\n }\n\n hideOrderDeleteEmailDialog() {\n this.setState({\n showOrderDeleteEmailDialog: false,\n });\n }\n\n showCustomerDeleteEmailDialog(index) {\n this.setState({\n index: index,\n showCustomerDeleteEmailDialog: true,\n });\n }\n\n hideCustomerDeleteEmailDialog() {\n this.setState({\n showCustomerDeleteEmailDialog: false,\n });\n }\n\n showPhones(phonesToShow) {\n let _this = this;\n let phones = phonesToShow.map((phone, i) => {\n return (\n {\n _this.showOrderDeletePhoneDialog(i);\n }}\n />\n );\n });\n return phones;\n }\n\n showCustomerPhones(phonesToShow) {\n let _this = this;\n let phones = phonesToShow.map((phone, i) => {\n return (\n {\n _this.showCustomerDeletePhoneDialog(i);\n }}\n />\n );\n });\n return phones;\n }\n\n showOrderDeletePhoneDialog(index) {\n this.setState({\n index: index,\n showOrderDeletePhoneDialog: true,\n });\n }\n\n showCustomerDeletePhoneDialog(index) {\n this.setState({\n index: index,\n showCustomerDeletePhoneDialog: true,\n });\n }\n\n hideOrderDeletePhoneDialog() {\n this.setState({\n showDeletePhoneDialog: false,\n });\n }\n\n closeSuccess() {\n this.setState({\n showSuccessDialog: false,\n });\n }\n\n onSubmit({ emails = [], phones = [], ...data }) {\n this.setState({\n submitting: true,\n });\n const api = new API({ url: \"/account-service/config/notification\" });\n let params = {\n notification: data,\n };\n params[\"notification\"][\"orderPlaceEmailRecipients\"] =\n data.orderNotificationEmails;\n params[\"notification\"][\"orderPlaceSmsRecipients\"] =\n data.orderNotificationPhones;\n params[\"notification\"][\"customerAddNewAddressEmailRecipients\"] =\n data.customerNotificationEmails;\n params[\"notification\"][\"customerAddNewAddressSmsRecipients\"] =\n data.customerNotificationPhones;\n params[\"notification\"][\"customerSignUpEmailRecipients\"] =\n data.customerNotificationEmails;\n params[\"notification\"][\"customerSignUpSmsRecipients\"] =\n data.customerNotificationPhones;\n params[\"notification\"][\"customerWalletRechargeEmailRecipients\"] =\n data.customerNotificationEmails;\n params[\"notification\"][\"customerWalletRechargeSmsRecipients\"] =\n data.customerNotificationPhones;\n params[\"notification\"][\"orderCancelEmailRecipients\"] =\n data.orderNotificationEmails;\n params[\"notification\"][\"orderCancelSmsRecipients\"] =\n data.orderNotificationPhones;\n params[\"notification\"][\"orderRefundEmailRecipients\"] =\n data.orderNotificationEmails;\n params[\"notification\"][\"orderRefundSmsRecipients\"] =\n data.orderNotificationPhones;\n delete data.customerNotificationEmails;\n delete data.customerNotificationPhones;\n delete data.orderNotificationEmails;\n delete data.orderNotificationPhones;\n api\n .put(params)\n .then(\n () => {\n this.setState({\n submitting: false,\n showSuccessDialog: true,\n });\n },\n (error) => {\n this.setState({\n formError: error.message,\n submitting: false,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n componentWillUnmount() {\n this.api && this.api.cancel();\n this.configApi && this.configApi.cancel();\n }\n\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n return this.state.showLoader ? (\n \n ) : (\n
    \n \n {this.state.popupFormError}\n \n \n \n {this.state.popupFormError}\n \n \n \n {this.state.popupFormError}\n \n \n \n {this.state.popupFormError}\n \n \n \n \n \n \n \n\n
    \n {this.state.formError && (\n
    {this.state.formError}
    \n )}\n

    {getMessage(\"notifications.order.title\")}

    \n
    \n
    \n {this.showEmails(this.state.values.orderNotificationEmails)}\n {this.showPhones(this.state.values.orderNotificationPhones)}\n \n \"+\"\n {getMessage(\"notifications.add\")}\n
    \n }\n >\n \n
    \n
    \n \"\"\n
    \n
    \n {getMessage(\"notifications.email\")}\n
    \n
    \n
    \n \n
    \n
    \n \"\"\n
    \n
    \n {getMessage(\"notifications.phone\")}\n
    \n
    \n
    \n \n \n \n \n
    \n
    \n Some explanation text starts from here which will make the user\n understand how important this part for them to get notified.\n
    \n
    \n

    {getMessage(\"notifications.customer.title\")}

    \n
    \n
    \n {this.showCustomerEmails(\n this.state.values.customerNotificationEmails\n )}\n {this.showCustomerPhones(\n this.state.values.customerNotificationPhones\n )}\n \n \"+\"\n {getMessage(\"notifications.add\")}\n
    \n }\n >\n \n
    \n
    \n \"\"\n
    \n
    \n {getMessage(\"notifications.email\")}\n
    \n
    \n
    \n \n
    \n
    \n \"\"\n
    \n
    \n {getMessage(\"notifications.phone\")}\n
    \n
    \n
    \n \n \n {/* */}\n \n {/* */}\n
    \n
    \n Some explanation text starts from here which will make the user\n understand how important this part for them to get notified.\n
    \n
    \n
    \n \n {getMessage(\"notifications.save\")}\n \n \n {getMessage(\"notifications.cancel\")}\n \n
    \n \n \n );\n }\n}\nexport default withRouter(NotificationsForm);\n","import React, { Component } from \"react\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport NotificationsForm from \"./form\";\nimport { getMessage } from \"../../../lib/translator\";\n\nimport \"./style.css\";\n\nexport default class Notifications extends Component {\n render() {\n return (\n \n

    {getMessage(\"notifications.heading\")}

    \n \n \n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n VALIDATION_TYPES,\n} from \"../../../../../components/Form\";\nimport Dialog from \"../../../../../components/Popup/Dialog\";\nimport { getMessage } from \"../../../../../lib/translator\";\n\nexport default class BankForm extends BaseForm {\n constructor(props) {\n super(props);\n\n this.state = {\n formError: props.error,\n showConfirmDelete: false,\n };\n\n if (props.bankDetails) {\n this.state.values = props.bankDetails;\n }\n this.closeDialog = this.closeDialog.bind(this);\n this.showDialog = this.showDialog.bind(this);\n }\n\n componentWillReceiveProps(newProps) {\n if (newProps.error) {\n this.setState({\n formError: newProps.error,\n showConfirmDelete: false,\n });\n }\n }\n\n showDialog() {\n this.setState({\n showConfirmDelete: true,\n });\n }\n\n closeDialog() {\n this.setState({\n showConfirmDelete: false,\n });\n }\n\n render() {\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n const { bankDetails, onDelete } = this.props;\n return (\n
    \n {\n onDelete(this.state.values);\n }}\n title={getMessage(\"settings.online.payment.are.you.sure\")}\n information={getMessage(\"settings.online.payment.account.delete\")}\n />\n
    \n {this.state.formError && (\n
    {this.state.formError}
    \n )}\n
    \n \n \n \n \n \n \n \n
    \n
    \n \n {getMessage(\"settings.online.payments.save\")}\n {\" \"}\n {bankDetails && (\n \n {getMessage(\"settings.online.payment.removebankaccount\")}\n \n )}\n
    \n \n
    \n );\n }\n}\n","import React from \"react\";\nimport { BaseForm } from \"../../../../../components/Form\";\nimport { CheckboxGroup } from \"../../../../../components/Form/Inputs\";\nimport { SKINS as CHECKBOX_SKINS } from \"../../../../../components/Form/Inputs/CheckboxGroup\";\nimport Loader from \"../../../../../components/Loader\";\nimport Dialog from \"../../../../../components/Popup/Dialog\";\nimport API from \"../../../../../lib/api\";\nimport { getMessage } from \"../../../../../lib/translator\";\n\nexport default class PaymentGatewayForm extends BaseForm {\n constructor(props) {\n super(props);\n\n let paymentModes = props.paymentModes;\n let mapping = paymentModes.reduce((result, pm) => {\n result[pm.parentPaymentModeId] = result[pm.parentPaymentModeId] || [];\n result[pm.parentPaymentModeId].push(pm);\n return result;\n }, {});\n let pmIds = Object.keys(mapping);\n delete pmIds[pmIds.indexOf(\"null\")];\n let updated =\n mapping[\"null\"] &&\n mapping[\"null\"].filter((pm) => {\n return pmIds.indexOf(pm.id) < 0 ? pm : null;\n });\n\n mapping[\"null\"] = updated;\n\n this.state = {\n paymentModes: props.paymentModes,\n mapping: mapping,\n showLoader: false,\n submitting: false,\n showDialog: false,\n };\n\n let addedPaymentModes = props.addedPaymentModes;\n let ids = addedPaymentModes.map((pm) => {\n return pm.id;\n });\n this.state.values = {\n paymentModes: ids,\n };\n\n this.closeDialog = this.closeDialog.bind(this);\n }\n\n componentDidMount() {\n this.setState({\n showLoader: true,\n });\n let { mapping, paymentModes } = this.state;\n let result = Object.entries(mapping);\n let map = result.map((parentGw) => {\n let parentGwId = parentGw[0];\n\n if (parentGwId > 0) {\n let parentGwName = paymentModes.filter((pm) => pm.id === parentGwId)[0]\n .paymentMode;\n let childGws = parentGw[1];\n\n let options = childGws.map((cpm) => {\n return {\n text: cpm.paymentMode,\n value: cpm.id,\n icon:\n cpm.imageUrl ||\n \"https://png.icons8.com/ios/1600/ios-application-placeholder.png\",\n };\n });\n return {\n key: parentGwId,\n label: parentGwName,\n name: parentGwName,\n options: options,\n };\n } else {\n let gateways = parentGw[1];\n let checkboxes =\n gateways &&\n gateways.map((gw) => {\n let option = [\n {\n value: gw.id,\n icon:\n gw.imageUrl ||\n \"https://png.icons8.com/ios/1600/ios-application-placeholder.png\",\n },\n ];\n return {\n key: gw.id,\n label: gw.paymentMode,\n name: gw.paymentMode,\n options: option,\n };\n });\n return checkboxes;\n }\n });\n this.setState({\n map: map,\n showLoader: false,\n });\n }\n\n closeDialog() {\n this.setState({\n showDialog: false,\n });\n }\n\n onSubmit(data) {\n this.setState({\n submitting: true,\n });\n const api = new API({ url: \"/account-service/payment-account\" });\n let params = {};\n params[\"type\"] = \"DEFAULT\";\n params[\"id\"] = this.props.id;\n params[\"paymentModes\"] = data.paymentModes.map((pm) => {\n return {\n id: pm,\n };\n });\n api\n .put(params)\n .then(\n (response) => {\n this.setState({\n formError: \"\",\n submitting: false,\n showDialog: true,\n });\n },\n (error) => {\n this.setState({\n formError: error.message,\n submitting: false,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n render() {\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n let paymentModes = this.state.map;\n return (\n
    \n \n {this.state.showLoader ? (\n \n ) : (\n
    \n {this.state.formError && (\n
    {this.state.formError}
    \n )}\n {paymentModes &&\n paymentModes.map((group) => {\n if (Array.isArray(group)) {\n let LonerPaymentModes = group.map((pm) => (\n \n \n \n
    \n ));\n return (\n
    \n {LonerPaymentModes}\n
    \n );\n } else {\n if (group) {\n return (\n \n \n \n \n );\n }\n return null;\n }\n })}\n
    \n \n {getMessage(\"settings.online.payments.save\")}\n \n this.props.back()}\n disabled={this.state.submitting}\n >\n {getMessage(\"basicInfo.cancel.text\")}\n \n
    \n \n )}\n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport API from \"../../../../lib/api\";\nimport BankForm from \"./BankForm\";\nimport PaymentGatewayForm from \"./PaymentGatewayForm/index\";\nimport { Popup, Dialog } from \"../../../../components/Popup\";\nimport Loader from \"../../../../components/Loader\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nexport default class DefaultPaymentConfiguration extends Component {\n constructor(props) {\n super(props);\n this.state = {\n linkedBankAccounts: [],\n bankFormShown: false,\n addBankShown: false,\n showLoader: true,\n showSucessDialog: false,\n showBankDialog: false,\n editError: \"\",\n addError: \"\",\n };\n\n this.showBankForm = this.showBankForm.bind(this);\n this.showAddBankForm = this.showAddBankForm.bind(this);\n this.hideBankForm = this.hideBankForm.bind(this);\n this.addBankAccount = this.addBankAccount.bind(this);\n this.hideAddBankForm = this.hideAddBankForm.bind(this);\n this.editBankAccount = this.editBankAccount.bind(this);\n this.deleteBankAccount = this.deleteBankAccount.bind(this);\n this.closeDialog = this.closeDialog.bind(this);\n }\n\n componentDidMount() {\n this.setState({\n showLoader: true,\n });\n const bankApi = new API({ url: \"/account-service/bank-account\" });\n const paymentModesApi = new API({ url: \"/account-service/payment-mode\" });\n Promise.all([bankApi.get(), paymentModesApi.get()])\n .then(\n ([bankResponse, paymentModesResponse]) => {\n let bankDetails = bankResponse.data.bankaccount;\n let paymentModes = paymentModesResponse.data.paymentmode;\n this.setState({\n linkedBankAccounts: bankDetails,\n paymentModes: paymentModes,\n showLoader: false,\n });\n },\n (bankError, paymentModeError) => {\n this.setState({\n error: bankError.message || paymentModeError.message,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n closeDialog() {\n this.setState({\n showSucessDialog: false,\n showBankDialog: false,\n });\n }\n\n showAddBankForm() {\n this.setState({\n addBankShown: true,\n });\n }\n\n hideAddBankForm() {\n this.setState({\n addBankShown: false,\n bankDetails: \"\",\n editError: \"\",\n addError: \"\",\n });\n }\n showBankForm(bankid) {\n this.setState(\n {\n bankDetails: this.state.linkedBankAccounts.filter(\n (account) => account.id === bankid\n )[0],\n },\n () => {\n this.setState({\n bankFormShown: true,\n });\n }\n );\n }\n hideBankForm() {\n this.setState({\n bankFormShown: false,\n bankDetails: \"\",\n editError: \"\",\n addError: \"\",\n });\n }\n addBankAccount(data) {\n this.setState({\n submitting: true,\n });\n const api = new API({ url: \"/account-service/bank-account\" });\n api\n .post(data)\n .then(\n (response) => {\n let newState = this.state.linkedBankAccounts;\n newState.push(response.data.bankaccount);\n this.setState({\n linkedBankAccounts: newState,\n addBankShown: false,\n addError: \"\",\n });\n },\n (error) => {\n this.setState({\n addError: error.message,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n\n this.hideBankForm();\n }\n\n editBankAccount(data) {\n const api = new API({ url: \"/account-service/bank-account\" });\n api\n .put(data)\n .then(\n (response) => {\n let responseBankAccount = response.data.bankaccount;\n let newLinkedBankAccounts = this.state.linkedBankAccounts;\n let editedAccountIndex = newLinkedBankAccounts.findIndex(\n (account) => account.id === responseBankAccount.id\n );\n newLinkedBankAccounts[editedAccountIndex] = responseBankAccount;\n this.setState({\n linkedBankAccounts: newLinkedBankAccounts,\n bankFormShown: false,\n editError: \"\",\n });\n },\n (error) => {\n this.setState({\n editError: error.message,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n deleteBankAccount(data) {\n const api = new API({ url: \"/account-service/bank-account\" });\n data.status = \"DISABLED\";\n api\n .put(data)\n .then(\n (response) => {\n let responseBankAccount = response.data.bankaccount;\n let newLinkedBankAccounts = this.state.linkedBankAccounts;\n let remainingAccounts = newLinkedBankAccounts.filter(\n (account) => account.id !== responseBankAccount.id\n );\n this.setState({\n linkedBankAccounts: remainingAccounts,\n bankFormShown: false,\n editError: \"\",\n });\n },\n (error) => {\n this.setState({\n editError: error.message,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n render() {\n return (\n
    \n {this.state.showLoader ? (\n \n ) : (\n
    \n

    \n {getMessage(\"settings.online.payment.bank.account.details\")}\n

    \n
    \n
    \n {this.state.linkedBankAccounts.map(\n ({ id, bankName, accountNumber }) => (\n this.showBankForm(id)}\n >\n
    {bankName}
    \n
    \n {String(accountNumber).replace(\n /.+(?=.{4,}$)/g,\n \"xxxxxxx-\"\n )}\n
    \n \n )\n )}\n \n {getMessage(\"online.payments.link.bank.account\")}\n \n
    \n \n \n \n \n \n \n \n \n
    \n

    {getMessage(\"settings.online.payment.gateway\")}

    \n
    \n {getMessage(\"settings.online.payment.our.gateway\")}\n \n {getMessage(\"settings.online.payment.use.your.gateway\")}\n \n
    \n {\n \n }\n
    \n )}\n
    \n );\n }\n}\n","import React, { Component } from \"react\";\nimport Image from \"../../../../../components/Image\";\nimport {\n BaseForm,\n Input,\n CheckboxGroup,\n Checkbox,\n VALIDATION_TYPES,\n} from \"../../../../../components/Form\";\nimport { SKINS as CHECKBOX_SKINS } from \"../../../../../components/Form/Inputs/CheckboxGroup\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport API from \"../.././../../../lib/api\";\nimport { Dialog } from \"../../../../../components/Popup\";\n\nclass PaymentGatewayConfigurationForm extends BaseForm {\n constructor(props) {\n super(props);\n this.showConfigs = this.showConfigs.bind(this);\n\n let selected = props.selected;\n let selectedPaymentModes = selected.map((pm) => {\n return pm.id;\n });\n this.state = {\n showSuccessDialog: false,\n };\n this.state.values = {\n paymentModes: {\n paymentModes: selectedPaymentModes,\n },\n accountConfiguration: {},\n };\n this.handleDialogClose = this.handleDialogClose.bind(this);\n }\n\n handleDialogClose() {\n this.setState({\n showSuccessDialog: false,\n });\n }\n\n componentDidMount() {\n const configs = this.props.configs;\n let values = this.state.values;\n let transformedConfigsArray = [];\n\n // Find all configs for the payment mode\n if (Array.isArray(configs)) {\n // Configs have not been set yet\n configs.forEach((config) => {\n let transformedConfig = {};\n if (config.typeMeta) {\n config.typeMeta.forEach((meta) => {\n transformedConfig = {};\n values[\"accountConfiguration\"][meta] = \"\";\n transformedConfig.label = `${config.value} ${meta}`;\n transformedConfig.stateKey = meta;\n transformedConfig.parent = config.value;\n transformedConfigsArray.push(transformedConfig);\n });\n } else {\n values[\"accountConfiguration\"][config.value] = \"\";\n transformedConfig.label = config.value;\n transformedConfig.stateKey = config.value;\n transformedConfig.parent = config.value;\n transformedConfigsArray.push(transformedConfig);\n }\n });\n } else {\n let parsedConfigs = JSON.parse(configs); // Configs got from server\n let keys = Object.keys(parsedConfigs);\n keys.forEach((key) => {\n let transformedConfig = {};\n if (Array.isArray(parsedConfigs[key])) {\n transformedConfig = {};\n let details = parsedConfigs[key];\n return details.map((obj) => {\n let objectKeys = Object.keys(obj);\n return objectKeys.forEach((innerKey) => {\n transformedConfig = {};\n values[\"accountConfiguration\"][innerKey] = obj[innerKey];\n transformedConfig.label = `${key} ${innerKey}`;\n transformedConfig.stateKey = innerKey;\n transformedConfig.parent = key;\n transformedConfigsArray.push(transformedConfig);\n });\n });\n } else {\n values[\"accountConfiguration\"][key] = parsedConfigs[key];\n transformedConfig.label = key;\n transformedConfig.stateKey = key;\n transformedConfigsArray.push(transformedConfig);\n }\n });\n }\n this.transformedConfigsArray = transformedConfigsArray;\n\n // To get all the supported payment modes of the gateway\n let supportedPaymentModes = this.props.supportedPaymentModes.slice();\n let toRemove = supportedPaymentModes.filter(\n (pm) => pm.paymentModeId === null\n );\n let pmKeys = Object.keys(supportedPaymentModes);\n if (toRemove.length > 0) {\n let newPmodes = toRemove[0].paymentModes.filter(\n (pm) => pmKeys.indexOf(pm.id) === -1\n );\n toRemove[0].paymentModes = newPmodes;\n }\n\n let modes = supportedPaymentModes.map((pm) => {\n if (!pm.paymentModeName) {\n let paymentModes = pm.paymentModes.map((paymentMode) => {\n let options = [\n {\n value: paymentMode.id,\n icon:\n paymentMode.imageUrl ||\n \"https://png.icons8.com/ios/1600/ios-application-placeholder.png\",\n },\n ];\n let key = `${paymentMode.paymentMode}-checkbox`;\n return {\n key: key,\n label: paymentMode.paymentMode,\n name: `${this.props.id}-${paymentMode.paymentMode}`,\n skin: CHECKBOX_SKINS.WITH_ICONS,\n options: options,\n };\n });\n return paymentModes;\n } else {\n let name = pm.paymentModeName.paymentMode;\n let options = pm.paymentModes.map((paymentMode) => {\n return {\n text: paymentMode.paymentMode,\n value: paymentMode.id,\n icon:\n paymentMode.imageUrl ||\n \"https://png.icons8.com/ios/1600/ios-application-placeholder.png\",\n };\n });\n return {\n key: `${this.props.id}${name}-checkbox`,\n label: name,\n skin: CHECKBOX_SKINS.WITH_ICONS,\n options: options,\n };\n }\n });\n\n this.setState({\n values: values,\n modes: modes,\n });\n }\n\n showConfigs() {\n let configs = this.transformedConfigsArray;\n return (\n configs &&\n configs.map((config) => {\n return (\n \n );\n })\n );\n }\n\n onSubmit(data) {\n const api = new API({ url: \"/account-service/payment-account\" });\n let gatewayId = this.props.gatewayId;\n let params = {};\n let thisGw = {};\n let gatewayPaymentModes = data.paymentModes.paymentModes.map((pm) => {\n return {\n id: pm,\n };\n });\n thisGw.id = gatewayId;\n thisGw.paymentModes = gatewayPaymentModes;\n\n let { accountConfiguration } = data;\n if (Array.isArray(this.props.configs)) {\n let configs = this.props.configs;\n let conf = {};\n\n configs.forEach((config) => {\n if (config.typeMeta) {\n conf[config.value] = [];\n let obj = {};\n config.typeMeta.forEach((key) => {\n obj[key] = accountConfiguration[key];\n });\n conf[config.value].push(obj);\n } else {\n conf[config.value] = accountConfiguration[config.value];\n }\n return true;\n });\n thisGw.accountConfiguration = JSON.stringify(conf);\n } else {\n let parsedConfigs = JSON.parse(this.props.configs);\n let keys = Object.keys(parsedConfigs);\n let conf = {};\n keys.forEach((key) => {\n if (Array.isArray(parsedConfigs[key])) {\n let keyArray = [];\n parsedConfigs[key].forEach((obj) => {\n let sub = {};\n Object.keys(obj).forEach((innerKey) => {\n sub[innerKey] = data[\"accountConfiguration\"][innerKey];\n });\n keyArray.push(sub);\n });\n conf[key] = keyArray;\n } else {\n conf[key] = data[\"accountConfiguration\"][key];\n }\n });\n thisGw.accountConfiguration = JSON.stringify(conf);\n }\n let configuredGateways = this.props.configuredGateways;\n let othergateways = configuredGateways.filter((gw) => gw.id !== gatewayId);\n if (!data.disable) {\n othergateways.push(thisGw);\n }\n params[\"type\"] = \"CUSTOM\";\n params[\"id\"] = this.props.paymentAccountId;\n params[\"paymentGateways\"] = othergateways;\n\n api\n .put(params)\n .then(\n (response) => {\n this.props.onSuccess(response.data.paymentaccount.paymentGateways);\n this.setState({\n formError: \"\",\n showSuccessDialog: true,\n });\n },\n (error) => {\n this.setState({\n formError: error.message,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n render() {\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n return (\n
    \n \n \n {this.state.formError && (\n
    {this.state.formError}
    \n )}\n
    \n {\n
    \n {this.transformedConfigsArray &&\n this.transformedConfigsArray.length > 0 &&\n this.showConfigs()}\n
    \n \n
    \n
    \n }\n
    \n {this.state.modes &&\n this.state.modes.map((pm) => {\n if (Array.isArray(pm)) {\n let cpm = pm.map((loners) => (\n \n ));\n return (\n \n {cpm}\n
    \n );\n } else {\n return (\n \n );\n }\n })}\n
    \n
    \n
    \n \n {getMessage(\"settings.online.payments.save\")}\n \n
    \n \n \n );\n }\n}\n\nexport default class PaymentGatewayConfiguration extends Component {\n render() {\n let containerStyle =\n !this.props.expanded || this.contentRef\n ? {\n maxHeight: this.props.expanded\n ? this.contentRef.offsetHeight + \"px\"\n : 0,\n }\n : {};\n return (\n \n
    \n \n {this.props.name}\n \n
    \n
    \n {\n this.contentRef = node;\n }}\n >\n \n
    \n \n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Input, BaseForm } from \"../../../../../components/Form\";\nimport Image from \"../../../../../components/Image\";\nimport API from \"../../../../../lib/api\";\nimport Loader from \"../../../../../components/Loader\";\nimport Dialog from \"../../../../../components/Popup/Dialog\";\nimport { getMessage } from \"../../../../../lib/translator\";\n\nconst Header = (props) => {\n const header = props.header;\n if (!header) {\n return null;\n }\n let details = header.map((paymentMode) => (\n \n {paymentMode.name}\n \n ));\n return details;\n};\n\nconst SubHeader = (props) => {\n const subHeader = props.subHeader;\n if (!subHeader) {\n return null;\n }\n let details = subHeader.map((subHeader, i) => {\n return subHeader.map((item, j) => (\n
    \n ));\n });\n return details;\n};\n\nclass TableRow extends Component {\n componentDidMount() {\n this.setState({\n gateway: this.props.gateway,\n });\n }\n\n componentWillReceiveProps(newProps) {\n if (newProps.gateway !== this.state.gateway) {\n this.setState({\n gateway: newProps.gateway,\n });\n }\n }\n render() {\n const { paymentModesOrder, gateway, onChange } = this.props;\n if (!gateway || !paymentModesOrder) {\n return null;\n }\n const gatewayPaymentModes = gateway.paymentModes.map((pm) => pm.id);\n let keys = Object.keys(paymentModesOrder);\n let row = keys.map((groupId) => {\n let values = paymentModesOrder[groupId].map((pm) => {\n if (gatewayPaymentModes.indexOf(pm.id) > -1) {\n let paymentModeRate = gateway.paymentModes.filter(\n (gpm) => gpm.id === pm.id\n )[0].rate;\n return (\n \n );\n } else {\n return \n \n \n );\n });\n return names;\n }\n\n componentWillReceiveProps(newProps) {\n let configuredGateways = this.state.values.configuredGateways;\n if (newProps.configuredGateways !== configuredGateways) {\n this.setState({\n values: {\n configuredGateways: newProps.addedGateways,\n },\n });\n }\n }\n\n componentDidMount() {\n this.setState({\n showLoader: true,\n });\n const { paymentModes } = this.props;\n let pmHeaderDetails = paymentModes.reduce((result, pm) => {\n result[pm.parentPaymentModeId] = result[pm.parentPaymentModeId] || [];\n result[pm.parentPaymentModeId].push(pm);\n return result;\n }, {});\n\n let keys = Object.keys(pmHeaderDetails);\n let singlePm = pmHeaderDetails[\"null\"];\n delete pmHeaderDetails[\"null\"];\n singlePm.map((pm) => {\n if (keys.indexOf(pm.id) < 0) {\n pmHeaderDetails[pm.id] = [pm];\n }\n return null;\n });\n this.setState(\n {\n paymentModesWithChilPm: pmHeaderDetails,\n },\n () => {\n this.getHeaderDetails();\n }\n );\n }\n\n getHeaderDetails() {\n const { paymentModes } = this.props;\n let pmHeaderDetails = this.state.paymentModesWithChilPm;\n if (!pmHeaderDetails) {\n return null;\n }\n let keys = Object.keys(pmHeaderDetails);\n\n let mainDivision = keys.map((key) => {\n if (key > 0) {\n let pmName = paymentModes.filter((pm) => pm.id === key)[0].paymentMode;\n let pmId = paymentModes.filter((pm) => pm.id === key)[0].id;\n let pmCount = pmHeaderDetails[key].length;\n return {\n key: pmId,\n colSpan: pmCount,\n scope: \"colgroup\",\n name: pmName,\n };\n } else {\n let paymentModes = pmHeaderDetails[key].map((pm) => {\n if (keys.indexOf(pm.id) < 0) {\n return {\n key: pm.id,\n colSpan: 1,\n scope: \"colgroup\",\n name: pm.paymentMode,\n };\n }\n return null;\n });\n return paymentModes;\n }\n });\n\n let subPaymentModes = this.state.paymentModesWithChilPm;\n if (!subPaymentModes) {\n return null;\n }\n let subHeaderObject = Object.keys(subPaymentModes).map((group) => {\n return subPaymentModes[group].map((pm) => {\n return {\n scope: \"col\",\n src: pm.imageUrl,\n };\n });\n });\n this.setState({\n headerObject: mainDivision,\n subHeaderObject: subHeaderObject,\n showLoader: false,\n });\n return mainDivision;\n }\n\n showGatewayConfig() {\n if (!this.state.paymentModesWithChilPm) {\n return;\n }\n let paymentModesOrder = this.state.paymentModesWithChilPm;\n let gateways = this.props.addedGateways.map((gw) => {\n return (\n \n \n );\n });\n return gateways;\n }\n\n onChange(gatewayId, paymentModeId, e) {\n let newState = this.state.values.configuredGateways;\n if (!newState) {\n return;\n }\n let paymentGateway = newState.filter((pg) => pg.id === gatewayId);\n let paymentMode = paymentGateway[0].paymentModes.filter(\n (pm) => pm.id === paymentModeId\n )[0];\n paymentMode.rate = e;\n this.setState({\n values: {\n configuredGateways: newState,\n },\n });\n }\n\n onSubmit(data) {\n const api = new API({ url: \"/account-service/payment-account\" });\n let params = {};\n params[\"type\"] = \"CUSTOM\";\n params[\"id\"] = this.props.paymentAccountId;\n params[\"paymentGateways\"] = data.configuredGateways;\n api\n .put(params)\n .then(\n (response) => {\n this.setState({\n showSuccessDialog: true,\n formError: \"\",\n });\n this.props.onSuccess(response.data.paymentaccount.paymentGateways);\n },\n (error) => {\n this.setState({\n formError: error.message,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n render() {\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n return (\n
    \n {this.state.showLoader ? (\n \n ) : (\n
    \n \n
    \n {this.state.formError && (\n
    {this.state.formError}
    \n )}\n
    \n {/*
    Priority:
    */}\n
    \n
    \n
    \n \n \n onChange(gateway.id, pm.id, e)}\n />\n ;\n }\n });\n return values;\n });\n return row;\n }\n}\n\nexport default class RateForm extends BaseForm {\n constructor(props) {\n super(props);\n\n this.state = {\n showLoader: false,\n showSuccessDialog: false,\n validations: {},\n };\n\n this.state.values = {\n configuredGateways: this.props.addedGateways,\n };\n\n this.getGatewayNames = this.getGatewayNames.bind(this);\n this.getHeaderDetails = this.getHeaderDetails.bind(this);\n this.showGatewayConfig = this.showGatewayConfig.bind(this);\n this.onChange = this.onChange.bind(this);\n this.closeDialog = this.closeDialog.bind(this);\n }\n\n closeDialog() {\n this.setState({\n showSuccessDialog: false,\n });\n }\n\n getGatewayNames() {\n let { addedGateways } = this.props;\n let names = addedGateways.map((gw) => {\n return (\n
    {gw.providerName}
    \n \n
    \n \n \n \n \n \n {this.getGatewayNames()}\n
    \n
    \n
    \n {getMessage(\n \"settings.online.payment.payemntmethod\"\n )}\n
    \n
    \n {getMessage(\"settings.online.payment.gateway\")}\n
    \n
    \n
    \n \n \n \n \n \n \n
    \n \n \n \n \n \n {this.showGatewayConfig()}\n \n \n \n \n
    \n \n {getMessage(\"settings.online.payments.save\")}\n \n
    \n \n \n )}\n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport PaymentGatewayConfiguration from \"./PaymentGatewayConfiguration\";\nimport RateConfiguration from \"./RateForm\";\nimport API from \"../../../../lib/api\";\nimport Loader from \"../../../../components/Loader\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nconst PaymentGatewaySelector = (props) => {\n let gateways =\n props &&\n props.paymentGateways.map((paymentgateway, index) => {\n return (\n \n );\n });\n return (\n \n \n {gateways}\n \n );\n};\n\nexport default class CustomPaymentConfiguration extends Component {\n constructor(props) {\n super(props);\n this.state = {\n selectedGateway: null,\n showLoader: true,\n addedGateways: props.addedGateways.slice(),\n configDoneGateways: props.addedGateways.slice(),\n configureExistingGatewayMessage: false,\n };\n this.state.values = {\n paymentGateways: null,\n paymentModes: null,\n };\n this.toggle = this.toggle.bind(this);\n this.loadData = this.loadData.bind(this);\n this.selectGateway = this.selectGateway.bind(this);\n this.getAddedGateways = this.getAddedGateways.bind(this);\n this.getSupportedModesForGateways =\n this.getSupportedModesForGateways.bind(this);\n this.updateGateways = this.updateGateways.bind(this);\n }\n\n componentDidMount() {\n this.loadData();\n }\n\n updateGateways(gatewaysData) {\n this.setState({\n addedGateways: gatewaysData,\n configDoneGateways: gatewaysData,\n configureExistingGatewayMessage: false,\n });\n }\n\n getSupportedModesForGateways() {\n let paymentGateways = this.state.values.paymentGateways;\n let mapping = paymentGateways.map((pg) => {\n var res = pg.paymentModes\n .reduce(function (res, currentValue) {\n if (res.indexOf(currentValue.parentPaymentId) === -1) {\n res.push(currentValue.parentPaymentId);\n }\n return res;\n }, [])\n .map((group) => {\n return {\n paymentModeId: group,\n paymentModeName: this.state.values.paymentModes.filter(\n (pm) => pm.id === group\n )[0],\n paymentModes: pg.paymentModes\n .filter((_el) => {\n return _el.parentPaymentId === group;\n })\n .map((_el) => _el),\n };\n });\n return {\n paymentGatewayId: pg.id,\n support: res,\n configs: pg.requiredConfigs,\n };\n });\n this.setState({\n mapping: mapping,\n });\n }\n\n loadData() {\n this.setState({\n showLoader: true,\n });\n\n this.paymentgatewaysApi = new API({\n url: \"/account-service/payment-gateway\",\n });\n this.paymentModesApi = new API({ url: \"/account-service/payment-mode\" });\n\n Promise.all([this.paymentgatewaysApi.get(), this.paymentModesApi.get()])\n .then(([paymentgatewaysResponse, paymentModesResponse]) => {\n let newState = Object.assign({}, this.state.values);\n newState.paymentGateways =\n paymentgatewaysResponse.data.paymentgateway.filter(\n (value) => value.status === \"ENABLED\"\n );\n newState.paymentModes = paymentModesResponse.data.paymentmode.filter(\n (value) => value.status === \"ENABLED\"\n );\n\n this.setState(\n {\n values: newState,\n showLoader: false,\n },\n () => this.getSupportedModesForGateways()\n );\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n componentWillUnmount() {\n this.paymentModesApi && this.paymentModesApi.cancel();\n this.paymentgatewaysApi && this.paymentgatewaysApi.cancel();\n }\n\n selectGateway(gateway) {\n this.addGateway(gateway.target.value);\n }\n\n addGateway(gatewayId) {\n let addedGateways = this.props.addedGateways;\n if (addedGateways.filter((gw) => gw.id === gatewayId).length > 0) {\n this.setState({\n selectedGateway: gatewayId,\n });\n } else {\n let newAddedGateways = this.state.addedGateways.slice();\n if (newAddedGateways.filter((gw) => gw.id === gatewayId).length > 0) {\n this.setState({\n selectedGateway: gatewayId,\n });\n return;\n }\n let paymentGateways = this.state.values.paymentGateways;\n let newGateway = paymentGateways.filter(function (gw) {\n return gw.id === gatewayId;\n });\n newAddedGateways.push(newGateway[0]);\n this.setState({\n addedGateways: newAddedGateways,\n selectedGateway: gatewayId,\n configureExistingGatewayMessage: false,\n });\n }\n }\n\n getAddedGateways() {\n let addedGateways = this.state.addedGateways;\n let selectedGateway = this.state.selectedGateway;\n let mapping = this.state.mapping;\n if (!mapping) {\n return null;\n }\n let _this = this;\n let add = addedGateways.map((gw) => {\n let gwId = gw.id;\n let support = mapping.filter((pg) => pg.paymentGatewayId === gwId);\n let selected = gw.paymentModes;\n let configs =\n gw.accountConfiguration && gw.accountConfiguration.length !== 0\n ? gw.accountConfiguration\n : mapping.filter((pg) => pg.paymentGatewayId === gwId)[0].configs;\n return (\n {\n _this.toggle(gw.id);\n }}\n expanded={selectedGateway === gw.id}\n />\n );\n });\n return add;\n }\n\n toggle(index) {\n this.setState((prevState) => {\n let selectedGateway = prevState.selectedGateway === index ? null : index;\n return {\n selectedGateway,\n };\n });\n }\n render() {\n return (\n
    \n {this.state.showLoader ? (\n \n ) : (\n
    \n
    \n

    Add Payment Gateway

    \n {/* Add the below line after zoppay is enabled */}\n {/*
    */}\n
    \n \n {this.state.addedGateways.length > 0 && (\n
    \n
    Payment Gateways added
    \n {this.state.configureExistingGatewayMessage && (\n
    \n {getMessage(\n \"settings.online.payment.configureexistinggateways\"\n )}\n
    \n )}\n
    \n {this.getAddedGateways()}\n
    \n {this.state.configDoneGateways &&\n this.state.configDoneGateways.length > 1 && (\n \n )}\n
    \n )}\n
    \n this.props.back()}\n disabled={this.state.submitting}\n >\n {getMessage(\"basicInfo.cancel.text\")}\n \n
    \n
    \n )}\n
    \n );\n }\n}\n","import React, { Component } from \"react\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport Loader from \"../../../components/Loader\";\nimport API from \"../../../lib/api\";\nimport DefaultPaymentConfiguration from \"./Default\";\nimport CustomPaymentConfiguration from \"./Custom\";\nimport { getMessage } from \"../../../lib/translator\";\n\nimport \"./style.css\";\n\nconst PaymentChoices = (props) => (\n
    \n {props.options.map(({ title, description }, index) => (\n
    \n {index > 0 && OR}\n

    {title}

    \n

    {description}

    \n
    \n {\n props.onSelect && props.onSelect(index);\n }}\n >\n Choose\n \n
    \n
    \n ))}\n
    \n);\n\nexport default class PaymentConfiguration extends Component {\n constructor(props) {\n super(props);\n this.state = {\n gatewayChoice: -1,\n addedGateways: [],\n showLoader: false,\n };\n this.getAccountStatus = this.getAccountStatus.bind(this);\n this.switchToCustom = this.switchToCustom.bind(this);\n this.switchToDefault = this.switchToDefault.bind(this);\n }\n\n componentDidMount() {\n this.getAccountStatus();\n }\n\n componentWillUnmount() {\n this.api && this.api.cancel();\n }\n\n getAccountStatus() {\n this.setState({\n showLoader: true,\n });\n this.api = new API({ url: \"/account-service/payment-account\" });\n this.api\n .get()\n .then((response) => {\n let paymentAccount = response.data.paymentaccount;\n if (Array.isArray(paymentAccount)) {\n paymentAccount = paymentAccount[0] || {};\n }\n let accountType = paymentAccount.type;\n\n if (!accountType) {\n // this.back = () => this.setState({ gatewayChoice: -1 })\n this.back = this.props.history.goBack;\n this.setState({\n gatewayChoice: 0, // -1 after our payment gateway (zoppay) integration is enabled\n });\n } else {\n this.back = this.props.history.goBack;\n if (accountType === \"DEFAULT\") {\n this.setState({\n // addedGateways: paymentAccount.paymentModes, Use this for zoppay\n addedGateways: paymentAccount.paymentGateways || [],\n gatewayChoice: 0, // 1 after zoppay is enabled\n });\n } else {\n this.setState({\n addedGateways: paymentAccount.paymentGateways || [],\n gatewayChoice: 0,\n });\n }\n }\n this.setState({\n showLoader: false,\n id: paymentAccount.id,\n paymentAccount: paymentAccount,\n accountType: accountType,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n switchToCustom() {\n let addedGateways = [];\n let paymentGateways = this.state.paymentAccount.paymentGateways;\n if (paymentGateways) {\n addedGateways = paymentGateways;\n }\n this.setState({\n gatewayChoice: 0,\n addedGateways: addedGateways,\n });\n }\n\n switchToDefault() {\n let addedGateways = [];\n let paymentModes = this.state.paymentAccount.paymentModes;\n\n if (paymentModes) {\n addedGateways = paymentModes;\n }\n this.setState({\n gatewayChoice: 1,\n addedGateways: addedGateways,\n });\n }\n\n render() {\n const gatewayChoices = [\n CustomPaymentConfiguration,\n DefaultPaymentConfiguration,\n ];\n const GatewayConfiguration =\n this.state.gatewayChoice > -1\n ? gatewayChoices[this.state.gatewayChoice]\n : null;\n return (\n \n

    \n {getMessage(\"settings.online.payment.onlinepayment\")}\n

    \n {this.state.showLoader ? (\n \n ) : this.state.gatewayChoice === -1 ? (\n {\n this.setState({ gatewayChoice });\n }}\n options={[\n {\n title: getMessage(\"settings.online.payment.ihaveagateway\"),\n description: getMessage(\n \"settings.online.payment.ihaveagatewaydescription\"\n ),\n },\n {\n title: getMessage(\"settings.online.payment.idonthaveagateway\"),\n description: getMessage(\n \"settings.online.payment.idonthaveagatewaydescription\"\n ),\n },\n ]}\n />\n ) : (\n \n )}\n \n );\n }\n}\n","import React from \"react\";\nimport { BaseForm, Input, Textarea } from \"../../../../components/Form\";\nimport Tabs from \"../../../../components/Tabs\";\nimport Dialog from \"../../../../components/Popup/Dialog\";\nimport API from \"../../../../lib/api\";\nimport { isExtensionEnabled } from \"../../../../lib/auth\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { withRouter } from \"react-router-dom\";\n\nimport \"./style.css\";\n\nclass SEOSetting extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n page: 0,\n submitting: false,\n showSuccessDialog: false,\n };\n\n this.pages = [\"HOME\", \"PRODUCT\", \"CATEGORY\"];\n\n if (isExtensionEnabled(\"ProductTagSupport\")) {\n this.pages.push(\"TAG\");\n }\n\n if (isExtensionEnabled(\"MultiBrandSupport\")) {\n this.pages.push(\"BRAND\");\n }\n\n this.changePage = this.changePage.bind(this);\n this.closeDialog = this.closeDialog.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n componentDidMount() {\n this.api = new API({ url: \"/account-service/seo\" });\n this.api\n .get()\n .then(\n (response) => {\n let transformedResponse = response.data.seo;\n this.seos = response.data.seo;\n let values = {};\n transformedResponse.forEach((seo) => {\n let page = seo.page.name;\n values[page] = {\n description: seo.description,\n title: seo.title,\n keywords: seo.keywords,\n };\n });\n this.setState({\n values: values,\n });\n },\n (error) => console.error(error)\n )\n .catch((error) => {\n console.error(error);\n });\n }\n componentWillUnmount() {\n this.api && this.api.cancel();\n }\n\n changePage(page) {\n this.setState(\n {\n page: page,\n },\n this.fetchPageData\n );\n }\n\n closeDialog() {\n this.setState({\n showSuccessDialog: false,\n });\n }\n\n handleSubmit(data) {\n const pageName = this.pages[this.state.page];\n let seo = this.seos.find((seo) => seo.page.name === pageName) || {};\n const id = seo.id;\n const api = new API({ url: `/account-service/seo/${id}` });\n\n let thisSeo = data[pageName];\n let params = seo;\n params.title = thisSeo.title;\n params.description = thisSeo.description;\n params.keywords = thisSeo.keywords;\n return api\n .put(params)\n .then(\n (response) => {\n this.setState({\n formError: \"\",\n showSuccessDialog: true,\n });\n },\n (error) => {\n this.setState({\n formError: error.message,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n onSubmit(data) {\n this.setState({\n submitting: true,\n });\n this.handleSubmit(data)\n .then(() => {\n this.setState({\n submitting: false,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n render() {\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n const page = this.pages[this.state.page];\n const name = page.split(\" \")[0];\n\n return (\n
    \n \n
    \n {this.state.formError && (\n
    {this.state.formError}
    \n )}\n
    \n `${page}`)}\n default={this.state.page}\n onClick={(index) => this.changePage(index)}\n />\n
    \n
    \n \n {getMessage(\"extensions.seo.title.explanation\")}\n \n {\" \"}\n {getMessage(\"extensions.seo.read.more\")}\n \n \n \n {\" \"}\n {getMessage(\"extensions.seo.description.explanation\")}\n \n {\" \"}\n {getMessage(\"extensions.seo.read.more\")}\n \n \n \n {getMessage(\"extensions.seo.keywords.explanation\")}\n \n {\" \"}\n {getMessage(\"extensions.seo.read.more\")}\n \n \n
    \n {getMessage(\"extensions.seo.save\")}\n this.props.history.goBack()}\n >\n {getMessage(\"extensions.seo.cancel\")}\n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default withRouter(SEOSetting);\n","import React, { Component } from \"react\";\nimport SEOForm from \"./SEOSetting\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport { getMessage } from \"../../../lib/translator\";\n\nexport default class SEO extends Component {\n render() {\n return (\n \n

    {getMessage(\"seo.heading\")}

    \n \n \n );\n }\n}\n","import React from \"react\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport \"../style.css\";\nimport {\n BaseForm,\n VALIDATION_TYPES,\n Input,\n Radio,\n} from \"../../../../components/Form\";\nimport Textarea from \"../../../../components/Form/Inputs/Textarea\";\nimport { hasDuplicates } from \"../../../../lib/commonlyused\";\n\nclass AddRackForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n rackNumber: \"\",\n submitting: false,\n formError: \"\",\n newZone: \"\",\n zoneType: \"\",\n };\n this.validateAndSubmit = this.validateAndSubmit.bind(this);\n }\n _submitHandler(e) {\n e && e.preventDefault();\n this.beforeSubmit();\n this.setState({\n pressedSubmitWithCurrentData: true,\n });\n let isValid = this.isFormValid();\n if (isValid) {\n this.validateAndSubmit();\n }\n }\n validateAndSubmit() {\n let values = JSON.parse(JSON.stringify(this.state.values));\n let rackArray = values.rack\n .trim()\n .split(\",\")\n .map((el) => el.trim());\n if (this.state.values.newZone?.trim()) {\n this.props.onSubmit(this.state.values);\n } else if (\n rackArray.some((entry) => (this.props.items || []).includes(entry)) ||\n hasDuplicates(rackArray)\n ) {\n this.setState({ formError: \"Duplicate entries are not allowed\" });\n } else {\n this.props.onSubmit(this.state.values);\n }\n }\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n return (\n
    \n
    \n {this.state.formError && (\n
    {this.state.formError}
    \n )}\n \n \n {this.state.values?.zoneType === \"addNewZone\" && (\n \n )}\n
    \n \n {getMessage(\"rackManagement.submitText.submit\")}\n \n
    \n \n
    \n );\n }\n}\n\nexport default AddRackForm;\n","import React, { Component } from \"react\";\nimport {\n SortableContainer,\n SortableElement,\n arrayMove,\n} from \"react-sortable-hoc\";\nimport API from \"../../../../lib/api\";\nimport StoreSelector, {\n getDefaultStore,\n makestoreDependentComponent,\n} from \"../../../../containers/StoreSelector\";\nimport { Select } from \"../../../../components/Form\";\nimport Loader from \"../../../../components/Loader\";\nimport EmptyState from \"../../../../components/EmptyState\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { hasDuplicates } from \"../../../../lib/commonlyused\";\nimport AddRackForm from \"../AddRackForm\";\n\nimport \"../style.css\";\nimport { Popup, Dialog } from \"../../../../components/Popup\";\n\nimport emptyIcon from \"./rackEmpty.svg\";\n\nconst SortableItem = SortableElement(({ value, rackIndex, onRemove }) => (\n
    \n {value}\n \n
    \n));\nconst SortableList = SortableContainer(({ items, onRemove }) => {\n return (\n
    \n {items.map((value, index) => (\n \n ))}\n
    \n );\n});\n\nclass InterfaceContainer extends Component {\n constructor(props) {\n super(props);\n this.state = Object.assign(\n {\n items: null,\n addRackPopup: false,\n submitting: false,\n showSuccessDialog: false,\n showRackDeleteDialog: false,\n clearSequenceState: false,\n zones: [],\n selectedZone: \"\",\n sequenceData: {},\n },\n getDefaultStore(this.props.stores)\n );\n\n this.tempItems = [];\n this.getRacks = this.getRacks.bind(this);\n this.changeStore = this.changeStore.bind(this);\n this.onSortEnd = this.onSortEnd.bind(this);\n this.onRemove = this.onRemove.bind(this);\n this.handleRackClose = this.handleRackClose.bind(this);\n this.addRack = this.addRack.bind(this);\n this.saveRacks = this.saveRacks.bind(this);\n this.closeDialogs = this.closeDialogs.bind(this);\n this.showRackDeleteDialog = this.showRackDeleteDialog.bind(this);\n this.hideRackDeleteDialog = this.hideRackDeleteDialog.bind(this);\n this.clearSequence = this.clearSequence.bind(this);\n this.undoClear = this.undoClear.bind(this);\n }\n\n getRacks() {\n this.api = new API({ url: \"/order-service/picking-sequence\" });\n this.setState({\n loading: true,\n });\n let params = {};\n if (this.state.storeId) {\n params.storeId = this.state.storeId;\n }\n this.api\n .get(params)\n .then(\n (response) => {\n let sequence =\n response.data.pickingsequence &&\n response.data.pickingsequence.length\n ? response.data.pickingsequence[0].sequence\n : [];\n sequence = sequence || [];\n let empty = !(\n response.data.pickingsequence &&\n response.data.pickingsequence.length > 0\n );\n const id =\n response.data.pickingsequence && response.data.pickingsequence[0]\n ? response.data.pickingsequence[0].id\n : null;\n const zones = response.data.pickingsequence?.map((pickingData) => {\n if (!pickingData.zone) {\n return getMessage(\"rackManagement.rack.add.zone.default\");\n } else {\n return pickingData.zone;\n }\n });\n const sequenceData = response.data.pickingsequence ?? [];\n this.setState({\n empty: empty,\n items: this.state.items || sequence,\n id: this.state.id || id,\n loading: false,\n zones,\n selectedZone: this.state.selectedZone || zones[0],\n sequenceData,\n });\n },\n (error) => {\n if (error.message === \"cancelled\") {\n return;\n }\n if (error.code === 401 || error.code === 403) {\n throw error;\n }\n this.setState({\n error: error.message,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n componentWillUnmount() {\n this.api && this.api.cancel();\n }\n clearSequence() {\n let currState = JSON.parse(JSON.stringify(this.state));\n let currItems = currState.items;\n this.tempItems = currItems;\n this.setState({ items: [], clearSequenceState: true });\n }\n undoClear() {\n this.setState({ items: this.tempItems, clearSequenceState: false }, () => {\n this.tempItems = [];\n });\n }\n saveRacks() {\n this.setState({\n submitting: true,\n formError: null,\n });\n if (\n this.state.items &&\n Array.isArray(this.state.items) &&\n this.state.items.length &&\n hasDuplicates(this.state.items)\n ) {\n this.setState({\n formError: \"Duplicate entries are not allowed\",\n submitting: false,\n });\n return;\n }\n if (this.state.empty || !this.state.id) {\n let api = new API({ url: \"/order-service/picking-sequence\" });\n let params = {};\n params[\"sequence\"] = this.state.items;\n params[\"storeId\"] = parseInt(this.state.storeId, 10);\n params[\"zone\"] = this.state.selectedZone;\n return api.post(params).then(\n (response) => {\n this.setState(\n {\n showSuccessDialog: true,\n submitting: false,\n clearSequenceState: false,\n },\n () => {\n this.tempItems = [];\n }\n );\n },\n (error) => {\n this.setState(\n {\n formError: error.message,\n submitting: false,\n clearSequenceState: false,\n },\n () => {\n this.tempItems = [];\n }\n );\n }\n );\n }\n const id = this.state.id;\n const api = new API({ url: `/order-service/picking-sequence/${id}` });\n let params = {};\n params[\"sequence\"] = this.state.items;\n params[\"storeId\"] = parseInt(this.state.storeId, 10);\n return api\n .put(params)\n .then(\n (response) => {\n this.setState(\n {\n showSuccessDialog: true,\n submitting: false,\n clearSequenceState: false,\n },\n () => {\n this.tempItems = [];\n }\n );\n },\n (error) => {\n this.setState(\n {\n formError: error.message,\n submitting: false,\n clearSequenceState: false,\n },\n () => {\n this.tempItems = [];\n }\n );\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n componentDidMount() {\n this.getRacks();\n }\n\n changeStore(storeId) {\n this.setState({ storeId }, this.getRacks);\n }\n\n onSortEnd({ oldIndex, newIndex }) {\n this.setState({\n items: arrayMove(this.state.items, oldIndex, newIndex),\n });\n }\n\n onRemove() {\n let index = this.state.index;\n const items = this.state.items;\n items.splice(index, 1);\n\n this.setState(\n {\n items: items,\n showRackDeleteDialog: false,\n },\n () => this.saveRacks()\n );\n }\n\n handleRackClose() {\n this.setState({\n addRackPopup: false,\n });\n }\n\n addRack(formData) {\n if (\n formData.newZone?.trim() &&\n !this.state.zones.includes(formData.newZone?.trim())\n ) {\n this.setState(\n {\n items: formData.rack.trim().split(\",\").filter(Boolean),\n selectedZone: formData.newZone,\n addRackPopup: false,\n id: \"\",\n },\n () => this.saveRacks()\n );\n } else if (\n formData.newZone?.trim() &&\n this.state.selectedZone !== formData.newZone?.trim()\n ) {\n let items = this.state.sequenceData.filter(\n (item) => item.zone === formData.newZone?.trim()\n )?.[0];\n const newItem = formData.rack.trim().split(\",\").filter(Boolean);\n this.setState(\n {\n items: items.sequence.concat(newItem),\n addRackPopup: false,\n clearSequenceState: false,\n selectedZone: items.zone,\n id: items.id,\n },\n () => {\n this.tempItems = [];\n }\n );\n } else {\n let items = this.state.items;\n let newItem = formData.rack.trim().split(\",\").filter(Boolean);\n items = items.concat(newItem);\n this.setState(\n {\n items: items,\n addRackPopup: false,\n clearSequenceState: false,\n },\n () => {\n this.tempItems = [];\n }\n );\n }\n }\n\n closeDialogs() {\n this.setState(\n {\n showSuccessDialog: false,\n },\n () => this.getRacks()\n );\n }\n\n showRackDeleteDialog(index) {\n this.setState({\n index: index,\n showRackDeleteDialog: true,\n });\n }\n\n hideRackDeleteDialog() {\n this.setState({\n showRackDeleteDialog: false,\n });\n }\n\n handleZoneChange = (e) => {\n const { sequenceData } = this.state;\n const items = sequenceData.filter((item) => {\n if (e === getMessage(\"rackManagement.rack.add.zone.default\")) {\n return !item.zone;\n } else {\n return item.zone === e;\n }\n });\n this.setState({\n selectedZone: e,\n items: items[0].sequence,\n id: items[0].id,\n });\n };\n\n handleZoneEdit = (e) => {\n this.saveRacks();\n };\n\n render() {\n if (!this.state.items) {\n return ;\n }\n let { items, formError, zones, selectedZone } = this.state;\n return (\n
    \n \n this.onRemove()}\n close={this.hideRackDeleteDialog}\n closeText={getMessage(\"rackManagement.rack.delete.cancelText\")}\n okText={getMessage(\"rackManagement.rack.delete.confirmText\")}\n />\n
    \n

    {getMessage(\"rackmanagement.heading\")}

    \n
    \n \n \n this.setState({ addRackPopup: true })}\n className=\"add-more-rack button primary\"\n >\n +{\" \"}\n \n {getMessage(\"rackManagement.add.more.racks\")}\n \n \n
    \n
    \n {formError &&
    {formError}
    }\n
    \n
    \n \n
    \n \n
    \n {!items.length && !this.state.clearSequenceState && (\n \n )}\n {(items.length > 0 || this.tempItems.length > 0) && (\n
    \n {\n this.saveRacks();\n }}\n >\n {this.state.submitting\n ? \"...\"\n : getMessage(\"rackManagement.save.text\")}\n \n {this.state.clearSequenceState && (\n \n )}\n {!this.state.clearSequenceState && (\n this.clearSequence()}\n className=\"button\"\n >\n \n {getMessage(\"rackManagement.clear.sequence\")}\n \n \n )}\n
    \n )}\n
    \n \n \n \n
    \n
    \n );\n }\n}\n\nconst InterfaceWithStores = makestoreDependentComponent(InterfaceContainer);\n\nexport default class RackContainer extends Component {\n render() {\n return ;\n }\n}\n","import React, { Component } from \"react\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport RackWithStores from \"./Form\";\nimport { getMessage } from \"../../../lib/translator\";\n\nexport default class RackManagement extends Component {\n render() {\n return (\n \n \n \n );\n }\n}\n","import React from \"react\";\nimport \"./style.css\";\n\nconst Loader3Dots = function (props) {\n return (\n
    \n
    \n
    \n );\n};\n\nexport default Loader3Dots;\n","import React from \"react\";\nimport {\n BaseForm,\n Radio,\n MultiTextInput,\n ProductSearch,\n CategorySearch,\n BrandSearch,\n Searchable,\n SingleDatePicker,\n Select,\n} from \"../../../../components/Form\";\nimport {\n SortableContainer,\n SortableElement,\n arrayMove,\n} from \"react-sortable-hoc\";\nimport Table, { Row, Header, Cell } from \"../../../../components/Table\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport Image from \"../../../../components/Image\";\nimport { getProductName, getProductImage } from \"../../../../lib/commonlyused\";\n\nimport DeleteIcon from \"../../../hr/UserShifts/Form/delete.svg\";\nimport { isExtensionEnabled } from \"../../../../lib/auth\";\nimport { getTimes } from \"../../../../lib/datetime\";\nimport API from \"../../../../lib/api\";\nimport Loader from \"../../../../components/Loader\";\nimport Loader3Dots from \"../../../../components/Loader3Dots\";\nimport { get } from \"../../../../lib/storage\";\n\nconst SortableItem = SortableElement((props) => {\n const { product, ind, onDelete } = props;\n return (\n \n \n \n \n {getProductName(product)}\n {ind + 1}\n \n onDelete(ind)}\n >\n \"delete\"\n \n \n \n );\n});\n\nconst SortableList = SortableContainer((props) => {\n const products = props.products || [];\n return (\n \n {products.length > 0 && (\n
    \n {getMessage(\"Image\")}\n {getMessage(\"Name\")}\n {getMessage(\"Position\")}\n \n
    \n )}\n {products.map((pdt, i) => (\n \n ))}\n
    \n );\n});\n\nclass SearchConfigForm extends BaseForm {\n constructor(props) {\n super(props);\n this.addProduct = this.addProduct.bind(this);\n this.onDelete = this.onDelete.bind(this);\n this.onSortEnd = this.onSortEnd.bind(this);\n\n this.direction= get(\"dataLang\") === \"ar\"? \"rtl\" : \"ltr\"\n this.state.options = [\n {\n text: \"Search Term\",\n value: \"SEARCH\",\n },\n ];\n this.state.productListDetail = null;\n this.state.showLoader = false;\n }\n\n beforeSubmit() {\n let validations = Object.assign({}, this.state.validations);\n const values = Object.assign({}, this.state.values);\n if (values.pageType === \"SEARCH\") {\n delete validations.category;\n values.products = values.products.filter((_, index) => index < 5);\n } else {\n delete validations.url;\n }\n this.setState({\n validations,\n });\n }\n componentWillMount() {\n this.handleFetchProducts();\n const api = new API({ url: \"/config-service/config/searchOverrider\" });\n this.setState({ showLoader: true });\n api\n .get()\n .then((response) => {\n const searchOverrideArray =\n response.data.searchOverrider.entityAllowedForSearchOverride;\n let newSearchTab = [...this.state.options];\n if (searchOverrideArray.includes(\"CATEGORY\")) {\n newSearchTab.push({ text: \"Category\", value: \"CATEGORY\" });\n }\n if (\n isExtensionEnabled(\"MultiBrandSupport\") &&\n searchOverrideArray.includes(\"BRAND\")\n ) {\n newSearchTab.push({ text: \"Brand\", value: \"BRAND\" });\n }\n\n if (\n isExtensionEnabled(\"ProductTagSupport\") &&\n searchOverrideArray.includes(\"TAG\")\n ) {\n newSearchTab.push({ text: \"Tag\", value: \"TAG\" });\n }\n this.setState({\n options: newSearchTab,\n });\n })\n .catch((error) => {\n console.log(error);\n })\n .finally(() => {\n this.setState({\n showLoader: false,\n });\n });\n }\n componentDidUpdate(prevProps, prevState) {\n if (prevState.pageType !== this.state.pageType) {\n let validations = Object.assign({}, this.state.validations);\n const values = Object.assign({}, this.state.values);\n if (values.pageType === \"SEARCH\") {\n delete validations.category;\n } else {\n delete validations.url;\n }\n this.setState({\n validations,\n });\n }\n }\n\n componentDidMount() {\n if (!this.state.values.pageType) {\n let values = Object.assign({}, this.state.values);\n values.pageType = \"SEARCH\";\n this.setState({\n values,\n });\n }\n }\n\n addProduct(product) {\n let values = Object.assign({}, this.state.values);\n let pdts = (values.products || []).slice();\n if (pdts.filter((p) => p.id === product.id).length > 0) {\n return null;\n }\n pdts.push(product);\n values.products = pdts;\n this.setState({\n values,\n });\n }\n\n onSortEnd({ oldIndex, newIndex }) {\n let values = Object.assign({}, this.state.values);\n let products = values.products;\n let newProducts = arrayMove(products, oldIndex, newIndex);\n values.products = newProducts;\n this.setState({\n values,\n });\n }\n\n onDelete(index) {\n let values = Object.assign({}, this.state.values);\n let products = values.products;\n products.splice(index, 1);\n values.products = products;\n this.setState({\n values,\n });\n }\n\n removeObjectWithId = (arr, id) => {\n const objWithIdIndex = arr.findIndex((obj) => obj.id === id);\n if (objWithIdIndex > -1) {\n // mutates the original array\n arr.splice(objWithIdIndex, 1);\n }\n return arr;\n };\n updateProductList = (_products) => {\n const { products = [] } = this.state?.values || {};\n\n let productsCopy = JSON.parse(JSON.stringify(products));\n productsCopy.forEach(({ id }) => {\n this.removeObjectWithId(_products, id);\n });\n this.setState((prevState) => ({\n ...prevState,\n values: {\n ...prevState.values,\n products: [...productsCopy, ..._products],\n },\n }));\n };\n getPageNumber = () => {\n const { productListDetail } = this.state;\n const { count, offset, limit } = productListDetail || {};\n if (count) {\n const currentPage = Math.floor(offset / limit + 1);\n return {\n page: currentPage + 1,\n };\n }\n return {};\n };\n handleFetchProducts = () => {\n const { id } = this.state?.values || {};\n const api = new API({\n url: `/catalogue-service/product-ranking/${id}/product`,\n });\n const params = this.getPageNumber();\n this.setState({ showViewMoreLoader: true });\n api\n .get({ ...params })\n .then((response) => {\n const { products = [], count, limit, offset } = response.data || {};\n this.setState({ productListDetail: { count, limit, offset } });\n this.updateProductList(products);\n })\n .catch((error) => {\n console.log(error);\n })\n .finally(() => {\n this.setState({\n showViewMoreLoader: false,\n });\n });\n };\n handleViewMoreVisibility = () => {\n const { productListDetail } = this.state;\n const { count, offset, limit } = productListDetail || {};\n if (!count) return true;\n\n return offset + limit < count;\n };\n render() {\n const { SubmitButton, CancelButton } = this.buttons;\n const { Form } = this.components;\n const { pageType, products } = this.state.values;\n const searchPage = pageType === \"SEARCH\";\n const categoryPage = pageType === \"CATEGORY\";\n const brandPage = pageType === \"BRAND\";\n const tagPage = pageType === \"TAG\";\n const readonly = this.props.method !== \"add\";\n return this.state.showLoader ? (\n \n ) : (\n
    \n
    \n {this.props.method === \"add\" && (\n \n )}\n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n {searchPage && (\n \n )}\n {categoryPage && (\n \n )}\n {brandPage && (\n \n )}\n {tagPage && (\n response.data.tag || []}\n searchKey=\"name\"\n valueKey=\"id\"\n nameKey=\"name\"\n label={getMessage(\"tag\")}\n placeholder={getMessage(\"Enter tags\")}\n {...this.generateStateMappers({\n stateKeys: [\"tag\"],\n loseEmphasisOnFill: true,\n })}\n />\n )}\n {\n \n }\n\n \n\n {pageType === \"SEARCH\" && this.handleViewMoreVisibility() ? (\n
    \n {this.state.showViewMoreLoader ? : \"view more\"}\n
    \n ) : null}\n\n
    \n \n {getMessage(\"search-configuration.form.cancel\")}\n \n {getMessage(\"Save\")}\n
    \n \n
    \n );\n }\n}\n\nexport default SearchConfigForm;\n","import React, { Component } from \"react\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport Image from \"../../../components/Image\";\nimport SearchConfigForm from \"./Form\";\nimport EmptyIcon from \"./empty.svg\";\nimport { getProductImage, getProductName } from \"../../../lib/commonlyused\";\nimport { getPrintableTime } from \"../../../lib/datetime\";\n\nconst emptyState = {\n icon: EmptyIcon,\n message: getMessage(\"search-configuration.emptystate.message\"),\n actions: ({ onAction }) => (\n {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n + {getMessage(\"search-configuration.add.button.label\")}\n \n ),\n};\n\nconst categoryTableProperties = (pageType, isMobileView) => ({\n headers: [\n getMessage(\"search-configuration.header.name\"),\n getMessage(\"sc.header.pdtname\"),\n getMessage(\"Position\"),\n getMessage(\"search-configuration.header.actions\"),\n ],\n row: ({\n id,\n products,\n category,\n tag,\n brand,\n url,\n onAction,\n validFrom,\n validTo,\n }) => {\n let entity = category || tag || brand || url || [];\n let names = entity.map((ent) => ent.name).join(\", \");\n if (pageType === \"SEARCH\") {\n names = url && url.join(\", \");\n }\n return (\n \n \n
    \n
    \n {\n onAction(TABLE_ACTIONS.EDIT, { id });\n }}\n >\n {names}\n \n
    \n \n {validFrom && validTo && (\n {`${getPrintableTime(\n validFrom\n )} - ${getPrintableTime(validTo)}`}\n )}\n {validFrom && !validTo && (\n {`${getMessage(\n \"Valid from\"\n )}: ${getPrintableTime(validFrom)}`}\n )}\n {!validFrom && validTo && (\n {`${getMessage(\n \"Valid till\"\n )}: ${getPrintableTime(validTo)}`}\n )}\n \n
    \n
    \n \n {!isMobileView ? (\n \n {products &&\n products\n .filter((_, index) => index < 5)\n .map((product, position) => (\n \n \n
    \n {getProductName(product)}\n
    \n \n ))}\n
    \n ) : (\n \n {`${getMessage(\n \"sc.header.pdtname\"\n )}`}\n {products &&\n products\n .filter((_, index) => index < 5)\n .map((product, position) => (\n \n \n \n \n
    \n {getProductName(product)}\n
    \n \n ))}\n
    \n )}\n
    \n \n {!isMobileView ? (\n \n {products &&\n products\n .filter((_, index) => index < 5)\n .map((_, i) => (\n \n {i + 1}\n \n ))}\n \n ) : (\n \n {`${getMessage(\n \"Position\"\n )}`}\n {products &&\n products\n .filter((_, index) => index < 5)\n .map((_, i) => (\n \n {i + 1}\n \n ))}\n \n )}\n \n \n }>\n {\n onAction(TABLE_ACTIONS.EDIT, { id });\n }}\n >\n {getMessage(\"search-configuration.action.edit\")}\n \n {\n onAction(TABLE_ACTIONS.DELETE, { id });\n }}\n >\n {getMessage(\"search-configuration.action.delete\")}\n \n \n \n
    \n );\n },\n});\n\nfunction getMobileView() {\n return window.screen.width <= 480;\n}\n\nconst tableProperties = (isMobileView) => {\n return {\n CATEGORY: categoryTableProperties(\"CATEGORY\", isMobileView),\n SEARCH: categoryTableProperties(\"SEARCH\", isMobileView),\n BRAND: categoryTableProperties(\"BRAND\", isMobileView),\n TAG: categoryTableProperties(\"TAG\", isMobileView),\n };\n};\nexport default class ListingComponent extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isMobileView: getMobileView(),\n };\n this.mobileView = this.mobileView.bind(this);\n }\n\n mobileView() {\n this.setState({ isMobileView: getMobileView() });\n }\n\n componentDidMount() {\n window.addEventListener(\"resize\", this.mobileView, false);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.mobileView, false);\n }\n\n render() {\n const { pageType = \"CATEGORY\" } = this.props;\n return (\n {\n let productRanking = response.data.productRanking;\n let product = response.data.product || [];\n let category = response.data.category || [];\n let brand = response.data.brand || [];\n let tag = response.data.tag || [];\n if (Array.isArray(productRanking) && productRanking.length > 0) {\n productRanking.forEach((item) => {\n let pdtIds = item.productIds;\n if (pdtIds) {\n let pdts = pdtIds\n .map(\n (id) => product.filter((product) => product.id === id)[0]\n )\n .filter(Boolean);\n item.products = pdts;\n }\n let slugs = item.url || [];\n if (item.pageType === \"CATEGORY\") {\n item.category = slugs\n .map(\n (slug) => category.filter((cat) => cat.slug === slug)[0]\n )\n .filter(Boolean);\n } else if (item.pageType === \"BRAND\") {\n item.brand = slugs\n .map((slug) => brand.filter((brn) => brn.slug === slug)[0])\n .filter(Boolean);\n } else if (item.pageType === \"TAG\") {\n item.tag = slugs\n .map((slug) => tag.filter((tg) => tg.slug === slug)[0])\n .filter(Boolean);\n }\n if (item.validFrom) {\n let parts = item.validFrom.split(\" \");\n item.validFromDate = parts[0];\n item.validFromTime = parts[1];\n }\n if (item.validTo) {\n let parts = item.validTo.split(\" \");\n item.validToDate = parts[0];\n item.validToTime = parts[1];\n }\n });\n } else {\n if (category.length > 0) {\n productRanking.category = category;\n } else if (brand.length > 0) {\n productRanking.brand = brand;\n } else if (tag.length > 0) {\n productRanking.tag = tag;\n }\n if (productRanking.validFrom) {\n let parts = productRanking.validFrom.split(\" \");\n productRanking.validFromDate = parts[0];\n productRanking.validFromTime = parts[1];\n }\n if (productRanking.validTo) {\n let parts = productRanking.validTo.split(\" \");\n productRanking.validToDate = parts[0];\n productRanking.validToTime = parts[1];\n }\n let pdtIds = productRanking.productIds;\n if (pdtIds) {\n let pdts = pdtIds\n .map(\n (id) => product.filter((product) => product.id === id)[0]\n )\n .filter(Boolean);\n productRanking.products = pdts;\n }\n }\n return productRanking;\n },\n updateApiParams: (prevParams, newParams) => {\n if (prevParams.pageType !== newParams.pageType) {\n return {\n shouldUpdate: true,\n params: {\n pageType: newParams.pageType,\n },\n };\n }\n },\n }}\n modalClassName=\"search-config-popup\"\n className={\"search-config-listingpage\"}\n emptyState={emptyState}\n addHeading={getMessage(\"search-configuration.form.heading\")}\n editHeading={getMessage(\"sc.edit.heading\")}\n headerActions={({ onAction }) => (\n {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n +{\" \"}\n \n {getMessage(\"search-configuration.add.button.label\")}\n \n \n )}\n form={{\n component: SearchConfigForm,\n options: {\n page: pageType.toLowerCase(),\n },\n transformSubmit: (formData) => {\n let result = JSON.parse(JSON.stringify(formData));\n if (result.products) {\n result.productIds = result.products.map((pdt) => pdt.id);\n delete result.products;\n }\n if (result.category) {\n result.url = result.category\n .map((cat) => cat.slug)\n .filter(Boolean);\n delete result.category;\n }\n if (result.brand) {\n result.url = result.brand.map((brn) => brn.slug).filter(Boolean);\n delete result.brand;\n }\n if (result.tag) {\n result.url = result.tag.map((tag) => tag.slug).filter(Boolean);\n delete result.tag;\n }\n if (result.validFromDate) {\n if (!result.validFromTime) {\n result.validFromTime = \"00:00:00\";\n }\n result.validFrom = `${result.validFromDate} ${result.validFromTime}`;\n }\n if (result.validToDate) {\n if (!result.validToTime) {\n result.validToTime = \"00:00:00\";\n }\n result.validTo = `${result.validToDate} ${result.validToTime}`;\n }\n delete result.product;\n return result;\n },\n overwriteWithApiParams: false,\n sendformData: true,\n transformResponse: (response) => {\n let productRanking = response.data.productRanking || {};\n productRanking.category =\n response.data.category && response.data.category[0];\n productRanking.product = response.data.product[0];\n return productRanking;\n },\n filterBeforeAdding: (response, _this) => {\n if (response.pageType === pageType) {\n return response;\n }\n return null;\n },\n }}\n tableProperties={\n tableProperties(this.state && this.state.isMobileView)[pageType]\n }\n />\n );\n }\n}\n","import React, { Component } from \"react\";\nimport Tabs from \"../../../components/Tabs\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport { getMessage } from \"../../../lib/translator\";\nimport ListingComponent from \"./ListingComponent\";\n\nimport \"./style.css\";\nimport { isExtensionEnabled } from \"../../../lib/auth\";\nimport API from \"../../../lib/api\";\n\nclass SearchConfiguration extends Component {\n constructor(props) {\n super(props);\n this.state = {\n activeIndex: 0,\n };\n this.state.tabs = [{ name: \"Search Term\", pageType: \"SEARCH\" }];\n this.changeTab = this.changeTab.bind(this);\n }\n\n changeTab(activeIndex) {\n this.setState({ activeIndex });\n }\n componentWillMount() {\n const api = new API({ url: \"/config-service/config/searchOverrider\" });\n api\n .get()\n .then((response) => {\n const searchOverrideArray =\n response.data.searchOverrider.entityAllowedForSearchOverride;\n let newSearchTab = [...this.state.tabs];\n if (searchOverrideArray.includes(\"CATEGORY\")) {\n newSearchTab.push({ name: \"Category\", pageType: \"CATEGORY\" });\n }\n if (\n isExtensionEnabled(\"MultiBrandSupport\") &&\n searchOverrideArray.includes(\"BRAND\")\n ) {\n newSearchTab.push({ name: \"Brand\", pageType: \"BRAND\" });\n }\n\n if (\n isExtensionEnabled(\"ProductTagSupport\") &&\n searchOverrideArray.includes(\"TAG\")\n ) {\n newSearchTab.push({ name: \"Tag\", pageType: \"TAG\" });\n }\n this.setState({\n tabs: newSearchTab,\n });\n })\n .catch((error) => {\n console.log(error);\n });\n }\n render() {\n let { menu } = this.props;\n let { state } = this;\n let { activeIndex } = state;\n\n return (\n \n

    {getMessage(\"search-configuration.header\")}

    \n `${tab.name}`)}\n default={this.state.activeIndex}\n onClick={(index) => {\n this.changeTab(index);\n }}\n />\n \n \n );\n }\n}\n\nexport default SearchConfiguration;\n","import React from \"react\";\nimport { Input, Select } from \"../../../components/Form\";\nimport { Actions } from \"./form\";\nimport { getMessage } from \"../../../lib/translator\";\n\nconst splitAtCapitalLetter = (str) => str.split(/(?=[A-Z])/).join(\" \");\n\nconst ENTER_TEXT = getMessage(\"communication.enter.text\");\n\nexport default function ProviderConfiguration(props) {\n const { parent, allowKey, selectedProviderConfig } = props;\n const { fields, image } = selectedProviderConfig;\n let _this = parent;\n const readOnly = _this.getState([allowKey]) === false;\n return (\n \n \n
    \n {fields.map(({ name, required, allowedValues, type }) => {\n const splittedNameAtCapitalLetter = splitAtCapitalLetter(name);\n const label = splittedNameAtCapitalLetter.toUpperCase();\n const placeholderText = `${ENTER_TEXT} ${splittedNameAtCapitalLetter.toLowerCase()}`;\n return allowedValues ? (\n \n ) : (\n \n );\n })}\n
    \n
    \n );\n}\n","import React, { Component, Fragment } from \"react\";\nimport { BaseForm, Select, Toggle } from \"../../../components/Form\";\nimport { getMessage } from \"../../../lib/translator\";\nimport API from \"../../../lib/api\";\nimport Loader from \"../../../components/Loader\";\nimport Image from \"../../../components/Image\";\nimport Tabs from \"../../../components/Tabs\";\n\nimport ProviderConfiguration from \"./ProviderConfiguration\";\n\nimport EmailIcon from \"./email.png\";\n\nclass Actions extends Component {\n render() {\n const { parent, icon, allowKey, className } = this.props;\n const targetStatus = !parent.getState([allowKey]);\n return (\n
    \n \n parent.updateState([allowKey], targetStatus)}\n />\n
    \n );\n }\n}\n\nclass CommunicationForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n loading: false,\n smsProviders: [],\n tabIndex: 0,\n values: {},\n callProviders: [],\n formError: false,\n };\n //this.communicationValues keeps cache of saved provider config\n this.communicationValues = {};\n this.pages = [\"call\", \"SMS\", \"EMAIL\"];\n\n this.emailServiceProviderConfig = {\n fields: [\n {\n name: \"smtpHost\",\n required: false,\n type: \"string\",\n },\n {\n name: \"smtpUsername\",\n required: false,\n type: \"string\",\n },\n {\n name: \"smtpPassword\",\n required: false,\n type: \"password\",\n },\n {\n name: \"smtpPort\",\n required: false,\n type: \"number\",\n },\n {\n name: \"defaultEmail\",\n required: false,\n type: \"email\",\n },\n ],\n id: \"EMAIL\",\n image: EmailIcon,\n };\n }\n // returns the sliced the specific(sms or call or email saved data) config data\n getStateValues = (tabIndex, provider) => {\n if (tabIndex === 0) {\n let { allowCall, callServiceProvider, callServiceProviderCredentials } =\n this.communicationValues;\n provider = provider || callServiceProvider;\n callServiceProviderCredentials =\n provider === callServiceProvider ? callServiceProviderCredentials : {};\n return {\n values: {\n ...callServiceProviderCredentials,\n provider,\n allowCall,\n },\n allowKey: \"allowCall\",\n };\n } else if (tabIndex === 1) {\n let { allowSms, smsServiceProvider, smsServiceProviderCredentials } =\n this.communicationValues;\n provider = provider || smsServiceProvider;\n smsServiceProviderCredentials =\n provider === smsServiceProvider ? smsServiceProviderCredentials : {};\n return {\n smsServiceProvider,\n values: {\n ...smsServiceProviderCredentials,\n provider,\n allowSms,\n },\n allowKey: \"allowSms\",\n };\n } else {\n const { allowEmail, email } = this.communicationValues;\n return {\n values: {\n ...email,\n allowEmail: allowEmail,\n },\n allowKey: \"allowEmail\",\n };\n }\n };\n getProviderConfig = (tabIndex, provider) => {\n if (tabIndex === 0) {\n return this.state.callProviders?.find(\n (providerConfig) => providerConfig.id === provider\n );\n } else if (tabIndex === 1) {\n return this.state.smsProviders?.find(\n (providerConfig) => providerConfig.id === provider\n );\n } else {\n return this.emailServiceProviderConfig;\n }\n };\n getSmsProviders = () => {\n new API({\n url: \"/communication-service/sms-provider\",\n })\n .get()\n .then(({ data }) => {\n this.setState({\n smsProviders: data.smsProvider.map((provider) => ({\n ...provider,\n text: provider.name,\n value: provider.id,\n })),\n smsProviderError: false,\n });\n })\n .catch((error) => {\n console.error(error);\n this.setState({ smsProviderError: error });\n });\n };\n getCallProviders = () => {\n new API({\n url: \"/communication-service/call-provider\",\n })\n .get()\n .then(({ data }) => {\n this.setState({\n callProviders: data.callProvider.map((provider) => ({\n ...provider,\n text: provider.name,\n value: provider.id,\n })),\n callProviderError: false,\n });\n })\n .catch((error) => {\n console.error(error);\n this.setState({ callProviderError: error });\n });\n };\n componentDidMount() {\n this.setState({\n loading: true,\n });\n\n this.api = new API({ url: \"/config-service/config/communication\" });\n this.api\n .get()\n .then((response) => {\n const data = response.data.communication;\n this.communicationValues = data;\n const state = this.getStateValues(0, data.callServiceProvider);\n this.setState({\n ...state,\n loading: false,\n });\n })\n .catch((error) => {\n this.setState({ loading: false, callProviderError: error });\n console.error(error);\n });\n this.getSmsProviders();\n this.getCallProviders();\n }\n\n componentWillUnmount() {\n this.api && this.api.cancel();\n }\n\n changeTab = (tabIndex) => {\n let state = this.getStateValues(tabIndex);\n this.resetForm();\n if (tabIndex === 0 && !this.state.callProviders?.length) {\n this.getCallProviders();\n } else if (tabIndex === 1 && !this.state.smsProviders?.length) {\n this.getSmsProviders();\n }\n this.setState({\n tabIndex,\n ...state,\n });\n };\n\n onSubmit(data) {\n this.setState({\n submitting: true,\n });\n let stateValues = { ...data };\n const { tabIndex, values } = this.state;\n let formData = { ...this.communicationValues };\n this.api = new API({ url: \"/config-service/config\" });\n const provider = values.provider;\n if (tabIndex === 0) {\n this.communicationValues.callServiceProviderCredentials = data;\n this.communicationValues.callServiceProvider = provider;\n delete stateValues.provider;\n formData.callServiceProvider = provider;\n formData.callServiceProviderCredentials = stateValues;\n formData.allowCall = values.allowCall || false;\n } else if (tabIndex === 1) {\n this.communicationValues.smsServiceProviderCredentials = data;\n this.communicationValues.smsServiceProvider = provider;\n delete stateValues.provider;\n delete stateValues.allowSms;\n formData.smsServiceProvider = provider;\n formData.smsServiceProviderCredentials = stateValues;\n formData.allowSms = values.allowSms || false;\n } else {\n this.communicationValues.email = data;\n formData.email = stateValues;\n formData.allowEmail = values.allowEmail || false;\n }\n\n delete formData?.smsServiceProviderCredentials?.allowSms;\n delete formData?.callServiceProviderCredentials?.allowCall;\n delete formData?.email?.allowEmail;\n\n this.api\n .post({ communication: formData })\n .then((response) => {\n this.setState({\n submitting: false,\n formError: null,\n });\n })\n .catch((error) => {\n this.setState({ submitting: false, formError: error });\n console.error(error);\n });\n }\n onProviderChange = (provider) => {\n this.resetForm();\n const stateValues = this.getStateValues(this.state.tabIndex, provider);\n this.setState({\n ...stateValues,\n });\n };\n\n render() {\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n const {\n loading,\n tabIndex,\n allowKey,\n values = {},\n smsProviders,\n callProviders,\n formError,\n callProviderError,\n smsProviderError,\n } = this.state;\n const selectedProviderConfig = this.getProviderConfig(\n tabIndex,\n values.provider\n );\n return loading ? (\n \n ) : (\n
    \n \n {formError && (\n
    {formError}
    \n )}\n {(tabIndex === 0 && callProviderError) || (\n
    \n {callProviderError}\n
    \n )}\n {tabIndex === 1 && smsProviderError && (\n
    \n {smsProviderError}\n
    \n )}\n {tabIndex !== 2 && (\n
    \n \n
    \n )}\n\n {selectedProviderConfig && (\n \n )}\n \n \n {getMessage(\"save\")}\n \n \n \n \n );\n }\n}\n\nexport default CommunicationForm;\nexport { Actions };\n","import React, { Component } from \"react\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport Form from \"./form\";\nimport \"./style.css\";\n\nclass CommunicationConfig extends Component {\n render() {\n return (\n \n

    Communication Configuration

    \n
    \n \n );\n }\n}\n\nexport default CommunicationConfig;\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n Radio,\n VALIDATION_TYPES,\n} from \"../../../../../components/Form\";\nimport { getMessage } from \"../../../../../lib/translator\";\n\nexport default class TagForm extends BaseForm {\n render() {\n const { Form } = this.components;\n const { SubmitButton, CancelButton } = this.buttons;\n return (\n \n \n\n \n\n \n\n
    \n \n {getMessage(\"customer-service-tags.save\")}\n \n \n {getMessage(\"customer-service-tags.button.cancel\")}\n \n
    \n \n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n VALIDATION_TYPES,\n} from \"../../../../../components/Form\";\n\nimport { getMessage } from \"../../../../../lib/translator\";\n\nexport default class TagFiltersForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.values.status = \"\";\n }\n render() {\n const { SubmitButton, ClearButton } = this.buttons;\n const { Form } = this.components;\n return (\n
    \n
    \n \n
    \n \n {getMessage(\"customer-service-tags.form.search.submitText.label\")}\n \n \n {getMessage(\"customer-service-tags.form.search.clearAll.label\")}\n \n
    \n );\n }\n}\n","import React, { Component } from \"react\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../../containers/ListingPage\";\nimport { Row, Cell } from \"../../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../../components/DropDown\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport TagForm from \"./Form\";\nimport TagFiltersForm from \"./Filter\";\nimport { Toggle } from \"../../../../components/Form\";\nimport { Popup } from \"../../../../components/Popup\";\nimport \"./style.css\";\nimport emptyIcon from \"../tags-empty.svg\";\nimport TagsImport from \"../../../catalogue/Tags/TagsImport\";\n\nconst emptyState = {\n icon: emptyIcon,\n message: getMessage(\"customer-service-tags.noTags\"),\n actions: ({ onAction }) => (\n {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n +{\" \"}\n {getMessage(\"customer-service-tags.button\")}\n \n ),\n};\nconst tableProperties = {\n headers: [\n getMessage(\"customer-service-tags.table.name.header\"),\n getMessage(\"customer-service-tags.table.status.header\"),\n getMessage(\"customer-service-tags.table.description.header\"),\n getMessage(\"customer-service-tags.table.actions.header\"),\n ],\n row: ({ id, name, status, description, systemGenerated, onAction }) => (\n \n \n {!systemGenerated ? (\n {\n onAction(TABLE_ACTIONS.EDIT, { id });\n }}\n >\n {name}\n \n ) : (\n {name}\n )}\n \n \n {!systemGenerated ? (\n \n {\" \"}\n {getMessage(`customer.service.tags.status.${status}`)}\n {\n onAction(\n TABLE_ACTIONS.UPDATE,\n { id },\n { status: status === \"ENABLED\" ? \"DISABLED\" : \"ENABLED\" }\n );\n }}\n />{\" \"}\n \n ) : (\n {getMessage(`customer.service.tags.status.${status}`)}\n )}\n \n {description}\n \n {!systemGenerated && (\n }>\n {\n onAction(TABLE_ACTIONS.EDIT, { id });\n }}\n >\n {getMessage(\"customer-service-tags.table.actions.edit\")}\n \n {\n onAction(TABLE_ACTIONS.DELETE, { id });\n }}\n >\n {getMessage(\"customer-service-tags.table.actions.delete\")}\n \n \n )}\n \n \n ),\n};\n\nclass ImportAction extends Component {\n constructor(props) {\n super(props);\n this.state = {\n modalShown: false,\n };\n this.hideModal = this.hideModal.bind(this);\n }\n\n hideModal() {\n this.setState({\n modalShown: false,\n });\n }\n\n render() {\n return (\n
    \n \n \n \n {\n this.setState({\n modalShown: true,\n });\n }}\n >\n + {getMessage(\"Import Tags\")}\n \n
    \n );\n }\n}\n\nexport default class CustomerServiceTags extends Component {\n render() {\n const { props } = this;\n return (\n response.data.tag,\n }}\n emptyState={emptyState}\n form={{\n component: TagForm,\n }}\n tableProperties={tableProperties}\n addHeading={getMessage(\"customer-service-tags.button\")}\n editHeading={getMessage(\"customer-service-tags.form.edit.heading\")}\n headerActions={({ onAction }) => (\n \n \n {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n +{\" \"}\n \n {getMessage(\"customer-service-tags.button\")}\n \n \n \n )}\n filters={{\n component: TagFiltersForm,\n transformSubmit: (formData) => {\n let data = Object.assign({}, formData);\n return data;\n },\n }}\n />\n );\n }\n}\n","import React, { Component } from \"react\";\nimport Table from \"./Table\";\nexport default class CustomerTags extends Component {\n render() {\n return ;\n }\n}\n","import React from \"react\";\nimport { BaseForm, Input, Checkbox } from \"../../../components/Form\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport Loader from \"../../../components/Loader\";\nimport API from \"../../../lib/api\";\nimport { getMessage } from \"../../../lib/translator\";\n\nimport \"./style.css\";\n\nclass PickingConfig extends BaseForm {\n componentDidMount() {\n this.setState({\n loading: true,\n });\n const api = new API({ url: \"/config-service/config/inStoreProcessing\" });\n api\n .get()\n .then((response) => {\n let config = response.data.inStoreProcessing;\n this.setState({\n loading: false,\n values: config,\n });\n this.isMaxOrdersCanBePickedAtOnceEnabled =\n config.multiplePickingAllowed;\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n onSubmit(formData) {\n this.setState({\n submitting: true,\n });\n let data = Object.assign({}, this.state.values);\n if (!data.partialPickingAllowed) {\n data.partialPickingAllowed = false;\n }\n if (!data.multiplePickingAllowed) {\n data.multiplePickingAllowed = false;\n data.maxOrdersCanBePickedAtOnce = \"\";\n }\n const api = new API({ url: \"/config-service/config\" });\n api\n .post({ inStoreProcessing: data })\n .then(\n (response) => {\n this.props.history.goBack();\n },\n (error) => {\n this.setState({\n formError: error.message,\n submitting: false,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n componentDidUpdate() {\n // Reset maxOrdersCanBePickedAtOnce if multiplePickingAllowed is unset\n\n // TODO: Modify the follwing code once BaseForm state mutation issue is resolved.\n // This is a work around for not getting proper prevState\n const isMaxOrdersCanBePickedAtOnceEnabled =\n this.state.values && this.state.values.multiplePickingAllowed;\n if (\n this.isMaxOrdersCanBePickedAtOnceEnabled &&\n !isMaxOrdersCanBePickedAtOnceEnabled\n ) {\n this.setState((prevProps) => ({\n ...prevProps,\n values: {\n ...prevProps.values,\n maxOrdersCanBePickedAtOnce: \"\",\n },\n }));\n }\n this.isMaxOrdersCanBePickedAtOnceEnabled =\n isMaxOrdersCanBePickedAtOnceEnabled;\n }\n\n render() {\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n const { values: { multiplePickingAllowed } = {} } = this.state;\n return (\n \n

    {getMessage(\"picking.config.heading\")}

    \n {this.state.formError && (\n
    {this.state.formError}
    \n )}\n {this.state.loading ? (\n \n ) : (\n
    \n \n \n \n
    \n {getMessage(\"picking.config.save\")}\n
    \n \n )}\n
    \n );\n }\n}\n\nexport default PickingConfig;\n","import React from \"react\";\nimport { BaseForm, Input } from \"../../../components/Form\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport Loader from \"../../../components/Loader\";\nimport API from \"../../../lib/api\";\nimport { getMessage } from \"../../../lib/translator\";\n\nconst HEADING_TEXT = getMessage(\"wallet.config.heading\");\nconst SAVE_TEXT = getMessage(\"picking.config.save\");\n\nexport default class WalletConfiguration extends BaseForm {\n componentDidMount() {\n //using this.configsText to store config texts, this prevents calling getMessage on every render\n this.configsText = {};\n this.setState({\n loading: true,\n });\n const api = new API({ url: \"/config-service/config/wallet\" });\n api\n .get()\n .then((response) => {\n let config = response.data.wallet;\n for (const configKey in config) {\n const configKeyPrefix = `wallet.config.${configKey}`;\n this.configsText[configKey] = getMessage(configKeyPrefix);\n this.configsText[`${configKey}Placeholder`] = getMessage(\n `${configKeyPrefix}.placeholder`\n );\n }\n this.setState({\n loading: false,\n values: config,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n onSubmit(formData) {\n this.setState({\n submitting: true,\n });\n let data = Object.assign({}, this.state.values);\n const api = new API({ url: \"/config-service/config\" });\n api\n .post({ wallet: data })\n .then(\n (response) => {\n this.props.history.goBack();\n },\n (error) => {\n this.setState({\n formError: error.message,\n submitting: false,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n render() {\n const configKeys = Object.keys(this.state.values);\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n return (\n \n

    {HEADING_TEXT}

    \n {this.state.formError && (\n
    {this.state.formError}
    \n )}\n {this.state.loading ? (\n \n ) : (\n
    \n {configKeys.map((configKey) => (\n \n ))}\n
    \n {SAVE_TEXT}\n
    \n \n )}\n
    \n );\n }\n}\n","import React from \"react\";\nimport \"./style.css\";\n\nexport default function DetailsCard(props) {\n return (\n
    \n
    \n
    \n
    {props.leftTitle}
    \n
    {props.leftValue}
    \n
    \n
    \n
    {props.rightTitle}
    \n
    {props.rightValue}
    \n
    \n
    \n
    \n
    {props.bottomValue}
    \n
    {props.children}
    \n
    \n
    \n );\n}\n","import React, { Component } from \"react\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport { Dialog } from \"../../../components/Popup\";\nimport DetailsCard from \"../../../components/DetailsCard\";\n\nimport { getMessage } from \"../../../lib/translator\";\nimport { formatDate, getPrintableTime } from \"../../../lib/datetime\";\n\nimport EmptyIcon from \"./cancelledLeave.svg\";\nimport \"./style.css\";\n\nconst EmptyState = {\n icon: EmptyIcon,\n message: getMessage(\"leaves.team.empty.message\"),\n};\n\nclass LeaveActions extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showDialog: false,\n showRejectDialog: false,\n };\n this.showDialog = this.showDialog.bind(this);\n this.hideDialog = this.hideDialog.bind(this);\n this.showRejectDialog = this.showRejectDialog.bind(this);\n this.approveLeave = this.approveLeave.bind(this);\n this.rejectLeave = this.rejectLeave.bind(this);\n }\n\n showDialog() {\n this.setState({\n showDialog: true,\n });\n }\n\n showRejectDialog() {\n this.setState({\n showRejectDialog: true,\n });\n }\n\n hideDialog() {\n this.setState({\n showDialog: false,\n showRejectDialog: false,\n });\n }\n\n approveLeave(id) {\n let { onAction } = this.props;\n onAction(TABLE_ACTIONS.UPDATE, { id }, { status: \"APPROVED\" });\n }\n\n rejectLeave(id) {\n let { onAction } = this.props;\n onAction(TABLE_ACTIONS.UPDATE, { id }, { status: \"REJECTED\" });\n }\n\n render() {\n const { id, status } = this.props;\n return (\n
    \n {status === \"PENDING\" && (\n }>\n \n {getMessage(\"leaves.team.approve\")}\n \n \n {getMessage(\"leaves.team.reject\")}\n \n \n )}\n this.approveLeave(id)}\n close={this.hideDialog}\n okText={getMessage(\"leaves.team.approve\")}\n closeText={getMessage(\"leaves.team.cancel\")}\n />\n this.rejectLeave(id)}\n close={this.hideDialog}\n okText={getMessage(\"leaves.team.reject\")}\n closeText={getMessage(\"leaves.team.cancel\")}\n />\n
    \n );\n }\n}\n\nconst tableProperties = {\n headers: [\n getMessage(\"leaves.team.employee\"),\n getMessage(\"leaves.team.startson\"),\n getMessage(\"leaves.team.endson\"),\n getMessage(\"leaves.team.appliedon\"),\n getMessage(\"leaves.team.reason\"),\n getMessage(\"leaves.team.type\"),\n getMessage(\"leaves.team.status\"),\n getMessage(\"leaves.team.actions\"),\n ],\n row: ({\n id,\n fromDate,\n toDate,\n appliedOn,\n reason,\n type,\n status,\n user,\n onAction,\n }) => (\n \n {user.name}\n {formatDate(fromDate)}\n {formatDate(toDate)}\n {getPrintableTime(appliedOn)}\n {reason}\n {type}\n {status}\n \n {}\n \n \n ),\n};\n\nconst gridView = {\n row: ({\n id,\n fromDate,\n toDate,\n appliedOn,\n reason,\n type,\n status,\n user,\n onAction,\n }) => (\n
    \n \n {}\n \n
    \n ),\n};\n\nexport default class TeamLeaves extends Component {\n constructor(props) {\n super(props);\n this.state = {\n windowSize: window.innerWidth,\n };\n this.registerResize = this.registerResize.bind(this);\n }\n\n registerResize(e) {\n this.setState({\n windowSize: e.target.innerWidth,\n });\n }\n\n componentDidMount() {\n window.addEventListener(\"resize\", this.registerResize, true);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.registerResize, true);\n }\n\n render() {\n let tableProps = tableProperties;\n if (this.state.windowSize <= 768) {\n tableProps = gridView;\n }\n return (\n response.data.userleave,\n }}\n emptyState={EmptyState}\n tableProperties={tableProps}\n />\n );\n }\n}\n","import React, { Component } from \"react\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../../containers/ListingPage\";\nimport { Row, Cell } from \"../../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../../components/DropDown\";\nimport { Dialog } from \"../../../../components/Popup\";\nimport TeamLeaves from \"../../LeaveManagement\";\nimport DetailsCard from \"../../../../components/DetailsCard\";\nimport AuthenticatedPage from \"../../../../containers/AuthenticatedPage\";\nimport Tabs from \"../../../../components/Tabs\";\n\nimport { getMessage } from \"../../../../lib/translator\";\nimport { formatDate, getPrintableTime } from \"../../../../lib/datetime\";\n\nimport EmptyIcon from \"../teamLeave.svg\";\n\nconst EmptyState = {\n icon: EmptyIcon,\n message: getMessage(\"leaves.team.empty.message\"),\n};\n\nconst tableProperties = {\n headers: [\n getMessage(\"leaves.team.employee\"),\n getMessage(\"leaves.team.startson\"),\n getMessage(\"leaves.team.endson\"),\n getMessage(\"leaves.team.appliedon\"),\n getMessage(\"leaves.team.reason\"),\n getMessage(\"leaves.team.type\"),\n getMessage(\"leaves.team.status\"),\n getMessage(\"leaves.team.actions\"),\n ],\n row: ({\n id,\n fromDate,\n toDate,\n appliedOn,\n reason,\n type,\n status,\n user,\n onAction,\n }) => (\n \n {user.name}\n {formatDate(fromDate)}\n {formatDate(toDate)}\n {getPrintableTime(appliedOn)}\n {reason}\n {type}\n {status}\n \n {}\n \n \n ),\n};\n\nconst gridView = {\n row: ({\n id,\n fromDate,\n toDate,\n appliedOn,\n reason,\n type,\n status,\n user,\n onAction,\n }) => (\n
    \n \n {}\n \n
    \n ),\n};\n\nclass LeaveActions extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showDialog: false,\n };\n this.showDialog = this.showDialog.bind(this);\n this.hideDialog = this.hideDialog.bind(this);\n this.cancelLeave = this.cancelLeave.bind(this);\n }\n\n showDialog() {\n this.setState({\n showDialog: true,\n });\n }\n\n hideDialog() {\n this.setState({\n showDialog: false,\n });\n }\n\n cancelLeave(id) {\n let { onAction } = this.props;\n onAction(TABLE_ACTIONS.UPDATE, { id }, { status: \"CANCELLED\" });\n }\n\n render() {\n const { id, status } = this.props;\n return (\n
    \n {status === \"APPROVED_CANCELLABLE\" && (\n }>\n \n {getMessage(\"leaves.team.cancel\")}\n \n \n )}\n this.cancelLeave(id)}\n close={this.hideDialog}\n okText={getMessage(\"leaves.team.okay\")}\n closeText={getMessage(\"leaves.team.cancel\")}\n />\n
    \n );\n }\n}\n\nexport default class TeamCancellableleaves extends Component {\n constructor(props) {\n super(props);\n this.state = {\n windowSize: window.innerWidth,\n page: 0,\n };\n this.pages = [\"cancellable Leaves\", \"Approvable Leaves\"];\n this.registerResize = this.registerResize.bind(this);\n this.changePage = this.changePage.bind(this);\n this.fetchPageData = this.fetchPageData.bind(this);\n }\n\n changePage(index, tableProps) {\n this.setState({\n page: index,\n tableProps: tableProps,\n });\n }\n\n fetchPageData() {\n let index = this.state.page;\n let tableProps = this.state.tableProps || tableProperties;\n if (index === 0) {\n return (\n response.data.userleave,\n }}\n emptyState={EmptyState}\n tableProperties={tableProps || []}\n />\n );\n } else {\n return ;\n }\n }\n\n registerResize(e) {\n this.setState({\n windowSize: e.target.innerWidth,\n });\n }\n\n componentDidMount() {\n window.addEventListener(\"resize\", this.registerResize, true);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.registerResize, true);\n }\n\n render() {\n let tableProps = tableProperties;\n if (this.state.windowSize <= 768) {\n tableProps = gridView;\n }\n return (\n \n

    {getMessage(\"leaves.management.header\")}

    \n
    \n `${page}`)}\n default={this.state.page}\n onClick={(index) => {\n this.changePage(index, tableProps);\n }}\n />\n
    \n {this.fetchPageData()}\n
    \n );\n }\n}\n","import React from \"react\";\nimport { BaseForm, Input, VALIDATION_TYPES } from \"../../../components/Form\";\nimport { getMessage } from \"../../../lib/translator\";\nimport API from \"../../../lib/api\";\nimport { withRouter } from \"react-router-dom\";\nimport { Dialog } from \"../../../components/Popup\";\n\nfunction validatePasswords(newPassword, confirmPassword) {\n // Password Validations\n const hasSixCharacters = newPassword && newPassword.length > 5;\n const hasLowercaseLetter = /[a-z]/.test(newPassword);\n const hasUppercaseLetter = /[A-Z]/.test(newPassword);\n const hasNumber = /.*[0-9].*/.test(newPassword);\n const invalidConfirmPassword =\n confirmPassword && newPassword && confirmPassword !== newPassword;\n const isValid =\n hasSixCharacters &&\n hasUppercaseLetter &&\n hasLowercaseLetter &&\n hasNumber &&\n !invalidConfirmPassword;\n return {\n hasSixCharacters,\n hasLowercaseLetter,\n hasUppercaseLetter,\n hasNumber,\n invalidConfirmPassword,\n isValid,\n };\n}\n\nconst isValidFields = (values = {}) => {\n let flag = true;\n Object.keys(values).forEach((key) => {\n if (!values[key] || values[key].length <= 5) {\n flag = false;\n }\n });\n return flag;\n};\n\nclass ChangePasswordForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.values = {\n oldPassword: \"\",\n newPassword: \"\",\n confirmPassword: \"\",\n };\n this.state.formError = \"\";\n this.state.showSuccessDialog = false;\n this.handleClose = this.handleClose.bind(this);\n this.closeDialogs = this.closeDialogs.bind(this);\n }\n\n handleSubmit(data) {\n const api = new API({ url: \"/account-service/change-password\" });\n return api\n .post(data)\n .then(\n (response) => {\n this.setState({\n formError: \"\",\n showSuccessDialog: true,\n });\n },\n (error) => {\n this.setState({ formError: error.message });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n\n closeDialogs() {\n this.setState({ showSuccessDialog: false });\n }\n\n handleClose() {\n this.props.history.goBack();\n }\n\n onSubmit(data) {\n const newPassword = this.state.values.newPassword;\n const confirmPassword = this.state.values.confirmPassword;\n const validationParams = validatePasswords(newPassword, confirmPassword);\n if (validationParams.isValid) {\n this.setState({\n submitting: true,\n });\n this.handleSubmit(data).then(() => {\n this.setState({ submitting: false });\n });\n }\n }\n\n render() {\n const { Form } = this.components;\n\n const newPassword = this.state.values.newPassword;\n const confirmPassword = this.state.values.confirmPassword;\n const validationParams = validatePasswords(newPassword, confirmPassword);\n const sixCharacterClassName = validationParams.hasSixCharacters\n ? \" has-six-characters\"\n : \"\";\n const uppercaseClassName = validationParams.hasUppercaseLetter\n ? \" has-uppercase\"\n : \"\";\n const lowercaseClassName = validationParams.hasLowercaseLetter\n ? \" has-lowercase\"\n : \"\";\n const numberClassName = validationParams.hasNumber ? \" has-number\" : \"\";\n const confirmPasswordError = validationParams.invalidConfirmPassword\n ? getMessage(\"changePassword.different.confirmPassword\")\n : \"\";\n\n let disabledSubmitButton =\n validationParams.isValid && isValidFields(this.state.values);\n return (\n
    \n {this.state.formError && (\n
    {this.state.formError}
    \n )}\n \n
    \n
    \n \n \n \n
    \n \n {getMessage(\"changePassword.submit.text\")}\n \n \n {getMessage(\"changePassword.cancel.text\")}\n \n
    \n \n
    \n
    \n {getMessage(\"changePassword.list.heading\")}\n
    \n \n {\" \"}\n {getMessage(\"changePassword.list.characterLimit\")}\n
    \n
    \n {getMessage(\"changePassword.list.uppercase\")}\n
    \n
    \n {getMessage(\"changePassword.list.lowercase\")}\n
    \n
    \n {getMessage(\"changePassword.list.number\")}\n
    \n
    \n
    \n \n );\n }\n}\n\nexport default withRouter(ChangePasswordForm);\n","import React, { Component } from \"react\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport ChangePasswordForm from \"./form\";\nimport { getMessage } from \"../../../lib/translator\";\nimport \"./style.css\";\n\nexport default class ChangePassword extends Component {\n render() {\n return (\n \n

    {getMessage(\"changePassword.heading\")}

    \n \n
    \n );\n }\n}\n","import React, { Component } from \"react\";\nimport API from \"../../../lib/api\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { getSession } from \"../../../lib/auth\";\n\nexport default class RechargeWidget extends Component {\n constructor(props) {\n super(props);\n this.state = {\n balance: null,\n rechargeAmount: \"\",\n processing: false,\n gatewayDetails: null,\n };\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n getCurrentBalance() {\n let api = new API({ url: \"/billing-service/balance\" });\n api\n .get()\n .then((response) => {\n this.setState({ balance: response.data });\n })\n .catch((error) => {\n console.error(error);\n });\n }\n handleSubmit(e) {\n e.preventDefault();\n let api = new API({ url: \"/billing-service/online-payment\" });\n this.setState(\n {\n processing: true,\n },\n () => {\n api\n .post({ amount: Number(this.state.rechargeAmount) })\n .then(\n ({ data: { onlinepayment } }) => {\n this.setState(\n {\n gatewayDetails: onlinepayment,\n },\n () => {\n this.paymentGatewayForm.submit();\n }\n );\n },\n (error) => {\n this.setState({\n processing: false,\n });\n throw error;\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n );\n }\n componentDidMount() {\n this.getCurrentBalance();\n }\n render() {\n return (\n
    \n
    \n {this.state.balance !== null ? (\n
    \n

    {`${getSession().organization.currency.symbol} ${\n this.state.balance\n }`}

    \n
    \n {getMessage(\"user.accountBalance.availableBalance.label\")}\n
    \n
    \n ) : (\n \n {getMessage(\"user.accountBalance.loader.text\")}\n \n )}\n
    \n
    \n {\n this.setState({ rechargeAmount: e.target.value });\n }}\n />\n 0) || this.state.processing\n }\n >\n {this.state.processing\n ? getMessage(\"user.accountBalance.rechargeButton.processing\")\n : getMessage(\"user.accountBalance.rechargeButton.text\")}\n \n \n {this.state.gatewayDetails ? (\n {\n this.paymentGatewayForm = node;\n }}\n >\n {Object.keys(this.state.gatewayDetails)\n .filter((key) => key !== \"redirectUrl\")\n .map((key) => (\n \n ))}\n \n ) : null}\n
    \n );\n }\n}\n","import React, { Component } from \"react\";\nimport ListingPage from \"../../../containers/ListingPage\";\nimport RechargeWidget from \"./rechargeWidget\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { getMessage } from \"../../../lib/translator\";\nimport { getSession } from \"../../../lib/auth\";\nimport { getPrintableTime } from \"../../../lib/datetime\";\nimport emptyIcon from \"./transactionEmptyState.svg\";\nimport \"./style.css\";\n\nconst emptyState = {\n additionalViews: [\n () => (\n
    \n \"no-data\"\n {getMessage(\"user.transactions.emptyList.text\")}\n
    \n ),\n ],\n};\n\nconst tableProperties = {\n headers: [\n getMessage(\"user.transactions.header.billingInfo\"),\n getMessage(\"user.transactions.header.status\"),\n getMessage(\"user.transactions.header.type\"),\n getMessage(\"user.transactions.header.payment\"),\n ],\n row: ({ service, startTime, status, amount, type, metaData, createdAt }) => (\n \n \n
    \n {getMessage(\"user.transactions.header.billingInfo\")}\n
    \n
    {service?.replace?.(/-/g, \" \")}
    \n
    \n \n {startTime\n ? getPrintableTime(startTime)\n : createdAt\n ? getPrintableTime(createdAt)\n : null}\n \n
    \n
    \n \n
    \n {getMessage(\"user.transactions.header.status\")}\n
    \n {[\"PENDING\", \"COMPLETED\", \"FAILED\"].indexOf(status) > -1 ? (\n
    \n {getMessage(`user.transactions.status.${status.toLowerCase()}`)}\n
    \n ) : (\n status\n )}\n
    \n \n
    \n {getMessage(\"user.transactions.header.type\")}\n
    \n
    {type.toLowerCase()}
    \n
    \n \n
    \n {getMessage(\"user.transactions.header.payment\")}\n
    \n
    \n {Number(amount) ? `${type === \"CREDIT\" ? \"+ \" : \"- \"}` : null}\n {getSession().organization.currency.symbol} {amount}\n
    \n
    \n
    \n ),\n};\n\nexport default class AccountBalance extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n }\n render() {\n return (\n response.data.transaction,\n }}\n emptyState={emptyState}\n additionalViews={[RechargeWidget]}\n tableProperties={tableProperties}\n />\n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n DateRangePicker,\n Select,\n VALIDATION_TYPES,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nconst leaveType = [\n {\n text: \"Earned\",\n value: \"EARNED\",\n },\n {\n text: \"Sick\",\n value: \"SICK\",\n },\n {\n text: \"Halfday\",\n value: \"HALFDAY\",\n },\n {\n text: \"Maternity\",\n value: \"MATERNITY\",\n },\n {\n text: \"Paternity\",\n value: \"PATERNITY\",\n },\n];\n\nexport default class LeaveForm extends BaseForm {\n render() {\n const { SubmitButton, CancelButton } = this.buttons;\n const { Form } = this.components;\n\n return (\n
    \n
    \n false}\n {...this.generateStateMappers({\n stateKeys: [\"dateRange\"],\n validationType: VALIDATION_TYPES.ONSUBMIT,\n loseEmphasisOnFill: true,\n })}\n />\n
    \n
    \n \n \n
    \n
    \n {getMessage(\"leaves.form.cancel\")}\n {getMessage(\"leaves.apply\")}\n
    \n \n );\n }\n}\n","import React from \"react\";\nimport {\n BaseForm,\n SingleDatePicker,\n Select,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\n\nconst LeaveTypes = [\n {\n text: \"All\",\n value: \"\",\n },\n {\n text: \"Earned\",\n value: \"EARNED\",\n },\n {\n text: \"Sick\",\n value: \"SICK\",\n },\n {\n text: \"Halfday\",\n value: \"HALFDAY\",\n },\n {\n text: \"Maternity\",\n value: \"MATERNITY\",\n },\n {\n text: \"Paternity\",\n value: \"PATERNITY\",\n },\n];\n\nconst LeaveStatus = [\n {\n text: getMessage(\"leaves.filter.status.all\"),\n value: \"\",\n },\n {\n text: getMessage(\"leaves.filter.status.pending\"),\n value: \"PENDING\",\n },\n {\n text: getMessage(\"leaves.filter.status.approved\"),\n value: \"APPROVED\",\n },\n {\n text: getMessage(\"leaves.filter.status.rejected\"),\n value: \"REJECTED\",\n },\n {\n text: getMessage(\"leaves.filter.status.cancelled\"),\n value: \"CANCELLED\",\n },\n];\n\nexport default class MyLeavesFilter extends BaseForm {\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n\n return (\n
    \n
    \n \n \n
    \n
    \n \n \n
    \n {getMessage(\"leaves.filter.submit\")}\n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport { Dialog } from \"../../../components/Popup\";\nimport DetailsCard from \"../../../components/DetailsCard\";\n\nimport LeaveForm from \"./Form\";\nimport LeavesFiltersForm from \"./Filters\";\nimport \"./style.css\";\nimport EmptyIcon from \"./my-leaves-empty.svg\";\n\nimport { getMessage } from \"../../../lib/translator\";\nimport { getSession } from \"../../../lib/auth\";\nimport { getPrintableTime } from \"../../../lib/datetime\";\n\nconst EmptyState = {\n icon: EmptyIcon,\n message: getMessage(\"leaves.emptyMessage\"),\n actions: ({ onAction }) => (\n {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n + {getMessage(\"leaves.apply.new\")}\n \n ),\n};\n\nclass LeaveActions extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showDialog: false,\n };\n this.showDialog = this.showDialog.bind(this);\n this.hideDialog = this.hideDialog.bind(this);\n this.cancelLeave = this.cancelLeave.bind(this);\n }\n\n showDialog() {\n this.setState({\n showDialog: true,\n });\n }\n\n hideDialog() {\n this.setState({\n showDialog: false,\n });\n }\n\n cancelLeave(id) {\n let { onAction } = this.props;\n onAction(TABLE_ACTIONS.UPDATE, { id }, { status: \"CANCELLED\" });\n }\n\n render() {\n const { id } = this.props;\n return (\n
    \n }>\n \n {getMessage(\"leaves.cancel\")}\n \n \n this.cancelLeave(id)}\n close={this.hideDialog}\n closeText={getMessage(\"leaves.dialog.cancel\")}\n okText={getMessage(\"leaves.dialog.okText\")}\n />\n
    \n );\n }\n}\n\nconst tableProperties = {\n headers: [\n getMessage(\"leaves.header.startsOn\"),\n getMessage(\"leaves.header.endsOn\"),\n getMessage(\"leaves.headers.appliedOn\"),\n getMessage(\"leaves.header.reason\"),\n getMessage(\"leaves.header.type\"),\n getMessage(\"leaves.header.status\"),\n getMessage(\"leaves.header.actions\"),\n ],\n row: ({\n id,\n fromDate,\n toDate,\n reason,\n type,\n status,\n appliedOn,\n onAction,\n }) => (\n \n {getPrintableTime(fromDate)}\n {getPrintableTime(toDate)}\n {getPrintableTime(appliedOn)}\n {reason}\n {type}\n {status}\n \n {status === \"APPROVED\" || status === \"PENDING\" ? (\n \n ) : (\n \"\"\n )}\n \n \n ),\n};\n\nconst gridView = {\n row: ({\n id,\n fromDate,\n toDate,\n reason,\n type,\n status,\n appliedOn,\n onAction,\n }) => (\n
    \n \n {status === \"APPROVED\" || status === \"PENDING\" ? (\n \n ) : (\n \"\"\n )}\n \n
    \n ),\n};\n\nexport default class MyLeaves extends Component {\n constructor(props) {\n super(props);\n this.state = {\n windowSize: window.innerWidth,\n };\n this.registerResize = this.registerResize.bind(this);\n }\n registerResize(e) {\n this.setState({\n windowSize: e.target.innerWidth,\n });\n }\n\n componentDidMount() {\n window.addEventListener(\"resize\", this.registerResize, true);\n }\n\n componentWillUnmount() {\n window.removeEventListener(\"resize\", this.registerResize, true);\n }\n\n render() {\n const userId = getSession().user.id;\n let { props } = this;\n let tableProps = tableProperties;\n if (this.state.windowSize <= 768) {\n tableProps = gridView;\n }\n return (\n response.data.userleave,\n }}\n headerActions={({ onAction }) => (\n onAction(TABLE_ACTIONS.ADD)}\n >\n {\"+ \" + getMessage(\"leaves.apply\")}\n \n )}\n addHeading={getMessage(\"leaves.apply.new\")}\n emptyState={EmptyState}\n tableProperties={tableProps}\n form={{\n component: LeaveForm,\n transformSubmit: (formData) => {\n let data = Object.assign({}, formData);\n if (formData.dateRange) {\n data.fromDate = formData.dateRange.startDate;\n data.toDate = formData.dateRange.endDate;\n delete data.dateRange;\n }\n return data;\n },\n }}\n filters={{\n component: LeavesFiltersForm,\n transformSubmit: (formData) => {\n let filters = Object.assign({}, formData);\n if (formData.type && formData.type === \"ALL\") {\n delete filters.type;\n }\n if (formData.status && formData.status === \"ALL\") {\n delete filters.status;\n }\n return filters;\n },\n }}\n />\n );\n }\n}\n","import React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport \"react-big-calendar/lib/css/react-big-calendar.css\";\nimport ReactBigCalendar from \"react-big-calendar\";\nimport moment from \"moment\";\nReactBigCalendar.setLocalizer(ReactBigCalendar.momentLocalizer(moment));\n\nexport default class BigCalendar extends Component {\n render() {\n const {\n date,\n events,\n onSelectEvent,\n eventPropGetter,\n defaultView,\n accessors,\n monthEvent,\n } = this.props;\n return (\n {}}\n defaultView={defaultView}\n events={events}\n components={{\n event: monthEvent,\n }}\n startAccessor={accessors.startAccessor}\n endAccessor={accessors.endAccessor}\n titleAccessor={accessors.titleAccessor}\n style={{ minHeight: \"500px\" }}\n onSelectEvent={onSelectEvent}\n views={[\"month\"]}\n toolbar={false}\n eventPropGetter={eventPropGetter}\n />\n );\n }\n}\n\nBigCalendar.defaultProps = {\n date: new Date(),\n defaultView: \"month\",\n onSelectEvent: false,\n eventPropGetter: () => true,\n};\n\nBigCalendar.propTypes = {\n events: PropTypes.array.isRequired,\n};\n","import React, { Component } from \"react\";\nimport moment from \"moment\";\nimport \"./style.css\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport { getMessage } from \"../../../lib/translator\";\nimport API from \"../../../lib/api\";\nimport Loader from \"../../../components/Loader\";\nimport { Radio } from \"../../../components/Form\";\nimport {\n getMonthStartEnd,\n getPrevMonth,\n getNextMonth,\n getDateInSQL,\n} from \"../../../lib/datetime\";\nimport BigCalendar from \"../../../components/BigCalendar\";\nimport ImagePlaceHolder from \"./customer-image-placeholder.svg\";\nimport LeftArrow from \"./left-arrow.svg\";\nimport RightArrow from \"./right-arrow.svg\";\nimport SearchIcon from \"./search.svg\";\nimport { Header } from \"../../../components/Table\";\n\nclass MonthEvent extends Component {\n componentDidMount() {\n let eventElement = document.querySelector(\".rbc-event\");\n\n if (eventElement) {\n eventElement.style.marginLeft = \"1.375rem\";\n }\n let eventImage = document.querySelector(\".rbc-event .custom-event img\");\n\n if (eventImage) {\n eventImage.style.display = \"inline-block\";\n }\n }\n render() {\n return (\n
    \n
    \n \"user\"\n
    \n
    {this.props.event.userName}
    \n
    \n );\n }\n}\n\nfunction generateOptions(data) {\n let options = [\n {\n text: getMessage(\"user.leave-summary.status.All\"),\n value: \"ALL\",\n },\n ];\n\n data.map((item) => {\n options.push({\n text: getMessage(\n item.charAt(0).toUpperCase() + item.slice(1).toLowerCase()\n ),\n value: item,\n });\n return options;\n });\n return options;\n}\n\nclass LeaveSummary extends Component {\n constructor(props) {\n super(props);\n this.state = {\n events: [],\n options: [],\n selectedUser: null,\n selectedLeaveType: null,\n showLoader: true,\n from: getMonthStartEnd()[0],\n to: getMonthStartEnd()[1],\n selectedStatus: \"ALL\",\n active: \"\",\n };\n\n // We'll be having a static copy of events and will be used during reset of filters.\n // We'll update the value during API call\n this.eventBackup = [];\n this.leaveTypes = [\"EARNED\", \"SICK\", \"PATERNITY\", \"MATERNITY\", \"HALFDAY\"];\n this.filterByUser = this.filterByUser.bind(this);\n this.filterByType = this.filterByType.bind(this);\n this.clearFilters = this.clearFilters.bind(this);\n this.getCalendar = this.getCalendar.bind(this);\n this.handlePrev = this.handlePrev.bind(this);\n this.handleNext = this.handleNext.bind(this);\n this.onClickToday = this.onClickToday.bind(this);\n this.toggleActiveClass = this.toggleActiveClass.bind(this);\n }\n\n toggleActiveClass() {\n if (this.state.active === \"active\") {\n this.setState(\n {\n active: \"\",\n selectedLeaveType: null,\n },\n () => this.filterByType(\"ALL\")\n );\n } else {\n this.setState({\n active: \"active\",\n });\n }\n }\n\n onClickToday() {\n this.setState(\n {\n from: getMonthStartEnd()[0],\n to: getMonthStartEnd()[1],\n },\n () => this.getCalendar()\n );\n }\n\n getCalendar() {\n const api = new API({ url: \"/account-service/leave-summary\" });\n const { from, to } = this.state;\n api\n .get({\n from,\n to,\n team: true,\n })\n .then((response) => {\n const events = response.data.leavesummary;\n // Have a copy of events and will be using it during reseting filters\n this.eventBackup = events;\n this.setState(\n {\n events,\n showLoader: false,\n },\n () => this.filterByType(this.state.selectedStatus)\n );\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n componentDidMount() {\n this.getCalendar();\n let options = generateOptions(this.leaveTypes);\n if (options && options.length > 1) {\n this.setState({\n options: options,\n });\n }\n }\n\n filterByUser({ userId }) {\n const { selectedUser, events } = this.state;\n if (selectedUser === null) {\n this.setState({\n events: events.filter((v) => v.user.id === userId),\n selectedUser: userId,\n });\n } else {\n this.setState({\n events: this.eventBackup,\n selectedUser: null,\n });\n }\n }\n\n filterByType(type) {\n if (type !== \"ALL\") {\n this.setState({\n events: this.eventBackup.filter((v) => v.type === type),\n selectedLeaveType: type,\n selectedStatus: type,\n });\n } else {\n this.setState({\n events: this.eventBackup,\n selectedLeaveType: null,\n selectedStatus: type,\n });\n }\n }\n\n clearFilters() {\n this.setState({\n events: this.eventBackup,\n selectedUser: null,\n selectedLeaveType: null,\n });\n }\n\n handleNext() {\n const newDate = getDateInSQL(getNextMonth(new Date(this.state.from)));\n this.setState(\n {\n from: getMonthStartEnd(newDate)[0],\n to: getMonthStartEnd(newDate)[1],\n },\n () => this.getCalendar()\n );\n }\n\n handlePrev() {\n const newDate = getDateInSQL(getPrevMonth(new Date(this.state.from)));\n this.setState(\n {\n from: getMonthStartEnd(newDate)[0],\n to: getMonthStartEnd(newDate)[1],\n },\n () => this.getCalendar()\n );\n }\n\n render() {\n let displayMonth = moment(this.state.from).format(\"MMMM\");\n let displayYear = moment(this.state.from).format(\"YYYY\");\n let { events, showLoader, from } = this.state;\n // This we need because calendar accessor accepts only below keys\n if (events) {\n events = events.map((d) => {\n return {\n eventId: d.id,\n fromDate: d.fromDate,\n toDate: d.toDate,\n title: d.reason,\n type: d.type,\n userName: d.user.name,\n userId: d.user.id,\n userImageUrl: d.user.imageUrl || ImagePlaceHolder,\n };\n });\n }\n return (\n \n
    \n
    \n

    \n {getMessage(\"user.leave-summary.heading\")}\n

    \n \n
    \n
    \n\n {showLoader ? (\n \n ) : (\n
    \n this.filterByType(value)}\n value={this.state.selectedStatus}\n />\n
    \n
    \n
      \n {this.leaveTypes.map((type) => (\n
    • \n {type.toLocaleLowerCase()}\n
    • \n ))}\n
    \n
    \n
    {displayMonth + \" \" + displayYear}
    \n
    \n
    \n Today\n
    \n \n \"left-arrow\"\n
    \n
    \n \"right-arrow\"{\" \"}\n
    \n
    \n
    \n\n {\n return {\n style: {\n backgroundColor: (() => {\n switch (event.type) {\n case \"SICK\":\n return \"#eb8181\";\n case \"PATERNITY\":\n return \"#f8ac59\";\n case \"MATERNITY\":\n return \"#80959d\";\n case \"EARNED\":\n return \"#1ec05c\";\n case \"HALFDAY\":\n return \"#45c0ff\";\n default:\n return \"#2A92CA\";\n }\n })(),\n },\n };\n }}\n />\n \n )}\n \n );\n }\n}\n\nexport default LeaveSummary;\n","import React from \"react\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport {\n BaseForm,\n Input,\n Select,\n VALIDATION_TYPES,\n} from \"../../../../components/Form\";\nimport { getCurrency } from \"../../../../lib/userDetails\";\nimport API from \"../../../../lib/api\";\nimport Loader from \"../../../../components/Loader\";\nimport { Dialog } from \"../../../../components/Popup\";\n\nfunction checkForNegativeValue(value) {\n if (value && value < 0) {\n return getMessage(\"input.invalidNumber\");\n }\n return \"\";\n}\n\nexport default class RefferalManagementForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n values: {\n bonusValue: 0,\n newCustomerSignupBonusAmount: 0,\n maxBonusValue: 0,\n referrerBonusType: \"FLAT\",\n },\n showSuccessDialog: false,\n showErrorDialog: false,\n };\n }\n\n componentDidMount() {\n this.setState({ showLoader: true });\n let api = new API({ url: `/config-service/config/referralManagement` });\n api\n .get()\n .then((response) => {\n if (response.data?.referralManagement) {\n this.setState({\n values: response.data?.referralManagement,\n });\n }\n })\n .catch((error) => {\n console.error(error);\n })\n .finally(() => this.setState({ showLoader: false }));\n }\n\n onSubmit(data) {\n this.setState({ submitting: true });\n if (this.state.values.referrerBonusType === \"FLAT\") {\n data.maxBonusValue = 0;\n }\n\n let referralApi = new API({ url: \"/config-service/config\" });\n let params = data;\n referralApi\n .post({\n referralManagement: params,\n })\n .then((res) => {\n this.setState({ showSuccessDialog: true });\n })\n .catch((error) => {\n console.log(error);\n this.setState({ showErrorDialog: true });\n })\n .finally(() => {\n this.setState({ submitting: false });\n });\n }\n\n closeDialogs = () => {\n this.setState({\n showSuccessDialog: false,\n showErrorDialog: false,\n });\n };\n\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n const { bonusValue, newCustomerSignupBonusAmount, maxBonusValue } =\n this.state.values;\n const negRefBonusErr = checkForNegativeValue(bonusValue);\n const negMaxBonusErr = checkForNegativeValue(maxBonusValue);\n const negSignupBonusErr = checkForNegativeValue(\n newCustomerSignupBonusAmount\n );\n\n return (\n
    \n \n \n\n {this.state.showLoader ? (\n \n ) : (\n
    \n
    \n

    \n {getMessage(\"refferal.managemnet.referrer.heading\")}\n

    \n
    \n \n \n
    ,\n ],\n }}\n {...this.generateStateMappers({\n stateKeys: [\"bonusValue\"],\n validationType: VALIDATION_TYPES.ONCHANGE,\n loseEmphasisOnFill: true,\n })}\n >\n {getMessage(\"referral.bonus.description\")}\n \n {this.state.values?.referrerBonusType &&\n this.state.values.referrerBonusType !== \"FLAT\" ? (\n \n ) : null}\n
    \n
    \n
    \n

    \n {getMessage(\"refferal.managemnet.referee.heading\")}\n

    \n
    \n \n {getMessage(\"signup.bonus.description\")}\n \n
    \n
    \n
    \n
    \n \n {getMessage(\"save.text\")}\n \n
    \n
    \n \n {getMessage(\"cancel.text\")}\n \n
    \n
    \n \n )}\n \n );\n }\n}\n","import React from \"react\";\nimport AuthenticatedPage from \"../../../../containers/AuthenticatedPage\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { Helmet } from \"react-helmet\";\nimport RefferalManagementForm from \"./form\";\n\nimport \"./styles.css\";\n\nexport default function RefferalManagement(props) {\n return (\n \n \n

    {getMessage(\"menu.item.referral-management\")}

    \n \n \n );\n}\n","import React, { useState, Component } from \"react\";\nimport API from \"../../../../lib/api\";\nimport { getMessage } from \"../../../../lib/translator\";\n// import { getMessage } from \"../../../lib/translator\";\nimport { Dialog } from \"../../../../components/Popup\";\nimport \"./style.css\";\n\nconst requiredKeyArray = [\n \"type\",\n \"token_uri\",\n \"project_id\",\n \"private_key_id\",\n \"private_key\",\n \"client_x509_cert_url\",\n \"client_id\",\n \"client_email\",\n \"auth_uri\",\n \"auth_provider_x509_cert_url\",\n];\n\nclass JsonFileUpload extends Component {\n constructor(props) {\n super(props);\n this.state = {\n file: false,\n showSuccessDialog: false,\n showErrorDialog: false,\n };\n }\n\n hasAllKeys = (obj, keys) => {\n for (let i = 0; i < keys.length; i++) {\n if (!obj.hasOwnProperty(keys[i])) {\n return false;\n }\n }\n return true;\n };\n\n handleFileUpload = (event) => {\n const file = event.target.files[0];\n const reader = new FileReader();\n\n reader.onload = (e) => {\n const data = JSON.parse(e.target.result);\n const dataValidation = this.hasAllKeys(data, requiredKeyArray);\n if (dataValidation) {\n this.props.setFileData(data);\n const api = new API({ url: `/config-service/config` });\n return api\n .post({\n googleMerchantCenter: {\n contentAPICredentials: data,\n },\n })\n .then(() => {\n this.setState({\n file: true,\n showSuccessDialog: true,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n } else {\n this.setState({\n showErrorDialog: true,\n });\n }\n };\n reader.readAsText(file);\n };\n\n closeDialogs = () => {\n this.setState({\n showErrorDialog: false,\n showSuccessDialog: false,\n });\n };\n\n render() {\n const { title, label } = this.props;\n return (\n \n {title}\n this.handleFileUpload(e)}\n />\n \n {(this.props.showFileName || this.state.file) && (\n content-api-key.json\n )}\n \n \n \n );\n }\n}\n\nexport default function GoogleMerchantForm(props) {\n const [fileData, setFileData] = useState(null);\n const { showSuccess } = props;\n\n return (\n
    \n {(showSuccess || fileData) && (\n

    \n {getMessage(\"google.merchant.center.success.description\")}\n

    \n )}\n \n

    \n {getMessage(\"google.merchant.center.description\")}\n

    \n
    \n );\n}\n","import React, { Component } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport AuthenticatedPage from \"../../../../containers/AuthenticatedPage\";\nimport Loader from \"../../../../components/Loader\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport GoogleMerchantCenterForm from \"./form\";\nimport API from \"../../../../lib/api\";\nimport \"./style.css\";\n\nexport default class GoogleMerchantCenter extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showLoader: false,\n showSuccessMsg: false,\n };\n }\n loadData = () => {\n this.setState({ showLoader: true });\n this.api = new API({ url: `/config-service/config/googleMerchantCenter` });\n this.api\n .get()\n .then((response) => {\n if (response.data.googleMerchantCenter.contentAPICredentials) {\n this.setState({\n showSuccessMsg: true,\n });\n }\n })\n .catch((error) => {\n console.error(error);\n throw error;\n })\n .finally(() => this.setState({ showLoader: false }));\n };\n componentDidMount() {\n this.loadData();\n }\n\n componentWillUnmount() {\n this.api && this.api.cancel();\n }\n render() {\n return (\n \n \n

    \n {getMessage(\"menu.item.google-merchant-center\")}\n

    \n {this.state.showLoader ? (\n \n ) : (\n \n )}\n \n );\n }\n}\n","import React, { useEffect, useState } from \"react\";\nimport { Checkbox, Input } from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport API from \"../../../../lib/api\";\nimport { Dialog } from \"../../../../components/Popup\";\n\nexport function ProductVariantForm() {\n const [hasProductProperties, setHasProductProperties] = useState(false);\n const [properties, setProperties] = useState([]);\n const [singleProperty, setSingleProperty] = useState(\"\");\n const [deleteTarget, setDeleteTarget] = useState(null);\n const [showWarningDialog, setShowWarningDialog] = useState(false);\n const [showErrorDialog, setShowErrorDialog] = useState(false);\n const [formError, setFormError] = useState(\"\");\n const [showSuccessDialog, setShowSuccessDialog] = useState(false);\n\n useEffect(() => {\n getProductProperties();\n }, []);\n\n useEffect(() => {\n if (properties?.length > 0) {\n setHasProductProperties(true);\n } else {\n setHasProductProperties(false);\n }\n }, [properties]);\n\n const togglePropertyEnable = (value) => {\n if (value === false) {\n setShowWarningDialog(true);\n } else {\n setHasProductProperties(true);\n }\n };\n\n const getProductProperties = () => {\n const productPropertyApi = new API({\n url: \"/catalogue-service/product-properties\",\n });\n productPropertyApi\n .get()\n .then((response) => {\n setProperties(response.data.productProperties || []);\n })\n .catch((error) => {\n console.error(error);\n setShowErrorDialog(true);\n setFormError(error.message);\n });\n };\n\n const handleAddKey = () => {\n if (singleProperty) {\n const productPropertyApi = new API({\n url: \"/catalogue-service/product-properties\",\n });\n productPropertyApi\n .post({ name: singleProperty })\n .then((response) => {\n const newProperties = properties || [];\n setShowSuccessDialog(true);\n newProperties.push(response.data.productProperties);\n setProperties(newProperties);\n handleAddProperty(\"\");\n })\n .catch((error) => {\n console.error(error);\n setShowErrorDialog(true);\n setFormError(error.message);\n });\n }\n };\n\n const handleAddProperty = (value) => {\n setSingleProperty(value);\n };\n\n const handleDeleteProductProperty = (id) => {\n if (id) {\n const productPropertyApi = new API({\n url: `/catalogue-service/product-properties/${id}`,\n });\n productPropertyApi\n .delete()\n .then((response) => {\n getProductProperties();\n setDeleteTarget(null);\n })\n .catch((error) => {\n setShowErrorDialog(true);\n setFormError(error.message);\n console.error(error);\n })\n .finally(() => {\n setShowWarningDialog(false);\n });\n } else {\n properties.forEach((property) => {\n if (property.id) {\n const productPropertyApi = new API({\n url: `/catalogue-service/product-properties/${property.id}`,\n });\n productPropertyApi\n .delete()\n .then((response) => {\n getProductProperties();\n setDeleteTarget(null);\n })\n .catch((error) => {\n setShowErrorDialog(true);\n setFormError(error.message);\n console.error(error);\n })\n .finally(() => {\n setShowWarningDialog(false);\n });\n }\n });\n }\n };\n\n const handleDeleteKey = (id) => {\n setShowWarningDialog(true);\n setDeleteTarget(id);\n };\n\n return (\n
    \n
    \n togglePropertyEnable(e)}\n label={getMessage(\"product.property.enable.text\")}\n />\n
    \n {hasProductProperties && (\n <>\n setShowSuccessDialog(false)}\n closeText={getMessage(\"okay.text\")}\n />\n setShowWarningDialog(false)}\n closeText={getMessage(\"cancel.text\")}\n onOk={() => handleDeleteProductProperty(deleteTarget)}\n okText=\"OK\"\n />\n {\n setShowErrorDialog(false);\n }}\n closeText={getMessage(\"okay.text\")}\n />\n
    \n {properties &&\n properties?.map((property) => (\n
    \n \n handleDeleteKey(property.id)}\n />\n
    \n ))}\n handleAddProperty(value)}\n />\n
    \n \n \n )}\n
    \n );\n}\n","import React from \"react\";\nimport AuthenticatedPage from \"../../../../containers/AuthenticatedPage\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { Helmet } from \"react-helmet\";\nimport { ProductVariantForm } from \"./form\";\nimport \"./styles.css\";\n\nexport default function ProductVariantSupport(props) {\n return (\n \n \n

    \n {getMessage(\"menu.item.product-variant-support\")}\n

    \n \n \n );\n}\n","import React from \"react\";\nimport { BaseForm, Select, Radio, Input } from \"../../../../../components/Form\";\n\nimport { getMessage } from \"../../../../../lib/translator\";\n\nimport \"./style.css\";\n\nconst slotTimes = () => {\n let timeStrings = [];\n for (let i = 0; i <= 23; i++) {\n if (i < 10) {\n timeStrings.push(`0${i}:00`);\n timeStrings.push(`0${i}:30`);\n } else {\n timeStrings.push(`${i}:00`);\n timeStrings.push(`${i}:30`);\n }\n }\n return timeStrings;\n};\n\nconst slotTypes = [\n {\n text: \"ASAP\",\n value: \"ASAP\",\n },\n {\n text: \"Time\",\n value: \"STANDARD\",\n },\n];\n\nclass SlotForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n formError: \"\",\n values: {\n type: \"STANDARD\",\n },\n };\n }\n\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n return (\n
    \n
    \n
    \n \n
    \n {this.state.values.type === \"STANDARD\" && (\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n )}\n {this.state.values.type === \"ASAP\" && (\n
    \n \n
    \n )}\n {this.state.formError && (\n
    {this.state.formError}
    \n )}\n
    \n \n {getMessage(\"slots.save\")}\n \n
    \n \n
    \n );\n }\n}\n\nexport default SlotForm;\n","import React from \"react\";\nimport { BaseForm, Input, Select } from \"../../../../../components/Form\";\nimport { Dialog } from \"../../../../../components/Popup\";\n\nimport API from \"../../../../../lib/api\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport {\n getExtensionDetails,\n isExtensionEnabled,\n} from \"../../../../../lib/auth\";\nimport {\n getStandradDateTime,\n localTimeToUtc,\n utcToLocalTime,\n} from \"../../../../../lib/datetime\";\n\nconst slotTimes = () => {\n let timeStrings = [];\n for (let i = 0; i <= 23; i++) {\n if (i < 10) {\n timeStrings.push(`0${i}:00:00`);\n timeStrings.push(`0${i}:30:00`);\n } else {\n timeStrings.push(`${i}:00:00`);\n timeStrings.push(`${i}:30:00`);\n }\n }\n return timeStrings;\n};\n\nclass SlotConfig extends BaseForm {\n constructor(props) {\n super(props);\n this.state.showSuccessDialog = false;\n this.state.showErrorDialog = false;\n this.state.submitting = false;\n this.state.formError = \"\";\n\n this.handleSubmit = this.handleSubmit.bind(this);\n }\n\n handleSubmit(data) {\n const id = this.state.data.id;\n const api = new API({ url: `/account-service/extension/${id}` });\n\n let params = {};\n params[\"status\"] = this.state.data.status;\n params[\"config\"] = {};\n for (let field in data) {\n let payloadData = data[field];\n if (field === \"globalConfig\") {\n if (payloadData?.businessOpeningTime) {\n payloadData.businessOpeningTime = getStandradDateTime(\n localTimeToUtc,\n `${new Date().toISOString().split(\"T\")[0]} ${\n payloadData.businessOpeningTime\n }`\n ).split(\" \")[1];\n }\n if (payloadData?.businessClosingTime) {\n payloadData.businessClosingTime = getStandradDateTime(\n localTimeToUtc,\n `${new Date().toISOString().split(\"T\")[0]} ${\n payloadData.businessClosingTime\n }`\n ).split(\" \")[1];\n }\n }\n params[\"config\"][field] = payloadData;\n }\n\n return api\n .put(params)\n .then(\n (response) => {\n this.setState({\n formError: \"\",\n showSuccessDialog: true,\n });\n },\n (error) => {\n this.setState({\n formError: error.message,\n showErrorDialog: true,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n })\n .finally(() => {\n this.handleApi();\n });\n }\n\n onSubmit(data) {\n this.setState({\n submitting: true,\n });\n this.handleSubmit(data).then(() => this.setState({ submitting: false }));\n }\n\n handleApi = () => {\n const id =\n isExtensionEnabled(\"DeliverySlots\") &&\n getExtensionDetails(\"DeliverySlots\").id;\n const api = new API({ url: `/account-service/extension/${id}` });\n id &&\n api\n .get()\n .then((response) => {\n const values = response.data.extension.config;\n if (values?.globalConfig) {\n if (values.globalConfig?.businessOpeningTime) {\n values.globalConfig.businessOpeningTime = getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n values.globalConfig?.businessOpeningTime\n }`\n ).split(\" \")[1];\n }\n if (values.globalConfig?.businessClosingTime) {\n values.globalConfig.businessClosingTime = getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${\n values.globalConfig?.businessClosingTime\n }`\n ).split(\" \")[1];\n }\n }\n this.setState({\n data: response.data.extension,\n values,\n });\n })\n .catch((error) => {\n console.error(error);\n });\n };\n componentDidMount() {\n this.handleApi();\n }\n\n render() {\n const { Form } = this.components;\n const { SubmitButton } = this.buttons;\n return (\n
    \n this.setState({ showSuccessDialog: false })}\n closeText={getMessage(\"extensions.slot.okay\")}\n />\n this.setState({ showErrorDialog: false, formError: \"\" })}\n closeText={getMessage(\"extensions.slot.okay\")}\n />\n
    \n
    \n \n
    \n \n \n \n
    \n \n \n
    \n
    \n
    \n \n {getMessage(\"extensions.slot.save\")}\n \n \n
    \n );\n }\n}\n\nexport default SlotConfig;\n","import React, { Component } from \"react\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../../containers/ListingPage\";\nimport AuthenticatedPage from \"../../../../containers/AuthenticatedPage\";\nimport Tabs from \"../../../../components/Tabs\";\nimport { Row, Cell } from \"../../../../components/Table\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../../components/DropDown\";\nimport SlotForm from \"./Form\";\nimport Slots from \"../../../settings/Extensions/ExtensionDetailsForms/Slots\";\n// import StoreFilter from './StoreFilter'\nimport moment from 'moment'\nimport {\n getPrintableTime,\n getStandradDateTime,\n localTimeToUtc,\n utcToLocalTime,\n} from \"../../../../lib/datetime\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { sortSlots } from \"../../../../lib/commonlyused\";\n\nimport EmptyIcon from \"./empty.svg\"; // TODO: Change icon\n\n// Converts 01:00 PM to 13:00:00. Military format\nconst convertToMilitaryTime = (time, meridian) => {\n if (!time || !meridian) {\n return null;\n }\n return moment(`${time} ${meridian}`, [\"h:mm A\"]).format(\"HH:mm:ss\");\n}\n\n\nconst emptyState = {\n icon: EmptyIcon,\n message: getMessage(\"slots.emptymessage\"),\n actions: ({ onAction }) => (\n {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n + {getMessage(\"slot.add.text\")}\n \n ),\n};\n\nconst tableProperties = {\n row: ({ id, startTime, endTime, onAction }) => (\n \n \n {startTime\n ? getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${startTime}`\n )\n ).split(\",\")[1] +\n \" -\" +\n getPrintableTime(\n getStandradDateTime(\n utcToLocalTime,\n `${new Date().toISOString().split(\"T\")[0]} ${endTime}`\n )\n ).split(\",\")[1]\n : getMessage(\"slots.asap\") +\n \" \" +\n getMinutes(endTime) +\n \" \" +\n getMessage(\"slots.asap.minute\")}\n \n \n }>\n {\n onAction(TABLE_ACTIONS.DELETE, { id });\n }}\n >\n {getMessage(\"slots.delete\")}\n \n \n \n \n ),\n};\n\nfunction getMinutes(his) {\n var a = his.split(\":\");\n return +a[0] * 60 + +a[1];\n}\n\nclass SlotConfiguration extends Component {\n constructor(props) {\n super(props);\n this.state = {\n storeId: props.storeId,\n };\n }\n\n componentWillReceiveProps(newProps) {\n let storeId = newProps.storeId;\n if (this.state.storeId !== storeId) {\n this.setState({\n storeId,\n });\n }\n }\n\n render() {\n const props = this.props;\n let params = {};\n params.orderType = props.entity && props.entity.toUpperCase();\n if (this.state.storeId) {\n params.storeId = Number(this.state.storeId);\n }\n return (\n sortSlots(response.data.slot),\n params: params,\n updateApiParams: (prevParams, newParams) => {\n if (\n prevParams.orderType !== newParams.orderType ||\n prevParams.storeId !== newParams.storeId\n ) {\n let storeId = newParams.storeId;\n if (!Number(newParams.storeId)) {\n storeId = null;\n }\n return {\n shouldUpdate: true,\n params: {\n orderType: newParams.orderType,\n storeId: storeId,\n },\n };\n }\n },\n }}\n modalClassName=\"slot-rules-page\"\n className=\"slot-rules-page\"\n emptyState={emptyState}\n tableProperties={tableProperties}\n form={{\n component: SlotForm,\n transformSubmit: (formData) => {\n let slots = Object.assign({}, formData);\n slots.startTime = getStandradDateTime(\n localTimeToUtc,\n `${new Date().toISOString().split(\"T\")[0]} ${slots.startTime}`\n ).split(\" \")[1];\n slots.endTime = getStandradDateTime(\n localTimeToUtc,\n `${new Date().toISOString().split(\"T\")[0]} ${slots.endTime}`\n ).split(\" \")[1];\n if (slots.type === \"ASAP\") {\n delete slots.startTime;\n let h = Math.floor(slots.asap / 60);\n let m = slots.asap % 60;\n h = h < 10 ? \"0\" + h : h;\n m = m < 10 ? \"0\" + m : m;\n slots.endTime = `${h}:${m}:00`;\n }\n delete slots.asap;\n return slots;\n },\n }}\n additionalViewsBottom={[Slots]}\n addToTable={({ onAction }) => (\n {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n + {getMessage(\"slot.add.text\")}\n \n )}\n addNewItemToLast\n />\n );\n }\n}\n\nconst delivery = [\n {\n name: \"Delivery\",\n component: SlotConfiguration,\n },\n];\n\nconst pickup = [\n {\n name: \"Pickup\",\n component: SlotConfiguration,\n },\n];\n\nconst entities = delivery.concat(pickup);\n\nclass InterfaceContainer extends Component {\n constructor(props) {\n super(props);\n this.state = {\n index: 0,\n storeId: null,\n entity: \"delivery\",\n };\n this.mapping = [\"delivery\", \"pickup\"];\n this.changeTab = this.changeTab.bind(this);\n this.updateStoreId = this.updateStoreId.bind(this);\n }\n\n changeTab(index) {\n this.setState({\n index,\n entity: this.mapping[index],\n });\n }\n\n updateStoreId(storeId) {\n this.setState({\n storeId,\n });\n }\n\n render() {\n const { index, entity, storeId } = this.state;\n let ListingComponent = entities[index].component;\n return (\n
    \n

    {getMessage(\"slots.heading\")}

    \n {/* */}\n
    \n `${entity.name}`)}\n default={index}\n onClick={(index) => {\n this.changeTab(index);\n }}\n />\n
    \n \n
    \n
    \n
    \n );\n }\n}\n\nclass SlotsContainer extends Component {\n render() {\n return (\n \n \n \n );\n }\n}\n\nexport default SlotsContainer;\nexport { convertToMilitaryTime, getMinutes };\n","import React from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport Loader from \"../../../../components/Loader\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport {\n BaseForm,\n Input,\n Checkbox,\n CheckboxGroup,\n} from \"../../../../components/Form\";\nimport API from \"../../../../lib/api\";\nimport { Dialog } from \"../../../../components/Popup\";\nimport \"./style.css\";\nimport { GO_HOST } from \"../../../../config/app\";\n\nconst COD = \"COD\";\nconst PICKUP = \"PICKUP\";\nconst DELIVERY = \"DELIVERY\";\n\nconst showConfig = () => {\n if (GO_HOST.includes(\"tamimimarkets.com\")) return false;\n return true;\n};\n\nclass OrderManagementForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.showLoader = false;\n this.handleClose = this.handleClose.bind(this);\n this.closeDialogs = this.closeDialogs.bind(this);\n this.state.hasConfigAccess = showConfig();\n this.state.showPaymentError = false;\n }\n onPaymentChange = (value, type, key) => {\n if (type === \"PICKUP\") {\n const paymentMethods = this.state.values.configuredPaymentsPickup || [];\n if (value) {\n paymentMethods.push(key);\n } else {\n const index = paymentMethods.indexOf(key);\n paymentMethods.splice(index, 1);\n }\n\n this.setState((prevState) => {\n return {\n values: {\n ...prevState.values,\n configuredPaymentsPickup: paymentMethods,\n },\n };\n });\n } else {\n const paymentMethods = this.state.values.configuredPaymentsDelivery || [];\n if (value) {\n paymentMethods.push(key);\n } else {\n const index = paymentMethods.indexOf(key);\n paymentMethods.splice(index, 1);\n }\n this.setState((prevState) => {\n return {\n values: {\n ...prevState.values,\n configuredPaymentsDelivery: paymentMethods,\n },\n };\n });\n }\n };\n componentDidMount() {\n this.setState({\n showLoader: true,\n });\n\n const logisticApi = new API({ url: `/config-service/config/logistics` });\n const orderApi = new API({ url: `/account-service/config/order` });\n const orderConfigApi = new API({ url: \"/config-service/config/order\" });\n Promise.all([orderApi.get(), logisticApi.get(), orderConfigApi.get()])\n .then(([orderApiResponse, logisticApiResponse, orderConfigResponse]) => {\n let values = JSON.parse(JSON.stringify(this.state.values));\n const orderPayments = orderConfigResponse.data.order;\n const paymentMethods = [\n \"ONLINE\",\n \"WALLET\",\n \"CREDIT-AMEX\",\n \"CREDIT-VISA\",\n \"CREDIT-MASTER\",\n \"DEBIT-MADA\",\n \"GIFTCARD\",\n \"APPLE_PAY\",\n \"COD\",\n ];\n\n values.configuredPaymentsPickup =\n orderPayments?.paymentMethods?.PICKUP || [];\n values.configuredPaymentsDelivery =\n orderPayments?.paymentMethods?.DELIVERY || [];\n\n values.minimumOrderValue =\n (orderApiResponse &&\n orderApiResponse.data &&\n orderApiResponse.data.config &&\n orderApiResponse.data.config.order &&\n orderApiResponse.data.config.order.minimumOrderValue) ||\n 0;\n values.deliveryFee =\n (logisticApiResponse &&\n logisticApiResponse.data &&\n logisticApiResponse.data.logistics &&\n logisticApiResponse.data.logistics.deliveryFee) ||\n 0;\n // values.paymentMethods =\n // orderConfigResponse &&\n // orderConfigResponse.data &&\n // orderConfigResponse.data.order &&\n // orderConfigResponse.data.order.paymentMethods;\n\n // values.isCODEnabled =\n // orderConfigResponse &&\n // orderConfigResponse.data &&\n // orderConfigResponse.data.order &&\n // orderConfigResponse.data.order.paymentMethods &&\n // orderConfigResponse.data.order.paymentMethods?.includes(COD);\n values.generateRandomReferenceNumbers = Boolean(\n orderConfigResponse &&\n orderConfigResponse.data &&\n orderConfigResponse.data.order &&\n orderConfigResponse.data.order.generateRandomReferenceNumbers\n );\n values.orderTypes = orderApiResponse?.data?.config?.order?.orderTypes;\n values.minimumOrderValueForFreeDelivery =\n orderConfigResponse?.data?.order?.minimumOrderValueForFreeDelivery;\n values.minimumOrderValueForFreePickup =\n orderConfigResponse?.data?.order?.minimumOrderValueForFreePickUp;\n values.minimumOrderValueForDelivery =\n orderConfigResponse?.data?.order?.minimumOrderValueForDelivery;\n values.minimumOrderValueForPickup =\n orderConfigResponse?.data?.order?.minimumOrderValueForPickup;\n\n this.setState({\n values,\n showLoader: false,\n availablePayments: paymentMethods,\n });\n })\n .catch((error) => {\n console.error(error);\n this.setState({ showLoader: false });\n if (error.code === 401) {\n throw error;\n }\n });\n }\n handleSubmit(data = {}) {\n const { configuredPaymentsPickup, configuredPaymentsDelivery } =\n this.state.values;\n let payload = {};\n if (this.state.values?.orderTypes?.includes(PICKUP)) {\n payload[PICKUP] = configuredPaymentsPickup;\n }\n if (this.state.values?.orderTypes?.includes(DELIVERY)) {\n payload[DELIVERY] = configuredPaymentsDelivery;\n }\n\n let order = {};\n if (data && data.hasOwnProperty(\"minimumOrderValue\")) {\n order.minimumOrderValue = data[\"minimumOrderValue\"];\n } else {\n order.minimumOrderValue = 0;\n }\n\n if (data.orderTypes) {\n order.orderTypes = data.orderTypes;\n }\n\n const logistics = {},\n orderConfig = {};\n logistics.deliveryFee = data[\"deliveryFee\"];\n orderConfig.generateRandomReferenceNumbers = Boolean(\n data[\"generateRandomReferenceNumbers\"]\n );\n orderConfig.minimumOrderValueForDelivery =\n data.minimumOrderValueForDelivery;\n orderConfig.minimumOrderValueForPickup = data.minimumOrderValueForPickup;\n orderConfig.minimumOrderValueForFreeDelivery =\n data.minimumOrderValueForFreeDelivery;\n\n if (data?.minimumOrderValueForFreePickup) {\n orderConfig.minimumOrderValueForFreePickUp =\n data.minimumOrderValueForFreePickup;\n }\n if (data.isCODEnabled) {\n if (data.paymentMethods.indexOf(COD) > -1) {\n // Removing duplicate entries. This is for cleaning already affected data\n data.paymentMethods = data.paymentMethods.filter(\n (paymentMeyhod, index, array) =>\n array.indexOf(paymentMeyhod) === index\n );\n } else {\n data.paymentMethods = [...data.paymentMethods, COD];\n }\n orderConfig.paymentMethods = payload;\n } else {\n orderConfig.paymentMethods = payload;\n }\n // orderConfig.orderTypesToPaymentMethods = payload;\n const logisticAndOrderConfigApi = new API({\n url: `/config-service/config`,\n });\n const api = new API({ url: `/account-service/config/order` });\n\n return Promise.all([\n api.put({ order }),\n logisticAndOrderConfigApi.post({ logistics, order: orderConfig }),\n ])\n .then(([orderResponse, logisticApiResponse]) => {\n this.setState({ formError: \"\", showSuccessDialog: true });\n })\n .catch((error) => {\n console.error(error);\n this.setState({ formError: error.message, showErrorDialog: true });\n\n if (error.code === 401) {\n throw error;\n }\n });\n }\n\n validatePaymentModes = (data) => {\n const hasPickup = data.orderTypes?.includes(PICKUP);\n const hasDelivery = data.orderTypes?.includes(DELIVERY);\n\n switch (true) {\n case hasPickup && hasDelivery:\n return (\n data.configuredPaymentsPickup.length > 0 &&\n data.configuredPaymentsDelivery.length > 0\n );\n case hasPickup:\n return data.configuredPaymentsPickup.length > 0;\n case hasDelivery:\n return data.configuredPaymentsDelivery.length > 0;\n default:\n return false;\n }\n };\n\n onSubmit(data) {\n if (this.validatePaymentModes(data)) {\n this.setState({\n submitting: true,\n showPaymentError: false,\n });\n this.handleSubmit(data).then(() => {\n this.setState({ submitting: false });\n });\n } else {\n this.setState({\n showPaymentError: true,\n });\n }\n }\n handleClose() {\n this.props.history.goBack();\n }\n closeDialogs() {\n this.setState({\n showSuccessDialog: false,\n showErrorDialog: false,\n showPaymentError: false,\n });\n }\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n const { hasConfigAccess } = this.state;\n const { availablePayments = [] } = this.state;\n return (\n
    \n \n \n \n {this.state.showLoader ? (\n \n ) : (\n
    \n {hasConfigAccess && (\n \n )}\n {this.state.values?.orderTypes?.includes(DELIVERY) &&\n hasConfigAccess && (\n \n )}\n {this.state.values?.orderTypes?.includes(PICKUP) &&\n hasConfigAccess && (\n \n )}\n {this.state.values?.orderTypes?.includes(DELIVERY) && (\n \n )}\n {this.state.values?.orderTypes?.includes(PICKUP) &&\n hasConfigAccess && (\n \n )}\n \n {/* {hasConfigAccess && (\n
    \n \n
    \n )} */}\n {hasConfigAccess && (\n \n )}\n \n
    \n
    \n
    \n {getMessage(\"choose.payment.mode.for.order.type\")}\n
    \n
    \n \n \n \n {Array.isArray(availablePayments) &&\n availablePayments.map((item) => (\n \n ))}\n \n \n \n {this.state.values?.orderTypes?.includes(DELIVERY) && (\n \n \n {Array.isArray(availablePayments) &&\n availablePayments.map((item) => {\n const hasConfigured =\n this.state.values?.configuredPaymentsDelivery?.includes(\n item\n );\n return (\n \n \n this.onPaymentChange(e, \"DELIVERY\", item)\n }\n />\n \n );\n })}\n \n )}\n {this.state.values?.orderTypes?.includes(PICKUP) && (\n \n \n {Array.isArray(availablePayments) &&\n availablePayments.map((item) => {\n const hasConfigured =\n this.state.values?.configuredPaymentsPickup?.includes(\n item\n );\n return (\n \n \n this.onPaymentChange(e, \"PICKUP\", item)\n }\n />\n \n );\n })}\n \n )}\n \n
    \n {getMessage(\"order.by.label.for.payment\")}\n \n {getMessage(\n `operations.store.form.payment.${item}`\n )}\n
    \n {getMessage(\"order.details.location.option.delivery\")}\n
    \n {getMessage(\"order.details.location.option.pickup\")}\n
    \n \n \n
    \n \n {getMessage(\"basicInfo.submit.text\")}\n \n \n {getMessage(\"basicInfo.cancel.text\")}\n \n
    \n \n )}\n \n );\n }\n}\n\nexport default withRouter(OrderManagementForm);\n","import React, { Component } from \"react\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport { getMessage } from \"../../../lib/translator\";\nimport OrderManagementForm from \"./Form\";\n\nclass OrderManagement extends Component {\n render() {\n return (\n \n

    {getMessage(\"orderConfig.heading\")}

    \n \n \n );\n }\n}\n\nexport default OrderManagement;\n","import React from \"react\";\nimport Loader from \"../../../../components/Loader\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport { BaseForm, Input } from \"../../../../components/Form\";\nimport API from \"../../../../lib/api\";\nimport { Dialog } from \"../../../../components/Popup\";\n\nclass IntegrationSettingsForm extends BaseForm {\n constructor(props) {\n super(props);\n this.state.showLoader = false;\n this.fetchConfigData = this.fetchConfigData.bind(this);\n this.handleCloseDialog = this.handleCloseDialog.bind(this);\n }\n\n componentDidMount() {\n this.fetchConfigData();\n }\n\n fetchConfigData() {\n this.setState({\n showLoader: true,\n });\n\n const websiteConfigApi = new API({ url: `/config-service/config/website` });\n const analyticsConfigApi = new API({\n url: `/config-service/config/analytics`,\n });\n\n Promise.all([websiteConfigApi.get(), analyticsConfigApi.get()])\n .then(([websiteConfigResponse, analyticsConfigResponse]) => {\n const values = {\n ...websiteConfigResponse?.data?.website,\n googleTagManagerId: analyticsConfigResponse?.data?.analytics?.gtmId,\n };\n this.setState({ values, showLoader: false });\n })\n .catch((error) => {\n console.error(error);\n this.setState({ showLoader: false });\n if (error.code === 401) {\n throw error;\n }\n });\n }\n\n onSubmit(data) {\n this.setState({\n submitting: true,\n });\n const websiteConfigApi = new API({ url: `/config-service/config` });\n const websiteData = { ...data };\n delete websiteData.googleTagManagerId;\n websiteConfigApi\n .post({\n website: websiteData,\n analytics: { gtmId: data.googleTagManagerId },\n })\n .then((response) => {\n this.setState({ formError: \"\", submitting: false, showSuccess: true });\n })\n .catch((error) => {\n console.error(error);\n this.setState({\n formError: error.message,\n submitting: false,\n showSuccess: false,\n });\n\n if (error.code === 401) {\n throw error;\n }\n });\n }\n\n handleCloseDialog(e) {\n e && e.preventDefault();\n this.setState({ showSuccess: false, formError: \"\" });\n }\n\n render() {\n const { SubmitButton } = this.buttons;\n const { Form } = this.components;\n const { showLoader, formError, showSuccess } = this.state;\n return showLoader ? (\n \n ) : (\n
    \n \n \n \n \n \n \n {getMessage(\"basicInfo.submit.text\")}\n \n \n );\n }\n}\n\nexport default IntegrationSettingsForm;\n","import React from \"react\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport IntegrationSettingsForm from \"./Form\";\nimport { getMessage } from \"../../../lib/translator\";\n\nconst IntegrationSettings = (props) => (\n \n

    \n {getMessage(\"settings.integrationSettings.heading\")}\n

    \n \n \n);\n\nexport default IntegrationSettings;\n","import React from \"react\";\nimport { Row, Cell } from \"../../../../../components/Table\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport {\n DropDown,\n DropDownItem,\n ICONS,\n} from \"../../../../../components/DropDown\";\n\nconst tableHeader = [\n getMessage(\"orderPackageConfig.type.text.label\"),\n getMessage(\"orderPackageConfig.package.length\"),\n getMessage(\"orderPackageConfig.package.breadth\"),\n getMessage(\"orderPackageConfig.package.height\"),\n getMessage(\"role.action\"),\n];\nconst tableProperties = (handleEditPackage, handleDeletePackage) => {\n return {\n headers: tableHeader,\n row: ({ id, type, length, breadth, height }) => (\n \n {type}\n {length}\n {breadth}\n {height}\n \n }>\n \n handleEditPackage({ id, type, length, breadth, height })\n }\n >\n {getMessage(\"orderPackageConfig.action.edit.text\")}\n \n handleDeletePackage(id)}>\n {getMessage(\"orderPackageConfig.delete.text\")}\n \n \n \n \n ),\n };\n};\n\nexport default tableProperties;\n","import React, { useState } from \"react\";\nimport ListingPage from \"../../../../containers/ListingPage\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport emptyIcon from \"./noOrder.svg\";\nimport tabularView from \"./Views/tabularView\";\nimport CreateNewPackageForm from \"./CreateNewPackageForm.js\";\nimport { Dialog, Popup } from \"../../../../components/Popup\";\nimport API from \"../../../../lib/api\";\nimport { getSession } from \"../../../../lib/auth\";\nimport \"./style.css\";\n\nconst CreateNewPackage = (props) => {\n return (\n
    \n \n
    \n );\n};\n\nconst emptyState = (handleClickShowPackage) => ({\n icon: emptyIcon,\n message: getMessage(\"orderPackageConfig.package.emptyMsg\"),\n actions: () => (\n \n ),\n});\n\nconst PackagesTable = (props) => {\n const organizationId = getSession()?.organization?.id?.toString?.();\n\n const [showPackagePopup, setShowPackagePopup] = useState(false);\n const [createPackageError, setCreatePackageError] = useState(false);\n const [createPackageSuccess, setCreatePackageSuccess] = useState(false);\n const [submitting, setSubmitting] = useState(false);\n const [editPackage, setEditPackage] = useState(null);\n const [deletePackage, setDeletePackage] = useState(null);\n const [listingKey, setListingKey] = useState(\"\");\n const [isPackageEditInfo, setIsPackageEditInfo] = useState(false);\n\n const handleCloseCreatePackage = () => {\n setShowPackagePopup(false);\n setEditPackage(null);\n };\n const handleClickShowPackage = () => {\n setShowPackagePopup(true);\n };\n\n const handleSubmitAddPackage = (formData) => {\n setSubmitting(true);\n const createPackageAPI = new API({ url: \"/order-service/package\" });\n createPackageAPI\n .post({ organizationId, ...formData })\n .then((response) => {\n setSubmitting(false);\n setIsPackageEditInfo(false);\n handleCloseCreatePackage();\n setCreatePackageSuccess(true);\n setListingKey(JSON.stringify(response));\n })\n .catch((error) => {\n console.error(error);\n setSubmitting(false);\n setIsPackageEditInfo(false);\n handleCloseCreatePackage();\n setCreatePackageError(true);\n });\n };\n const handleSubmitEditPackage = (formData) => {\n setSubmitting(true);\n const editPackageAPI = new API({\n url: `/order-service/package/${editPackage?.id}`,\n });\n editPackageAPI\n .put({ organizationId, ...formData })\n .then((response) => {\n setSubmitting(false);\n setIsPackageEditInfo(true);\n setCreatePackageSuccess(true);\n handleCloseCreatePackage();\n setListingKey(JSON.stringify(response));\n })\n .catch((error) => {\n console.error(error);\n setSubmitting(false);\n setIsPackageEditInfo(true);\n handleCloseCreatePackage();\n setCreatePackageError(true);\n });\n };\n const handleSubmitDeletePackage = () => {\n const deletePackageAPI = new API({\n url: `/order-service/package/${deletePackage}`,\n });\n deletePackageAPI\n .delete({ organizationId })\n .then((response) => {\n setListingKey(JSON.stringify(response) + deletePackage);\n setDeletePackage(null);\n })\n .catch((error) => {\n console.error(error);\n });\n };\n\n const dismissPackageError = () => {\n setCreatePackageError(false);\n };\n const dismissPackageSuccess = () => {\n setCreatePackageSuccess(false);\n };\n\n const handleEditPackage = (orderPackage) => {\n setEditPackage({ ...orderPackage });\n };\n const handleDeletePackage = (orderPackageId) => {\n setDeletePackage(orderPackageId);\n };\n const dismissDeletePackage = () => {\n setDeletePackage(null);\n };\n\n const errorDialogTitle = isPackageEditInfo\n ? getMessage(\"orderPackageConfig.editPackage.errorMsg\")\n : getMessage(\"orderPackageConfig.createPackage.errorMsg\");\n const errorDialogInfo = isPackageEditInfo\n ? getMessage(\"orderPackageConfig.editPackage.errorMsg.dsc\")\n : getMessage(\"orderPackageConfig.createPackage.errorMsg.dsc\");\n\n const successDialogTitle = isPackageEditInfo\n ? getMessage(\"orderPackageConfig.editPackage.successMsg\")\n : getMessage(\"orderPackageConfig.createPackage.successMsg\");\n const successDialogInfo = isPackageEditInfo\n ? getMessage(\"orderPackageConfig.editPackage.successMsg.dsc\")\n : getMessage(\"orderPackageConfig.createPackage.successMsg.dsc\");\n\n return (\n <>\n response.data.package,\n }}\n headerActions={() =>\n props.url.includes(\"settings\") && (\n \n )\n }\n emptyState={emptyState(handleClickShowPackage)}\n tableProperties={tabularView(handleEditPackage, handleDeletePackage)}\n />\n\n \n \n \n \n \n\n \n \n );\n};\n\nexport default PackagesTable;\n","import React, { Component } from \"react\";\nimport { withRouter } from \"react-router-dom\";\nimport Table from \"./Table\";\n\nclass OrderPackageConfigRouter extends Component {\n render() {\n return ;\n }\n}\n\nexport default withRouter(({ match, ...props }) => (\n \n));\n","import React from \"react\";\nimport { Input, Select } from \"../Form\";\n\nimport { getMessage } from \"../../lib/translator\";\n\nconst splitAtCapitalLetter = (str) => str.split(/(?=[A-Z])/).join(\" \");\nconst ENTER_TEXT = getMessage(\"product.form.enter\");\nconst DESCRIPTION_FIELDS_ALLOWED = {\n DUNZO: [\"clientId\", \"clientSecret\"],\n SHIPROCKET: [\"email\", \"password\"],\n};\nconst descriptionApplicable = (name, id) => {\n if (\n DESCRIPTION_FIELDS_ALLOWED[id] &&\n DESCRIPTION_FIELDS_ALLOWED[id].includes(name)\n ) {\n return getMessage(`courier.support.${id}.${name}`);\n }\n\n return null;\n};\nexport default function ProviderConfiguration(props) {\n const { parent, selectedProviderConfig } = props;\n const { fields, id } = selectedProviderConfig;\n const _this = parent;\n\n return (\n \n
    \n {fields.map(({ name, required, allowedValues, type }) => {\n const splittedNameAtCapitalLetter = splitAtCapitalLetter(name);\n const label = splittedNameAtCapitalLetter.toUpperCase();\n const placeholderText = `${ENTER_TEXT} ${splittedNameAtCapitalLetter.toLowerCase()}`;\n return allowedValues ? (\n \n ) : (\n \n {descriptionApplicable(name, id)}\n \n );\n })}\n
    \n
    \n );\n}\n","import React from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { CopyToClipboard } from \"react-copy-to-clipboard\";\nimport { BaseForm, Toggle, Input, Checkbox } from \"../Form\";\nimport Loader from \"../Loader\";\nimport API from \"../../lib/api\";\nimport { getMessage } from \"../../lib/translator\";\nimport AuthenticatedPage from \"../../containers/AuthenticatedPage\";\nimport ProviderConfiguration from \"./ProviderConfiguration\";\nimport { Dialog } from \"../Popup\";\nimport \"./style.css\";\nimport DropdownIcon from \"./dropdown.svg\";\nimport {\n disableExtension,\n enableExtension,\n getExtensionDetails,\n isExtensionEnabled,\n} from \"../../lib/auth\";\nimport deleteIcon from \"./icon-dustbin.svg\";\nimport { Select } from \"../../components/Form\";\n\nconst DUNZO_WEBHOOK_CURL = `curl --location --request POST 'https://zopping.com/api/logistics-service/courier-event' \\\n--header 'developer-token: 28f39c97-67a5-49ea-ac12-e77363af0063' \\\n--header 'X-Client-Name: DUNZO' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"status\": \"completed\",\n}'`;\n\nconst COURIER_EVENT_URL =\n \"https://zopping.com/api/logistics-service/courier-event\";\n\nexport default class CourierSupport extends BaseForm {\n constructor(props) {\n super(props);\n this.state = {\n showSuccessDialog: false,\n showErrorDialog: false,\n formError: \"\",\n providerSelected: {\n providerFormVisible: \"\",\n providerActive: {},\n },\n validated: false,\n copied: false,\n shipRocketExtenson: false,\n courierServices: [],\n addedServices: [],\n deleteTarget: null,\n };\n this.logisticsServiceProviders = [];\n this.logisticsServiceProvidersCredential = {};\n }\n\n componentDidMount() {\n this.setState({ providersLoading: true });\n const shipRocketExtenson = isExtensionEnabled(\"ShipRocket\");\n this.setState({ shipRocketExtenson: shipRocketExtenson });\n\n this.allProvidersApi = new API({\n url: \"/logistics-service/logistics-provider\",\n });\n this.websiteConfigApi = new API({\n url: \"/config-service/config/logistics\",\n });\n Promise.all([this.allProvidersApi.get(), this.websiteConfigApi.get()])\n .then(([allProvidersResponse, websiteConfigResponse]) => {\n this.logisticsServiceProviders =\n websiteConfigResponse.data.logistics.logisticsServiceProviders;\n this.logisticsServiceProvidersCredential = {\n ...websiteConfigResponse.data.logistics\n .logisticsServiceProvidersCredential,\n };\n this.setState({\n providersList: allProvidersResponse.data,\n courierServices: allProvidersResponse.data.logisticsProvider.map(\n (provider) => ({\n ...provider,\n text: provider.name,\n value: provider.id,\n })\n ),\n addedServices: Object.keys(\n websiteConfigResponse.data.logistics\n .logisticsServiceProvidersCredential || {}\n ),\n });\n if (\n websiteConfigResponse.data.logistics\n .logisticsServiceProvidersCredential &&\n Object.keys(\n websiteConfigResponse.data.logistics\n .logisticsServiceProvidersCredential\n ).length\n ) {\n const logisticsServiceProviders =\n websiteConfigResponse.data.logistics.logisticsServiceProviders;\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n logisticsServiceProviders.forEach((val) => {\n newState.providerSelected.providerActive[val] = true;\n });\n return newState;\n });\n }\n })\n .catch((error) => {\n this.setState({\n formError: error.message,\n showErrorDialog: true,\n });\n console.error(error);\n })\n .finally(() => {\n this.setState({ providersLoading: false });\n });\n }\n\n handleValidation = (params) => {\n const api = new API({ url: `/logistics-service/courier-health` });\n return api\n .post(params)\n .then(() => {\n this.setState({\n formError: \"\",\n validated: true,\n });\n })\n .catch((error) => {\n this.setState({\n formError: error.message,\n showErrorDialog: true,\n });\n console.error(error);\n });\n };\n\n getActiveProviders = () => {\n let providers = [];\n const providerActive = this.state.providerSelected.providerActive;\n if (Object.keys(providerActive).length) {\n Object.keys(providerActive).forEach((key) => {\n if (providerActive[key]) {\n providers.push(key);\n }\n });\n }\n return providers.filter(Boolean);\n };\n\n onSubmit = (data) => {\n this.setState({\n submitting: true,\n });\n\n const providers = [];\n const tempProvider = this.getActiveProviders();\n tempProvider.forEach((id) => {\n if (this.state.addedServices.includes(id)) {\n providers.push(id);\n }\n });\n\n let providersCreds = {};\n if (this.logisticsServiceProvidersCredential) {\n Object.keys(this.logisticsServiceProvidersCredential).forEach((key) => {\n if (key !== \"\" && this.state.addedServices.includes(key)) {\n providersCreds[key] = this.logisticsServiceProvidersCredential[key];\n }\n });\n if (this.state.providerSelected.providerFormVisible !== \"\") {\n providersCreds[this.state.providerSelected.providerFormVisible] = {\n ...data,\n };\n }\n } else {\n providersCreds[this.state.providerSelected.providerFormVisible] = {\n ...data,\n };\n }\n const api = new API({ url: `/config-service/config` });\n const params = {\n logistics: {\n logisticsServiceProviders: providers,\n logisticsServiceProvidersCredential: providersCreds,\n },\n };\n\n this.handleValidation(params).then(() => {\n if (this.state.validated) {\n api\n .post(params)\n .then(() => {\n this.logisticsServiceProviders = providers;\n this.logisticsServiceProvidersCredential = providersCreds;\n this.setState({\n touched: {},\n formError: \"\",\n validated: false,\n validations: {},\n showSuccessDialog: true,\n });\n })\n .catch((error) => {\n this.setState({ formError: error.message, showErrorDialog: true });\n console.error(error);\n })\n .finally(() => {\n this.setState({ submitting: false });\n });\n } else {\n this.setState({ submitting: false });\n }\n });\n };\n\n updateExtension = async () => {\n let extension = getExtensionDetails(\"ShipRocket\");\n if (!extension) {\n this.setState({ providersLoading: true });\n const extensionData = new API({ url: `/account-service/extension` });\n await extensionData\n .get()\n .then((response) => {\n let slug = \"ShipRocket\";\n let extensionIndex = (response.data.extension || []).findIndex(\n (ext) => ext.slug === slug\n );\n extension =\n extensionIndex > -1\n ? response.data.extension[extensionIndex]\n : null;\n })\n .catch((error) => {\n console.error(error);\n throw error;\n })\n .finally(() => {\n this.setState({ providersLoading: false });\n });\n }\n const extensionId = extension && extension.id;\n const extensionStatus = extension && extension.status;\n if (extensionId) {\n const api = new API({ url: `/account-service/extension/${extensionId}` });\n if (!this.state.shipRocketExtenson && extensionStatus === \"ENABLED\") {\n // make extension disable\n this.setState({ providersLoading: true });\n const params = { id: extensionId, status: \"DISABLED\" };\n api\n .put(params)\n .then((response) => {\n disableExtension(response.data.extension);\n })\n .catch((error) => {\n this.setState((prevState) => ({\n shipRocketExtenson: !prevState.shipRocketExtenson,\n formError: error.message,\n showErrorDialog: true,\n }));\n console.error(error);\n })\n .finally(() => {\n this.setState({ providersLoading: false });\n });\n } else if (\n this.state.shipRocketExtenson &&\n extensionStatus !== \"ENABLED\"\n ) {\n // make extension enable\n this.setState({ providersLoading: true });\n const params = { id: extensionId, status: \"ENABLED\" };\n api\n .put(params)\n .then((response) => {\n if (!getExtensionDetails(\"ShipRocket\")) {\n enableExtension(response.data.extension);\n }\n })\n .catch((error) => {\n this.setState((prevState) => ({\n shipRocketExtenson: !prevState.shipRocketExtenson,\n formError: error.message,\n showErrorDialog: true,\n }));\n })\n .finally(() => {\n this.setState({ providersLoading: false });\n });\n }\n }\n };\n\n toggleExtension = () => {\n this.setState(\n (prevState) => ({\n shipRocketExtenson: !prevState.shipRocketExtenson,\n }),\n this.updateExtension\n );\n };\n\n updateProviderStatus = () => {\n let providers = this.getActiveProviders();\n const api = new API({ url: `/config-service/config` });\n const params = {\n logistics: {\n logisticsServiceProviders: providers,\n },\n };\n api\n .post(params)\n .then(() => {\n this.setState({\n formError: \"\",\n });\n })\n .catch((error) => {\n this.setState({ formError: error.message, showErrorDialog: true });\n console.error(error);\n });\n };\n\n toggleProviderStatus = (providerName) => {\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.providerSelected.providerActive[providerName] =\n !prevState.providerSelected.providerActive[providerName];\n return newState;\n }, this.updateProviderStatus);\n };\n\n closeDialogs = () => {\n this.setState({\n showSuccessDialog: false,\n showErrorDialog: false,\n showWarningDialog: false,\n formError: \"\",\n });\n };\n\n handleCopy = () => {\n setTimeout(() => {\n this.setState({ copied: false });\n }, 1000);\n this.setState({ copied: true });\n };\n\n handleFormView = (providerName) => {\n let data = {};\n if (\n this.logisticsServiceProvidersCredential &&\n providerName in this.logisticsServiceProvidersCredential\n ) {\n data = { ...this.logisticsServiceProvidersCredential[providerName] };\n } else {\n if (providerName === \"DUNZO\") {\n data[\"processingFeePaymentMode\"] = \"COD\";\n }\n }\n this.setState((prevState) => {\n let newState = Object.assign({}, prevState);\n newState.providerSelected.providerFormVisible =\n providerName === newState.providerSelected.providerFormVisible\n ? null\n : providerName;\n newState.values = { ...data };\n newState.touched = {};\n newState.validations = {};\n return newState;\n });\n };\n\n onProviderChange = (courierName) => {\n if (!this.state.addedServices.includes(courierName)) {\n const newServices = [...this.state.addedServices, courierName];\n this.setState({\n addedServices: newServices,\n });\n }\n };\n\n handleProviderDelete = (id) => {\n const newServices = this.state.addedServices.filter(\n (service) => service !== id\n );\n this.setState({\n addedServices: newServices,\n showWarningDialog: false,\n });\n };\n\n handleDeleteDialog = (id) => {\n this.setState({\n showWarningDialog: true,\n deleteTarget: id,\n });\n };\n\n render() {\n const { Form } = this.components;\n const { SubmitButton, CancelButton } = this.buttons;\n const {\n shipRocketExtenson,\n providerSelected,\n courierServices,\n deleteTarget,\n } = this.state;\n\n return (\n \n
    \n \n

    \n {getMessage(\"extensions.courier.support.heading\")}\n

    \n\n
    \n \n \n this.handleProviderDelete(deleteTarget)}\n okText=\"OK\"\n />\n
    \n
    \n \n

    {getMessage(\"courier.support.extension.toggle.text\")}

    \n
    \n {shipRocketExtenson && (\n
    \n \n
    \n )}\n {this.state.providersLoading ? (\n \n ) : (\n <>\n {shipRocketExtenson &&\n this.state?.providersList?.logisticsProvider?.map(\n (data) => {\n const { name, id, image } = data;\n const submitDisable = !Boolean(\n providerSelected.providerActive[id]\n );\n if (this.state.addedServices.includes(id)) {\n return (\n
    \n
    \n
    \n this.handleFormView(id)}\n alt=\"\"\n />\n \n {name}\n
    \n
    \n {\n this.handleDeleteDialog(id);\n }}\n >\n \n \n {getMessage(\"delete.text\")}\n \n
    \n \n this.toggleProviderStatus(id)\n }\n />\n
    \n
    \n {id ===\n this.state.providerSelected\n .providerFormVisible && (\n
    \n {id === \"DUNZO\" && (\n
    \n \n {getMessage(\n \"courier.support.DUNZO.webhook.url\"\n )}\n \n \n \n {getMessage(\n this.state.copied\n ? \"copied\"\n : \"copy\"\n )}\n \n \n
    \n )}\n \n \n {getMessage(\"notifications.submitText\")}\n \n
    \n )}\n
    \n );\n }\n return \"\";\n }\n )}\n \n )}\n {shipRocketExtenson && (\n
    \n \n {getMessage(\"notifications.save\")}\n \n \n {getMessage(\"notifications.cancel\")}\n \n
    \n )}\n
    \n \n \n \n );\n }\n}\n","import React from \"react\";\nimport CourierSupport from \"../../../components/CourierSupport\";\n\nconst CourierSupportForm = (props) => {\n return ;\n};\n\nexport default CourierSupportForm;\n","import React from \"react\";\nimport {\n BaseForm,\n Input,\n ProductSearch,\n Select,\n SingleDatePicker,\n} from \"../../../../components/Form\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport Image from \"../../../../components/Image\";\nimport { getTimes } from \"../../../../lib/datetime\";\nimport \"./style.css\";\nimport { timeRangeDisable } from \"../../../../lib/datetime\";\n\nexport default class ProductRestrictionForm extends BaseForm {\n render() {\n const { SubmitButton, CancelButton } = this.buttons;\n const { Form } = this.components;\n const { props } = this;\n const { value } = props;\n const product = value && value.product;\n return (\n
    \n
    \n {props.method === \"add\" ? (\n \n ) : null}\n
    \n {product ? (\n \n ) : null}\n {product ? (\n

    \n {product.brand ? (\n \n {product.brand.name}\n {product.name}\n \n ) : (\n product.name\n )}\n

    \n ) : null}\n
    \n
    \n \n\n
    \n \n
    \n \n timeRangeDisable(this.state.values?.startDate, val)\n }\n required\n {...this.generateStateMappers({\n stateKeys: [\"startTime\"],\n loseEmphasisOnFill: true,\n })}\n />\n
    \n
    \n
    \n \n\n
    \n \n timeRangeDisable(this.state.values?.startDate, val)\n }\n required\n {...this.generateStateMappers({\n stateKeys: [\"endTime\"],\n loseEmphasisOnFill: true,\n })}\n />\n
    \n
    \n
    \n \n \n
    \n
    \n\n
    \n {getMessage(\"brand.form.submitText\")}\n {getMessage(\"brand.form.cancelText\")}\n
    \n \n
    \n );\n }\n}\n","import React, { Component } from \"react\";\nimport Upload from \"../../../../components/FileUpload\";\nimport { getMessage } from \"../../../../lib/translator\";\nimport csvIcon from \"./csv-icon.svg\";\nimport uploadIcon from \"./import-customers.svg\";\nimport sampleTags from \"./sample.csv\";\n\nfunction downloadCsv() {\n var hiddenElement = document.createElement(\"a\");\n hiddenElement.href = sampleTags;\n hiddenElement.target = \"_blank\";\n hiddenElement.download = \"sample.csv\";\n hiddenElement.click();\n}\n\nexport default class RestrictedProductFileUpload extends Component {\n constructor(props) {\n super(props);\n this.getSampleCsv = this.getSampleCsv.bind(this);\n }\n\n getSampleCsv(e) {\n e.preventDefault();\n downloadCsv();\n }\n\n render() {\n return (\n
    \n
    \n
    \n \"\"\n
    \n \n
    \n
    \n \n
    \n
    \n );\n }\n}\n","import React, { Component } from \"react\";\nimport ListingPage, { TABLE_ACTIONS } from \"../../../containers/ListingPage\";\nimport { Row, Cell } from \"../../../components/Table\";\nimport AuthenticatedPage from \"../../../containers/AuthenticatedPage\";\nimport Image from \"../../../components/Image\";\nimport { DropDown, DropDownItem, ICONS } from \"../../../components/DropDown\";\nimport { getMessage } from \"../../../lib/translator\";\nimport ProductRestrictionForm from \"./Form\";\nimport \"./style.css\";\nimport EmptyIcon from \"./empty.svg\";\nimport { formatTime, getPrintableTime } from \"../../../lib/datetime\";\nimport RestrictedProductFileUpload from \"./RestrictedProductUpload\";\nimport { getStandradDateTime } from \"../../../lib/datetime\";\nimport { localTimeToUtc } from \"../../../lib/datetime\";\nimport { utcToLocalTime } from \"../../../lib/datetime\";\n\nimport { Popup } from \"../../../components/Popup\";\nclass FileUploadAction extends Component {\n constructor(props) {\n super(props);\n this.state = {\n modalShown: false,\n };\n this.hideModal = this.hideModal.bind(this);\n }\n\n hideModal() {\n this.setState({\n modalShown: false,\n });\n }\n\n render() {\n const user = JSON.parse(window.localStorage.getItem(\"user\"));\n let organizationData = JSON.parse(\n window.localStorage.getItem(\"organization\")\n );\n return (\n
    \n \n \n \n {\n this.setState({\n modalShown: true,\n });\n }}\n >\n \n {getMessage(\"catalogue.product.restriction.bulk.upload\")}\n \n \n
    \n );\n }\n}\n\nconst tableProperties = {\n headers: [\n getMessage(\"catalogue.product.restriction.image\"),\n getMessage(\"catalogue.product.restriction.name\"),\n getMessage(\"catalogue.product.restriction.startDate\"),\n getMessage(\"catalogue.product.restriction.endDate\"),\n getMessage(\"catalogue.product.restriction.max.purchaseable.qty\"),\n getMessage(\"catalogue.product.restriction.actions\"),\n ],\n row: ({\n id,\n name,\n startDate,\n endDate,\n rule,\n product,\n onAction,\n startTime,\n endTime,\n }) => {\n return (\n \n \n \n \n \n {\n onAction(TABLE_ACTIONS.EDIT, { id });\n }}\n >\n {name ? (\n name.name\n ) : product ? (\n product.brand ? (\n \n {product.brand.name} \n {product.name}\n \n ) : (\n product.name\n )\n ) : null}\n \n \n \n \n {getMessage(\"catalogue.product.restriction.startDate\")}\n \n
    {getPrintableTime(startDate)}
    \n \n {formatTime(startTime)}\n \n
    \n \n \n {getMessage(\"catalogue.product.restriction.endDate\")}\n \n
    {getPrintableTime(endDate)}
    \n \n {formatTime(endTime)}\n \n
    \n \n \n {getMessage(\"catalogue.product.restriction.max.purchaseable.qty\")}\n \n {rule?.maxPurchasableLimit}\n \n \n }>\n {\n onAction(TABLE_ACTIONS.EDIT, { id });\n }}\n >\n {getMessage(\"category.action.edit\")}\n \n {\n onAction(TABLE_ACTIONS.DELETE, { id });\n }}\n >\n {getMessage(\"category.action.delete\")}\n \n \n \n
    \n );\n },\n};\n\nconst EmptyState = {\n icon: EmptyIcon,\n message: getMessage(\"product.restrictions.empty\"),\n actions: ({ onAction }) => (\n <>\n \n {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n +{\" \"}\n \n {getMessage(\"product.restrictions.add.text\")}\n \n \n \n ),\n};\n\nclass InterfaceContainer extends Component {\n render() {\n return (\n
    \n

    \n {getMessage(\"catalogue-service-product-restrictions.heading\")}\n

    \n {\n let productRestrictions;\n let product = response.data?.product || [];\n if (Array.isArray(response.data?.productRestrictions)) {\n productRestrictions = response.data?.productRestrictions;\n productRestrictions.forEach((item) => {\n if(item?.rule?.renewalTime){\n item.days = parseInt(Number(item?.rule?.renewalTime) / 24);\n item.hours = Number(item?.rule?.renewalTime) % 24;\n delete item?.rule?.renewalTime;\n }\n const startDateTime = getStandradDateTime(\n utcToLocalTime,\n item?.startDate\n );\n const endDateTime = getStandradDateTime(\n utcToLocalTime,\n item?.endDate\n );\n item.startDate = startDateTime.split(\" \")[0];\n item.startTime = startDateTime.split(\" \")[1];\n item.endDate = endDateTime.split(\" \")[0];\n item.endTime = endDateTime.split(\" \")[1];\n item.product = product.filter(\n (pdt) => pdt.id === item.entityId\n )?.[0];\n });\n } else {\n productRestrictions = response.data?.productRestriction || [];\n productRestrictions.product = product?.[0] || [];\n let startDateTime;\n if (productRestrictions?.startDate)\n startDateTime = getStandradDateTime(\n utcToLocalTime,\n productRestrictions?.startDate\n );\n let endDateTime;\n if (productRestrictions?.endDate)\n endDateTime = getStandradDateTime(\n utcToLocalTime,\n productRestrictions?.endDate\n );\n if(productRestrictions?.rule?.renewalTime){\n productRestrictions.days = parseInt(Number(productRestrictions?.rule?.renewalTime)/ 24);\n productRestrictions.hours = Number(productRestrictions?.rule?.renewalTime) % 24;\n delete productRestrictions?.rule?.renewalTime;\n }\n productRestrictions.startDate = startDateTime?.split(\" \")[0];\n productRestrictions.startTime = startDateTime?.split(\" \")[1];\n productRestrictions.endDate = endDateTime?.split(\" \")[0];\n productRestrictions.endTime = endDateTime?.split(\" \")[1];\n }\n return productRestrictions;\n },\n }}\n emptyState={EmptyState}\n form={{\n component: ProductRestrictionForm,\n transformSubmit: (formData) => {\n let data = Object.assign({}, formData);\n if (data.product && data.product.id) {\n data.entityId = data.product.id;\n delete data.product;\n }\n if (data.startDate && data.startTime) {\n data.startDate = getStandradDateTime(\n localTimeToUtc,\n `${formData.startDate} ${formData.startTime}`\n );\n data.startDate = data.startDate.replace(/ /g, \"T\") + \"Z\";\n }\n if (data.endDate && data.endTime) {\n data.endDate = getStandradDateTime(\n localTimeToUtc,\n `${formData.endDate} ${formData.endTime}`\n );\n data.endDate = data.endDate.replace(/ /g, \"T\") + \"Z\";\n }\n if(!data.days && !data.hours) {\n data.rule.renewalTime = 0;\n }\n if(data.days || data.hours) {\n let totalHours = 0;\n if(data.days) {\n totalHours = parseInt(data.days * 24)\n }\n if(data.hours) {\n totalHours += parseInt(data.hours)\n }\n data.rule.renewalTime = totalHours\n }\n delete data.days;\n delete data.hours;\n delete data[\"startTime\"];\n delete data[\"endTime\"];\n data.type = \"PRODUCT\";\n return data;\n },\n }}\n primaryKey=\"id\"\n tableProperties={tableProperties}\n addHeading=\"Add Configuration\"\n editHeading=\"Edit Configuration\"\n headerActions={({ onAction }) => (\n \n \n {\n onAction(TABLE_ACTIONS.ADD);\n }}\n >\n +{\" \"}\n \n {getMessage(\"product.restrictions.add.text\")}\n \n \n \n )}\n />\n
    \n );\n }\n}\n\nexport default class ProductRestrictionConfig extends Component {\n render() {\n return (\n \n \n \n );\n }\n}\n","/**\n * @member value of the entities are according to api backend params required\n */\nexport const USER_ACTIVITY_LOGS_ENTITIES = [\n {\n text: \"Store\",\n value: \"Store\",\n url: \"/account-service/store-history\",\n tableNameHeader: true,\n },\n {\n text: \"Product\",\n value: \"Product\",\n url: \"/catalogue-service/product-history\",\n tableNameHeader: true,\n },\n {\n text: \"Category\",\n value: \"Category\",\n url: \"/catalogue-service/category-history\",\n tableNameHeader: true,\n },\n {\n text: \"Brand\",\n value: \"Brand\",\n url: \"/catalogue-service/brand-history\",\n tableNameHeader: true,\n },\n {\n text: \"Capacity\",\n value: \"Capacity\",\n url: \"/logistics-service/capacity-history\",\n tableNameHeader: false,\n },\n {\n text: \"Delivery area\",\n value: \"DeliveryArea\",\n url: \"/logistics-service/delivery-area-history\",\n tableNameHeader: true,\n },\n {\n text: \"Tag\",\n value: \"Tag\",\n url: \"/catalogue-service/tag-history\",\n tableNameHeader: true,\n },\n {\n text: \"Logistics settings\",\n value: \"logisticsSettings\",\n url: \"/config-service/logistics-settings-history\",\n tableNameHeader: true,\n },\n {\n text: \"Order configs\",\n value: \"OrderConfigs\",\n url: \"/config-service/order-configs-history\",\n tableNameHeader: true,\n },\n {\n text: \"payment method\",\n value: \"PaymentMethod\",\n url: \"/config-service/payment-method-history\",\n tableNameHeader: false,\n },\n {\n text: \"Slot blocking\",\n value: \"SlotBlocking\",\n url: \"/order-service/slot-blocking-history\",\n tableNameHeader: false,\n },\n {\n text: \"Slot\",\n value: \"Slot\",\n url: \"/order-service/slot-history\",\n tableNameHeader: false,\n },\n];\n","import React from \"react\";\nimport {\n BaseForm,\n Select,\n DateRangePicker,\n VALIDATION_TYPES,\n} from \"../../../../../components/Form\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport { USER_ACTIVITY_LOGS_ENTITIES } from \"../Table/userActivityConstants\";\nimport { getStores } from \"../../../../../lib/auth\";\nimport API from \"../../../../../lib/api\";\nimport \"./style.css\";\n\nexport default class UserActivityFilters extends BaseForm {\n componentDidMount() {\n new API({ url: \"/account-service/employee\" })\n .get()\n .then(({ data }) => {\n this.setState({\n userNames: data.employee.reduce((userObj, user) => {\n userObj.push({\n text: user.name,\n value: user.id,\n });\n return userObj;\n }, []),\n });\n })\n .catch((error) => console.error(error));\n this.setState({\n stores: getStores().reduce((storeObj, store) => {\n storeObj.push({\n text: store.name,\n value: store.id,\n });\n return storeObj;\n }, []),\n });\n }\n handleSelectChange = (value) => {\n this.props.updateApiUrl(\n USER_ACTIVITY_LOGS_ENTITIES.find((entity) => entity.value === value).url\n );\n return value;\n };\n render() {\n const { SubmitButton, ClearButton } = this.buttons;\n const { Form } = this.components;\n return (\n
    \n
    \n this.handleSelectChange(value),\n })}\n />\n \n \n date > new Date()}\n endDatePlaceholder={getMessage(\n \"user.filters.user.activity.endDate.placeholder\"\n )}\n />\n
    \n {getMessage(\"order.filters.submitText\")}\n \n {getMessage(\"order.filters.clearFiltersText\")}\n \n \n );\n }\n}\n","import { Cell, Row } from \"../../../../../components/Table\";\nimport React, { useState } from \"react\";\nimport {\n getPrintableTime,\n getStandradDateTime,\n utcToLocalTime,\n} from \"../../../../../lib/datetime\";\nimport ListingPage from \"../../../../../containers/ListingPage\";\nimport UserActivityFilters from \"../Filters\";\nimport { getMessage } from \"../../../../../lib/translator\";\nimport { USER_ACTIVITY_LOGS_ENTITIES } from \"./userActivityConstants\";\nimport { objectDiff } from \"../../../../../utils/objectDiff\";\nimport isEmpty from \"lodash.isempty\";\nimport emptyIcon from \"./logs-empty.svg\";\n\nconst tableProperties = (entityName) => {\n const actionText = (newValue, oldValue) => {\n if (isEmpty(newValue) && !isEmpty(oldValue)) {\n return \"Deleted\";\n } else if (!isEmpty(newValue) && isEmpty(oldValue)) {\n return \"Created\";\n } else if (!isEmpty(newValue) && !isEmpty(oldValue)) {\n const updatedFields = objectDiff(newValue, oldValue);\n const modifiedMessage = Object.keys(updatedFields).reduce(\n (modifiedStr, key, index) => {\n if (index > 0) {\n return modifiedStr.concat(\", \" + key);\n }\n return modifiedStr.concat(key);\n },\n \"\"\n );\n return modifiedMessage.concat(\" Modified\");\n }\n return \"\";\n };\n const getTableHeader = (entityName) => {\n const entity = USER_ACTIVITY_LOGS_ENTITIES.find(\n (currentEntity) => currentEntity.value === entityName\n );\n const tableHeaders = [\n \"Select Entity\",\n entity?.tableNameHeader ? ` ${entityName} Name` : false,\n \"User\",\n \"Date\",\n \"Action\",\n ].filter(Boolean);\n tableHeaders.push(\"\");\n return tableHeaders;\n };\n return {\n headers: getTableHeader(entityName),\n row: (props) => {\n const {\n entityType,\n id,\n newValue,\n oldValue,\n user,\n createdAt,\n entityId,\n UserName,\n actionTime,\n } = props;\n\n return (\n \n {entityType}\n {(newValue?.name || oldValue?.name) && (\n {newValue?.name || oldValue?.name}\n )}\n {user?.name || UserName}\n \n {createdAt\n ? getPrintableTime(getStandradDateTime(utcToLocalTime, createdAt))\n : actionTime\n ? getPrintableTime(\n getStandradDateTime(utcToLocalTime, actionTime)\n )\n : null}\n \n \n {entityType} ID: {entityId}{\" \"}\n {entityType}\n {\" -> \"}\n {actionText(newValue, oldValue)\n .split(\" \")\n .slice(0, -1)\n .join(\" \")}{\" \"}\n \n {actionText(newValue, oldValue).split(\" \").slice(-1)[0]}\n \n \n {\"\"}\n \n );\n },\n };\n};\n\nconst emptyState = {\n icon: emptyIcon,\n message: getMessage(\"user.activity.logs.empty.message\"),\n};\n\nfunction UserActivityLogsTable() {\n const [currentEntity] = useState(USER_ACTIVITY_LOGS_ENTITIES[0]);\n const [entityName, setEntityName] = useState(currentEntity.text);\n\n return (\n <>\n {\n if (!response.data || !response.data.history) return [];\n setEntityName(response.data.history?.[0]?.entityType);\n return response.data.history || [];\n },\n }}\n filters={{\n component: UserActivityFilters,\n showFiltersOnLoad: true,\n }}\n emptyState={emptyState}\n title={getMessage(\"menu.item.user-activity-logs\")}\n className=\"user-activity-logs\"\n tableProperties={tableProperties(entityName)}\n />\n \n );\n}\n\nexport default UserActivityLogsTable;\n","import isEmpty from \"lodash.isempty\";\n\nexport function objectDiff(obj1, obj2) {\n const diff = {};\n\n // Helper function to check for changes\n function checkChanges(key, value1, value2) {\n if (value1 !== value2) {\n if (isEmpty(value1) && isEmpty(value2)) {\n return;\n } else if (isPlainObject(value1) && isPlainObject(value2)) {\n const recursiveObj = objectDiff(value1, value2);\n if (isEmpty(recursiveObj)) return;\n diff[key] = { oldValue: value1, newValue: value2 };\n }\n if (value1 === undefined) {\n // Property was added\n diff[key] = { added: value2 };\n } else if (value2 === undefined) {\n // Property was removed\n diff[key] = { removed: value1 };\n } else {\n // Property was modified\n diff[key] = { oldValue: value1, newValue: value2 };\n }\n }\n }\n\n function isPlainObject(variable) {\n return Object.prototype.toString.call(variable) === \"[object Object]\";\n }\n\n // Check for properties in obj1\n for (const key in obj1) {\n if (obj1.hasOwnProperty(key)) {\n if (key in obj2) {\n // If both objects have the property, check if it's changed\n checkChanges(key, obj1[key], obj2[key]);\n } else {\n // Property is removed in obj2\n diff[key] = { removed: obj1[key] };\n }\n }\n }\n\n // Check for properties in obj2 that are not in obj1 (added)\n for (const key in obj2) {\n if (obj2.hasOwnProperty(key) && !(key in obj1)) {\n diff[key] = { added: obj2[key] };\n }\n }\n\n return diff;\n}\n","import React from \"react\";\nimport AuthenticatedPage from \"../../../../containers/AuthenticatedPage\";\nimport { Helmet } from \"react-helmet\";\nimport UserActivityLogsTable from \"./Table\";\n\nexport default function UserActivityLogs(props) {\n return (\n \n \n \n \n );\n}\n","import React, { Component } from \"react\";\nimport moment from \"moment\";\nimport { Route, Switch, Redirect } from \"react-router-dom\";\n\nimport SignUp from \"../../pages/others/SignUp\";\nimport Login from \"../../pages/others/Login\";\nimport ResetPassword from \"../../pages/others/ResetPassword\";\nimport Logout from \"../../pages/others/Logout\";\nimport NotDone from \"../../pages/others/NotDone\";\nimport MissingPage from \"../../pages/others/MissingPage\";\nimport Verify from \"../../pages/others/Verify\";\nimport AccountCreated from \"../../pages/others/AccountCreated\";\nimport PaymentResponse from \"../../pages/others/PaymentResponse\";\n\nimport Products from \"../../pages/catalogue/Products/index\";\nimport Categories from \"../../pages/catalogue/Categories/index\";\nimport CategoryTree from \"../../pages/catalogue/Categories/TreeView\";\nimport Brands from \"../../pages/catalogue/Brands/index\";\nimport CatalogueDashboard from \"../../pages/catalogue/Dashboard\";\nimport Tags from \"../../pages/catalogue/Tags\";\nimport SubstitutionGroups from \"../../pages/catalogue/SubstitutionGroups\";\nimport CouponAnalytics from \"../../pages/marketing/analytics/coupon-analytics\";\n\nimport CsDashboard from \"../../pages/customer-support/Dashboard\";\nimport CsCustomers from \"../../pages/customer-support/Customers\";\nimport CsOrders from \"../../pages/customer-support/Orders\";\n// import CsCalls from '../../pages/customer-support/Calls'\n// import Customers from '../../pages/operations/Customers'\nimport OrderDispatchForm from \"../../pages/operations/Orders/OrderDispatchForm\";\nimport OrdersAnalytics from \"../../pages/analytics/orders-analytics\";\nimport AnalyticsReport from \"../../pages/analytics/reports\";\n\nimport Orders from \"../../pages/operations/Orders\";\nimport OrderAddForm from \"../../pages/operations/Orders/POS\";\nimport OrderLog from \"../../components/OrderLog\";\nimport Pickers from \"../../pages/operations/Pickers\";\nimport PickersToday from \"../../pages/operations/PickersToday\";\nimport FileReturn from \"../../pages/operations/Returns/Form/FileForReturn\";\nimport UserShifts from \"../../pages/hr/UserShifts\";\nimport Sellers from \"../../pages/sellers/Sellers\";\nimport SellerUsers from \"../../pages/sellers/Users\";\n\nimport Vehicles from \"../../pages/logistics/Vehicles\";\nimport VehiclePlanner from \"../../pages/logistics/VehiclePlanner\";\nimport VehicleVendor from \"../../pages/logistics/VehicleVendor\";\nimport Trips from \"../../pages/logistics/Trips\";\nimport TripDetails from \"../../pages/logistics/TripDetails\";\nimport TripPlanner from \"../../pages/logistics/TripPlanner\";\nimport TripPlannerTable from \"../../pages/logistics/TripPlanner/TableView\";\nimport ManageRE from \"../../pages/logistics/ManageRE's\";\nimport TripPaymentsForm from \"../../pages/logistics/Trips/TripPaymentsForm\";\nimport LogisticsConfig from \"../../pages/logistics/LogisticsConfig\";\n\nimport Blogs from \"../../pages/marketing/Blog/index\";\nimport Recipe from \"../../pages/marketing/Recipe/index\";\nimport Influencer from \"../../pages/marketing/Influencer/index\";\nimport Coupons from \"../../pages/marketing/Coupons/index\";\nimport BulkCoupons from \"../../pages/marketing/BulkCoupons\";\nimport Pages from \"../../pages/marketing/Pages/index\";\nimport Campaigns from \"../../pages/marketing/Campaigns\";\nimport Offers from \"../../pages/marketing/Offers\";\nimport ManageBanners from \"../../pages/marketing/BannerManagement\";\nimport RatingAndReviews from \"../../pages/marketing/ratingAndReviews\";\n\nimport OperationsDashboard from \"../../pages/operations/Dashboard\";\nimport Stores from \"../../pages/operations/Stores\";\nimport OrderPickingQueue from \"../../pages/operations/PickingQueue\";\nimport Disputes from \"../../pages/operations/Disputes\";\nimport Returns from \"../../pages/operations/Returns\";\nimport FileDispute from \"../../pages/operations/Disputes/FileDispute\";\nimport StoreSlotConfigTable from \"../../pages/stores/slots/StoreSlotConfigTable\";\nimport OrderRegisterPayments from \"../../pages/operations/Orders/RegisterPayments\";\nimport EditPackedOrder from \"../../pages/operations/Orders/EditPackedOrder/EditPackedOrder\";\nimport CapacityPlanning from \"../../pages/operations/CapacityPlanning\";\nimport Today from \"../../pages/operations/CapacityPlanning/Today\";\nimport SlotCharges from \"../../pages/operations/SlotCharges\";\nimport PackOrder from \"../../pages/operations/Orders/PackOrder\";\nimport ClickCollectOrders from \"../../pages/operations/ClickCollectOrders\";\n\nimport Designations from \"../../pages/hr/Designations\";\nimport AttendanceSummary from \"../../pages/hr/AttendanceSummary\";\n\nimport BasicInformation from \"../../pages/settings/BasicInformation/index\";\nimport Analytics from \"../../pages/settings/Analytics/index\";\nimport SocialMedia from \"../../pages/settings/SocialMedia/index\";\nimport DeliveryArea from \"../../pages/settings/DeliveryArea/index\";\nimport Themes from \"../../pages/settings/Themes/index\";\nimport Extensions from \"../../pages/settings/Extensions\";\nimport StoreConfiguration from \"../../pages/settings/StoreConfiguration\";\nimport ExtensionDetailsForm from \"../../pages/settings/Extensions/ExtensionDetailsForms\";\nimport Users from \"../../pages/settings/Users\";\nimport MobileApps from \"../../pages/settings/MobileApps\";\nimport Notifications from \"../../pages/settings/Notifications\";\nimport PaymentConfiguration from \"../../pages/settings/PaymentConfiguration\";\nimport SEO from \"../../pages/settings/SEO\";\nimport RackManagement from \"../../pages/settings/RackManagement\";\nimport SearchConfiguration from \"../../pages/settings/SearchConfigurations\";\nimport CommunicationConfig from \"../../pages/settings/Communication\";\nimport CustomerTags from \"../../pages/settings/CustomerTags\";\nimport PickupConfiguration from \"../../pages/settings/PickingConfiguration\";\nimport WalletConfiguration from \"../../pages/settings/WalletConfiguration\";\n\nimport LeaveManagement from \"../../pages/others/LeaveManagement/CancelableLeaves\";\nimport ChangePassword from \"../../pages/others/ChangePassword\";\nimport AccountBalance from \"../../pages/others/AccountBalance\";\nimport MyLeaves from \"../../pages/others/Leaves\";\nimport LeaveSummary from \"../../pages/others/LeaveSummary\";\nimport RefferalManagement from \"../../pages/settings/Extensions/RefferalManagement\";\nimport GoogleMerchantCenter from \"../../pages/settings/Extensions/GoogleMerchantCenter\";\nimport ProductVariantSupport from \"../../pages/catalogue/Products/ProductVariantSupport\";\nimport Slots from \"../../pages/stores/slots/EditSlots\";\nimport {\n isExtensionEnabled,\n getPermissions,\n isEnterprise,\n modifyMenuForEnterprise,\n modifyEnterprisePermissions,\n getExtensionDetails,\n firstSubmenu,\n saveSession,\n} from \"../../lib/auth\";\nimport API, { isInternal } from \"../../lib/api\";\nimport { get, set } from \"../../lib/storage\";\nimport { roleMapping } from \"../../lib/commonlyused\";\nimport OrderManagement from \"../../pages/settings/OrderManagement\";\nimport IntegrationSettings from \"../../pages/settings/IntegrationSettings\";\nimport { GOOGLE_MAP_DEFAULT_KEY } from \"../../config/app\";\nimport LazyComponentLoader, { LazyComponent } from \"../LazyComponentLoader\";\nimport { getSession } from \"../../lib/auth\";\nimport OrderPackageConfig from \"../../pages/settings/OrderPackageConfig\";\nimport CourierSupportForm from \"../../pages/settings/CourierSupportForm\";\nimport isEmpty from \"lodash.isempty\";\nimport ProductRestrictions from \"../../pages/settings/ProductRestrictions\";\nimport { isMarketPlaceOwner } from \"../../lib/marketPlace\";\nimport UserActivityLogs from \"../../pages/settings/Users/UserActivityLogs\";\n\nconst OnboardingContainer = LazyComponent(() =>\n import(/* webpackChunkName: \"onboarding\"*/ \"../../pages/onboarding\")\n);\n\nfunction hasAccess({ endpoints, extensions = [] }) {\n let hasExtensionsEnabled = extensions\n .map(isExtensionEnabled)\n .reduce((acc, value) => acc && value, true);\n let hasApiPermissions =\n !endpoints || !endpoints.length\n ? true\n : Object.values(getPermissions(endpoints)).reduce((acc, value) => {\n if (value instanceof Object) {\n return (\n acc &&\n Object.values(value).reduce((acc, value) => acc || value, false)\n );\n } else {\n return acc && value;\n }\n }, true);\n return hasApiPermissions && hasExtensionsEnabled;\n}\n\nexport default class Router extends Component {\n constructor(props) {\n super(props);\n let url = new URL(window.location);\n if (url.searchParams.get(\"guid\")) {\n this.state = {\n refresh: true,\n };\n } else {\n this.state = {\n refresh: false,\n };\n }\n }\n\n getCatalogueMenu = () => {\n const catalogueMenu = [\n {\n slug: \"dashboard\",\n endpoints: [\"catalogue-service/stats\", \"account-service/extension\"],\n },\n {\n slug: \"brands\",\n endpoints: [\"catalogue-service/brand\", \"account-service/extension\"],\n extensions: [\"MultiBrandSupport\"],\n },\n {\n slug: \"categories\",\n endpoints: [\"catalogue-service/category\", \"account-service/extension\"],\n },\n {\n slug: \"tags\",\n endpoints: [\"catalogue-service/tag\", \"account-service/extension\"],\n extensions: [\"ProductTagSupport\"],\n },\n {\n slug: \"substitution-groups\",\n endpoints: [\n \"catalogue-service/substitution-group\",\n \"account-service/extension\",\n ],\n extensions: [\"SubstitutionGroups\"],\n },\n ];\n\n if (isMarketPlaceOwner()) {\n catalogueMenu.splice(3, 0, {\n slug: \"master-catalogue\",\n endpoints: [\n \"catalogue-service/category\",\n \"catalogue-service/product\",\n \"catalogue-service/permissible-seller\",\n \"catalogue-service/product-upload\",\n \"account-service/extension\",\n ],\n extensions: [\"MarketPlace\"],\n });\n catalogueMenu.splice(4, 0, {\n slug: \"seller-catalogue\",\n endpoints: [\n \"catalogue-service/category\",\n \"catalogue-service/product\",\n \"catalogue-service/seller-product-request\",\n // \"catalogue-service/product-upload\",\n \"account-service/extension\",\n ],\n extensions: [\"MarketPlace\"],\n });\n } else {\n catalogueMenu.splice(3, 0, {\n slug: \"products\",\n endpoints: [\n // \"catalogue-service/category\",\n \"catalogue-service/product\",\n // \"catalogue-service/product-upload\",\n // \"account-service/extension\",\n \"catalogue-service/seller-product-request\",\n ],\n });\n }\n\n return catalogueMenu;\n };\n\n render() {\n const { props } = this;\n // Only list mandatory API endpoints/extensions here\n const requiredPermissions = {\n user: [\n {\n slug: \"account-balance\",\n endpoints: [\"billing-service/transaction\", \"billing-service/balance\"],\n },\n {\n slug: \"my-leaves\",\n endpoints: [\"account-service/user-leave\"],\n extensions: [\"HrManagement\"],\n },\n {\n slug: \"leave-management\",\n endpoints: [\"account-service/user-leave\"],\n extensions: [\"HrManagement\"],\n },\n {\n slug: \"leave-summary\",\n endpoints: [\"account-service/user-leave\"],\n extensions: [\"HrManagement\"],\n },\n {\n slug: \"change-password\",\n endpoints: [\"account-service/change-password\"],\n },\n {\n slug: \"logout\",\n },\n ],\n operations: [\n {\n slug: \"dashboard\",\n endpoints: [\n \"order-service/stats\",\n \"order-service/order-count\",\n \"customer-service/stats\",\n ],\n },\n // {\n // slug: 'customers',\n // endpoints: [\n // 'customer-service/customer'\n // ]\n // },\n {\n slug: \"orders\",\n endpoints: [\"order-service/order\", \"account-service/config\"],\n },\n {\n slug: \"disputes\",\n endpoints: [\"order-service/order/x/dispute\"],\n extensions: [\"OrderDisputes\"],\n },\n {\n slug: \"returns\",\n endpoints: [\"order-service/order/x/returns\"],\n extensions: [\"OrderDisputes\"], // TODO: Change this later\n },\n {\n slug: \"picking-queue\",\n endpoints: [\"order-service/picking-queue\"],\n extensions: [\"InStoreProcessing\"],\n },\n {\n slug: \"store-slot-config\",\n endpoints: [\n // 'order-service/store-slot-rule',\n \"account-service/extension\",\n \"order-service/store\",\n ],\n extensions: [\"DeliverySlots\"],\n },\n {\n slug: \"rack-management\",\n endpoints: [\"order-service/picking-sequence\"],\n extensions: [\"InStoreProcessing\"],\n },\n {\n slug: \"pickers\",\n endpoints: [\n \"account-service/employee\",\n \"account-service/designation\",\n \"account-service/role\",\n ],\n extensions: [\"InStoreProcessing\"],\n },\n {\n slug: \"capacity-planning\",\n endpoints: [\"logistics-service/zone-capacity\", \"order-service/slot\"],\n extensions: [\"CapacityPlanning\"],\n },\n {\n slug: \"slot-charges\",\n endpoints: [\"order-service/slot-charge\", \"order-service/slot\"],\n extensions: [\"DeliverySlots\", \"SlotCharges\"],\n },\n {\n slug: `click-collect-orders?preferredDate=${moment().format(\n \"YYYY-MM-DD\"\n )}&orderType=PICKUP`,\n endpoints: [\"order-service/order\"],\n },\n ],\n catalogue: this.getCatalogueMenu(),\n logistics: [\n {\n slug: \"vehicles\",\n endpoints: [\"logistics-service/vehicle\"],\n extensions: [\"LogisticsSupport\"],\n },\n {\n slug: \"vehicle-planning\",\n endpoints: [\n \"logistics-service/vehicle-planner\",\n \"logistics-service/vehicle-attendance\",\n \"logistics-service/vehicle\",\n ],\n extensions: [\"LogisticsSupport\"],\n },\n {\n slug: \"trips\",\n endpoints: [\"logistics-service/trip\", \"account-service/config\"],\n extensions: [\"LogisticsSupport\"],\n },\n {\n slug: \"trip-planner\",\n endpoints: [\n \"logistics-service/automation\",\n \"logistics-service/delivery-area\",\n \"logistics-service/trip\",\n ],\n extensions: [\"LogisticsSupport\"],\n },\n {\n slug: \"manage-runners\",\n endpoints: [\"account-service/employee\", \"account-service/role\"],\n extensions: [\"LogisticsSupport\"],\n },\n ],\n sellers: [\n {\n slug: \"seller\",\n endpoints: [\"account-service/seller\"],\n extensions: [\"MarketPlace\"],\n },\n {\n slug: \"user\",\n endpoints: [\"account-service/employee\"],\n extensions: [\"MarketPlace\"],\n },\n ],\n hr: [\n {\n slug: \"employees\",\n endpoints: [\n \"account-service/employee\",\n \"account-service/designation\",\n ],\n extensions: [\"HrManagement\"],\n },\n {\n slug: \"designations\",\n endpoints: [\"account-service/designation\"],\n extensions: [\"HrManagement\"],\n },\n {\n slug: \"attendance-summary\",\n endpoints: [\n \"account-service/attendance-summary\",\n \"account-service/employee\",\n ],\n extensions: [\"HrManagement\"],\n },\n ],\n marketing: [\n {\n slug: \"pages\",\n endpoints: [\"account-service/static-page\"],\n extensions: [\"Marketing\"],\n },\n {\n slug: \"blog\",\n endpoints: [\"blog-service/blog\"],\n extensions: [\"Marketing\"],\n },\n {\n slug: \"recipe\",\n endpoints: [\"recipe-service/recipe\"],\n extensions: [\"RecipePageGenerator\"],\n },\n {\n slug: \"influencer\",\n endpoints: [\"recipe-service/influencer\"],\n extensions: [\"RecipePageGenerator\"],\n },\n {\n slug: \"coupons\",\n endpoints: [\"promo-service/coupon\"],\n extensions: [\"Marketing\"],\n },\n {\n slug: \"campaigns\",\n endpoints: [\"promo-service/campaign\"],\n extensions: [\"Campaigns\"],\n },\n {\n slug: \"offers\",\n endpoints: [\"offer-service/offer\"],\n extensions: [\"Marketing\"],\n },\n {\n slug: \"web-banners\",\n endpoints: [\"promo-service/banner\"],\n extensions: [\"Marketing\"],\n },\n {\n slug: \"rating-reviews\",\n endpoints: [\n \"catalogue-service/product-rating\",\n \"order-service/order-rating\",\n ],\n extensions: [\"ProductRatings\"],\n },\n ],\n analytics: [\n {\n slug: \"orders-analytics\",\n endpoints: [\"analytics-service/metrics\"],\n extensions: [\"ReportsAndAnalytics\"],\n },\n {\n slug: \"reports\",\n endpoints: [\"report-service/reports\"],\n extensions: [\"ReportsAndAnalytics\"],\n },\n ],\n \"customer-support\": [\n {\n slug: \"dashboard\",\n endpoints: [\n \"customer-service/phone\",\n \"customer-service/email\",\n \"customer-service/customer\",\n \"order-service/slot\",\n \"order-service/order\",\n \"account-service/config\",\n ],\n extensions: [\"CustomerSupport\"],\n },\n {\n slug: \"customers\",\n endpoints: [\"customer-service/customer\"],\n extensions: [\"CustomerSupport\"],\n },\n {\n slug: \"orders\",\n endpoints: [\n \"order-service/order\",\n \"order-service/slot\",\n \"account-service/config\",\n \"customer-service/customer\",\n ],\n extensions: [\"CustomerSupport\"],\n },\n ],\n settings: [\n {\n slug: \"basic-information\",\n endpoints: [\"account-service/config\"],\n },\n {\n slug: \"contact-details\",\n endpoints: [\"account-service/config\"],\n },\n {\n slug: \"themes\",\n endpoints: [\"account-service/page\", \"account-service/theme\"],\n },\n {\n slug: \"extensions\",\n endpoints: [\"account-service/extension\"],\n },\n {\n slug: \"mobile-apps\",\n endpoints: [\"account-service/config\"],\n extensions: [\"MobileApps\"],\n },\n {\n slug: \"notifications\",\n },\n {\n slug: \"communication-configuration\",\n endpoints: [\"config-service/config\"],\n },\n {\n slug: \"order-config\",\n },\n {\n slug: \"integration-settings\",\n },\n {\n slug: \"order-package-config\",\n endpoints: [\"order-service/package\"],\n },\n {\n slug: \"courier-support\",\n },\n {\n slug: \"referral-management\",\n extensions: [\"ReferralManagement\"],\n },\n {\n slug: \"google-merchant-center\",\n extensions: [\"GoogleMerchantCenter\"],\n },\n {\n slug: \"product-variant-support\",\n extensions: [\"MultiVariantSupport\"],\n },\n {\n slug: \"product-restrictions\",\n extensions: [\"ProductRestrictions\"],\n },\n {\n slug: \"user-activity-logs\",\n extensions: [\"UserLogs\"],\n },\n ],\n };\n\n if (isEnterprise()) {\n requiredPermissions.settings = modifyEnterprisePermissions();\n }\n\n const getPagePermissions = function (url) {\n let path = url.split(\"/\").filter(Boolean);\n let permissions = requiredPermissions[path[0]].find(\n (obj) => obj.slug === path[1]\n );\n return (({ endpoints, extensions }) => ({ endpoints, extensions }))(\n permissions\n );\n };\n\n let menu = Object.assign(\n {},\n ...Object.keys(requiredPermissions).map((key) => {\n let permissions = requiredPermissions[key];\n return {\n [key]: permissions.filter(hasAccess).map(({ slug }) => slug),\n };\n })\n );\n\n // Prune menu sections which have no links in them\n for (let section in menu) {\n if (!menu[section].length) {\n delete menu[section];\n }\n }\n\n const isLoggedIn = props.isLoggedIn;\n\n const getUserDetails = () => {\n let userAPI = new API({ url: \"/account-service/user\" });\n return userAPI\n .get()\n .then((response) => {\n return response.data.user[0];\n })\n .then(({ id }) => {\n let user = new API({ url: `/account-service/user/${id}` });\n return user.get();\n })\n .catch((error) => {\n console.error(error);\n });\n };\n const getBackOfficeAPIDetails = () => {\n let backOfficeApi = new API({ url: \"/config-service/config/backOffice\" });\n return backOfficeApi.get();\n };\n\n const getOrganizationDetails = (organizationId) => {\n const organizationAPI = new API({\n url: `/account-service/organization/${organizationId}`,\n });\n return organizationAPI.get();\n };\n\n const PrivateRoute = ({ component: Component, isLazy, ...rest }) => {\n let endpoints = [];\n let extensions = [];\n let hasPageAccess = true;\n let location = new URL(JSON.parse(JSON.stringify(window.location)).href);\n let redirectedFrom = location.searchParams.get(\"redirectedFrom\");\n let organizationId = location.searchParams.get(\"organizationId\");\n redirectedFrom && set(\"redirectedFrom\", redirectedFrom);\n if (location.searchParams.get(\"guid\") && this.state.refresh) {\n if (isInternal()) {\n Promise.all([\n getUserDetails(),\n getOrganizationDetails(organizationId),\n getBackOfficeAPIDetails(),\n ])\n .then(\n ([userResponse, organizaitonResponse, backOfficeResponse]) => {\n let user = userResponse.data.user;\n let key =\n backOfficeResponse.data &&\n backOfficeResponse.data.backOffice &&\n backOfficeResponse.data.backOffice.googleMapsApiKey;\n set(\"googleMapsApiKey\", key || GOOGLE_MAP_DEFAULT_KEY);\n saveSession({\n user: user,\n organization: organizaitonResponse.data.organization,\n });\n this.setState({\n refresh: false,\n });\n }\n )\n .catch((error) => {\n console.error(error);\n });\n } else {\n const api = new API({ url: \"/account-service/me\" });\n const extnApi = new API({ url: \"/account-service/extension\" });\n Promise.all([api.get(), extnApi.get()])\n .then(\n ([response, extnResponse]) => {\n saveSession({\n user: response.data.user,\n organization: {\n extension: extnResponse.data.extension,\n currency: { symbol: \"\" },\n },\n });\n this.setState({\n refresh: false,\n });\n },\n (error) => {\n throw error;\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n }\n let hasPermissionsInfo = Boolean(getPermissions());\n let redirectToLogin = !isLoggedIn || !hasPermissionsInfo;\n if (location.searchParams.get(\"guid\") && hasPermissionsInfo) {\n redirectToLogin = false;\n }\n if (endpoints.length || extensions.length) {\n let temp = getPagePermissions(rest.path);\n endpoints = temp.endpoints;\n extensions = temp.extensions;\n hasPageAccess = hasAccess({ endpoints, extensions });\n }\n if (isEnterprise()) {\n menu = modifyMenuForEnterprise(menu);\n }\n if (get(\"user\") && JSON.parse(get(\"user\"))) {\n let user = JSON.parse(get(\"user\"));\n if (!user.isOwner) {\n delete menu.settings;\n }\n let roles =\n user.designation && user.designation.roles && user.designation.roles;\n if (roles && roles.length === 1) {\n let role = roles[0];\n if (role.name === \"Transport Coordinator\") {\n delete menu.hr;\n }\n if (role.name === \"COMPLETE ORDER\") {\n delete menu[\"customer-support\"];\n }\n }\n }\n return (\n !this.state.refresh && (\n \n !redirectToLogin ? (\n hasPageAccess ? (\n isLazy ? (\n \n ) : (\n {\n // TODO: Provide a better way to figure out how to re-render when permissions change,\n // perhaps by maintaining a state which contains permissions\n this.setState({});\n }}\n />\n )\n ) : (\n \n )\n ) : (\n \n )\n }\n />\n )\n );\n };\n const submenuRedirect = (mainMenuItem, submenu) => {\n let url = mainMenuItem;\n let sub = menu[mainMenuItem]\n ? menu[mainMenuItem].indexOf(submenu) > -1\n ? submenu\n : menu[mainMenuItem][0]\n : submenu;\n return `/${url}/${sub}`;\n };\n\n const getFirstRoute = (menuList = {}) => {\n let newMenuList = { ...menuList };\n delete newMenuList.user;\n const routeValue = `/${Object.keys(newMenuList)?.[0]}`;\n return isEmpty(newMenuList) ? \"/operations/dashboard\" : routeValue;\n };\n\n const user = JSON.parse(get(\"user\"));\n const role =\n user &&\n user.designation &&\n user.designation.roles &&\n user.designation.roles[0]\n ? user.designation.roles[0]\n : {};\n let roleObject = roleMapping.find((mapping) => mapping.name === role.name);\n let roleRedirect = roleObject ? roleObject.redirect : null;\n const { organization } = getSession();\n roleRedirect =\n !organization?.industry && !isEnterprise()\n ? \"/onboarding\"\n : roleRedirect || getFirstRoute(menu);\n\n const isMarketOwner = isMarketPlaceOwner();\n\n return (\n \n {/* Default second level menu option for each top level menu */}\n \n \n {\n \n }\n \n \n \n {!isEnterprise() && (\n \n )}\n {isEnterprise() && (\n \n )}\n \n \n \n \n {\" \"}\n {/* Becoz bulk coupons dont have listing */}\n \n \n {isExtensionEnabled(\"InStoreProcessing\") && (\n \n )}\n {isExtensionEnabled(\"TawkToLiveChat\") && (\n \n )}\n {isExtensionEnabled(\"EntityMetaData\") && (\n \n )}\n \n \n \n \n \n \n {/* For each route, we should have exactly one component */}\n \n \n \n \n \n \n \n {isMarketOwner && (\n \n )}\n {isMarketOwner && (\n \n )}\n \n \n \n \n {/* */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {/* */}\n \n \n \n \n \n \n {isExtensionEnabled(\"Marketing\") && (\n \n )}\n {isExtensionEnabled(\"Marketing\") && (\n \n )}\n {isExtensionEnabled(\"Marketing\") && (\n \n )}\n {isExtensionEnabled(\"Marketing\") && (\n \n )}\n \n {isExtensionEnabled(\"Marketing\") && (\n \n )}\n {isExtensionEnabled(\"Marketing\") && (\n \n )}\n {isExtensionEnabled(\"Marketing\") && (\n \n )}\n {isExtensionEnabled(\"Marketing\") && (\n \n )}\n {isExtensionEnabled(\"Marketing\") && (\n \n )}\n {isExtensionEnabled(\"Marketing\") && (\n \n )}\n {isExtensionEnabled(\"ProductRatings\") && (\n \n )}\n {isExtensionEnabled(\"GoogleMerchantCenter\") && (\n \n )}\n \n \n \n \n \n \n \n {!isEnterprise() && (\n \n )}\n {!isEnterprise() && (\n \n )}\n {!isEnterprise() && (\n \n )}\n \n {!isEnterprise() && (\n \n )}\n \n \n \n \n {isExtensionEnabled(\"ReferralManagement\") && (\n \n )}\n {!isEnterprise() && (\n \n )}\n \n {!isEnterprise() && (\n \n )}\n {!isEnterprise() && (\n \n )}\n {\n \n }\n \n \n \n {isExtensionEnabled(\"StockOverride\") && (\n \n )}\n {}\n \n {isExtensionEnabled(\"MultipleAndPartialOrderPicking\") && (\n \n )}\n {isExtensionEnabled(\"SearchOverride\") && (\n \n )}\n {isExtensionEnabled(\"ProductRestrictions\") && (\n \n )}\n {isExtensionEnabled(\"Wallet\") && (\n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n","import { auto } from \"browser-unhandled-rejection\";\n\nauto();\n\n// https://github.com/uxitten/polyfill/blob/master/string.polyfill.js\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart\nconst StringConstruct = String;\nif (!StringConstruct.prototype.padStart) {\n StringConstruct.prototype.padStart = function padStart(\n targetLength,\n padString\n ) {\n targetLength = targetLength >> 0; // truncate if number or convert non-number to 0;\n padString = String(typeof padString !== \"undefined\" ? padString : \" \");\n if (this.length > targetLength) {\n return String(this);\n } else {\n targetLength = targetLength - this.length;\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length); // append to original to ensure we are longer than needed\n }\n return padString.slice(0, targetLength) + String(this);\n }\n };\n}\n","export function messageHandler(event) {\n // add a check here to allow only certain origins\n if (event.data === \"ZOPSMART_INTENAL_DASHBOARD_CLEAR_COOKIE\") {\n window.localStorage.clear();\n event.source.postMessage(\"message\", event.origin);\n }\n}\n","import \"sanitize.css/sanitize.css\";\nimport React, { Component } from \"react\";\nimport Router from \"./router\";\nimport { getLocale, setLocale } from \"../../lib/translator\";\nimport { isLoggedIn, saveSession } from \"../../lib/auth\";\nimport ErrorBoundary from \"../../components/ErrorBoundary\";\nimport ReactGA from \"react-ga\";\nimport \"../../lib/polyfills\";\nimport API from \"../../lib/api\";\nimport \"./app.css\";\nimport \"./css.js\";\nimport { messageHandler } from \"../../lib/internalDashboard/internalDashboard\";\nimport { FaroErrorBoundary, withFaroProfiler } from \"@grafana/faro-react\";\n\nReactGA.initialize(\"UA-108420673-2\");\nclass App extends Component {\n componentDidMount() {\n if (window) {\n // for handling communication with internal-dashboard to handle certain actions\n window.onload = function () {\n window.addEventListener(\"message\", messageHandler);\n };\n }\n\n // fetch permissions wnenever app loads for logged in users, so that stale permission data from localstorage is not used when the user refreshes the page\n if (window.localStorage.getItem(\"permissions\")) {\n const api = new API({ url: \"/account-service/me\" });\n api\n .get()\n .then(\n (response) => {\n saveSession({\n user: response.data.user,\n });\n },\n () => {\n // ignore this error\n }\n )\n .catch((error) => {\n console.error(error);\n });\n }\n import(\"../../initialize\").then(({ initializeFaro }) => {\n initializeFaro();\n });\n }\n componentWillUnmount() {\n if (window) {\n window.removeEventListener(\"message\", messageHandler);\n }\n }\n render() {\n if (window.location.hostname !== \"localhost\") {\n ReactGA.pageview(window.location.pathname + window.location.search); // TODO: Move this to router if possible\n }\n let locale = getLocale();\n if (!locale.language) {\n locale.language = \"en\";\n }\n setLocale(locale);\n return (\n \n \n \n \n \n );\n }\n}\nexport default withFaroProfiler(App);\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport App from \"./containers/App/App\";\n// import { unregister } from './registerServiceWorker'\nimport { BrowserRouter as Router } from \"react-router-dom\";\nimport \"react-app-polyfill/ie9\";\n\nReactDOM.render(\n \n \n ,\n document.getElementById(\"root\")\n);\n// registerServiceWorker() // TODO: Implement service worker to enable offline experience\n// unregister()\n"],"sourceRoot":""}