udp-react-enterprise-component-library 25.18.4-beta.77 → 25.18.4-beta.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/udp/utilities/useDateStringColumnDef.d.ts +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/export-map.json +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -257,6 +257,7 @@ import { useDateLocale, useOutlook, useProductVersion } from "./hooks/index.js";
|
|
|
257
257
|
import { t as AmbientToggleButtonGroup } from "./AmbientToggleButtonGroup-CaeHb1rR.js";
|
|
258
258
|
import { FluentCompoundButton, FluentMenuListButton, FluentUploadButton, FluentUploadIconButton } from "./UI/inputs/buttons/index.js";
|
|
259
259
|
import { a as UdpTransactionTypesPage } from "./UdpTransactionTypesPage-C_BN1GFo.js";
|
|
260
|
+
import { HttpStatusCode } from "./enums/index.js";
|
|
260
261
|
import { i as allowedExtensions, n as UdpTransactionsPage, r as MAX_FILE_SIZE_MB } from "./UdpTransactionsPage-bqM8jory.js";
|
|
261
262
|
import { AccountFlags } from "./UI/dataDisplay/status/index.js";
|
|
262
263
|
import { FormHeader, FormSubHeader, StylizedTitle } from "./UI/dataDisplay/typography/index.js";
|
|
@@ -1598,6 +1599,6 @@ const TransactionAttachmentPdfStitcher = (props) => {
|
|
|
1598
1599
|
})));
|
|
1599
1600
|
};
|
|
1600
1601
|
//#endregion
|
|
1601
|
-
export { ADUserTypeEnums, Accordion, AccountFlags, ActionContext, ActionDispatchContext, ActionForm, ActionModal, ActionPanelPlacement, ActionProvider, ActionSideSheet, ActionSpeedDial, ActionSplitScreen, ActionSummaryCard, ActionSummaryHeader, ActionSummaryListContainer, ActionSummaryListItem, ActionSummaryPopover, ActionWrapper, ActionsRenderer, AddUser, AddressListItem, Adornment, AgTable, AgTableButtons, AlertContainer, AlertFlag, AmChart, AmbientAlert, AmbientAutoComplete, AmbientCard, AmbientCardButton, AmbientCardTitle, AmbientDateRangeSelector, AmbientGridTemplate, AmbientList, AmbientListItem, AmbientPopoverMenuItem, AmbientProjectSwitcher, AmbientSingleDateSelector, AmbientSplitStatCard, AmbientStepper, AmbientSummaryListHeader, AmbientTextField, AmbientToast, AmbientToggleButton, AmbientToggleButtonGroup, AmbientTokenButton, AmbientVisualizationCard, AmbientVisualizer, ApiMethodInstanceUdpGrid, AppMenu, AppMenuItem, AppMenuItemComponent, ApprovalIcon, Attachments, AuthProvider, AuthProviderWrapper, AutoCompletePropertyWidget_exports as AutoCompletePropertyWidget, AvatarAlphabet, BackwardsCompatibleGrid, BarChartWidget_exports as BarChartWidget, BaseSideSheet, BioCard, Block, BooleanPropertyWidget_exports as BooleanPropertyWidget, Box, BreadCrumbMenu, BubbleWidget_exports as BubbleWidget, CardList, CardinalityTypeEnums, ChatContainer, ChatMessage, CheckboxGroup, CheckboxList, ChipAlphabet, CircleGaugeWidget, CircularProgress, CkRichEditor, ClickOpenEnums, ClientSideUdpGrid, ColorKey, CompactCard, CompactDataList, CompactDataListItem, ConfigService, ContainerTypeEnums, ContentContainer, Controls, CoreLayoutFloorplan, CrudForm, CustomMenuPage, DateField, DatePropertyWidget_exports as DatePropertyWidget, DateTimeField, DateTimePropertyWidget_exports as DateTimePropertyWidget, DateTrendWidget_exports as DateTrendWidget, DensePlotWidget_exports as DensePlotWidget, DeviceTypeEnums, DiffChecker, Directory, DirectoryListItem, Divider, DonutChartWidget_exports as DonutChartWidget, DragDropFileUpload, DraggableSidebarTemplate, DynamicContainerWithMenu, EMPTY_GUID, Ellipse, EmptyStateDisplay, EntityAttributeEnums, EntityHeader, ExecuteApiDialog, ExpandRenderer, ExportSidesheet, ExtenderToggle, Field, FieldArrayCard, FieldType, FileUpload, FileViewer, FilterOperators, FilterSearch, FlagBlock, FloatPropertyWidget_exports as FloatPropertyWidget, FluentActivity, FluentActivityRow, FluentButton, FluentCard, FluentCardActions, FluentCardContent, FluentCardHeader, FluentCardText, FluentCheckbox, FluentColorPicker, FluentCompoundButton, FluentDataTable, FluentDatePicker, FluentDateTimePicker, FluentDialog, FluentIcon, FluentIconButton, FluentImageMap, FluentLink, FluentListElement, FluentListItem, FluentMap, FluentMenuListButton, FluentMenuListItem, FluentProfileMenuCard, FluentRadio, FluentRadioGroup, FluentScrollLoadAutocompleteMenu, FluentSearchField, FluentSelectGroupMenu, FluentSelectMenu, FluentSideNav, FluentSimpleSelect, FluentSimpleTab, FluentSimpleTabs, FluentTabPanel, FluentTabUtility, FluentTagField, FluentTagFieldComponent, FluentTextField, FluentTextFieldAutoComplete, FluentTextFieldComponent, FluentTimePicker, FluentTimeline, FluentToggle, FluentUploadButton, FluentUploadIconButton, Form, FormButtons, FormControl, FormControlLabel, FormError, FormHeader, FormSpy, FormSubHeader, FullScreenControl, GaugeWidget, GeoMap, GraphCard, Grid, GridActionBar, GridEnums, GridExcelStyleEnums, GridGroup, GridGroupingHeader, GridGroupingSidebar, GridRow, GridSidebarContainer, GridStateTypeEnums, GridUnit, HeaderExpander, HeaderLayout, IconButtonWithTooltip, IconKey, IconRenderer, IframeContainer, ImageLayer, ImportDataFromFileMapping, IndicatorChip, InfoCard, InputAdornment, InputFieldType, Inquiry, InquiryAdvancedSearch, InquiryAdvancedSearchForm, InquiryContainer, InquiryDashboard, InquiryHeaderControl, InquiryHeaderControlTarget, InquiryHeaderSecondary, InquiryHeaderSecondaryAlert, InquiryHeaderSecondaryAlertTarget, InquiryHeaderSecondaryTarget, InquiryHeaderTitle, InquiryHeaderTitleTarget, InquiryNodeControls, InquirySearchContainer, InquirySearchDatasource, InquirySearchTable, InquiryTreeMenu, InquiryTreeMenuItem, InquiryWrapper, InsightRenderer, IntegerPropertyWidget_exports as IntegerPropertyWidget, ItemDescription, ItemsWidgetCard, JobStatusIdMapping, JobTypeIdMapping, KeyValueTextField, Layers, LayoutUnit, LicenseKey, LineAndSparklinesWidget_exports as LineAndSparklinesWidget, LineGraphWidget_exports as LineGraphWidget, LinearProgress, Link, ListCard, ListElement, ListSearch, LoadingIndicator, LogicalSearchOperatorEnums, LoginForm, LookupTypeEnums, LookupTypeIdEnums, MAX_FILE_SIZE_MB, Map, MapFilterBar, MapLayout, MapSheet, MenuItemEnums, MenuLoader, MenuProvider, MenuTypeEnums, MttMainTimeline, MttSummary, MttTimeline, MultilineTextPropertyWidget_exports as MultilineTextPropertyWidget, MyExportsPage, NavLink, NestParent, NestWrapper, NestedGrid, NewsCard, NodeActionEnums, NodeActionTriggerEnums, NodeColumnHeader, NodeDetails, NodeGroupOutlierEnums, NodeGroupTypeEnums, NodeList, NodeLoader, Note, Notes, NotesScreen, NotificationElement, NumericPropertyWidget_exports as NumericPropertyWidget, OpenPage, OutlookCallback, OutlookIntegrationBanner, OutlookIntegrationCallbackPage, OutlookIntegrationSideSheet, PAHAdditionalRightComponent, PAHAdditionalTitleComponent, PAHExport, PDFViewer, Page, PageContainer, PageContent, PageForbiddenRoute, PageHeader, PageLoading, PageNotFoundRoute, PageRenderer, PageSectionHeader, PageSectionSpacer, PageStatus, PageSubHeaderAction, PageSubHeaderActionsTarget, PanelPositionEnums, ParamsMappingForm, PasswordResetRedirect, PaymentForm, PaymentMethodTypeEnum, PaymentReversalForm, PaymentTenderTypeEnum, PaymentVendorFactoryEnum, PopoverCard, PowerBIReport, PrimaryActionButton, PrimaryActionHeader, PrivateRoute, ProductEnums, ProductNameEnums, ProgressBarWidget_exports as ProgressBarWidget, Prompt, PropertyField, PropertyFields, PropertyTypeEnum, PublicRoute, QuickViewCard, RecentlyLoadedNodesTable, RecentlyLoadedNodesWidget_exports as RecentlyLoadedNodesWidget, Redirect, RejectIcon, RemindersScreen, RemindersWidget_exports as RemindersWidget, RequiredFieldsMappingForm, RoleIdEnums, RoleNameEnums, RoleTypeEnums, Route, SapFlexibleTemplate, SearchGroupingType, SearchMethodUdpGrid, SearchOperators, SearchServiceDatasource, SearchSortDirection, SearchValueType, SelectGroupMenu, SelectPropertyWidget_exports as SelectPropertyWidget, ServerSideUdpGrid, SeverityTypeEnums, Shell, ShellDropdown, SideBarTemplate, SideSheet, SideSheetHeader, SiteHeaderRightComponent, SiteHeaderRightComponentTarget, SparklineWidget_exports as SparklineWidget, SparsePlotWidget_exports as SparsePlotWidget, SplitScreenTypeEnums, StandardTitle, Statistic, StatusCellRenderer, StatusChip, StatusLineItem, Sticky, StylizedTitle, SubHeaderAction, SubHeaderActionsTarget, SubmitButton, SummaryBlock, SupportCaseSideSheet, SvgIcon, Switch, TableColumnDefs, TableContainer, TeleportSource, TenantTypeEnums, TestFullStencilPage, TestStencilWrappedComponentsPage, TextPropertyWidget_exports as TextPropertyWidget, ThemeProvider, TicketCard, TileDisplay, TileLayer, TimeField, TimeLine, TimePropertyWidget_exports as TimePropertyWidget, TimelineCalendar, TimelinePreloaderNode, ToggleSection, Token, TokenGroupItem, ToolBarButton, TransactionActionTypeEnums, TransactionAttachmentPdfStitcher, TransactionEventTypeEnums, TransactionUiActionTypeEnums, TreeViewModeEnums, TrimForAvatar, Typography, UdpAccordion, UdpAdvancedSearchBuilder, UdpAppProvider, UdpAutocomplete, UdpAvatar, UdpBadge, UdpBarChart, UdpButton, UdpCalendar, UdpCalendarDayView, UdpCalendarMonthView, UdpCalendarWeekView, UdpCalendarYearView, UdpCard, UdpCheckbox, UdpChip, UdpCompoundButton, UdpContainerQuery, UdpContainerQueryGrid, UdpCounterBadge, UdpCrudFormFields, UdpDateInput, UdpDatePicker, UdpDateRangeSelector, UdpDateSelector, UdpDateTimeInput, UdpDetailList, UdpDetailListItem, UdpDialog, UdpDivider, UdpDonutChart, UdpDrawer, UdpDropdown, UdpDurationInput, UdpEnums, UdpFlexbox, UdpFormRenderer, UdpFormsBuilderPage, UdpFormsListPage, UdpFormsSubmissionGrid, UdpFormsSubmissionGridManagerPage, UdpFormsSubmissionGridResponderPage, UdpGridTemplate, UdpIcon, UdpIconButton, UdpIconGrid, UdpImage, UdpKeywordEnums, UdpKpiCard, UdpKpiCards, UdpLineChart, UdpLink, UdpList, UdpListItem, UdpMaintenanceConfigPage, UdpMaintenanceEnginePage, UdpMap, UdpMapComponent, UdpMapToolbar, UdpMenu, UdpMessageBar, UdpPageEnums, UdpPages, UdpPagesLazy, UdpPagesLoaders, UdpPopover, UdpPrimaryActionHeader, UdpPrivateForm, UdpProgressBar, UdpPublicForm, UdpRadioGroup, UdpReminderFiledForType, UdpRoutes, UdpSearchEnums, UdpSearchInput, UdpSlider, UdpSpinner, UdpStepper, UdpSwatchPicker, UdpSwitch, UdpTabPanel, UdpTabUtility, UdpTablist, UdpTabs, UdpText, UdpTextInput, UdpTextarea, UdpTimeInput, UdpTimeSelector, UdpTimeline, UdpTimelineConnector, UdpTimelineContent, UdpTimelineDot, UdpTimelineItem, UdpTimelineSeparator, UdpToggleButton, UdpTooltip, UdpTransactionActionEnums, UdpTransactionEmailForm, UdpTransactionTypesPage, UdpTransactionsPage, UdpTree, UdpTreeContext, UdpTreeItem, UdpVerticalSpacer, UnityFluentIcon, UnityIcon, UnityProducts, UserContext, UserDispatchContext, UserForm, UserFormFields, UtilityBar, UtilityBarInport, UtilityBarInportTarget, UtilityTabHeader, VectorLayer, VerticalEnums, VisibilityTypeEnums, WidgetCard, WorkOrderCard, WorkflowContainer, ZoomControl, acquireAccessToken, allowedExtensions, apiMutate, apiResponseArrayToOptions, arrayMutators, camelToPascalCaseWithSpace, checkAndAuthenticate, checkNodeIsHidden, clearGridState, clearStoredExternalPath, clearStoredPath, clearStoredTenant, collapseAllNodes, colors, constructBusinessObjectArrFromTree, constructDynamicNodeGroups, constructDynamicNodeGroups2, constructPreloadedTree, constructStaticNodeGroups, corporateColors, corporateColorsHint, createTimeline, createUser, csvStrToArray, csvStrToArrayOfObjects, defaultColumnActionsDef, deleteGridState, deleteNode, deleteNodeAndChildren, disconnect, ensureOutlookStatusLoaded, evaluateRule, exchangeAuthorizationCode, executeQueryAdHoc, executeQueryInstance, executeQueryInstanceWithApiMethodInstance, executeQueryWithParameters, expandAllNodes, findAllParentIds, findHomeRouteSlug, findLastNode, findNodeById, findNodeByIdAndLabel, findNodesByIdAndLabel, findTermByType, fluentLibraryIcons, formatBytes, mttFunctions_exports as formatDataWithTimelineCategoryNameOrderedByDate, formatDateToLocaleString, formatTreeLabel, formatTreeMenuItem, generatePath, getAccessToken, getAllChildrenNodesToDelete, getApiAccessScope, getApiMethodIdByPath, getAuthorizeUrl, getBaseMethod, getCommonEntityName, getDisplayDetails, getDisplayName, getEntityAttributes, getFieldValuesForProperties, getFullyQualifiedName, getGridState, getHeaderTitle, getI18nInstance, getIconFromName, getLazyLoadChildrenArr, getLoginRequest, getMenuItemsRecursively, getMergedConfig, getNodeIdForRightBorder, getOrderedDynamicGroups, getOutlookRedirectUri, getOutlookStatus, getPathObject, getPathParametersObj, getPrimaryKeyValues, getPropertiesForFieldValues, getPropertyMappingList, getPropertyMappingObj, getRatio, getRouteRolesMapAndMenuActiveMap, getSanitizedName, getSearchIdentifiers, getSearchObject, getSearchValueString, getSignInAuthProvider, getStatus, getStoredExternalPath, getStoredPath, getStoredTenant, getSuccessAction, getTokenRequest, getUnityIconFromName, greyScale, handleResponseErrors, initSignInAuthProvider, initializeUnityI18n, isOutlookConnected, loginRedirect, makeDynamicGroupStructures, makeDynamicTreeStructure, makeTreeStaticGroupStructure, makeTreeStructure, mapNodeGroupChildren, mapNodeObjValuesToSearchParameters, mapRule, mapRuleData, matchPath, onFirstDataRendered, parseSearchParamsIntoFilterObjects, pluralize, processCatalogObjectKeysInOrder, processItemForDynamicNodeGroups, processItemForStaticNodeGroup, processObjIndex, processObjectToTree, processOrderedTreeData, processReferences, productCategoryColors, refreshOutlookStatus, removeWhiteSpace, resetOutlookStatus, saveGridState, searchForMatchingNode, searchTree, sendMail, setOutlookDisconnected, storeCurrentPath, storeExternalPath, storeInitialPath, storeInitialTenant, storePath, storeRedirectPath, storeTenant, subscribeOutlookStatus, toLowerFirstChar, toTitleCase, toUpperFirstChar, toUtcDate, toggleHeader, transformMenuPageTree, trimStringAfter, unityIcons, updateTreeIds, useAccessToken, useActionState, useActions, useAgGridApi, useAllTeleporters, useApiCatalog, useAuthedUser, useAxiosGet, useAxiosGetQuery, useAxiosMutate, useCatalogStore, useControlZoom, useConvertFilterModelToSearchFilters, useCrudActions, useCurrentPageReturnTo, useDateLocale, useDefaultFormValues, useDynamicListCalculation, useExport, useField, useFieldChangeListener, useFluentIcon, useForm, useFormState, useGridClear, useGridFormat, useHandleAction, useHandleAxiosSnackbar, useHistory, useIsAuthed, useIsUnityAuthenticated, useItemSubCard, useLocalUserActions, useLocation, useLoginAction, useLogoutAction, useLookupsStore, useMenuContext, useNoticeUpdate, useOutlook, usePageContext, useParams, usePosition, useProductVersion, usePromotedLookupMethods, usePromotedMethodEntity, useQueryExecutors, useQuickFilter, useRouteMatch, useScreenControl, useSearchFilterParamsMap, useServerSideDatasource, useSetInitialShellVisibility, useSetLocationState, useShellStore, useSingleLogout, useStyles, useSystemColor, useTenant, useTenantStore, useTheme, useTypeScale, useUdpExport, useUdpWebSocket, useUser, useUserActions, useWorkflowStore, verticalPrimary, verticalSecondary, whitelistedPaths, withRouter };
|
|
1602
|
+
export { ADUserTypeEnums, Accordion, AccountFlags, ActionContext, ActionDispatchContext, ActionForm, ActionModal, ActionPanelPlacement, ActionProvider, ActionSideSheet, ActionSpeedDial, ActionSplitScreen, ActionSummaryCard, ActionSummaryHeader, ActionSummaryListContainer, ActionSummaryListItem, ActionSummaryPopover, ActionWrapper, ActionsRenderer, AddUser, AddressListItem, Adornment, AgTable, AgTableButtons, AlertContainer, AlertFlag, AmChart, AmbientAlert, AmbientAutoComplete, AmbientCard, AmbientCardButton, AmbientCardTitle, AmbientDateRangeSelector, AmbientGridTemplate, AmbientList, AmbientListItem, AmbientPopoverMenuItem, AmbientProjectSwitcher, AmbientSingleDateSelector, AmbientSplitStatCard, AmbientStepper, AmbientSummaryListHeader, AmbientTextField, AmbientToast, AmbientToggleButton, AmbientToggleButtonGroup, AmbientTokenButton, AmbientVisualizationCard, AmbientVisualizer, ApiMethodInstanceUdpGrid, AppMenu, AppMenuItem, AppMenuItemComponent, ApprovalIcon, Attachments, AuthProvider, AuthProviderWrapper, AutoCompletePropertyWidget_exports as AutoCompletePropertyWidget, AvatarAlphabet, BackwardsCompatibleGrid, BarChartWidget_exports as BarChartWidget, BaseSideSheet, BioCard, Block, BooleanPropertyWidget_exports as BooleanPropertyWidget, Box, BreadCrumbMenu, BubbleWidget_exports as BubbleWidget, CardList, CardinalityTypeEnums, ChatContainer, ChatMessage, CheckboxGroup, CheckboxList, ChipAlphabet, CircleGaugeWidget, CircularProgress, CkRichEditor, ClickOpenEnums, ClientSideUdpGrid, ColorKey, CompactCard, CompactDataList, CompactDataListItem, ConfigService, ContainerTypeEnums, ContentContainer, Controls, CoreLayoutFloorplan, CrudForm, CustomMenuPage, DateField, DatePropertyWidget_exports as DatePropertyWidget, DateTimeField, DateTimePropertyWidget_exports as DateTimePropertyWidget, DateTrendWidget_exports as DateTrendWidget, DensePlotWidget_exports as DensePlotWidget, DeviceTypeEnums, DiffChecker, Directory, DirectoryListItem, Divider, DonutChartWidget_exports as DonutChartWidget, DragDropFileUpload, DraggableSidebarTemplate, DynamicContainerWithMenu, EMPTY_GUID, Ellipse, EmptyStateDisplay, EntityAttributeEnums, EntityHeader, ExecuteApiDialog, ExpandRenderer, ExportSidesheet, ExtenderToggle, Field, FieldArrayCard, FieldType, FileUpload, FileViewer, FilterOperators, FilterSearch, FlagBlock, FloatPropertyWidget_exports as FloatPropertyWidget, FluentActivity, FluentActivityRow, FluentButton, FluentCard, FluentCardActions, FluentCardContent, FluentCardHeader, FluentCardText, FluentCheckbox, FluentColorPicker, FluentCompoundButton, FluentDataTable, FluentDatePicker, FluentDateTimePicker, FluentDialog, FluentIcon, FluentIconButton, FluentImageMap, FluentLink, FluentListElement, FluentListItem, FluentMap, FluentMenuListButton, FluentMenuListItem, FluentProfileMenuCard, FluentRadio, FluentRadioGroup, FluentScrollLoadAutocompleteMenu, FluentSearchField, FluentSelectGroupMenu, FluentSelectMenu, FluentSideNav, FluentSimpleSelect, FluentSimpleTab, FluentSimpleTabs, FluentTabPanel, FluentTabUtility, FluentTagField, FluentTagFieldComponent, FluentTextField, FluentTextFieldAutoComplete, FluentTextFieldComponent, FluentTimePicker, FluentTimeline, FluentToggle, FluentUploadButton, FluentUploadIconButton, Form, FormButtons, FormControl, FormControlLabel, FormError, FormHeader, FormSpy, FormSubHeader, FullScreenControl, GaugeWidget, GeoMap, GraphCard, Grid, GridActionBar, GridEnums, GridExcelStyleEnums, GridGroup, GridGroupingHeader, GridGroupingSidebar, GridRow, GridSidebarContainer, GridStateTypeEnums, GridUnit, HeaderExpander, HeaderLayout, HttpStatusCode, IconButtonWithTooltip, IconKey, IconRenderer, IframeContainer, ImageLayer, ImportDataFromFileMapping, IndicatorChip, InfoCard, InputAdornment, InputFieldType, Inquiry, InquiryAdvancedSearch, InquiryAdvancedSearchForm, InquiryContainer, InquiryDashboard, InquiryHeaderControl, InquiryHeaderControlTarget, InquiryHeaderSecondary, InquiryHeaderSecondaryAlert, InquiryHeaderSecondaryAlertTarget, InquiryHeaderSecondaryTarget, InquiryHeaderTitle, InquiryHeaderTitleTarget, InquiryNodeControls, InquirySearchContainer, InquirySearchDatasource, InquirySearchTable, InquiryTreeMenu, InquiryTreeMenuItem, InquiryWrapper, InsightRenderer, IntegerPropertyWidget_exports as IntegerPropertyWidget, ItemDescription, ItemsWidgetCard, JobStatusIdMapping, JobTypeIdMapping, KeyValueTextField, Layers, LayoutUnit, LicenseKey, LineAndSparklinesWidget_exports as LineAndSparklinesWidget, LineGraphWidget_exports as LineGraphWidget, LinearProgress, Link, ListCard, ListElement, ListSearch, LoadingIndicator, LogicalSearchOperatorEnums, LoginForm, LookupTypeEnums, LookupTypeIdEnums, MAX_FILE_SIZE_MB, Map, MapFilterBar, MapLayout, MapSheet, MenuItemEnums, MenuLoader, MenuProvider, MenuTypeEnums, MttMainTimeline, MttSummary, MttTimeline, MultilineTextPropertyWidget_exports as MultilineTextPropertyWidget, MyExportsPage, NavLink, NestParent, NestWrapper, NestedGrid, NewsCard, NodeActionEnums, NodeActionTriggerEnums, NodeColumnHeader, NodeDetails, NodeGroupOutlierEnums, NodeGroupTypeEnums, NodeList, NodeLoader, Note, Notes, NotesScreen, NotificationElement, NumericPropertyWidget_exports as NumericPropertyWidget, OpenPage, OutlookCallback, OutlookIntegrationBanner, OutlookIntegrationCallbackPage, OutlookIntegrationSideSheet, PAHAdditionalRightComponent, PAHAdditionalTitleComponent, PAHExport, PDFViewer, Page, PageContainer, PageContent, PageForbiddenRoute, PageHeader, PageLoading, PageNotFoundRoute, PageRenderer, PageSectionHeader, PageSectionSpacer, PageStatus, PageSubHeaderAction, PageSubHeaderActionsTarget, PanelPositionEnums, ParamsMappingForm, PasswordResetRedirect, PaymentForm, PaymentMethodTypeEnum, PaymentReversalForm, PaymentTenderTypeEnum, PaymentVendorFactoryEnum, PopoverCard, PowerBIReport, PrimaryActionButton, PrimaryActionHeader, PrivateRoute, ProductEnums, ProductNameEnums, ProgressBarWidget_exports as ProgressBarWidget, Prompt, PropertyField, PropertyFields, PropertyTypeEnum, PublicRoute, QuickViewCard, RecentlyLoadedNodesTable, RecentlyLoadedNodesWidget_exports as RecentlyLoadedNodesWidget, Redirect, RejectIcon, RemindersScreen, RemindersWidget_exports as RemindersWidget, RequiredFieldsMappingForm, RoleIdEnums, RoleNameEnums, RoleTypeEnums, Route, SapFlexibleTemplate, SearchGroupingType, SearchMethodUdpGrid, SearchOperators, SearchServiceDatasource, SearchSortDirection, SearchValueType, SelectGroupMenu, SelectPropertyWidget_exports as SelectPropertyWidget, ServerSideUdpGrid, SeverityTypeEnums, Shell, ShellDropdown, SideBarTemplate, SideSheet, SideSheetHeader, SiteHeaderRightComponent, SiteHeaderRightComponentTarget, SparklineWidget_exports as SparklineWidget, SparsePlotWidget_exports as SparsePlotWidget, SplitScreenTypeEnums, StandardTitle, Statistic, StatusCellRenderer, StatusChip, StatusLineItem, Sticky, StylizedTitle, SubHeaderAction, SubHeaderActionsTarget, SubmitButton, SummaryBlock, SupportCaseSideSheet, SvgIcon, Switch, TableColumnDefs, TableContainer, TeleportSource, TenantTypeEnums, TestFullStencilPage, TestStencilWrappedComponentsPage, TextPropertyWidget_exports as TextPropertyWidget, ThemeProvider, TicketCard, TileDisplay, TileLayer, TimeField, TimeLine, TimePropertyWidget_exports as TimePropertyWidget, TimelineCalendar, TimelinePreloaderNode, ToggleSection, Token, TokenGroupItem, ToolBarButton, TransactionActionTypeEnums, TransactionAttachmentPdfStitcher, TransactionEventTypeEnums, TransactionUiActionTypeEnums, TreeViewModeEnums, TrimForAvatar, Typography, UdpAccordion, UdpAdvancedSearchBuilder, UdpAppProvider, UdpAutocomplete, UdpAvatar, UdpBadge, UdpBarChart, UdpButton, UdpCalendar, UdpCalendarDayView, UdpCalendarMonthView, UdpCalendarWeekView, UdpCalendarYearView, UdpCard, UdpCheckbox, UdpChip, UdpCompoundButton, UdpContainerQuery, UdpContainerQueryGrid, UdpCounterBadge, UdpCrudFormFields, UdpDateInput, UdpDatePicker, UdpDateRangeSelector, UdpDateSelector, UdpDateTimeInput, UdpDetailList, UdpDetailListItem, UdpDialog, UdpDivider, UdpDonutChart, UdpDrawer, UdpDropdown, UdpDurationInput, UdpEnums, UdpFlexbox, UdpFormRenderer, UdpFormsBuilderPage, UdpFormsListPage, UdpFormsSubmissionGrid, UdpFormsSubmissionGridManagerPage, UdpFormsSubmissionGridResponderPage, UdpGridTemplate, UdpIcon, UdpIconButton, UdpIconGrid, UdpImage, UdpKeywordEnums, UdpKpiCard, UdpKpiCards, UdpLineChart, UdpLink, UdpList, UdpListItem, UdpMaintenanceConfigPage, UdpMaintenanceEnginePage, UdpMap, UdpMapComponent, UdpMapToolbar, UdpMenu, UdpMessageBar, UdpPageEnums, UdpPages, UdpPagesLazy, UdpPagesLoaders, UdpPopover, UdpPrimaryActionHeader, UdpPrivateForm, UdpProgressBar, UdpPublicForm, UdpRadioGroup, UdpReminderFiledForType, UdpRoutes, UdpSearchEnums, UdpSearchInput, UdpSlider, UdpSpinner, UdpStepper, UdpSwatchPicker, UdpSwitch, UdpTabPanel, UdpTabUtility, UdpTablist, UdpTabs, UdpText, UdpTextInput, UdpTextarea, UdpTimeInput, UdpTimeSelector, UdpTimeline, UdpTimelineConnector, UdpTimelineContent, UdpTimelineDot, UdpTimelineItem, UdpTimelineSeparator, UdpToggleButton, UdpTooltip, UdpTransactionActionEnums, UdpTransactionEmailForm, UdpTransactionTypesPage, UdpTransactionsPage, UdpTree, UdpTreeContext, UdpTreeItem, UdpVerticalSpacer, UnityFluentIcon, UnityIcon, UnityProducts, UserContext, UserDispatchContext, UserForm, UserFormFields, UtilityBar, UtilityBarInport, UtilityBarInportTarget, UtilityTabHeader, VectorLayer, VerticalEnums, VisibilityTypeEnums, WidgetCard, WorkOrderCard, WorkflowContainer, ZoomControl, acquireAccessToken, allowedExtensions, apiMutate, apiResponseArrayToOptions, arrayMutators, camelToPascalCaseWithSpace, checkAndAuthenticate, checkNodeIsHidden, clearGridState, clearStoredExternalPath, clearStoredPath, clearStoredTenant, collapseAllNodes, colors, constructBusinessObjectArrFromTree, constructDynamicNodeGroups, constructDynamicNodeGroups2, constructPreloadedTree, constructStaticNodeGroups, corporateColors, corporateColorsHint, createTimeline, createUser, csvStrToArray, csvStrToArrayOfObjects, defaultColumnActionsDef, deleteGridState, deleteNode, deleteNodeAndChildren, disconnect, ensureOutlookStatusLoaded, evaluateRule, exchangeAuthorizationCode, executeQueryAdHoc, executeQueryInstance, executeQueryInstanceWithApiMethodInstance, executeQueryWithParameters, expandAllNodes, findAllParentIds, findHomeRouteSlug, findLastNode, findNodeById, findNodeByIdAndLabel, findNodesByIdAndLabel, findTermByType, fluentLibraryIcons, formatBytes, mttFunctions_exports as formatDataWithTimelineCategoryNameOrderedByDate, formatDateToLocaleString, formatTreeLabel, formatTreeMenuItem, generatePath, getAccessToken, getAllChildrenNodesToDelete, getApiAccessScope, getApiMethodIdByPath, getAuthorizeUrl, getBaseMethod, getCommonEntityName, getDisplayDetails, getDisplayName, getEntityAttributes, getFieldValuesForProperties, getFullyQualifiedName, getGridState, getHeaderTitle, getI18nInstance, getIconFromName, getLazyLoadChildrenArr, getLoginRequest, getMenuItemsRecursively, getMergedConfig, getNodeIdForRightBorder, getOrderedDynamicGroups, getOutlookRedirectUri, getOutlookStatus, getPathObject, getPathParametersObj, getPrimaryKeyValues, getPropertiesForFieldValues, getPropertyMappingList, getPropertyMappingObj, getRatio, getRouteRolesMapAndMenuActiveMap, getSanitizedName, getSearchIdentifiers, getSearchObject, getSearchValueString, getSignInAuthProvider, getStatus, getStoredExternalPath, getStoredPath, getStoredTenant, getSuccessAction, getTokenRequest, getUnityIconFromName, greyScale, handleResponseErrors, initSignInAuthProvider, initializeUnityI18n, isOutlookConnected, loginRedirect, makeDynamicGroupStructures, makeDynamicTreeStructure, makeTreeStaticGroupStructure, makeTreeStructure, mapNodeGroupChildren, mapNodeObjValuesToSearchParameters, mapRule, mapRuleData, matchPath, onFirstDataRendered, parseSearchParamsIntoFilterObjects, pluralize, processCatalogObjectKeysInOrder, processItemForDynamicNodeGroups, processItemForStaticNodeGroup, processObjIndex, processObjectToTree, processOrderedTreeData, processReferences, productCategoryColors, refreshOutlookStatus, removeWhiteSpace, resetOutlookStatus, saveGridState, searchForMatchingNode, searchTree, sendMail, setOutlookDisconnected, storeCurrentPath, storeExternalPath, storeInitialPath, storeInitialTenant, storePath, storeRedirectPath, storeTenant, subscribeOutlookStatus, toLowerFirstChar, toTitleCase, toUpperFirstChar, toUtcDate, toggleHeader, transformMenuPageTree, trimStringAfter, unityIcons, updateTreeIds, useAccessToken, useActionState, useActions, useAgGridApi, useAllTeleporters, useApiCatalog, useAuthedUser, useAxiosGet, useAxiosGetQuery, useAxiosMutate, useCatalogStore, useControlZoom, useConvertFilterModelToSearchFilters, useCrudActions, useCurrentPageReturnTo, useDateLocale, useDefaultFormValues, useDynamicListCalculation, useExport, useField, useFieldChangeListener, useFluentIcon, useForm, useFormState, useGridClear, useGridFormat, useHandleAction, useHandleAxiosSnackbar, useHistory, useIsAuthed, useIsUnityAuthenticated, useItemSubCard, useLocalUserActions, useLocation, useLoginAction, useLogoutAction, useLookupsStore, useMenuContext, useNoticeUpdate, useOutlook, usePageContext, useParams, usePosition, useProductVersion, usePromotedLookupMethods, usePromotedMethodEntity, useQueryExecutors, useQuickFilter, useRouteMatch, useScreenControl, useSearchFilterParamsMap, useServerSideDatasource, useSetInitialShellVisibility, useSetLocationState, useShellStore, useSingleLogout, useStyles, useSystemColor, useTenant, useTenantStore, useTheme, useTypeScale, useUdpExport, useUdpWebSocket, useUser, useUserActions, useWorkflowStore, verticalPrimary, verticalSecondary, whitelistedPaths, withRouter };
|
|
1602
1603
|
|
|
1603
1604
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["ConfigService","fetchOutlookStatus","useTheme","extractErrorMessage","Box","Typography","Divider","useLocation","ConfigService","useLocation","UdpCompoundButton","UdpIcon","UdpTabPanel","StencilUdpKpiCards","StencilKpiCard","ConfigService","Typography"],"sources":["../src/hooks/useUdpWebSocket.ts","../src/integrations/outlook/outlookIntegrationClient.ts","../src/integrations/outlook/outlookIntegrationStatus.ts","../src/integrations/outlook/OutlookIntegrationSideSheet.jsx","../src/integrations/outlook/OutlookIntegrationCallbackPage.jsx","../src/integrations/outlook/OutlookIntegrationBanner.jsx","../src/test/TestStencilWrappedComponentsPage.tsx","../src/test/TestFullStencilPage.tsx","../src/kpi/UdpKpiCards.tsx","../src/kpi/UdpKpiCard.tsx","../src/udp/pages/UdpTransactionsPage/components/transactionAttachment/TransactionAttachmentPdfStitcher.jsx"],"sourcesContent":["// eslint-disable-next-line\nimport {\n // @ts-ignore\n UdpWebSocketClient,\n // @ts-ignore\n type UdpWebSocketMessage,\n // @ts-ignore\n type UdpWsReceiveHandler,\n // @ts-ignore\n type UdpWsCloseHandler,\n // @ts-ignore\n type UdpWsErrorHandler\n} from 'udp-react-stencil-component-library/core';\nimport { useEffect, useRef, useCallback, useState, useMemo } from 'react';\nimport { getAccessToken } from '../utilities';\n\n/**\n * Options for configuring the WebSocket connection behavior.\n */\ninterface UdpWebSocketHookOptions {\n /** Callback invoked when a message is received from the WebSocket server. */\n onMessageReceived?: UdpWsReceiveHandler;\n /** Callback invoked when a WebSocket error occurs. */\n onError?: UdpWsErrorHandler;\n /** Callback invoked when the WebSocket connection closes. */\n onClose?: UdpWsCloseHandler;\n /** Interval in seconds for sending keep-alive pings. Set to 0 to disable. */\n keepAliveIntervalSec?: number;\n /** Timeout in minutes before automatically closing an idle connection. Set to 0 to disable. */\n keepAliveTimeoutMin?: number;\n}\n\n/**\n * React hook for managing WebSocket connections with automatic connection handling,\n * keep-alive support, and message management.\n *\n * @param url - The WebSocket URL to connect to (ws:// or wss://). If undefined, no connection is established.\n * @param options - Configuration options for the WebSocket connection behavior.\n *\n * @returns An object containing:\n * - `connected`: Boolean indicating if the WebSocket is currently connected\n * - `lastMessage`: The most recent message received from the server\n * - `lastError`: The most recent error event\n * - `send`: Async function to send messages (auto-connects if not connected)\n * - `reconnect`: Async function to manually reconnect the WebSocket\n * - `close`: Function to close the WebSocket connection\n * - `client`: Direct access to the underlying UdpWebSocketClient instance\n *\n * @example\n * ```tsx\n * // Basic usage\n * const { connected, send } = useUdpWebSocket(\n * 'wss://localhost:44371/UemService/api/v1/UdpWebSocket/21f2060a-1a09-4a03-81aa-4179db30b4eb/connect'\n * );\n *\n * const handleSend = () => {\n * send({ payload: { message: \"Hello world\" } });\n * };\n * ```\n *\n * @example\n * ```tsx\n * // With message handling and keep-alive\n * const { connected, lastMessage, send } = useUdpWebSocket(\n * 'wss://localhost:44371/UemService/api/v1/UdpWebSocket/21f2060a-1a09-4a03-81aa-4179db30b4eb/connect',\n * {\n * onMessageReceived: (msg) => {\n * console.log('Received:', msg);\n * },\n * onError: (error) => {\n * console.error('WebSocket error:', error);\n * },\n * onClose: () => {\n * console.log('Connection closed');\n * },\n * keepAliveIntervalSec: 30, // Send ping every 30 seconds\n * keepAliveTimeoutMin: 10 // Auto-close after 10 minutes\n * }\n * );\n *\n * useEffect(() => {\n * if (lastMessage) {\n * // Handle received message\n * }\n * }, [lastMessage]);\n * ```\n *\n * @remarks\n * - The hook automatically establishes a connection when the URL is provided\n * - Authentication tokens are automatically retrieved via `getAccessToken()`\n * - The `send()` function will automatically connect if not already connected\n * - Calling `close()` will close the connection; it will not auto-reconnect unless `reconnect()` is called\n * - The connection is automatically cleaned up when the component unmounts\n * - Keep-alive pings help maintain long-lived connections and detect dead connections\n */\nexport function useUdpWebSocket(\n url?: string,\n options: UdpWebSocketHookOptions = {}\n) {\n const {\n onMessageReceived,\n onError,\n onClose,\n keepAliveIntervalSec = 0,\n keepAliveTimeoutMin = 0\n } = options;\n\n const initialRetryCountRef = useRef(0);\n const MAX_INIT_RETRIES = 5;\n const INIT_RETRY_DELAY = 300;\n\n const [client] = useState(() => new UdpWebSocketClient());\n const [connected, setConnected] = useState(false);\n const [lastMessage, setLastMessage] = useState<UdpWebSocketMessage | null>(\n null\n );\n const [lastError, setLastError] = useState<Event | null>(null);\n\n const messageHandlerRef = useRef<UdpWsReceiveHandler | undefined>(\n onMessageReceived\n );\n const errorHandlerRef = useRef<UdpWsErrorHandler | undefined>(onError);\n const closeHandlerRef = useRef<UdpWsCloseHandler | undefined>(onClose);\n\n useEffect(() => {\n messageHandlerRef.current = onMessageReceived;\n }, [onMessageReceived]);\n useEffect(() => {\n errorHandlerRef.current = onError;\n }, [onError]);\n useEffect(() => {\n closeHandlerRef.current = onClose;\n }, [onClose]);\n\n const connect = useCallback(async () => {\n if (!url) return;\n\n const c = client;\n if (c.isConnected) return;\n\n // Convert both values to ms\n const interval = (keepAliveIntervalSec || 0) * 1000;\n const timeout = (keepAliveTimeoutMin || 0) * 60 * 1000;\n\n await c.connect(url, getAccessToken, interval, timeout);\n }, [url, keepAliveIntervalSec, keepAliveTimeoutMin, client]);\n\n const send = useCallback(\n async (msg: UdpWebSocketMessage) => {\n const c = client;\n if (!c.isConnected) {\n await connect();\n }\n c.send(msg);\n },\n [client, connect]\n );\n\n const close = useCallback(() => {\n client.close();\n }, [client]);\n\n const reconnect = useCallback(async () => {\n const c = client;\n c.close();\n setConnected(c.isConnected);\n await connect();\n }, [client, connect]);\n\n useEffect(() => {\n if (!url) return;\n\n const c = client;\n initialRetryCountRef.current = 0;\n\n c.onMessageReceived((msg: UdpWebSocketMessage) => {\n setLastMessage(msg);\n void messageHandlerRef.current?.(msg);\n });\n\n c.onOpen(() => {\n setConnected(c.isConnected);\n });\n\n c.onError((e: Event) => {\n setLastError(e);\n void errorHandlerRef.current?.(e);\n });\n\n c.onClose((e: CloseEvent) => {\n if (!connected && initialRetryCountRef.current < MAX_INIT_RETRIES) {\n initialRetryCountRef.current++;\n setTimeout(() => connect(), INIT_RETRY_DELAY);\n }\n void closeHandlerRef.current?.(e);\n setConnected(c.isConnected);\n });\n\n connect().catch(() => {\n // Initial connection failed\n console.warn('WebSocket initial connection failed');\n });\n initialRetryCountRef.current = MAX_INIT_RETRIES;\n\n return () => {\n c.close();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [url, client, connect]);\n\n return useMemo(\n () => ({\n connected,\n lastMessage,\n lastError,\n send,\n reconnect,\n close,\n client\n }),\n [connected, lastMessage, lastError, send, reconnect, close, client]\n );\n}\n","import type { AxiosResponse } from 'axios';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport { ConfigService } from '../../configService';\n\nconst CONTROLLER = 'OutlookIntegrationToken';\nconst OUTLOOK_CALLBACK_PATH = '/auth/outlook/callback';\n\nexport type OutlookIntegrationStatus = {\n connected: boolean;\n mailboxPrincipal?: string | null;\n expiresAt?: string | null;\n scope?: string | null;\n};\n\nexport type OutlookAuthorizeUrlRequest = {\n redirectUri: string;\n};\n\nexport type OutlookAuthorizeUrlResponse = {\n authorizeUrl: string;\n state: string;\n codeChallenge?: string;\n redirectUri?: string;\n};\n\nexport type OutlookAuthExchangeRequest = {\n authorizationCode: string;\n state: string;\n redirectUri: string;\n};\n\nexport type OutlookSendMailRequest = {\n to: string;\n subject: string;\n body: string;\n};\n\nexport async function getStatus(): Promise<OutlookIntegrationStatus> {\n const { data } = (await apiMutate(\n ensureBaseUrl(),\n `${CONTROLLER}/status`,\n { method: 'get', headers: productHeaders() },\n undefined\n )) as AxiosResponse<OutlookIntegrationStatus>;\n\n return data ?? { connected: false };\n}\n\nexport async function getAuthorizeUrl(\n request: OutlookAuthorizeUrlRequest\n): Promise<OutlookAuthorizeUrlResponse> {\n const { data } = (await apiMutate(\n ensureBaseUrl(),\n `${CONTROLLER}/authorize-url`,\n {\n method: 'post',\n headers: productHeaders(),\n data: request,\n },\n undefined\n )) as AxiosResponse<OutlookAuthorizeUrlResponse>;\n\n return data;\n}\n\nexport async function exchangeAuthorizationCode(\n request: OutlookAuthExchangeRequest\n): Promise<OutlookIntegrationStatus> {\n const { data } = (await apiMutate(\n ensureBaseUrl(),\n `${CONTROLLER}/oauth/exchange`,\n {\n method: 'post',\n headers: productHeaders(),\n data: request,\n },\n undefined\n )) as AxiosResponse<OutlookIntegrationStatus>;\n\n return data;\n}\n\nexport async function disconnect(): Promise<void> {\n await apiMutate(\n ensureBaseUrl(),\n `${CONTROLLER}/disconnect`,\n {\n method: 'post',\n headers: productHeaders(),\n },\n undefined\n );\n}\n\nexport async function sendMail(payload: OutlookSendMailRequest): Promise<void> {\n await apiMutate(\n ensureBaseUrl(),\n `${CONTROLLER}/send-mail`,\n {\n method: 'post',\n headers: productHeaders(),\n data: payload,\n },\n undefined\n );\n}\n\nexport async function checkAndAuthenticate(): Promise<void> {\n await apiMutate(\n ensureBaseUrl(),\n `${CONTROLLER}/authenticate`,\n {\n method: 'post',\n headers: productHeaders(),\n },\n undefined\n );\n}\n\nexport function getOutlookRedirectUri(): string {\n if (typeof window !== 'undefined' && window.location) {\n return `${window.location.origin}${OUTLOOK_CALLBACK_PATH}`;\n }\n\n const base = String(ConfigService?.config?.UNITY_URL ?? '').replace(/\\/$/, '');\n return `${base}${OUTLOOK_CALLBACK_PATH}`;\n}\n\nfunction ensureBaseUrl(): string {\n return ConfigService.integrationV2ApiUrl;\n}\n\nfunction productHeaders(): Record<string, string> {\n const rawId = ConfigService?.config?.UNITY_PRODUCT_ID;\n const normalized = String(rawId ?? '').trim();\n if (!normalized) {\n throw new Error('UNITY_PRODUCT_ID is not configured.');\n }\n\n const numericId = Number(normalized);\n if (!Number.isFinite(numericId) || numericId <= 0) {\n throw new Error('UNITY_PRODUCT_ID must be a positive number.');\n }\n\n return { productId: String(numericId) };\n}\n","import type { OutlookIntegrationStatus } from './outlookIntegrationClient';\nimport { getStatus as fetchOutlookStatus } from './outlookIntegrationClient';\n\nexport type OutlookStatus = {\n connected: boolean;\n mailboxPrincipal?: string | null;\n expiresAt?: string | null;\n scope?: string | null;\n loaded: boolean;\n error?: string | null;\n};\n\nconst DEFAULT_STATUS: OutlookStatus = {\n connected: false,\n mailboxPrincipal: null,\n expiresAt: null,\n scope: null,\n loaded: false,\n error: null,\n};\n\nlet cachedStatus: OutlookStatus = { ...DEFAULT_STATUS };\nconst listeners = new Set<(status: OutlookStatus) => void>();\nlet inFlight: Promise<OutlookStatus> | null = null;\nlet hasFetchedOnce = false;\nlet statusVersion = 0;\n\nexport function getOutlookStatus(): OutlookStatus {\n return cachedStatus;\n}\n\nexport function isOutlookConnected(): boolean {\n return !!cachedStatus.connected;\n}\n\nexport function setOutlookDisconnected(): void {\n cachedStatus = {\n ...cachedStatus,\n connected: false,\n mailboxPrincipal: null,\n expiresAt: null,\n scope: null,\n loaded: true,\n error: null,\n };\n publish();\n}\n\nexport function resetOutlookStatus(): void {\n statusVersion += 1;\n hasFetchedOnce = false;\n inFlight = null;\n cachedStatus = { ...DEFAULT_STATUS };\n publish();\n}\n\nexport function subscribeOutlookStatus(\n handler: (status: OutlookStatus) => void\n): () => void {\n listeners.add(handler);\n try {\n handler(cachedStatus);\n } catch (err) {\n console.warn('OutlookStatus: failed to publish initial status', err);\n }\n return () => {\n listeners.delete(handler);\n };\n}\n\nexport async function refreshOutlookStatus(): Promise<OutlookStatus> {\n if (inFlight !== null) {\n return inFlight;\n }\n\n const requestVersion = statusVersion;\n const request = fetchOutlookStatus()\n .then(status => {\n if (requestVersion !== statusVersion) {\n return cachedStatus;\n }\n cachedStatus = mapStatus(status);\n hasFetchedOnce = true;\n publish();\n return cachedStatus;\n })\n .catch(err => {\n if (requestVersion !== statusVersion) {\n return cachedStatus;\n }\n const message =\n err instanceof Error\n ? err.message\n : 'Unable to load Outlook integration status.';\n cachedStatus = {\n ...cachedStatus,\n loaded: true,\n error: message,\n };\n publish();\n throw err;\n })\n .finally(() => {\n if (inFlight === request) {\n inFlight = null;\n }\n });\n\n inFlight = request;\n return request;\n}\n\nexport function ensureOutlookStatusLoaded(): Promise<OutlookStatus> {\n return hasFetchedOnce ? Promise.resolve(cachedStatus) : refreshOutlookStatus();\n}\n\nfunction mapStatus(status?: OutlookIntegrationStatus): OutlookStatus {\n return {\n connected: !!status?.connected,\n mailboxPrincipal: status?.mailboxPrincipal ?? null,\n expiresAt: status?.expiresAt ?? null,\n scope: status?.scope ?? null,\n loaded: true,\n error: null,\n };\n}\n\nfunction publish(): void {\n listeners.forEach(handler => {\n try {\n handler(cachedStatus);\n } catch (err) {\n console.warn('OutlookStatus: subscriber threw an error', err);\n }\n });\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n Box,\n Divider,\n TextField,\n Typography,\n useTheme,\n} from '@material-ui/core';\nimport { OutlookLogoIcon } from '@fluentui/react-icons';\nimport { useTranslation } from 'react-i18next';\nimport { SideSheet } from '../../UI/surfaces/SideSheet';\nimport { AmbientAlert } from '../../UI/feedback/AmbientAlert';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { FluentButton } from '../../UI/inputs/buttons/FluentButton';\nimport {\n getOutlookStatus,\n refreshOutlookStatus,\n subscribeOutlookStatus,\n} from './outlookIntegrationStatus';\nimport {\n disconnect,\n getAuthorizeUrl,\n getOutlookRedirectUri,\n sendMail,\n} from './outlookIntegrationClient';\n\nexport const OutlookIntegrationSideSheet = ({\n open,\n onClose,\n closeOnConnect = false,\n appName,\n connectDescription,\n disclaimerText,\n footerNote,\n whyConnectTitle,\n whyConnectDescription,\n whyConnectItems,\n showTestEmail = false,\n testEmailDefaults,\n testEmailCopy,\n}) => {\n const { t } = useTranslation();\n const theme = useTheme();\n\n const resolvedAppName = appName || t('outlook.appName', 'this app');\n const [status, setStatus] = useState(() => getOutlookStatus());\n const [initializing, setInitializing] = useState(!status.loaded);\n const [action, setAction] = useState(null);\n const [feedback, setFeedback] = useState(null);\n const [testTo, setTestTo] = useState(testEmailDefaults?.to ?? '');\n const [testSubject, setTestSubject] = useState('');\n const [testBody, setTestBody] = useState('');\n\n useEffect(() => {\n const unsubscribe = subscribeOutlookStatus(setStatus);\n return () => unsubscribe();\n }, []);\n\n useEffect(() => {\n if (!open) return;\n setInitializing(true);\n refreshOutlookStatus()\n .catch(err => {\n setFeedback({\n severity: 'error',\n message: extractErrorMessage(\n err,\n t('outlook.errors.status', 'Unable to load Outlook status.')\n ),\n });\n })\n .finally(() => setInitializing(false));\n }, [open, t]);\n\n useEffect(() => {\n if (!showTestEmail || !status.connected || !status.mailboxPrincipal) {\n return;\n }\n setTestTo(prev => (prev ? prev : status.mailboxPrincipal));\n }, [showTestEmail, status.connected, status.mailboxPrincipal]);\n\n useEffect(() => {\n const handler = event => {\n if (!event || !window || event.origin !== window.location.origin) {\n return;\n }\n const payload =\n typeof event.data === 'string'\n ? { type: event.data }\n : event.data || {};\n if (payload.type === 'outlookConnectSuccess') {\n refreshOutlookStatus().then(() => {\n setFeedback({\n severity: 'success',\n message: t(\n 'outlook.connectSuccess',\n 'Outlook connected successfully.'\n ),\n });\n if (closeOnConnect) {\n onClose?.();\n }\n });\n } else if (payload.type === 'outlookConnectFailure') {\n setFeedback({\n severity: 'error',\n message:\n payload.message ||\n t(\n 'outlook.connectFailed',\n 'Outlook connection failed. Please try again.'\n ),\n });\n }\n };\n window.addEventListener('message', handler);\n return () => window.removeEventListener('message', handler);\n }, [closeOnConnect, onClose, t]);\n\n const openPopup = useCallback(url => {\n if (typeof window === 'undefined') return null;\n const width = 600;\n const height = 600;\n const left = (window.screen.width - width) / 2;\n const top = (window.screen.height - height) / 2;\n const features = `width=${width},height=${height},top=${top},left=${left},status=no,toolbar=no,menubar=no,location=no`;\n return window.open(url, 'OutlookConnectPopup', features);\n }, []);\n\n const handleConnect = useCallback(async () => {\n setAction('authorize');\n try {\n const redirectUri = getOutlookRedirectUri();\n const { authorizeUrl } = await getAuthorizeUrl({ redirectUri });\n const popup = openPopup(authorizeUrl);\n if (!popup) {\n throw new Error(\n t(\n 'outlook.errors.popupBlocked',\n 'Popup blocked. Please allow popups and try again.'\n )\n );\n }\n } catch (err) {\n setFeedback({\n severity: 'error',\n message: extractErrorMessage(\n err,\n t('outlook.errors.connect', 'Unable to start the Outlook connection.')\n ),\n });\n } finally {\n setAction(null);\n }\n }, [openPopup, t]);\n\n const handleDisconnect = useCallback(async () => {\n setAction('disconnect');\n try {\n await disconnect();\n await refreshOutlookStatus();\n setFeedback({\n severity: 'success',\n message: t('outlook.disconnectSuccess', 'Outlook disconnected.'),\n });\n } catch (err) {\n setFeedback({\n severity: 'error',\n message: extractErrorMessage(\n err,\n t('outlook.errors.disconnect', 'Unable to disconnect from Outlook.')\n ),\n });\n } finally {\n setAction(null);\n }\n }, [t]);\n\n const handleSendTest = useCallback(async () => {\n const to = testTo.trim();\n if (!to) {\n setFeedback({\n severity: 'error',\n message:\n testEmailCopy?.missingRecipient ||\n t('outlook.errors.testTo', 'Please enter a recipient email.'),\n });\n return;\n }\n\n const fallbackSubject =\n testEmailDefaults?.subject ||\n t('outlook.sendTest.defaultSubject', `${resolvedAppName} test email`);\n const fallbackBody =\n testEmailDefaults?.body ||\n t(\n 'outlook.sendTest.defaultBody',\n `This is a test email sent from ${resolvedAppName} via Outlook.`\n );\n\n setAction('send-mail');\n try {\n await sendMail({\n to,\n subject: testSubject.trim() || fallbackSubject,\n body: testBody.trim() || fallbackBody,\n });\n setFeedback({\n severity: 'success',\n message:\n testEmailCopy?.success ||\n t('outlook.sendTest.success', 'Test email sent.'),\n });\n } catch (err) {\n setFeedback({\n severity: 'error',\n message: extractErrorMessage(\n err,\n testEmailCopy?.error ||\n t('outlook.errors.sendTest', 'Unable to send test email.')\n ),\n });\n } finally {\n setAction(null);\n }\n }, [\n resolvedAppName,\n t,\n testBody,\n testEmailCopy?.error,\n testEmailCopy?.missingRecipient,\n testEmailCopy?.success,\n testEmailDefaults?.body,\n testEmailDefaults?.subject,\n testSubject,\n testTo,\n ]);\n\n const expiresLabel = useMemo(\n () => formatExpiresAt(status.expiresAt),\n [status.expiresAt]\n );\n const connectionDescription = useMemo(() => {\n if (status.connected && status.mailboxPrincipal) {\n return t('outlook.status.connectedAs', 'Connected as {{mailbox}}', {\n mailbox: status.mailboxPrincipal,\n });\n }\n if (status.connected) {\n return t('outlook.status.connectedNoMailbox', 'Outlook is connected.');\n }\n return (\n connectDescription ||\n t(\n 'outlook.connectDescription',\n 'Link your account to Outlook to manage your emails directly from our app.',\n { appName: resolvedAppName }\n )\n );\n }, [connectDescription, resolvedAppName, status.connected, status.mailboxPrincipal, t]);\n\n const connectButtonLabel = useMemo(\n () =>\n status.connected\n ? t('outlook.status.connected', 'Connected')\n : t('outlook.connectCta', 'Connect To Outlook'),\n [status.connected, t]\n );\n\n const connectButtonDisabled = useMemo(\n () => status.connected || action === 'authorize',\n [status.connected, action]\n );\n\n const disconnectDisabled = useMemo(() => action === 'disconnect', [action]);\n const sendTestDisabled = useMemo(\n () => !status.connected || action === 'send-mail',\n [status.connected, action]\n );\n\n const resolvedDisclaimer =\n disclaimerText ||\n t(\n 'outlook.sidesheetDisclaimer',\n `By signing in you are giving ${resolvedAppName} access to send emails on your behalf using your Outlook Mailbox.`,\n { appName: resolvedAppName }\n );\n const resolvedWhyConnectTitle =\n whyConnectTitle ||\n t('outlook.whyConnect.title', 'Why connect to Outlook?');\n const resolvedWhyConnectDescription =\n whyConnectDescription ||\n t(\n 'outlook.whyConnect.description',\n `Certain actions within ${resolvedAppName} that require emailing will be enabled, such as:`,\n { appName: resolvedAppName }\n );\n const resolvedFooterNote =\n footerNote ||\n t(\n 'outlook.todoNotes',\n `The ${resolvedAppName} backend securely stores your Mail.Send token and updates this status automatically.`,\n { appName: resolvedAppName }\n );\n\n return (\n <SideSheet\n title={t('outlook.title', 'Outlook Integration')}\n open={open}\n onClose={onClose}\n width={560}\n >\n <AmbientAlert\n alertSeverity=\"info\"\n showAlert={true}\n alertMessage={resolvedDisclaimer}\n />\n\n {feedback && (\n <AmbientAlert\n alertSeverity={feedback.severity}\n showAlert={true}\n alertMessage={feedback.message}\n closeAlert={() => setFeedback(null)}\n />\n )}\n\n {status.error && (\n <AmbientAlert\n alertSeverity=\"warning\"\n showAlert={true}\n alertMessage={status.error}\n />\n )}\n\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"center\"\n mt={2}\n mb={2}\n textAlign=\"center\"\n >\n <OutlookLogoIcon\n style={{\n fontSize: 128,\n width: 128,\n height: 128,\n color: theme.palette.info.dark,\n }}\n />\n <Typography variant=\"h6\" gutterBottom>\n {status.connected\n ? t('outlook.status.header.connected', 'Connected to Outlook')\n : t('outlook.connectHeader', 'Connect to Outlook')}\n </Typography>\n <Typography variant=\"body2\" color=\"textSecondary\">\n {connectionDescription}\n </Typography>\n {expiresLabel && (\n <Typography variant=\"caption\" color=\"textSecondary\">\n {t('outlook.status.expiresAt', 'Token expires {{date}}', {\n date: expiresLabel,\n })}\n </Typography>\n )}\n </Box>\n\n {initializing && (\n <Box mb={2}>\n <Typography variant=\"body2\" color=\"textSecondary\">\n {t(\n 'outlook.status.loading',\n 'Checking current Outlook connection...'\n )}\n </Typography>\n </Box>\n )}\n\n <Box mb={status.connected ? 2 : 4}>\n <FluentButton\n variant=\"contained\"\n color=\"primary\"\n fullWidth\n onClick={handleConnect}\n disabled={connectButtonDisabled}\n >\n {connectButtonLabel}\n </FluentButton>\n </Box>\n\n {status.connected && (\n <>\n <FluentButton\n variant=\"outlined\"\n color=\"primary\"\n fullWidth\n onClick={handleDisconnect}\n disabled={disconnectDisabled}\n >\n {t('outlook.disconnect', 'Disconnect Outlook')}\n </FluentButton>\n\n {showTestEmail && (\n <>\n <Divider style={{ margin: '24px 0' }} />\n <Typography variant=\"subtitle1\" gutterBottom>\n {testEmailCopy?.title ||\n t('outlook.sendTest.title', 'Send a Test Email')}\n </Typography>\n <Box display=\"flex\" flexDirection=\"column\" gridGap={12} mb={2}>\n <TextField\n label={\n testEmailCopy?.toLabel || t('outlook.sendTest.to', 'To')\n }\n variant=\"outlined\"\n size=\"small\"\n fullWidth\n value={testTo}\n onChange={event => setTestTo(event.target.value)}\n />\n <TextField\n label={\n testEmailCopy?.subjectLabel ||\n t('outlook.sendTest.subject', 'Subject')\n }\n variant=\"outlined\"\n size=\"small\"\n fullWidth\n value={testSubject}\n onChange={event => setTestSubject(event.target.value)}\n />\n <TextField\n label={\n testEmailCopy?.bodyLabel ||\n t('outlook.sendTest.body', 'Body')\n }\n variant=\"outlined\"\n size=\"small\"\n multiline\n minRows={3}\n fullWidth\n value={testBody}\n onChange={event => setTestBody(event.target.value)}\n />\n </Box>\n <FluentButton\n variant=\"contained\"\n color=\"primary\"\n fullWidth\n onClick={handleSendTest}\n disabled={sendTestDisabled}\n >\n {action === 'send-mail'\n ? testEmailCopy?.sending ||\n t('outlook.sendTest.sending', 'Sending...')\n : testEmailCopy?.cta ||\n t('outlook.sendTest.cta', 'Send Test Email')}\n </FluentButton>\n </>\n )}\n\n <Divider style={{ margin: '24px 0' }} />\n </>\n )}\n\n <AmbientCard title={resolvedWhyConnectTitle} fullWidth>\n <Box ml={2}>\n <Typography variant=\"body2\">{resolvedWhyConnectDescription}</Typography>\n {Array.isArray(whyConnectItems) && whyConnectItems.length > 0 && (\n <ul>\n {whyConnectItems.map((item, index) => (\n <li key={`${index}-${String(item)}`}>\n <Typography variant=\"body2\">{item}</Typography>\n </li>\n ))}\n </ul>\n )}\n </Box>\n </AmbientCard>\n\n <Box mt={3}>\n <Typography variant=\"caption\" color=\"textSecondary\">\n {resolvedFooterNote}\n </Typography>\n </Box>\n </SideSheet>\n );\n};\n\nfunction formatExpiresAt(expiresAt) {\n if (!expiresAt) return null;\n const date = new Date(expiresAt);\n return Number.isNaN(date.getTime()) ? null : date.toLocaleString();\n}\n\nfunction extractErrorMessage(error, fallback) {\n if (!error) return fallback;\n if (typeof error === 'string') return error;\n if (typeof error.message === 'string' && error.message.trim()) {\n return error.message;\n }\n const responseMessage =\n error?.response?.data || error?.response?.statusText || error?.message;\n if (typeof responseMessage === 'string' && responseMessage.trim()) {\n return responseMessage;\n }\n return fallback;\n}\n\nexport default OutlookIntegrationSideSheet;\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { LoadingIndicator } from '../../UI/loading/LoadingIndicator';\nimport { AmbientAlert } from '../../UI/feedback/AmbientAlert';\nimport { ConfigService } from '../../configService';\nimport {\n exchangeAuthorizationCode,\n getOutlookRedirectUri,\n} from './outlookIntegrationClient';\nimport { refreshOutlookStatus } from './outlookIntegrationStatus';\n\nexport const OutlookIntegrationCallbackPage = () => {\n const location = useLocation();\n const [error, setError] = useState(null);\n const [debugLog, setDebugLog] = useState([]);\n const debugEnabled = isDebugEnabled();\n\n const { code, state, errorParam, errorDescription } = useMemo(() => {\n const params = new URLSearchParams(location.search);\n return {\n code: params.get('code'),\n state: params.get('state'),\n errorParam: params.get('error'),\n errorDescription: params.get('error_description'),\n };\n }, [location.search]);\n\n const redirectUri = useMemo(() => getOutlookRedirectUri(), []);\n\n const log = useCallback(\n message => {\n const timestamp = new Date().toISOString();\n console.debug(`[OutlookCallback] ${message}`);\n if (!debugEnabled) return;\n setDebugLog(prev => [...prev, `${timestamp} ${message}`]);\n },\n [debugEnabled]\n );\n\n const closePopup = useCallback(() => {\n if (debugEnabled) {\n log('Debug mode enabled; window will remain open for inspection.');\n return;\n }\n log('Closing Outlook popup after successful authorization.');\n closeWindowSoon();\n }, [debugEnabled, log]);\n\n useEffect(() => {\n log(`Callback page mounted with search: \"${location.search || '<empty>'}\"`);\n\n if (errorParam) {\n const message =\n errorDescription || errorParam || 'Outlook authorization failed.';\n log(`Outlook authorization returned error: ${message}`);\n setError(message);\n notifyParent('outlookConnectFailure', message);\n return;\n }\n\n if (!code || !state) {\n const message = 'Authorization details missing from Outlook redirect.';\n log('Authorization code or state missing in query string.');\n setError(message);\n notifyParent('outlookConnectFailure', message);\n return;\n }\n\n log(`Exchanging authorization code via redirect URI: ${redirectUri}`);\n exchangeAuthorizationCode({ authorizationCode: code, state, redirectUri })\n .then(() => {\n log('Authorization code exchange succeeded; refreshing Outlook status.');\n return refreshOutlookStatus();\n })\n .then(() => {\n log('Outlook status refreshed; notifying parent of success.');\n notifyParent('outlookConnectSuccess');\n closePopup();\n })\n .catch(err => {\n const message = extractErrorMessage(\n err,\n 'Failed to finalize the Outlook connection.'\n );\n log(`Outlook connect flow failed: ${message}`);\n setError(message);\n notifyParent('outlookConnectFailure', message);\n log('Leaving callback window open so the error details stay visible.');\n });\n }, [\n closePopup,\n code,\n errorDescription,\n errorParam,\n location.search,\n log,\n redirectUri,\n state,\n ]);\n\n return (\n <>\n {!error && <LoadingIndicator />}\n {error && (\n <AmbientAlert\n alertSeverity=\"error\"\n showAlert={true}\n alertMessage={error}\n />\n )}\n {debugEnabled && (\n <div\n style={{\n marginTop: 16,\n padding: '12px 14px',\n backgroundColor: '#111',\n color: '#eee',\n borderRadius: 4,\n fontFamily: 'monospace',\n fontSize: 12,\n maxHeight: '40vh',\n overflowY: 'auto',\n }}\n >\n <strong style={{ display: 'block', marginBottom: 8 }}>\n Outlook callback debug log\n </strong>\n {debugLog.length === 0 ? (\n <div>Waiting for events...</div>\n ) : (\n debugLog.map((entry, idx) => <div key={idx}>{entry}</div>)\n )}\n <div style={{ marginTop: 12 }}>\n This window will stay open in debug mode. Close it manually after\n reviewing the log.\n </div>\n </div>\n )}\n </>\n );\n};\n\nfunction notifyParent(type, message) {\n try {\n window.opener?.postMessage({ type, message }, window.location.origin);\n } catch {\n // ignore\n }\n try {\n window.opener?.postMessage(type, window.location.origin);\n } catch {\n // ignore\n }\n}\n\nfunction closeWindowSoon() {\n setTimeout(() => {\n try {\n window.close();\n } catch {\n // ignore\n }\n }, 750);\n}\n\nfunction extractErrorMessage(error, fallback) {\n if (!error) return fallback;\n if (typeof error === 'string') return error;\n if (typeof error.message === 'string' && error.message.trim()) {\n return error.message;\n }\n const responseMessage =\n error?.response?.data || error?.response?.statusText || error?.message;\n if (typeof responseMessage === 'string' && responseMessage.trim()) {\n return responseMessage;\n }\n return fallback;\n}\n\nexport default OutlookIntegrationCallbackPage;\n\nfunction isDebugEnabled() {\n const raw = ConfigService?.config?.OUTLOOK_POPUP_DEBUG;\n if (typeof raw === 'boolean') {\n return raw;\n }\n return String(raw ?? '').toLowerCase() === 'true';\n}\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { AmbientAlert } from '../../UI/feedback/AmbientAlert';\nimport { SubHeaderAction } from '../../utilities/utilityBar/SubHeaderAction';\nimport {\n getOutlookStatus,\n subscribeOutlookStatus,\n ensureOutlookStatusLoaded,\n} from './outlookIntegrationStatus';\n\n/**\n * Global warning banner shown when Outlook integration is disconnected.\n * Defaults to enabled so apps get the disconnected warning behavior out of the box.\n */\nexport const OutlookIntegrationBanner = ({\n onConfigure,\n enabled = true,\n hideOnPaths = [],\n title,\n message,\n actionLabel,\n dismissible = true,\n renderInSubHeaderAction = false,\n}) => {\n const { t } = useTranslation();\n const location = useLocation();\n\n const [status, setStatus] = useState(() => getOutlookStatus());\n const [show, setShow] = useState(true);\n\n const shouldHideForPath = useMemo(() => {\n const pathname = location?.pathname || '';\n return hideOnPaths.some(path => path && pathname.includes(path));\n }, [hideOnPaths, location?.pathname]);\n\n useEffect(() => {\n const unsub = subscribeOutlookStatus(next => {\n setStatus(next);\n // Restore banner when status updates and integration is disconnected.\n if (next.connected) {\n setShow(false);\n } else {\n setShow(true);\n }\n });\n\n ensureOutlookStatusLoaded().catch(() => {});\n return () => unsub();\n }, []);\n\n if (!enabled || shouldHideForPath || !show || !status.loaded || status.connected) {\n return null;\n }\n\n const alert = (\n <AmbientAlert\n alertTitle={title || t('outlook.banner.title', 'Outlook Integration Required')}\n alertMessage={\n status.error ||\n message ||\n t(\n 'outlook.banner.message',\n 'Setup Outlook integration to enable email functionality.'\n )\n }\n showAlert={true}\n alertSeverity={status.error ? 'error' : 'warning'}\n alertAction={typeof onConfigure === 'function'}\n alertActionButton={\n actionLabel ||\n t('outlook.banner.action', 'Setup Outlook integration')\n }\n alertHandleAction={onConfigure}\n closeAlert={dismissible ? () => setShow(false) : undefined}\n />\n );\n\n if (renderInSubHeaderAction) {\n return <SubHeaderAction>{alert}</SubHeaderAction>;\n }\n\n return alert;\n};\n\nexport default OutlookIntegrationBanner;\n","import React, { useState, useEffect, useRef } from 'react';\nimport {\n UdpFluentButton,\n UdpFluentDrawer,\n UdpFluentTablist,\n UdpTabPanel,\n UdpFluentDialog,\n UdpFluentTextInput,\n UdpFluentCheckbox,\n UdpFormComponent,\n UdpField,\n UdpFluentMenu,\n UdpCompoundButton,\n UdpIcon\n} from 'udp-react-stencil-component-library';\nimport { ClientSideUdpGrid } from '../UI/templates/newGrid';\nimport { FormApi } from 'final-form';\n\nconst checkboxMenuItems = [\n {\n id: 'c1-1',\n text: 'Checkbox 1-A',\n sectionNumber: 1,\n type: 'checkbox'\n },\n {\n id: 'c1-2',\n text: 'Checkbox 1-B',\n sectionNumber: 1,\n type: 'checkbox'\n },\n {\n id: 'c2-1',\n text: 'Checkbox 2-A',\n sectionNumber: 2,\n type: 'checkbox'\n },\n {\n id: 'c2-2',\n text: 'Checkbox 2-B',\n sectionNumber: 2,\n type: 'checkbox'\n },\n { id: 'c3', text: 'More Options' },\n {\n id: 'c3-1',\n text: 'Sub Checkbox 1',\n parentId: 'c3',\n type: 'checkbox'\n },\n {\n id: 'c3-2',\n text: 'Sub Checkbox 2',\n parentId: 'c3',\n type: 'checkbox'\n }\n];\n\n// This file is meant to import react wrapped stencil components and test them individually\n\ninterface TestFormValues {\n firstName?: string;\n email?: string;\n age?: string;\n newsletter?: boolean;\n exclamation?: string;\n}\n\nconst mustHaveExclamation = (value: unknown) => {\n // 1. Skip validation if empty (let 'required' handle empty states)\n if (!value) return undefined;\n\n // 2. Check logic\n if (typeof value === 'string' && value.includes('!')) {\n return undefined; // Valid\n }\n\n // 3. Return error message\n return 'You must include an exclamation mark (!)';\n};\n\nexport const TestStencilWrappedComponentsPage = () => {\n const [open, setOpen] = useState(false);\n const [dialogOpen, setDialogOpen] = useState(false);\n const [formDrawerOpen, setFormDrawerOpen] = useState(false);\n const [activeTab, setActiveTab] = useState('tab1');\n const [formData, setFormData] = useState<TestFormValues>({});\n const [isLoading, setIsLoading] = useState(true);\n const formInstance = useRef<FormApi | null>(null);\n\n useEffect(() => {\n // Simulate an API call taking 2 seconds\n console.log('Fetching data...');\n const timer = setTimeout(() => {\n setFormData({\n firstName: 'Async John',\n email: 'async_john@example.com',\n age: '45', // Note: Strings are safer for inputs than numbers\n newsletter: true,\n exclamation: 'Late arrival!'\n });\n setIsLoading(false);\n }, 2000);\n\n return () => clearTimeout(timer);\n }, []);\n\n const handleDrawerClose = () => {\n setOpen(false);\n };\n\n const handleDialogClose = () => {\n setDialogOpen(false);\n };\n\n const handleFormDrawerClose = () => {\n setFormDrawerOpen(false);\n };\n\n const handleFormSubmit = (values: TestFormValues) => {\n console.log('Form submitted with values:', values);\n setFormDrawerOpen(false);\n };\n\n const validateForm = (values: TestFormValues) => {\n const errors: Partial<Record<keyof TestFormValues, string>> = {};\n console.log('Validating:', values);\n return errors;\n };\n\n const handleFormReady = (e: CustomEvent<FormApi>) => {\n formInstance.current = e.detail;\n };\n\n return (\n <div\n style={{\n display: 'flex',\n flexDirection: 'column'\n }}\n >\n <UdpFluentButton onClick={() => setOpen(true)}>\n Open Sidesheet\n </UdpFluentButton>\n <UdpFluentButton onClick={() => setFormDrawerOpen(true)}>\n Open Form Drawer\n </UdpFluentButton>\n <UdpCompoundButton\n appearance='transparent'\n shape='rounded'\n size='medium'\n onClick={() => console.log('Compound Button Clicked')}\n >\n <span slot='description'>Description content</span>\n <UdpIcon iconName='add' slot='start' color='inherit'></UdpIcon>\n Compound Button\n </UdpCompoundButton>\n <UdpFluentDrawer\n open={open}\n onDrawerClose={handleDrawerClose}\n title='Drawer Title'\n >\n <ClientSideUdpGrid\n columnDefs={[\n { field: 'make' },\n { field: 'model' },\n { field: 'price' }\n ]}\n rowData={[\n { make: 'Toyota', model: 'Celica', price: 35000 },\n { make: 'Ford', model: 'Mondeo', price: 32000 },\n { make: 'Porsche', model: 'Boxster', price: 72000 }\n ]}\n />\n </UdpFluentDrawer>\n\n <UdpFluentDrawer\n open={formDrawerOpen}\n onDrawerClose={handleFormDrawerClose}\n >\n {isLoading ? (\n <div>Loading form data...</div>\n ) : (\n <UdpFormComponent\n id='user-form'\n validate={validateForm}\n onFormReady={handleFormReady}\n onSubmit={handleFormSubmit}\n initialValues={formData}\n >\n <div\n style={{ display: 'flex', gap: '1rem', flexDirection: 'column' }}\n >\n <UdpField name='firstName'>\n <UdpFluentTextInput label='First Name'></UdpFluentTextInput>\n </UdpField>\n\n <UdpField name='email'>\n <UdpFluentTextInput\n label='Email Address'\n type='email'\n autoFocus={true}\n controlSize='large'\n value='jordanatchison@univerus.com'\n ></UdpFluentTextInput>\n </UdpField>\n\n <UdpField name='age'>\n <UdpFluentTextInput label='Age' required></UdpFluentTextInput>\n </UdpField>\n\n <UdpField name='exclamation' validate={mustHaveExclamation}>\n <UdpFluentTextInput\n label='Exclamation'\n hint='exclamation mark please'\n ></UdpFluentTextInput>\n </UdpField>\n\n <UdpField name='newsletter'>\n <UdpFluentCheckbox\n disabled\n label='Subscribe to newsletter'\n hint='We will only send you emails about important updates'\n ></UdpFluentCheckbox>\n </UdpField>\n </div>\n </UdpFormComponent>\n )}\n\n <UdpFluentButton\n appearance='primary'\n slot='footer'\n onClick={() => void formInstance.current?.submit()}\n >\n Submit Form\n </UdpFluentButton>\n </UdpFluentDrawer>\n\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: '1rem',\n marginTop: '2rem'\n }}\n >\n <UdpFluentTablist\n activeId={activeTab}\n appearance='transparent'\n size='small'\n orientation='vertical'\n onTabChange={(e: CustomEvent<string>) => setActiveTab(e.detail)}\n tabList={[\n { id: 'tab1', label: 'Tab 1 (Static)' },\n { id: 'tab2', label: 'Tab 2 (Lazy)' },\n { id: 'tab3', label: 'Tab 3 (Default Lazy)' }\n ]}\n />\n <div style={{ padding: '1rem', border: '1px solid #ccc' }}>\n <UdpTabPanel id='tab1' activeTabId={activeTab}>\n <h3>Dialog Example</h3>\n <UdpFluentButton onClick={() => setDialogOpen(true)}>\n Open Dialog\n </UdpFluentButton>\n <UdpFluentDialog\n open={dialogOpen}\n title='Example Dialog'\n onDialogClose={handleDialogClose}\n >\n <UdpFluentButton slot='action' onClick={handleDialogClose}>\n Submit\n </UdpFluentButton>\n <div>This is a simple dialog example.</div>\n </UdpFluentDialog>\n <UdpFluentMenu\n items={checkboxMenuItems}\n onClick={(item: unknown) => console.log(item)}\n label='Menu'\n ></UdpFluentMenu>\n </UdpTabPanel>\n\n <UdpTabPanel id='tab2' activeTabId={activeTab}>\n <ClientSideUdpGrid\n columnDefs={[\n { field: 'make' },\n { field: 'model' },\n { field: 'price' }\n ]}\n rowData={[\n { make: 'Toyota', model: 'Celica', price: 35000 },\n { make: 'Ford', model: 'Mondeo', price: 32000 },\n { make: 'Porsche', model: 'Boxster', price: 72000 }\n ]}\n />\n </UdpTabPanel>\n\n <UdpTabPanel id='tab3' activeTabId={activeTab}>\n <h3>Tab 3 Content (Default Lazy)</h3>\n <p>This content is lazy loaded by default.</p>\n </UdpTabPanel>\n </div>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { TestComponentsPage } from 'udp-react-stencil-component-library';\n\n// This file is meant to import a full stencil page and test it\n\nexport const TestFullStencilPage = () => {\n return (\n <div>\n <TestComponentsPage />\n </div>\n );\n};\n","import React from 'react';\nimport { UdpKpiCards as StencilUdpKpiCards } from 'udp-react-stencil-component-library';\nimport { KpiCardsProps } from './type';\n\nexport const UdpKpiCards = (props: KpiCardsProps) => {\n const { children, ...otherProps } = props;\n\n return (\n <StencilUdpKpiCards {...otherProps}>\n {children}\n </StencilUdpKpiCards>\n );\n};\n","import React from 'react';\nimport { KPICardProps } from './type';\nimport { UdpKpiCard as StencilKpiCard } from 'udp-react-stencil-component-library';\n\nexport const UdpKpiCard = (props: KPICardProps) => {\n return <StencilKpiCard {...props} />;\n};\n","import React, { useState, useEffect, useMemo, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { ClientSideUdpGrid } from '../../../../../UI/templates/newGrid';\nimport {\n EmptyStateDisplay,\n LinearProgress,\n SideSheet\n} from '../../../../../UI';\nimport { FluentTextField } from '../../../../../UI/inputs/textField';\nimport { FluentButton } from '../../../../../UI/inputs/buttons';\nimport { LayoutUnit } from '../../../../../layout';\nimport { Typography } from '@material-ui/core';\nimport {\n apiMutate,\n useAxiosMutate\n} from '../../../../../utilities/useAxiosMutate';\nimport { ConfigService } from '../../../../../configService';\nimport { PDFViewer } from '../../../../../UI/fileViewer/pdfViewer';\nimport { useHandleAxiosSnackbar } from '../../../../../utilities';\nimport { ErrorIcon } from '@fluentui/react-icons';\n\nconst ALLOWED_EXTENSIONS = [\n 'pdf',\n 'jpg',\n 'jpeg',\n 'png',\n 'gif',\n 'bmp',\n 'tif',\n 'tiff'\n];\n\nexport const TransactionAttachmentPdfStitcher = (props) => {\n const {\n transactionAttachments = [],\n onDownload,\n onPreview,\n onCancel,\n stitchLoading,\n orderedRows,\n onSelectionChanged,\n onRowOrderChanged,\n stitchedFileName,\n onFileNameChange,\n fileNameError,\n tableHeight = 'calc(100vh - 700px)',\n hidePreviewButton = false,\n hideDownloadButton = false,\n defaultPreviewSideSheet = true,\n transactionTypeId,\n transactionAttachmentTypes,\n disableFileName = false,\n onActionClick,\n actionButtonLabel = '',\n disableActionButton = false\n } = props;\n const { t } = useTranslation();\n const [orderedSelection, setOrderedSelection] = useState(orderedRows || []);\n const [sourceGridApi, setSourceGridApi] = useState(null);\n const [orderGridApi, setOrderGridApi] = useState(null);\n const [previewPdfOpen, setPreviewPdfOpen] = useState(false);\n const [previewPdfLoading, setPreviewPdfLoading] = useState(false);\n const [previewPdfError, setPreviewPdfError] = useState(null);\n const [previewPdfBlob, setPreviewPdfBlob] = useState(null);\n const [downloadingPdf, setDownloadingPdf] = useState(false);\n\n const { handleErrorSnackbar } = useHandleAxiosSnackbar();\n\n const [\n { data: fetchedTransactionAttachmentTypes },\n fetchTransactionAttachmentTypes\n ] = useAxiosMutate(\n ConfigService.productV1ApiUrl,\n `UdpTransactionAttachmentType/search`,\n {\n method: 'post',\n data: {\n pageSize: 50,\n filterElements: [\n {\n searchField: 'TransactionTypeId',\n searchValue: transactionTypeId,\n searchOperator: '='\n }\n ],\n getAll: true\n }\n }\n );\n\n const resolvedTransactionAttachmentTypes =\n transactionAttachmentTypes ?? fetchedTransactionAttachmentTypes?.pageList;\n\n const executeGetStitchedPdf = useCallback(async () => {\n return await apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpTransactionAttachment/stitchAttachmentsIntoPdf`,\n {\n method: 'POST',\n data: {\n fileName: stitchedFileName,\n transactionAttachments: orderedSelection\n },\n responseType: 'blob'\n }\n ).catch(async (error) => {\n let errorMessage = '';\n if (error.response && error.response.data instanceof Blob) {\n // Convert the blob back to a string\n errorMessage = await error.response.data.text();\n } else {\n errorMessage = error.message;\n }\n handleErrorSnackbar(\n error,\n t(`Failed to generate PDF ${errorMessage ? `: ${errorMessage}` : ''}`)\n );\n setPreviewPdfError(errorMessage);\n });\n }, [stitchedFileName, orderedSelection, handleErrorSnackbar, t]);\n\n const handleOnPreviewPdfClose = useCallback(() => {\n setPreviewPdfOpen(false);\n setPreviewPdfBlob(null);\n setPreviewPdfError(null);\n }, []);\n\n const handleRowOrderChanged = useCallback(\n (newOrder) => {\n if (onRowOrderChanged) {\n onRowOrderChanged(newOrder);\n }\n if (onSelectionChanged) {\n onSelectionChanged(newOrder);\n }\n setOrderedSelection(newOrder);\n },\n [onRowOrderChanged, onSelectionChanged]\n );\n\n const handleSelectionChanged = useCallback(\n (selected) => {\n setOrderedSelection((prevOrdered) => {\n const selectedIds = new Set(\n selected.map((item) => item.transactionAttachmentId || item.id)\n );\n\n // Filter previous order to keep only items that are still selected\n const nextOrdered = prevOrdered.filter((item) =>\n selectedIds.has(item.transactionAttachmentId || item.id)\n );\n\n const prevIds = new Set(\n prevOrdered.map((item) => item.transactionAttachmentId || item.id)\n );\n\n const newItems = selected.filter(\n (item) => !prevIds.has(item.transactionAttachmentId || item.id)\n );\n\n const finalSelection = [...nextOrdered, ...newItems];\n\n if (onSelectionChanged) {\n onSelectionChanged(finalSelection);\n }\n\n return finalSelection;\n });\n },\n [onSelectionChanged]\n );\n\n const filteredAttachments = useMemo(() => {\n return transactionAttachments.filter((item) => {\n const ext = item.extension\n ? item.extension.toLowerCase().replace('.', '')\n : '';\n return ALLOWED_EXTENSIONS.includes(ext);\n });\n }, [transactionAttachments]);\n\n const handleGridApiCallback = useCallback((api) => {\n setSourceGridApi(api);\n }, []);\n\n const handleOrderGridApiCallback = useCallback((api) => {\n setOrderGridApi(api);\n }, []);\n\n const getColumnDefs = useCallback(\n (type) => {\n return [\n {\n field: 'fileName',\n headerName: t('File Name'),\n tooltipField: 'fileName',\n sortable: false,\n rowDrag: type === 'select' ? false : true\n },\n ...((transactionTypeId || transactionAttachmentTypes) &&\n type === 'select'\n ? [\n {\n headerName: t('Type'),\n field: 'transactionAttachmentTypeId',\n filter: 'agSetColumnFilter',\n filterParams: {\n values: (params) => {\n const values =\n resolvedTransactionAttachmentTypes?.map(\n (taType) => taType.transactionAttachmentTypeId\n ) || [];\n params.success(values);\n },\n valueFormatter: (params) => {\n const type = resolvedTransactionAttachmentTypes?.find(\n (taType) =>\n taType.transactionAttachmentTypeId === params.value\n );\n return type ? type.name : params.value;\n }\n },\n valueFormatter: (params) => {\n const type = resolvedTransactionAttachmentTypes?.find(\n (taType) =>\n taType.transactionAttachmentTypeId ===\n params?.data?.transactionAttachmentTypeId\n );\n return type\n ? type.name\n : params?.data?.transactionAttachmentTypeId;\n }\n }\n ]\n : [])\n ];\n },\n [\n t,\n resolvedTransactionAttachmentTypes,\n transactionTypeId,\n transactionAttachmentTypes\n ]\n );\n\n const selectAttachmentsGridOptions = useMemo(\n () => ({\n rowDragManaged: true,\n animateRows: true,\n suppressMoveWhenRowDragging: false,\n getRowId: (params) =>\n params.data.transactionAttachmentId?.toString() ||\n params.data.id?.toString(),\n onSelectionChanged: (event) => {\n handleSelectionChanged(event.api.getSelectedRows());\n },\n rowSelection: {\n mode: 'multiRow'\n }\n }),\n [handleSelectionChanged]\n );\n\n const documentOrderGridOptions = useMemo(\n () => ({\n rowDragManaged: true,\n animateRows: true,\n suppressMoveWhenRowDragging: false,\n getRowId: (params) =>\n params.data.transactionAttachmentId?.toString() ||\n params.data.id?.toString(),\n onRowDragEnd: (event) => {\n const newOrder = [];\n event.api.forEachNode((node) => {\n newOrder.push(node.data);\n });\n handleRowOrderChanged(newOrder); // This now calls setOrderedSelection\n },\n onSelectionChanged: (event) => {\n handleSelectionChanged(event.api.getSelectedRows());\n },\n headerHeight: 0\n }),\n [handleRowOrderChanged, handleSelectionChanged]\n );\n\n const handleDownload = useCallback(async () => {\n setDownloadingPdf(true);\n try {\n const response = onDownload\n ? await onDownload(orderedSelection)\n : await executeGetStitchedPdf();\n\n if (response) {\n const blob = response.data;\n\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = `${\n stitchedFileName.trim().toLowerCase().endsWith('.pdf')\n ? stitchedFileName\n : `${stitchedFileName || 'merged_files'}.pdf`\n }`;\n a.click();\n URL.revokeObjectURL(url);\n }\n } finally {\n setDownloadingPdf(false);\n }\n }, [onDownload, orderedSelection, stitchedFileName, executeGetStitchedPdf]);\n\n const handlePreview = useCallback(async () => {\n // 1. Early return or simple execution if we aren't using the default UI\n if (onPreview && !defaultPreviewSideSheet) {\n return await onPreview(orderedSelection);\n }\n\n // 2. Setup UI state for the default SideSheet\n setPreviewPdfOpen(true);\n setPreviewPdfLoading(true);\n\n try {\n // 3. Determine which data source to use\n const request = onPreview\n ? onPreview(orderedSelection)\n : executeGetStitchedPdf();\n\n const response = await request;\n const blob = response?.data;\n\n if (blob instanceof Blob) {\n setPreviewPdfBlob(blob);\n }\n } finally {\n setPreviewPdfLoading(false);\n }\n }, [\n onPreview,\n orderedSelection,\n executeGetStitchedPdf,\n defaultPreviewSideSheet\n ]);\n\n useEffect(() => {\n if (!transactionAttachmentTypes && transactionTypeId) {\n fetchTransactionAttachmentTypes().catch(() => {});\n }\n }, [\n transactionAttachmentTypes,\n fetchTransactionAttachmentTypes,\n transactionTypeId\n ]);\n\n useEffect(() => {\n // Syncs the selection state of the top grid based on the orderedSelection state\n if (sourceGridApi) {\n const selectionIds = new Set(\n orderedSelection.map((item) => item.transactionAttachmentId || item.id)\n );\n sourceGridApi.forEachNode((node) => {\n const isActuallySelected = selectionIds.has(\n node.data.transactionAttachmentId || node.data.id\n );\n if (node.isSelected() !== isActuallySelected) {\n node.setSelected(isActuallySelected, false, true);\n }\n });\n }\n }, [sourceGridApi, orderedSelection]);\n\n return (\n <div style={{ height: '100%' }}>\n {(stitchLoading || downloadingPdf) && <LinearProgress />}\n <div style={{ paddingBottom: 8 }}>\n <FluentTextField\n label={t('File Name')}\n value={stitchedFileName}\n onChange={onFileNameChange}\n error={!!fileNameError}\n helperText={fileNameError}\n fullWidth\n variant='outlined'\n disabled={disableFileName}\n />\n </div>\n <Typography>{t('Select Attachments (Optional)')}</Typography>\n <LayoutUnit unit='nudge' />\n <ClientSideUdpGrid\n columnDefs={getColumnDefs('select')}\n rowData={filteredAttachments || []}\n gridOptions={selectAttachmentsGridOptions}\n gridApiCallback={handleGridApiCallback}\n gridHeight={tableHeight}\n />\n <LayoutUnit unit='nudge' />\n <Typography>{t('Document Order')}</Typography>\n <LayoutUnit unit='nudge' />\n <ClientSideUdpGrid\n columnDefs={getColumnDefs('order')}\n rowData={orderedSelection}\n gridOptions={documentOrderGridOptions}\n gridApiCallback={handleOrderGridApiCallback}\n gridHeight={tableHeight}\n />\n <div\n style={{\n display: 'flex',\n justifyContent: 'flex-start',\n paddingTop: '8px'\n }}\n >\n {hidePreviewButton ? null : (\n <FluentButton\n color='primary'\n disabled={!orderedSelection?.length}\n onClick={handlePreview}\n >\n {t('Preview')}\n </FluentButton>\n )}\n {hideDownloadButton ? null : (\n <FluentButton\n color='primary'\n disabled={!orderedSelection?.length || downloadingPdf}\n onClick={handleDownload}\n >\n {t('Download')}\n </FluentButton>\n )}\n {onActionClick && (\n <FluentButton\n color='primary'\n disabled={disableActionButton}\n onClick={onActionClick}\n >\n {t(actionButtonLabel || 'Perform Action')}\n </FluentButton>\n )}\n </div>\n\n <SideSheet\n open={previewPdfOpen}\n title={t('PDF Preview')}\n onClose={handleOnPreviewPdfClose}\n width={660}\n progress={previewPdfLoading}\n variant='indeterminate'\n color='primary'\n >\n {previewPdfError ? (\n <EmptyStateDisplay\n icon={ErrorIcon}\n primaryText={'Error loading PDF preview'}\n secondaryText={\n previewPdfError ||\n t('An error occurred while generating the PDF preview.')\n }\n />\n ) : (\n <PDFViewer\n blobPDF={previewPdfBlob}\n closePDF={handleOnPreviewPdfClose}\n onClickDownload={handleDownload}\n />\n )}\n </SideSheet>\n </div>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["ConfigService","fetchOutlookStatus","useTheme","extractErrorMessage","Box","Typography","Divider","useLocation","ConfigService","useLocation","UdpCompoundButton","UdpIcon","UdpTabPanel","StencilUdpKpiCards","StencilKpiCard","ConfigService","Typography"],"sources":["../src/hooks/useUdpWebSocket.ts","../src/integrations/outlook/outlookIntegrationClient.ts","../src/integrations/outlook/outlookIntegrationStatus.ts","../src/integrations/outlook/OutlookIntegrationSideSheet.jsx","../src/integrations/outlook/OutlookIntegrationCallbackPage.jsx","../src/integrations/outlook/OutlookIntegrationBanner.jsx","../src/test/TestStencilWrappedComponentsPage.tsx","../src/test/TestFullStencilPage.tsx","../src/kpi/UdpKpiCards.tsx","../src/kpi/UdpKpiCard.tsx","../src/udp/pages/UdpTransactionsPage/components/transactionAttachment/TransactionAttachmentPdfStitcher.jsx"],"sourcesContent":["// eslint-disable-next-line\nimport {\n // @ts-ignore\n UdpWebSocketClient,\n // @ts-ignore\n type UdpWebSocketMessage,\n // @ts-ignore\n type UdpWsReceiveHandler,\n // @ts-ignore\n type UdpWsCloseHandler,\n // @ts-ignore\n type UdpWsErrorHandler\n} from 'udp-react-stencil-component-library/core';\nimport { useEffect, useRef, useCallback, useState, useMemo } from 'react';\nimport { getAccessToken } from '../utilities';\n\n/**\n * Options for configuring the WebSocket connection behavior.\n */\ninterface UdpWebSocketHookOptions {\n /** Callback invoked when a message is received from the WebSocket server. */\n onMessageReceived?: UdpWsReceiveHandler;\n /** Callback invoked when a WebSocket error occurs. */\n onError?: UdpWsErrorHandler;\n /** Callback invoked when the WebSocket connection closes. */\n onClose?: UdpWsCloseHandler;\n /** Interval in seconds for sending keep-alive pings. Set to 0 to disable. */\n keepAliveIntervalSec?: number;\n /** Timeout in minutes before automatically closing an idle connection. Set to 0 to disable. */\n keepAliveTimeoutMin?: number;\n}\n\n/**\n * React hook for managing WebSocket connections with automatic connection handling,\n * keep-alive support, and message management.\n *\n * @param url - The WebSocket URL to connect to (ws:// or wss://). If undefined, no connection is established.\n * @param options - Configuration options for the WebSocket connection behavior.\n *\n * @returns An object containing:\n * - `connected`: Boolean indicating if the WebSocket is currently connected\n * - `lastMessage`: The most recent message received from the server\n * - `lastError`: The most recent error event\n * - `send`: Async function to send messages (auto-connects if not connected)\n * - `reconnect`: Async function to manually reconnect the WebSocket\n * - `close`: Function to close the WebSocket connection\n * - `client`: Direct access to the underlying UdpWebSocketClient instance\n *\n * @example\n * ```tsx\n * // Basic usage\n * const { connected, send } = useUdpWebSocket(\n * 'wss://localhost:44371/UemService/api/v1/UdpWebSocket/21f2060a-1a09-4a03-81aa-4179db30b4eb/connect'\n * );\n *\n * const handleSend = () => {\n * send({ payload: { message: \"Hello world\" } });\n * };\n * ```\n *\n * @example\n * ```tsx\n * // With message handling and keep-alive\n * const { connected, lastMessage, send } = useUdpWebSocket(\n * 'wss://localhost:44371/UemService/api/v1/UdpWebSocket/21f2060a-1a09-4a03-81aa-4179db30b4eb/connect',\n * {\n * onMessageReceived: (msg) => {\n * console.log('Received:', msg);\n * },\n * onError: (error) => {\n * console.error('WebSocket error:', error);\n * },\n * onClose: () => {\n * console.log('Connection closed');\n * },\n * keepAliveIntervalSec: 30, // Send ping every 30 seconds\n * keepAliveTimeoutMin: 10 // Auto-close after 10 minutes\n * }\n * );\n *\n * useEffect(() => {\n * if (lastMessage) {\n * // Handle received message\n * }\n * }, [lastMessage]);\n * ```\n *\n * @remarks\n * - The hook automatically establishes a connection when the URL is provided\n * - Authentication tokens are automatically retrieved via `getAccessToken()`\n * - The `send()` function will automatically connect if not already connected\n * - Calling `close()` will close the connection; it will not auto-reconnect unless `reconnect()` is called\n * - The connection is automatically cleaned up when the component unmounts\n * - Keep-alive pings help maintain long-lived connections and detect dead connections\n */\nexport function useUdpWebSocket(\n url?: string,\n options: UdpWebSocketHookOptions = {}\n) {\n const {\n onMessageReceived,\n onError,\n onClose,\n keepAliveIntervalSec = 0,\n keepAliveTimeoutMin = 0\n } = options;\n\n const initialRetryCountRef = useRef(0);\n const MAX_INIT_RETRIES = 5;\n const INIT_RETRY_DELAY = 300;\n\n const [client] = useState(() => new UdpWebSocketClient());\n const [connected, setConnected] = useState(false);\n const [lastMessage, setLastMessage] = useState<UdpWebSocketMessage | null>(\n null\n );\n const [lastError, setLastError] = useState<Event | null>(null);\n\n const messageHandlerRef = useRef<UdpWsReceiveHandler | undefined>(\n onMessageReceived\n );\n const errorHandlerRef = useRef<UdpWsErrorHandler | undefined>(onError);\n const closeHandlerRef = useRef<UdpWsCloseHandler | undefined>(onClose);\n\n useEffect(() => {\n messageHandlerRef.current = onMessageReceived;\n }, [onMessageReceived]);\n useEffect(() => {\n errorHandlerRef.current = onError;\n }, [onError]);\n useEffect(() => {\n closeHandlerRef.current = onClose;\n }, [onClose]);\n\n const connect = useCallback(async () => {\n if (!url) return;\n\n const c = client;\n if (c.isConnected) return;\n\n // Convert both values to ms\n const interval = (keepAliveIntervalSec || 0) * 1000;\n const timeout = (keepAliveTimeoutMin || 0) * 60 * 1000;\n\n await c.connect(url, getAccessToken, interval, timeout);\n }, [url, keepAliveIntervalSec, keepAliveTimeoutMin, client]);\n\n const send = useCallback(\n async (msg: UdpWebSocketMessage) => {\n const c = client;\n if (!c.isConnected) {\n await connect();\n }\n c.send(msg);\n },\n [client, connect]\n );\n\n const close = useCallback(() => {\n client.close();\n }, [client]);\n\n const reconnect = useCallback(async () => {\n const c = client;\n c.close();\n setConnected(c.isConnected);\n await connect();\n }, [client, connect]);\n\n useEffect(() => {\n if (!url) return;\n\n const c = client;\n initialRetryCountRef.current = 0;\n\n c.onMessageReceived((msg: UdpWebSocketMessage) => {\n setLastMessage(msg);\n void messageHandlerRef.current?.(msg);\n });\n\n c.onOpen(() => {\n setConnected(c.isConnected);\n });\n\n c.onError((e: Event) => {\n setLastError(e);\n void errorHandlerRef.current?.(e);\n });\n\n c.onClose((e: CloseEvent) => {\n if (!connected && initialRetryCountRef.current < MAX_INIT_RETRIES) {\n initialRetryCountRef.current++;\n setTimeout(() => connect(), INIT_RETRY_DELAY);\n }\n void closeHandlerRef.current?.(e);\n setConnected(c.isConnected);\n });\n\n connect().catch(() => {\n // Initial connection failed\n console.warn('WebSocket initial connection failed');\n });\n initialRetryCountRef.current = MAX_INIT_RETRIES;\n\n return () => {\n c.close();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [url, client, connect]);\n\n return useMemo(\n () => ({\n connected,\n lastMessage,\n lastError,\n send,\n reconnect,\n close,\n client\n }),\n [connected, lastMessage, lastError, send, reconnect, close, client]\n );\n}\n","import type { AxiosResponse } from 'axios';\nimport { apiMutate } from '../../utilities/useAxiosMutate';\nimport { ConfigService } from '../../configService';\n\nconst CONTROLLER = 'OutlookIntegrationToken';\nconst OUTLOOK_CALLBACK_PATH = '/auth/outlook/callback';\n\nexport type OutlookIntegrationStatus = {\n connected: boolean;\n mailboxPrincipal?: string | null;\n expiresAt?: string | null;\n scope?: string | null;\n};\n\nexport type OutlookAuthorizeUrlRequest = {\n redirectUri: string;\n};\n\nexport type OutlookAuthorizeUrlResponse = {\n authorizeUrl: string;\n state: string;\n codeChallenge?: string;\n redirectUri?: string;\n};\n\nexport type OutlookAuthExchangeRequest = {\n authorizationCode: string;\n state: string;\n redirectUri: string;\n};\n\nexport type OutlookSendMailRequest = {\n to: string;\n subject: string;\n body: string;\n};\n\nexport async function getStatus(): Promise<OutlookIntegrationStatus> {\n const { data } = (await apiMutate(\n ensureBaseUrl(),\n `${CONTROLLER}/status`,\n { method: 'get', headers: productHeaders() },\n undefined\n )) as AxiosResponse<OutlookIntegrationStatus>;\n\n return data ?? { connected: false };\n}\n\nexport async function getAuthorizeUrl(\n request: OutlookAuthorizeUrlRequest\n): Promise<OutlookAuthorizeUrlResponse> {\n const { data } = (await apiMutate(\n ensureBaseUrl(),\n `${CONTROLLER}/authorize-url`,\n {\n method: 'post',\n headers: productHeaders(),\n data: request,\n },\n undefined\n )) as AxiosResponse<OutlookAuthorizeUrlResponse>;\n\n return data;\n}\n\nexport async function exchangeAuthorizationCode(\n request: OutlookAuthExchangeRequest\n): Promise<OutlookIntegrationStatus> {\n const { data } = (await apiMutate(\n ensureBaseUrl(),\n `${CONTROLLER}/oauth/exchange`,\n {\n method: 'post',\n headers: productHeaders(),\n data: request,\n },\n undefined\n )) as AxiosResponse<OutlookIntegrationStatus>;\n\n return data;\n}\n\nexport async function disconnect(): Promise<void> {\n await apiMutate(\n ensureBaseUrl(),\n `${CONTROLLER}/disconnect`,\n {\n method: 'post',\n headers: productHeaders(),\n },\n undefined\n );\n}\n\nexport async function sendMail(payload: OutlookSendMailRequest): Promise<void> {\n await apiMutate(\n ensureBaseUrl(),\n `${CONTROLLER}/send-mail`,\n {\n method: 'post',\n headers: productHeaders(),\n data: payload,\n },\n undefined\n );\n}\n\nexport async function checkAndAuthenticate(): Promise<void> {\n await apiMutate(\n ensureBaseUrl(),\n `${CONTROLLER}/authenticate`,\n {\n method: 'post',\n headers: productHeaders(),\n },\n undefined\n );\n}\n\nexport function getOutlookRedirectUri(): string {\n if (typeof window !== 'undefined' && window.location) {\n return `${window.location.origin}${OUTLOOK_CALLBACK_PATH}`;\n }\n\n const base = String(ConfigService?.config?.UNITY_URL ?? '').replace(/\\/$/, '');\n return `${base}${OUTLOOK_CALLBACK_PATH}`;\n}\n\nfunction ensureBaseUrl(): string {\n return ConfigService.integrationV2ApiUrl;\n}\n\nfunction productHeaders(): Record<string, string> {\n const rawId = ConfigService?.config?.UNITY_PRODUCT_ID;\n const normalized = String(rawId ?? '').trim();\n if (!normalized) {\n throw new Error('UNITY_PRODUCT_ID is not configured.');\n }\n\n const numericId = Number(normalized);\n if (!Number.isFinite(numericId) || numericId <= 0) {\n throw new Error('UNITY_PRODUCT_ID must be a positive number.');\n }\n\n return { productId: String(numericId) };\n}\n","import type { OutlookIntegrationStatus } from './outlookIntegrationClient';\nimport { getStatus as fetchOutlookStatus } from './outlookIntegrationClient';\n\nexport type OutlookStatus = {\n connected: boolean;\n mailboxPrincipal?: string | null;\n expiresAt?: string | null;\n scope?: string | null;\n loaded: boolean;\n error?: string | null;\n};\n\nconst DEFAULT_STATUS: OutlookStatus = {\n connected: false,\n mailboxPrincipal: null,\n expiresAt: null,\n scope: null,\n loaded: false,\n error: null,\n};\n\nlet cachedStatus: OutlookStatus = { ...DEFAULT_STATUS };\nconst listeners = new Set<(status: OutlookStatus) => void>();\nlet inFlight: Promise<OutlookStatus> | null = null;\nlet hasFetchedOnce = false;\nlet statusVersion = 0;\n\nexport function getOutlookStatus(): OutlookStatus {\n return cachedStatus;\n}\n\nexport function isOutlookConnected(): boolean {\n return !!cachedStatus.connected;\n}\n\nexport function setOutlookDisconnected(): void {\n cachedStatus = {\n ...cachedStatus,\n connected: false,\n mailboxPrincipal: null,\n expiresAt: null,\n scope: null,\n loaded: true,\n error: null,\n };\n publish();\n}\n\nexport function resetOutlookStatus(): void {\n statusVersion += 1;\n hasFetchedOnce = false;\n inFlight = null;\n cachedStatus = { ...DEFAULT_STATUS };\n publish();\n}\n\nexport function subscribeOutlookStatus(\n handler: (status: OutlookStatus) => void\n): () => void {\n listeners.add(handler);\n try {\n handler(cachedStatus);\n } catch (err) {\n console.warn('OutlookStatus: failed to publish initial status', err);\n }\n return () => {\n listeners.delete(handler);\n };\n}\n\nexport async function refreshOutlookStatus(): Promise<OutlookStatus> {\n if (inFlight !== null) {\n return inFlight;\n }\n\n const requestVersion = statusVersion;\n const request = fetchOutlookStatus()\n .then(status => {\n if (requestVersion !== statusVersion) {\n return cachedStatus;\n }\n cachedStatus = mapStatus(status);\n hasFetchedOnce = true;\n publish();\n return cachedStatus;\n })\n .catch(err => {\n if (requestVersion !== statusVersion) {\n return cachedStatus;\n }\n const message =\n err instanceof Error\n ? err.message\n : 'Unable to load Outlook integration status.';\n cachedStatus = {\n ...cachedStatus,\n loaded: true,\n error: message,\n };\n publish();\n throw err;\n })\n .finally(() => {\n if (inFlight === request) {\n inFlight = null;\n }\n });\n\n inFlight = request;\n return request;\n}\n\nexport function ensureOutlookStatusLoaded(): Promise<OutlookStatus> {\n return hasFetchedOnce ? Promise.resolve(cachedStatus) : refreshOutlookStatus();\n}\n\nfunction mapStatus(status?: OutlookIntegrationStatus): OutlookStatus {\n return {\n connected: !!status?.connected,\n mailboxPrincipal: status?.mailboxPrincipal ?? null,\n expiresAt: status?.expiresAt ?? null,\n scope: status?.scope ?? null,\n loaded: true,\n error: null,\n };\n}\n\nfunction publish(): void {\n listeners.forEach(handler => {\n try {\n handler(cachedStatus);\n } catch (err) {\n console.warn('OutlookStatus: subscriber threw an error', err);\n }\n });\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n Box,\n Divider,\n TextField,\n Typography,\n useTheme,\n} from '@material-ui/core';\nimport { OutlookLogoIcon } from '@fluentui/react-icons';\nimport { useTranslation } from 'react-i18next';\nimport { SideSheet } from '../../UI/surfaces/SideSheet';\nimport { AmbientAlert } from '../../UI/feedback/AmbientAlert';\nimport { AmbientCard } from '../../UI/surfaces/cards/AmbientCard';\nimport { FluentButton } from '../../UI/inputs/buttons/FluentButton';\nimport {\n getOutlookStatus,\n refreshOutlookStatus,\n subscribeOutlookStatus,\n} from './outlookIntegrationStatus';\nimport {\n disconnect,\n getAuthorizeUrl,\n getOutlookRedirectUri,\n sendMail,\n} from './outlookIntegrationClient';\n\nexport const OutlookIntegrationSideSheet = ({\n open,\n onClose,\n closeOnConnect = false,\n appName,\n connectDescription,\n disclaimerText,\n footerNote,\n whyConnectTitle,\n whyConnectDescription,\n whyConnectItems,\n showTestEmail = false,\n testEmailDefaults,\n testEmailCopy,\n}) => {\n const { t } = useTranslation();\n const theme = useTheme();\n\n const resolvedAppName = appName || t('outlook.appName', 'this app');\n const [status, setStatus] = useState(() => getOutlookStatus());\n const [initializing, setInitializing] = useState(!status.loaded);\n const [action, setAction] = useState(null);\n const [feedback, setFeedback] = useState(null);\n const [testTo, setTestTo] = useState(testEmailDefaults?.to ?? '');\n const [testSubject, setTestSubject] = useState('');\n const [testBody, setTestBody] = useState('');\n\n useEffect(() => {\n const unsubscribe = subscribeOutlookStatus(setStatus);\n return () => unsubscribe();\n }, []);\n\n useEffect(() => {\n if (!open) return;\n setInitializing(true);\n refreshOutlookStatus()\n .catch(err => {\n setFeedback({\n severity: 'error',\n message: extractErrorMessage(\n err,\n t('outlook.errors.status', 'Unable to load Outlook status.')\n ),\n });\n })\n .finally(() => setInitializing(false));\n }, [open, t]);\n\n useEffect(() => {\n if (!showTestEmail || !status.connected || !status.mailboxPrincipal) {\n return;\n }\n setTestTo(prev => (prev ? prev : status.mailboxPrincipal));\n }, [showTestEmail, status.connected, status.mailboxPrincipal]);\n\n useEffect(() => {\n const handler = event => {\n if (!event || !window || event.origin !== window.location.origin) {\n return;\n }\n const payload =\n typeof event.data === 'string'\n ? { type: event.data }\n : event.data || {};\n if (payload.type === 'outlookConnectSuccess') {\n refreshOutlookStatus().then(() => {\n setFeedback({\n severity: 'success',\n message: t(\n 'outlook.connectSuccess',\n 'Outlook connected successfully.'\n ),\n });\n if (closeOnConnect) {\n onClose?.();\n }\n });\n } else if (payload.type === 'outlookConnectFailure') {\n setFeedback({\n severity: 'error',\n message:\n payload.message ||\n t(\n 'outlook.connectFailed',\n 'Outlook connection failed. Please try again.'\n ),\n });\n }\n };\n window.addEventListener('message', handler);\n return () => window.removeEventListener('message', handler);\n }, [closeOnConnect, onClose, t]);\n\n const openPopup = useCallback(url => {\n if (typeof window === 'undefined') return null;\n const width = 600;\n const height = 600;\n const left = (window.screen.width - width) / 2;\n const top = (window.screen.height - height) / 2;\n const features = `width=${width},height=${height},top=${top},left=${left},status=no,toolbar=no,menubar=no,location=no`;\n return window.open(url, 'OutlookConnectPopup', features);\n }, []);\n\n const handleConnect = useCallback(async () => {\n setAction('authorize');\n try {\n const redirectUri = getOutlookRedirectUri();\n const { authorizeUrl } = await getAuthorizeUrl({ redirectUri });\n const popup = openPopup(authorizeUrl);\n if (!popup) {\n throw new Error(\n t(\n 'outlook.errors.popupBlocked',\n 'Popup blocked. Please allow popups and try again.'\n )\n );\n }\n } catch (err) {\n setFeedback({\n severity: 'error',\n message: extractErrorMessage(\n err,\n t('outlook.errors.connect', 'Unable to start the Outlook connection.')\n ),\n });\n } finally {\n setAction(null);\n }\n }, [openPopup, t]);\n\n const handleDisconnect = useCallback(async () => {\n setAction('disconnect');\n try {\n await disconnect();\n await refreshOutlookStatus();\n setFeedback({\n severity: 'success',\n message: t('outlook.disconnectSuccess', 'Outlook disconnected.'),\n });\n } catch (err) {\n setFeedback({\n severity: 'error',\n message: extractErrorMessage(\n err,\n t('outlook.errors.disconnect', 'Unable to disconnect from Outlook.')\n ),\n });\n } finally {\n setAction(null);\n }\n }, [t]);\n\n const handleSendTest = useCallback(async () => {\n const to = testTo.trim();\n if (!to) {\n setFeedback({\n severity: 'error',\n message:\n testEmailCopy?.missingRecipient ||\n t('outlook.errors.testTo', 'Please enter a recipient email.'),\n });\n return;\n }\n\n const fallbackSubject =\n testEmailDefaults?.subject ||\n t('outlook.sendTest.defaultSubject', `${resolvedAppName} test email`);\n const fallbackBody =\n testEmailDefaults?.body ||\n t(\n 'outlook.sendTest.defaultBody',\n `This is a test email sent from ${resolvedAppName} via Outlook.`\n );\n\n setAction('send-mail');\n try {\n await sendMail({\n to,\n subject: testSubject.trim() || fallbackSubject,\n body: testBody.trim() || fallbackBody,\n });\n setFeedback({\n severity: 'success',\n message:\n testEmailCopy?.success ||\n t('outlook.sendTest.success', 'Test email sent.'),\n });\n } catch (err) {\n setFeedback({\n severity: 'error',\n message: extractErrorMessage(\n err,\n testEmailCopy?.error ||\n t('outlook.errors.sendTest', 'Unable to send test email.')\n ),\n });\n } finally {\n setAction(null);\n }\n }, [\n resolvedAppName,\n t,\n testBody,\n testEmailCopy?.error,\n testEmailCopy?.missingRecipient,\n testEmailCopy?.success,\n testEmailDefaults?.body,\n testEmailDefaults?.subject,\n testSubject,\n testTo,\n ]);\n\n const expiresLabel = useMemo(\n () => formatExpiresAt(status.expiresAt),\n [status.expiresAt]\n );\n const connectionDescription = useMemo(() => {\n if (status.connected && status.mailboxPrincipal) {\n return t('outlook.status.connectedAs', 'Connected as {{mailbox}}', {\n mailbox: status.mailboxPrincipal,\n });\n }\n if (status.connected) {\n return t('outlook.status.connectedNoMailbox', 'Outlook is connected.');\n }\n return (\n connectDescription ||\n t(\n 'outlook.connectDescription',\n 'Link your account to Outlook to manage your emails directly from our app.',\n { appName: resolvedAppName }\n )\n );\n }, [connectDescription, resolvedAppName, status.connected, status.mailboxPrincipal, t]);\n\n const connectButtonLabel = useMemo(\n () =>\n status.connected\n ? t('outlook.status.connected', 'Connected')\n : t('outlook.connectCta', 'Connect To Outlook'),\n [status.connected, t]\n );\n\n const connectButtonDisabled = useMemo(\n () => status.connected || action === 'authorize',\n [status.connected, action]\n );\n\n const disconnectDisabled = useMemo(() => action === 'disconnect', [action]);\n const sendTestDisabled = useMemo(\n () => !status.connected || action === 'send-mail',\n [status.connected, action]\n );\n\n const resolvedDisclaimer =\n disclaimerText ||\n t(\n 'outlook.sidesheetDisclaimer',\n `By signing in you are giving ${resolvedAppName} access to send emails on your behalf using your Outlook Mailbox.`,\n { appName: resolvedAppName }\n );\n const resolvedWhyConnectTitle =\n whyConnectTitle ||\n t('outlook.whyConnect.title', 'Why connect to Outlook?');\n const resolvedWhyConnectDescription =\n whyConnectDescription ||\n t(\n 'outlook.whyConnect.description',\n `Certain actions within ${resolvedAppName} that require emailing will be enabled, such as:`,\n { appName: resolvedAppName }\n );\n const resolvedFooterNote =\n footerNote ||\n t(\n 'outlook.todoNotes',\n `The ${resolvedAppName} backend securely stores your Mail.Send token and updates this status automatically.`,\n { appName: resolvedAppName }\n );\n\n return (\n <SideSheet\n title={t('outlook.title', 'Outlook Integration')}\n open={open}\n onClose={onClose}\n width={560}\n >\n <AmbientAlert\n alertSeverity=\"info\"\n showAlert={true}\n alertMessage={resolvedDisclaimer}\n />\n\n {feedback && (\n <AmbientAlert\n alertSeverity={feedback.severity}\n showAlert={true}\n alertMessage={feedback.message}\n closeAlert={() => setFeedback(null)}\n />\n )}\n\n {status.error && (\n <AmbientAlert\n alertSeverity=\"warning\"\n showAlert={true}\n alertMessage={status.error}\n />\n )}\n\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"center\"\n mt={2}\n mb={2}\n textAlign=\"center\"\n >\n <OutlookLogoIcon\n style={{\n fontSize: 128,\n width: 128,\n height: 128,\n color: theme.palette.info.dark,\n }}\n />\n <Typography variant=\"h6\" gutterBottom>\n {status.connected\n ? t('outlook.status.header.connected', 'Connected to Outlook')\n : t('outlook.connectHeader', 'Connect to Outlook')}\n </Typography>\n <Typography variant=\"body2\" color=\"textSecondary\">\n {connectionDescription}\n </Typography>\n {expiresLabel && (\n <Typography variant=\"caption\" color=\"textSecondary\">\n {t('outlook.status.expiresAt', 'Token expires {{date}}', {\n date: expiresLabel,\n })}\n </Typography>\n )}\n </Box>\n\n {initializing && (\n <Box mb={2}>\n <Typography variant=\"body2\" color=\"textSecondary\">\n {t(\n 'outlook.status.loading',\n 'Checking current Outlook connection...'\n )}\n </Typography>\n </Box>\n )}\n\n <Box mb={status.connected ? 2 : 4}>\n <FluentButton\n variant=\"contained\"\n color=\"primary\"\n fullWidth\n onClick={handleConnect}\n disabled={connectButtonDisabled}\n >\n {connectButtonLabel}\n </FluentButton>\n </Box>\n\n {status.connected && (\n <>\n <FluentButton\n variant=\"outlined\"\n color=\"primary\"\n fullWidth\n onClick={handleDisconnect}\n disabled={disconnectDisabled}\n >\n {t('outlook.disconnect', 'Disconnect Outlook')}\n </FluentButton>\n\n {showTestEmail && (\n <>\n <Divider style={{ margin: '24px 0' }} />\n <Typography variant=\"subtitle1\" gutterBottom>\n {testEmailCopy?.title ||\n t('outlook.sendTest.title', 'Send a Test Email')}\n </Typography>\n <Box display=\"flex\" flexDirection=\"column\" gridGap={12} mb={2}>\n <TextField\n label={\n testEmailCopy?.toLabel || t('outlook.sendTest.to', 'To')\n }\n variant=\"outlined\"\n size=\"small\"\n fullWidth\n value={testTo}\n onChange={event => setTestTo(event.target.value)}\n />\n <TextField\n label={\n testEmailCopy?.subjectLabel ||\n t('outlook.sendTest.subject', 'Subject')\n }\n variant=\"outlined\"\n size=\"small\"\n fullWidth\n value={testSubject}\n onChange={event => setTestSubject(event.target.value)}\n />\n <TextField\n label={\n testEmailCopy?.bodyLabel ||\n t('outlook.sendTest.body', 'Body')\n }\n variant=\"outlined\"\n size=\"small\"\n multiline\n minRows={3}\n fullWidth\n value={testBody}\n onChange={event => setTestBody(event.target.value)}\n />\n </Box>\n <FluentButton\n variant=\"contained\"\n color=\"primary\"\n fullWidth\n onClick={handleSendTest}\n disabled={sendTestDisabled}\n >\n {action === 'send-mail'\n ? testEmailCopy?.sending ||\n t('outlook.sendTest.sending', 'Sending...')\n : testEmailCopy?.cta ||\n t('outlook.sendTest.cta', 'Send Test Email')}\n </FluentButton>\n </>\n )}\n\n <Divider style={{ margin: '24px 0' }} />\n </>\n )}\n\n <AmbientCard title={resolvedWhyConnectTitle} fullWidth>\n <Box ml={2}>\n <Typography variant=\"body2\">{resolvedWhyConnectDescription}</Typography>\n {Array.isArray(whyConnectItems) && whyConnectItems.length > 0 && (\n <ul>\n {whyConnectItems.map((item, index) => (\n <li key={`${index}-${String(item)}`}>\n <Typography variant=\"body2\">{item}</Typography>\n </li>\n ))}\n </ul>\n )}\n </Box>\n </AmbientCard>\n\n <Box mt={3}>\n <Typography variant=\"caption\" color=\"textSecondary\">\n {resolvedFooterNote}\n </Typography>\n </Box>\n </SideSheet>\n );\n};\n\nfunction formatExpiresAt(expiresAt) {\n if (!expiresAt) return null;\n const date = new Date(expiresAt);\n return Number.isNaN(date.getTime()) ? null : date.toLocaleString();\n}\n\nfunction extractErrorMessage(error, fallback) {\n if (!error) return fallback;\n if (typeof error === 'string') return error;\n if (typeof error.message === 'string' && error.message.trim()) {\n return error.message;\n }\n const responseMessage =\n error?.response?.data || error?.response?.statusText || error?.message;\n if (typeof responseMessage === 'string' && responseMessage.trim()) {\n return responseMessage;\n }\n return fallback;\n}\n\nexport default OutlookIntegrationSideSheet;\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { LoadingIndicator } from '../../UI/loading/LoadingIndicator';\nimport { AmbientAlert } from '../../UI/feedback/AmbientAlert';\nimport { ConfigService } from '../../configService';\nimport {\n exchangeAuthorizationCode,\n getOutlookRedirectUri,\n} from './outlookIntegrationClient';\nimport { refreshOutlookStatus } from './outlookIntegrationStatus';\n\nexport const OutlookIntegrationCallbackPage = () => {\n const location = useLocation();\n const [error, setError] = useState(null);\n const [debugLog, setDebugLog] = useState([]);\n const debugEnabled = isDebugEnabled();\n\n const { code, state, errorParam, errorDescription } = useMemo(() => {\n const params = new URLSearchParams(location.search);\n return {\n code: params.get('code'),\n state: params.get('state'),\n errorParam: params.get('error'),\n errorDescription: params.get('error_description'),\n };\n }, [location.search]);\n\n const redirectUri = useMemo(() => getOutlookRedirectUri(), []);\n\n const log = useCallback(\n message => {\n const timestamp = new Date().toISOString();\n console.debug(`[OutlookCallback] ${message}`);\n if (!debugEnabled) return;\n setDebugLog(prev => [...prev, `${timestamp} ${message}`]);\n },\n [debugEnabled]\n );\n\n const closePopup = useCallback(() => {\n if (debugEnabled) {\n log('Debug mode enabled; window will remain open for inspection.');\n return;\n }\n log('Closing Outlook popup after successful authorization.');\n closeWindowSoon();\n }, [debugEnabled, log]);\n\n useEffect(() => {\n log(`Callback page mounted with search: \"${location.search || '<empty>'}\"`);\n\n if (errorParam) {\n const message =\n errorDescription || errorParam || 'Outlook authorization failed.';\n log(`Outlook authorization returned error: ${message}`);\n setError(message);\n notifyParent('outlookConnectFailure', message);\n return;\n }\n\n if (!code || !state) {\n const message = 'Authorization details missing from Outlook redirect.';\n log('Authorization code or state missing in query string.');\n setError(message);\n notifyParent('outlookConnectFailure', message);\n return;\n }\n\n log(`Exchanging authorization code via redirect URI: ${redirectUri}`);\n exchangeAuthorizationCode({ authorizationCode: code, state, redirectUri })\n .then(() => {\n log('Authorization code exchange succeeded; refreshing Outlook status.');\n return refreshOutlookStatus();\n })\n .then(() => {\n log('Outlook status refreshed; notifying parent of success.');\n notifyParent('outlookConnectSuccess');\n closePopup();\n })\n .catch(err => {\n const message = extractErrorMessage(\n err,\n 'Failed to finalize the Outlook connection.'\n );\n log(`Outlook connect flow failed: ${message}`);\n setError(message);\n notifyParent('outlookConnectFailure', message);\n log('Leaving callback window open so the error details stay visible.');\n });\n }, [\n closePopup,\n code,\n errorDescription,\n errorParam,\n location.search,\n log,\n redirectUri,\n state,\n ]);\n\n return (\n <>\n {!error && <LoadingIndicator />}\n {error && (\n <AmbientAlert\n alertSeverity=\"error\"\n showAlert={true}\n alertMessage={error}\n />\n )}\n {debugEnabled && (\n <div\n style={{\n marginTop: 16,\n padding: '12px 14px',\n backgroundColor: '#111',\n color: '#eee',\n borderRadius: 4,\n fontFamily: 'monospace',\n fontSize: 12,\n maxHeight: '40vh',\n overflowY: 'auto',\n }}\n >\n <strong style={{ display: 'block', marginBottom: 8 }}>\n Outlook callback debug log\n </strong>\n {debugLog.length === 0 ? (\n <div>Waiting for events...</div>\n ) : (\n debugLog.map((entry, idx) => <div key={idx}>{entry}</div>)\n )}\n <div style={{ marginTop: 12 }}>\n This window will stay open in debug mode. Close it manually after\n reviewing the log.\n </div>\n </div>\n )}\n </>\n );\n};\n\nfunction notifyParent(type, message) {\n try {\n window.opener?.postMessage({ type, message }, window.location.origin);\n } catch {\n // ignore\n }\n try {\n window.opener?.postMessage(type, window.location.origin);\n } catch {\n // ignore\n }\n}\n\nfunction closeWindowSoon() {\n setTimeout(() => {\n try {\n window.close();\n } catch {\n // ignore\n }\n }, 750);\n}\n\nfunction extractErrorMessage(error, fallback) {\n if (!error) return fallback;\n if (typeof error === 'string') return error;\n if (typeof error.message === 'string' && error.message.trim()) {\n return error.message;\n }\n const responseMessage =\n error?.response?.data || error?.response?.statusText || error?.message;\n if (typeof responseMessage === 'string' && responseMessage.trim()) {\n return responseMessage;\n }\n return fallback;\n}\n\nexport default OutlookIntegrationCallbackPage;\n\nfunction isDebugEnabled() {\n const raw = ConfigService?.config?.OUTLOOK_POPUP_DEBUG;\n if (typeof raw === 'boolean') {\n return raw;\n }\n return String(raw ?? '').toLowerCase() === 'true';\n}\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { AmbientAlert } from '../../UI/feedback/AmbientAlert';\nimport { SubHeaderAction } from '../../utilities/utilityBar/SubHeaderAction';\nimport {\n getOutlookStatus,\n subscribeOutlookStatus,\n ensureOutlookStatusLoaded,\n} from './outlookIntegrationStatus';\n\n/**\n * Global warning banner shown when Outlook integration is disconnected.\n * Defaults to enabled so apps get the disconnected warning behavior out of the box.\n */\nexport const OutlookIntegrationBanner = ({\n onConfigure,\n enabled = true,\n hideOnPaths = [],\n title,\n message,\n actionLabel,\n dismissible = true,\n renderInSubHeaderAction = false,\n}) => {\n const { t } = useTranslation();\n const location = useLocation();\n\n const [status, setStatus] = useState(() => getOutlookStatus());\n const [show, setShow] = useState(true);\n\n const shouldHideForPath = useMemo(() => {\n const pathname = location?.pathname || '';\n return hideOnPaths.some(path => path && pathname.includes(path));\n }, [hideOnPaths, location?.pathname]);\n\n useEffect(() => {\n const unsub = subscribeOutlookStatus(next => {\n setStatus(next);\n // Restore banner when status updates and integration is disconnected.\n if (next.connected) {\n setShow(false);\n } else {\n setShow(true);\n }\n });\n\n ensureOutlookStatusLoaded().catch(() => {});\n return () => unsub();\n }, []);\n\n if (!enabled || shouldHideForPath || !show || !status.loaded || status.connected) {\n return null;\n }\n\n const alert = (\n <AmbientAlert\n alertTitle={title || t('outlook.banner.title', 'Outlook Integration Required')}\n alertMessage={\n status.error ||\n message ||\n t(\n 'outlook.banner.message',\n 'Setup Outlook integration to enable email functionality.'\n )\n }\n showAlert={true}\n alertSeverity={status.error ? 'error' : 'warning'}\n alertAction={typeof onConfigure === 'function'}\n alertActionButton={\n actionLabel ||\n t('outlook.banner.action', 'Setup Outlook integration')\n }\n alertHandleAction={onConfigure}\n closeAlert={dismissible ? () => setShow(false) : undefined}\n />\n );\n\n if (renderInSubHeaderAction) {\n return <SubHeaderAction>{alert}</SubHeaderAction>;\n }\n\n return alert;\n};\n\nexport default OutlookIntegrationBanner;\n","import React, { useState, useEffect, useRef } from 'react';\nimport {\n UdpFluentButton,\n UdpFluentDrawer,\n UdpFluentTablist,\n UdpTabPanel,\n UdpFluentDialog,\n UdpFluentTextInput,\n UdpFluentCheckbox,\n UdpFormComponent,\n UdpField,\n UdpFluentMenu,\n UdpCompoundButton,\n UdpIcon\n} from 'udp-react-stencil-component-library';\nimport { ClientSideUdpGrid } from '../UI/templates/newGrid';\nimport { FormApi } from 'final-form';\n\nconst checkboxMenuItems = [\n {\n id: 'c1-1',\n text: 'Checkbox 1-A',\n sectionNumber: 1,\n type: 'checkbox'\n },\n {\n id: 'c1-2',\n text: 'Checkbox 1-B',\n sectionNumber: 1,\n type: 'checkbox'\n },\n {\n id: 'c2-1',\n text: 'Checkbox 2-A',\n sectionNumber: 2,\n type: 'checkbox'\n },\n {\n id: 'c2-2',\n text: 'Checkbox 2-B',\n sectionNumber: 2,\n type: 'checkbox'\n },\n { id: 'c3', text: 'More Options' },\n {\n id: 'c3-1',\n text: 'Sub Checkbox 1',\n parentId: 'c3',\n type: 'checkbox'\n },\n {\n id: 'c3-2',\n text: 'Sub Checkbox 2',\n parentId: 'c3',\n type: 'checkbox'\n }\n];\n\n// This file is meant to import react wrapped stencil components and test them individually\n\ninterface TestFormValues {\n firstName?: string;\n email?: string;\n age?: string;\n newsletter?: boolean;\n exclamation?: string;\n}\n\nconst mustHaveExclamation = (value: unknown) => {\n // 1. Skip validation if empty (let 'required' handle empty states)\n if (!value) return undefined;\n\n // 2. Check logic\n if (typeof value === 'string' && value.includes('!')) {\n return undefined; // Valid\n }\n\n // 3. Return error message\n return 'You must include an exclamation mark (!)';\n};\n\nexport const TestStencilWrappedComponentsPage = () => {\n const [open, setOpen] = useState(false);\n const [dialogOpen, setDialogOpen] = useState(false);\n const [formDrawerOpen, setFormDrawerOpen] = useState(false);\n const [activeTab, setActiveTab] = useState('tab1');\n const [formData, setFormData] = useState<TestFormValues>({});\n const [isLoading, setIsLoading] = useState(true);\n const formInstance = useRef<FormApi | null>(null);\n\n useEffect(() => {\n // Simulate an API call taking 2 seconds\n console.log('Fetching data...');\n const timer = setTimeout(() => {\n setFormData({\n firstName: 'Async John',\n email: 'async_john@example.com',\n age: '45', // Note: Strings are safer for inputs than numbers\n newsletter: true,\n exclamation: 'Late arrival!'\n });\n setIsLoading(false);\n }, 2000);\n\n return () => clearTimeout(timer);\n }, []);\n\n const handleDrawerClose = () => {\n setOpen(false);\n };\n\n const handleDialogClose = () => {\n setDialogOpen(false);\n };\n\n const handleFormDrawerClose = () => {\n setFormDrawerOpen(false);\n };\n\n const handleFormSubmit = (values: TestFormValues) => {\n console.log('Form submitted with values:', values);\n setFormDrawerOpen(false);\n };\n\n const validateForm = (values: TestFormValues) => {\n const errors: Partial<Record<keyof TestFormValues, string>> = {};\n console.log('Validating:', values);\n return errors;\n };\n\n const handleFormReady = (e: CustomEvent<FormApi>) => {\n formInstance.current = e.detail;\n };\n\n return (\n <div\n style={{\n display: 'flex',\n flexDirection: 'column'\n }}\n >\n <UdpFluentButton onClick={() => setOpen(true)}>\n Open Sidesheet\n </UdpFluentButton>\n <UdpFluentButton onClick={() => setFormDrawerOpen(true)}>\n Open Form Drawer\n </UdpFluentButton>\n <UdpCompoundButton\n appearance='transparent'\n shape='rounded'\n size='medium'\n onClick={() => console.log('Compound Button Clicked')}\n >\n <span slot='description'>Description content</span>\n <UdpIcon iconName='add' slot='start' color='inherit'></UdpIcon>\n Compound Button\n </UdpCompoundButton>\n <UdpFluentDrawer\n open={open}\n onDrawerClose={handleDrawerClose}\n title='Drawer Title'\n >\n <ClientSideUdpGrid\n columnDefs={[\n { field: 'make' },\n { field: 'model' },\n { field: 'price' }\n ]}\n rowData={[\n { make: 'Toyota', model: 'Celica', price: 35000 },\n { make: 'Ford', model: 'Mondeo', price: 32000 },\n { make: 'Porsche', model: 'Boxster', price: 72000 }\n ]}\n />\n </UdpFluentDrawer>\n\n <UdpFluentDrawer\n open={formDrawerOpen}\n onDrawerClose={handleFormDrawerClose}\n >\n {isLoading ? (\n <div>Loading form data...</div>\n ) : (\n <UdpFormComponent\n id='user-form'\n validate={validateForm}\n onFormReady={handleFormReady}\n onSubmit={handleFormSubmit}\n initialValues={formData}\n >\n <div\n style={{ display: 'flex', gap: '1rem', flexDirection: 'column' }}\n >\n <UdpField name='firstName'>\n <UdpFluentTextInput label='First Name'></UdpFluentTextInput>\n </UdpField>\n\n <UdpField name='email'>\n <UdpFluentTextInput\n label='Email Address'\n type='email'\n autoFocus={true}\n controlSize='large'\n value='jordanatchison@univerus.com'\n ></UdpFluentTextInput>\n </UdpField>\n\n <UdpField name='age'>\n <UdpFluentTextInput label='Age' required></UdpFluentTextInput>\n </UdpField>\n\n <UdpField name='exclamation' validate={mustHaveExclamation}>\n <UdpFluentTextInput\n label='Exclamation'\n hint='exclamation mark please'\n ></UdpFluentTextInput>\n </UdpField>\n\n <UdpField name='newsletter'>\n <UdpFluentCheckbox\n disabled\n label='Subscribe to newsletter'\n hint='We will only send you emails about important updates'\n ></UdpFluentCheckbox>\n </UdpField>\n </div>\n </UdpFormComponent>\n )}\n\n <UdpFluentButton\n appearance='primary'\n slot='footer'\n onClick={() => void formInstance.current?.submit()}\n >\n Submit Form\n </UdpFluentButton>\n </UdpFluentDrawer>\n\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: '1rem',\n marginTop: '2rem'\n }}\n >\n <UdpFluentTablist\n activeId={activeTab}\n appearance='transparent'\n size='small'\n orientation='vertical'\n onTabChange={(e: CustomEvent<string>) => setActiveTab(e.detail)}\n tabList={[\n { id: 'tab1', label: 'Tab 1 (Static)' },\n { id: 'tab2', label: 'Tab 2 (Lazy)' },\n { id: 'tab3', label: 'Tab 3 (Default Lazy)' }\n ]}\n />\n <div style={{ padding: '1rem', border: '1px solid #ccc' }}>\n <UdpTabPanel id='tab1' activeTabId={activeTab}>\n <h3>Dialog Example</h3>\n <UdpFluentButton onClick={() => setDialogOpen(true)}>\n Open Dialog\n </UdpFluentButton>\n <UdpFluentDialog\n open={dialogOpen}\n title='Example Dialog'\n onDialogClose={handleDialogClose}\n >\n <UdpFluentButton slot='action' onClick={handleDialogClose}>\n Submit\n </UdpFluentButton>\n <div>This is a simple dialog example.</div>\n </UdpFluentDialog>\n <UdpFluentMenu\n items={checkboxMenuItems}\n onClick={(item: unknown) => console.log(item)}\n label='Menu'\n ></UdpFluentMenu>\n </UdpTabPanel>\n\n <UdpTabPanel id='tab2' activeTabId={activeTab}>\n <ClientSideUdpGrid\n columnDefs={[\n { field: 'make' },\n { field: 'model' },\n { field: 'price' }\n ]}\n rowData={[\n { make: 'Toyota', model: 'Celica', price: 35000 },\n { make: 'Ford', model: 'Mondeo', price: 32000 },\n { make: 'Porsche', model: 'Boxster', price: 72000 }\n ]}\n />\n </UdpTabPanel>\n\n <UdpTabPanel id='tab3' activeTabId={activeTab}>\n <h3>Tab 3 Content (Default Lazy)</h3>\n <p>This content is lazy loaded by default.</p>\n </UdpTabPanel>\n </div>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { TestComponentsPage } from 'udp-react-stencil-component-library';\n\n// This file is meant to import a full stencil page and test it\n\nexport const TestFullStencilPage = () => {\n return (\n <div>\n <TestComponentsPage />\n </div>\n );\n};\n","import React from 'react';\nimport { UdpKpiCards as StencilUdpKpiCards } from 'udp-react-stencil-component-library';\nimport { KpiCardsProps } from './type';\n\nexport const UdpKpiCards = (props: KpiCardsProps) => {\n const { children, ...otherProps } = props;\n\n return (\n <StencilUdpKpiCards {...otherProps}>\n {children}\n </StencilUdpKpiCards>\n );\n};\n","import React from 'react';\nimport { KPICardProps } from './type';\nimport { UdpKpiCard as StencilKpiCard } from 'udp-react-stencil-component-library';\n\nexport const UdpKpiCard = (props: KPICardProps) => {\n return <StencilKpiCard {...props} />;\n};\n","import React, { useState, useEffect, useMemo, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { ClientSideUdpGrid } from '../../../../../UI/templates/newGrid';\nimport {\n EmptyStateDisplay,\n LinearProgress,\n SideSheet\n} from '../../../../../UI';\nimport { FluentTextField } from '../../../../../UI/inputs/textField';\nimport { FluentButton } from '../../../../../UI/inputs/buttons';\nimport { LayoutUnit } from '../../../../../layout';\nimport { Typography } from '@material-ui/core';\nimport {\n apiMutate,\n useAxiosMutate\n} from '../../../../../utilities/useAxiosMutate';\nimport { ConfigService } from '../../../../../configService';\nimport { PDFViewer } from '../../../../../UI/fileViewer/pdfViewer';\nimport { useHandleAxiosSnackbar } from '../../../../../utilities';\nimport { ErrorIcon } from '@fluentui/react-icons';\n\nconst ALLOWED_EXTENSIONS = [\n 'pdf',\n 'jpg',\n 'jpeg',\n 'png',\n 'gif',\n 'bmp',\n 'tif',\n 'tiff'\n];\n\nexport const TransactionAttachmentPdfStitcher = (props) => {\n const {\n transactionAttachments = [],\n onDownload,\n onPreview,\n onCancel,\n stitchLoading,\n orderedRows,\n onSelectionChanged,\n onRowOrderChanged,\n stitchedFileName,\n onFileNameChange,\n fileNameError,\n tableHeight = 'calc(100vh - 700px)',\n hidePreviewButton = false,\n hideDownloadButton = false,\n defaultPreviewSideSheet = true,\n transactionTypeId,\n transactionAttachmentTypes,\n disableFileName = false,\n onActionClick,\n actionButtonLabel = '',\n disableActionButton = false\n } = props;\n const { t } = useTranslation();\n const [orderedSelection, setOrderedSelection] = useState(orderedRows || []);\n const [sourceGridApi, setSourceGridApi] = useState(null);\n const [orderGridApi, setOrderGridApi] = useState(null);\n const [previewPdfOpen, setPreviewPdfOpen] = useState(false);\n const [previewPdfLoading, setPreviewPdfLoading] = useState(false);\n const [previewPdfError, setPreviewPdfError] = useState(null);\n const [previewPdfBlob, setPreviewPdfBlob] = useState(null);\n const [downloadingPdf, setDownloadingPdf] = useState(false);\n\n const { handleErrorSnackbar } = useHandleAxiosSnackbar();\n\n const [\n { data: fetchedTransactionAttachmentTypes },\n fetchTransactionAttachmentTypes\n ] = useAxiosMutate(\n ConfigService.productV1ApiUrl,\n `UdpTransactionAttachmentType/search`,\n {\n method: 'post',\n data: {\n pageSize: 50,\n filterElements: [\n {\n searchField: 'TransactionTypeId',\n searchValue: transactionTypeId,\n searchOperator: '='\n }\n ],\n getAll: true\n }\n }\n );\n\n const resolvedTransactionAttachmentTypes =\n transactionAttachmentTypes ?? fetchedTransactionAttachmentTypes?.pageList;\n\n const executeGetStitchedPdf = useCallback(async () => {\n return await apiMutate(\n ConfigService.productV1ApiUrl,\n `UdpTransactionAttachment/stitchAttachmentsIntoPdf`,\n {\n method: 'POST',\n data: {\n fileName: stitchedFileName,\n transactionAttachments: orderedSelection\n },\n responseType: 'blob'\n }\n ).catch(async (error) => {\n let errorMessage = '';\n if (error.response && error.response.data instanceof Blob) {\n // Convert the blob back to a string\n errorMessage = await error.response.data.text();\n } else {\n errorMessage = error.message;\n }\n handleErrorSnackbar(\n error,\n t(`Failed to generate PDF ${errorMessage ? `: ${errorMessage}` : ''}`)\n );\n setPreviewPdfError(errorMessage);\n });\n }, [stitchedFileName, orderedSelection, handleErrorSnackbar, t]);\n\n const handleOnPreviewPdfClose = useCallback(() => {\n setPreviewPdfOpen(false);\n setPreviewPdfBlob(null);\n setPreviewPdfError(null);\n }, []);\n\n const handleRowOrderChanged = useCallback(\n (newOrder) => {\n if (onRowOrderChanged) {\n onRowOrderChanged(newOrder);\n }\n if (onSelectionChanged) {\n onSelectionChanged(newOrder);\n }\n setOrderedSelection(newOrder);\n },\n [onRowOrderChanged, onSelectionChanged]\n );\n\n const handleSelectionChanged = useCallback(\n (selected) => {\n setOrderedSelection((prevOrdered) => {\n const selectedIds = new Set(\n selected.map((item) => item.transactionAttachmentId || item.id)\n );\n\n // Filter previous order to keep only items that are still selected\n const nextOrdered = prevOrdered.filter((item) =>\n selectedIds.has(item.transactionAttachmentId || item.id)\n );\n\n const prevIds = new Set(\n prevOrdered.map((item) => item.transactionAttachmentId || item.id)\n );\n\n const newItems = selected.filter(\n (item) => !prevIds.has(item.transactionAttachmentId || item.id)\n );\n\n const finalSelection = [...nextOrdered, ...newItems];\n\n if (onSelectionChanged) {\n onSelectionChanged(finalSelection);\n }\n\n return finalSelection;\n });\n },\n [onSelectionChanged]\n );\n\n const filteredAttachments = useMemo(() => {\n return transactionAttachments.filter((item) => {\n const ext = item.extension\n ? item.extension.toLowerCase().replace('.', '')\n : '';\n return ALLOWED_EXTENSIONS.includes(ext);\n });\n }, [transactionAttachments]);\n\n const handleGridApiCallback = useCallback((api) => {\n setSourceGridApi(api);\n }, []);\n\n const handleOrderGridApiCallback = useCallback((api) => {\n setOrderGridApi(api);\n }, []);\n\n const getColumnDefs = useCallback(\n (type) => {\n return [\n {\n field: 'fileName',\n headerName: t('File Name'),\n tooltipField: 'fileName',\n sortable: false,\n rowDrag: type === 'select' ? false : true\n },\n ...((transactionTypeId || transactionAttachmentTypes) &&\n type === 'select'\n ? [\n {\n headerName: t('Type'),\n field: 'transactionAttachmentTypeId',\n filter: 'agSetColumnFilter',\n filterParams: {\n values: (params) => {\n const values =\n resolvedTransactionAttachmentTypes?.map(\n (taType) => taType.transactionAttachmentTypeId\n ) || [];\n params.success(values);\n },\n valueFormatter: (params) => {\n const type = resolvedTransactionAttachmentTypes?.find(\n (taType) =>\n taType.transactionAttachmentTypeId === params.value\n );\n return type ? type.name : params.value;\n }\n },\n valueFormatter: (params) => {\n const type = resolvedTransactionAttachmentTypes?.find(\n (taType) =>\n taType.transactionAttachmentTypeId ===\n params?.data?.transactionAttachmentTypeId\n );\n return type\n ? type.name\n : params?.data?.transactionAttachmentTypeId;\n }\n }\n ]\n : [])\n ];\n },\n [\n t,\n resolvedTransactionAttachmentTypes,\n transactionTypeId,\n transactionAttachmentTypes\n ]\n );\n\n const selectAttachmentsGridOptions = useMemo(\n () => ({\n rowDragManaged: true,\n animateRows: true,\n suppressMoveWhenRowDragging: false,\n getRowId: (params) =>\n params.data.transactionAttachmentId?.toString() ||\n params.data.id?.toString(),\n onSelectionChanged: (event) => {\n handleSelectionChanged(event.api.getSelectedRows());\n },\n rowSelection: {\n mode: 'multiRow'\n }\n }),\n [handleSelectionChanged]\n );\n\n const documentOrderGridOptions = useMemo(\n () => ({\n rowDragManaged: true,\n animateRows: true,\n suppressMoveWhenRowDragging: false,\n getRowId: (params) =>\n params.data.transactionAttachmentId?.toString() ||\n params.data.id?.toString(),\n onRowDragEnd: (event) => {\n const newOrder = [];\n event.api.forEachNode((node) => {\n newOrder.push(node.data);\n });\n handleRowOrderChanged(newOrder); // This now calls setOrderedSelection\n },\n onSelectionChanged: (event) => {\n handleSelectionChanged(event.api.getSelectedRows());\n },\n headerHeight: 0\n }),\n [handleRowOrderChanged, handleSelectionChanged]\n );\n\n const handleDownload = useCallback(async () => {\n setDownloadingPdf(true);\n try {\n const response = onDownload\n ? await onDownload(orderedSelection)\n : await executeGetStitchedPdf();\n\n if (response) {\n const blob = response.data;\n\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = `${\n stitchedFileName.trim().toLowerCase().endsWith('.pdf')\n ? stitchedFileName\n : `${stitchedFileName || 'merged_files'}.pdf`\n }`;\n a.click();\n URL.revokeObjectURL(url);\n }\n } finally {\n setDownloadingPdf(false);\n }\n }, [onDownload, orderedSelection, stitchedFileName, executeGetStitchedPdf]);\n\n const handlePreview = useCallback(async () => {\n // 1. Early return or simple execution if we aren't using the default UI\n if (onPreview && !defaultPreviewSideSheet) {\n return await onPreview(orderedSelection);\n }\n\n // 2. Setup UI state for the default SideSheet\n setPreviewPdfOpen(true);\n setPreviewPdfLoading(true);\n\n try {\n // 3. Determine which data source to use\n const request = onPreview\n ? onPreview(orderedSelection)\n : executeGetStitchedPdf();\n\n const response = await request;\n const blob = response?.data;\n\n if (blob instanceof Blob) {\n setPreviewPdfBlob(blob);\n }\n } finally {\n setPreviewPdfLoading(false);\n }\n }, [\n onPreview,\n orderedSelection,\n executeGetStitchedPdf,\n defaultPreviewSideSheet\n ]);\n\n useEffect(() => {\n if (!transactionAttachmentTypes && transactionTypeId) {\n fetchTransactionAttachmentTypes().catch(() => {});\n }\n }, [\n transactionAttachmentTypes,\n fetchTransactionAttachmentTypes,\n transactionTypeId\n ]);\n\n useEffect(() => {\n // Syncs the selection state of the top grid based on the orderedSelection state\n if (sourceGridApi) {\n const selectionIds = new Set(\n orderedSelection.map((item) => item.transactionAttachmentId || item.id)\n );\n sourceGridApi.forEachNode((node) => {\n const isActuallySelected = selectionIds.has(\n node.data.transactionAttachmentId || node.data.id\n );\n if (node.isSelected() !== isActuallySelected) {\n node.setSelected(isActuallySelected, false, true);\n }\n });\n }\n }, [sourceGridApi, orderedSelection]);\n\n return (\n <div style={{ height: '100%' }}>\n {(stitchLoading || downloadingPdf) && <LinearProgress />}\n <div style={{ paddingBottom: 8 }}>\n <FluentTextField\n label={t('File Name')}\n value={stitchedFileName}\n onChange={onFileNameChange}\n error={!!fileNameError}\n helperText={fileNameError}\n fullWidth\n variant='outlined'\n disabled={disableFileName}\n />\n </div>\n <Typography>{t('Select Attachments (Optional)')}</Typography>\n <LayoutUnit unit='nudge' />\n <ClientSideUdpGrid\n columnDefs={getColumnDefs('select')}\n rowData={filteredAttachments || []}\n gridOptions={selectAttachmentsGridOptions}\n gridApiCallback={handleGridApiCallback}\n gridHeight={tableHeight}\n />\n <LayoutUnit unit='nudge' />\n <Typography>{t('Document Order')}</Typography>\n <LayoutUnit unit='nudge' />\n <ClientSideUdpGrid\n columnDefs={getColumnDefs('order')}\n rowData={orderedSelection}\n gridOptions={documentOrderGridOptions}\n gridApiCallback={handleOrderGridApiCallback}\n gridHeight={tableHeight}\n />\n <div\n style={{\n display: 'flex',\n justifyContent: 'flex-start',\n paddingTop: '8px'\n }}\n >\n {hidePreviewButton ? null : (\n <FluentButton\n color='primary'\n disabled={!orderedSelection?.length}\n onClick={handlePreview}\n >\n {t('Preview')}\n </FluentButton>\n )}\n {hideDownloadButton ? null : (\n <FluentButton\n color='primary'\n disabled={!orderedSelection?.length || downloadingPdf}\n onClick={handleDownload}\n >\n {t('Download')}\n </FluentButton>\n )}\n {onActionClick && (\n <FluentButton\n color='primary'\n disabled={disableActionButton}\n onClick={onActionClick}\n >\n {t(actionButtonLabel || 'Perform Action')}\n </FluentButton>\n )}\n </div>\n\n <SideSheet\n open={previewPdfOpen}\n title={t('PDF Preview')}\n onClose={handleOnPreviewPdfClose}\n width={660}\n progress={previewPdfLoading}\n variant='indeterminate'\n color='primary'\n >\n {previewPdfError ? (\n <EmptyStateDisplay\n icon={ErrorIcon}\n primaryText={'Error loading PDF preview'}\n secondaryText={\n previewPdfError ||\n t('An error occurred while generating the PDF preview.')\n }\n />\n ) : (\n <PDFViewer\n blobPDF={previewPdfBlob}\n closePDF={handleOnPreviewPdfClose}\n onClickDownload={handleDownload}\n />\n )}\n </SideSheet>\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -34,6 +34,7 @@ export * from './enums/unitySystemEnums';
|
|
|
34
34
|
export * from './enums/paymentMethodTypeEnum';
|
|
35
35
|
export * from './enums/paymentTenderTypeEnum';
|
|
36
36
|
export * from './enums/paymentVendorFactoryEnum';
|
|
37
|
+
export * from './enums/httpStatusCodesEnums';
|
|
37
38
|
export * from './hooks/crudActions';
|
|
38
39
|
export * from './hooks/useActions';
|
|
39
40
|
export * from './hooks/useApiCatalog';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|