diff --git a/.gitignore b/.gitignore
index 4919ddc1fdc9..0e452abecf05 100644
--- a/.gitignore
+++ b/.gitignore
@@ -84,6 +84,7 @@ storybook-static
# GitHub GPG Keys
.github/workflows/OSBotify-private-key.asc
+.gitconfig
*.asc
# Jest coverage report
diff --git a/src/CONST.js b/src/CONST.js
index 619a28cc9f0e..fa8d1d651688 100755
--- a/src/CONST.js
+++ b/src/CONST.js
@@ -278,8 +278,8 @@ const CONST = {
},
type: KEYBOARD_SHORTCUT_NAVIGATION_TYPE,
},
- NEW_GROUP: {
- descriptionKey: 'newGroup',
+ NEW_CHAT: {
+ descriptionKey: 'newChat',
shortcutKey: 'K',
modifiers: ['CTRL', 'SHIFT'],
trigger: {
@@ -2528,6 +2528,9 @@ const CONST = {
RECEIPT_TAB_ID: 'ReceiptTab',
MANUAL: 'manual',
SCAN: 'scan',
+ NEW_CHAT_TAB_ID: 'NewChatTab',
+ NEW_CHAT: 'chat',
+ NEW_ROOM: 'room',
DISTANCE: 'distance',
},
STATUS_TEXT_MAX_LENGTH: 100,
diff --git a/src/ROUTES.js b/src/ROUTES.js
index 90d08e5b13c8..daa1532b74f4 100644
--- a/src/ROUTES.js
+++ b/src/ROUTES.js
@@ -7,7 +7,6 @@ import * as Url from './libs/Url';
const REPORT = 'r';
const IOU_REQUEST = 'request/new';
-const IOU_BILL = 'split/new';
const IOU_SEND = 'send/new';
const NEW_TASK = 'new/task';
const SETTINGS_PERSONAL_DETAILS = 'settings/profile/personal-details';
@@ -65,8 +64,9 @@ export default {
SETTINGS_2FA_SUCCESS: 'settings/security/two-factor-auth/success',
SETTINGS_STATUS,
SETTINGS_STATUS_SET,
- NEW_GROUP: 'new/group',
+ NEW: 'new',
NEW_CHAT: 'new/chat',
+ NEW_ROOM: 'new/room',
NEW_TASK,
REPORT,
REPORT_WITH_ID: 'r/:reportID?',
@@ -82,7 +82,6 @@ export default {
CONCIERGE: 'concierge',
IOU_REQUEST,
- IOU_BILL,
IOU_SEND,
// To see the available iouType, please refer to CONST.IOU.MONEY_REQUEST_TYPE
@@ -163,7 +162,6 @@ export default {
WORKSPACE_INVOICES: 'workspace/:policyID/invoices',
WORKSPACE_TRAVEL: 'workspace/:policyID/travel',
WORKSPACE_MEMBERS: 'workspace/:policyID/members',
- WORKSPACE_NEW_ROOM: 'workspace/new-room',
getWorkspaceInitialRoute: (policyID) => `workspace/${policyID}`,
getWorkspaceInviteRoute: (policyID) => `workspace/${policyID}/invite`,
getWorkspaceInviteMessageRoute: (policyID) => `workspace/${policyID}/invite-message`,
diff --git a/src/components/OptionRow.js b/src/components/OptionRow.js
index adaa4457bbd9..e525325aef0a 100644
--- a/src/components/OptionRow.js
+++ b/src/components/OptionRow.js
@@ -6,6 +6,7 @@ import {View, StyleSheet, InteractionManager} from 'react-native';
import styles from '../styles/styles';
import * as StyleUtils from '../styles/StyleUtils';
import optionPropTypes from './optionPropTypes';
+import Button from './Button';
import Icon from './Icon';
import * as Expensicons from './Icon/Expensicons';
import MultipleAvatars from './MultipleAvatars';
@@ -39,6 +40,15 @@ const propTypes = {
/** Whether we should show the selected state */
showSelectedState: PropTypes.bool,
+ /** Whether to show a button pill instead of a tickbox */
+ shouldShowSelectedStateAsButton: PropTypes.bool,
+
+ /** Text for button pill */
+ selectedStateButtonText: PropTypes.string,
+
+ /** Callback to fire when the multiple selector (tickbox or button) is clicked */
+ onSelectedStatePressed: PropTypes.func,
+
/** Whether this item is selected */
isSelected: PropTypes.bool,
@@ -65,6 +75,9 @@ const propTypes = {
const defaultProps = {
hoverStyle: styles.sidebarLinkHover,
showSelectedState: false,
+ shouldShowSelectedStateAsButton: false,
+ selectedStateButtonText: 'Select',
+ onSelectedStatePressed: undefined,
isSelected: false,
boldStyle: false,
showTitleTooltip: false,
@@ -248,7 +261,21 @@ class OptionRow extends Component {
/>
)}
- {this.props.showSelectedState && }
+ {this.props.showSelectedState && (
+ <>
+ {this.props.shouldShowSelectedStateAsButton && !this.props.isSelected ? (
+