Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
effa461
Update onboarding page with new integration choices
abzokhattab Apr 18, 2025
20fa8d7
Merge remote-tracking branch 'origin/main' into update-onboarding-int…
abzokhattab Apr 18, 2025
8b2d0ae
Refactoring
abzokhattab Apr 19, 2025
90ddcea
refactoring
abzokhattab Apr 19, 2025
fb3dd8f
Merge remote-tracking branch 'origin/main' into update-onboarding-int…
abzokhattab Apr 24, 2025
aa912f5
Changing SelectionList to FlatList inside the BaseOnboardingAccounting
abzokhattab Apr 27, 2025
887c261
Merge remote-tracking branch 'origin/main' into update-onboarding-int…
abzokhattab Apr 27, 2025
7300f7f
Merge remote-tracking branch 'origin/main' into update-onboarding-int…
abzokhattab May 4, 2025
6f6c389
adding new integeration icons and changing radiobutton to use reverse…
abzokhattab May 4, 2025
c33ecc2
changing others icon
abzokhattab May 6, 2025
1e017f2
refactroing the onboarding accounting component to fix the continue b…
abzokhattab May 7, 2025
b3725af
Merge remote-tracking branch 'origin/main' into update-onboarding-int…
abzokhattab May 7, 2025
ef20f0f
cleanup
abzokhattab May 7, 2025
3a66e7c
cleanup
abzokhattab May 7, 2025
cabab55
cleaning
abzokhattab May 7, 2025
0e1e77f
creating a seperate width for feature training modals
abzokhattab May 7, 2025
7267149
changing contentContainerStyle of scrollview to style
abzokhattab May 7, 2025
f992104
adding styles.onboardingSmallIcon to none option
abzokhattab May 11, 2025
766ec8d
fixing ts errors
abzokhattab May 11, 2025
92950b4
Fixing es translation for other
abzokhattab May 11, 2025
34d44e5
fixing eslint errs
abzokhattab May 11, 2025
ab643e3
Merge remote-tracking branch 'origin/main' into update-onboarding-int…
abzokhattab May 11, 2025
974f05b
Fixing ts errs
abzokhattab May 11, 2025
0fe32dc
fixing the last item cut off on android
abzokhattab May 11, 2025
5704143
wrapping options with PressableWithoutFeedback
abzokhattab May 11, 2025
815175b
fix(RadioButtonWithLabel): switch label type from Component to ReactN…
abzokhattab May 11, 2025
eb410d5
Fixing the location of openOldDotLink in the handleContinue function
abzokhattab May 11, 2025
f3f4410
refactor openOldDotLink conditions
abzokhattab May 11, 2025
8003d86
Fix onboarding redirect condition for platform and company size
abzokhattab May 13, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions assets/images/integrationicons/circle-slash.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
17 changes: 17 additions & 0 deletions assets/images/integrationicons/oracle-icon-square.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
22 changes: 22 additions & 0 deletions assets/images/integrationicons/sap-icon-square.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 9 additions & 1 deletion src/CONST.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,10 @@ const ONBOARDING_ACCOUNTING_MAPPING = {
netsuite: 'NetSuite',
intacct: 'Sage Intacct',
quickbooksDesktop: 'QuickBooks Desktop',
sap: 'SAP',
oracle: 'Oracle',
microsoftDynamics: 'Microsoft Dynamics',
other: 'Other',
};

