{"version":3,"file":"js/5507-fa5c70e85c4726264515.js","mappings":"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","sources":["webpack://bizzey/./app/javascript/src/ERoute.tsx","webpack://bizzey/./app/javascript/src/components/ActionList/ActionList.tsx","webpack://bizzey/./app/javascript/src/components/Button/ButtonPanel.tsx","webpack://bizzey/./app/javascript/src/components/Card/Card.tsx","webpack://bizzey/./app/javascript/src/components/Card/CardEmptyInfo.tsx","webpack://bizzey/./app/javascript/src/components/Checkbox/FilterCheckbox.tsx","webpack://bizzey/./app/javascript/src/components/Form/CheckboxInput.tsx","webpack://bizzey/./app/javascript/src/components/Form/ReactSelectTheme.tsx","webpack://bizzey/./app/javascript/src/components/Form/ResourceCreatablePowerSelect.tsx","webpack://bizzey/./app/javascript/src/components/Modals/Parts/ModalLoader.tsx","webpack://bizzey/./app/javascript/src/components/Page/PageLoader.tsx","webpack://bizzey/./app/javascript/src/components/Pagination/Pagination.tsx","webpack://bizzey/./app/javascript/src/components/Popover/Popover.tsx","webpack://bizzey/./app/javascript/src/components/Powerselect/ContactEmailIndicatorSelectComponents.tsx","webpack://bizzey/./app/javascript/src/components/Powerselect/ContactSelectComponents.tsx","webpack://bizzey/./app/javascript/src/components/Powerselect/DocumentTagSelectComponents.tsx","webpack://bizzey/./app/javascript/src/components/Powerselect/Parts/IndicatorContainer.tsx","webpack://bizzey/./app/javascript/src/components/Powerselect/Parts/MultiValueContainer.tsx","webpack://bizzey/./app/javascript/src/components/Powerselect/Parts/OptionContainer.tsx","webpack://bizzey/./app/javascript/src/components/Powerselect/Parts/ValueAction.tsx","webpack://bizzey/./app/javascript/src/components/Powerselect/Parts/ValueActions.tsx","webpack://bizzey/./app/javascript/src/components/Powerselect/Parts/ValueContainer.tsx","webpack://bizzey/./app/javascript/src/components/Powerselect/ResourceSelectComponents.tsx","webpack://bizzey/./app/javascript/src/components/Resource/ResourceCheckbox.tsx","webpack://bizzey/./app/javascript/src/components/Resource/ResourceFilter.tsx","webpack://bizzey/./app/javascript/src/components/Resource/ResourceFilterInput.tsx","webpack://bizzey/./app/javascript/src/components/Resource/ResourceFooter.tsx","webpack://bizzey/./app/javascript/src/components/Resource/ResourceHeader.tsx","webpack://bizzey/./app/javascript/src/components/Resource/ResourceSpinner.tsx","webpack://bizzey/./app/javascript/src/components/Resource/ResourceTable.tsx","webpack://bizzey/./app/javascript/src/components/Resource/ResourceTableRow.tsx","webpack://bizzey/./app/javascript/src/components/Resource/ResourceTableRowActions.tsx","webpack://bizzey/./app/javascript/src/components/Resource/ResourceTableRowData.tsx","webpack://bizzey/./app/javascript/src/components/Resource/ResourceTableRowHeader.tsx","webpack://bizzey/./app/javascript/src/helpers/LedgerItemHelper.tsx","webpack://bizzey/./app/javascript/src/helpers/MobilityHelper.tsx","webpack://bizzey/./app/javascript/src/helpers/ResourceHelper.ts","webpack://bizzey/./app/javascript/src/helpers/RouteHelper.ts","webpack://bizzey/./app/javascript/src/helpers/TimeHelper.ts","webpack://bizzey/./app/javascript/src/helpers/UserWorkspaceSettingHelper.tsx","webpack://bizzey/./app/javascript/src/store/modals/actions.ts","webpack://bizzey/./app/javascript/src/utilities/Notification.ts","webpack://bizzey/./app/javascript/src/utilities/TimeFormatter.ts"],"sourcesContent":["enum ERoute {\n // Email confirmation \n PATH_CONFIRM_EMAIL = '/confirm-email',\n // Welcome layout\n PATH_WELCOME_LAYOUT = '/welcome',\n // Preview layout\n PATH_PREVIEW_LEDGER_ITEM = '/preview/invoice/:id',\n // Workspace layout\n PATH_WORKSPACES = '/workspaces',\n // Subscription paywall\n PATH_SUBSCRIPTION_PAYWALL = '/subscription',\n // App layout\n PATH_APP_LAYOUT = '/',\n PATH_DASHBOARD = '/',\n PATH_CALENDAR = '/calendar',\n PATH_TASKS_OVERVIEW = '/tasks/overview',\n PATH_TASKS_MY_TASKS = '/tasks/my-tasks',\n PATH_TASKS_TODAY = '/tasks/today',\n PATH_TASKS_UPCOMING = '/tasks/upcoming',\n PATH_TASKS_PLANNER = '/tasks/planner',\n PATH_TASKS_BOARD = '/tasks/board/:id',\n PATH_TASKS = '/tasks',\n PATH_CONTACTS = '/contacts',\n PATH_DEAL = '/deal/:id',\n PATH_DEALS = '/deals',\n PATH_CONTACT = '/contact/:id',\n PATH_CONTACT_TASKS = '/contact/:id/tasks',\n PATH_CONTACT_BOARDS = '/contact/:id/boards',\n PATH_CONTACT_DEALS = '/contact/:id/deals',\n PATH_CONTACT_PROJECTS = '/contact/:id/projects',\n PATH_CONTACT_TIMESHEETS = '/contact/:id/timesheets',\n PATH_CONTACT_ORDER_FORMS = '/contact/:id/order-forms',\n PATH_CONTACT_DELIVERY_NOTES = '/contact/:id/delivery-notes',\n PATH_CONTACT_QUOTATIONS = '/contact/:id/quotations',\n PATH_CONTACT_PRO_FORMA_INVOICES = '/contact/:id/pro-forma-invoices',\n PATH_CONTACT_INVOICES = '/contact/:id/invoices',\n PATH_CONTACT_PURCHASE_INVOICES = '/contact/:id/purchase-invoices',\n PATH_CONTACT_CREDIT_NOTES = '/contact/:id/credit-notes',\n PATH_CONTACT_RECURRING_INVOICES = '/contact/:id/recurring-invoices',\n PATH_CONTACT_EXPENSES = '/contact/:id/expenses',\n PATH_CONTACT_PROPOSALS = '/contact/:id/proposals',\n PATH_CONTACT_CONTRACTS = '/contact/:id/contracts',\n PATH_CONTACT_FILES = '/contact/:id/files',\n PATH_PROJECTS = '/projects/',\n PATH_PROJECTS_ACTIVE = '/projects/active',\n PATH_PROJECTS_PROPOSAL = '/projects/proposal',\n PATH_PROJECTS_COMPLETED = '/projects/completed',\n PATH_PROJECTS_CANCELLED = '/projects/cancelled',\n PATH_PROJECT_TASKS = '/project/:id/tasks',\n PATH_PROJECT_BOARDS = '/project/:id/boards',\n PATH_PROJECT_DEALS = '/project/:id/deals',\n PATH_PROJECT_TIMESHEETS = '/project/:id/timesheets',\n PATH_PROJECT_ORDER_FORMS = '/project/:id/order-forms',\n PATH_PROJECT_DELIVERY_NOTES = '/project/:id/delivery-notes',\n PATH_PROJECT_QUOTATIONS = '/project/:id/quotations',\n PATH_PROJECT_PRO_FORMA_INVOICES = '/project/:id/pro-forma-invoices',\n PATH_PROJECT_INVOICES = '/project/:id/invoices',\n PATH_PROJECT_CREDIT_NOTES = '/project/:id/credit-notes',\n PATH_PROJECT_RECURRING_INVOICES = '/project/:id/recurring-invoices',\n PATH_PROJECT_EXPENSES = '/project/:id/expenses',\n PATH_PROJECT_PROPOSALS = '/project/:id/proposals',\n PATH_PROJECT_CONTRACTS = '/project/:id/contracts',\n PATH_PROJECT_FILES = '/project/:id/files',\n PATH_PROJECT = '/project/:id',\n\n PATH_TIMESHEETS = '/timesheets',\n PATH_TIMESHEETS_OVERVIEW = '/timesheets/overview',\n PATH_TIMESHEETS_REPORTING = '/timesheets/reporting',\n PATH_PROPOSAL = '/proposals/:id',\n PATH_PROPOSALS = '/proposals',\n PATH_CONTRACT = '/contracts/:id',\n PATH_CONTRACTS_CREATE = '/contracts/create',\n PATH_CONTRACTS = '/contracts',\n PATH_PLAYBOOK = '/playbooks/:id',\n PATH_PLAYBOOKS_CREATE = '/playbooks/create',\n PATH_PLAYBOOKS = '/playbooks',\n PATH_ORDERS = '/orders',\n PATH_ORDER_FORMS = '/orders/order-forms',\n PATH_DELIVERY_NOTES = '/orders/delivery-notes',\n PATH_QUOTATIONS = '/orders/quotations',\n PATH_PRO_FORMA_INVOICES = '/orders/pro-forma-invoices',\n PATH_INVOICES = '/orders/invoices',\n PATH_CREDIT_NOTES = '/orders/credit-notes',\n PATH_RECURRING_INVOICES = '/orders/recurring-invoices',\n PATH_INVOICES_NEW = '/invoices/new',\n PATH_LEDGER_CONDITION_NEW = '/ledger-item-conditions/new',\n PATH_LEDGER_CONDITION = '/ledger-item-conditions/:id',\n PATH_LEDGER_CONDITIONS = '/ledger-item-conditions',\n PATH_INVOICE_EDIT = '/invoice/:id/edit',\n PATH_INVOICE = '/invoice/:id',\n PATH_PRODUCTS = '/products',\n PATH_FORM_RESPONSE = '/form/:id/responses/:responseId',\n PATH_FORM_RESPONSES = '/form/:id/responses',\n PATH_FORM = '/form/:id',\n PATH_FORMS_CREATE = '/forms/create',\n PATH_FORMS = '/forms',\n PATH_FILES = '/files',\n PATH_EXPENSES = '/expenses',\n PATH_TRANSACTION = '/transaction/:id',\n PATH_BANK = '/bank',\n PATH_BANK_ACCOUNTS = '/bank/accounts',\n PATH_BANK_TRANSACTIONS = '/bank/transactions',\n PATH_BANK_PAYMENTS = '/bank/payments',\n PATH_ACCOUNTANT = '/accountant',\n PATH_ACCOUNTANT_SEND = '/accountant/send',\n PATH_ACCOUNTANT_DOCUMENTS = '/accountant/documents',\n PATH_INTEGRATION = '/integrations/:type',\n PATH_INTEGRATIONS = '/integrations',\n PATH_ACCOUNT = '/account',\n PATH_ACCOUNT_PROFILE = '/account/profile',\n PATH_ACCOUNT_PROFILE_DETAILS = '/account/profile/details',\n PATH_ACCOUNT_PROFILE_NOTIFICATIONS = '/account/profile/notifications',\n PATH_ACCOUNT_PROFILE_SECURITY = '/account/profile/security',\n PATH_ACCOUNT_SUBSCRIPTION = '/account/subscription',\n PATH_SETTINGS = '/settings/',\n PATH_SETTINGS_GENERAL = '/settings/general',\n PATH_SETTINGS_COMPANY = '/settings/company',\n PATH_SETTINGS_COMPANY_BRANDING = '/settings/company-branding',\n PATH_SETTINGS_COMPANY_INFO = '/settings/company',\n PATH_SETTINGS_DISPLAY_PREFERENCES = '/settings/display-preferences',\n PATH_SETTINGS_CALENDAR = '/settings/calendar',\n PATH_SETTINGS_CONTACTS = '/settings/contacts',\n PATH_SETTINGS_ORDER_FORMS = '/settings/order-forms',\n PATH_SETTINGS_DELIVERY_NOTES = '/settings/delivery-notes',\n PATH_SETTINGS_QUOTATIONS = '/settings/quotations',\n PATH_SETTINGS_PRO_FORMA_INVOICES = '/settings/pro-forma-invoices',\n PATH_SETTINGS_INVOICES = '/settings/invoices',\n PATH_SETTINGS_CREDIT_NOTES = '/settings/credit-notes',\n PATH_SETTINGS_EMAIL = '/settings/email',\n PATH_SETTINGS_CUSTOM_FIELDS_MODEL = '/settings/custom-fields/:model',\n PATH_SETTINGS_CUSTOM_FIELDS = '/settings/custom-fields',\n PATH_SETTINGS_MENU_EDITOR = '/settings/menu-editor',\n PATH_SETTINGS_WORK_TYPES = '/settings/work-types',\n PATH_SETTINGS_SMTP = '/settings/smtp',\n PATH_SETTINGS_DATA = '/settings/data',\n PATH_TEAM = '/team',\n PATH_REPORTING = '/reporting',\n PATH_REPORTING_REVENUE = '/reporting/revenue',\n PATH_REPORTING_EXPENSES = '/reporting/expenses',\n PATH_REFER_A_FRIEND = '/refer-a-friend',\n PATH_SEQUENCE = '/sequence/:id',\n PATH_SEQUENCE_OVERVIEW = '/sequence/:id/overview',\n PATH_SEQUENCE_ENROLLMENTS = '/sequence/:id/enrollments',\n PATH_SEQUENCE_SETTINGS = '/sequence/:id/settings',\n PATH_SEQUENCES_CREATE = '/sequences/create',\n PATH_SEQUENCES = '/sequences',\n}\n\nexport default ERoute","import * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport { Style } from '../../styles'\nimport Icon, { IconTypes } from '../Icons/Icon'\n\nconst Container = styled.div`\n background: white;\n border-radius: 3px;\n padding: 8px 0;\n min-width: 200px;\n max-width: calc(100vw - 3.2rem);\n box-shadow: 0 0 0 1px rgba(6, 44, 82, 0.1), 0 2px 16px rgba(33, 43, 54, 0.08);\n border-radius: 3px;\n backface-visibility: hidden;\n will-change: opacity,left,top;\n`\n\nconst List = styled.ul`\n\tlist-style: none;\n`\n\nconst ListItem = styled.li<{ destructive?: boolean }>`\n appearance: none;\n margin: 0;\n padding: 0;\n background: none;\n border: none;\n font-size: inherit;\n line-height: inherit;\n color: inherit;\n text-decoration: none;\n width: 100%;\n min-height: 40px;\n padding: 10px 16px;\n text-align: left;\n cursor: pointer;\n border-radius: 0;\n transition: background .2s;\n transition-timing-function: cubic-bezier(.64,0,.35,1);\n font-weight: normal;\n display: flex;\n flex-direction: row;\n align-items: center;\n white-space: nowrap;\n\n ${(props: { destructive?: boolean }) => props.destructive && css`\n color: ${Style.color.brandDanger};\n `}\n\n .is-page-action & {\n font-size: 15px;\n }\n\n &:hover, &:focus, &:active {\n background-image: linear-gradient(rgba(223,227,232,.3),rgba(223,227,232,.3));\n \n /* .has-indicator & {\n box-shadow: inset 2px 0 0 ${Style.color.brandPrimary};\n\n ${(props: { destructive?: boolean }) => props.destructive === true && css`\n box-shadow: inset 2px 0 0 ${Style.color.brandDanger};\n `}\n\n @media screen and (max-width: ${Style.breakpoints.SMALL}) {\n box-shadow: none;\n }\n } */\n }\n`\n\nconst IconContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 16px;\n height: 16px;\n margin-right: 8px;\n\n i, svg {\n font-size: 16px;\n width: 16px !important;\n height: 16px !important;\n }\n`\n\ninterface IProps {\n actions: IActionListItem[]\n onClick?: (key: string) => void\n hasIndicator?: boolean\n}\n\nexport interface IActionListItem {\n key: string\n content: string\n icon?: IconTypes\n destructive?: boolean\n visible?: boolean\n onClick?: () => void\n}\n\nexport default class ActionList extends React.PureComponent {\n static defaultProps = {\n indicator: false\n }\n\n render() {\n const { actions, hasIndicator, onClick } = this.props\n\n const containerClassName = hasIndicator ? 'has-indicator' : ''\n return (\n \n \n {actions.filter(action => action.visible !== false).map(action => {\n return (\n {\n e.preventDefault()\n e.stopPropagation()\n\n if (action.onClick) {\n action.onClick()\n\n // Needs onClick handler\n if (onClick) onClick('')\n // Deprecate this way of working in favor of defining the onClick on the action\n } else if (onClick) {\n onClick(action.key)\n }\n }\n }>\n {action.icon && }\n {action.content}\n \n )\n })}\n \n \n )\n }\n}","import * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport Icon, { IconTypes } from '../Icons/Icon'\n\nconst Container = styled.div`\n\tposition: relative;\n\tcursor: pointer;\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\talign-items: center;\n\tmin-height: 38px;\n\tpadding: 5px 12px;\n`\n\nconst Wrapper = styled.div`\n\tfont-size: 14px;\n\tfont-weight: 400;\n\tline-height: 24px;\n\ttext-transform: none;\n\tletter-spacing: normal;\n\ttext-rendering: auto;\n\tz-index: 3;\n\twidth: 100%;\n\theight: 100%;\n\tmargin: 0;\n\tappearance: none;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n`\n\nconst IconContainer = styled.div<{ addMarginRight?: boolean }>`\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\n\t${props => props.addMarginRight && css`\n\t\tmargin-right: 8px;\n\t`}\n\n\tsvg {\n\t\twidth: 16px;\n\t\theight: 16px;\n\t}\n`\n\nconst Backdrop = styled.div`\n\tbackground-color: #c4cdd5;\n\tborder: 1px solid transparent;\n\tbox-shadow: 0 0 0 1px transparent, 0 1px 0 0 rgba(22,29,37,.05);\n\tborder-radius: 3px;\n\ttransition-property: box-shadow,background-color;\n\ttransition-duration: .2s;\n\ttransition-timing-function: cubic-bezier(.64,0,.35,1);\n\tposition: absolute;\n\tz-index: 1;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\n\t&::after {\n\t\tcontent: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: block;\n background: linear-gradient(180deg, #fff, #f9fafb);\n border-radius: 2px;\n\t}\n`\n\ninterface IProps {\n\ticon?: IconTypes\n\ttext?: string\n\ttip?: string\n\tonClick?: (e: React.MouseEvent) => void\n}\n\nconst ButtonPanel = (props: IProps) => {\n\tconst { icon, tip, text, onClick } = props\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{icon && \n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t{text && text.length > 0 && text}\n\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default ButtonPanel","import styled from 'styled-components'\nimport { Style } from '../../styles'\n\nconst Card = styled.div`\n\tposition: relative;\n\tbackground-color: white;\n\tborder: 1px solid ${Style.color.border};\n\twidth: 100%;\n\tborder-radius: 8px;\n\n\t.panel & {\n\t\tborder: none;\n\t}\n\n\t@media screen and (max-width: ${Style.breakpoints.SMALL}) {\n\t\tborder-radius: 0;\n\t}\n`\nexport default Card","import * as React from 'react'\nimport Icon, { IconTypes } from '../Icons/Icon'\n\ninterface IProps {\n\ticon: IconTypes \n\tdescription: string\n\tdescriptionActionText?: string\n\tonDescriptionActionClick?: (e: React.MouseEvent) => void\n\tcontainerClasses?: string\n\tcompact?: boolean\n}\n\nexport default class CardEmptyInfo extends React.PureComponent {\n\tstatic defaultProps = {\n\t\tcompact: false\n\t}\n\n\trender() {\n\t\tconst { icon, description, descriptionActionText, onDescriptionActionClick, compact } = this.props\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\n\t\t\t\t

\n\t\t\t\t\t{description}\n\n\t\t\t\t\t{descriptionActionText && \n\t\t\t\t\t\t{descriptionActionText}\n\t\t\t\t\t}\n\t\t\t\t

\n\t\t\t
\n\t\t);\n\t}\n}","import * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport { Style } from '../../styles'\n\ninterface IProps {\n checked: boolean\n onChange: (checked: boolean) => void\n}\n\nconst Container = styled.div`\n\tdisplay: inline-block;\n\tposition: relative;\n\twidth: 14px;\n\theight: 14px;\n margin-right: ${Style.spacing.x0_5};\n`\n\nconst Backdrop = styled.span<{ checked: boolean }>`\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\tpointer-events: none;\n\tbackground-color: transparent;\n\tborder: 1px solid transparent;\n\tbox-shadow: 0 0 0 1px transparent, 0 1px 0 0 rgba(22,29,37,.05);\n\tborder-radius: 3px;\n\ttransition-property: box-shadow,background-color;\n\ttransition-duration: .2s;\n\ttransition-timing-function: cubic-bezier(.64,0,.35,1);\n box-shadow: rgb(0 0 0 / 0%) 0px 0px 0px 0px, rgb(0 0 0 / 0%) 0px 0px 0px 0px, rgb(0 0 0 / 12%) 0px 1px 1px 0px, rgb(60 66 87 / 16%) 0px 0px 0px 1px, rgb(0 0 0 / 0%) 0px 0px 0px 0px, rgb(0 0 0 / 0%) 0px 0px 0px 0px, rgb(60 66 87 / 8%) 0px 2px 5px 0px;\n\n\t${(props: { checked: boolean }) => props.checked && css`\n\t\tbackground-color: ${Style.color.brandPrimary};\n\t`}\n\n\t&::after {\n\t\tcontent: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: block;\n border-radius: 2px;\n\t}\n`\n\nconst CheckboxIcon = styled.span<{ checked: boolean }>`\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform-origin: 50% 50%;\n\tpointer-events: none;\n\ttransition: transform .1s cubic-bezier(.36,0,1,1);\n\ttransform: translate(-50%,-50%) scale(0);\n\twidth: 20px;\n\theight: 20px;\n\n\ti, svg {\n display: block;\n height: 20px;\n width: 20px;\n max-height: 100%;\n max-width: 100%;\n margin: auto;\n\t\tfill: white;\n\t}\n\n\t${(props: { checked: boolean }) => props.checked && css`\n\t\ttransform: translate(-50%,-50%) scale(1);\n\t`}\n`\n\nconst FilterCheckbox = (props: IProps) => {\n const { checked, onChange } = props\n\n return (\n onChange(!checked)}>\n \n \n \n \n \n )\n}\n\nexport default FilterCheckbox","import * as React from 'react'\nimport Utils from '../../utilities/Utils';\nimport Icon from '../Icons/Icon';\nimport { CSSTransition } from 'react-transition-group'\n\ninterface IProps {\n\tchecked: boolean,\n\tlabel?: string,\n\ttag?: string,\n\tonChange?: (checked: boolean) => void,\n}\n\nexport default class CheckboxInput extends React.PureComponent {\n\tprivate uniqueId: string\n\n\tconstructor(props: IProps) {\n\t\tsuper(props);\n\n\t\tthis.uniqueId = Utils.uniqueId();\n\n\t\tthis.onCheckboxClick = this.onCheckboxClick.bind(this);\n\t}\n\n\tonCheckboxClick(e) {\n\t\tconst { checked, onChange } = this.props;\n\n\t\tif (onChange) onChange(!checked);\n\t}\n\n\trender() {\n\t\tconst { label, tag, checked, onChange } = this.props;\n\n\t\treturn (\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{checked ? : }\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t{label &&
\n\t\t\t\t\t\t{label}\n\t\t\t\t\t
}\n\n\t\t\t\t\t{tag &&
\n\t\t\t\t\t\t{tag}\n\t\t\t\t\t
}\n\t\t\t\t
\n\t\t\t\n\t\t);\n\t}\n}","import { ThemeConfig } from \"react-select/src/theme\";\nimport { Theme } from \"react-select/src/types\";\n\n\nconst ReactSelectTheme = (theme: Theme): Theme => {\n return {\n borderRadius: theme.borderRadius,\n spacing: {\n ...theme.spacing,\n },\n colors: {\n ...theme.colors,\n primary: 'rgba(67, 137, 252, 1)',\n // primary75: 'rgba(67, 137, 252, 0.75)',\n // primary50: 'rgba(67, 137, 252, 0.5)',\n // primary25: 'rgba(67, 137, 252, 0.25)',\n\n danger: '#ff4040',\n dangerLight: '#FFBDAD',\n\n // neutral0: 'hsl(0, 0%, 100%)',\n // neutral5: 'hsl(0, 0%, 95%)',\n // neutral10: 'hsl(0, 0%, 90%)',\n neutral20: '#c4cdd5',\n neutral30: '#c4cdd5',\n neutral50: 'rgba(0, 0, 0, .35)',\n // neutral60: 'hsl(0, 0%, 40%)',\n // neutral70: 'hsl(0, 0%, 30%)',\n // neutral80: '#ebedf2',\n // neutral90: 'hsl(0, 0%, 10%)',\n }\n }\n}\n\nexport default ReactSelectTheme","import * as React from 'react'\nimport { AccountsController, BoardListsController, BoardsController, ContactGroupsController, ContactsController, DealStagesController, DealsController, PlaybooksController, ProjectsController, SequencesController, UsersController, WorkTypesController } from '../../controllers'\nimport Utils from '../../utilities/Utils'\nimport CreatableSelect from 'react-select/creatable'\nimport ReactSelectTheme from './ReactSelectTheme'\nimport { ThemeConfig } from 'react-select/src/theme'\nimport { Dispatch } from 'redux'\nimport { showContactGroupModal, showContactModal, showContactTypeModal, showDealModal, showDealStageModal, showProjectModal, showUserWorkspaceSettingModal, showWorkTypeModal, showDocumentTagModal, closeTaskModal, closeContactEnrollmentModal } from '../../store/modals/actions'\nimport { connect } from 'react-redux'\nimport { WithTranslation, withTranslation } from 'react-i18next'\nimport { Styles } from 'react-select/src/styles'\nimport { OptionsType, ValueType } from 'react-select/src/types'\nimport UserworkspaceSettingHelper from '../../helpers/UserWorkspaceSettingHelper'\nimport deepEqual from 'deep-equal'\nimport { ContactType, ResourceCreatablePowerSelectType, UserWorkspaceSettingScope } from '../../types'\nimport { SelectComponents } from 'react-select/src/components'\nimport ContactSelectComponents from '../Powerselect/ContactSelectComponents'\nimport ContactEmailIndicatorSelectComponents from '../Powerselect/ContactEmailIndicatorSelectComponents'\nimport UserWorkspaceSettingHelper from '../../helpers/UserWorkspaceSettingHelper'\nimport ResourceSelectComponents from '../Powerselect/ResourceSelectComponents'\nimport DocumentTagsController from '../../controllers/DocumentTagsController'\nimport DocumentTagSelectComponents from '../Powerselect/DocumentTagSelectComponents'\nimport { withRouter } from 'react-router-dom'\nimport { RouteComponentProps } from 'react-router'\nimport RouteHelper from '../../helpers/RouteHelper'\nimport ERoute from '../../ERoute'\n\ninterface IDispatchToProps {\n\tshowContactModal: typeof showContactModal\n\tshowProjectModal: typeof showProjectModal\n\tshowUserWorkspaceSettingModal: typeof showUserWorkspaceSettingModal\n\tshowDealModal: typeof showDealModal\n\tshowDealStageModal: typeof showDealStageModal\n\tshowContactGroupModal: typeof showContactGroupModal\n\tshowContactTypeModal: typeof showContactTypeModal\n\tshowWorkTypeModal: typeof showWorkTypeModal\n\tshowDocumentTagModal: typeof showDocumentTagModal\n\tcloseTaskModal: typeof closeTaskModal\n\tcloseContactEnrollmentModal: typeof closeContactEnrollmentModal\n}\n\ntype IProps = {\n\ttype: ResourceCreatablePowerSelectType\n\tvalue?: string | string[]\n\tisDisabled?: boolean\n\tisClearable?: boolean\n\t// @ts-ignore\n\tisValidNewOption?: (inputValue: string, value: ValueType<{ label: string; value: string }>, options: OptionsType<{ label: string; value: string }>) => boolean\n\tparams?: { [key: string]: any }\n\tcreateParams?: object | any\n\tonChange?: (value?: string | string[], resource?: any) => void\n\ttheme?: ThemeConfig\n\t// @ts-ignore\n\tstyles?: Partial\n\tplaceholder?: string\n\tisMulti?: boolean\n} & IDispatchToProps & WithTranslation & RouteComponentProps\n\n\ninterface IState {\n\tvalueResources: any[]\n\tdefaultResources: any[]\n\tsearchResources: any[]\n\tisLoadingValueResource: boolean\n\tisLoadingDefaultResources: boolean\n\tisLoadingSearchResources: boolean\n\tsearchValue: string\n}\n\nclass ResourceCreatablePowerSelectClass extends React.Component {\n\tconstructor(props: IProps) {\n\t\tsuper(props)\n\n\t\tthis.state = {\n\t\t\tvalueResources: null,\n\t\t\tdefaultResources: [],\n\t\t\tsearchResources: [],\n\t\t\tisLoadingValueResource: false,\n\t\t\tisLoadingDefaultResources: false,\n\t\t\tisLoadingSearchResources: false,\n\t\t\tsearchValue: '',\n\t\t}\n\n\t\tthis.getResources = this.getResources.bind(this)\n\t\tthis.getOptions = this.getOptions.bind(this)\n\t\tthis.getOptionFromResource = this.getOptionFromResource.bind(this)\n\t\tthis.fetchValueResources = this.fetchValueResources.bind(this)\n\t\tthis.fetchDefaultResources = this.fetchDefaultResources.bind(this)\n\t\tthis.fetchDefaultResourcesDebounced = Utils.debounce(this.fetchDefaultResources, 250, false)\n\t\tthis.fetchSearchResources = this.fetchSearchResources.bind(this)\n\t\tthis.fetchSearchResourcesDebounced = Utils.debounce(this.fetchSearchResources, 250, false)\n\t\tthis.onResourceModalSubmit = this.onResourceModalSubmit.bind(this)\n\t\tthis.onResourceModalDelete = this.onResourceModalDelete.bind(this)\n\t\tthis.onChange = this.onChange.bind(this)\n\t\tthis.onInputChange = this.onInputChange.bind(this)\n\t\tthis.onInputFocus = this.onInputFocus.bind(this)\n\t\tthis.onCreateOption = this.onCreateOption.bind(this)\n\t\tthis.onAddOption = this.onAddOption.bind(this)\n\t\tthis.onEditOption = this.onEditOption.bind(this)\n\t\tthis.formatCreateLabel = this.formatCreateLabel.bind(this)\n\t\tthis.isValidNewOption = this.isValidNewOption.bind(this)\n\t\tthis.getOptionFromResource = this.getOptionFromResource.bind(this)\n\t\tthis.getComponents = this.getComponents.bind(this)\n\t\tthis.getUpsertModeEnabled = this.getUpsertModeEnabled.bind(this)\n\t}\n\n\tcomponentDidMount() {\n\t\tif (this.props.value) this.fetchValueResources()\n\t}\n\n\tcomponentDidUpdate(prevProps: IProps) {\n\t\tif (!deepEqual(this.props.value, prevProps.value)) {\n\t\t\tthis.fetchValueResources()\n\t\t}\n\n\t\tif (!deepEqual(this.props.params, prevProps.params)) {\n\t\t\tthis.fetchDefaultResourcesDebounced()\n\t\t}\n\t}\n\n\tasync fetchValueResources() {\n\t\tconst { type, value, params } = this.props\n\n\t\t// If value set fetch remote resource\n\t\tif (this.props.value) {\n\t\t\ttry {\n\t\t\t\tthis.setState({ isLoadingValueResource: true })\n\n\t\t\t\tlet valueResources = []\n\t\t\t\tconst idValues = Array.isArray(value) ? value : [value]\n\n\t\t\t\tswitch (type) {\n\t\t\t\t\tcase 'company':\n\t\t\t\t\tcase 'company_with_email':\n\t\t\t\t\t\tconst { contacts: companies } = await ContactsController.getContacts({ 'id[in]': idValues, type: ContactType.COMPANY })\n\t\t\t\t\t\tvalueResources = companies\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'person':\n\t\t\t\t\tcase 'person_with_email':\n\t\t\t\t\t\tconst { contacts: people } = await ContactsController.getContacts({ 'id[in]': idValues, type: ContactType.PERSON })\n\t\t\t\t\t\tvalueResources = people\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'contact':\n\t\t\t\t\tcase 'contact_with_email':\n\t\t\t\t\t\tconst { contacts } = await ContactsController.getContacts({ 'id[in]': idValues })\n\t\t\t\t\t\tvalueResources = contacts\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'contact_group':\n\t\t\t\t\t\tconst { contact_groups } = await ContactGroupsController.getContactGroups({ 'id[in]': idValues })\n\t\t\t\t\t\tvalueResources = contact_groups\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'project':\n\t\t\t\t\t\tconst { projects } = await ProjectsController.getProjects({ 'id[in]': idValues })\n\t\t\t\t\t\tvalueResources = projects\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'user':\n\t\t\t\t\t\tconst { users } = await UsersController.getUsers({ 'users.id[in]': idValues })\n\t\t\t\t\t\tvalueResources = users\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'deal_stage':\n\t\t\t\t\t\tconst { deal_stages } = await DealStagesController.getDealStages({ 'id[in]': idValues })\n\t\t\t\t\t\tvalueResources = deal_stages\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'deal':\n\t\t\t\t\t\tconst { deals } = await DealsController.getDeals({ 'id[in]': idValues })\n\t\t\t\t\t\tvalueResources = deals\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'work_type':\n\t\t\t\t\t\tconst { work_types } = await WorkTypesController.getWorkTypes({ 'id[in]': idValues })\n\t\t\t\t\t\tvalueResources = work_types\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'board':\n\t\t\t\t\t\tconst { boards } = await BoardsController.getBoards({ 'id[in]': idValues })\n\t\t\t\t\t\tvalueResources = boards\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'board_list':\n\t\t\t\t\t\tif (!params.board_id) {\n\t\t\t\t\t\t\tvalueResources = []\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst { board_lists } = await BoardListsController.getBoardLists(params.board_id, { 'id[in]': idValues })\n\t\t\t\t\t\t\tvalueResources = board_lists\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'document_tag':\n\t\t\t\t\t\tconst { document_tags } = await DocumentTagsController.getDocumentTags({ 'id[in]': idValues })\n\t\t\t\t\t\tvalueResources = document_tags\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'playbook':\n\t\t\t\t\t\tconst { playbooks } = await PlaybooksController.getPlaybooks({ 'id[in]': idValues })\n\t\t\t\t\t\tvalueResources = playbooks\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'sequence':\n\t\t\t\t\t\tconst { sequences } = await SequencesController.getSequences({ 'id[in]': idValues })\n\t\t\t\t\t\tvalueResources = sequences\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'account':\n\t\t\t\t\t\tconst { accounts } = await AccountsController.getAccounts({ 'id[in]': idValues })\n\t\t\t\t\t\tvalueResources = accounts\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow Error(`[fetchValueResource] invalid type ${type} given`)\n\t\t\t\t}\n\n\t\t\t\tthis.setState({ valueResources: valueResources })\n\t\t\t} catch (ex) {\n\t\t\t\tconsole.error(ex)\n\t\t\t\tthis.setState({ valueResources: null })\n\t\t\t} finally {\n\t\t\t\tthis.setState({ isLoadingValueResource: false })\n\t\t\t}\n\t\t\t// If not set set value resource to null\n\t\t} else {\n\t\t\tthis.setState({ valueResources: null })\n\t\t}\n\t}\n\n\tfetchDefaultResourcesDebounced() {\n\t\tthis.fetchDefaultResources().catch(console.error)\n\t}\n\n\tasync fetchDefaultResources() {\n\t\tconst { type, params } = this.props\n\n\t\ttry {\n\t\t\tthis.setState({ isLoadingDefaultResources: true })\n\n\t\t\tlet defaultResources = []\n\n\t\t\tswitch (type) {\n\t\t\t\tcase 'company':\n\t\t\t\tcase 'company_with_email':\n\t\t\t\t\tconst { contacts: companies } = await ContactsController.getContacts({ ...params, type: ContactType.COMPANY })\n\t\t\t\t\tdefaultResources = companies\n\t\t\t\t\tbreak\n\t\t\t\tcase 'person':\n\t\t\t\tcase 'person_with_email':\n\t\t\t\t\tconst { contacts: people } = await ContactsController.getContacts({ ...params, type: ContactType.PERSON })\n\t\t\t\t\tdefaultResources = people\n\t\t\t\t\tbreak\n\t\t\t\tcase 'contact':\n\t\t\t\tcase 'contact_with_email':\n\t\t\t\t\tif (params?.contact_id) {\n\t\t\t\t\t\t// Make a copy\n\t\t\t\t\t\tconst customParams = { ...params }\n\n\t\t\t\t\t\t// Delete contact id\n\t\t\t\t\t\tdelete customParams.contact_id\n\n\t\t\t\t\t\t// Apply filters + id[in]\n\t\t\t\t\t\tconst { contacts: selfContacts } = await ContactsController.getContacts({ ...customParams, 'id[in]': params.contact_id })\n\n\t\t\t\t\t\tdefaultResources = [...selfContacts, ...defaultResources]\n\t\t\t\t\t}\n\t\t\t\t\tconst { contacts } = await ContactsController.getContacts({ ...params })\n\n\t\t\t\t\tdefaultResources = [...defaultResources, ...contacts]\n\t\t\t\t\tbreak\n\t\t\t\tcase 'contact_group':\n\t\t\t\t\tconst { contact_groups } = await ContactGroupsController.getContactGroups(params)\n\t\t\t\t\tdefaultResources = contact_groups\n\t\t\t\t\tbreak\n\t\t\t\tcase 'project':\n\t\t\t\t\tconst { projects } = await ProjectsController.getProjects(params)\n\t\t\t\t\tdefaultResources = projects\n\t\t\t\t\tbreak\n\t\t\t\tcase 'user':\n\t\t\t\t\tconst { users } = await UsersController.getUsers(params)\n\t\t\t\t\tdefaultResources = users\n\t\t\t\t\tbreak\n\t\t\t\tcase 'deal_stage':\n\t\t\t\t\tconst { deal_stages } = await DealStagesController.getDealStages(params)\n\t\t\t\t\tdefaultResources = deal_stages\n\t\t\t\t\tbreak\n\t\t\t\tcase 'deal':\n\t\t\t\t\tconst { deals } = await DealsController.getDeals(params)\n\t\t\t\t\tdefaultResources = deals\n\t\t\t\t\tbreak\n\t\t\t\tcase 'work_type':\n\t\t\t\t\tconst { work_types } = await WorkTypesController.getWorkTypes(params)\n\t\t\t\t\tdefaultResources = work_types\n\t\t\t\t\tbreak\n\t\t\t\tcase 'board':\n\t\t\t\t\tconst { boards } = await BoardsController.getBoards(params)\n\t\t\t\t\tdefaultResources = boards\n\t\t\t\t\tbreak\n\t\t\t\tcase 'board_list':\n\t\t\t\t\tif (!params.board_id) {\n\t\t\t\t\t\tdefaultResources = []\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst { board_lists } = await BoardListsController.getBoardLists(params.board_id, params)\n\t\t\t\t\t\tdefaultResources = board_lists\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak\n\t\t\t\tcase 'document_tag':\n\t\t\t\t\tconst { document_tags } = await DocumentTagsController.getDocumentTags(params)\n\t\t\t\t\tdefaultResources = document_tags\n\t\t\t\t\tbreak\n\t\t\t\tcase 'playbook':\n\t\t\t\t\tconst { playbooks } = await PlaybooksController.getPlaybooks(params)\n\t\t\t\t\tdefaultResources = playbooks\n\t\t\t\t\tbreak\n\t\t\t\tcase 'sequence':\n\t\t\t\t\tconst { sequences } = await SequencesController.getSequences(params)\n\t\t\t\t\tdefaultResources = sequences\n\t\t\t\t\tbreak\n\t\t\t\tcase 'account':\n\t\t\t\t\tconst { accounts } = await AccountsController.getAccounts(params)\n\t\t\t\t\tdefaultResources = accounts\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tthrow Error(`[fetchDefaultResources] invalid type ${type} given`)\n\t\t\t}\n\n\t\t\tthis.setState({ defaultResources: defaultResources })\n\t\t} catch (ex) {\n\t\t\tconsole.error(ex)\n\n\t\t\tthis.setState({ defaultResources: null })\n\t\t} finally {\n\t\t\tthis.setState({ isLoadingDefaultResources: false })\n\t\t}\n\t}\n\n\tasync fetchSearchResources(inputValue: string) {\n\t\tconst { type, params } = this.props\n\n\t\tlet searchResources = []\n\n\t\ttry {\n\t\t\tthis.setState({ isLoadingSearchResources: true })\n\n\t\t\tswitch (type) {\n\t\t\t\tcase 'company':\n\t\t\t\tcase 'company_with_email':\n\t\t\t\t\tconst { contacts: searchNameCompanies } = await ContactsController.getContacts({ ...params, type: ContactType.COMPANY, 'name[cont]': inputValue })\n\t\t\t\t\tconst { contacts: searchAliasCompanies } = await ContactsController.getContacts({ ...params, type: ContactType.COMPANY, 'alias[cont]': inputValue })\n\n\t\t\t\t\tsearchResources = [...searchNameCompanies, ...searchAliasCompanies]\n\t\t\t\t\tbreak\n\t\t\t\tcase 'person':\n\t\t\t\tcase 'person_with_email':\n\t\t\t\t\tconst { contacts: searchNamePeople } = await ContactsController.getContacts({ ...params, type: ContactType.PERSON, 'name[cont]': inputValue })\n\t\t\t\t\tconst { contacts: searchAliasPeople } = await ContactsController.getContacts({ ...params, type: ContactType.PERSON, 'alias[cont]': inputValue })\n\n\t\t\t\t\tsearchResources = [...searchNamePeople, ...searchAliasPeople]\n\t\t\t\t\tbreak\n\t\t\t\tcase 'contact':\n\t\t\t\tcase 'contact_with_email':\n\t\t\t\t\tconst { contacts: searchNameContacts } = await ContactsController.getContacts({ ...params, 'name[cont]': inputValue })\n\t\t\t\t\tconst { contacts: searchAliasContacts } = await ContactsController.getContacts({ ...params, 'alias[cont]': inputValue })\n\n\t\t\t\t\tsearchResources = [...searchNameContacts, ...searchAliasContacts]\n\t\t\t\t\tbreak\n\t\t\t\tcase 'contact_group':\n\t\t\t\t\tconst { contact_groups: searchContactGroups } = await ContactGroupsController.getContactGroups({ ...params, 'name[cont]': inputValue })\n\n\t\t\t\t\tsearchResources = [...searchContactGroups]\n\t\t\t\t\tbreak\n\t\t\t\tcase 'project':\n\t\t\t\t\tconst { projects } = await ProjectsController.getProjects({ ...params, 'name[cont]': inputValue })\n\n\t\t\t\t\tsearchResources = projects\n\n\t\t\t\t\tbreak\n\t\t\t\tcase 'user':\n\t\t\t\t\tconst { users } = await UsersController.getUsers({ ...params, 'name[cont]': inputValue })\n\n\t\t\t\t\tsearchResources = users\n\t\t\t\t\tbreak\n\t\t\t\tcase 'deal_stage':\n\t\t\t\t\tconst { deal_stages: searchNameDealStages } = await DealStagesController.getDealStages({ ...params, 'name[cont]': inputValue })\n\n\t\t\t\t\tsearchResources = [...searchNameDealStages]\n\t\t\t\t\tbreak\n\t\t\t\tcase 'deal':\n\t\t\t\t\tconst { deals: searchDeals } = await DealsController.getDeals({ ...params, 'name[cont]': inputValue })\n\n\t\t\t\t\tsearchResources = [...searchDeals]\n\t\t\t\t\tbreak\n\t\t\t\tcase 'work_type':\n\t\t\t\t\tconst { work_types: searchWorkTypes } = await WorkTypesController.getWorkTypes({ ...params, 'name[cont]': inputValue })\n\n\t\t\t\t\tsearchResources = [...searchWorkTypes]\n\t\t\t\t\tbreak\n\t\t\t\tcase 'board':\n\t\t\t\t\tconst { boards: searchBoards } = await BoardsController.getBoards({ ...params, 'name[cont]': inputValue })\n\n\t\t\t\t\tsearchResources = [...searchBoards]\n\t\t\t\t\tbreak\n\t\t\t\tcase 'board_list':\n\t\t\t\t\tif (!params.board_id) {\n\t\t\t\t\t\tsearchResources = []\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst { board_lists: searchBoardLists } = await BoardListsController.getBoardLists(params.board_id, { ...params, 'name[cont]': inputValue })\n\t\t\t\t\t\tsearchResources = [...searchBoardLists]\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase 'document_tag':\n\t\t\t\t\tconst { document_tags: searchDocumentTags } = await DocumentTagsController.getDocumentTags({ ...params, 'name[cont]': inputValue })\n\n\t\t\t\t\tsearchResources = [...searchDocumentTags]\n\t\t\t\t\tbreak\n\t\t\t\tcase 'playbook':\n\t\t\t\t\tconst { playbooks: searchPlaybooks } = await PlaybooksController.getPlaybooks({ ...params, 'name[cont]': inputValue })\n\n\t\t\t\t\tsearchResources = [...searchPlaybooks]\n\t\t\t\t\tbreak\n\t\t\t\tcase 'sequence':\n\t\t\t\t\tconst { sequences: searchSequences } = await SequencesController.getSequences({ ...params, 'name[cont]': inputValue })\n\n\t\t\t\t\tsearchResources = [...searchSequences]\n\t\t\t\t\tbreak\n\t\t\t\tcase 'account':\n\t\t\t\t\tconst { accounts: searchAccounts } = await AccountsController.getAccounts({ ...params, 'name[cont]': inputValue })\n\n\t\t\t\t\tsearchResources = [...searchAccounts]\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tthrow Error(`[fetchSearchResources] Unsupported resource type ${type} given`)\n\t\t\t}\n\n\t\t\tthis.setState({ searchResources: searchResources })\n\t\t} catch (ex) {\n\t\t\tconsole.error(ex)\n\n\t\t\tthis.setState({ searchResources: null })\n\t\t} finally {\n\t\t\tthis.setState({ isLoadingSearchResources: false })\n\t\t}\n\n\t}\n\n\tfetchSearchResourcesDebounced(inputValue: string) {\n\t\tthis.fetchSearchResources(inputValue).catch(console.error)\n\t}\n\n\tgetSelectedResource() {\n\t\treturn this.state.valueResources\n\t}\n\n\tgetResources() {\n\t\tconst { valueResources, defaultResources, searchResources, searchValue } = this.state\n\n\t\tlet resources = []\n\n\t\tif (valueResources) {\n\t\t\tresources = [...valueResources, ...resources]\n\t\t}\n\n\t\t// Add default resources\n\t\tresources = [...resources, ...defaultResources]\n\n\t\t// Add search resources\n\t\tresources = [...resources, ...searchResources]\n\n\t\treturn resources\n\t\t\t// Remove undefined values\n\t\t\t.filter(Boolean)\n\t\t\t// Get unique values\n\t\t\t.reduce>((uniqueResources, o) => {\n\t\t\t\tif (!uniqueResources.some(obj => obj.id === o.id)) {\n\t\t\t\t\tuniqueResources.push(o);\n\t\t\t\t}\n\t\t\t\treturn uniqueResources;\n\t\t\t}, [])\n\t}\n\n\tgetOptions() {\n\t\tconst { type } = this.props\n\n\t\tif (type === 'board_list') {\n\t\t\treturn this\n\t\t\t\t.getResources()\n\t\t\t\t.sort((a, b) => a.position - b.position)\n\t\t\t\t.map(resource => this.getOptionFromResource(resource))\n\t\t} else {\n\t\t\treturn this\n\t\t\t\t.getResources()\n\t\t\t\t.map(resource => this.getOptionFromResource(resource))\n\t\t}\n\t}\n\n\tgetSelectedOptions() {\n\t\tconst { value } = this.props\n\t\tconst options = this.getOptions()\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value.map(id => options.find(option => option.value === id))\n\t\t} else {\n\t\t\treturn options.find(option => option.value === value)\n\t\t}\n\t}\n\n\tgetOptionFromResource(resource: any) {\n\t\tconst { type } = this.props\n\n\t\tswitch (type) {\n\t\t\tcase 'contact':\n\t\t\tcase 'contact_with_email':\n\t\t\tcase 'company':\n\t\t\tcase 'company_with_email':\n\t\t\tcase 'person':\n\t\t\tcase 'person_with_email':\n\t\t\t\treturn {\n\t\t\t\t\tlabel: resource.alias ? `${resource.name} (${resource.alias})` : resource.name,\n\t\t\t\t\tvalue: resource.id,\n\t\t\t\t\tcontact: resource\n\t\t\t\t}\n\t\t\tcase 'project':\n\t\t\t\treturn { label: resource.name, value: resource.id }\n\t\t\tcase 'user':\n\t\t\t\treturn { label: resource.name ? `${resource.name} (${resource.email})` : resource.email, value: resource.id }\n\t\t\tcase 'contact_group':\n\t\t\t\treturn { label: resource.name, value: resource.id }\n\t\t\tcase 'deal_stage':\n\t\t\t\treturn { label: resource.name, value: resource.id }\n\t\t\tcase 'deal':\n\t\t\t\treturn { label: resource.name, value: resource.id }\n\t\t\tcase 'work_type':\n\t\t\t\treturn { label: resource.name, value: resource.id }\n\t\t\tcase 'board':\n\t\t\t\treturn { label: resource.name, value: resource.id }\n\t\t\tcase 'board_list':\n\t\t\t\treturn { label: resource.name, value: resource.id }\n\t\t\tcase 'document_tag':\n\t\t\t\treturn { label: resource.name, value: resource.id, document_tag: resource }\n\t\t\tcase 'playbook':\n\t\t\t\treturn { label: resource.name, value: resource.id }\n\t\t\tcase 'sequence':\n\t\t\t\treturn { label: resource.name, value: resource.id }\n\t\t\tcase 'account':\n\t\t\t\treturn { label: `${resource.name} (${resource.reference})`, value: resource.id }\n\t\t\tdefault:\n\t\t\t\tthrow Error(`[getOption] Unsupported resource type ${type} given`)\n\t\t}\n\t}\n\n\tonChange(option) {\n\t\tconst { isMulti, onChange } = this.props\n\n\t\tif (isMulti) {\n\t\t\tconst newValues: string[] = option ? option.map(o => o.value) : null\n\n\t\t\tconst resources = this.getResources()\n\t\t\tlet valueResources = null\n\n\t\t\tif (newValues && newValues.length > 0) {\n\t\t\t\tvalueResources = newValues.map(newValue => resources.find(resource => resource.id === newValue))\n\t\t\t}\n\n\t\t\tonChange(newValues, valueResources)\n\t\t} else {\n\t\t\tconst newValue = option ? option.value : null\n\n\t\t\tconst resources = this.getResources()\n\t\t\tlet valueResource = null\n\n\t\t\tif (newValue) valueResource = resources.find(resource => resource.id === newValue)\n\n\t\t\tonChange(newValue, valueResource)\n\t\t}\n\t}\n\n\tonInputChange(inputValue: string) {\n\t\tconst { searchValue } = this.state\n\t\tif (inputValue !== searchValue) {\n\t\t\tthis.fetchSearchResourcesDebounced(inputValue)\n\t\t\tthis.setState({ searchValue: inputValue })\n\t\t}\n\t}\n\n\tonInputFocus() {\n\t\tthis.fetchDefaultResourcesDebounced()\n\t}\n\n\tasync onCreateOption(inputValue: string) {\n\t\tconst {\n\t\t\ttype,\n\t\t\tshowContactTypeModal,\n\t\t\tshowContactModal,\n\t\t\tshowProjectModal,\n\t\t\tshowDealModal,\n\t\t\tshowContactGroupModal,\n\t\t\tshowWorkTypeModal,\n\t\t\tshowDocumentTagModal,\n\t\t\tcreateParams\n\t\t} = this.props\n\n\t\tswitch (type) {\n\t\t\tcase 'person':\n\t\t\tcase 'person_with_email':\n\t\t\t\tconst [firstName, ...lastParts] = inputValue.split(' ')\n\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tshowContactModal({\n\t\t\t\t\t\tcontact: {\n\t\t\t\t\t\t\tfirst_name: firstName,\n\t\t\t\t\t\t\tlast_name: lastParts?.join(' ') || '',\n\t\t\t\t\t\t\ttype: ContactType.PERSON,\n\t\t\t\t\t\t\t...createParams\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonSubmit: this.onResourceModalSubmit\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'company':\n\t\t\tcase 'company_with_email':\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tshowContactModal({\n\t\t\t\t\t\tcontact: { name: inputValue, type: ContactType.COMPANY, ...createParams },\n\t\t\t\t\t\tonSubmit: this.onResourceModalSubmit\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'contact':\n\t\t\tcase 'contact_with_email':\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tshowContactTypeModal({\n\t\t\t\t\t\tonSubmit: (contactType) => {\n\t\t\t\t\t\t\tconst [firstName, ...lastParts] = inputValue.split(' ')\n\n\t\t\t\t\t\t\tshowContactModal({\n\t\t\t\t\t\t\t\tcontact: {\n\t\t\t\t\t\t\t\t\tfirst_name: firstName,\n\t\t\t\t\t\t\t\t\tlast_name: lastParts?.join(' ') || '',\n\t\t\t\t\t\t\t\t\tname: inputValue,\n\t\t\t\t\t\t\t\t\t...createParams,\n\t\t\t\t\t\t\t\t\ttype: contactType\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tonSubmit: this.onResourceModalSubmit\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'project':\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tshowProjectModal({\n\t\t\t\t\t\tproject: {\n\t\t\t\t\t\t\tname: inputValue,\n\t\t\t\t\t\t\t...createParams,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcontactDisabled: true,\n\t\t\t\t\t\tonSubmit: this.onResourceModalSubmit,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'deal':\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tshowDealModal({\n\t\t\t\t\t\tdeal: { name: inputValue, ...createParams },\n\t\t\t\t\t\tcontactDisabled: true,\n\t\t\t\t\t\tprojectDisabled: Boolean(createParams?.project_id),\n\t\t\t\t\t\tonSubmit: this.onResourceModalSubmit,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'contact_group':\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tshowContactGroupModal({\n\t\t\t\t\t\tcontactGroup: { name: inputValue, ...createParams },\n\t\t\t\t\t\tonSubmit: this.onResourceModalSubmit,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'work_type':\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tshowWorkTypeModal({\n\t\t\t\t\t\tworkType: { name: inputValue, ...createParams },\n\t\t\t\t\t\tonSubmit: this.onResourceModalSubmit,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'document_tag':\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tshowDocumentTagModal({\n\t\t\t\t\t\tdocumentTag: { name: inputValue, ...createParams },\n\t\t\t\t\t\tonSubmit: this.onResourceModalSubmit,\n\t\t\t\t\t\tonDelete: this.onResourceModalDelete\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase 'playbook':\n\t\t\t\tthis.props.history.push(RouteHelper.process(ERoute.PATH_PLAYBOOKS_CREATE))\n\t\t\t\tthis.props.closeTaskModal()\n\t\t\t\tbreak\n\t\t\tcase 'sequence':\n\t\t\t\tthis.props.history.push(RouteHelper.process(ERoute.PATH_SEQUENCES_CREATE))\n\t\t\t\tthis.props.closeContactEnrollmentModal()\n\t\t\t\tbreak\n\t\t\tcase 'account':\n\t\t\t\twindow.location.assign(`/auth/ponto`);\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tthrow Error(`[onCreateOption] Unsupported resource type ${type} given`)\n\t\t}\n\t}\n\n\tonAddOption(e) {\n\t\te.stopPropagation()\n\t\tthis.onCreateOption('')\n\t}\n\n\tonEditOption(e, option) {\n\t\te.stopPropagation()\n\n\t\tif (option) {\n\t\t\tconst id = option.value\n\n\t\t\tconst {\n\t\t\t\ttype,\n\t\t\t\tshowContactModal,\n\t\t\t\tshowProjectModal,\n\t\t\t\tshowDealModal,\n\t\t\t\tshowDealStageModal,\n\t\t\t\tshowContactGroupModal,\n\t\t\t\tshowWorkTypeModal,\n\t\t\t\tshowDocumentTagModal,\n\t\t\t\tcreateParams\n\t\t\t} = this.props\n\n\t\t\tswitch (type) {\n\t\t\t\tcase 'person':\n\t\t\t\tcase 'person_with_email':\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\tshowContactModal({\n\t\t\t\t\t\t\tcontact: { id: id },\n\t\t\t\t\t\t\tonSubmit: this.onResourceModalSubmit\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\tbreak\n\t\t\t\tcase 'company':\n\t\t\t\tcase 'company_with_email':\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\tshowContactModal({\n\t\t\t\t\t\t\tcontact: { id: id },\n\t\t\t\t\t\t\tonSubmit: this.onResourceModalSubmit\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\tbreak\n\t\t\t\tcase 'contact':\n\t\t\t\tcase 'contact_with_email':\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\tshowContactModal({\n\t\t\t\t\t\t\tcontact: { id: id },\n\t\t\t\t\t\t\tonSubmit: this.onResourceModalSubmit\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\tbreak\n\t\t\t\tcase 'project':\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\tshowProjectModal({\n\t\t\t\t\t\t\tproject: { id: id },\n\t\t\t\t\t\t\tcontactDisabled: true,\n\t\t\t\t\t\t\tonSubmit: this.onResourceModalSubmit,\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\tbreak\n\t\t\t\tcase 'deal':\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\tshowDealModal({\n\t\t\t\t\t\t\tdeal: { id: id },\n\t\t\t\t\t\t\tcontactDisabled: true,\n\t\t\t\t\t\t\tprojectDisabled: Boolean(createParams?.project_id),\n\t\t\t\t\t\t\tonSubmit: this.onResourceModalSubmit,\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\tbreak\n\t\t\t\tcase 'deal_stage':\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\tshowDealStageModal({\n\t\t\t\t\t\t\tdealStage: { id: id },\n\t\t\t\t\t\t\tonSubmit: this.onResourceModalSubmit,\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\tbreak\n\t\t\t\tcase 'contact_group':\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\tshowContactGroupModal({\n\t\t\t\t\t\t\tcontactGroup: { id: id },\n\t\t\t\t\t\t\tonSubmit: this.onResourceModalSubmit,\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\tbreak\n\t\t\t\tcase 'work_type':\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\tshowWorkTypeModal({\n\t\t\t\t\t\t\tworkType: { id: id },\n\t\t\t\t\t\t\tonSubmit: this.onResourceModalSubmit,\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\tbreak\n\t\t\t\tcase 'document_tag':\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\tshowDocumentTagModal({\n\t\t\t\t\t\t\tdocumentTag: { id: id },\n\t\t\t\t\t\t\tonSubmit: this.onResourceModalSubmit,\n\t\t\t\t\t\t\tonDelete: this.onResourceModalDelete\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\tbreak\n\t\t\t\tcase 'playbook':\n\t\t\t\t\tthis.props.closeTaskModal()\n\t\t\t\t\tthis.props.history.push(RouteHelper.process(ERoute.PATH_PLAYBOOK, { id: id }))\n\t\t\t\t\tbreak\n\t\t\t\tcase 'sequence':\n\t\t\t\t\tthis.props.closeContactEnrollmentModal()\n\t\t\t\t\tthis.props.history.push(RouteHelper.process(ERoute.PATH_SEQUENCE, { id: id }))\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tthrow Error(`[onEditOption] Unsupported resource type ${type} given`)\n\t\t\t}\n\t\t}\n\t}\n\n\tformatCreateLabel(inputValue: string) {\n\t\tconst { type, t } = this.props\n\n\t\tswitch (type) {\n\t\t\tcase 'contact':\n\t\t\tcase 'contact_with_email':\n\t\t\t\treturn t('ResourceCreatablePowerSelect::Create contact \"{{input}}\"', { input: inputValue })\n\t\t\tcase 'person':\n\t\t\tcase 'person_with_email':\n\t\t\t\treturn t('ResourceCreatablePowerSelect::Create person \"{{input}}\"', { input: inputValue })\n\t\t\tcase 'company':\n\t\t\tcase 'company_with_email':\n\t\t\t\treturn t('ResourceCreatablePowerSelect::Create company \"{{input}}\"', { input: inputValue })\n\t\t\tcase 'project':\n\t\t\t\treturn t('ResourceCreatablePowerSelect::Create project \"{{input}}\"', { input: inputValue })\n\t\t\tcase 'user':\n\t\t\t\treturn t('ResourceCreatablePowerSelect::Invite team member \"{{input}}\"', { input: inputValue })\n\t\t\tcase 'deal':\n\t\t\t\treturn t('ResourceCreatablePowerSelect::Create deal \"{{input}}\"', { input: inputValue })\n\t\t\tcase 'board':\n\t\t\t\treturn t('ResourceCreatablePowerSelect::Create board \"{{input}}\"', { input: inputValue })\n\t\t\tcase 'board_list':\n\t\t\t\treturn t('ResourceCreatablePowerSelect::Create board list \"{{input}}\"', { input: inputValue })\n\t\t\tcase 'contact_group':\n\t\t\t\treturn t('ResourceCreatablePowerSelect::Create contact group \"{{input}}\"', { input: inputValue })\n\t\t\tcase 'work_type':\n\t\t\t\treturn t('ResourceCreatablePowerSelect::Create work type \"{{input}}\"', { input: inputValue })\n\t\t\tcase 'document_tag':\n\t\t\t\treturn t('ResourceCreatablePowerSelect::Create tag \"{{input}}\"', { input: inputValue })\n\t\t\tcase 'playbook':\n\t\t\t\treturn t('ResourceCreatablePowerSelect::Create playbook \"{{input}}\"', { input: inputValue })\n\t\t\tcase 'sequence':\n\t\t\t\treturn t('ResourceCreatablePowerSelect::Create sequence \"{{input}}\"', { input: inputValue })\n\t\t\tcase 'account':\n\t\t\t\treturn t('ResourceCreatablePowerSelect::Add account')\n\t\t\tdefault:\n\t\t\t\tthrow Error(`Unsupported resource type ${type} given`)\n\t\t}\n\t}\n\n\tonResourceModalSubmit(resource: any) {\n\t\tconst { type, isMulti } = this.props\n\t\tconst { valueResources } = this.state\n\n\t\tlet updatedValueResources = []\n\t\tconst valueIndex = valueResources?.findIndex(valueResource => valueResource.id === resource.id)\n\n\t\tif (valueIndex > -1) {\n\t\t\tupdatedValueResources = [...valueResources]\n\n\t\t\tupdatedValueResources[valueIndex] = resource\n\t\t} else {\n\t\t\tupdatedValueResources = valueResources ? [resource, ...valueResources] : [resource]\n\t\t}\n\n\t\tthis.setState({ valueResources: updatedValueResources }, () => {\n\t\t\tswitch (type) {\n\t\t\t\tcase 'company':\n\t\t\t\tcase 'company_with_email':\n\t\t\t\tcase 'person':\n\t\t\t\tcase 'person_with_email':\n\t\t\t\tcase 'contact':\n\t\t\t\tcase 'contact_with_email':\n\t\t\t\tcase 'project':\n\t\t\t\tcase 'user':\n\t\t\t\tcase 'deal_stage':\n\t\t\t\tcase 'deal':\n\t\t\t\tcase 'board':\n\t\t\t\tcase 'board_list':\n\t\t\t\tcase 'contact_group':\n\t\t\t\tcase 'document_tag':\n\t\t\t\tcase 'playbook':\n\t\t\t\tcase 'sequence':\n\t\t\t\tcase 'account':\n\t\t\t\t\tif (isMulti) {\n\t\t\t\t\t\tthis.props.onChange(updatedValueResources.map(resource => resource.id), updatedValueResources)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.props.onChange(resource.id, resource)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tthrow Error(`[onResourceModalSubmit] Unsupported resource type ${type} given`)\n\t\t\t}\n\t\t})\n\t}\n\n\tonResourceModalDelete(resource: any) {\n\t\tconst { type, isMulti } = this.props\n\t\tconst { valueResources } = this.state\n\n\t\tlet updatedValueResources = valueResources?.filter(valueResource => valueResource.id !== resource.id)\n\n\t\tthis.setState({ valueResources: updatedValueResources }, () => {\n\t\t\tswitch (type) {\n\t\t\t\tcase 'document_tag':\n\t\t\t\t\tif (isMulti) {\n\t\t\t\t\t\tthis.props.onChange(updatedValueResources.map(resource => resource.id), updatedValueResources)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.props.onChange(null, null)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tthrow Error(`[onResourceModalDelete] Unsupported resource type ${type} given`)\n\t\t\t}\n\t\t})\n\t}\n\n\tisValidNewOption(inputValue: string, value: any, options: OptionsType) {\n\t\tconst { type } = this.props\n\n\t\tif (inputValue === '') return false\n\n\t\tswitch (type) {\n\t\t\tcase 'contact':\n\t\t\tcase 'contact_with_email':\n\t\t\tcase 'person':\n\t\t\tcase 'person_with_email':\n\t\t\tcase 'company':\n\t\t\tcase 'company_with_email':\n\t\t\t\treturn UserworkspaceSettingHelper.hasScope(UserWorkspaceSettingScope.CONTACT)\n\t\t\tcase 'project':\n\t\t\t\treturn UserworkspaceSettingHelper.hasScope(UserWorkspaceSettingScope.PROJECT)\n\t\t\tcase 'user':\n\t\t\t\t// It doesn't make sense to be able to invite users (also returns no value for user_id since it is an invite)\n\t\t\t\treturn false\n\t\t\tcase 'deal':\n\t\t\t\treturn UserworkspaceSettingHelper.hasScope(UserWorkspaceSettingScope.DEAL)\n\t\t\tcase 'deal_stage':\n\t\t\t\treturn false\n\t\t\tcase 'work_type':\n\t\t\t\treturn UserworkspaceSettingHelper.hasScope(UserWorkspaceSettingScope.SETTING)\n\t\t\tcase 'board':\n\t\t\t\treturn false\n\t\t\tcase 'board_list':\n\t\t\t\treturn false\n\t\t\tcase 'contact_group':\n\t\t\t\treturn UserworkspaceSettingHelper.hasScope(UserWorkspaceSettingScope.SETTING)\n\t\t\tcase 'document_tag':\n\t\t\t\treturn UserworkspaceSettingHelper.hasScope(UserWorkspaceSettingScope.DOCUMENT)\n\t\t\tcase 'playbook':\n\t\t\t\treturn UserWorkspaceSettingHelper.hasScope(UserWorkspaceSettingScope.PLAYBOOK)\n\t\t\tcase 'sequence':\n\t\t\t\treturn UserWorkspaceSettingHelper.hasScope(UserWorkspaceSettingScope.PLAYBOOK)\n\t\t\tcase 'account':\n\t\t\t\treturn UserWorkspaceSettingHelper.hasScope(UserWorkspaceSettingScope.BANK)\n\t\t\tdefault:\n\t\t\t\tthrow Error(`[isValidNewOption] Unsupported resource type ${type} given`)\n\t\t}\n\t}\n\n\tgetComponents(): Partial> {\n\t\tconst { type } = this.props\n\n\t\tswitch (type) {\n\t\t\tcase 'contact':\n\t\t\tcase 'person':\n\t\t\tcase 'company':\n\t\t\t\treturn ContactSelectComponents\n\t\t\tcase 'contact_with_email':\n\t\t\tcase 'company_with_email':\n\t\t\tcase 'person_with_email':\n\t\t\t\treturn ContactEmailIndicatorSelectComponents\n\t\t\tcase 'document_tag':\n\t\t\t\treturn DocumentTagSelectComponents\n\t\t\tdefault:\n\t\t\t\treturn ResourceSelectComponents\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tgetUpsertModeEnabled() {\n\t\tconst { type } = this.props\n\t\tswitch (type) {\n\t\t\tcase 'board':\n\t\t\tcase 'board_list':\n\t\t\t\treturn false\n\t\t\tcase 'contact':\n\t\t\tcase 'person':\n\t\t\tcase 'company':\n\t\t\tcase 'contact_with_email':\n\t\t\tcase 'company_with_email':\n\t\t\tcase 'person_with_email':\n\t\t\t\treturn UserWorkspaceSettingHelper.hasScope(UserWorkspaceSettingScope.CONTACT)\n\t\t\tcase 'project':\n\t\t\t\treturn UserworkspaceSettingHelper.hasScope(UserWorkspaceSettingScope.PROJECT)\n\t\t\tcase 'deal':\n\t\t\t\treturn UserworkspaceSettingHelper.hasScope(UserWorkspaceSettingScope.DEAL)\n\t\t\tcase 'deal_stage':\n\t\t\t\treturn UserworkspaceSettingHelper.hasScope(UserWorkspaceSettingScope.SETTING)\n\t\t\tcase 'contact_group':\n\t\t\tcase 'work_type':\n\t\t\t\treturn UserworkspaceSettingHelper.hasScope(UserWorkspaceSettingScope.SETTING)\n\t\t\tcase 'document_tag':\n\t\t\t\treturn UserWorkspaceSettingHelper.hasScope(UserWorkspaceSettingScope.DOCUMENT)\n\t\t\tcase 'playbook':\n\t\t\t\treturn UserWorkspaceSettingHelper.hasScope(UserWorkspaceSettingScope.PLAYBOOK)\n\t\t\tcase 'sequence':\n\t\t\t\treturn UserWorkspaceSettingHelper.hasScope(UserWorkspaceSettingScope.SEQUENCE)\n\t\t\tcase 'account':\n\t\t\tcase 'user':\n\t\t\t\treturn false\n\t\t}\n\n\t}\n\n\trender() {\n\t\tconst { isDisabled, isClearable, isValidNewOption, isMulti, placeholder, styles } = this.props\n\t\tconst { isLoadingValueResource, isLoadingDefaultResources, isLoadingSearchResources } = this.state\n\n\t\tconst options = this.getOptions()\n\t\tconst selectedOptions = this.getSelectedOptions()\n\n\t\treturn (\n\t\t\t\n\t\t)\n\t}\n}\n\n\nconst mapDispatchToProps = (dispatch: Dispatch): IDispatchToProps => {\n\treturn {\n\t\tshowContactModal: (options) => dispatch(showContactModal(options)),\n\t\tshowProjectModal: (options) => dispatch(showProjectModal(options)),\n\t\tshowUserWorkspaceSettingModal: (options) => dispatch(showUserWorkspaceSettingModal(options)),\n\t\tshowDealModal: (options) => dispatch(showDealModal(options)),\n\t\tshowDealStageModal: (options) => dispatch(showDealStageModal(options)),\n\t\tshowContactGroupModal: (options) => dispatch(showContactGroupModal(options)),\n\t\tshowContactTypeModal: (options) => dispatch(showContactTypeModal(options)),\n\t\tshowWorkTypeModal: (options) => dispatch(showWorkTypeModal(options)),\n\t\tshowDocumentTagModal: (options) => dispatch(showDocumentTagModal(options)),\n\t\tcloseTaskModal: () => dispatch(closeTaskModal()),\n\t\tcloseContactEnrollmentModal: () => dispatch(closeContactEnrollmentModal()),\n\t}\n}\n\nexport { ResourceCreatablePowerSelectClass }\nexport default withRouter(connect(null, mapDispatchToProps)(withTranslation()(ResourceCreatablePowerSelectClass)))","import * as React from 'react'\nimport styled from 'styled-components'\nimport Loader from '../../Loaders/Loader'\n\nconst Container = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: center;\n\talign-items: center;\n\tpadding: 100px 0;\n`\n\nexport default () => ( )","import * as React from 'react'\nimport styled from 'styled-components'\nimport Loader from '../Loaders/Loader'\n\nconst Container = styled.div`\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: center;\n\talign-items: center;\n\tpadding: 100px 0;\n`\n\nexport default () => ( )","import * as React from 'react'\nimport ReactPaginate, { ReactPaginateProps } from 'react-paginate'\nimport styled from 'styled-components'\nimport { Style } from '../../styles'\nimport Icon from '../Icons/Icon'\n\nconst Container = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n\n ul {\n display: flex;\n flex-direction: row;\n align-items: center;\n\n li {\n display: flex;\n justify-content: center;\n align-items: center;\n border: 1px solid #dbdbdb;\n border-left: none;\n \n &:first-child {\n border-top-left-radius: 6px;\n border-bottom-left-radius: 6px;\n border-left: 1px solid ${Style.color.border};\n overflow: hidden;\n }\n\n &:last-child {\n border-top-right-radius: 6px;\n border-bottom-right-radius: 6px;\n overflow: hidden;\n }\n\n &.selected {\n background: #EFF5FF;\n color: #1449D6;\n border: 1px solid #1449D6;\n\n a:hover {\n background: #EFF5FF;\n }\n }\n\n a {\n display: flex;\n justify-content: center;\n align-items: center;\n color: #363636;\n cursor: pointer;\n text-align: center;\n outline: none;\n height: 38px;\n width: 38px;\n min-height: 38px;\n min-width: 38px;\n border-radius: 6px;\n \n &:hover {\n background: rgb(249, 250, 251);\n }\n\n svg {\n width: 20px;\n height: 20px;\n }\n }\n }\n }\n`\n\nconst Pagination = (props: ReactPaginateProps) => {\n let { forcePage } = props\n\n forcePage = forcePage !== undefined ? (forcePage - 1) : 0\n\n return (\n \n }\n nextLabel={}\n marginPagesDisplayed={1}\n {...props}\n forcePage={forcePage}\n />\n \n )\n}\n\nexport default Pagination","import * as React from 'react'\nimport ReactDOM from 'react-dom'\nimport * as PopperJS from '@popperjs/core'\nimport { usePopper } from 'react-popper'\nimport { PositioningStrategy } from '@popperjs/core'\n\ninterface IProps {\n active: boolean\n activator: JSX.Element\n onClose?: () => void\n placement?: PopperJS.Placement\n children: React.ReactNode\n zIndex?: number | string\n strategy?: PositioningStrategy\n}\n\n\nconst Popover = (props: IProps) => {\n const { activator, placement, active, onClose, children, strategy } = props\n const [referenceElement, setReferenceElement] = React.useState(null);\n const [popperElement, setPopperElement] = React.useState(null);\n const { styles, attributes, update } = usePopper(referenceElement, popperElement, {\n placement: placement,\n strategy: strategy,\n });\n\n const onOutsideClick = (e) => {\n if (active) {\n if (\n // Additional check for powerselect when click X\n // It gets removed from the DOM which causes the popover to close unintended\n document.contains(e.target) &&\n referenceElement && !referenceElement.contains(e.target) &&\n popperElement && !popperElement.contains(e.target)\n ) {\n if (onClose) onClose()\n }\n }\n }\n\n // Component did mount\n React.useEffect(() => {\n if (active) {\n if (update) update()\n document.addEventListener('mousedown', onOutsideClick);\n } else {\n document.removeEventListener('mousedown', onOutsideClick);\n }\n\n return () => {\n document.removeEventListener('mousedown', onOutsideClick);\n }\n }, [active, update])\n\n return (\n <>\n {React.cloneElement(activator, { ref: setReferenceElement })}\n\n {active && <>\n {ReactDOM.createPortal(\n {children}\n , document.body)}\n }\n \n )\n}\n\nexport default Popover","import * as React from 'react'\nimport { components } from 'react-select'\nimport { SelectComponents } from 'react-select/src/components'\nimport styled, { css } from 'styled-components'\nimport { Contact } from '../../types'\nimport ContactSelectComponents from './ContactSelectComponents'\n\nconst MultiValueWrapper = styled.div<{ present?: boolean }>`\n display: flex;\n flex-direction: row;\n\n ${props => !props.present && css`\n background-color: #ffeeda;\n color: #856404;\n `}\n`\n\nconst ContactEmailIndicatorSelectComponents: Partial> = {\n ...ContactSelectComponents,\n MultiValueContainer: (props) => {\n const contact: Contact = props?.data?.contact\n const emailPresent = contact?.emails?.length > 0\n\n return (\n \n \n {props.children}\n \n \n )\n },\n}\n\nexport default ContactEmailIndicatorSelectComponents\n","import * as React from 'react'\nimport ResourceSelectComponents from './ResourceSelectComponents'\nimport { components } from 'react-select'\nimport { SelectComponents } from 'react-select/src/components'\nimport styled from 'styled-components'\nimport Icon, { IconTypes } from '../Icons/Icon'\nimport MultiValueContainer from './Parts/MultiValueContainer'\nimport ValueContainer from './Parts/ValueContainer'\nimport ValueActions from './Parts/ValueActions'\nimport ValueAction from './Parts/ValueAction'\nimport OptionContainer from './Parts/OptionContainer'\nimport { Contact, ContactType } from '../../types'\n\nconst Container = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 8px;\n`\n\nconst StarContact = styled.div<{ starred: boolean }>`\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n color: ${props => props.starred ? '#f4a230' : 'black'};\n margin-left: 4px;\n\n svg {\n width: 14px;\n height: 14px;\n fill: currentColor;\n }\n`\n\nconst getIcon = (contact: Contact): IconTypes => {\n return contact?.type === ContactType.COMPANY ? 'company' : 'user'\n}\n\nconst ParentContactContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n`\n\nconst ContactContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n`\n\nconst IconContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 14px;\n height: 14px;\n min-width: 14px;\n min-height: 14px;\n margin-right: 4px;\n`\n\nconst ContactSelectComponents: Partial> = {\n ...ResourceSelectComponents,\n Option: (props) => {\n const { data: { label, contact, __isNew__, placeholder } } = props\n\n if (placeholder) return null\n\n if (!__isNew__) {\n return (\n \n \n \n {contact?.contact && <>\n \n \n \n \n \n {contact?.contact?.name}\n \n \n\n →\n }\n\n\n \n \n \n \n {label}\n {contact?.starred && \n \n }\n \n \n \n \n )\n } else {\n return (\n \n {label}\n \n )\n }\n },\n SingleValue: (props) => {\n const { data: { label, contact }, isMulti } = props\n\n return (\n \n \n {contact?.contact && <>\n \n \n \n \n \n {contact?.contact?.name}\n \n \n →\n }\n\n \n \n \n \n\n \n {label}\n \n\n {contact?.starred && \n \n }\n \n \n \n )\n },\n MultiValue: (props) => {\n const {\n data: {\n label,\n contact,\n },\n selectProps: {\n upsertModeEnabled,\n onEditClick\n },\n isDisabled\n } = props\n\n return (\n \n \n \n {contact?.contact && <>\n \n \n \n \n \n {contact?.contact?.name}\n \n \n →\n }\n\n \n \n \n \n {label}\n \n \n\n {!isDisabled && upsertModeEnabled && \n onEditClick(e, props.data)} onTouchStart={(e) => onEditClick(e, props.data)}>\n \n \n }\n \n \n )\n },\n}\n\nexport default ContactSelectComponents\n","import * as React from 'react'\nimport ResourceSelectComponents from './ResourceSelectComponents'\nimport { components } from 'react-select'\nimport { SelectComponents } from 'react-select/src/components'\nimport styled from 'styled-components'\nimport Icon from '../Icons/Icon'\nimport MultiValueContainer from './Parts/MultiValueContainer'\nimport ValueContainer from './Parts/ValueContainer'\nimport ValueActions from './Parts/ValueActions'\nimport ValueAction from './Parts/ValueAction'\nimport OptionContainer from './Parts/OptionContainer'\n\nconst DocumentTagSelectComponents: Partial> = {\n ...ResourceSelectComponents,\n Option: (props) => {\n const { data: { label, icon, document_tag, __isNew__, placeholder } } = props\n\n if (placeholder) return null\n\n if (!__isNew__) {\n return (\n \n \n \n {label}\n \n \n )\n } else {\n return (\n \n {label}\n \n )\n }\n },\n SingleValue: (props) => {\n const { data: { label, icon, document_tag }, isMulti } = props\n\n return (\n \n \n \n\n \n {label}\n \n \n \n )\n },\n MultiValue: (props) => {\n const {\n data: {\n label,\n document_tag\n },\n selectProps: {\n upsertModeEnabled,\n onEditClick\n },\n isDisabled\n } = props\n\n return (\n \n \n \n \n {label}\n \n {!isDisabled && upsertModeEnabled && !Boolean(document_tag.type) && \n onEditClick(e, props.data)} onTouchStart={(e) => onEditClick(e, props.data)}>\n \n \n }\n \n \n )\n },\n}\n\nexport default DocumentTagSelectComponents\n","import styled from 'styled-components'\n\nconst IndicatorContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n color: #c4cdd5;\n display: flex;\n padding: 8px;\n transition: color 150ms;\n box-sizing: border-box;\n height: 100%;\n\n &:hover {\n color: hsl(0,0%,60%);\n }\n\n svg {\n display: inline-block;\n fill: currentColor;\n line-height: 1;\n stroke: currentColor;\n stroke-width: 0;\n width: 15px;\n height: 15px;\n }\n\n i {\n display: inline-block;\n fill: currentColor;\n line-height: 1;\n stroke: currentColor;\n stroke-width: 0;\n font-size: 15px;\n }\n`\n\nexport default IndicatorContainer","import styled from \"styled-components\";\n\nconst MultiValueContainer = styled.div`\n display: flex;\n flex-direction: row;\n height: 100%;\n`\n\nexport default MultiValueContainer","import styled from 'styled-components'\n\nconst OptionContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n position: relative;\n padding: 0 8px;\n\n svg {\n margin-right: 8px;\n\t\twidth: 14px;\n\t\theight: 14px;\n min-width: 14px;\n min-height: 14px;\n }\n\n i {\n font-size: 14px;\n height: 14px;\n width: 14px;\n margin-right: 8px;\n }\n`\n\nexport default OptionContainer","import styled from 'styled-components'\n\nconst ValueAction = styled.div`\n align-items: center;\n display: flex;\n justify-content: center;\n padding-left: 4px;\n padding-right: 4px;\n box-sizing: border-box;\n height: 100%;\n\n svg {\n width: 12px;\n height: 12px;\n fill: currentColor;\n\n path {\n fill: currentColor;\n }\n }\n\n i {\n font-size: 12px;\n }\n`\n\nexport default ValueAction","import styled from 'styled-components'\n\nconst ValueActions = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-left: 8px;\n height: 100%;\n`\n\nexport default ValueActions","import styled, { css } from 'styled-components'\n\nconst ValueContainer = styled.div<{ isMulti?: boolean }>`\n position: relative;\n display: flex;\n flex-direction: row;\n align-items: center;\n\n i, svg {\n margin-right: 4px;\n\t\twidth: 14px;\n\t\theight: 14px;\n min-width: 14px;\n min-height: 14px;\n }\n\n span {\n ${props => props.isMulti && css`\n max-width: 250px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n `}\n }\n`\n\nexport default ValueContainer","import * as React from 'react'\nimport { components } from 'react-select'\nimport { SelectComponents } from 'react-select/src/components'\nimport styled from 'styled-components'\nimport Icon from '../Icons/Icon'\nimport MultiValueContainer from './Parts/MultiValueContainer'\nimport ValueContainer from './Parts/ValueContainer'\nimport ValueActions from './Parts/ValueActions'\nimport ValueAction from './Parts/ValueAction'\nimport IndicatorContainer from './Parts/IndicatorContainer'\nimport OptionContainer from './Parts/OptionContainer'\n\nconst ResourceSelectComponents: Partial> = {\n Option: (props) => {\n const { data: { label, __isNew__, placeholder } } = props\n\n if (placeholder) return null\n\n if (!__isNew__) {\n return (\n \n \n {label}\n \n \n )\n } else {\n return (\n \n {label}\n \n )\n }\n },\n SingleValue: (props) => {\n const { data: { label }, isMulti } = props\n\n return (\n \n \n \n {label}\n \n \n \n )\n },\n MultiValue: (props) => {\n const {\n data: {\n label,\n },\n selectProps: {\n upsertModeEnabled,\n onEditClick\n },\n isDisabled\n } = props\n\n return (\n \n \n \n {label}\n \n {!isDisabled && upsertModeEnabled && \n onEditClick(e, props.data)} onTouchStart={(e) => onEditClick(e, props.data)}>\n \n \n }\n \n \n )\n },\n IndicatorsContainer: (props) => {\n const { hasValue, selectProps, getValue, isMulti, isDisabled } = props\n const { isLoading, upsertModeEnabled, onAddClick, onEditClick } = selectProps\n\n return (\n \n {!isDisabled && !isLoading && Boolean(upsertModeEnabled) && <>\n\n {((isMulti) || (!isMulti && !hasValue)) && <>\n onAddClick(e)} onTouchStart={(e) => onAddClick(e)}>\n \n \n\n {/* @ts-ignore */}\n \n }\n\n {!isMulti && hasValue && <>\n onEditClick(e, getValue()[0])} onTouchStart={(e) => onEditClick(e, getValue()[0])}>\n \n \n\n {/* @ts-ignore */}\n \n }\n }\n\n {props.children}\n \n )\n\n }\n}\n\nexport default ResourceSelectComponents\n","import * as React from 'react'\nimport styled, { css } from \"styled-components\"\nimport { Style } from '../../styles'\n\ninterface IProps {\n\tchecked: boolean\n\tdisabled?: boolean\n\tpartial?: boolean\n\tonCheckedChange?: (checked: boolean) => void\n}\n\nconst Container = styled.div<{ disabled?: boolean }>`\n\tdisplay: flex;\n\tposition: relative;\n\twidth: 18px;\n\theight: 18px;\n\tcursor: pointer;\n\n\t${props => props.disabled && css`\n\t\tcursor: initial;\n\t`}\n`\n\nconst Label = styled.div`\n\tposition: relative;\n\tdisplay: inline-flex;\n\tpadding: 0;\n\twidth: 100%;\n\theight: 100%;\n\twidth: 18px;\n\theight: 18px;\n\tmin-width: 18px;\n\tmin-height: 18px;\n`\n\nconst LabelWrapper = styled.div`\n\tposition: relative;\n\tmargin: 1px;\n\twidth: 100%;\n\theight: 100%;\n\twidth: 18px;\n\theight: 18px;\n\tmin-width: 18px;\n\tmin-height: 18px;\n`\n\nconst CheckboxInput = styled.input`\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\topacity: 0;\n\tmargin: 0;\n`\n\nconst Backdrop = styled.div<{ active?: boolean, disabled?: boolean }>`\n\tposition: relative;\n\tborder: 2px solid ${Style.color.border};\n\tbackground: white;\n\tborder-radius: 4px;\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n\n\t&::after {\n\t\tcontent: '';\n position: absolute;\n top: -2px;\n right: -2px;\n bottom: -2px;\n left: -2px;\n border-radius: 4px;\n background-color: #2c6ecb;\n opacity: 0;\n transform: scale(0.25);\n transition: opacity 100ms cubic-bezier(0.25, 0.1, 0.25, 1), transform 100ms cubic-bezier(0.25, 0.1, 0.25, 1);\n\n\t\t${props => props.disabled && css`\n\t\t\topacity: 1;\n\t\t\ttransform: scale(1);\n\t\t`}\n\n\t\t${props => props.active && css`\n\t\t\topacity: 1;\n\t\t\ttransform: scale(1);\n\t\t`}\n\t}\n\n\t&::before {\n\t\tcontent: '';\n position: absolute;\n z-index: 1;\n top: -3px;\n right: -3px;\n bottom: -3px;\n left: -3px;\n display: block;\n pointer-events: none;\n box-shadow: 0 0 0 -3px rgba(69, 143, 255, 1);\n transition: box-shadow 100ms cubic-bezier(0.25, 0.1, 0.25, 1);\n border-radius: 5px;\n\n\t\t${props => props.active && css`\n\t\t\topacity: 1;\n\t\t\ttransform: scale(1);\n\t\t`}\n\t}\n`\n\nconst IconContainer = styled.div<{ active?: boolean }>`\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform-origin: 50% 50%;\n\tpointer-events: none;\n\ttransform: translate3d(-50%, -50%, 0) scale(0.25);\n\topacity: 0;\n\ttransition: opacity 100ms cubic-bezier(0.25, 0.1, 0.25, 1), transform 100ms cubic-bezier(0.25, 0.1, 0.25, 1);\n\n\t${props => props.active && css`\n\t\topacity: 1;\n\t\ttransform: translate3d(-50%, -50%, 0) scale(1);\n\t`}\n\n\tsvg {\n\t\tfill: white;\n\t\tposition: relative;\n display: block;\n width: 100%;\n max-width: 100%;\n max-height: 100%;\n\t}\n`\n\nconst IconWrapper = styled.div`\n\tdisplay: block;\n\theight: 18px;\n\twidth: 18px;\n\tmax-height: 100%;\n\tmax-width: 100%;\n\tmargin: auto;\n`\n\nconst ResourceCheckbox = (props: IProps) => {\n\tconst { checked, disabled, partial } = props\n\n\tconst onCheckedChange = () => {\n\t\tif (props.onCheckedChange) props.onCheckedChange(!Boolean(checked))\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default ResourceCheckbox","import * as React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport styled, { css } from 'styled-components'\nimport { Style } from '../../styles'\nimport Icon from '../Icons/Icon'\nimport { usePopper } from 'react-popper'\nimport FilterCheckbox from '../Checkbox/FilterCheckbox'\nimport ResourceFilterInput from './ResourceFilterInput'\nimport { ResourceFilter, ResourceListFilterPredicate, ResourceListFilterType } from '../../types'\n\nconst Container = styled.div`\n\tposition: relative;\n\tdisplay: flex;\n\tflex: 1 1 0%;\n\talign-items: center;\n\tleft: auto;\n\tflex: 0 1 auto;\n\n\t&:only-child {\n\t\tmargin-left: 0;\n\t\tflex: 1;\n\t\tdisplay: flex;\n justify-content: flex-end;\n\t}\n`\n\nconst Wrapper = styled.div`\n\tposition: relative;\n cursor: pointer;\n`\n\nconst Content = styled.div`\n\tfont-size: 14px;\n\tfont-weight: 400;\n\tline-height: 24px;\n\ttext-transform: none;\n\tletter-spacing: normal;\n\tposition: relative;\n\tz-index: 2;\n\tdisplay: flex;\n\talign-items: center;\n\twidth: 100%;\n\tpadding: 5px 8px 5px 12px;\n\tmin-height: 38px;\n`\n\nconst FilterInlineLabel = styled.div`\n color: #637381;\n margin-right: 4px;\n white-space: nowrap;\n overflow: hidden;\n`\n\nconst FilterInlineDivider = styled.div`\n\twidth: 1px;\n\theight: 100%;\n\tbackground-color: ${Style.color.border};\n\tmargin-left: ${Style.spacing.x0_5};\n\tmargin-right: ${Style.spacing.x1};\n\tmin-height: 25px;\n`\n\nconst FilterInlineValue = styled.div`\n\twhite-space: nowrap;\n\toverflow: hidden;\n\tfont-weight: bolder;\n margin-right: ${Style.spacing.x0_5};\n`\n\nconst WrapperIcon = styled.div`\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tmargin-right: ${Style.spacing.x1};\n\n\tsvg {\n\t\twidth: 16px;\n\t\theight: 16px;\n\t}\n`\n\nconst WrapperBackdrop = styled.div`\n\tbackground-color: #c4cdd5;\n\tborder: 1px solid transparent;\n\tbox-shadow: 0 0 0 1px transparent, 0 1px 0 0 rgba(22,29,37,.05);\n\tborder-radius: 3px;\n\ttransition-property: box-shadow,background-color;\n\ttransition-duration: .2s;\n\ttransition-timing-function: cubic-bezier(.64,0,.35,1);\n\tposition: absolute;\n\tz-index: 1;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\n\t&::after {\n\t\tcontent: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: block;\n background: linear-gradient(180deg, #fff, #f9fafb);\n border-radius: 2px;\n\t}\n`\n\nconst FilterContainer = styled.div`\n margin: ${Style.spacing.x1};\n transition: all ${Style.animations.baseTransitionSpeed} linear;\n z-index: 5;\n`\n\nconst FilterWrapper = styled.form<{ active: boolean }>`\n position: relative;\n z-index: 0;\n background: #fff;\n border-radius: 4px;\n box-shadow: 0 0 0 1px rgb(136 152 170 / 10%), 0 15px 35px 0 rgb(49 49 93 / 10%), 0 5px 15px 0 rgb(0 0 0 / 8%);\n min-width: 250px;\n transition: all ${Style.animations.baseTransitionSpeed} linear;\n transform: translateY(-10px);\n\n ${props => props.active && css`\n transform: translateY(0px);\n `}\n`\n\nconst FilterHeader = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: ${Style.spacing.x1};\n background: #f7fafc;\n justify-content: space-between;\n box-shadow: inset 0 -1px #e3e8ee;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n`\n\nconst FilterHeaderButton = styled.div<{ type?: 'default' | 'primary' }>`\n display: inline-flex;\n justify-content: center;\n align-items: center;\n background-color: white;\n box-shadow: rgb(0 0 0 / 0%) 0px 0px 0px 0px, rgb(0 0 0 / 0%) 0px 0px 0px 0px, rgb(0 0 0 / 12%) 0px 1px 1px 0px, rgb(60 66 87 / 16%) 0px 0px 0px 1px, rgb(0 0 0 / 0%) 0px 0px 0px 0px, rgb(0 0 0 / 0%) 0px 0px 0px 0px, rgb(60 66 87 / 8%) 0px 2px 5px 0px;\n cursor: pointer;\n min-height: 24px;\n border-radius: 4px;\n max-width: 100%;\n font-size: 13px;\n line-height: 16px;\n font-weight: 500;\n color: rgb(60, 66, 87);\n padding: 4px 8px;\n\n ${props => props.type === 'primary' && css`\n background: ${Style.color.brandPrimary};\n color: white;\n box-shadow: initial;\n `}\n`\n\nconst FilterContent = styled.div``\n\nconst FilterItems = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nconst FilterItem = styled.div`\n box-shadow: inset 0 -1px #e3e8ee;\n\n &:last-child {\n box-shadow: none;\n }\n`\n\nconst FilterItemHeader = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: ${Style.spacing.x1};\n color: #3c4257;\n font-weight: 500;\n cursor: pointer;\n`\n\nconst FilterItemContent = styled.div`\n padding: 12px;\n background: #f7fafc;\n box-shadow: inset 0 1px #e3e8ee, inset 0 -1px #e3e8ee;\n`\n\ninterface IProps {\n filters: ResourceFilter[]\n activeFilters?: any\n onSubmit: (filters: any) => void\n}\n\nconst ResourceFilterComponent = (props: IProps) => {\n const { t } = useTranslation()\n const container = React.useRef()\n const [active, setActive] = React.useState(false);\n const [activeFilters, setActiveFilters] = React.useState({});\n const [referenceElement, setReferenceElement] = React.useState(null);\n const [popperElement, setPopperElement] = React.useState(null);\n const { styles, attributes } = usePopper(referenceElement, popperElement, {\n placement: 'bottom',\n modifiers: [{ name: 'arrow' }],\n });\n const { filters, activeFilters: propsActiveFilters } = props\n const activeFilterCount = Object.keys(Object(activeFilters))?.length || 0\n\n React.useEffect(() => {\n if (active) {\n document.addEventListener('mousedown', onOutsideClick);\n } else {\n document.removeEventListener('mousedown', onOutsideClick);\n }\n\n return () => {\n document.removeEventListener('mousedown', onOutsideClick);\n }\n }, [active])\n\n React.useEffect(() => {\n if (propsActiveFilters) { setActiveFilters(propsActiveFilters) }\n }, [propsActiveFilters])\n\n const onToggleFilter = () => {\n setActive(!active)\n }\n\n const onOutsideClick = (e) => {\n if (active && container && !container.current.contains(e.target)) {\n setActive(false)\n }\n }\n\n const onClearClick = () => {\n // Hide filter\n setActive(false)\n\n // Reset filter values\n setActiveFilters({})\n\n // Submit\n if (props.onSubmit) props.onSubmit({})\n }\n\n const onDoneClick = (e) => {\n // Prevent form submission\n e.preventDefault()\n\n // Hide filter\n setActive(false)\n\n // Submit filter values to parent\n if (props.onSubmit) props.onSubmit(activeFilters)\n }\n\n const setPredicateDefaultValues = (index: number) => {\n const selectedFilter = filters[index]\n const selectedFilterName = selectedFilter.name\n const updatedFilterValues = { ...activeFilters }\n\n switch (selectedFilter.type) {\n case ResourceListFilterType.STRING:\n updatedFilterValues[selectedFilterName] = ''\n break\n case ResourceListFilterType.SINGLE_OPTION:\n updatedFilterValues[selectedFilterName] = selectedFilter.options[0].value\n break\n case ResourceListFilterType.MULTIPLE_OPTION:\n updatedFilterValues[selectedFilterName] = { in: [] }\n break\n case ResourceListFilterType.DATE:\n updatedFilterValues[selectedFilterName] = ''\n break\n case ResourceListFilterType.BOOLEAN:\n updatedFilterValues[selectedFilterName] = false\n break\n case ResourceListFilterType.SINGLE_RESOURCE:\n updatedFilterValues[selectedFilterName] = null\n break\n case ResourceListFilterType.MULTI_RESOURCE:\n updatedFilterValues[selectedFilterName] = []\n break\n case ResourceListFilterType.NUMBER:\n updatedFilterValues[selectedFilterName] = ''\n break\n default: throw new Error('[setPredicateDefaultValues] Invalid filter type')\n }\n\n setActiveFilters(updatedFilterValues)\n }\n\n const onToggleFilterItem = (index: number) => {\n const selectedFilter = filters[index]\n const selectedFilterName = selectedFilter.name\n const updatedFilterValues = { ...activeFilters }\n\n if (activeFilters && selectedFilterName in activeFilters) {\n // Remove filter name and filter name with predicates from filter values on deactivate\n delete updatedFilterValues[selectedFilterName]\n\n // Set filter values\n setActiveFilters(updatedFilterValues)\n } else {\n // Set default value on active filter toggle\n setPredicateDefaultValues(index)\n }\n }\n\n const onFilterValueChange = (name: string, value: any) => {\n setActiveFilters({ ...activeFilters, [name]: value, })\n }\n\n return (\n \n \n \n \n \n \n {t('ResourceListFilter::Filter')}\n {activeFilterCount > 0 && <>\n \n {t('ResourceListFilter::{{count}}', { count: activeFilterCount })}\n }\n \n \n \n\n \n \n \n {t('ResourceListFilter::Clear')}\n {t('ResourceListFilter::Filters')}\n {t('ResourceListFilter::Done')}\n \n \n \n {filters.map((filter, index) => {\n if (filter.visible === false) return null\n\n const active = activeFilters && filter.name in activeFilters\n const value = (activeFilters && activeFilters[filter.name])\n\n return (\n \n onToggleFilterItem(index)}>\n { }} />\n {filter.label}\n \n {active && \n \n }\n \n )\n })}\n \n \n \n \n \n \n )\n}\n\nexport default ResourceFilterComponent","import * as React from 'react'\nimport * as Sentry from \"@sentry/browser\";\nimport { useTranslation } from 'react-i18next'\nimport { connect } from 'react-redux'\nimport styled, { css } from 'styled-components'\nimport ResourceHelper from '../../helpers/ResourceHelper'\nimport { AppState } from '../../store'\nimport { Style } from '../../styles'\nimport { ResourceFilter, ResourceListFilterPredicate, ResourceListFilterType, Settings } from '../../types'\nimport moment from '../../utilities/Moment'\nimport CheckboxInput from '../Form/CheckboxInput'\nimport DateInput from '../Form/DateInput'\nimport PowerSelect from '../Form/PowerSelect'\nimport ReactSelectTheme from '../Form/ReactSelectTheme'\nimport ResourceCreatablePowerSelect from '../Form/ResourceCreatablePowerSelect'\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nconst InputContainer = styled.div<{ displayArrow?: boolean }>`\n background: url('data:image/svg+xml;base64,PHN2ZyBpZD0iU3ZnanNTdmcxMDAxIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM6c3ZnanM9Imh0dHA6Ly9zdmdqcy5jb20vc3ZnanMiPjxkZWZzIGlkPSJTdmdqc0RlZnMxMDAyIj48L2RlZnM+PGcgaWQ9IlN2Z2pzRzEwMDgiIHRyYW5zZm9ybT0ibWF0cml4KDEsMCwwLDEsMCwwKSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyODgiIGhlaWdodD0iMjg4Ij48cGF0aCBmaWxsPSIjNDM4OWZjIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zLjggOS42NDZhNC4wMDkgNC4wMDkgMCAwMS0zLjgtNEMwIDQuMDI0Ljk2NiAyLjYyNiAyLjM1NCAyTDQgMy42NDZhMiAyIDAgMTAwIDRoNy41Mkw4LjI5MyA0LjM1M2wxLjQxNC0xLjQxNCA1LjcwNyA1LjcwNy01LjcwNyA1LjcwNy0xLjQxNC0xLjQxNCAzLjIyNy0zLjI5M0gzLjh6IiBjbGFzcz0iY29sb3I2NjZFRTggc3ZnU2hhcGUiPjwvcGF0aD48L3N2Zz48L2c+PC9zdmc+') no-repeat;\n background-position: 5px 10px;\n background-size: 23px;\n padding-left: 28px;\n margin-top: ${Style.spacing.x1_25};\n width: 100%;\n\n ${props => props.displayArrow === false && css`\n background: initial;\n padding-left: 0;\n `}\n`\n\nconst RowContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n\n > span {\n color: #697386;\n }\n`\n\ninterface IStateToProps {\n setting: Settings\n}\n\ntype IProps = {\n filter: ResourceFilter\n value?: any\n onFilterValueChange: (name: string, value: any) => void\n} & IStateToProps\n\nconst ResourceFilterInput = (props: IProps) => {\n const { t } = useTranslation()\n const [predicate, setPredicate] = React.useState(null)\n const { filter, onFilterValueChange, setting, value } = props\n const { name } = filter\n\n React.useEffect(() => {\n if (value) {\n switch (filter.type) {\n case ResourceListFilterType.STRING:\n if (typeof value === 'object') {\n if (value.cont) {\n setPredicate(ResourceListFilterPredicate.CONTAINS)\n }\n } else if (typeof value === 'string') {\n setPredicate(ResourceListFilterPredicate.EQUALS)\n } else {\n Sentry.captureException(new Error(`[ResourceFilterInput - ${filter.type}] Unable to determine predicate from value`))\n }\n break\n case ResourceListFilterType.NUMBER:\n if (typeof value === 'object') {\n if (value.gte || value.lte) {\n setPredicate(ResourceListFilterPredicate.BETWEEN)\n } else if (value.gt) {\n setPredicate(ResourceListFilterPredicate.GREATER_THAN)\n } else if (value.lt) {\n setPredicate(ResourceListFilterPredicate.LESS_THAN)\n } else {\n Sentry.captureException(new Error(`[ResourceFilterInput - ${filter.type}] Unable to determine predicate from value`))\n }\n } else if (typeof value === 'string') {\n setPredicate(ResourceListFilterPredicate.EQUALS)\n } else {\n Sentry.captureException(new Error(`[ResourceFilterInput - ${filter.type}] Unable to determine predicate from value`))\n }\n break\n case ResourceListFilterType.DATE:\n if (typeof value === 'object') {\n if (value.gte && value.lte) {\n setPredicate(ResourceListFilterPredicate.BETWEEN)\n } else if (value.gte) {\n setPredicate(ResourceListFilterPredicate.IS_AFTER_OR_ON)\n } else if (value.lte) {\n setPredicate(ResourceListFilterPredicate.IS_BEFORE_OR_ON)\n } else if (value.gt) {\n setPredicate(ResourceListFilterPredicate.IS_AFTER)\n } else if (value.lt) {\n setPredicate(ResourceListFilterPredicate.IS_BEFORE)\n } else if (value.present) {\n setPredicate(ResourceListFilterPredicate.PRESENT)\n } else {\n Sentry.captureException(new Error(`[ResourceFilterInput - ${filter.type}] Unable to determine predicate from value`))\n }\n } else if (typeof value === 'string') {\n setPredicate(ResourceListFilterPredicate.EQUALS)\n } else {\n Sentry.captureException(new Error(`[ResourceFilterInput - ${filter.type}] Unable to determine predicate from value`))\n }\n break\n }\n } else {\n switch (filter.type) {\n case ResourceListFilterType.STRING:\n setPredicate(ResourceListFilterPredicate.CONTAINS)\n break\n case ResourceListFilterType.SINGLE_OPTION:\n break\n case ResourceListFilterType.MULTIPLE_OPTION:\n break\n case ResourceListFilterType.DATE:\n setPredicate(ResourceListFilterPredicate.EQUALS)\n break\n case ResourceListFilterType.NUMBER:\n setPredicate(ResourceListFilterPredicate.EQUALS)\n break\n case ResourceListFilterType.BOOLEAN:\n break\n }\n }\n }, [])\n\n const onPredicateChange = (predicate: string) => {\n const newPredicate = predicate as ResourceListFilterPredicate\n\n // Set new predicate\n setPredicate(newPredicate)\n\n let newValue = value\n const predicateAbbreviation = ResourceHelper.getPredicateAbbreviation(newPredicate)\n\n switch (newPredicate) {\n case ResourceListFilterPredicate.CONTAINS:\n newValue = { [predicateAbbreviation]: null }\n break\n case ResourceListFilterPredicate.EQUALS:\n newValue = ''\n break\n case ResourceListFilterPredicate.BETWEEN:\n newValue = {}\n break\n case ResourceListFilterPredicate.GREATER_THAN:\n newValue = { [predicateAbbreviation]: null }\n break\n case ResourceListFilterPredicate.LESS_THAN:\n newValue = { [predicateAbbreviation]: null }\n break\n case ResourceListFilterPredicate.IS_AFTER:\n newValue = { [predicateAbbreviation]: null }\n break\n case ResourceListFilterPredicate.IS_AFTER_OR_ON:\n newValue = { [predicateAbbreviation]: null }\n break\n case ResourceListFilterPredicate.IS_BEFORE:\n newValue = { [predicateAbbreviation]: null }\n break\n case ResourceListFilterPredicate.IS_BEFORE_OR_ON:\n newValue = { [predicateAbbreviation]: null }\n break\n case ResourceListFilterPredicate.PRESENT:\n newValue = { [predicateAbbreviation]: String(true) }\n break\n default: throw new Error('[onPredicateChange] Invalid predicate')\n }\n\n onFilterValueChange(name, newValue)\n }\n\n switch (filter.type) {\n case ResourceListFilterType.STRING:\n const stringPredicateOptions = [\n { label: t(`ResourceListFilterPredicate::${ResourceListFilterPredicate.CONTAINS}`), value: String(ResourceListFilterPredicate.CONTAINS) },\n { label: t(`ResourceListFilterPredicate::${ResourceListFilterPredicate.EQUALS}`), value: String(ResourceListFilterPredicate.EQUALS) },\n ]\n\n const selectedStringPredicateOption = stringPredicateOptions.find(predicateOption => predicateOption.value === predicate)\n const inputValue = typeof value === 'object' ? value[ResourceHelper.getPredicateAbbreviation(predicate)] : value\n\n return (\n \n onPredicateChange(option.value)}\n />\n \n {\n let newValue: any = e.currentTarget.value\n\n switch (predicate) {\n case ResourceListFilterPredicate.CONTAINS:\n newValue = { [ResourceHelper.getPredicateAbbreviation(ResourceListFilterPredicate.CONTAINS)]: newValue }\n break\n case ResourceListFilterPredicate.EQUALS:\n newValue = newValue\n break\n }\n if (onFilterValueChange) onFilterValueChange(name, newValue)\n }}\n value={inputValue || ''}\n />\n \n \n )\n case ResourceListFilterType.SINGLE_OPTION:\n const singleOptions = filter.options || []\n let selectedSingleOption = null\n\n if (value) {\n const valueOption = singleOptions.find(o => o.value === value)\n\n if (valueOption) {\n selectedSingleOption = valueOption\n }\n }\n\n return (\n {\n const value = option ? option.value : []\n\n if (onFilterValueChange) onFilterValueChange(name, value)\n }}\n />\n )\n case ResourceListFilterType.SINGLE_RESOURCE:\n return (\n {\n if (onFilterValueChange) onFilterValueChange(name, value)\n }}\n />\n )\n case ResourceListFilterType.MULTI_RESOURCE:\n return (\n {\n if (onFilterValueChange) onFilterValueChange(name, value)\n }}\n isMulti={true}\n />\n )\n case ResourceListFilterType.MULTIPLE_OPTION:\n const multipleOptions = filter.options || []\n let selectedMultipleOption = null\n\n if (value) {\n const selectedValues = value.in\n const valueOption = multipleOptions.filter(o => selectedValues.includes(o.value))\n\n if (valueOption) {\n selectedMultipleOption = valueOption\n }\n }\n\n return (\n {\n // @ts-ignore\n const value = selectedOptions ? selectedOptions.map(option => option.value) : []\n\n if (onFilterValueChange) onFilterValueChange(name, { in: value })\n }}\n />\n )\n case ResourceListFilterType.DATE:\n const datePredicateOptions = [\n { label: t(`ResourceListFilterPredicate::${ResourceListFilterPredicate.EQUALS}`), value: String(ResourceListFilterPredicate.EQUALS) },\n { label: t(`ResourceListFilterPredicate::${ResourceListFilterPredicate.BETWEEN}`), value: String(ResourceListFilterPredicate.BETWEEN) },\n { label: t(`ResourceListFilterPredicate::${ResourceListFilterPredicate.IS_AFTER}`), value: String(ResourceListFilterPredicate.IS_AFTER) },\n { label: t(`ResourceListFilterPredicate::${ResourceListFilterPredicate.IS_AFTER_OR_ON}`), value: String(ResourceListFilterPredicate.IS_AFTER_OR_ON) },\n { label: t(`ResourceListFilterPredicate::${ResourceListFilterPredicate.IS_BEFORE}`), value: String(ResourceListFilterPredicate.IS_BEFORE) },\n { label: t(`ResourceListFilterPredicate::${ResourceListFilterPredicate.IS_BEFORE_OR_ON}`), value: String(ResourceListFilterPredicate.IS_BEFORE_OR_ON) },\n { label: t(`ResourceListFilterPredicate::${ResourceListFilterPredicate.PRESENT}`), value: String(ResourceListFilterPredicate.PRESENT) },\n ]\n const selectedDatePredicateOption = datePredicateOptions.find(predicateOption => predicateOption.value === predicate)\n const displayDateArrow = predicate !== ResourceListFilterPredicate.BETWEEN\n const isAfterOrOnDateValue = typeof value === 'object' ? value[ResourceHelper.getPredicateAbbreviation(ResourceListFilterPredicate.IS_AFTER_OR_ON)] : null\n const isBeforeOrOnDateValue = typeof value === 'object' ? value[ResourceHelper.getPredicateAbbreviation(ResourceListFilterPredicate.IS_BEFORE_OR_ON)] : null\n\n const nullPredicateOptions = [\n { label: t(`NullPredicate::Yes`), value: String(true) },\n { label: t(`NullPredicate::No`), value: String(false) },\n ]\n\n let selectedNullPredicateValue = null\n\n if (typeof value === 'object') {\n selectedNullPredicateValue = nullPredicateOptions.find(option => option.value === String(value[ResourceHelper.getPredicateAbbreviation(ResourceListFilterPredicate.PRESENT)]))\n }\n\n const getSingleDateInputValue = () => {\n if (!predicate) return null\n\n switch (predicate) {\n case ResourceListFilterPredicate.EQUALS:\n return value ? moment(value) : null\n case ResourceListFilterPredicate.IS_AFTER:\n case ResourceListFilterPredicate.IS_AFTER_OR_ON:\n case ResourceListFilterPredicate.IS_BEFORE:\n case ResourceListFilterPredicate.IS_BEFORE_OR_ON:\n const predicateValue = value[ResourceHelper.getPredicateAbbreviation(predicate)]\n return predicateValue ? moment(predicateValue) : null\n default:\n return null\n }\n }\n\n return (\n \n onPredicateChange(option.value)}\n />\n \n {predicate !== ResourceListFilterPredicate.BETWEEN && predicate !== ResourceListFilterPredicate.PRESENT && {\n const propagateValue = (value: any) => {\n switch (predicate) {\n case ResourceListFilterPredicate.EQUALS:\n if (onFilterValueChange) onFilterValueChange(name, value)\n break\n case ResourceListFilterPredicate.IS_AFTER:\n case ResourceListFilterPredicate.IS_AFTER_OR_ON:\n case ResourceListFilterPredicate.IS_BEFORE:\n case ResourceListFilterPredicate.IS_BEFORE_OR_ON:\n if (onFilterValueChange) onFilterValueChange(name, { [ResourceHelper.getPredicateAbbreviation(predicate)]: value })\n break\n default: throw new Error('[ResourceFilterInput] Invalid predicate')\n }\n }\n\n if (newValue === '') {\n propagateValue('')\n } else {\n const newDate = moment(newValue)\n\n if (newDate.isValid()) {\n propagateValue(newDate.format('YYYY-MM-DD'))\n }\n }\n }}\n closeOnSelect\n />}\n\n {predicate === ResourceListFilterPredicate.BETWEEN && \n {\n if (newValue === '' && onFilterValueChange) {\n onFilterValueChange(name, { ...value, [ResourceHelper.getPredicateAbbreviation(ResourceListFilterPredicate.IS_AFTER_OR_ON)]: null })\n } else {\n const newDate = moment(newValue)\n\n if (newDate.isValid() && onFilterValueChange) {\n onFilterValueChange(name, { ...value, [ResourceHelper.getPredicateAbbreviation(ResourceListFilterPredicate.IS_AFTER_OR_ON)]: newDate.format('YYYY-MM-DD') })\n }\n }\n }}\n closeOnSelect\n />\n\n {t('ResourceListFilterInput::and')}\n\n {\n if (newValue === '' && onFilterValueChange) {\n onFilterValueChange(name, { ...value, [ResourceHelper.getPredicateAbbreviation(ResourceListFilterPredicate.IS_BEFORE_OR_ON)]: null })\n } else {\n const newDate = moment(newValue)\n\n if (newDate.isValid() && onFilterValueChange) {\n onFilterValueChange(name, { ...value, [ResourceHelper.getPredicateAbbreviation(ResourceListFilterPredicate.IS_BEFORE_OR_ON)]: newDate.format('YYYY-MM-DD') })\n }\n }\n }}\n closeOnSelect\n />\n\n }\n {predicate === ResourceListFilterPredicate.PRESENT && \n {\n return {\n ...base,\n width: '100%',\n }\n }\n }}\n onChange={(option) => {\n const value = option ? option.value : []\n\n if (onFilterValueChange) onFilterValueChange(name, { [ResourceHelper.getPredicateAbbreviation(ResourceListFilterPredicate.PRESENT)]: value })\n }}\n />\n }\n \n \n )\n case ResourceListFilterType.NUMBER:\n const numberPredicateOptions = [\n { label: t(`ResourceListFilterPredicate::${ResourceListFilterPredicate.EQUALS}`), value: String(ResourceListFilterPredicate.EQUALS) },\n { label: t(`ResourceListFilterPredicate::${ResourceListFilterPredicate.BETWEEN}`), value: String(ResourceListFilterPredicate.BETWEEN) },\n { label: t(`ResourceListFilterPredicate::${ResourceListFilterPredicate.GREATER_THAN}`), value: String(ResourceListFilterPredicate.GREATER_THAN) },\n { label: t(`ResourceListFilterPredicate::${ResourceListFilterPredicate.LESS_THAN}`), value: String(ResourceListFilterPredicate.LESS_THAN) },\n ]\n const selectedNumberPredicateOptions = numberPredicateOptions.find(predicateOption => predicateOption.value === predicate)\n const displayNumberArrow = predicate !== ResourceListFilterPredicate.BETWEEN\n const isAfterOrOnNumberValue = typeof value === 'object' ? value[ResourceHelper.getPredicateAbbreviation(ResourceListFilterPredicate.IS_AFTER_OR_ON)] : null\n const isBeforeOrOnNumberValue = typeof value === 'object' ? value[ResourceHelper.getPredicateAbbreviation(ResourceListFilterPredicate.IS_BEFORE_OR_ON)] : null\n\n const getSingleInputValue = () => {\n if (!predicate) return null\n\n switch (predicate) {\n case ResourceListFilterPredicate.EQUALS:\n return value === undefined ? '' : value\n case ResourceListFilterPredicate.GREATER_THAN:\n case ResourceListFilterPredicate.LESS_THAN:\n case ResourceListFilterPredicate.IS_AFTER:\n case ResourceListFilterPredicate.IS_AFTER_OR_ON:\n case ResourceListFilterPredicate.IS_BEFORE:\n case ResourceListFilterPredicate.IS_BEFORE_OR_ON:\n const predicateValue = value[ResourceHelper.getPredicateAbbreviation(predicate)]\n return predicateValue ? predicateValue : null\n default:\n return null\n }\n }\n\n return (\n \n onPredicateChange(option.value)}\n />\n \n {predicate !== ResourceListFilterPredicate.BETWEEN && {\n const newValue = e.currentTarget.value\n\n const propagateValue = (value: any) => {\n switch (predicate) {\n case ResourceListFilterPredicate.EQUALS:\n if (onFilterValueChange) onFilterValueChange(name, value)\n break\n case ResourceListFilterPredicate.GREATER_THAN:\n case ResourceListFilterPredicate.LESS_THAN:\n case ResourceListFilterPredicate.IS_AFTER:\n case ResourceListFilterPredicate.IS_AFTER_OR_ON:\n case ResourceListFilterPredicate.IS_BEFORE:\n case ResourceListFilterPredicate.IS_BEFORE_OR_ON:\n if (onFilterValueChange) onFilterValueChange(name, { [ResourceHelper.getPredicateAbbreviation(predicate)]: value })\n break\n default: throw new Error('[ResourceFilterInput] Invalid predicate')\n }\n }\n\n if (newValue === '') {\n propagateValue('')\n } else {\n propagateValue(newValue)\n }\n }}\n placeholder='10'\n step={.01}\n />}\n {predicate === ResourceListFilterPredicate.BETWEEN && \n {\n const newValue = e.currentTarget.value\n\n if (onFilterValueChange) onFilterValueChange(name, { ...value, [ResourceHelper.getPredicateAbbreviation(ResourceListFilterPredicate.IS_AFTER_OR_ON)]: newValue })\n }}\n placeholder='10'\n step={.01}\n />\n\n {t('ResourceListFilterInput::and')}\n\n {\n const newValue = e.currentTarget.value\n\n if (onFilterValueChange) onFilterValueChange(name, { ...value, [ResourceHelper.getPredicateAbbreviation(ResourceListFilterPredicate.IS_BEFORE_OR_ON)]: newValue })\n }}\n placeholder='10'\n step={.01}\n />\n }\n \n \n )\n case ResourceListFilterType.BOOLEAN:\n return (\n {\n if (onFilterValueChange) onFilterValueChange(name, checked)\n }}\n />\n )\n }\n}\n\nconst mapStateToProps = (state: AppState): IStateToProps => {\n const {\n authentication: {\n currentUser: {\n workspace: {\n setting\n }\n }\n }\n } = state\n\n return {\n setting: setting,\n }\n}\n\nexport default connect(mapStateToProps)(ResourceFilterInput)","import * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport { Style } from '../../styles'\nimport { Pagination as PaginationType } from '../../types'\nimport Pagination from '../Pagination/Pagination'\n\nconst Container = styled.div`\n\tpadding: ${Style.spacing.x1_5};\n\tbackground: white;\n\tcolor: #637381;\n\ttext-align: center;\n\tborder-bottom-left-radius: 8px;\n\tborder-bottom-right-radius: 8px;\n\tborder-top: 1px solid ${Style.color.border};\n`\n\nconst FooterLeft = styled.div`\n\tflex: 1;\n`\n\nconst FooterRight = styled.div`\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: flex-end;\n\tflex: 1;\n`\n\nconst Text = styled.div`\n\t${(props: { clickable: boolean }) => props.clickable && css`\n\t\tcursor: pointer;\n\n\t\t&:hover {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t`}\n`\n\ninterface IProps {\n\titemCount: number\n\tpagination?: PaginationType\n\tonPageChange?: (page: number) => void\n}\n\nexport default class ResourceFooter extends React.PureComponent {\n\trender() {\n\t\tconst { itemCount, pagination, onPageChange } = this.props\n\n\t\tconst onPaginationPageChange = (selectedPage: { selected: number }) => {\n\t\t\tconst newPage = selectedPage.selected + 1\n\t\t\tif (onPageChange) onPageChange(newPage)\n\t\t}\n\n\t\tif (itemCount > 0 && pagination) {\n\t\t\tconst { page, pageCount } = pagination\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)\n\t\t}\n\n\t\treturn null\n\t}\n}","import * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport { Style } from '../../styles'\nimport { useTranslation } from 'react-i18next'\nimport ResourceListFilterComponent from './ResourceFilter'\nimport { ResourceFilter } from '../../types'\nimport { ResourceTableAction } from './ResourceTable'\nimport ResourceCheckbox from './ResourceCheckbox'\nimport Popover from '../Popover/Popover'\nimport ActionList from '../ActionList/ActionList'\nimport Icon from '../Icons/Icon'\nimport { useDebouncedCallback } from 'use-debounce'\n\nconst HeaderOuterWrapper = styled.div<{ hasBorder?: boolean }>`\n\tposition: relative;\n\tborder-bottom: 1px solid ${Style.color.border};\n\tborder-top-left-radius: 8px;\n\tborder-top-right-radius: 8px;\n`\n\nconst HeaderWrapper = styled.div`\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: flex-start;\n\tflex-direction: column;\n\twidth: 100%;\n\tpadding: ${Style.spacing.x1} ${Style.spacing.x1_5};\n\tbackground-color: white;\n\tborder-top-left-radius: 8px;\n\tborder-top-right-radius: 8px;\n`\n\nconst HeaderContentWrapper = styled.div`\n\tdisplay: flex;\n\twidth: 100%;\n\topacity: 1;\n\ttransition: opacity .2s cubic-bezier(.64,0,.35,1);\n\tflex-direction: row;\n\talign-items: center;\n\tjustify-content: space-between;\n\tflex-wrap: wrap;\n\n @media screen and (max-width: ${Style.breakpoints.SMALL}) {\n flex-direction: row;\n\t\talign-items: center;\n\t}\n`\n\nconst ResourceLabelWrapper = styled.div`\n\tflex: 1 1 0%;\n\tdisplay: block;\n\n\t@media screen and (max-width: ${Style.breakpoints.SMALL}) {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\t&:only-child {\n\t\talign-self: flex-start;\n\t}\n`\n\nconst ActionsLeftContainer = styled.div`\n\tmargin-right: ${Style.spacing.x0_5};\n\tmin-width: fit-content;\n`\n\nconst ResourceLabel = styled.div`\n\tmargin-left: 20px;\n\tflex: 1 1 0%;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\tmax-width: 100%;\n\ttext-overflow: ellipsis;\n\tpadding: 1px 0;\n\tfont-size: 14px;\n`\n\nconst HeaderLeftContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n\tflex-wrap: wrap;\n\tmargin-right: ${Style.spacing.x1};\n\n\t> * {\n\t\tmargin-top: 4px;\n\t\tmargin-bottom: 4px;\n\t\tmargin-right: 4px;\n\t}\n`\n\nconst HeaderRightContainer = styled.div`\n\t> * {\n\t\tmargin-top: 4px;\n\t\tmargin-bottom: 4px;\n\t}\n`\n\nconst Actions = styled.div`\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tflex: 1;\n\tflex-wrap: wrap;\n\tgrid-gap: 4px;\n\n\t@media screen and (max-width: ${Style.breakpoints.SMALL}) {\n\t\talign-items: initial;\n\t}\n`\n\nconst Action = styled.div`\n\tdisplay: flex;\n\n\t&:first-child {\n\t\tmargin-left: 0;\n\t}\n\n\t@media screen and (max-width: ${Style.breakpoints.SMALL}) {\n\t\tmargin: 0;\n\t}\n`\n\nconst SortWrapper = styled.div`\n\tposition: relative;\n\tdisplay: flex;\n\tflex: 1 1 0%;\n\talign-items: center;\n\tleft: auto;\n\tflex: 0 1 auto;\n\tmargin-left: 16px;\n\n\t&:only-child {\n\t\tmargin-left: 0;\n\t\tflex: 1;\n\t\tdisplay: flex;\n justify-content: flex-end;\n\t}\n\n\t@media screen and (max-width: ${Style.breakpoints.SMALL}) {\n\t\tmargin-left: 0;\n\t}\n`\n\nconst SortSelect = styled.div`\n\tposition: relative;\n`\n\nconst SortSelectInput = styled.select`\n\tfont-size: 16px;\n\tfont-weight: 400;\n\tline-height: 24px;\n\ttext-transform: none;\n\tletter-spacing: normal;\n\tposition: absolute;\n\ttext-rendering: auto;\n\ttop: 0;\n\tleft: 0;\n\tz-index: 3;\n\twidth: 100%;\n\theight: 100%;\n\tmargin: 0;\n\topacity: .001;\n\tappearance: none;\n`\n\nconst SortContent = styled.div`\n\tfont-size: 14px;\n\tfont-weight: 400;\n\tline-height: 24px;\n\ttext-transform: none;\n\tletter-spacing: normal;\n\tposition: relative;\n\tz-index: 2;\n\tdisplay: flex;\n\talign-items: center;\n\twidth: 100%;\n\tpadding: 5px 8px 5px 12px;\n\tmin-height: 38px;\n`\n\nconst SortInlineLabel = styled.div`\n color: #637381;\n margin-right: 4px;\n white-space: nowrap;\n overflow: hidden;\n`\n\nconst SortSelectedOption = styled.div`\n\tflex: 1 1 0%;\n\twhite-space: nowrap;\n\toverflow: hidden;\n`\n\nconst SortSelectIcon = styled.div`\n\tdisplay: block;\n\theight: 20px;\n\twidth: 20px;\n\tmax-height: 100%;\n\tmax-width: 100%;\n\tmargin: auto;\n\n\tsvg {\n\t\tfill: #637381;\n\t}\n`\n\nconst SortSelectBackdrop = styled.div`\n\tbackground-color: #c4cdd5;\n\tborder: 1px solid transparent;\n\tbox-shadow: 0 0 0 1px transparent, 0 1px 0 0 rgba(22,29,37,.05);\n\tborder-radius: 3px;\n\ttransition-property: box-shadow,background-color;\n\ttransition-duration: .2s;\n\ttransition-timing-function: cubic-bezier(.64,0,.35,1);\n\tposition: absolute;\n\tz-index: 1;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\n\t&::after {\n\t\tcontent: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: block;\n background: linear-gradient(180deg, #fff, #f9fafb);\n border-radius: 2px;\n\t}\n`\n\nconst BulkActionsContainer = styled.div`\n\tdisplay: flex;\n\twidth: 100%;\n\tflex-direction: row;\n\tmargin-top: 4px;\n`\n\nconst BulkActionsWrapper = styled.div`\n\twidth: 100%;\n`\n\nconst BulkActionsButtonGroupWrapper = styled.div`\n\tdisplay: flex;\n\tflex-direction: row;\n\twidth: auto;\n\tjustify-content: flex-start;\n\tmargin-right: ${Style.spacing.x1};\n\tmax-width: 100%;\n\tflex-wrap: wrap;\n\twidth: 100%;\n`\n\nconst BulkActionButtonGroupItem = styled.div<{ hideOnMobile?: boolean, hideOnDesktop?: boolean, checkbox?: boolean }>`\n\tfont-size: 15px;\n\tline-height: 15px;\n\ttext-transform: initial;\n\tletter-spacing: initial;\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 36px;\n\tmin-width: 36px;\n\tmargin: 0;\n\tpadding: ${Style.spacing.x1} ${Style.spacing.x2};\n\tline-height: 1;\n\tcursor: pointer;\n\ttext-decoration: none;\n\ttext-align: left;\n\tbackground: white;\n\tbox-shadow: rgba(0, 0, 0, .05) 0px 1px 0px 0px;\n\tborder: 1px solid ${Style.color.border};\n\tborder-top-color: ${Style.color.border};\n\tborder-bottom-color: ${Style.color.border};\n\n\t&:first-child {\n\t\tborder-top-left-radius: 4px;\n\t\tborder-bottom-left-radius: 4px;\n\t\tborder-top-right-radius: 0px;\n\t\tborder-bottom-right-radius: 0px;\n\t}\n\n\t&:not(:first-child):not(:last-child) {\n\t\tborder-left: none;\n\t}\n\n\t&:not([style*=\"display: none\"]):last-child {\n\t\tborder-top-right-radius: 4px;\n\t\tborder-bottom-right-radius: 4px;\n\t}\n\n\t&:hover {\n\t\tbackground: #f6f6f7;\n\t}\n\n\tsvg {\n\t\twidth: 15px;\n\t\theight: 15px;\n\t}\n\n\ti {\n\t\tfont-size: 15px;\n\t}\n\n\tsvg, i {\n\t\tmargin-right: 4px;\n\t}\n\n\t${props => props.checkbox && css`\n\t\tsvg {\n\t\t\twidth: 20px;\n\t\t\theight: 20px;\n\t\t\tmargin-right: 0;\n\t\t}\n\t`}\n\n\t${props => props.hideOnMobile && css`\n\t\t@media screen and (max-width: ${Style.breakpoints.SMALL}) {\n\t\t\tdisplay: none;\n\t\t}\n\t`}\n\n\t${props => props.hideOnDesktop && css`\n\t\t@media screen and (min-width: ${Style.breakpoints.SMALL}) {\n\t\t\tdisplay: none;\n\t\t}\n\t`}\n`\n\nexport const ResourceSearch = styled.div`\n\tposition: relative;\n\tdisplay: flex;\n\tflex-direction: row;\n\t\n\tinput {\n\t\tpadding-left: 28px !important;\n\t\tpadding-right: 32px !important;\n\t\tmin-width: 160px;\n\t}\n`\n\nexport const ResourceSearchIcon = styled.div`\n\tposition: absolute;\n\tleft: 8px;\n\ttop: 50%;\n\ttransform: translateY(-50%);\n\tpointer-events: none;\n`\n\nexport const ResourceSearchCloseIcon = styled.div`\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tright: 0;\n\tcursor: pointer;\n\tpadding-left: 4px;\n\tpadding-right: 12px;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n`\n\ninterface IProps {\n\tdata: T[]\n\tresourceLabel?: () => string | JSX.Element\n\tresourceLabelStyle?: React.CSSProperties\n\tactionsLeft?: JSX.Element[]\n\tactionsRight?: JSX.Element[]\n\tfilters: ResourceFilter[]\n\tactiveFilters?: any\n\tsortValue?: string\n\tsortOptions?: { label: string, value: string }[]\n\tselectedItems?: string[]\n\tpromotedBulkActions?: ResourceTableAction[]\n\tbulkActions?: ResourceTableAction[]\n\tsearchValue?: string\n\tonSelectionChange?: (selectedItems: string[]) => void\n\tonSortChange?: (value: string) => void\n\tonFiltersChange?: (filters: any) => void\n\tonSearchChange?: (searchValue: string) => void\n\tonSearchSubmit?: (searchValue: string) => void\n}\n\ninterface IState {\n\tbulkActionPopoverActive: boolean\n\tmobileActionsPopoverActive: boolean\n}\n\nconst ResourceHeader = (props: IProps) => {\n\tconst { t } = useTranslation()\n\tconst [state, setState] = React.useState({\n\t\tbulkActionPopoverActive: false,\n\t\tmobileActionsPopoverActive: false,\n\t})\n\tconst {\n\t\tdata,\n\t\tresourceLabel,\n\t\tresourceLabelStyle,\n\t\tactionsLeft,\n\t\tactionsRight,\n\t\tfilters,\n\t\tactiveFilters,\n\t\tonFiltersChange,\n\t\tsortOptions,\n\t\tsortValue,\n\t\tonSortChange,\n\t\tselectedItems,\n\t\tpromotedBulkActions,\n\t\tbulkActions,\n\t\tsearchValue,\n\t\tonSearchChange,\n\t\tonSearchSubmit,\n\t} = props\n\tconst { bulkActionPopoverActive, mobileActionsPopoverActive } = state\n\tconst itemsCount = data.length\n\tconst fullySelected = selectedItems?.length === data?.length\n\tconst partiallySelected = selectedItems?.length !== 0 && selectedItems?.length < data?.length\n\tconst noneSelected = selectedItems?.length === 0\n\tconst actions = [...(promotedBulkActions || []), ...(bulkActions || [])]\n\n\tconst debouncedSearchValueChange = useDebouncedCallback(\n\t\t(searchValue: string) => props.onSearchChange(searchValue), 250\n\t);\n\n\tconst onResourcesSelectionChange = () => {\n\t\tif (props.onSelectionChange) {\n\t\t\tif (noneSelected || partiallySelected) {\n\t\t\t\tprops.onSelectionChange(data.map(item => item.id))\n\t\t\t} else {\n\t\t\t\tprops.onSelectionChange([])\n\t\t\t}\n\t\t}\n\t}\n\n\tconst onResourceSearchChange = (searchValue) => {\n\t\tif (onSearchChange) onSearchChange(searchValue)\n\t}\n\n\tconst onResourceSearchKeyUp = (e) => {\n\t\tif (e.key === 'Enter' && onSearchSubmit) onSearchSubmit(e.currentTarget.value)\n\t}\n\n\tconst onResourceSearchClear = (searchValue) => {\n\t\tonSearchSubmit(searchValue)\n\t}\n\n\tconst onToggleBulkActionsPopover = () => {\n\t\tsetState({ ...state, bulkActionPopoverActive: !bulkActionPopoverActive })\n\t}\n\n\tconst onBulkActionsPopoverClose = () => {\n\t\tsetState({ ...state, bulkActionPopoverActive: false })\n\t}\n\n\tconst onToggleMobileActionsPopover = () => {\n\t\tsetState({ ...state, mobileActionsPopoverActive: !mobileActionsPopoverActive })\n\t}\n\n\tconst onMobileActionsPopoverClose = () => {\n\t\tsetState({ ...state, mobileActionsPopoverActive: false })\n\t}\n\n\tlet selectedOption = null\n\n\tif (sortOptions && sortValue) {\n\t\tselectedOption = sortOptions.find(sortOption => sortOption.value === sortValue)\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{resourceLabel && \n\t\t\t\t\t\t\t{resourceLabel && \n\t\t\t\t\t\t\t\t{typeof resourceLabel === 'function' ? resourceLabel() : resourceLabel}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t{actionsLeft &&\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{actionsLeft.map(action => {\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{action}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t{onSearchChange && \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t onResourceSearchChange(e.currentTarget.value)}\n\t\t\t\t\t\t\t\tonKeyUp={onResourceSearchKeyUp}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{searchValue?.length > 0 && onResourceSearchClear('')}>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t{filters && filters.length > 0 && }\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{actionsRight && \n\t\t\t\t\t\t\t{actionsRight.map(action => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{action}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t{sortOptions && sortOptions.length > 0 && \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t onSortChange(e.currentTarget.value)} value={sortValue}>\n\t\t\t\t\t\t\t\t\t{sortOptions.map(option => {\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{t('ResourceListHeader::Sort by')}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{selectedItems?.length > 0 && < BulkActionsContainer>\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{t('ResourceHeader::{{count}} selected', { count: selectedItems?.length || 0 })}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{promotedBulkActions && promotedBulkActions.map((promotedBulkAction, index) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{promotedBulkAction.icon && }\n\t\t\t\t\t\t\t\t\t\t{promotedBulkAction.content}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t{bulkActions?.length > 0 && \n\t\t\t\t\t\t\t\t\t\t{t('ResourceHeader::More actions')}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonClose={onBulkActionsPopoverClose}\n\t\t\t\t\t\t\t\tplacement='bottom'\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t ({ key: String(index), icon: bulkAction.icon, content: bulkAction.content, destructive: true }))}\n\t\t\t\t\t\t\t\t\tonClick={(key: string) => {\n\t\t\t\t\t\t\t\t\t\tonBulkActionsPopoverClose()\n\t\t\t\t\t\t\t\t\t\tbulkActions[Number(key)].onAction()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\thasIndicator\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t{actions?.length > 0 && \n\t\t\t\t\t\t\t\t\t\t{t('ResourceHeader::Actions')}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonClose={onMobileActionsPopoverClose}\n\t\t\t\t\t\t\t\tplacement='bottom'\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t ({ key: String(index), icon: action.icon, content: action.content, destructive: action.destructive }))}\n\t\t\t\t\t\t\t\t\tonClick={(key: string) => {\n\t\t\t\t\t\t\t\t\t\tonMobileActionsPopoverClose()\n\t\t\t\t\t\t\t\t\t\tactions[Number(key)].onAction()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\thasIndicator\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t
\n\t\t
\n\t)\n}\n\nexport default ResourceHeader","import * as React from 'react'\nimport styled from 'styled-components'\nimport Loader from '../Loaders/Loader'\n\nconst Container = styled.div`\n position: absolute;\n top: 64px;\n right: 0;\n bottom: 0;\n left: 0;\n display: flex;\n justify-content: center;\n z-index: 2;\n background-color: hsla(0,0%,100%,.5);\n padding-top: 64px;\n`\n\nexport default class ResourceSpinner extends React.PureComponent {\n render() {\n return (\n \n \n \n )\n }\n}","import * as React from 'react'\nimport Card from '../Card/Card'\nimport styled, { css } from 'styled-components'\nimport ResourceHeader from './ResourceHeader'\nimport ResourceFooter from './ResourceFooter'\nimport ResourceSpinner from './ResourceSpinner'\nimport ResourceTableRowHeader from './ResourceTableRowHeader'\nimport ResourceTableRow from './ResourceTableRow'\nimport { Pagination, ProjectProperty, ResourceFilter } from '../../types'\nimport ResourceCheckbox from './ResourceCheckbox'\nimport { IconTypes } from '../Icons/Icon'\n\nconst TableContainer = styled.div<{ maxHeight?: string }>`\n overflow-x: auto;\n overscroll-behavior-x: contain;\n scroll-behavior: smooth;\n border-bottom-left-radius: 8px;\n border-bottom-right-radius: 8px;\n\n ${props => props.maxHeight && css`\n max-height: ${props.maxHeight};\n `}\n`\n\nconst Table = styled.table`\n min-width: 100%;\n width: 100%;\n border-collapse: collapse;\n`\n\nexport interface ResourceTableHeader {\n title?: string,\n align?: 'left' | 'right' | 'center',\n colSpan?: number,\n sticky?: boolean,\n stickyTop?: number | string\n stickyRight?: number | string\n stickyBottom?: number | string\n stickyLeft?: number | string\n visible?: boolean\n}\n\nexport interface ResourceTableAction {\n icon?: IconTypes\n content: string\n onAction: () => void\n destructive?: boolean\n}\n\ninterface IProps {\n style?: React.CSSProperties\n data: T[]\n resourceLabel?: () => string | string | JSX.Element\n resourceLabelStyle?: React.CSSProperties\n renderRow: (item: T, index: number) => JSX.Element\n renderEmpty?: any\n filters?: ResourceFilter[]\n activeFilters?: any\n actionsLeft?: JSX.Element[]\n actionsRight?: JSX.Element[]\n sortValue?: string\n sortOptions?: { label: string, value: string }[]\n pagination?: Pagination\n isLoading?: boolean\n\n headers?: ResourceTableHeader[]\n stickyHeader?: boolean\n maxHeight?: string\n selectedItems?: string[]\n promotedBulkActions?: ResourceTableAction[]\n bulkActions?: ResourceTableAction[]\n searchValue?: string\n onSelectionChange?: (selectedItems: string[]) => void\n onSortChange?: (value: string) => void\n onFiltersChange?: (filters: any) => void\n onSearchChange?: (value: string) => void\n onSearchSubmit?: (value: string) => void\n onPageChange?: (page: number) => void\n}\n\nconst ResourceTable = (props: IProps) => {\n const {\n data,\n resourceLabel,\n resourceLabelStyle,\n headers,\n renderRow,\n renderEmpty,\n filters,\n activeFilters,\n onFiltersChange,\n actionsLeft,\n actionsRight,\n sortOptions,\n sortValue,\n onSortChange,\n pagination,\n isLoading,\n style,\n stickyHeader,\n maxHeight,\n selectedItems,\n onSelectionChange,\n promotedBulkActions,\n bulkActions,\n searchValue,\n onSearchChange,\n onSearchSubmit,\n onPageChange\n } = props\n const itemsCount = data.length\n const fullySelected = selectedItems?.length === data?.length\n const partiallySelected = selectedItems?.length !== 0 && selectedItems?.length < data?.length\n const noneSelected = selectedItems?.length === 0\n\n const onResourcesSelectionChange = () => {\n if (props.onSelectionChange) {\n if (noneSelected || partiallySelected) {\n props.onSelectionChange(data.map(item => item.id))\n } else {\n props.onSelectionChange([])\n }\n }\n }\n\n return (\n \n \n\n {itemsCount === 0 && renderEmpty}\n {itemsCount > 0 && \n \n {headers && \n {onSelectionChange && \n \n }\n {headers\n .filter(header => header.visible !== false)\n .map((header, index) => {\n const {\n title,\n align,\n colSpan,\n stickyTop,\n stickyRight,\n stickyBottom,\n stickyLeft,\n sticky,\n } = header\n return (\n \n {title}\n \n )\n })}\n }\n\n {data && data.length > 0 && \n {data.map((item, index) => renderRow(item, index))}\n }\n
\n
}\n\n \n\n {isLoading && }\n
\n )\n}\n\nexport default ResourceTable","import * as React from 'react'\nimport styled, { css } from 'styled-components'\nimport { Style } from '../../styles'\nimport ResourceCheckbox from './ResourceCheckbox'\nimport ResourceTableRowData from './ResourceTableRowData'\n\nconst Container = styled.tr<{ header?: boolean }>`\n\tbackground-color: white;\n\tborder-bottom: 1px solid ${Style.color.border};\n\n\t&:last-child {\n\t\tborder-bottom: 0;\n\t}\n\n\t&:hover {\n\t\tbackground: #f6f6f7;\n\n\t\t${ResourceTableRowData} {\n\t\t\tbackground: #f6f6f7;\n\t\t}\n\t}\n\n\t${props => props.header && css`\n\t\tborder-bottom: 0;\n\n\t\t&:hover {\n\t\t\tbackground-color: initial;\n\t\t}\n\t`}\n`\n\ninterface IProps {\n\theader?: boolean\n\tchildren?: React.ReactNode\n\tselected?: boolean\n\tselectionDisabled?: boolean\n\tonSelectionChange?: (selected: boolean) => void\n}\n\nconst ResourceTableRow = (props: IProps) => {\n\tconst { header, selected, selectionDisabled, onSelectionChange } = props\n\n\treturn (\n\t\t\n\t\t\t{onSelectionChange && \n\t\t\t\t\n\t\t\t}\n\t\t\t{props.children}\n\t\t\n\t)\n}\n\nexport default ResourceTableRow","import React from \"react\"\nimport styled from \"styled-components\"\nimport ActionList, { IActionListItem } from \"../ActionList/ActionList\"\nimport Popover from \"../Popover/Popover\"\nimport ResourceTableRowData from \"./ResourceTableRowData\"\n\nconst Container = styled.div`\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\talign-items: flex-start;\n`\n\nconst Wrapper = styled.div`\n\tposition: relative;\n\tpointer-events: auto;\n\tdisplay: flex;\n\tflex: 0 0 22px;\n\tjustify-content: center;\n\talign-items: center;\n\n\tsvg {\n\t\tposition: relative;\n display: block;\n width: 100%;\n max-width: 100%;\n\t\tmax-height: 100%;\n\t\tfill: #637381;\n\t\twidth: 20px;\n\t\theight: 20px;\n\t}\n\n\t&:hover {\n\t\tsvg {\n\t\t\tfill: #212b36;\n\t\t}\n\t}\n`\n\nconst ActionButton = styled.div`\n\tposition: relative;\n\tborder-radius: 3px;\n\tline-height: 1;\n\tcolor: #212b36;\n\ttext-align: center;\n\tcursor: pointer;\n\ttext-decoration: none;\n\ttransition-property: background,border,box-shadow;\n\ttransition-duration: .2s;\n\ttransition-timing-function: cubic-bezier(.64,0,.35,1);\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tbackground: transparent;\n\tborder: none;\n\theight: 24px;\n\theight: 24px;\n`\n\ninterface IProps {\n\tactions?: IActionListItem[]\n\tonActionClick?: (key: string) => void\n\tsticky?: boolean\n\tstickyTop?: string | number\n\tstickyRight?: string | number\n\tstickyBottom?: string | number\n\tstickyLeft?: string | number\n}\n\n\nconst ResourceTableRowActions = (props: IProps) => {\n\tconst { actions, onActionClick, sticky, stickyTop, stickyRight, stickyBottom, stickyLeft } = props\n\tconst [popoverActive, setPopoverActive] = React.useState(false)\n\n\tconst onPopoverClick = () => {\n\t\tsetPopoverActive(!popoverActive)\n\t}\n\n\tconst onPopoverClose = () => {\n\t\tsetPopoverActive(false)\n\t}\n\n\tif (actions.length === 0) return \n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonClose={onPopoverClose}\n\t\t\t\t\t\tplacement='bottom-end'\n\t\t\t\t\t\tstrategy='fixed'\n\t\t\t\t\t>\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tonPopoverClose()\n\t\t\t\t\t\t\t\tonActionClick(key)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\thasIndicator\n\t\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n\nexport default ResourceTableRowActions","import styled, { css } from \"styled-components\"\nimport { Style } from \"../../styles\"\n\nconst ResourceTableRowData = styled.td<{\n\ttextAlign?: 'left' | 'right' | 'center'\n\tverticalAlign?: 'auto' | 'baseline' | 'bottom' | 'top'\n\tsticky?: boolean\n\tstickTop?: number | string\n\tstickyRight?: number | string\n\tstickyBottom?: number | string\n\tstickyLeft?: number | string\n\tmaxWidth?: number | string\n\tmaxWidthMobile?: number | string\n\tellipse?: boolean\n}>`\n\ttext-align: ${(props) => props.textAlign || 'left'};\n\twhite-space: nowrap;\n\tpadding: ${Style.spacing.x1} ${Style.spacing.x2};\n\tvertical-align: ${(props) => props.verticalAlign};\n\n\t${props => props.onClick && css`\n\t\tcursor: pointer;\n\t`}\n\n\t${props => props.sticky && css`\n\t\tposition: sticky;\n\t\tbackground: white;\n\t\tmin-width: 50px;\n\t`}\n\n\t${props => props.stickTop && css`\n\t\ttop: ${props.stickTop};\n\t`}\n\n\t${props => props.stickyRight && css`\n\t\tright: ${props.stickyRight};\n\t`}\n\n\t${props => props.stickyBottom && css`\n\t\tbottom: ${props.stickyBottom};\n\t`}\n\n\t${props => props.stickyLeft && css`\n\t\tleft: ${props.stickyLeft};\n\t`}\n\n\t${props => props.maxWidth && css`\n\t\tmax-width: ${props.maxWidth};\n\t`}\n\n\t${props => props.maxWidthMobile && css`\n\t\t@media screen and (max-width: ${Style.breakpoints.SMALL}) {\n\t\t\tmax-width: ${props.maxWidthMobile};\n\t\t}\n\t`}\n\n\t${props => props.ellipse && css`\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis; \n\t`}\n`\n\nexport default ResourceTableRowData","import styled, { css } from \"styled-components\"\nimport { Style } from \"../../styles\"\n\nconst ResourceTableRowHeader = styled.th<{\n\tsticky?: boolean\n\tstickyTop?: number | string\n\tstickyRight?: number | string\n\tstickyBottom?: number | string\n\tstickyLeft?: number | string\n\tmaxWidth?: string\n}>`\n\tpadding: ${Style.spacing.x1} ${Style.spacing.x2};\n\ttext-align: left;\n\tfont-weight: 800;\n\twhite-space: nowrap;\n\tborder: 0;\n\tbackground: #f7f7fa;\n\tbox-shadow: inset 0 -1px 0 ${Style.color.border};\n\n\t${props => props.sticky && css`\n\t\t\tposition: sticky;\n\t\t\ttop: 0;\n\t\t\tbackground: #f7f7fa;\n\t\t\tz-index: 1;\n\t`}\n\n\t${props => props.maxWidth && css`\n\t\tmax-width: ${props.maxWidth};\n\t\twidth: ${props.maxWidth};\n\t`}\n\n\t${props => props.stickyTop && css`\n\t\ttop: ${props.stickyTop};\n\t`}\n\n\t${props => props.stickyRight && css`\n\t\tright: ${props.stickyRight};\n\t`}\n\n\t${props => props.stickyBottom && css`\n\t\tbottom: ${props.stickyBottom};\n\t`}\n\n\t${props => props.stickyLeft && css`\n\t\tleft: ${props.stickyLeft};\n\t`}\n\n\t${props => props.stickyLeft && css`\n\t\tleft: ${props.stickyLeft};\n\t`}\n`\n\nexport default ResourceTableRowHeader","import * as React from 'react'\nimport Badge from '../components/Badge/Badge'\nimport moment from '../utilities/Moment'\nimport styled from 'styled-components'\nimport { Style } from '../styles'\nimport Icon from '../components/Icons/Icon'\nimport OgmHelper from './OgmHelper'\nimport i18n from '../translations'\nimport store from '../store'\nimport MobilityHelper from './MobilityHelper'\nimport { RemittanceInformationType, LedgerItem, LedgerItemStatus, LedgerItemType, LineItem, Locale, SettingTranslateableFields, WorkspaceTax, LedgerItemExportType } from '../types'\nimport { toFixed } from 'accounting'\nimport { saveAs } from 'file-saver'\n\nconst InvoiceDetailsStatus = styled.div`\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\talign-items: center;\n\theight: 40px;\n\tborder-radius: ${Style.variables.baseBorderRadius};\n\twidth: 100%;\n\tfont-weight: bold;\t\n\tfont-size: 16px;\n\tbackground: #D5F0F9;\n\tcolor: #007B96;\n\tmargin-bottom: ${Style.spacing.x1};\n\n\t&.is-success {\n\t\tbackground: #E1F8E7;\n\t\tcolor: #12B650;\n\n\t\tsvg, i {\n\t\t\tcolor: #12B650;\n\t\t\tfill: #12B650;\n\t\t}\n\t}\n\n\t&.is-danger {\n\t\tbackground: #FFEBE6;\n\t\tcolor: #EA1400;\n\n\t\tsvg, i {\n\t\t\tcolor: #EA1400;\n\t\t\tfill: #EA1400;\n\t\t}\n\t}\n\n\t&.is-warning {\n\t\tbackground: #FBFAE4;\n\t\tcolor: #B97C00;\n\n\t\tsvg, i {\n\t\t\tcolor: #B97C00;\n\t\t\tfill: #EA1400;\n\t\t}\n\t}\n\n\tsvg, i {\n\t\tmargin-right: ${Style.spacing.x1};\n\t\tcolor: #007B96;\n\t\tfill: #007B96;\n\t}\n\n svg {\n width: 16px;\n }\n`\n\n\nexport interface ILedgerItemQualityScoreStats {\n color: string\n score: number\n scoreIndicators: {\n hasBusinessName: boolean\n hasAddressLine: boolean\n hasVatNumber: boolean\n hasAccountNumber: boolean\n hasLogo: boolean\n hasContact: boolean\n hasFootnote: boolean\n }\n}\n\nexport default class LedgerItemHelper {\n static getFooterDetailsForType(ledgerItemType: LedgerItemType, locale: Locale) {\n let property: keyof SettingTranslateableFields = null\n\n switch (ledgerItemType) {\n case LedgerItemType.ORDER_FORM:\n property = 'default_order_form_details'\n break\n case LedgerItemType.DELIVERY_NOTE:\n property = 'default_delivery_note_details'\n break\n case LedgerItemType.QUOTATION:\n property = 'default_quotation_details'\n break\n case LedgerItemType.INVOICE:\n property = 'default_invoice_details'\n break\n case LedgerItemType.CREDIT_NOTE:\n property = 'default_credit_note_details'\n break\n case LedgerItemType.RECURRING_INVOICE:\n property = 'default_invoice_details'\n break\n }\n\n return MobilityHelper.getTranslation(locale, store.getState().authentication.currentUser.workspace.setting.translations, property)\n }\n\n static getTypeLabel(type: LedgerItemType = LedgerItemType.QUOTATION): string {\n return i18n.t(`LedgerItemType::${type}`)\n }\n\n static getLedgerItemColor(ledgerItem: LedgerItem) {\n if (ledgerItem.project) {\n return ledgerItem.project.color;\n }\n else if (ledgerItem.contact) {\n return ledgerItem.contact.color;\n }\n\n return '#ccc';\n }\n\n static getLedgerItemStatus(ledgerItem: LedgerItem): LedgerItemStatus {\n if (ledgerItem.type === LedgerItemType.ORDER_FORM) {\n const isDelivered = ledgerItem.delivered_on !== null\n const isCancelled = ledgerItem.cancelled_on !== null\n\n const isOverdue = moment(ledgerItem.due_on).isSameOrBefore(moment(), 'day') && !isDelivered\n\n if (isDelivered) {\n // Order form has a delivery note attached\n return LedgerItemStatus.DELIVERED\n } else if (isCancelled) {\n // Order form got cancelled\n return LedgerItemStatus.CANCELLED\n } else if (isOverdue) {\n // Order form overdue (needs a delivery note)\n return LedgerItemStatus.OVERDUE\n } else if (ledgerItem.issued_on && ledgerItem.due_on) {\n // Order form is outstanding\n return LedgerItemStatus.OUTSTANDING\n }\n return LedgerItemStatus.DRAFT\n } else if (ledgerItem.type === LedgerItemType.DELIVERY_NOTE) {\n const isInvoiced = ledgerItem.invoiced_on !== null\n const isIssued = ledgerItem.issued_on !== null\n\n if (isInvoiced) {\n // Delivery note has an invoice attached\n return LedgerItemStatus.INVOICED\n } else if (isIssued) {\n // Delivery note is outstanding\n return LedgerItemStatus.OUTSTANDING\n }\n\n return LedgerItemStatus.DRAFT\n } else if (ledgerItem.type === LedgerItemType.QUOTATION) {\n const isInvoiced = ledgerItem.invoiced_on !== null\n const isApproved = ledgerItem.approved_on !== null\n const isRejected = ledgerItem.rejected_on !== null\n const isPaid = LedgerItemHelper.isPaid(ledgerItem)\n const isOverdue = LedgerItemHelper.isOverdue(ledgerItem) && !isPaid\n\n if (isInvoiced) {\n return LedgerItemStatus.INVOICED\n } else if (isApproved) {\n return LedgerItemStatus.APPROVED\n } else if (isRejected) {\n return LedgerItemStatus.REJECTED\n } else if (isOverdue) {\n return LedgerItemStatus.EXPIRED\n } else if (ledgerItem.issued_on && ledgerItem.due_on) {\n return LedgerItemStatus.OUTSTANDING\n }\n\n return LedgerItemStatus.DRAFT\n } else if (ledgerItem.type === LedgerItemType.PRO_FORMA_INVOICE) {\n const isInvoiced = ledgerItem.invoiced_on !== null\n const isOverdue = LedgerItemHelper.isOverdue(ledgerItem) && !isInvoiced\n\n if (isInvoiced) {\n return LedgerItemStatus.INVOICED\n } else if (isOverdue) {\n return LedgerItemStatus.EXPIRED\n } else if (ledgerItem.issued_on && ledgerItem.due_on) {\n return LedgerItemStatus.OUTSTANDING\n }\n\n return LedgerItemStatus.DRAFT\n } else if (ledgerItem.type === LedgerItemType.INVOICE) {\n const isPaid = LedgerItemHelper.isPaid(ledgerItem)\n const isCredited = ledgerItem.credited_on !== null\n const isOverdue = LedgerItemHelper.isOverdue(ledgerItem) && !isPaid\n\n if (isPaid) {\n return LedgerItemStatus.PAID\n } else if (isCredited) {\n return LedgerItemStatus.CREDITED\n } else if (isOverdue) {\n return LedgerItemStatus.OVERDUE\n } else if (ledgerItem.issued_on && ledgerItem.due_on) {\n return LedgerItemStatus.OUTSTANDING\n }\n\n return LedgerItemStatus.DRAFT\n } else if (ledgerItem.type === LedgerItemType.CREDIT_NOTE) {\n if (ledgerItem.issued_on) {\n return LedgerItemStatus.CREDITED\n }\n\n return LedgerItemStatus.DRAFT\n } else if (ledgerItem.type === LedgerItemType.RECURRING_INVOICE) {\n return LedgerItemStatus.SCHEDULED\n } else {\n throw Error(`[getLedgerItemStatus] invalid type ${ledgerItem.type} given.`)\n }\n }\n\n static getLedgerItemBadge(ledgerItem: LedgerItem): JSX.Element {\n const status = LedgerItemHelper.getLedgerItemStatus(ledgerItem)\n\n switch (status) {\n case LedgerItemStatus.DRAFT:\n return \n case LedgerItemStatus.OVERDUE:\n return \n case LedgerItemStatus.APPROVED:\n return \n case LedgerItemStatus.REJECTED:\n return \n case LedgerItemStatus.INVOICED:\n return \n case LedgerItemStatus.OUTSTANDING:\n return \n case LedgerItemStatus.PAID:\n return \n case LedgerItemStatus.DELIVERED:\n return \n case LedgerItemStatus.CANCELLED:\n return \n case LedgerItemStatus.EXPIRED:\n return \n case LedgerItemStatus.CREDITED:\n return \n case LedgerItemStatus.SCHEDULED:\n return \n }\n }\n\n static getLedgerItemDetailStatus(ledgerItem: LedgerItem): JSX.Element | null {\n const status = LedgerItemHelper.getLedgerItemStatus(ledgerItem)\n\n switch (status) {\n case LedgerItemStatus.DRAFT:\n return (\n \n \n {i18n.t('LedgerItemHelper::Draft')}\n \n )\n case LedgerItemStatus.OVERDUE:\n return (\n \n \n {i18n.t('LedgerItemHelper::Overdue')}\n \n )\n case LedgerItemStatus.APPROVED:\n return (\n \n \n {i18n.t('LedgerItemHelper::Approved')}\n \n )\n case LedgerItemStatus.REJECTED:\n return (\n \n \n {i18n.t('LedgerItemHelper::Rejected')}\n \n )\n case LedgerItemStatus.INVOICED:\n return (\n \n \n {i18n.t('LedgerItemHelper::Invoiced')}\n \n )\n case LedgerItemStatus.OUTSTANDING:\n return (\n \n \n {i18n.t('LedgerItemHelper::Outstanding')}\n \n )\n case LedgerItemStatus.PAID:\n return (\n \n \n {i18n.t('LedgerItemHelper::Paid')}\n \n )\n case LedgerItemStatus.DELIVERED:\n return (\n \n \n {i18n.t('LedgerItemHelper::Delivered')}\n \n )\n case LedgerItemStatus.CANCELLED:\n return (\n \n \n {i18n.t('LedgerItemHelper::Cancelled')}\n \n )\n case LedgerItemStatus.EXPIRED:\n return (\n \n \n {i18n.t('LedgerItemHelper::Expired')}\n \n )\n case LedgerItemStatus.CREDITED:\n return (\n \n \n {i18n.t('LedgerItemHelper::Credited')}\n \n )\n case LedgerItemStatus.SCHEDULED:\n return (\n \n \n {i18n.t('LedgerItemHelper::Scheduled')}\n \n )\n }\n }\n\n static getLineItemSubTotal(lineItem: LineItem): Number {\n const { quantity, price } = lineItem\n\n if (price && quantity) {\n return Number(price) * Number(quantity)\n }\n\n return 0\n }\n\n static getLineItemNetTotal(lineItem: LineItem): Number {\n const subtotal = this.getLineItemSubTotal(lineItem)\n\n if (lineItem.discount) {\n return Number(subtotal) - (Number(subtotal) * Number(lineItem.discount))\n } else {\n return subtotal\n }\n }\n\n static getLineItemTaxTotal(lineItem: LineItem) {\n const netTotal = this.getLineItemNetTotal(lineItem)\n\n if (lineItem.tax_rate) {\n return (Number(netTotal) * Number(lineItem.tax_rate))\n } else {\n return 0\n }\n }\n\n static getLineItemTotal(lineItem: LineItem): Number {\n const netTotal = this.getLineItemNetTotal(lineItem)\n\n if (lineItem.tax_rate) {\n return Number(netTotal) + this.getLineItemTaxTotal(lineItem)\n } else {\n return netTotal\n }\n }\n\n static getWorkspaceTaxFromRate(rate: string | number, workspaceTaxes: WorkspaceTax[]) {\n const tax = workspaceTaxes.find(workspaceTax => workspaceTax.rate == rate)\n\n return tax ? tax : null\n }\n\n static getLedgerItemSubtotal(ledgerItem: LedgerItem) {\n return ledgerItem.line_items.reduce((total, lineItem) => {\n const { quantity, price } = lineItem\n\n if (isNaN(Number(quantity)) && isNaN(Number(price))) return total\n\n return Number(total) + Number(LedgerItemHelper.getLineItemSubTotal(lineItem))\n }, 0)\n }\n\n static getLedgerItemNetTotal(ledgerItem: LedgerItem) {\n return ledgerItem.line_items.reduce((total, lineItem) => {\n const { quantity, price } = lineItem\n\n if (isNaN(Number(quantity)) && isNaN(Number(price))) return total\n\n return Number(total) + Number(LedgerItemHelper.getLineItemNetTotal(lineItem))\n }, 0)\n }\n\n static getLedgerItemDiscountTotal(ledgerItem: LedgerItem) {\n return ledgerItem.line_items.reduce((total, lineItem) => {\n return total + (Number(LedgerItemHelper.getLineItemSubTotal(lineItem)) * Number(lineItem.discount))\n }, 0)\n }\n\n static getLedgerItemTaxTotal(ledgerItem: LedgerItem) {\n return ledgerItem.line_items.reduce((total, lineItem) => {\n const { quantity, price } = lineItem\n\n if (\n (isNaN(Number(quantity)) && isNaN(Number(price))) ||\n (lineItem.tax_rate === 0 && lineItem.tax_rate === 0)) {\n return total\n }\n\n return total + this.getLineItemTaxTotal(lineItem)\n }, 0)\n }\n\n static getLedgerItemTotal(ledgerItem: LedgerItem) {\n return LedgerItemHelper.getLedgerItemNetTotal(ledgerItem) + LedgerItemHelper.getLedgerItemTaxTotal(ledgerItem)\n }\n\n /**\n * \n * @param ledgerItem \n * @param taxes When not provided treats the ledgerItem as read only and it will calculate the list based on the BTW rates inside the line items\n */\n static getLedgerItemTaxTotalsList(ledgerItem: LedgerItem): { total: number | string, rate: number }[] {\n const taxesList = []\n\n ledgerItem.line_items.forEach(lineItem => {\n const itemNettotal = LedgerItemHelper.getLineItemNetTotal(lineItem)\n\n const firstTaxTotal = Number(itemNettotal) * Number(lineItem.tax_rate)\n const firstTaxIndex = taxesList.findIndex(tax => Number(tax.rate) == Number(lineItem.tax_rate))\n\n // Tax already exists in taxes total list append total\n if (Number(lineItem?.tax_rate) > 0 && firstTaxTotal) {\n if (firstTaxIndex > -1) {\n taxesList[firstTaxIndex].total += firstTaxTotal\n }\n else {\n taxesList.push({ total: firstTaxTotal, rate: Number(lineItem.tax_rate) })\n }\n }\n })\n return taxesList\n .map(tax => ({\n total: Number(toFixed(Number(toFixed(tax.total, 3)), 2)),\n rate: tax.rate\n }))\n }\n\n static getLedgerItemLocale(ledgerItem: LedgerItem): Locale {\n return (ledgerItem.contact ? ledgerItem.contact.locale : store.getState().authentication.currentUser.workspace.setting.default_ledger_item_locale) as Locale\n }\n\n static isPaid(ledgerItem: LedgerItem) {\n return ledgerItem.paid_on !== null\n }\n /**\n * Checks if ledger item is overdue based on type\n * @param ledgerItem \n */\n static isOverdue(ledgerItem: LedgerItem) {\n const type = ledgerItem.type\n\n if (type === LedgerItemType.ORDER_FORM) {\n return moment().isAfter(moment(ledgerItem.due_on), 'day') && !ledgerItem.delivered_on\n } else if (type === LedgerItemType.DELIVERY_NOTE) {\n return moment().isAfter(moment(ledgerItem.due_on), 'day') && !ledgerItem.invoiced_on\n } if (type === LedgerItemType.QUOTATION) {\n return moment().isAfter(moment(ledgerItem.due_on), 'day') && !ledgerItem.approved_on\n } else if (type === LedgerItemType.INVOICE) {\n return moment().isAfter(moment(ledgerItem.due_on), 'day') && !ledgerItem.paid_on && !ledgerItem.credited_on\n } else if (type === LedgerItemType.CREDIT_NOTE) {\n return false\n } else if (type === LedgerItemType.RECURRING_INVOICE) {\n return false\n }\n }\n\n static download(ledgerItem: LedgerItem, type: 'pdf' | 'ubl' = 'pdf') {\n if (type === 'pdf' && ledgerItem.pdf_attachment_download_url) {\n saveAs(ledgerItem.pdf_attachment_download_url, ledgerItem.pdf_attachment_file_name)\n } else if (type === 'ubl') {\n saveAs(`/invoices/${ledgerItem.id}/download?type=ubl`)\n }\n }\n\n static getSuccessiveLedgerNumber(ledgerNumber: string) {\n var alphabet = 'abcdefghijklmnopqrstuvwxyz',\n length = alphabet.length,\n result = ledgerNumber,\n i = ledgerNumber.length,\n index = null\n\n while (i >= 0) {\n var last = ledgerNumber.charAt(--i),\n next = '',\n carry = false;\n\n // @ts-ignore\n if (isNaN(last)) {\n index = alphabet.indexOf(last.toLowerCase());\n\n if (index === -1) {\n next = last;\n carry = true;\n }\n else {\n var isUpperCase = last === last.toUpperCase();\n next = alphabet.charAt((index + 1) % length);\n if (isUpperCase) {\n next = next.toUpperCase();\n }\n\n carry = index + 1 >= length;\n if (carry && i === 0) {\n var added = isUpperCase ? 'A' : 'a';\n result = added + next + result.slice(1);\n break;\n }\n }\n }\n else {\n // @ts-ignore\n next = +last + 1;\n // @ts-ignore\n carry = next > 9;\n // @ts-ignore\n if (next > 9) {\n // @ts-ignore\n next = 0;\n carry = true\n }\n\n if (carry && i === 0) {\n result = '1' + next + result.slice(1);\n break;\n }\n }\n\n result = result.slice(0, i) + next + result.slice(i + 1);\n if (!carry) {\n break;\n }\n }\n return result;\n }\n\n static getLedgerItemExportTypeOptions() {\n return Object.keys(LedgerItemExportType).map(key => (\n { label: i18n.t(`LedgerItemExportType::${LedgerItemExportType[key]}`), value: LedgerItemExportType[key] }\n ))\n }\n\n static getLedgerItemStatusLabel(status: LedgerItemStatus): string {\n return i18n.t(`LedgerItemStatus::${status}`)\n }\n\n}\n\n","import { Locale, MobilityTranslations } from \"../types\"\n\nexport default class MobilityHelper {\n static getTranslation(locale: Locale, translations: MobilityTranslations, property: keyof T): string {\n const localeTranslations = translations[locale]\n\n if (!localeTranslations) return ''\n\n return localeTranslations[property as string] || ''\n }\n\n static updateTranslation(locale: Locale, translations: MobilityTranslations, property: keyof T, value: string): MobilityTranslations {\n const updatedTranslations = { ...translations }\n\n updatedTranslations[locale as string] = updatedTranslations[locale] || {}\n updatedTranslations[locale][property as string] = value\n\n return updatedTranslations\n }\n}","import { ResourceListFilterPredicate } from \"../types\";\n\nexport default class ResourceHelper {\n static getPredicateAbbreviation(predicate: ResourceListFilterPredicate) {\n switch (predicate) {\n case ResourceListFilterPredicate.CONTAINS:\n return \"cont\";\n case ResourceListFilterPredicate.EQUALS:\n return \"\";\n case ResourceListFilterPredicate.BETWEEN:\n return \"\";\n case ResourceListFilterPredicate.GREATER_THAN:\n return \"gt\";\n case ResourceListFilterPredicate.LESS_THAN:\n return \"lt\";\n case ResourceListFilterPredicate.IS_AFTER:\n return \"gt\";\n case ResourceListFilterPredicate.IS_AFTER_OR_ON:\n return \"gte\";\n case ResourceListFilterPredicate.IS_BEFORE:\n return \"lt\";\n case ResourceListFilterPredicate.IS_BEFORE_OR_ON:\n return \"lte\";\n case ResourceListFilterPredicate.PRESENT:\n return \"present\";\n default:\n return \"\";\n }\n }\n}\n","import QueryString from \"qs\";\nimport ERoute from \"../ERoute\";\nimport SearchHelper from \"./SearchHelper\";\nimport store from \"../store\";\n\nexport default class RouteHelper {\n static process(route: ERoute, params: object = {}): string {\n let processedRoute = route.toString();\n let processingParams = Object.assign({}, params);\n\n Object.keys(params).forEach((key) => {\n const replaceKey = `:${key}`;\n const keyValue = processingParams[key];\n\n if (processedRoute.includes(replaceKey)) {\n processedRoute = processedRoute.replace(\n new RegExp(replaceKey, \"g\"),\n keyValue\n );\n\n // Remove the key if found and replaced\n delete processingParams[key];\n }\n });\n\n if (Object.keys(processingParams).length > 0) {\n return `${processedRoute}?${SearchHelper.getQueryString(\n processingParams\n )}`;\n } else {\n return processedRoute;\n }\n }\n\n static push(path: ERoute, params: object = {}): void {\n const {\n navigation: { history },\n } = store.getState();\n\n history.push(RouteHelper.process(path as ERoute, params));\n }\n\n static replace(path: ERoute, params: object = {}): void {\n const {\n navigation: { history },\n } = store.getState();\n\n history.push(RouteHelper.process(path as ERoute, params));\n }\n\n static encodeQueryData(data: object): string {\n let ret = [];\n for (let d in data) {\n if (data[d] !== null) {\n ret.push(encodeURIComponent(d) + \"=\" + encodeURIComponent(data[d]));\n }\n }\n return ret.join(\"&\");\n }\n}\n","import moment from \"../utilities/Moment\";\nimport store from \"../store\";\nimport { Moment } from \"moment\";\nimport TimeFormatter from \"../utilities/TimeFormatter\";\nimport { TimeEntry } from \"../types\";\nimport { MomentRange } from \"moment-range\";\n\nexport default class TimeHelper {\n static convertSecondsToHours(secondsCount) {\n return Number((secondsCount / 3600).toFixed(2));\n }\n\n static getCurrentTimeInSeconds() {\n const now = moment();\n const startOfDay = moment().startOf(\"day\");\n\n return now.diff(startOfDay, \"seconds\");\n }\n\n static getNewTimeEntry(defaultRate: number): TimeEntry {\n return {\n description: \"\",\n contact_id: \"\",\n project_id: \"\",\n base_rate: defaultRate,\n billable: true,\n active: false,\n fixed_rate: false,\n started_at: moment().utc().toString(),\n ended_at: moment().utc().toString(),\n };\n }\n\n static getDateRange(startDate: Moment, stopDate: Moment): Moment[] {\n // @ts-ignore\n return Array.from(moment.range(startDate, stopDate).by(\"day\"));\n }\n\n static getTimeEntryColor(timeEntry?: TimeEntry) {\n if (timeEntry) {\n if (timeEntry.project) {\n return timeEntry.project.color;\n } else if (timeEntry.contact) {\n return timeEntry.contact.color;\n }\n }\n\n return \"#9b9b9b\";\n }\n\n /**\n * Calculates the minutes of the day to compare hh:mm and see which one is bigger\n * @param test\n */\n static minutesOfDay(test: Moment) {\n return test.minutes() + test.hours() * 60;\n }\n\n static getTimerTitle() {\n const {\n timer: { entry },\n } = store.getState();\n\n if (entry) {\n const durationlabel = this.getTimerDuration();\n const descriptionLabel = this.getTimerDescription();\n\n if (durationlabel !== \"\" && descriptionLabel !== \"\") {\n return `${durationlabel} - ${descriptionLabel}`;\n }\n\n return durationlabel;\n }\n\n return \"\";\n }\n\n static setDocumentTimerTitle() {\n const timerTitle = this.getTimerTitle();\n\n // Only update if valid timer\n if (timerTitle) {\n document.title = timerTitle;\n }\n }\n\n static getTimerDuration() {\n const {\n authentication: {\n currentUser: {\n workspace: { setting },\n },\n },\n timer: { entry },\n } = store.getState();\n\n let durationInSeconds = 0;\n if (entry) {\n durationInSeconds = moment\n .duration(moment().diff(moment(entry.started_at)))\n .asSeconds();\n }\n\n // Only trim when hh mm ss format\n let trim = setting.time_format === \"hh mm ss\";\n\n return TimeFormatter.durationFormat(\n durationInSeconds,\n setting.time_format,\n trim\n );\n }\n\n static getTimerDescription() {\n const {\n timer: { entry },\n } = store.getState();\n if (entry) {\n const { contact, project } = entry;\n\n if (contact && project) {\n return `${contact.name} › ${project.name}`;\n } else if (contact) {\n return `${contact.name}`;\n } else if (project) {\n return `${project.name}`;\n } else if (entry.description) {\n return entry.description;\n }\n }\n\n return \"\";\n }\n\n static getYearRange(startYear: number) {\n let years = [];\n let currentYear = new Date().getFullYear();\n startYear = startYear || 1980;\n while (startYear <= currentYear) {\n years.push(startYear++);\n }\n return years.reverse();\n }\n}\n","import store from \"../store\";\nimport i18n from \"../translations\";\nimport { UserWorkspaceSettingRole, UserWorkspaceSettingScope } from \"../types\";\n\nexport default class UserWorkspaceSettingHelper {\n\tstatic SCOPES: UserWorkspaceSettingScope[] = [\n\t\tUserWorkspaceSettingScope.DASHBOARD,\n\t\tUserWorkspaceSettingScope.CALENDAR,\n\t\tUserWorkspaceSettingScope.TASK,\n\t\tUserWorkspaceSettingScope.CONTACT,\n\t\tUserWorkspaceSettingScope.SEQUENCE,\n\t\tUserWorkspaceSettingScope.PLAYBOOK,\n\t\tUserWorkspaceSettingScope.PROJECT,\n\t\tUserWorkspaceSettingScope.TIME_TRACKING,\n\t\tUserWorkspaceSettingScope.TIME_TRACKING_EXPORT,\n\t\tUserWorkspaceSettingScope.INVOICE,\n\t\tUserWorkspaceSettingScope.INVOICE_EXPORT,\n\t\tUserWorkspaceSettingScope.EXPENSE,\n\t\tUserWorkspaceSettingScope.EXPENSE_EXPORT,\n\t\tUserWorkspaceSettingScope.DOCUMENT,\n\t\tUserWorkspaceSettingScope.DOCUMENT_EXPORT,\n\t\tUserWorkspaceSettingScope.BANK,\n\t\tUserWorkspaceSettingScope.BANK_PAYMENT,\n\t\tUserWorkspaceSettingScope.ACCOUNTANT,\n\t\tUserWorkspaceSettingScope.PRODUCT,\n\t\tUserWorkspaceSettingScope.PRODUCT_EXPORT,\n\t\tUserWorkspaceSettingScope.PRODUCT_VIEW_PURCHASE_PRICE,\n\t\tUserWorkspaceSettingScope.REPORTING,\n\t\tUserWorkspaceSettingScope.SETTING,\n\t\tUserWorkspaceSettingScope.FILE\n\t]\n\n\tstatic hasRole(role: UserWorkspaceSettingRole) {\n\t\tconst { authentication: { currentUser: { user_workspace_setting } } } = store.getState();\n\n\t\tif (!user_workspace_setting) return false\n\n\t\tif (user_workspace_setting) {\n\t\t\treturn user_workspace_setting.role === role\n\t\t}\n\t}\n\n\tstatic hasScope(scope: UserWorkspaceSettingScope) {\n\t\tconst { authentication: { currentUser: { user_workspace_setting } } } = store.getState();\n\n\t\t// Owners have all access\n\t\tif (this.hasRole(UserWorkspaceSettingRole.OWNER)) return true\n\n\t\tif (!user_workspace_setting) return false\n\n\t\tif (user_workspace_setting) {\n\t\t\treturn user_workspace_setting.scopes.includes(scope)\n\t\t}\n\t}\n\n\tstatic hasScopes(scopes: UserWorkspaceSettingScope[]) {\n\t\tconst { authentication: { currentUser: { user_workspace_setting } } } = store.getState();\n\n\t\t// Owners have all access\n\t\tif (this.hasRole(UserWorkspaceSettingRole.OWNER)) return true\n\n\t\tif (!user_workspace_setting) return false\n\n\t\tif (user_workspace_setting) {\n\n\t\t\treturn scopes.every(scope => user_workspace_setting.scopes.includes(scope))\n\t\t}\n\t}\n\n\tstatic getRoleTranslation(role: UserWorkspaceSettingRole) {\n\t\tswitch (role) {\n\t\t\tcase UserWorkspaceSettingRole.OWNER:\n\t\t\tcase UserWorkspaceSettingRole.MANAGER:\n\t\t\tcase UserWorkspaceSettingRole.EMPLOYEE:\n\t\t\t\treturn i18n.t(`UserWorkspaceSettingRole::${role}`)\n\t\t\tdefault: throw Error(`Unsupported role ${role} given`)\n\t\t}\n\t}\n}","import {\n ModalsActionTypes,\n SHOW_CONTACT_MODAL,\n CLOSE_CONTACT_MODAL,\n SHOW_PROJECT_MODAL,\n CLOSE_PROJECT_MODAL,\n SHOW_EXPENSE_MODAL,\n CLOSE_EXPENSE_MODAL,\n SHOW_TIME_ENTRY_EXPORT_MODAL,\n CLOSE_TIME_ENTRY_EXPORT_MODAL,\n SHOW_TIME_ENTRY_MODAL,\n CLOSE_TIME_ENTRY_MODAL,\n SHOW_SEND_LEDGER_ITEM_MODAL,\n CLOSE_SEND_LEDGER_ITEM_MODAL,\n SHOW_PAYMENT_DETAILS_MODAL,\n CLOSE_PAYMENT_DETAILS_MODAL,\n SHOW_IMPORT_PRODUCTS_MODAL,\n CLOSE_IMPORT_PRODUCTS_MODAL,\n SHOW_IMPORT_TIME_ENTRIES_MODAL,\n CLOSE_IMPORT_TIME_ENTRIES_MODAL,\n SHOW_IMPORT_EXPENSES_MODAL,\n CLOSE_IMPORT_EXPENSES_MODAL,\n SHOW_TAXES_MODAL,\n CLOSE_TAXES_MODAL,\n CLOSE_CONFIRM_MODAL,\n SHOW_CONFIRM_MODAL,\n SHOW_EXPORT_LEDGER_ITEMS_MODAL,\n CLOSE_EXPORT_LEDGER_ITEMS_MODAL,\n ContactModalOptions,\n ProjectModalOptions,\n SHOW_PRODUCT_MODAL,\n CLOSE_PRODUCT_MODAL,\n ProductModalOptions,\n SHOW_MOBILE_APP_MODAL,\n CLOSE_MOBILE_APP_MODAL,\n TimeEntryExportModalOptions,\n TimeEntryModalOptions,\n ExpenseModalOptions,\n CLOSE_FILE_MODAL,\n SHOW_FILE_MODAL,\n FileModalOptions,\n MoveFilesModalOptions,\n SHOW_MOVE_FILES_MODAL,\n CLOSE_MOVE_FILES_MODAL,\n ExportLedgerItemsModalOptions,\n SHOW_EXPORT_EXPENSES_MODAL,\n CLOSE_EXPORT_EXPENSES_MODAL,\n ExportExpensesModalOptions,\n SHOW_EXPENSE_CATEGORY_MODAL,\n CLOSE_EXPENSE_CATEGORY_MODAL,\n ExpenseCategoryModalOptions,\n SHOW_SETTINGS_EMAIL_TEMPLATE_MODAL,\n CLOSE_SETTINGS_EMAIL_TEMPLATE_MODAL,\n SettingsEmailTemplateModalOptions,\n SHOW_PROJECT_STATUS_UPDATE_MODAL,\n CLOSE_PROJECT_STATUS_UPDATE_MODAL,\n ProjectStatusUpdateModalOptions,\n ShowSendLedgerItemModalOptions,\n SHOW_EXPORT_PRODUCTS_MODAL,\n CLOSE_EXPORT_PRODUCTS_MODAL,\n ExportProductsModalOptions,\n SHOW_CUSTOM_FIELD_MODAL,\n CLOSE_CUSTOM_FIELD_MODAL,\n CustomFieldModalOptions,\n SHOW_TASK_MODAL,\n CLOSE_TASK_MODAL,\n TaskModalOptions,\n SHOW_BOARD_MODAL,\n CLOSE_BOARD_MODAL,\n BoardModalOptions,\n SHOW_CALENDAR_EVENT_MODAL,\n CLOSE_CALENDAR_EVENT_MODAL,\n CalendarEventModalOptions,\n SHOW_ATTACHMENTS_VIEWER_MODAL,\n CLOSE_ATTACHMENTS_VIEWER_MODAL,\n AttachmentsViewerOptions,\n AddAccountantModalOptions,\n SHOW_ADD_ACCOUNTANT_MODAL,\n CLOSE_ADD_ACCOUNTANT_MODAL,\n UserWorkspaceSettingModalOptions,\n SHOW_USER_WORKSPACE_SETTING_MODAL,\n CLOSE_USER_WORKSPACE_SETTING_MODAL,\n SHOW_BULK_TIME_ENTRY_MODAL,\n CLOSE_BULK_TIME_ENTRY_MODAL,\n BulkTimeEntryModalOptions,\n SHOW_CALCULATE_ADVANCE_MODAL,\n CLOSE_CALCULATE_ADVANCE_MODAL,\n CalculateAmountModalOptions,\n SHOW_SEND_CONTRACT_MODAL,\n CLOSE_SEND_CONTRACT_MODAL,\n ShowSendContractModalOptions,\n SHOW_SHARE_LINKS_MODAL,\n CLOSE_SHARE_LINKS_MODAL,\n ShowShareLinksModalOptions,\n SHOW_SEND_PROPOSAL_MODAL,\n CLOSE_SEND_PROPOSAL_MODAL,\n ShowSendProposalModalOptions,\n ShowItemsBlockSettingModalOptions,\n SHOW_ITEMS_BLOCK_SETTING_MODAL,\n CLOSE_ITEMS_BLOCK_SETTING_MODAL,\n SHOW_ITEM_BLOCK_SETTING_MODAL,\n ShowItemBlockSettingModalOptions,\n CLOSE_ITEM_BLOCK_SETTING_MODAL,\n ShowQuestionAndAnswerBlockSettingModalOptions,\n SHOW_QUESTION_AND_ANSWER_BLOCK_SETTING_MODAL,\n CLOSE_QUESTION_AND_ANSWER_BLOCK_SETTING_MODAL,\n ShowDirectionsModalOptions,\n SHOW_DIRECTIONS_MODAL,\n CLOSE_DIRECTIONS_MODAL,\n LedgerItemPaymentModalOptions,\n SHOW_LEDGER_ITEM_PAYMENT_MODAL,\n CLOSE_LEDGER_ITEM_PAYMENT_MODAL,\n SHOW_LEDGER_ITEM_TRANSACTION_HISTORY_MODAL,\n CLOSE_LEDGER_ITEM_TRANSACTION_HISTORY_MODAL,\n LedgerItemTransactionHistoryModalOptions,\n ledgerItemClaimModalOptions,\n SHOW_LEDGER_ITEM_CLAIM_MODAL,\n CLOSE_LEDGER_ITEM_CLAIM_MODAL,\n SHOW_PAYMENT_MODAL,\n CLOSE_PAYMENT_MODAL,\n PaymentModalOptions,\n SHOW_PAYMENT_INITIATION_MODAL,\n CLOSE_PAYMENT_INITIATION_MODAL,\n PaymentInitiationModalOptions,\n DealModalOptions,\n SHOW_DEAL_MODAL,\n CLOSE_DEAL_MODAL,\n SHOW_DEAL_STAGE_MODAL,\n DealStageModalOptions,\n CLOSE_DEAL_STAGE_MODAL,\n SHOW_CONTENT_BLOCK_TEMPLATE_MODAL,\n CLOSE_CONTENT_BLOCK_TEMPLATE_MODAL,\n ContentBlockTemplateModalOptions,\n SHOW_TAX_MODAL,\n CLOSE_TAX_MODAL,\n TaxModalOptions,\n WorkTypeModalOptions,\n SHOW_WORK_TYPE_MODAL,\n CLOSE_WORK_TYPE_MODAL,\n DiscountModalOptions,\n SHOW_DISCOUNT_MODAL,\n CLOSE_DISCOUNT_MODAL,\n SHOW_PEPPOL_PARTICIPANT_MODAL,\n CLOSE_PEPPOL_PARTICIPANT_MODAL,\n PeppolParticipantModalOptions,\n FinancialYearModalOptions,\n SHOW_FINANCIAL_YEAR_MODAL,\n CLOSE_FINANCIAL_YEAR_MODAL,\n TransactionModalOptions,\n SHOW_TRANSACTION_MODAL,\n CLOSE_TRANSACTION_MODAL,\n CLOSE_PLAYBOOK_SUBMISSION_MODAL,\n SHOW_PLAYBOOK_SUBMISSION_MODAL,\n ShowPlaybookSubmissionModalOptions,\n ShowBulkProjectStatusUpdateModalOptions,\n CLOSE_BULK_PROJECT_STATUS_UPDATE_MODAL,\n SHOW_BULK_PROJECT_STATUS_UPDATE_MODAL,\n SHOW_SIGNATURE_MODAL,\n CLOSE_SIGNATURE_MODAL,\n ShowSignatureModalOptions,\n CLOSE_EMAIL_VIEWER_MODAL,\n SHOW_EMAIL_VIEWER_MODAL,\n EmailViewerModalOptions,\n SHOW_CONTACT_GROUP_MODAL,\n CLOSE_CONTACT_GROUP_MODAL,\n ContactGroupModalOptions,\n SHOW_BULK_CONTACT_GROUP_MODAL,\n CLOSE_BULK_CONTACT_GROUP_MODAL,\n BulkContactGroupModalOptions,\n ExportContactsModalOptions,\n SHOW_EXPORT_CONTACTS_MODAL,\n CLOSE_EXPORT_CONTACTS_MODAL,\n SHOW_CONTACT_TYPE_MODAL,\n CLOSE_CONTACT_TYPE_MODAL,\n ContactTypeModalOptions,\n SHOW_FILE_UPLOAD_MODAL,\n CLOSE_FILE_UPLOAD_MODAL,\n FileUploadModalOptions,\n SHOW_PAYMENT_QR_MODAL,\n CLOSE_PAYMENT_QR_MODAL,\n PaymentQRModalOptions,\n SHOW_CUSTOM_COMPONENT_MODAL,\n CLOSE_CUSTOM_COMPONENT_MODAL,\n CustomComponentModalOptions,\n SHOW_DOCUMENT_MODAL,\n DocumentModalOptions,\n CLOSE_DOCUMENT_MODAL,\n SHOW_DOCUMENT_TAG_MODAL,\n DocumentTagModalOptions,\n CLOSE_DOCUMENT_TAG_MODAL,\n SHOW_EXPORT_DOCUMENTS_MODAL,\n CLOSE_EXPORT_DOCUMENTS_MODAL,\n ExportDocumentsModalOptions,\n SHOW_UPLOAD_DOCUMENTS_MODAL,\n CLOSE_UPLOAD_DOCUMENTS_MODAL,\n UploadDocumentsModalOptions,\n SHOW_PRODUCT_IMPORT_MODAL,\n CLOSE_PRODUCT_IMPORT_MODAL,\n ProductImportModalOptions,\n CallModalOptions,\n SHOW_CALL_MODAL,\n CLOSE_CALL_MODAL,\n ShowSendEmailModalOptions,\n CLOSE_SEND_EMAIL_MODAL,\n SHOW_SEND_EMAIL_MODAL,\n ShowEmailTemplateModalOptions,\n SHOW_EMAIL_TEMPLATE_MODAL,\n CLOSE_EMAIL_TEMPLATE_MODAL,\n SHOW_SEQUENCE_STEP_MODAL,\n CLOSE_SEQUENCE_STEP_MODAL,\n ShowSequenceStepModalOptions,\n ShowContactEnrollmentModalOptions,\n SHOW_CONTACT_ENROLLMENT_MODAL,\n CLOSE_CONTACT_ENROLLMENT_MODAL,\n ShowTwoFactorAuthenticationModalOptions,\n SHOW_TWO_FACTOR_AUTHENTICATION_MODAL,\n CLOSE_TWO_FACTOR_AUTHENTICATION_MODAL,\n} from \"./types\";\nimport { ConfirmModalAction } from \"../../components/Modals/ConfirmModal\";\nimport {\n Expense,\n GroupedTimeEntries,\n ImportedProduct,\n Workspace,\n WorkspaceTax,\n} from \"../../types\";\n\nexport function showContactModal(\n options: ContactModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_CONTACT_MODAL,\n ...options,\n };\n}\n\nexport function closeContactModal(): ModalsActionTypes {\n return {\n type: CLOSE_CONTACT_MODAL,\n };\n}\n\nexport function showProjectModal(\n options: ProjectModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_PROJECT_MODAL,\n ...options,\n };\n}\n\nexport function closeProjectModal(): ModalsActionTypes {\n return {\n type: CLOSE_PROJECT_MODAL,\n };\n}\n\nexport function showProjectStatusUpdateModal(\n options: ProjectStatusUpdateModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_PROJECT_STATUS_UPDATE_MODAL,\n ...options,\n };\n}\n\nexport function closeProjectStatusUpdateModal(): ModalsActionTypes {\n return {\n type: CLOSE_PROJECT_STATUS_UPDATE_MODAL,\n };\n}\n\nexport function showExpenseModal(\n options: ExpenseModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_EXPENSE_MODAL,\n ...options,\n };\n}\n\nexport function closeExpenseModal(): ModalsActionTypes {\n return {\n type: CLOSE_EXPENSE_MODAL,\n };\n}\n\nexport function showTimeEntryExportModal(\n options: TimeEntryExportModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_TIME_ENTRY_EXPORT_MODAL,\n ...options,\n };\n}\n\nexport function closeTimeEntryExportModal(): ModalsActionTypes {\n return {\n type: CLOSE_TIME_ENTRY_EXPORT_MODAL,\n };\n}\n\nexport function showTimeEntryModal(\n options: TimeEntryModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_TIME_ENTRY_MODAL,\n ...options,\n };\n}\n\nexport function closeTimeEntryModal(): ModalsActionTypes {\n return {\n type: CLOSE_TIME_ENTRY_MODAL,\n };\n}\n\nexport function showSendLedgerItemModal(\n options: ShowSendLedgerItemModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_SEND_LEDGER_ITEM_MODAL,\n ...options,\n };\n}\n\nexport function closeSendLedgerItemModal(): ModalsActionTypes {\n return {\n type: CLOSE_SEND_LEDGER_ITEM_MODAL,\n };\n}\n\nexport function showSettingsEmailTemplateModal(\n options: SettingsEmailTemplateModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_SETTINGS_EMAIL_TEMPLATE_MODAL,\n ...options,\n };\n}\n\nexport function closeSettingsEmailTemplateModal(): ModalsActionTypes {\n return {\n type: CLOSE_SETTINGS_EMAIL_TEMPLATE_MODAL,\n };\n}\n\nexport function showPaymentDetailsModal(\n onSubmit?: (workspace: Workspace) => void\n): ModalsActionTypes {\n return {\n type: SHOW_PAYMENT_DETAILS_MODAL,\n onSubmit: onSubmit,\n };\n}\n\nexport function closePaymentDetailsModal(): ModalsActionTypes {\n return {\n type: CLOSE_PAYMENT_DETAILS_MODAL,\n };\n}\n\nexport function showImportProductsModal(\n onSubmit?: (products: ImportedProduct[]) => void\n): ModalsActionTypes {\n return {\n type: SHOW_IMPORT_PRODUCTS_MODAL,\n onSubmit: onSubmit,\n };\n}\n\nexport function closeImportProductsModal(): ModalsActionTypes {\n return {\n type: CLOSE_IMPORT_PRODUCTS_MODAL,\n };\n}\n\ninterface ImportTimeEntriesModalOptions {\n contactId?: string;\n projectId?: string;\n onSubmit?: (groupedTimeEntries: GroupedTimeEntries[]) => void;\n}\n\nexport function showImportTimeEntriesModal(\n options: ImportTimeEntriesModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_IMPORT_TIME_ENTRIES_MODAL,\n ...options,\n };\n}\n\nexport function closeImportTimeEntriesModal(): ModalsActionTypes {\n return {\n type: CLOSE_IMPORT_TIME_ENTRIES_MODAL,\n };\n}\n\nexport function showImportExpensesModal(\n contactId?: string,\n projectId?: string,\n onSubmit?: (expenses: Expense[]) => void\n): ModalsActionTypes {\n return {\n type: SHOW_IMPORT_EXPENSES_MODAL,\n contactId: contactId,\n projectId: projectId,\n onSubmit: onSubmit,\n };\n}\n\nexport function closeImportExpensesModal(): ModalsActionTypes {\n return {\n type: CLOSE_IMPORT_EXPENSES_MODAL,\n };\n}\n\nexport function showTaxesModal(\n onSubmit?: (taxes: WorkspaceTax[]) => void\n): ModalsActionTypes {\n return {\n type: SHOW_TAXES_MODAL,\n onSubmit: onSubmit,\n };\n}\n\nexport function closeTaxesModal(): ModalsActionTypes {\n return {\n type: CLOSE_TAXES_MODAL,\n };\n}\n\nexport function showConfirmModal(options: {\n title: string;\n description: string | any;\n action: ConfirmModalAction;\n onConfirm: () => void;\n onCancel?: () => void;\n}): ModalsActionTypes {\n return {\n type: SHOW_CONFIRM_MODAL,\n title: options.title,\n description: options.description,\n action: options.action,\n onConfirm: options.onConfirm,\n onCancel: options.onCancel,\n };\n}\n\nexport function closeConfirmModal(): ModalsActionTypes {\n return {\n type: CLOSE_CONFIRM_MODAL,\n };\n}\n\nexport function showProductModal(\n options: ProductModalOptions = {}\n): ModalsActionTypes {\n return {\n type: SHOW_PRODUCT_MODAL,\n ...options,\n };\n}\n\nexport function closeProductModal(): ModalsActionTypes {\n return {\n type: CLOSE_PRODUCT_MODAL,\n };\n}\n\nexport function showMobileAppModal(): ModalsActionTypes {\n return {\n type: SHOW_MOBILE_APP_MODAL,\n };\n}\n\nexport function closeMobileAppModal(): ModalsActionTypes {\n return {\n type: CLOSE_MOBILE_APP_MODAL,\n };\n}\n\nexport function showFileModal(options: FileModalOptions): ModalsActionTypes {\n return {\n type: SHOW_FILE_MODAL,\n ...options,\n };\n}\n\nexport function closeFileModal(): ModalsActionTypes {\n return {\n type: CLOSE_FILE_MODAL,\n };\n}\n\nexport function showMoveFilesModal(\n options: MoveFilesModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_MOVE_FILES_MODAL,\n ...options,\n };\n}\n\nexport function closeMoveFilesModal(): ModalsActionTypes {\n return {\n type: CLOSE_MOVE_FILES_MODAL,\n };\n}\n\nexport function showExportLedgerItemsModal(\n options: ExportLedgerItemsModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_EXPORT_LEDGER_ITEMS_MODAL,\n ...options,\n };\n}\n\nexport function closeExportLedgerItemsModal(): ModalsActionTypes {\n return {\n type: CLOSE_EXPORT_LEDGER_ITEMS_MODAL,\n };\n}\n\nexport function showExportExpensesModal(\n options: ExportExpensesModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_EXPORT_EXPENSES_MODAL,\n ...options,\n };\n}\n\nexport function closeExportExpensesModal(): ModalsActionTypes {\n return {\n type: CLOSE_EXPORT_EXPENSES_MODAL,\n };\n}\n\nexport function showExpenseCategoryModal(\n options: ExpenseCategoryModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_EXPENSE_CATEGORY_MODAL,\n ...options,\n };\n}\n\nexport function closeExpenseCategoryModal(): ModalsActionTypes {\n return {\n type: CLOSE_EXPENSE_CATEGORY_MODAL,\n };\n}\n\nexport function showExportProductsModal(\n options: ExportProductsModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_EXPORT_PRODUCTS_MODAL,\n ...options,\n };\n}\n\nexport function closeExportProductsModal(): ModalsActionTypes {\n return {\n type: CLOSE_EXPORT_PRODUCTS_MODAL,\n };\n}\n\nexport function showCustomFieldModal(\n options: CustomFieldModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_CUSTOM_FIELD_MODAL,\n ...options,\n };\n}\n\nexport function closeCustomFieldModal(): ModalsActionTypes {\n return {\n type: CLOSE_CUSTOM_FIELD_MODAL,\n };\n}\n\nexport function showBoardModal(options: BoardModalOptions): ModalsActionTypes {\n return {\n type: SHOW_BOARD_MODAL,\n ...options,\n };\n}\n\nexport function closeBoardModal(): ModalsActionTypes {\n return {\n type: CLOSE_BOARD_MODAL,\n };\n}\n\nexport function showTaskModal(options: TaskModalOptions): ModalsActionTypes {\n return {\n type: SHOW_TASK_MODAL,\n ...options,\n };\n}\n\nexport function closeTaskModal(): ModalsActionTypes {\n return {\n type: CLOSE_TASK_MODAL,\n };\n}\n\nexport function showCalendarEventModal(\n options: CalendarEventModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_CALENDAR_EVENT_MODAL,\n ...options,\n };\n}\n\nexport function closeCalendarEventModal(): ModalsActionTypes {\n return {\n type: CLOSE_CALENDAR_EVENT_MODAL,\n };\n}\n\nexport function showAttachmentsViewerModal(\n options: AttachmentsViewerOptions\n): ModalsActionTypes {\n return {\n type: SHOW_ATTACHMENTS_VIEWER_MODAL,\n ...options,\n };\n}\n\nexport function closeAttachmentsViewerModal(): ModalsActionTypes {\n return {\n type: CLOSE_ATTACHMENTS_VIEWER_MODAL,\n };\n}\n\nexport function showAddAccountantModal(\n options: AddAccountantModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_ADD_ACCOUNTANT_MODAL,\n ...options,\n };\n}\n\nexport function closeAddAccountantModal(): ModalsActionTypes {\n return {\n type: CLOSE_ADD_ACCOUNTANT_MODAL,\n };\n}\n\nexport function showUserWorkspaceSettingModal(\n options: UserWorkspaceSettingModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_USER_WORKSPACE_SETTING_MODAL,\n ...options,\n };\n}\n\nexport function closeUserWorkspaceSettingModal(): ModalsActionTypes {\n return {\n type: CLOSE_USER_WORKSPACE_SETTING_MODAL,\n };\n}\n\nexport function showBulkTimeEntryModal(\n options: BulkTimeEntryModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_BULK_TIME_ENTRY_MODAL,\n ...options,\n };\n}\n\nexport function closeBulkTimeEntryModal(): ModalsActionTypes {\n return {\n type: CLOSE_BULK_TIME_ENTRY_MODAL,\n };\n}\n\nexport function showCalculateAmountModal(\n options: CalculateAmountModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_CALCULATE_ADVANCE_MODAL,\n ...options,\n };\n}\n\nexport function closeCalculateAmountModal(): ModalsActionTypes {\n return {\n type: CLOSE_CALCULATE_ADVANCE_MODAL,\n };\n}\n\nexport function showSendContractModal(\n options: ShowSendContractModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_SEND_CONTRACT_MODAL,\n ...options,\n };\n}\n\nexport function closeSendContractModal(): ModalsActionTypes {\n return {\n type: CLOSE_SEND_CONTRACT_MODAL,\n };\n}\n\nexport function showShareLinksModal(\n options: ShowShareLinksModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_SHARE_LINKS_MODAL,\n ...options,\n };\n}\n\nexport function closeShareLinksModal(): ModalsActionTypes {\n return {\n type: CLOSE_SHARE_LINKS_MODAL,\n };\n}\n\nexport function showSendProposalModal(\n options: ShowSendProposalModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_SEND_PROPOSAL_MODAL,\n ...options,\n };\n}\n\nexport function closeSendProposalModal(): ModalsActionTypes {\n return {\n type: CLOSE_SEND_PROPOSAL_MODAL,\n };\n}\n\nexport function showItemsBlockSettingModal(\n options: ShowItemsBlockSettingModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_ITEMS_BLOCK_SETTING_MODAL,\n ...options,\n };\n}\n\nexport function closeItemsBlockSettingModal(): ModalsActionTypes {\n return {\n type: CLOSE_ITEMS_BLOCK_SETTING_MODAL,\n };\n}\n\nexport function showItemBlockSettingModal(\n options: ShowItemBlockSettingModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_ITEM_BLOCK_SETTING_MODAL,\n ...options,\n };\n}\n\nexport function closeItemBlockSettingModal(): ModalsActionTypes {\n return {\n type: CLOSE_ITEM_BLOCK_SETTING_MODAL,\n };\n}\n\nexport function showContentBlockTemplateModal(\n options: ContentBlockTemplateModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_CONTENT_BLOCK_TEMPLATE_MODAL,\n ...options,\n };\n}\n\nexport function closeContentBlockTemplateModal(): ModalsActionTypes {\n return {\n type: CLOSE_CONTENT_BLOCK_TEMPLATE_MODAL,\n };\n}\n\nexport function showDirectionsModal(\n options: ShowDirectionsModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_DIRECTIONS_MODAL,\n ...options,\n };\n}\n\nexport function closeDirectionsModal(): ModalsActionTypes {\n return {\n type: CLOSE_DIRECTIONS_MODAL,\n };\n}\n\nexport function showLedgerItemPaymentModal(\n options: LedgerItemPaymentModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_LEDGER_ITEM_PAYMENT_MODAL,\n ...options,\n };\n}\n\nexport function closeLedgerItemPaymentModal(): ModalsActionTypes {\n return {\n type: CLOSE_LEDGER_ITEM_PAYMENT_MODAL,\n };\n}\n\nexport function showLedgerItemTransactionHistoryModal(\n options: LedgerItemTransactionHistoryModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_LEDGER_ITEM_TRANSACTION_HISTORY_MODAL,\n ...options,\n };\n}\n\nexport function closeLedgerItemTransactionHistoryModal(): ModalsActionTypes {\n return {\n type: CLOSE_LEDGER_ITEM_TRANSACTION_HISTORY_MODAL,\n };\n}\n\nexport function showledgerItemClaimModal(\n options: ledgerItemClaimModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_LEDGER_ITEM_CLAIM_MODAL,\n ...options,\n };\n}\n\nexport function closeLedgerItemClaimModal(): ModalsActionTypes {\n return {\n type: CLOSE_LEDGER_ITEM_CLAIM_MODAL,\n };\n}\n\nexport function showPaymentModal(\n options: PaymentModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_PAYMENT_MODAL,\n ...options,\n };\n}\n\nexport function closePaymentModal(): ModalsActionTypes {\n return {\n type: CLOSE_PAYMENT_MODAL,\n };\n}\n\nexport function showPaymentInitiationModal(\n options: PaymentInitiationModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_PAYMENT_INITIATION_MODAL,\n ...options,\n };\n}\n\nexport function closePaymentInitiationModal(): ModalsActionTypes {\n return {\n type: CLOSE_PAYMENT_INITIATION_MODAL,\n };\n}\n\nexport function showDealModal(options: DealModalOptions): ModalsActionTypes {\n return {\n type: SHOW_DEAL_MODAL,\n ...options,\n };\n}\n\nexport function closeDealModal(): ModalsActionTypes {\n return {\n type: CLOSE_DEAL_MODAL,\n };\n}\n\nexport function showDealStageModal(\n options: DealStageModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_DEAL_STAGE_MODAL,\n ...options,\n };\n}\n\nexport function closeDealStageModal(): ModalsActionTypes {\n return {\n type: CLOSE_DEAL_STAGE_MODAL,\n };\n}\n\nexport function showTaxModal(options: TaxModalOptions): ModalsActionTypes {\n return {\n type: SHOW_TAX_MODAL,\n ...options,\n };\n}\n\nexport function closeTaxModal(): ModalsActionTypes {\n return {\n type: CLOSE_TAX_MODAL,\n };\n}\n\nexport function showWorkTypeModal(\n options: WorkTypeModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_WORK_TYPE_MODAL,\n ...options,\n };\n}\n\nexport function closeWorkTypeModal(): ModalsActionTypes {\n return {\n type: CLOSE_WORK_TYPE_MODAL,\n };\n}\n\nexport function showDiscountModal(\n options: DiscountModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_DISCOUNT_MODAL,\n ...options,\n };\n}\n\nexport function closeDiscountModal(): ModalsActionTypes {\n return {\n type: CLOSE_DISCOUNT_MODAL,\n };\n}\n\nexport function showPeppolParticipantModal(\n options: PeppolParticipantModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_PEPPOL_PARTICIPANT_MODAL,\n ...options,\n };\n}\n\nexport function closePeppolParticipantModal(): ModalsActionTypes {\n return {\n type: CLOSE_PEPPOL_PARTICIPANT_MODAL,\n };\n}\n\nexport function showFinancialYearModal(\n options: FinancialYearModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_FINANCIAL_YEAR_MODAL,\n ...options,\n };\n}\n\nexport function closeFinancialYearModal(): ModalsActionTypes {\n return {\n type: CLOSE_FINANCIAL_YEAR_MODAL,\n };\n}\n\nexport function showTransactionModal(\n options: TransactionModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_TRANSACTION_MODAL,\n ...options,\n };\n}\n\nexport function closeTransactionModal(): ModalsActionTypes {\n return {\n type: CLOSE_TRANSACTION_MODAL,\n };\n}\n\nexport function showQuestionAndAnswerBlockSettingModal(\n options: ShowQuestionAndAnswerBlockSettingModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_QUESTION_AND_ANSWER_BLOCK_SETTING_MODAL,\n ...options,\n };\n}\n\nexport function closeQuestionAndAnswerBlockSettingModal(): ModalsActionTypes {\n return {\n type: CLOSE_QUESTION_AND_ANSWER_BLOCK_SETTING_MODAL,\n };\n}\n\nexport function showPlaybookSubmissionModal(\n options: ShowPlaybookSubmissionModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_PLAYBOOK_SUBMISSION_MODAL,\n ...options,\n };\n}\n\nexport function closePlaybookSubmissionModal(): ModalsActionTypes {\n return {\n type: CLOSE_PLAYBOOK_SUBMISSION_MODAL,\n };\n}\n\nexport function showBulkProjectStatusUpdateModal(\n options: ShowBulkProjectStatusUpdateModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_BULK_PROJECT_STATUS_UPDATE_MODAL,\n ...options,\n };\n}\n\nexport function closeBulkProjectStatusUpdateModal(): ModalsActionTypes {\n return {\n type: CLOSE_BULK_PROJECT_STATUS_UPDATE_MODAL,\n };\n}\n\nexport function showSignatureModal(\n options: ShowSignatureModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_SIGNATURE_MODAL,\n ...options,\n };\n}\n\nexport function closeSignatureModal(): ModalsActionTypes {\n return {\n type: CLOSE_SIGNATURE_MODAL,\n };\n}\n\nexport function showEmailViewerModal(\n options: EmailViewerModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_EMAIL_VIEWER_MODAL,\n ...options,\n };\n}\n\nexport function closeEmailViewerModal(): ModalsActionTypes {\n return {\n type: CLOSE_EMAIL_VIEWER_MODAL,\n };\n}\n\nexport function showContactGroupModal(\n options: ContactGroupModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_CONTACT_GROUP_MODAL,\n ...options,\n };\n}\n\nexport function closeContactGroupModal(): ModalsActionTypes {\n return {\n type: CLOSE_CONTACT_GROUP_MODAL,\n };\n}\n\nexport function showBulkContactGroupModal(\n options: BulkContactGroupModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_BULK_CONTACT_GROUP_MODAL,\n ...options,\n };\n}\n\nexport function closeBulkContactGroupModal(): ModalsActionTypes {\n return {\n type: CLOSE_BULK_CONTACT_GROUP_MODAL,\n };\n}\n\nexport function showExportContactsModal(\n options: ExportContactsModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_EXPORT_CONTACTS_MODAL,\n ...options,\n };\n}\n\nexport function closeExportContactsModal(): ModalsActionTypes {\n return {\n type: CLOSE_EXPORT_CONTACTS_MODAL,\n };\n}\n\nexport function showContactTypeModal(\n options: ContactTypeModalOptions\n): ModalsActionTypes {\n return { type: SHOW_CONTACT_TYPE_MODAL, ...options };\n}\n\nexport function closeContactTypeModal(): ModalsActionTypes {\n return { type: CLOSE_CONTACT_TYPE_MODAL };\n}\n\nexport function showFileUploadModal(\n options: FileUploadModalOptions\n): ModalsActionTypes {\n return { type: SHOW_FILE_UPLOAD_MODAL, ...options };\n}\n\nexport function closeFileUploadModal(): ModalsActionTypes {\n return { type: CLOSE_FILE_UPLOAD_MODAL };\n}\n\nexport function showPaymentQRModal(\n options: PaymentQRModalOptions\n): ModalsActionTypes {\n return { type: SHOW_PAYMENT_QR_MODAL, ...options };\n}\n\nexport function closePaymentQRModal(): ModalsActionTypes {\n return { type: CLOSE_PAYMENT_QR_MODAL };\n}\n\nexport function showCustomComponentModal(\n options: CustomComponentModalOptions\n): ModalsActionTypes {\n return { type: SHOW_CUSTOM_COMPONENT_MODAL, ...options };\n}\n\nexport function closeCustomComponentModal(): ModalsActionTypes {\n return { type: CLOSE_CUSTOM_COMPONENT_MODAL };\n}\n\nexport function showDocumentModal(\n options: DocumentModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_DOCUMENT_MODAL,\n ...options,\n };\n}\n\nexport function closeDocumentModal(): ModalsActionTypes {\n return {\n type: CLOSE_DOCUMENT_MODAL,\n };\n}\n\nexport function showDocumentTagModal(\n options: DocumentTagModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_DOCUMENT_TAG_MODAL,\n ...options,\n };\n}\n\nexport function closeDocumentTagModal(): ModalsActionTypes {\n return {\n type: CLOSE_DOCUMENT_TAG_MODAL,\n };\n}\n\nexport function showExportDocumentsModal(\n options: ExportDocumentsModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_EXPORT_DOCUMENTS_MODAL,\n ...options,\n };\n}\n\nexport function closeExportDocumentsModal(): ModalsActionTypes {\n return {\n type: CLOSE_EXPORT_DOCUMENTS_MODAL,\n };\n}\n\nexport function showUploadDocumentsModal(\n options: UploadDocumentsModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_UPLOAD_DOCUMENTS_MODAL,\n ...options,\n };\n}\n\nexport function closeUploadDocumentsModal(): ModalsActionTypes {\n return {\n type: CLOSE_UPLOAD_DOCUMENTS_MODAL,\n };\n}\n\nexport function showProductImportModal(\n options: ProductImportModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_PRODUCT_IMPORT_MODAL,\n ...options,\n };\n}\n\nexport function closeProductImportModal(): ModalsActionTypes {\n return {\n type: CLOSE_PRODUCT_IMPORT_MODAL,\n };\n}\n\nexport function showCallModal(options: CallModalOptions): ModalsActionTypes {\n return {\n type: SHOW_CALL_MODAL,\n ...options,\n };\n}\n\nexport function closeCallModal(): ModalsActionTypes {\n return {\n type: CLOSE_CALL_MODAL,\n };\n}\n\nexport function showSendEmailModal(\n options: ShowSendEmailModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_SEND_EMAIL_MODAL,\n ...options,\n };\n}\n\nexport function closeSendEmailModal(): ModalsActionTypes {\n return {\n type: CLOSE_SEND_EMAIL_MODAL,\n };\n}\n\nexport function showEmailTemplateModal(\n options: ShowEmailTemplateModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_EMAIL_TEMPLATE_MODAL,\n ...options,\n };\n}\n\nexport function closeEmailTemplateModal(): ModalsActionTypes {\n return {\n type: CLOSE_EMAIL_TEMPLATE_MODAL,\n };\n}\n\nexport function showSequenceStepModal(\n options: ShowSequenceStepModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_SEQUENCE_STEP_MODAL,\n ...options,\n };\n}\n\nexport function closeSequenceStepModal(): ModalsActionTypes {\n return {\n type: CLOSE_SEQUENCE_STEP_MODAL,\n };\n}\n\nexport function showContactEnrollmentModal(\n options: ShowContactEnrollmentModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_CONTACT_ENROLLMENT_MODAL,\n ...options,\n };\n}\n\nexport function closeContactEnrollmentModal(): ModalsActionTypes {\n return {\n type: CLOSE_CONTACT_ENROLLMENT_MODAL,\n };\n}\n\nexport function showTwoFactorAuthenticationModal(\n options: ShowTwoFactorAuthenticationModalOptions\n): ModalsActionTypes {\n return {\n type: SHOW_TWO_FACTOR_AUTHENTICATION_MODAL,\n ...options,\n };\n}\n\nexport function closeTwoFactorAuthenticationModal(): ModalsActionTypes {\n return {\n type: CLOSE_TWO_FACTOR_AUTHENTICATION_MODAL,\n };\n}\n","import { toast } from 'react-toastify'\n\nexport default class Notification {\n\tstatic notifySuccess(text: string, callback = () => {}) {\n\t\ttoast.success(text, { onClick: callback })\n\t}\n\n\tstatic notifyWarning(text: string, callback = () => {}) {\n\t\ttoast.warn(text, { onClick: callback })\n\t}\n\n\tstatic notifyError(text: string, callback = () => {}) {\n\t\ttoast.error(text, { onClick: callback })\n\t}\n\n\tstatic notifyInfo(text: string, callback = () => {}) {\n\t\ttoast.info(text, { onClick: callback })\n\t}\n}","import i18n from \"../translations\";\nimport moment from \"./Moment\";\nimport parse from \"parse-duration\";\n\nparse[\"maand\"] = parse[\"months\"];\nparse[\"maanden\"] = parse[\"months\"];\nparse[\"week\"] = parse[\"w\"];\nparse[\"weken\"] = parse[\"w\"];\nparse[\"dag\"] = parse[\"d\"];\nparse[\"dagen\"] = parse[\"d\"];\nparse[\"dag\"] = parse[\"d\"];\nparse[\"dagen\"] = parse[\"d\"];\nparse[\"u\"] = parse[\"h\"];\nparse[\"uur\"] = parse[\"h\"];\nparse[\"uren\"] = parse[\"h\"];\nparse[\"m\"] = parse[\"m\"];\nparse[\"minuut\"] = parse[\"m\"];\nparse[\"minuten\"] = parse[\"m\"];\nparse[\"sec\"] = parse[\"s\"];\nparse[\"seconde\"] = parse[\"s\"];\nparse[\"seconden\"] = parse[\"s\"];\n\nexport default class TimeFormatter {\n static datetimeFormat(format, hourFormat = 24) {\n if (hourFormat == 24) {\n switch (format) {\n case \"hh:mm:ss\":\n return `HH:mm:ss`;\n case \"hh mm ss\":\n return `HH[${i18n.t(\"TimeFormatter::h\")}] mm[${i18n.t(\n \"TimeFormatter::m\"\n )}] ss[${i18n.t(\"TimeFormatter::s\")}]`;\n }\n } else if (hourFormat == 12) {\n switch (format) {\n case \"hh:mm:ss\":\n return `hh:mm:ss A`;\n case \"hh mm ss\":\n return `h[${i18n.t(\"TimeFormatter::h\")}] m[${i18n.t(\n \"TimeFormatter::m\"\n )}] s[$${i18n.t(\"TimeFormatter::s\")}] A`;\n }\n } else {\n throw Error(\"No valid hour format\");\n }\n }\n\n static durationFormat(durationInSeconds, format, trim = false) {\n let options = {};\n\n if (trim === false) {\n options[\"trim\"] = false;\n }\n\n switch (format) {\n case \"hh:mm:ss\":\n return moment\n .duration({ seconds: durationInSeconds })\n .format(`hh:mm:ss`, options);\n case \"hh mm ss\":\n return moment\n .duration({ seconds: durationInSeconds })\n .format(\n `h[${i18n.t(\"TimeFormatter::h\")}]m[${i18n.t(\n \"TimeFormatter::m\"\n )}]s[${i18n.t(\"TimeFormatter::s\")}]`,\n options\n );\n }\n }\n\n static durationFormatHighlighted(\n durationInSeconds,\n format,\n trim = false\n ): string {\n let options = {};\n\n if (trim === false) {\n options[\"trim\"] = false;\n }\n\n switch (format) {\n case \"hh:mm:ss\":\n return moment\n .duration({ seconds: durationInSeconds })\n .format(`[]hh[]:[]mm[]:ss`, options);\n case \"hh mm ss\":\n return moment\n .duration({ seconds: durationInSeconds })\n .format(\n `[]h[${i18n.t(\"TimeFormatter::h\")}][] []m[${i18n.t(\n \"TimeFormatter::m\"\n )}][] s[${i18n.t(\"TimeFormatter::s\")}]`,\n options\n );\n }\n }\n\n static parseDuration(text, format: parse.Units = \"s\") {\n return parse(text, format);\n }\n\n static formatToHumanReadableDuration(durationInSeconds: number) {\n return moment\n .duration(durationInSeconds, \"seconds\")\n .format(\n `d[${i18n.t(\"TimeFormatter::d\")}] h[${i18n.t(\n \"TimeFormatter::h\"\n )}] m[${i18n.t(\"TimeFormatter::m\")}] s[${i18n.t(\"TimeFormatter::s\")}]`,\n { trim: \"all\" }\n );\n }\n}\n"],"names":["ERoute","Container","styled","List","ListItem","props","destructive","css","Style","IconContainer","ActionList","React","indicator","render","actions","hasIndicator","onClick","this","containerClassName","className","filter","action","visible","map","key","e","preventDefault","stopPropagation","icon","content","Wrapper","addMarginRight","Backdrop","tip","text","Boolean","length","Card","CardEmptyInfo","compact","description","descriptionActionText","onDescriptionActionClick","href","checked","CheckboxIcon","onChange","viewBox","focusable","d","CheckboxInput","constructor","super","uniqueId","Utils","onCheckboxClick","bind","label","tag","htmlFor","style","maxWidth","timeout","classNames","enter","enterActive","exit","exitActive","in","theme","borderRadius","spacing","colors","primary","danger","dangerLight","neutral20","neutral30","neutral50","ResourceCreatablePowerSelectClass","state","valueResources","defaultResources","searchResources","isLoadingValueResource","isLoadingDefaultResources","isLoadingSearchResources","searchValue","getResources","getOptions","getOptionFromResource","fetchValueResources","fetchDefaultResources","fetchDefaultResourcesDebounced","fetchSearchResources","fetchSearchResourcesDebounced","onResourceModalSubmit","onResourceModalDelete","onInputChange","onInputFocus","onCreateOption","onAddOption","onEditOption","formatCreateLabel","isValidNewOption","getComponents","getUpsertModeEnabled","componentDidMount","value","componentDidUpdate","prevProps","deepEqual","params","type","setState","idValues","Array","isArray","contacts","companies","ContactsController","ContactType","people","contact_groups","ContactGroupsController","projects","ProjectsController","users","UsersController","deal_stages","DealStagesController","deals","DealsController","work_types","WorkTypesController","boards","BoardsController","board_id","board_lists","BoardListsController","document_tags","DocumentTagsController","playbooks","PlaybooksController","sequences","SequencesController","accounts","AccountsController","Error","ex","console","error","catch","contact_id","customParams","selfContacts","inputValue","searchNameCompanies","searchAliasCompanies","searchNamePeople","searchAliasPeople","searchNameContacts","searchAliasContacts","searchContactGroups","searchNameDealStages","searchDeals","searchWorkTypes","searchBoards","searchBoardLists","searchDocumentTags","searchPlaybooks","searchSequences","searchAccounts","getSelectedResource","resources","reduce","uniqueResources","o","some","obj","id","push","sort","a","b","position","resource","getSelectedOptions","options","find","option","alias","name","contact","email","document_tag","reference","isMulti","newValues","newValue","valueResource","showContactTypeModal","showContactModal","showProjectModal","showDealModal","showContactGroupModal","showWorkTypeModal","showDocumentTagModal","createParams","firstName","lastParts","split","requestAnimationFrame","first_name","last_name","join","onSubmit","contactType","project","contactDisabled","deal","projectDisabled","project_id","contactGroup","workType","documentTag","onDelete","history","RouteHelper","closeTaskModal","closeContactEnrollmentModal","window","location","assign","showDealStageModal","dealStage","t","input","updatedValueResources","valueIndex","findIndex","UserworkspaceSettingHelper","UserWorkspaceSettingScope","UserWorkspaceSettingHelper","ContactSelectComponents","ContactEmailIndicatorSelectComponents","DocumentTagSelectComponents","ResourceSelectComponents","isDisabled","isClearable","placeholder","styles","selectedOptions","isLoading","allowCreateWhileLoading","ReactSelectTheme","components","onFocus","onAddClick","onEditClick","upsertModeEnabled","withRouter","connect","dispatch","showUserWorkspaceSettingModal","withTranslation","size","forcePage","undefined","previousLabel","nextLabel","marginPagesDisplayed","activator","placement","active","onClose","children","strategy","referenceElement","setReferenceElement","popperElement","setPopperElement","attributes","update","usePopper","onOutsideClick","document","contains","target","addEventListener","removeEventListener","ref","ReactDOM","popper","visibility","pointerEvents","zIndex","body","MultiValueWrapper","present","MultiValueContainer","data","emailPresent","emails","c","StarContact","starred","getIcon","ParentContactContainer","ContactContainer","Option","__isNew__","SingleValue","MultiValue","selectProps","onTouchStart","IndicatorContainer","OptionContainer","ValueAction","ValueActions","ValueContainer","IndicatorsContainer","hasValue","getValue","disabled","Label","LabelWrapper","IconWrapper","partial","onCheckedChange","Content","FilterInlineLabel","FilterInlineDivider","FilterInlineValue","WrapperIcon","WrapperBackdrop","FilterContainer","FilterWrapper","FilterHeader","FilterHeaderButton","FilterContent","FilterItems","FilterItem","FilterItemHeader","FilterItemContent","useTranslation","container","setActive","activeFilters","setActiveFilters","modifiers","filters","propsActiveFilters","activeFilterCount","Object","keys","current","onDoneClick","onToggleFilterItem","index","selectedFilterName","updatedFilterValues","selectedFilter","ResourceListFilterType","setPredicateDefaultValues","onFilterValueChange","count","opacity","display","InputContainer","displayArrow","RowContainer","authentication","currentUser","workspace","setting","predicate","setPredicate","cont","ResourceListFilterPredicate","Sentry","gte","lte","gt","lt","onPredicateChange","newPredicate","predicateAbbreviation","ResourceHelper","String","stringPredicateOptions","selectedStringPredicateOption","predicateOption","currentTarget","singleOptions","selectedSingleOption","valueOption","resourceType","multipleOptions","selectedMultipleOption","selectedValues","includes","datePredicateOptions","selectedDatePredicateOption","displayDateArrow","isAfterOrOnDateValue","isBeforeOrOnDateValue","nullPredicateOptions","selectedNullPredicateValue","getSingleDateInputValue","moment","predicateValue","dateFormat","date_format","timeFormat","initialValue","inputProps","propagateValue","newDate","isValid","format","closeOnSelect","marginLeft","marginRight","base","width","numberPredicateOptions","selectedNumberPredicateOptions","displayNumberArrow","isAfterOrOnNumberValue","isBeforeOrOnNumberValue","getSingleInputValue","step","FooterLeft","FooterRight","clickable","ResourceFooter","itemCount","pagination","onPageChange","onPaginationPageChange","selectedPage","newPage","selected","page","pageCount","disableInitialCallback","HeaderOuterWrapper","HeaderWrapper","HeaderContentWrapper","ResourceLabelWrapper","ActionsLeftContainer","ResourceLabel","HeaderLeftContainer","HeaderRightContainer","Actions","Action","SortWrapper","SortSelect","SortSelectInput","SortContent","SortInlineLabel","SortSelectedOption","SortSelectIcon","SortSelectBackdrop","BulkActionsContainer","BulkActionsWrapper","BulkActionsButtonGroupWrapper","BulkActionButtonGroupItem","checkbox","hideOnMobile","hideOnDesktop","ResourceSearch","ResourceSearchIcon","ResourceSearchCloseIcon","bulkActionPopoverActive","mobileActionsPopoverActive","resourceLabel","resourceLabelStyle","actionsLeft","actionsRight","onFiltersChange","sortOptions","sortValue","onSortChange","selectedItems","promotedBulkActions","bulkActions","onSearchChange","onSearchSubmit","fullySelected","partiallySelected","noneSelected","onBulkActionsPopoverClose","useDebouncedCallback","onMobileActionsPopoverClose","selectedOption","sortOption","onResourceSearchChange","onKeyUp","onResourceSearchClear","dangerouslySetInnerHTML","__html","fillRule","onSelectionChange","item","promotedBulkAction","onAction","borderTopRightRadius","borderBottomRightRadius","bulkAction","Number","ResourceSpinner","TableContainer","maxHeight","Table","headers","renderRow","renderEmpty","stickyHeader","itemsCount","header","sticky","title","align","colSpan","stickyTop","stickyRight","stickyBottom","stickyLeft","textAlign","ResourceTableRowData","selectionDisabled","ActionButton","onActionClick","popoverActive","setPopoverActive","onPopoverClose","stickTop","minWidth","verticalAlign","maxWidthMobile","ellipse","ResourceTableRowHeader","InvoiceDetailsStatus","LedgerItemHelper","ledgerItemType","locale","property","LedgerItemType","MobilityHelper","store","translations","i18n","ledgerItem","color","isDelivered","delivered_on","isCancelled","cancelled_on","isOverdue","due_on","isSameOrBefore","LedgerItemStatus","issued_on","isInvoiced","invoiced_on","isIssued","isApproved","approved_on","isRejected","rejected_on","isPaid","isCredited","credited_on","getLedgerItemStatus","lineItem","quantity","price","subtotal","getLineItemSubTotal","discount","netTotal","getLineItemNetTotal","tax_rate","getLineItemTaxTotal","rate","workspaceTaxes","tax","workspaceTax","line_items","total","isNaN","getLedgerItemNetTotal","getLedgerItemTaxTotal","taxesList","forEach","itemNettotal","firstTaxTotal","firstTaxIndex","toFixed","default_ledger_item_locale","paid_on","isAfter","pdf_attachment_download_url","saveAs","pdf_attachment_file_name","ledgerNumber","alphabet","result","i","last","charAt","next","carry","indexOf","toLowerCase","isUpperCase","toUpperCase","slice","LedgerItemExportType","status","localeTranslations","updatedTranslations","route","processedRoute","toString","processingParams","replaceKey","keyValue","replace","RegExp","SearchHelper","path","navigation","process","ret","encodeURIComponent","TimeHelper","secondsCount","now","startOfDay","startOf","diff","defaultRate","base_rate","billable","fixed_rate","started_at","utc","ended_at","startDate","stopDate","from","by","timeEntry","test","minutes","hours","timer","entry","durationlabel","getTimerDuration","descriptionLabel","getTimerDescription","timerTitle","getTimerTitle","durationInSeconds","asSeconds","trim","time_format","TimeFormatter","startYear","years","currentYear","Date","getFullYear","reverse","role","user_workspace_setting","scope","hasRole","UserWorkspaceSettingRole","scopes","every","SHOW_CONTACT_MODAL","closeContactModal","CLOSE_CONTACT_MODAL","SHOW_PROJECT_MODAL","closeProjectModal","CLOSE_PROJECT_MODAL","showProjectStatusUpdateModal","SHOW_PROJECT_STATUS_UPDATE_MODAL","closeProjectStatusUpdateModal","CLOSE_PROJECT_STATUS_UPDATE_MODAL","showExpenseModal","SHOW_EXPENSE_MODAL","closeExpenseModal","CLOSE_EXPENSE_MODAL","showTimeEntryExportModal","SHOW_TIME_ENTRY_EXPORT_MODAL","closeTimeEntryExportModal","CLOSE_TIME_ENTRY_EXPORT_MODAL","showTimeEntryModal","SHOW_TIME_ENTRY_MODAL","closeTimeEntryModal","CLOSE_TIME_ENTRY_MODAL","showSendLedgerItemModal","SHOW_SEND_LEDGER_ITEM_MODAL","closeSendLedgerItemModal","CLOSE_SEND_LEDGER_ITEM_MODAL","showSettingsEmailTemplateModal","SHOW_SETTINGS_EMAIL_TEMPLATE_MODAL","closeSettingsEmailTemplateModal","CLOSE_SETTINGS_EMAIL_TEMPLATE_MODAL","showPaymentDetailsModal","SHOW_PAYMENT_DETAILS_MODAL","closePaymentDetailsModal","CLOSE_PAYMENT_DETAILS_MODAL","showImportProductsModal","SHOW_IMPORT_PRODUCTS_MODAL","closeImportProductsModal","CLOSE_IMPORT_PRODUCTS_MODAL","showImportTimeEntriesModal","SHOW_IMPORT_TIME_ENTRIES_MODAL","closeImportTimeEntriesModal","CLOSE_IMPORT_TIME_ENTRIES_MODAL","showImportExpensesModal","contactId","projectId","SHOW_IMPORT_EXPENSES_MODAL","closeImportExpensesModal","CLOSE_IMPORT_EXPENSES_MODAL","showTaxesModal","SHOW_TAXES_MODAL","closeTaxesModal","CLOSE_TAXES_MODAL","showConfirmModal","SHOW_CONFIRM_MODAL","onConfirm","onCancel","closeConfirmModal","CLOSE_CONFIRM_MODAL","showProductModal","SHOW_PRODUCT_MODAL","closeProductModal","CLOSE_PRODUCT_MODAL","showMobileAppModal","SHOW_MOBILE_APP_MODAL","closeMobileAppModal","CLOSE_MOBILE_APP_MODAL","showFileModal","SHOW_FILE_MODAL","closeFileModal","CLOSE_FILE_MODAL","showMoveFilesModal","SHOW_MOVE_FILES_MODAL","closeMoveFilesModal","CLOSE_MOVE_FILES_MODAL","showExportLedgerItemsModal","SHOW_EXPORT_LEDGER_ITEMS_MODAL","closeExportLedgerItemsModal","CLOSE_EXPORT_LEDGER_ITEMS_MODAL","showExportExpensesModal","SHOW_EXPORT_EXPENSES_MODAL","closeExportExpensesModal","CLOSE_EXPORT_EXPENSES_MODAL","showExpenseCategoryModal","SHOW_EXPENSE_CATEGORY_MODAL","closeExpenseCategoryModal","CLOSE_EXPENSE_CATEGORY_MODAL","showExportProductsModal","SHOW_EXPORT_PRODUCTS_MODAL","closeExportProductsModal","CLOSE_EXPORT_PRODUCTS_MODAL","showCustomFieldModal","SHOW_CUSTOM_FIELD_MODAL","closeCustomFieldModal","CLOSE_CUSTOM_FIELD_MODAL","showBoardModal","SHOW_BOARD_MODAL","closeBoardModal","CLOSE_BOARD_MODAL","showTaskModal","SHOW_TASK_MODAL","CLOSE_TASK_MODAL","showCalendarEventModal","SHOW_CALENDAR_EVENT_MODAL","closeCalendarEventModal","CLOSE_CALENDAR_EVENT_MODAL","showAttachmentsViewerModal","SHOW_ATTACHMENTS_VIEWER_MODAL","closeAttachmentsViewerModal","CLOSE_ATTACHMENTS_VIEWER_MODAL","showAddAccountantModal","SHOW_ADD_ACCOUNTANT_MODAL","closeAddAccountantModal","CLOSE_ADD_ACCOUNTANT_MODAL","SHOW_USER_WORKSPACE_SETTING_MODAL","closeUserWorkspaceSettingModal","CLOSE_USER_WORKSPACE_SETTING_MODAL","showBulkTimeEntryModal","SHOW_BULK_TIME_ENTRY_MODAL","closeBulkTimeEntryModal","CLOSE_BULK_TIME_ENTRY_MODAL","showCalculateAmountModal","SHOW_CALCULATE_ADVANCE_MODAL","closeCalculateAmountModal","CLOSE_CALCULATE_ADVANCE_MODAL","showSendContractModal","SHOW_SEND_CONTRACT_MODAL","closeSendContractModal","CLOSE_SEND_CONTRACT_MODAL","showShareLinksModal","SHOW_SHARE_LINKS_MODAL","closeShareLinksModal","CLOSE_SHARE_LINKS_MODAL","showSendProposalModal","SHOW_SEND_PROPOSAL_MODAL","closeSendProposalModal","CLOSE_SEND_PROPOSAL_MODAL","showItemsBlockSettingModal","SHOW_ITEMS_BLOCK_SETTING_MODAL","closeItemsBlockSettingModal","CLOSE_ITEMS_BLOCK_SETTING_MODAL","showItemBlockSettingModal","SHOW_ITEM_BLOCK_SETTING_MODAL","closeItemBlockSettingModal","CLOSE_ITEM_BLOCK_SETTING_MODAL","showContentBlockTemplateModal","SHOW_CONTENT_BLOCK_TEMPLATE_MODAL","closeContentBlockTemplateModal","CLOSE_CONTENT_BLOCK_TEMPLATE_MODAL","showDirectionsModal","SHOW_DIRECTIONS_MODAL","closeDirectionsModal","CLOSE_DIRECTIONS_MODAL","showLedgerItemPaymentModal","SHOW_LEDGER_ITEM_PAYMENT_MODAL","closeLedgerItemPaymentModal","CLOSE_LEDGER_ITEM_PAYMENT_MODAL","showLedgerItemTransactionHistoryModal","SHOW_LEDGER_ITEM_TRANSACTION_HISTORY_MODAL","closeLedgerItemTransactionHistoryModal","CLOSE_LEDGER_ITEM_TRANSACTION_HISTORY_MODAL","showledgerItemClaimModal","SHOW_LEDGER_ITEM_CLAIM_MODAL","closeLedgerItemClaimModal","CLOSE_LEDGER_ITEM_CLAIM_MODAL","showPaymentModal","SHOW_PAYMENT_MODAL","closePaymentModal","CLOSE_PAYMENT_MODAL","showPaymentInitiationModal","SHOW_PAYMENT_INITIATION_MODAL","closePaymentInitiationModal","CLOSE_PAYMENT_INITIATION_MODAL","SHOW_DEAL_MODAL","closeDealModal","CLOSE_DEAL_MODAL","SHOW_DEAL_STAGE_MODAL","closeDealStageModal","CLOSE_DEAL_STAGE_MODAL","showTaxModal","SHOW_TAX_MODAL","closeTaxModal","CLOSE_TAX_MODAL","SHOW_WORK_TYPE_MODAL","closeWorkTypeModal","CLOSE_WORK_TYPE_MODAL","showDiscountModal","SHOW_DISCOUNT_MODAL","closeDiscountModal","CLOSE_DISCOUNT_MODAL","showPeppolParticipantModal","SHOW_PEPPOL_PARTICIPANT_MODAL","closePeppolParticipantModal","CLOSE_PEPPOL_PARTICIPANT_MODAL","showFinancialYearModal","SHOW_FINANCIAL_YEAR_MODAL","closeFinancialYearModal","CLOSE_FINANCIAL_YEAR_MODAL","showTransactionModal","SHOW_TRANSACTION_MODAL","closeTransactionModal","CLOSE_TRANSACTION_MODAL","showQuestionAndAnswerBlockSettingModal","SHOW_QUESTION_AND_ANSWER_BLOCK_SETTING_MODAL","closeQuestionAndAnswerBlockSettingModal","CLOSE_QUESTION_AND_ANSWER_BLOCK_SETTING_MODAL","showPlaybookSubmissionModal","SHOW_PLAYBOOK_SUBMISSION_MODAL","closePlaybookSubmissionModal","CLOSE_PLAYBOOK_SUBMISSION_MODAL","showBulkProjectStatusUpdateModal","SHOW_BULK_PROJECT_STATUS_UPDATE_MODAL","closeBulkProjectStatusUpdateModal","CLOSE_BULK_PROJECT_STATUS_UPDATE_MODAL","showSignatureModal","SHOW_SIGNATURE_MODAL","closeSignatureModal","CLOSE_SIGNATURE_MODAL","showEmailViewerModal","SHOW_EMAIL_VIEWER_MODAL","closeEmailViewerModal","CLOSE_EMAIL_VIEWER_MODAL","SHOW_CONTACT_GROUP_MODAL","closeContactGroupModal","CLOSE_CONTACT_GROUP_MODAL","showBulkContactGroupModal","SHOW_BULK_CONTACT_GROUP_MODAL","closeBulkContactGroupModal","CLOSE_BULK_CONTACT_GROUP_MODAL","showExportContactsModal","SHOW_EXPORT_CONTACTS_MODAL","closeExportContactsModal","CLOSE_EXPORT_CONTACTS_MODAL","SHOW_CONTACT_TYPE_MODAL","closeContactTypeModal","CLOSE_CONTACT_TYPE_MODAL","showFileUploadModal","SHOW_FILE_UPLOAD_MODAL","closeFileUploadModal","CLOSE_FILE_UPLOAD_MODAL","showPaymentQRModal","SHOW_PAYMENT_QR_MODAL","closePaymentQRModal","CLOSE_PAYMENT_QR_MODAL","showCustomComponentModal","SHOW_CUSTOM_COMPONENT_MODAL","closeCustomComponentModal","CLOSE_CUSTOM_COMPONENT_MODAL","showDocumentModal","SHOW_DOCUMENT_MODAL","closeDocumentModal","CLOSE_DOCUMENT_MODAL","SHOW_DOCUMENT_TAG_MODAL","closeDocumentTagModal","CLOSE_DOCUMENT_TAG_MODAL","showExportDocumentsModal","SHOW_EXPORT_DOCUMENTS_MODAL","closeExportDocumentsModal","CLOSE_EXPORT_DOCUMENTS_MODAL","showUploadDocumentsModal","SHOW_UPLOAD_DOCUMENTS_MODAL","closeUploadDocumentsModal","CLOSE_UPLOAD_DOCUMENTS_MODAL","showProductImportModal","SHOW_PRODUCT_IMPORT_MODAL","closeProductImportModal","CLOSE_PRODUCT_IMPORT_MODAL","showCallModal","SHOW_CALL_MODAL","closeCallModal","CLOSE_CALL_MODAL","showSendEmailModal","SHOW_SEND_EMAIL_MODAL","closeSendEmailModal","CLOSE_SEND_EMAIL_MODAL","showEmailTemplateModal","SHOW_EMAIL_TEMPLATE_MODAL","closeEmailTemplateModal","CLOSE_EMAIL_TEMPLATE_MODAL","showSequenceStepModal","SHOW_SEQUENCE_STEP_MODAL","closeSequenceStepModal","CLOSE_SEQUENCE_STEP_MODAL","showContactEnrollmentModal","SHOW_CONTACT_ENROLLMENT_MODAL","CLOSE_CONTACT_ENROLLMENT_MODAL","showTwoFactorAuthenticationModal","SHOW_TWO_FACTOR_AUTHENTICATION_MODAL","closeTwoFactorAuthenticationModal","CLOSE_TWO_FACTOR_AUTHENTICATION_MODAL","Notification","callback","toast","parse","hourFormat","seconds"],"sourceRoot":""}