const connectionsVideoPaths = {
Expand Down Expand Up @@ -273,7 +277,7 @@ type OnboardingPurpose = ValueOf<typeof onboardingChoices>;

type OnboardingCompanySize = ValueOf<typeof onboardingCompanySize>;

type OnboardingAccounting = ValueOf<typeof CONST.POLICY.CONNECTIONS.NAME> | null;
type OnboardingAccounting = keyof typeof CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY | null;

const onboardingInviteTypes = {
IOU: 'iou',
Expand Down Expand Up @@ -3005,6 +3009,10 @@ const CONST = {
financialForce: 'FinancialForce',
billCom: 'Bill.com',
zenefits: 'Zenefits',
sap: 'SAP',
oracle: 'Oracle',
microsoftDynamics: 'Microsoft Dynamics',
other: 'Other',
},
AUTH_HELP_LINKS: {
intacct:
Expand Down
2 changes: 1 addition & 1 deletion src/components/FeatureTrainingModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ function FeatureTrainingModal({
illustrationAspectRatio: illustrationAspectRatioProp,
image,
contentFitImage,
width = variables.onboardingModalWidth,
width = variables.featureTrainingModalWidth,
title = '',
description = '',
secondaryDescription = '',
Expand Down
8 changes: 8 additions & 0 deletions src/components/Icon/Expensicons.ts
Original file line number Diff line number Diff line change
Expand Up @@ -118,11 +118,15 @@ import ImageCropCircleMask from '@assets/images/image-crop-circle-mask.svg';
import ImageCropSquareMask from '@assets/images/image-crop-square-mask.svg';
import Inbox from '@assets/images/inbox.svg';
import Info from '@assets/images/info.svg';
import CircleSlash from '@assets/images/integrationicons/circle-slash.svg';
import MicrosoftDynamicsSquare from '@assets/images/integrationicons/microsoft-dynamics-icon-square.svg';
import NetSuiteSquare from '@assets/images/integrationicons/netsuite-icon-square.svg';
import OracleSquare from '@assets/images/integrationicons/oracle-icon-square.svg';
import QBDSquare from '@assets/images/integrationicons/qbd-icon-square.svg';
import QBOCircle from '@assets/images/integrationicons/qbo-icon-circle.svg';
import QBOSquare from '@assets/images/integrationicons/qbo-icon-square.svg';
import SageIntacctSquare from '@assets/images/integrationicons/sage-intacct-icon-square.svg';
import SapSquare from '@assets/images/integrationicons/sap-icon-square.svg';
import XeroCircle from '@assets/images/integrationicons/xero-icon-circle.svg';
import XeroSquare from '@assets/images/integrationicons/xero-icon-square.svg';
import InvoiceGeneric from '@assets/images/invoice-generic.svg';
Expand Down Expand Up @@ -274,6 +278,7 @@ export {
CreditCard,
CreditCardHourglass,
CreditCardExclamation,
CircleSlash,
DeletedRoomAvatar,
Document,
DocumentSlash,
Expand Down Expand Up @@ -423,6 +428,9 @@ export {
NetSuiteSquare,
XeroCircle,
QBOCircle,
MicrosoftDynamicsSquare,
OracleSquare,
SapSquare,
Filters,
CalendarSolid,
Filter,
Expand Down
21 changes: 12 additions & 9 deletions src/components/RadioButtonWithLabel.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type {ComponentType} from 'react';
import type {ReactNode} from 'react';
import React from 'react';
import type {StyleProp, ViewStyle} from 'react-native';
import {View} from 'react-native';
Expand All @@ -21,24 +21,27 @@ type RadioButtonWithLabelProps = {
/** Text that appears next to check box */
label?: string;

/** Component to display for label */
LabelComponent?: ComponentType;
/** React element to display for the label */
labelElement?: ReactNode;

/** Should the input be styled for errors */
/** Should the input be styled for errors */
hasError?: boolean;

/** Error text to display */
errorText?: string;

/** Additional styles to apply to the wrapper */
wrapperStyle?: StyleProp<ViewStyle>;
};

const PressableWithFeedback = Pressables.PressableWithFeedback;

function RadioButtonWithLabel({LabelComponent, style, label = '', hasError = false, errorText = '', isChecked, onPress}: RadioButtonWithLabelProps) {
function RadioButtonWithLabel({labelElement, style, label = '', hasError = false, errorText = '', isChecked, onPress, wrapperStyle}: RadioButtonWithLabelProps) {
const styles = useThemeStyles();
const defaultStyles = [styles.flexRow, styles.alignItemsCenter];

if (!label && !LabelComponent) {
throw new Error('Must provide at least label or LabelComponent prop');
if (!label && !labelElement) {
throw new Error('Must provide at least label or labelComponent prop');
}
return (
<>
Expand All @@ -54,13 +57,13 @@ function RadioButtonWithLabel({LabelComponent, style, label = '', hasError = fal
accessible={false}
onPress={onPress}
style={[styles.flexRow, styles.flexWrap, styles.flexShrink1, styles.alignItemsCenter]}
wrapperStyle={[styles.flex1, styles.ml3, styles.pr2]}
wrapperStyle={[styles.flex1, styles.ml3, styles.pr2, wrapperStyle]}
// disable hover style when disabled
hoverDimmingValue={0.8}
pressDimmingValue={0.5}
>
{!!label && <Text style={[styles.ml1]}>{label}</Text>}
{!!LabelComponent && <LabelComponent />}
{!!labelElement && labelElement}
</PressableWithFeedback>
</View>
<FormHelpMessage message={errorText} />
Expand Down
7 changes: 5 additions & 2 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2039,7 +2039,7 @@ const translations = {
},
accounting: {
title: 'Do you use any accounting software?',
noneOfAbove: 'None of the above',
none: 'None',
},
error: {
requiredFirstName: 'Please input your first name to continue',
Expand Down Expand Up @@ -4337,6 +4337,9 @@ const translations = {
xero: 'Xero',
netsuite: 'NetSuite',
intacct: 'Sage Intacct',
sap: 'SAP',
oracle: 'Oracle',
microsoftDynamics: 'Microsoft Dynamics',
talkYourOnboardingSpecialist: 'Chat with your setup specialist.',
talkYourAccountManager: 'Chat with your account manager.',
talkToConcierge: 'Chat with Concierge.',
Expand Down Expand Up @@ -4365,7 +4368,7 @@ const translations = {
import: 'Import',
export: 'Export',
advanced: 'Advanced',
other: 'Other integrations',
other: 'Other',
syncNow: 'Sync now',
disconnect: 'Disconnect',
reinstall: 'Reinstall connector',
Expand Down
7 changes: 5 additions & 2 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2043,7 +2043,7 @@ const translations = {
},
accounting: {
title: '¿Utilizas algún software de contabilidad?',
noneOfAbove: 'Ninguno de los anteriores',
none: 'Ninguno',
},
error: {
requiredFirstName: 'Introduce tu nombre para continuar',
Expand Down Expand Up @@ -4348,6 +4348,9 @@ const translations = {
xero: 'Xero',
netsuite: 'NetSuite',
intacct: 'Sage Intacct',
sap: 'SAP',
oracle: 'Oracle',
microsoftDynamics: 'Microsoft Dynamics',
talkYourOnboardingSpecialist: 'Chatea con tu especialista asignado.',
talkYourAccountManager: 'Chatea con tu gestor de cuenta.',
talkToConcierge: 'Chatear con Concierge.',
Expand Down Expand Up @@ -4376,7 +4379,7 @@ const translations = {
import: 'Importar',
export: 'Exportar',
advanced: 'Avanzado',
other: 'Otras integraciones',
other: 'Otro',
syncNow: 'Sincronizar ahora',
disconnect: 'Desconectar',
reinstall: 'Reinstalar el conector',
Expand Down
4 changes: 2 additions & 2 deletions src/libs/ReportUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9687,7 +9687,7 @@ function prepareOnboardingOnyxData(
return;
}

const integrationName = userReportedIntegration ? CONST.ONBOARDING_ACCOUNTING_MAPPING[userReportedIntegration] : '';
const integrationName = userReportedIntegration ? CONST.ONBOARDING_ACCOUNTING_MAPPING[userReportedIntegration as keyof typeof CONST.ONBOARDING_ACCOUNTING_MAPPING] : '';
const assignedGuideEmail = getPolicy(targetChatPolicyID)?.assignedGuide?.email ?? 'Setup Specialist';
const assignedGuidePersonalDetail = Object.values(allPersonalDetails ?? {}).find((personalDetail) => personalDetail?.login === assignedGuideEmail);
let assignedGuideAccountID: number;
Expand Down Expand Up @@ -10076,7 +10076,7 @@ function prepareOnboardingOnyxData(
key: `${ONYXKEYS.COLLECTION.POLICY}${onboardingPolicyID}`,
value: {
areConnectionsEnabled: true,
...(requiresControlPlan.includes(userReportedIntegration)
...(requiresControlPlan.includes(userReportedIntegration as AllConnectionName)
? {
type: CONST.POLICY.TYPE.CORPORATE,
}
Expand Down
Loading