@oneuptime/common 14.0.2 → 14.0.5
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/Models/DatabaseModels/Alert.ts +55 -0
- package/Models/DatabaseModels/AlertFeed.ts +2 -0
- package/Models/DatabaseModels/DatabaseServer.ts +1650 -0
- package/Models/DatabaseModels/DatabaseServerEndpoint.ts +540 -0
- package/Models/DatabaseModels/DatabaseServerFeed.ts +625 -0
- package/Models/DatabaseModels/DatabaseServerLabelRule.ts +514 -0
- package/Models/DatabaseModels/DatabaseServerOwnerRule.ts +596 -0
- package/Models/DatabaseModels/DatabaseServerOwnerTeam.ts +491 -0
- package/Models/DatabaseModels/DatabaseServerOwnerUser.ts +490 -0
- package/Models/DatabaseModels/Incident.ts +55 -0
- package/Models/DatabaseModels/IncidentAlert.ts +540 -0
- package/Models/DatabaseModels/IncidentFeed.ts +2 -0
- package/Models/DatabaseModels/Index.ts +18 -0
- package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +26 -0
- package/Models/DatabaseModels/Project.ts +60 -0
- package/Models/DatabaseModels/RumApplication.ts +52 -1
- package/Models/DatabaseModels/ScheduledMaintenance.ts +55 -0
- package/Models/DatabaseModels/TelemetryException.ts +2 -0
- package/Models/DatabaseModels/UserProjectSsoConsent.ts +146 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1794800000000-AddSessionReplaySameOriginTracePropagation.ts +28 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1794900000000-AddIncidentAlert.ts +89 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1795000000000-AddDatabaseServerTables.ts +673 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1795100000000-AddUserProjectSsoConsent.ts +51 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
- package/Server/Middleware/MultipartFormData.ts +1 -1
- package/Server/Middleware/TelemetryIngest.ts +15 -8
- package/Server/Services/AlertReminderRuleService.ts +100 -24
- package/Server/Services/DatabaseServerEndpointService.ts +895 -0
- package/Server/Services/DatabaseServerFeedService.ts +128 -0
- package/Server/Services/DatabaseServerLabelRuleEngineService.ts +340 -0
- package/Server/Services/DatabaseServerLabelRuleService.ts +14 -0
- package/Server/Services/DatabaseServerOwnerRuleEngineService.ts +425 -0
- package/Server/Services/DatabaseServerOwnerRuleService.ts +14 -0
- package/Server/Services/DatabaseServerOwnerTeamService.ts +180 -0
- package/Server/Services/DatabaseServerOwnerUserService.ts +173 -0
- package/Server/Services/DatabaseServerService.ts +4546 -0
- package/Server/Services/DatabaseService.ts +14 -8
- package/Server/Services/DockerResourceService.ts +43 -2
- package/Server/Services/IncidentAlertService.ts +1811 -0
- package/Server/Services/IncidentReminderRuleService.ts +103 -23
- package/Server/Services/IncidentService.ts +210 -10
- package/Server/Services/IncidentStateTimelineService.ts +24 -0
- package/Server/Services/Index.ts +18 -0
- package/Server/Services/InventoryItemService.ts +113 -5
- package/Server/Services/IoTDeviceService.ts +145 -37
- package/Server/Services/OpenTelemetryIngestService.ts +19 -0
- package/Server/Services/PodmanResourceService.ts +43 -2
- package/Server/Services/ScheduledMaintenanceReminderRuleService.ts +107 -23
- package/Server/Services/ServiceService.ts +1 -1
- package/Server/Services/TelemetryUsageBillingService.ts +29 -2
- package/Server/Services/UserProjectSsoConsentService.ts +74 -0
- package/Server/Services/UserService.ts +14 -1
- package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +18 -0
- package/Server/Types/Database/QueryHelper.ts +30 -1
- package/Server/Utils/AI/Toolbox/ResourceTools.ts +69 -1
- package/Server/Utils/Database/AffectedResourceRelations.ts +6 -0
- package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +188 -6
- package/Server/Utils/Monitor/MonitorAlert.ts +28 -1
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +2262 -755
- package/Server/Utils/Monitor/MonitorIncident.ts +28 -1
- package/Server/Utils/Monitor/MonitorMaintenanceSuppression.ts +268 -6
- package/Server/Utils/Monitor/MonitorResource.ts +47 -11
- package/Server/Utils/Monitor/MonitorResourceContext.ts +1 -0
- package/Server/Utils/Monitor/MonitorStepResourceIdentity.ts +239 -21
- package/Server/Utils/Monitor/PerSeriesResolutionRootCause.ts +43 -0
- package/Server/Utils/Monitor/SeriesResourceLabels.ts +291 -0
- package/Server/Utils/Monitor/SeriesResourceLinker.ts +111 -12
- package/Server/Utils/Rules/RuleRun/RuleRunRegistry.ts +25 -0
- package/Server/Utils/SessionReplay/SessionReplayGateCache.ts +24 -2
- package/Server/Utils/StartServer.ts +26 -6
- package/Server/Utils/TeamMember/ProjectLeaveResourceCleanup.ts +2 -0
- package/Server/Utils/Telemetry/DatabaseEndpointDiscovery.ts +688 -0
- package/Server/Utils/Telemetry/EntityRegistry.ts +5 -1
- package/Server/Utils/Telemetry/LogExceptionExtractor.ts +18 -1
- package/Server/Utils/Telemetry/ResourceEntityFilter.ts +175 -12
- package/Server/Utils/Telemetry/ResourceFacetResolver.ts +12 -0
- package/Server/Utils/Telemetry/ServiceDependencyDiscovery.ts +606 -36
- package/Server/Utils/Telemetry/Telemetry.ts +16 -0
- package/Server/Utils/Telemetry/TelemetryEntity.ts +22 -22
- package/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.ts +16 -10
- package/Tests/App/Accounts/SignedInRedirect.test.tsx +241 -0
- package/Tests/App/AdminDashboard/AdminHeaderSmallScreens.test.tsx +221 -4
- package/Tests/App/Dashboard/AIInsightsResourcePageContext.test.ts +42 -0
- package/Tests/App/Dashboard/AffectedResourcesDisplay.test.tsx +100 -0
- package/Tests/App/Dashboard/AffectedResourcesPicker.test.tsx +86 -0
- package/Tests/App/Dashboard/AffectedResourcesPickerHiddenTypes.test.tsx +2 -0
- package/Tests/App/Dashboard/AffectedResourcesSummaryStep.test.tsx +19 -0
- package/Tests/App/Dashboard/BreadcrumbCoverage.test.tsx +14 -0
- package/Tests/App/Dashboard/BulkIncidentLinkActions.test.tsx +869 -0
- package/Tests/App/Dashboard/CephMetricTooltips.test.tsx +1777 -0
- package/Tests/App/Dashboard/CloudFleetSummary.test.ts +8 -0
- package/Tests/App/Dashboard/CloudMetricTooltips.test.tsx +887 -0
- package/Tests/App/Dashboard/ContainerHostMetricTooltips.test.tsx +1309 -0
- package/Tests/App/Dashboard/CorrelateFilterBuilder.test.tsx +26 -1
- package/Tests/App/Dashboard/DashboardAppSsoError.test.tsx +501 -0
- package/Tests/App/Dashboard/DashboardHeaderRequests.test.tsx +64 -1
- package/Tests/App/Dashboard/DashboardHeaderSmallScreens.test.tsx +178 -18
- package/Tests/App/Dashboard/DashboardMasterPageSsoRedirect.test.tsx +444 -0
- package/Tests/App/Dashboard/DashboardNavBarForeignHiddenRule.test.tsx +573 -0
- package/Tests/App/Dashboard/DatabaseChartAxes.test.tsx +431 -0
- package/Tests/App/Dashboard/DatabaseContainerDetailBadge.test.tsx +249 -0
- package/Tests/App/Dashboard/DatabaseDashboardE2EFixes.test.ts +681 -0
- package/Tests/App/Dashboard/DatabaseDocumentationMarkdown.test.ts +1801 -0
- package/Tests/App/Dashboard/DatabaseFleetSummaryRefresh.test.tsx +280 -0
- package/Tests/App/Dashboard/DatabaseFormHelpers.test.tsx +321 -0
- package/Tests/App/Dashboard/DatabaseMetricMonitorLink.test.tsx +795 -0
- package/Tests/App/Dashboard/DatabaseOverviewHeader.test.tsx +580 -0
- package/Tests/App/Dashboard/DatabaseRecommendationsEngineMetrics.test.ts +270 -0
- package/Tests/App/Dashboard/DatabaseServerComponents.test.tsx +1486 -0
- package/Tests/App/Dashboard/DatabaseServerEngineMetricsFilter.test.ts +223 -0
- package/Tests/App/Dashboard/DatabaseServerPresentation.test.ts +435 -0
- package/Tests/App/Dashboard/DatabaseServerSummary.test.ts +186 -0
- package/Tests/App/Dashboard/DatabaseServerTelemetryQueries.test.ts +1553 -0
- package/Tests/App/Dashboard/DatabaseTableTruncation.test.tsx +326 -0
- package/Tests/App/Dashboard/DatabaseTelemetryScope.test.ts +512 -0
- package/Tests/App/Dashboard/DatabaseTelemetryTabs.test.tsx +774 -0
- package/Tests/App/Dashboard/DatabaseViewLayout.test.tsx +233 -0
- package/Tests/App/Dashboard/DatabaseWorkloadBadge.test.tsx +972 -0
- package/Tests/App/Dashboard/DiscoveryReviewInventoryRefresh.test.tsx +5 -0
- package/Tests/App/Dashboard/DiscoveryReviewUnnamedHostHint.test.tsx +1061 -0
- package/Tests/App/Dashboard/DiscoveryScanLivePage.test.tsx +39 -0
- package/Tests/App/Dashboard/DockerSwarmClustersListTooltips.test.tsx +414 -0
- package/Tests/App/Dashboard/DockerSwarmMetricTooltips.test.ts +796 -0
- package/Tests/App/Dashboard/DockerSwarmOverviewTooltips.test.tsx +747 -0
- package/Tests/App/Dashboard/EventOverlayScope.test.ts +147 -0
- package/Tests/App/Dashboard/EventOverlayScopeHook.test.tsx +1 -0
- package/Tests/App/Dashboard/ExceptionMonitorEnvironmentFilter.test.tsx +38 -18
- package/Tests/App/Dashboard/HostDetailViewTooltips.test.tsx +725 -0
- package/Tests/App/Dashboard/HostListColumnTooltips.test.tsx +472 -0
- package/Tests/App/Dashboard/HostMetricTooltips.test.ts +709 -0
- package/Tests/App/Dashboard/HostOverviewTooltips.test.tsx +698 -0
- package/Tests/App/Dashboard/HostTooltipHarness.ts +124 -0
- package/Tests/App/Dashboard/HostsListTooltips.test.tsx +395 -0
- package/Tests/App/Dashboard/IncidentAlertLinkDialog.test.tsx +691 -0
- package/Tests/App/Dashboard/IncidentAlertLinkHelpers.test.ts +458 -0
- package/Tests/App/Dashboard/IncidentAlertLinkPages.test.tsx +828 -0
- package/Tests/App/Dashboard/IncidentAlertLinkSideMenus.test.tsx +231 -0
- package/Tests/App/Dashboard/IncidentCreateFromAlerts.test.tsx +689 -0
- package/Tests/App/Dashboard/IoTMetricTooltips.test.tsx +1123 -0
- package/Tests/App/Dashboard/KubernetesClusterMetricTooltips.test.ts +837 -0
- package/Tests/App/Dashboard/KubernetesClusterOverviewTooltips.test.tsx +699 -0
- package/Tests/App/Dashboard/KubernetesContainersTabTooltips.test.tsx +320 -0
- package/Tests/App/Dashboard/KubernetesCostTooltips.test.tsx +502 -0
- package/Tests/App/Dashboard/KubernetesInsightsTooltips.test.tsx +222 -0
- package/Tests/App/Dashboard/KubernetesResourceMetricTooltips.test.ts +561 -0
- package/Tests/App/Dashboard/KubernetesResourcePagesTooltips.test.tsx +1168 -0
- package/Tests/App/Dashboard/LinkIncidentAlertModal.test.tsx +154 -0
- package/Tests/App/Dashboard/LogsResourceFacetChips.test.tsx +1 -0
- package/Tests/App/Dashboard/MetricDescriptionRules.ts +170 -0
- package/Tests/App/Dashboard/MetricDescriptionsCatalog.test.ts +206 -0
- package/Tests/App/Dashboard/MetricDescriptionsConsistency.test.ts +275 -0
- package/Tests/App/Dashboard/MetricsViewerDrillDown.test.tsx +310 -0
- package/Tests/App/Dashboard/MetricsViewerEntityScopedRows.test.tsx +495 -0
- package/Tests/App/Dashboard/MonitorCreateFromMonitorBackedDevice.test.tsx +132 -1
- package/Tests/App/Dashboard/NavigationSearchKeywords.test.tsx +5 -0
- package/Tests/App/Dashboard/NetworkDeviceTooltips.test.tsx +852 -0
- package/Tests/App/Dashboard/NetworkDiagnosticsTooltips.test.tsx +556 -0
- package/Tests/App/Dashboard/NetworkMetricTooltips.test.ts +1348 -0
- package/Tests/App/Dashboard/NetworkSiteTooltips.test.tsx +679 -0
- package/Tests/App/Dashboard/ProductOrientation.test.tsx +4 -3
- package/Tests/App/Dashboard/ProxmoxMetricTooltips.test.ts +592 -0
- package/Tests/App/Dashboard/ProxmoxOverviewTooltips.test.tsx +1002 -0
- package/Tests/App/Dashboard/ProxmoxResourcePageTooltips.test.tsx +923 -0
- package/Tests/App/Dashboard/RecommendationsLoadedContext.test.tsx +349 -0
- package/Tests/App/Dashboard/ResourceArchiveSettings.test.tsx +62 -0
- package/Tests/App/Dashboard/ResourceFeedPageWiring.test.ts +8 -1
- package/Tests/App/Dashboard/ResourceFeedPagesFilterSort.test.tsx +14 -0
- package/Tests/App/Dashboard/ResourceOverviewTileTooltips.test.tsx +1066 -0
- package/Tests/App/Dashboard/RumOverviewPage.test.tsx +1195 -0
- package/Tests/App/Dashboard/ScheduledMaintenanceOverviewPage.test.tsx +2 -0
- package/Tests/App/Dashboard/ServerlessMetricTooltips.test.tsx +474 -0
- package/Tests/App/Dashboard/ServiceMapDatabaseLink.test.tsx +1085 -0
- package/Tests/App/Dashboard/ServiceMetricTooltips.test.tsx +772 -0
- package/Tests/App/Dashboard/SessionReplayAuditTable.test.tsx +56 -1
- package/Tests/App/Dashboard/TelemetryMetricsSignals.test.ts +1207 -0
- package/Tests/App/Dashboard/TelemetryResourceRetentionSettings.test.tsx +10 -0
- package/Tests/App/Dashboard/TelemetryResourceTabTooltips.test.tsx +437 -0
- package/Tests/App/Dashboard/TracesResourceFacets.test.tsx +2 -1
- package/Tests/App/Dashboard/VMwareMetricTooltips.test.ts +801 -0
- package/Tests/App/Dashboard/VMwareOverviewTooltips.test.tsx +601 -0
- package/Tests/App/Dashboard/VMwareResourcePagesTooltips.test.tsx +646 -0
- package/Tests/App/Dashboard/VMwareTooltipHarness.ts +145 -0
- package/Tests/App/StatusPage/StatusPageHeaderForeignHiddenRule.test.tsx +284 -0
- package/Tests/ClassStrings.ts +178 -0
- package/Tests/Fixtures/MobilePasskeyUser.json +1 -2
- package/Tests/ForeignHiddenRuleGuard.ts +2152 -0
- package/Tests/Models/DatabaseModels/DatabaseServerModels.test.ts +2250 -0
- package/Tests/Models/DatabaseModels/IncidentAlertModel.test.ts +554 -0
- package/Tests/Models/DatabaseModels/ResourceFeedModels.test.ts +24 -5
- package/Tests/Models/DatabaseModels/SessionReplayModels.test.ts +117 -0
- package/Tests/Models/DatabaseModels/StaticRuleCriteriaInheritance.test.ts +4 -2
- package/Tests/RenderedMarkup.ts +518 -0
- package/Tests/ResponsiveVisibility.test.ts +490 -4
- package/Tests/ResponsiveVisibility.ts +505 -52
- package/Tests/Server/Infrastructure/Postgres/AddConfigurableRuleCriteriaMigration.test.ts +3 -0
- package/Tests/Server/Infrastructure/Postgres/AddDatabaseServerTablesMigration.test.ts +541 -0
- package/Tests/Server/Infrastructure/Postgres/AddIncidentAlertMigration.test.ts +341 -0
- package/Tests/Server/Infrastructure/Postgres/AddSessionReplaySameOriginTracePropagationMigration.test.ts +247 -0
- package/Tests/Server/Infrastructure/Postgres/AddUserProjectSsoConsentMigration.test.ts +234 -0
- package/Tests/Server/Services/ContainerSnapshotUpsertPostgres.test.ts +319 -0
- package/Tests/Server/Services/CrossProjectRelationWriteGuard.test.ts +13 -0
- package/Tests/Server/Services/DatabaseServerEndpointService.test.ts +2033 -0
- package/Tests/Server/Services/DatabaseServerFeedAndOwnerServices.test.ts +529 -0
- package/Tests/Server/Services/DatabaseServerLifecycle.test.ts +3302 -0
- package/Tests/Server/Services/DatabaseServerRegistries.test.ts +603 -0
- package/Tests/Server/Services/DatabaseServerRuleEngines.test.ts +754 -0
- package/Tests/Server/Services/DatabaseServerService.test.ts +3558 -0
- package/Tests/Server/Services/DatabaseServerSqlPostgres.test.ts +2045 -0
- package/Tests/Server/Services/DatabaseServiceUpdateColumnsIfUnlockedPostgres.test.ts +362 -0
- package/Tests/Server/Services/DatabaseServiceUpdateColumnsIfUnlockedReply.test.ts +210 -0
- package/Tests/Server/Services/HookFreeWriteLengthClamp.test.ts +18 -0
- package/Tests/Server/Services/IncidentAlertPostgres.test.ts +903 -0
- package/Tests/Server/Services/IncidentAlertRegistration.test.ts +96 -0
- package/Tests/Server/Services/IncidentAlertService.test.ts +2225 -0
- package/Tests/Server/Services/IncidentAlertSloLinkSurvivesEdit.test.ts +2 -0
- package/Tests/Server/Services/IncidentAlertStateCascade.test.ts +970 -0
- package/Tests/Server/Services/IncidentCreateFromAlerts.test.ts +1284 -0
- package/Tests/Server/Services/IncomingCallPolicyEscalationRuleTarget.test.ts +225 -0
- package/Tests/Server/Services/InventoryItemDisplayName.test.ts +280 -2
- package/Tests/Server/Services/InventoryUpsertSchemaParity.test.ts +8 -2
- package/Tests/Server/Services/IoTDeviceLatestMetricsPostgres.test.ts +689 -0
- package/Tests/Server/Services/IoTDeviceService.test.ts +379 -0
- package/Tests/Server/Services/LatestMetricsValuesShape.test.ts +360 -0
- package/Tests/Server/Services/LlmModelPriceService.test.ts +402 -0
- package/Tests/Server/Services/OpenTelemetryResourceRetentionMemo.test.ts +7 -1
- package/Tests/Server/Services/OwnerRowUniqueness.test.ts +61 -9
- package/Tests/Server/Services/ReminderRuleLookupPostgres.test.ts +2250 -0
- package/Tests/Server/Services/ReminderRuleRefreshOpenSubjectsPaging.test.ts +653 -0
- package/Tests/Server/Services/ResourceUpdateLastSeenLivenessFallback.test.ts +68 -20
- package/Tests/Server/Services/StaticRuleCriteriaRuntimeCoverage.test.ts +3 -3
- package/Tests/Server/Services/TelemetryResourceFacetCounting.test.ts +9 -0
- package/Tests/Server/Services/UserProjectSsoConsentPostgres.test.ts +153 -0
- package/Tests/Server/Services/UserProjectSsoConsentService.test.ts +192 -0
- package/Tests/Server/Services/UserServiceFirstMasterAdminElection.test.ts +71 -0
- package/Tests/Server/Services/UserSignupIdTakeoverPostgres.test.ts +238 -0
- package/Tests/Server/Services/WorkspaceNotificationSummaryHelpers.test.ts +592 -0
- package/Tests/Server/Types/Billing/PayAsYouGoMeteredAuthorization.test.ts +3 -0
- package/Tests/Server/Types/Database/EventOverlayScopePostgres.test.ts +1 -0
- package/Tests/Server/Types/Database/FeedEventTypeFilterQuery.test.ts +11 -0
- package/Tests/Server/Types/Database/Permissions/InfrastructureOwnershipScope.test.ts +8 -0
- package/Tests/Server/Types/Database/QueryHelperBooleanForCriteriaBackedRule.test.ts +1094 -0
- package/Tests/Server/Utils/AI/ResourceTools.test.ts +134 -0
- package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.ts +41 -0
- package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteriaAnomalyUnits.test.ts +279 -9
- package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteriaDisplayContext.test.ts +933 -0
- package/Tests/Server/Utils/Monitor/DatabaseMaintenanceSuppression.test.ts +582 -0
- package/Tests/Server/Utils/Monitor/DatabaseServerMonitorLinking.test.ts +753 -0
- package/Tests/Server/Utils/Monitor/MonitorActionTimestamps.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/MonitorAlertCriteriaReferences.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/MonitorAlertResourceLinking.test.ts +119 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +60 -25
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorAffectedResourceEdgeCases.test.ts +1719 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorKubernetesAffectedResources.test.ts +1447 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorKubernetesRatioEmail.test.ts +352 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorPlatformMetricUnits.test.ts +717 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorPlatformRawScan.test.ts +2125 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorPlatformSeriesAffectedResources.test.ts +1288 -0
- package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/MonitorIncidentCriteriaReferences.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/MonitorIncidentMemberRoleMembership.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/MonitorIncidentResourceLinking.test.ts +88 -0
- package/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.ts +205 -0
- package/Tests/Server/Utils/Monitor/MonitorResourceContext.test.ts +62 -0
- package/Tests/Server/Utils/Monitor/MonitorResourceDatabaseMaintenance.test.ts +803 -0
- package/Tests/Server/Utils/Monitor/MonitorStepResourceIdentity.test.ts +133 -3
- package/Tests/Server/Utils/Monitor/MonitorSummaryPersistence.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/PerSeriesRecoveryResolution.test.ts +472 -1
- package/Tests/Server/Utils/Monitor/PerSeriesSecondEntityAlerting.test.ts +1 -0
- package/Tests/Server/Utils/Monitor/SeriesResourceLinker.test.ts +236 -2
- package/Tests/Server/Utils/SeriesResourceLabels.test.ts +70 -0
- package/Tests/Server/Utils/SessionReplay/SessionReplayGateCachePolicy.test.ts +103 -0
- package/Tests/Server/Utils/StartServerProtobufContentType.test.ts +54 -0
- package/Tests/Server/Utils/Telemetry/DatabaseEndpointDiscovery.test.ts +1895 -0
- package/Tests/Server/Utils/Telemetry/EntityRegistry.test.ts +7 -0
- package/Tests/Server/Utils/Telemetry/LogExceptionExtractorSeverityGate.test.ts +90 -0
- package/Tests/Server/Utils/Telemetry/ResourceEntityFilter.test.ts +570 -0
- package/Tests/Server/Utils/Telemetry/ResourceFacetResolver.test.ts +97 -2
- package/Tests/Server/Utils/Telemetry/ServiceDependencyDiscovery.test.ts +1337 -0
- package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +295 -0
- package/Tests/Types/AI/AIResourceContext.test.ts +30 -0
- package/Tests/Types/DatabaseServer/DatabaseContainerClassifier.test.ts +3644 -0
- package/Tests/Types/DatabaseServer/DatabaseContainerCommand.test.ts +340 -0
- package/Tests/Types/DatabaseServer/DatabaseContainerCommandCorpus.ts +826 -0
- package/Tests/Types/DatabaseServer/DatabaseContainerCommandPostgres.test.ts +150 -0
- package/Tests/Types/DatabaseServer/DatabaseEndpoint.test.ts +2657 -0
- package/Tests/Types/DatabaseServer/DatabaseServerDiscoverySource.test.ts +64 -0
- package/Tests/Types/DatabaseServer/DatabaseServerEntityKeys.test.ts +952 -0
- package/Tests/Types/DatabaseServer/DatabaseServerMetricCatalog.test.ts +1161 -0
- package/Tests/Types/DatabaseServer/DatabaseSystem.test.ts +1514 -0
- package/Tests/Types/DatabaseServer/DatabaseTelemetryResolver.test.ts +1558 -0
- package/Tests/Types/Monitor/CephAlertTemplates.test.ts +255 -6
- package/Tests/Types/Monitor/DatabaseAlertTemplates.test.ts +2254 -0
- package/Tests/Types/Monitor/KubernetesAlertTemplates.test.ts +298 -0
- package/Tests/Types/Monitor/KubernetesMetricCatalog.test.ts +271 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +253 -9
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCoverage.test.ts +13 -5
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +4 -2
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationUtil.test.ts +111 -2
- package/Tests/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.test.ts +61 -0
- package/Tests/Types/Monitor/SeriesContext/SeriesLabelDisplay.test.ts +114 -0
- package/Tests/Types/Monitor/Utils/KubernetesAgentEmittedMetrics.ts +181 -0
- package/Tests/Types/NetworkDevice/DiscoveredHostNamingStatus.test.ts +401 -0
- package/Tests/Types/Rum/WebVitals.test.ts +173 -0
- package/Tests/Types/Telemetry/ResourceEntityFacet.test.ts +4 -1
- package/Tests/Types/Telemetry/ResourceFacetCatalog.test.ts +24 -2
- package/Tests/UI/Components/Card.test.tsx +93 -2
- package/Tests/UI/Components/FeedOptions.test.ts +6 -0
- package/Tests/UI/Components/FeedOptionsButton.test.tsx +8 -1
- package/Tests/UI/Components/FieldLabelInfoCardTooltip.test.tsx +413 -0
- package/Tests/UI/Components/ForeignHiddenRuleResilience.test.tsx +1147 -0
- package/Tests/UI/Components/HeaderRightRail.test.tsx +41 -1
- package/Tests/UI/Components/InfoTooltip.test.tsx +242 -0
- package/Tests/UI/Components/LogsEntityNames.test.ts +16 -1
- package/Tests/UI/Components/LogsFacetSidebarHiddenFacets.test.tsx +7 -3
- package/Tests/UI/Components/ModelTable/BaseModelTableBulkDelete.test.tsx +207 -3
- package/Tests/UI/Components/ModelTable/BaseModelTableBulkDeleteVerb.test.tsx +367 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableCreateButtonTitle.test.tsx +275 -0
- package/Tests/UI/Components/ResourceFacetConfigs.test.ts +2 -1
- package/Tests/UI/Components/RuleCriteria/RuleCriteriaModelTable.test.tsx +3 -3
- package/Tests/UI/Components/SrOnlyForeignRule.test.tsx +994 -0
- package/Tests/UI/Components/StatusPage/ResourceListSelection.test.tsx +34 -1
- package/Tests/UI/Components/TableHeaderTooltip.test.tsx +662 -0
- package/Tests/UI/Components/TelemetryFacetSidebarHiddenFacets.test.tsx +4 -1
- package/Tests/UI/ForeignHiddenRuleGuard.test.ts +1951 -0
- package/Tests/UI/Rum/PrivacySummaryCard.test.tsx +166 -9
- package/Tests/UI/Rum/RecordingHealthTooltips.test.tsx +447 -0
- package/Tests/UI/Rum/ReplayCorrelationPanel.test.tsx +164 -0
- package/Tests/UI/Rum/ReplayFrameCapture.test.ts +6750 -0
- package/Tests/UI/Rum/ReplayPlayerChrome.test.tsx +19 -1
- package/Tests/UI/Rum/ReplayRail.test.tsx +723 -12
- package/Tests/UI/Rum/ReplayRailDetail.test.tsx +86 -0
- package/Tests/UI/Rum/ReplayScreenshot.test.ts +2124 -0
- package/Tests/UI/Rum/ReplayScreenshotActions.test.tsx +3288 -0
- package/Tests/UI/Rum/ReplayStage.test.tsx +62 -0
- package/Tests/UI/Rum/ReplayStageOverlays.test.tsx +983 -2
- package/Tests/UI/Rum/ReplayTabSwitcher.test.tsx +19 -1
- package/Tests/UI/Rum/SessionReplaySettingsPolicyLoading.test.tsx +149 -0
- package/Tests/UI/Rum/SessionReplaySetupGuide.test.tsx +107 -6
- package/Tests/UI/Rum/SessionReplayUsersTableTooltips.test.tsx +330 -0
- package/Tests/UI/Rum/UserFlowTooltips.test.tsx +886 -0
- package/Tests/UI/TailwindPlayCdnForeignHiddenRule.test.ts +1005 -0
- package/Tests/UI/ThemeGroupHoverReveal.test.ts +847 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +80 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +23 -0
- package/Tests/UI/Utils/ModelAPISsoRedirect.test.ts +127 -0
- package/Tests/UI/Utils/Navigation.test.ts +102 -0
- package/Tests/UI/Utils/PermissionGate.test.ts +76 -0
- package/Tests/UI/Utils/Telemetry/TelemetryEntityNames.test.ts +23 -0
- package/Tests/Utils/Incident/IncidentFromAlerts.test.ts +696 -0
- package/Tests/Utils/LabelRuleImportExport.test.ts +5 -0
- package/Tests/Utils/MetricUnitUtil.test.ts +227 -2
- package/Tests/Utils/Monitor/MetricValueFormatter.test.ts +288 -2
- package/Tests/Utils/Monitor/PlatformResourceIdentityAndUnits.test.ts +1559 -0
- package/Tests/Utils/NetworkDiscovery/DiscoveredHostNamingDiagnosis.test.ts +2546 -0
- package/Tests/Utils/NetworkDiscovery/DiscoveredHostUtil.test.ts +315 -0
- package/Tests/Utils/NetworkDiscovery/DiscoveryReverseDnsChain.test.ts +336 -1
- package/Tests/Utils/NetworkDiscovery/NetbiosNameUtil.test.ts +244 -0
- package/Tests/Utils/Rum/SessionTraceState.test.ts +239 -0
- package/Tests/Utils/ValueFormatter.test.ts +50 -0
- package/Tests/tsconfig.json +16 -0
- package/Types/AI/AIResourceContext.ts +7 -0
- package/Types/Dashboard/DashboardTemplates.ts +2 -1
- package/Types/DatabaseServer/DatabaseConnectionSpan.ts +77 -0
- package/Types/DatabaseServer/DatabaseContainerClassifier.ts +2068 -0
- package/Types/DatabaseServer/DatabaseContainerCommand.ts +801 -0
- package/Types/DatabaseServer/DatabaseEndpoint.ts +1943 -0
- package/Types/DatabaseServer/DatabaseServerDiscoverySource.ts +68 -0
- package/Types/DatabaseServer/DatabaseServerMetricCatalog.ts +966 -0
- package/Types/DatabaseServer/DatabaseSystem.ts +2124 -0
- package/Types/DatabaseServer/DatabaseTelemetryResolver.ts +555 -0
- package/Types/Email/EmailTemplateType.ts +1 -0
- package/Types/Incident/IncidentAlertLink.ts +38 -0
- package/Types/Monitor/CephAlertTemplates.ts +18 -0
- package/Types/Monitor/DatabaseAlertTemplates.ts +2020 -0
- package/Types/Monitor/KubernetesAlertTemplates.ts +64 -24
- package/Types/Monitor/KubernetesMetricCatalog.ts +118 -19
- package/Types/Monitor/MetricMonitor/MetricCriteriaContext.ts +14 -0
- package/Types/Monitor/MetricMonitor/MetricMonitorResponse.ts +93 -10
- package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +109 -8
- package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +36 -7
- package/Types/Monitor/Recommendation/MonitorRecommendationUtil.ts +43 -2
- package/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.ts +41 -6
- package/Types/Monitor/SeriesContext/SeriesLabelDisplay.ts +26 -0
- package/Types/NetworkDevice/DiscoveredHostNamingStatus.ts +147 -0
- package/Types/Permission.ts +315 -0
- package/Types/Probe/ProbeApiIngestResponse.ts +8 -0
- package/Types/Rules/RuleCriteriaFieldRegistry.ts +10 -0
- package/Types/Rules/RuleRun.ts +12 -0
- package/Types/Rum/SessionReplay.ts +25 -6
- package/Types/Rum/WebVitals.ts +52 -0
- package/Types/Telemetry/EntityType.ts +23 -0
- package/Types/Telemetry/ResourceFacetCatalog.ts +14 -0
- package/Types/Telemetry/ServiceType.ts +8 -0
- package/UI/Components/Banner/Banner.tsx +1 -1
- package/UI/Components/Card/Card.tsx +1 -1
- package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +2 -2
- package/UI/Components/Charts/Line/LineChart.tsx +7 -0
- package/UI/Components/CommandPalette/CommandPalette.tsx +1 -1
- package/UI/Components/Date/StartAndEndDate.tsx +5 -5
- package/UI/Components/Detail/FieldLabel.tsx +8 -0
- package/UI/Components/Diagram/HorizontalStepChain.tsx +1 -1
- package/UI/Components/Feed/FeedOptionsButton.tsx +1 -1
- package/UI/Components/Forms/BasicForm.tsx +1 -1
- package/UI/Components/Header/Header.tsx +1 -1
- package/UI/Components/Header/HeaderIconDropdownButton.tsx +1 -1
- package/UI/Components/HeaderAlert/HeaderAlert.tsx +1 -1
- package/UI/Components/InfoCard/InfoCard.tsx +47 -1
- package/UI/Components/LogsViewer/components/FacetValueRow.tsx +1 -1
- package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +1 -1
- package/UI/Components/Modal/ModalFooter.tsx +1 -1
- package/UI/Components/ModelDetail/CardModelDetail.tsx +2 -2
- package/UI/Components/ModelTable/BaseModelTable.tsx +99 -21
- package/UI/Components/ModelTable/Column.ts +5 -0
- package/UI/Components/Navbar/NavBar.tsx +9 -2
- package/UI/Components/Navbar/NavBarMenuModal.tsx +2 -2
- package/UI/Components/Page/Page.tsx +1 -1
- package/UI/Components/Pagination/Pagination.tsx +3 -3
- package/UI/Components/ProgressButtons/ProgressButtonItem.tsx +1 -1
- package/UI/Components/SideMenu/SideMenu.tsx +4 -1
- package/UI/Components/StatusPage/ResourceGroupNavigator.tsx +4 -2
- package/UI/Components/StatusPage/ResourceList.tsx +6 -6
- package/UI/Components/Table/TableHeader.tsx +47 -2
- package/UI/Components/Table/Types/Column.ts +7 -0
- package/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.tsx +1 -1
- package/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.tsx +1 -1
- package/UI/Components/Tooltip/InfoTooltip.tsx +78 -0
- package/UI/Components/Workflow/ColumnEditor/ModelQueryBuilder.tsx +1 -1
- package/UI/Components/Workflow/ComponentsModal.tsx +2 -2
- package/UI/Components/Workflow/StepTraceViewer.tsx +1 -1
- package/UI/Styles/Theme.css +8 -1
- package/UI/Utils/Navigation.ts +89 -42
- package/UI/Utils/PermissionGate.ts +11 -2
- package/UI/Utils/Telemetry/TelemetryEntityNames.ts +7 -0
- package/UI/Utils/TelemetryService.ts +4 -3
- package/Utils/Incident/IncidentFromAlerts.ts +516 -0
- package/Utils/LabelRuleImportExport.ts +2 -0
- package/Utils/MetricUnitUtil.ts +103 -11
- package/Utils/Monitor/MetricValueFormatter.ts +66 -13
- package/Utils/Monitor/PlatformMetricUnitUtil.ts +215 -0
- package/Utils/Monitor/PlatformResourceIdentity.ts +514 -0
- package/Utils/NetworkDiscovery/DiscoveredHostNamingDiagnosis.ts +425 -0
- package/Utils/NetworkDiscovery/DiscoveredHostUtil.ts +32 -0
- package/Utils/NetworkDiscovery/NetbiosNameUtil.ts +73 -0
- package/Utils/Rum/SessionTraceState.ts +212 -0
- package/Utils/Telemetry/DatabaseServerEntityKeys.ts +275 -0
- package/Utils/Telemetry/EntityKey.ts +176 -0
- package/Utils/ValueFormatter.ts +16 -0
- package/build/dist/Models/DatabaseModels/Alert.js +54 -0
- package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertFeed.js +2 -0
- package/build/dist/Models/DatabaseModels/AlertFeed.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DatabaseServer.js +1683 -0
- package/build/dist/Models/DatabaseModels/DatabaseServer.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerEndpoint.js +559 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerEndpoint.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerLabelRule.js +522 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerOwnerRule.js +603 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerOwnerTeam.js +506 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerOwnerUser.js +505 -0
- package/build/dist/Models/DatabaseModels/DatabaseServerOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Incident.js +54 -0
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentAlert.js +553 -0
- package/build/dist/Models/DatabaseModels/IncidentAlert.js.map +1 -0
- package/build/dist/Models/DatabaseModels/IncidentFeed.js +2 -0
- package/build/dist/Models/DatabaseModels/IncidentFeed.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +18 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +62 -0
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RumApplication.js +53 -1
- package/build/dist/Models/DatabaseModels/RumApplication.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +54 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryException.js +2 -0
- package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserProjectSsoConsent.js +162 -0
- package/build/dist/Models/DatabaseModels/UserProjectSsoConsent.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1794800000000-AddSessionReplaySameOriginTracePropagation.js +20 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1794800000000-AddSessionReplaySameOriginTracePropagation.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1794900000000-AddIncidentAlert.js +42 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1794900000000-AddIncidentAlert.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795000000000-AddDatabaseServerTables.js +240 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795000000000-AddDatabaseServerTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795100000000-AddUserProjectSsoConsent.js +26 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1795100000000-AddUserProjectSsoConsent.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/MultipartFormData.js +1 -1
- package/build/dist/Server/Middleware/TelemetryIngest.js +15 -8
- package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
- package/build/dist/Server/Services/AlertReminderRuleService.js +72 -23
- package/build/dist/Server/Services/AlertReminderRuleService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseServerEndpointService.js +694 -0
- package/build/dist/Server/Services/DatabaseServerEndpointService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerFeedService.js +110 -0
- package/build/dist/Server/Services/DatabaseServerFeedService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerLabelRuleEngineService.js +272 -0
- package/build/dist/Server/Services/DatabaseServerLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerLabelRuleService.js +13 -0
- package/build/dist/Server/Services/DatabaseServerLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerOwnerRuleEngineService.js +340 -0
- package/build/dist/Server/Services/DatabaseServerOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/DatabaseServerOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerOwnerTeamService.js +160 -0
- package/build/dist/Server/Services/DatabaseServerOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerOwnerUserService.js +153 -0
- package/build/dist/Server/Services/DatabaseServerOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseServerService.js +3272 -0
- package/build/dist/Server/Services/DatabaseServerService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseService.js +8 -4
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/DockerResourceService.js +30 -3
- package/build/dist/Server/Services/DockerResourceService.js.map +1 -1
- package/build/dist/Server/Services/IncidentAlertService.js +1370 -0
- package/build/dist/Server/Services/IncidentAlertService.js.map +1 -0
- package/build/dist/Server/Services/IncidentReminderRuleService.js +73 -23
- package/build/dist/Server/Services/IncidentReminderRuleService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +164 -12
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/IncidentStateTimelineService.js +21 -0
- package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +18 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/InventoryItemService.js +88 -5
- package/build/dist/Server/Services/InventoryItemService.js.map +1 -1
- package/build/dist/Server/Services/IoTDeviceService.js +111 -24
- package/build/dist/Server/Services/IoTDeviceService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +24 -9
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/PodmanResourceService.js +30 -3
- package/build/dist/Server/Services/PodmanResourceService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js +75 -23
- package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js.map +1 -1
- package/build/dist/Server/Services/ServiceService.js +1 -1
- package/build/dist/Server/Services/ServiceService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryUsageBillingService.js +23 -2
- package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
- package/build/dist/Server/Services/UserProjectSsoConsentService.js +79 -0
- package/build/dist/Server/Services/UserProjectSsoConsentService.js.map +1 -0
- package/build/dist/Server/Services/UserService.js +13 -1
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +18 -0
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js +26 -1
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/ResourceTools.js +46 -0
- package/build/dist/Server/Utils/AI/Toolbox/ResourceTools.js.map +1 -1
- package/build/dist/Server/Utils/Database/AffectedResourceRelations.js +6 -0
- package/build/dist/Server/Utils/Database/AffectedResourceRelations.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +134 -13
- package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +22 -6
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +1489 -524
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +22 -6
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js +196 -6
- package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +36 -9
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js +175 -17
- package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/PerSeriesResolutionRootCause.js +29 -0
- package/build/dist/Server/Utils/Monitor/PerSeriesResolutionRootCause.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +211 -0
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js +82 -10
- package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js.map +1 -1
- package/build/dist/Server/Utils/Rules/RuleRun/RuleRunRegistry.js +25 -0
- package/build/dist/Server/Utils/Rules/RuleRun/RuleRunRegistry.js.map +1 -1
- package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js +8 -0
- package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCache.js.map +1 -1
- package/build/dist/Server/Utils/StartServer.js +20 -4
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/TeamMember/ProjectLeaveResourceCleanup.js +2 -0
- package/build/dist/Server/Utils/TeamMember/ProjectLeaveResourceCleanup.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/DatabaseEndpointDiscovery.js +442 -0
- package/build/dist/Server/Utils/Telemetry/DatabaseEndpointDiscovery.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +5 -1
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/LogExceptionExtractor.js +15 -1
- package/build/dist/Server/Utils/Telemetry/LogExceptionExtractor.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.js +121 -5
- package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js +12 -0
- package/build/dist/Server/Utils/Telemetry/ResourceFacetResolver.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/ServiceDependencyDiscovery.js +438 -36
- package/build/dist/Server/Utils/Telemetry/ServiceDependencyDiscovery.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/Telemetry.js +12 -0
- package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +17 -18
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.js +16 -10
- package/build/dist/Server/Utils/Telemetry/TelemetryIngestionKeyGuard.js.map +1 -1
- package/build/dist/Types/AI/AIResourceContext.js +7 -0
- package/build/dist/Types/AI/AIResourceContext.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardTemplates.js +2 -1
- package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
- package/build/dist/Types/DatabaseServer/DatabaseConnectionSpan.js +71 -0
- package/build/dist/Types/DatabaseServer/DatabaseConnectionSpan.js.map +1 -0
- package/build/dist/Types/DatabaseServer/DatabaseContainerClassifier.js +1462 -0
- package/build/dist/Types/DatabaseServer/DatabaseContainerClassifier.js.map +1 -0
- package/build/dist/Types/DatabaseServer/DatabaseContainerCommand.js +691 -0
- package/build/dist/Types/DatabaseServer/DatabaseContainerCommand.js.map +1 -0
- package/build/dist/Types/DatabaseServer/DatabaseEndpoint.js +1407 -0
- package/build/dist/Types/DatabaseServer/DatabaseEndpoint.js.map +1 -0
- package/build/dist/Types/DatabaseServer/DatabaseServerDiscoverySource.js +60 -0
- package/build/dist/Types/DatabaseServer/DatabaseServerDiscoverySource.js.map +1 -0
- package/build/dist/Types/DatabaseServer/DatabaseServerMetricCatalog.js +804 -0
- package/build/dist/Types/DatabaseServer/DatabaseServerMetricCatalog.js.map +1 -0
- package/build/dist/Types/DatabaseServer/DatabaseSystem.js +1860 -0
- package/build/dist/Types/DatabaseServer/DatabaseSystem.js.map +1 -0
- package/build/dist/Types/DatabaseServer/DatabaseTelemetryResolver.js +406 -0
- package/build/dist/Types/DatabaseServer/DatabaseTelemetryResolver.js.map +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/Incident/IncidentAlertLink.js +34 -0
- package/build/dist/Types/Incident/IncidentAlertLink.js.map +1 -0
- package/build/dist/Types/Monitor/CephAlertTemplates.js +18 -0
- package/build/dist/Types/Monitor/CephAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/DatabaseAlertTemplates.js +1518 -0
- package/build/dist/Types/Monitor/DatabaseAlertTemplates.js.map +1 -0
- package/build/dist/Types/Monitor/KubernetesAlertTemplates.js +57 -24
- package/build/dist/Types/Monitor/KubernetesAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/KubernetesMetricCatalog.js +104 -18
- package/build/dist/Types/Monitor/KubernetesMetricCatalog.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +80 -3
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +10 -3
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js +29 -0
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.js +21 -6
- package/build/dist/Types/Monitor/Recommendation/RecommendationCriteriaBuilder.js.map +1 -1
- package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js +25 -0
- package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js.map +1 -1
- package/build/dist/Types/NetworkDevice/DiscoveredHostNamingStatus.js +136 -0
- package/build/dist/Types/NetworkDevice/DiscoveredHostNamingStatus.js.map +1 -0
- package/build/dist/Types/Permission.js +276 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js +10 -0
- package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js.map +1 -1
- package/build/dist/Types/Rules/RuleRun.js +4 -0
- package/build/dist/Types/Rules/RuleRun.js.map +1 -1
- package/build/dist/Types/Rum/WebVitals.js +25 -0
- package/build/dist/Types/Rum/WebVitals.js.map +1 -1
- package/build/dist/Types/Telemetry/EntityType.js +23 -0
- package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
- package/build/dist/Types/Telemetry/ResourceFacetCatalog.js +14 -0
- package/build/dist/Types/Telemetry/ResourceFacetCatalog.js.map +1 -1
- package/build/dist/Types/Telemetry/ServiceType.js +8 -0
- package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
- package/build/dist/UI/Components/Banner/Banner.js +1 -1
- package/build/dist/UI/Components/Banner/Banner.js.map +1 -1
- package/build/dist/UI/Components/Card/Card.js +1 -1
- package/build/dist/UI/Components/Card/Card.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +2 -2
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
- package/build/dist/UI/Components/Charts/Line/LineChart.js +1 -1
- package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
- package/build/dist/UI/Components/CommandPalette/CommandPalette.js +1 -1
- package/build/dist/UI/Components/CommandPalette/CommandPalette.js.map +1 -1
- package/build/dist/UI/Components/Date/StartAndEndDate.js +5 -5
- package/build/dist/UI/Components/Date/StartAndEndDate.js.map +1 -1
- package/build/dist/UI/Components/Detail/FieldLabel.js +2 -0
- package/build/dist/UI/Components/Detail/FieldLabel.js.map +1 -1
- package/build/dist/UI/Components/Diagram/HorizontalStepChain.js +1 -1
- package/build/dist/UI/Components/Diagram/HorizontalStepChain.js.map +1 -1
- package/build/dist/UI/Components/Feed/FeedOptionsButton.js +1 -1
- package/build/dist/UI/Components/Feed/FeedOptionsButton.js.map +1 -1
- package/build/dist/UI/Components/Forms/BasicForm.js +1 -1
- package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
- package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +1 -1
- package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
- package/build/dist/UI/Components/HeaderAlert/HeaderAlert.js +1 -1
- package/build/dist/UI/Components/HeaderAlert/HeaderAlert.js.map +1 -1
- package/build/dist/UI/Components/InfoCard/InfoCard.js +22 -1
- package/build/dist/UI/Components/InfoCard/InfoCard.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/FacetValueRow.js +1 -1
- package/build/dist/UI/Components/LogsViewer/components/FacetValueRow.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
- package/build/dist/UI/Components/Modal/ModalFooter.js +1 -1
- package/build/dist/UI/Components/Modal/ModalFooter.js.map +1 -1
- package/build/dist/UI/Components/ModelDetail/CardModelDetail.js +2 -2
- package/build/dist/UI/Components/ModelDetail/CardModelDetail.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +70 -18
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBar.js +9 -2
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +2 -2
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
- package/build/dist/UI/Components/Page/Page.js +1 -1
- package/build/dist/UI/Components/Page/Page.js.map +1 -1
- package/build/dist/UI/Components/Pagination/Pagination.js +3 -3
- package/build/dist/UI/Components/Pagination/Pagination.js.map +1 -1
- package/build/dist/UI/Components/ProgressButtons/ProgressButtonItem.js +1 -1
- package/build/dist/UI/Components/ProgressButtons/ProgressButtonItem.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenu.js +4 -1
- package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
- package/build/dist/UI/Components/StatusPage/ResourceGroupNavigator.js +3 -1
- package/build/dist/UI/Components/StatusPage/ResourceGroupNavigator.js.map +1 -1
- package/build/dist/UI/Components/StatusPage/ResourceList.js +6 -6
- package/build/dist/UI/Components/StatusPage/ResourceList.js.map +1 -1
- package/build/dist/UI/Components/Table/TableHeader.js +18 -2
- package/build/dist/UI/Components/Table/TableHeader.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.js +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.js.map +1 -1
- package/build/dist/UI/Components/Tooltip/InfoTooltip.js +28 -0
- package/build/dist/UI/Components/Tooltip/InfoTooltip.js.map +1 -0
- package/build/dist/UI/Components/Workflow/ColumnEditor/ModelQueryBuilder.js +1 -1
- package/build/dist/UI/Components/Workflow/ColumnEditor/ModelQueryBuilder.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ComponentsModal.js +2 -2
- package/build/dist/UI/Components/Workflow/ComponentsModal.js.map +1 -1
- package/build/dist/UI/Components/Workflow/StepTraceViewer.js +1 -1
- package/build/dist/UI/Components/Workflow/StepTraceViewer.js.map +1 -1
- package/build/dist/UI/Utils/Navigation.js +66 -33
- package/build/dist/UI/Utils/Navigation.js.map +1 -1
- package/build/dist/UI/Utils/PermissionGate.js +4 -2
- package/build/dist/UI/Utils/PermissionGate.js.map +1 -1
- package/build/dist/UI/Utils/Telemetry/TelemetryEntityNames.js +7 -0
- package/build/dist/UI/Utils/Telemetry/TelemetryEntityNames.js.map +1 -1
- package/build/dist/UI/Utils/TelemetryService.js +3 -2
- package/build/dist/UI/Utils/TelemetryService.js.map +1 -1
- package/build/dist/Utils/Incident/IncidentFromAlerts.js +306 -0
- package/build/dist/Utils/Incident/IncidentFromAlerts.js.map +1 -0
- package/build/dist/Utils/LabelRuleImportExport.js +2 -0
- package/build/dist/Utils/LabelRuleImportExport.js.map +1 -1
- package/build/dist/Utils/MetricUnitUtil.js +77 -13
- package/build/dist/Utils/MetricUnitUtil.js.map +1 -1
- package/build/dist/Utils/Monitor/MetricValueFormatter.js +58 -13
- package/build/dist/Utils/Monitor/MetricValueFormatter.js.map +1 -1
- package/build/dist/Utils/Monitor/PlatformMetricUnitUtil.js +161 -0
- package/build/dist/Utils/Monitor/PlatformMetricUnitUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/PlatformResourceIdentity.js +323 -0
- package/build/dist/Utils/Monitor/PlatformResourceIdentity.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/DiscoveredHostNamingDiagnosis.js +270 -0
- package/build/dist/Utils/NetworkDiscovery/DiscoveredHostNamingDiagnosis.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/DiscoveredHostUtil.js +23 -0
- package/build/dist/Utils/NetworkDiscovery/DiscoveredHostUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/NetbiosNameUtil.js +61 -0
- package/build/dist/Utils/NetworkDiscovery/NetbiosNameUtil.js.map +1 -1
- package/build/dist/Utils/Rum/SessionTraceState.js +154 -0
- package/build/dist/Utils/Rum/SessionTraceState.js.map +1 -0
- package/build/dist/Utils/Telemetry/DatabaseServerEntityKeys.js +178 -0
- package/build/dist/Utils/Telemetry/DatabaseServerEntityKeys.js.map +1 -0
- package/build/dist/Utils/Telemetry/EntityKey.js +133 -0
- package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
- package/build/dist/Utils/ValueFormatter.js +15 -0
- package/build/dist/Utils/ValueFormatter.js.map +1 -1
- package/package.json +1 -1
- package/tsconfig.tests.json +7 -5
|
@@ -105,7 +105,7 @@ const Card: FunctionComponent<ComponentProps> = (
|
|
|
105
105
|
{translatedDescription && (
|
|
106
106
|
<p
|
|
107
107
|
data-testid="card-description"
|
|
108
|
-
className="mt-1.5 text-sm text-gray-500 w-full hidden md:block leading-relaxed"
|
|
108
|
+
className="mt-1.5 text-sm text-gray-500 w-full max-md:hidden md:block leading-relaxed"
|
|
109
109
|
>
|
|
110
110
|
{translatedDescription}
|
|
111
111
|
</p>
|
|
@@ -351,7 +351,7 @@ const ChartGroup: FunctionComponent<ComponentProps> = (
|
|
|
351
351
|
{getDragToZoomHint(chart)}
|
|
352
352
|
</div>
|
|
353
353
|
{chart.description && (
|
|
354
|
-
<p className="mt-1 text-xs text-gray-500 hidden md:block">
|
|
354
|
+
<p className="mt-1 text-xs text-gray-500 max-md:hidden md:block">
|
|
355
355
|
{chart.description}
|
|
356
356
|
</p>
|
|
357
357
|
)}
|
|
@@ -413,7 +413,7 @@ const ChartGroup: FunctionComponent<ComponentProps> = (
|
|
|
413
413
|
{chart.description && (
|
|
414
414
|
<p
|
|
415
415
|
data-testid="card-description"
|
|
416
|
-
className="mt-0.5 w-full truncate text-xs text-gray-500 hidden md:block"
|
|
416
|
+
className="mt-0.5 w-full truncate text-xs text-gray-500 max-md:hidden md:block"
|
|
417
417
|
title={chart.description}
|
|
418
418
|
>
|
|
419
419
|
{chart.description}
|
|
@@ -88,6 +88,12 @@ export interface ComponentProps {
|
|
|
88
88
|
* position (index % length).
|
|
89
89
|
*/
|
|
90
90
|
colors?: Array<ChartColorValue> | undefined;
|
|
91
|
+
/*
|
|
92
|
+
* false keeps the y-axis ticks on whole numbers, for a series that counts
|
|
93
|
+
* things (connections, nodes): otherwise 0-2 ticks as 0 | 0.5 | 1 | 1.5.
|
|
94
|
+
* Unset, the axis picks decimal ticks as it always has.
|
|
95
|
+
*/
|
|
96
|
+
allowDecimals?: boolean | undefined;
|
|
91
97
|
}
|
|
92
98
|
|
|
93
99
|
export interface LineInternalProps extends ComponentProps {
|
|
@@ -221,6 +227,7 @@ const LineChartElement: FunctionComponent<LineInternalProps> = (
|
|
|
221
227
|
autoMinValue={autoMinValue}
|
|
222
228
|
{...minValueProp}
|
|
223
229
|
{...maxValueProp}
|
|
230
|
+
allowDecimals={props.allowDecimals !== false}
|
|
224
231
|
onValueChange={() => {}}
|
|
225
232
|
referenceLines={props.referenceLines}
|
|
226
233
|
formattedTimeReferenceLines={
|
|
@@ -616,7 +616,7 @@ const CommandPalettePanel: FunctionComponent<PanelProps> = (
|
|
|
616
616
|
<KeyboardShortcut
|
|
617
617
|
keys={[KeyboardKey.Mod, "K"]}
|
|
618
618
|
size={KeyboardShortcutSize.Small}
|
|
619
|
-
className="hidden flex-shrink-0 sm:inline-flex"
|
|
619
|
+
className="max-sm:hidden flex-shrink-0 sm:inline-flex"
|
|
620
620
|
/>
|
|
621
621
|
</div>
|
|
622
622
|
|
|
@@ -252,7 +252,7 @@ const StartAndEndDate: DateFilterFunction = (
|
|
|
252
252
|
);
|
|
253
253
|
}}
|
|
254
254
|
title="3 hours"
|
|
255
|
-
className="hidden md:block"
|
|
255
|
+
className="max-md:hidden md:block"
|
|
256
256
|
/>
|
|
257
257
|
)}
|
|
258
258
|
|
|
@@ -314,7 +314,7 @@ const StartAndEndDate: DateFilterFunction = (
|
|
|
314
314
|
props.onValueChanged?.(new InBetween<Date>(startDate, endDate));
|
|
315
315
|
}}
|
|
316
316
|
title="2 weeks"
|
|
317
|
-
className="hidden md:block"
|
|
317
|
+
className="max-md:hidden md:block"
|
|
318
318
|
/>
|
|
319
319
|
|
|
320
320
|
<Button
|
|
@@ -335,7 +335,7 @@ const StartAndEndDate: DateFilterFunction = (
|
|
|
335
335
|
props.onValueChanged?.(new InBetween<Date>(startDate, endDate));
|
|
336
336
|
}}
|
|
337
337
|
title="3 weeks"
|
|
338
|
-
className="hidden md:block"
|
|
338
|
+
className="max-md:hidden md:block"
|
|
339
339
|
/>
|
|
340
340
|
|
|
341
341
|
<Button
|
|
@@ -356,7 +356,7 @@ const StartAndEndDate: DateFilterFunction = (
|
|
|
356
356
|
props.onValueChanged?.(new InBetween<Date>(startDate, endDate));
|
|
357
357
|
}}
|
|
358
358
|
title="1 month"
|
|
359
|
-
className="hidden md:block"
|
|
359
|
+
className="max-md:hidden md:block"
|
|
360
360
|
/>
|
|
361
361
|
|
|
362
362
|
<Button
|
|
@@ -377,7 +377,7 @@ const StartAndEndDate: DateFilterFunction = (
|
|
|
377
377
|
props.onValueChanged?.(new InBetween<Date>(startDate, endDate));
|
|
378
378
|
}}
|
|
379
379
|
title="3 months"
|
|
380
|
-
className="hidden md:block"
|
|
380
|
+
className="max-md:hidden md:block"
|
|
381
381
|
/>
|
|
382
382
|
</div>
|
|
383
383
|
)}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Link from "../Link/Link";
|
|
2
2
|
import { DetailSideLink } from "./Field";
|
|
3
3
|
import useTranslateValue from "../../Utils/Translation";
|
|
4
|
+
import InfoTooltip from "../Tooltip/InfoTooltip";
|
|
4
5
|
import React, { FunctionComponent, ReactElement } from "react";
|
|
5
6
|
|
|
6
7
|
export enum Size {
|
|
@@ -16,6 +17,8 @@ export interface ComponentProps {
|
|
|
16
17
|
sideLink?: DetailSideLink | undefined;
|
|
17
18
|
size?: Size | undefined;
|
|
18
19
|
isCardStyle?: boolean | undefined;
|
|
20
|
+
// What the field means, shown in an (i) tooltip beside the title.
|
|
21
|
+
tooltip?: string | undefined;
|
|
19
22
|
}
|
|
20
23
|
|
|
21
24
|
const FieldLabelElement: FunctionComponent<ComponentProps> = (
|
|
@@ -40,6 +43,11 @@ const FieldLabelElement: FunctionComponent<ComponentProps> = (
|
|
|
40
43
|
>
|
|
41
44
|
<span className={`${props.alignClassName} flex items-center gap-1.5`}>
|
|
42
45
|
{translatedTitle}
|
|
46
|
+
<InfoTooltip
|
|
47
|
+
label={translatedTitle}
|
|
48
|
+
text={props.tooltip}
|
|
49
|
+
className="relative z-10 normal-case tracking-normal"
|
|
50
|
+
/>
|
|
43
51
|
<span className="w-1 h-1 rounded-full bg-gray-300"></span>
|
|
44
52
|
</span>
|
|
45
53
|
{props.sideLink && translatedSideLinkText && props.sideLink?.url && (
|
|
@@ -58,7 +58,7 @@ const HorizontalStepChain: FunctionComponent<ComponentProps> = (
|
|
|
58
58
|
{/* Arrow */}
|
|
59
59
|
<Icon
|
|
60
60
|
icon={IconProp.ChevronRight}
|
|
61
|
-
className="h-4 w-4 text-gray-300 hidden sm:block"
|
|
61
|
+
className="h-4 w-4 text-gray-300 max-sm:hidden sm:block"
|
|
62
62
|
/>
|
|
63
63
|
</React.Fragment>
|
|
64
64
|
);
|
|
@@ -448,7 +448,7 @@ const FeedOptionsButton: FunctionComponent<ComponentProps> = (
|
|
|
448
448
|
className={`h-4 w-4 ${isCustomized ? "text-indigo-500" : "text-gray-500"}`}
|
|
449
449
|
/>
|
|
450
450
|
<span
|
|
451
|
-
className="sr-only xl:not-sr-only"
|
|
451
|
+
className="max-xl:sr-only xl:not-sr-only"
|
|
452
452
|
data-testid="feed-options-label"
|
|
453
453
|
>
|
|
454
454
|
{translate(FEED_OPTIONS_TEXT.triggerLabel)}
|
|
@@ -673,7 +673,7 @@ const BasicForm: ForwardRefExoticComponent<any> = forwardRef(
|
|
|
673
673
|
{formSteps && currentFormStepId && (
|
|
674
674
|
<div
|
|
675
675
|
style={{ flex: "0 1 auto" }}
|
|
676
|
-
className="mr-10 hidden lg:block"
|
|
676
|
+
className="mr-10 max-lg:hidden lg:block"
|
|
677
677
|
>
|
|
678
678
|
{/* Form Steps */}
|
|
679
679
|
|
|
@@ -5,7 +5,7 @@ export interface ComponentProps {
|
|
|
5
5
|
/*
|
|
6
6
|
* The right-hand rail. Rendered at every viewport width — see the note on the
|
|
7
7
|
* container below. An entry that only earns its space on a wide screen
|
|
8
|
-
* carries its own breakpoint classes (`hidden lg:flex`) at the call site.
|
|
8
|
+
* carries its own breakpoint classes (`max-lg:hidden lg:flex`) at the call site.
|
|
9
9
|
*/
|
|
10
10
|
rightComponents?: undefined | Array<ReactElement> | ReactElement;
|
|
11
11
|
centerComponents?: undefined | Array<ReactElement> | ReactElement;
|
|
@@ -128,7 +128,7 @@ const HeaderIconDropdownButton: FunctionComponent<ComponentProps> = (
|
|
|
128
128
|
keys={props.shortcut!}
|
|
129
129
|
size={KeyboardShortcutSize.ExtraSmall}
|
|
130
130
|
variant={KeyboardShortcutVariant.Ghost}
|
|
131
|
-
className="ml-0.5 hidden sm:inline-flex"
|
|
131
|
+
className="ml-0.5 max-sm:hidden sm:inline-flex"
|
|
132
132
|
/>
|
|
133
133
|
)}
|
|
134
134
|
</button>
|
|
@@ -88,7 +88,7 @@ const HeaderAlert: (props: ComponentProps) => ReactElement = (
|
|
|
88
88
|
</span>
|
|
89
89
|
{props.suffix && (
|
|
90
90
|
<span
|
|
91
|
-
className={`${textColor} text-sm font-medium opacity-80 hidden md:block`}
|
|
91
|
+
className={`${textColor} text-sm font-medium opacity-80 max-md:hidden md:block`}
|
|
92
92
|
>
|
|
93
93
|
{props.suffix}
|
|
94
94
|
</span>
|
|
@@ -20,6 +20,8 @@ export interface ComponentProps {
|
|
|
20
20
|
isSelected?: boolean | undefined;
|
|
21
21
|
// Announced in place of the title when the card is clickable.
|
|
22
22
|
ariaLabel?: string | undefined;
|
|
23
|
+
// What the value means, shown in an (i) tooltip beside the title.
|
|
24
|
+
tooltip?: string | undefined;
|
|
23
25
|
}
|
|
24
26
|
|
|
25
27
|
const InfoCard: FunctionComponent<ComponentProps> = (
|
|
@@ -37,6 +39,50 @@ const InfoCard: FunctionComponent<ComponentProps> = (
|
|
|
37
39
|
? "border-indigo-500 ring-1 ring-indigo-500"
|
|
38
40
|
: "border-gray-200";
|
|
39
41
|
|
|
42
|
+
/*
|
|
43
|
+
* A clickable card with a tooltip cannot stay a role="button" div: the (i)
|
|
44
|
+
* is a button of its own, and a button's children are presentational, so
|
|
45
|
+
* screen readers would never reach it. The card becomes a plain container
|
|
46
|
+
* with a real button laid over it, and the (i) sits above that button
|
|
47
|
+
* (FieldLabel lifts it with relative z-10). Cards without a tooltip keep
|
|
48
|
+
* the markup below, unchanged.
|
|
49
|
+
*/
|
|
50
|
+
if (isClickable && props.tooltip?.trim()) {
|
|
51
|
+
return (
|
|
52
|
+
<div
|
|
53
|
+
className={`relative rounded-xl bg-white border ${borderClassName} shadow-sm hover:shadow-md transition-shadow duration-200 p-5 ${props.className || ""}`}
|
|
54
|
+
>
|
|
55
|
+
<button
|
|
56
|
+
type="button"
|
|
57
|
+
onClick={props.onClick}
|
|
58
|
+
aria-pressed={
|
|
59
|
+
props.isSelected !== undefined
|
|
60
|
+
? Boolean(props.isSelected)
|
|
61
|
+
: undefined
|
|
62
|
+
}
|
|
63
|
+
/*
|
|
64
|
+
* Named like the old role="button" card, which read its title and
|
|
65
|
+
* value - unless the value is an element, which has no text to
|
|
66
|
+
* borrow here.
|
|
67
|
+
*/
|
|
68
|
+
aria-label={
|
|
69
|
+
props.ariaLabel ||
|
|
70
|
+
(typeof props.value === "string"
|
|
71
|
+
? `${props.title} ${props.value}`
|
|
72
|
+
: props.title)
|
|
73
|
+
}
|
|
74
|
+
className="absolute inset-0 rounded-xl cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500 focus-visible:ring-offset-2"
|
|
75
|
+
/>
|
|
76
|
+
<div className="mb-2">
|
|
77
|
+
<FieldLabelElement title={props.title} tooltip={props.tooltip} />
|
|
78
|
+
</div>
|
|
79
|
+
<div className={props.textClassName || "text-gray-900"}>
|
|
80
|
+
{props.value}
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
|
|
40
86
|
return (
|
|
41
87
|
<div
|
|
42
88
|
onClick={props.onClick}
|
|
@@ -75,7 +121,7 @@ const InfoCard: FunctionComponent<ComponentProps> = (
|
|
|
75
121
|
className={`rounded-xl bg-white border ${borderClassName} shadow-sm hover:shadow-md transition-shadow duration-200 p-5 ${isClickable ? "cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500 focus-visible:ring-offset-2" : ""} ${props.className || ""}`}
|
|
76
122
|
>
|
|
77
123
|
<div className="mb-2">
|
|
78
|
-
<FieldLabelElement title={props.title} />
|
|
124
|
+
<FieldLabelElement title={props.title} tooltip={props.tooltip} />
|
|
79
125
|
</div>
|
|
80
126
|
<div className={props.textClassName || "text-gray-900"}>
|
|
81
127
|
{props.value}
|
|
@@ -100,7 +100,7 @@ const FacetValueRow: FunctionComponent<FacetValueRowProps> = (
|
|
|
100
100
|
|
|
101
101
|
<button
|
|
102
102
|
type="button"
|
|
103
|
-
className="
|
|
103
|
+
className="flex h-5 w-5 items-center justify-center rounded text-[10px] text-gray-400 transition-colors hover:bg-red-50 hover:text-red-500 group-[:not(:hover)]:hidden"
|
|
104
104
|
onClick={(e: React.MouseEvent) => {
|
|
105
105
|
e.stopPropagation();
|
|
106
106
|
props.onExclude(props.value);
|
|
@@ -361,7 +361,7 @@ const LogsFacetSidebar: FunctionComponent<LogsFacetSidebarProps> = (
|
|
|
361
361
|
<div
|
|
362
362
|
id={props.id}
|
|
363
363
|
className={`${
|
|
364
|
-
props.isCollapsedOnSmallScreens ? "hidden md:flex" : "flex"
|
|
364
|
+
props.isCollapsedOnSmallScreens ? "max-md:hidden md:flex" : "flex"
|
|
365
365
|
} max-h-80 w-full flex-none flex-col overflow-y-auto rounded-lg border border-gray-200 bg-white md:h-full md:max-h-none md:w-56`}
|
|
366
366
|
>
|
|
367
367
|
<div className="border-b border-gray-100 px-3 py-2.5">
|
|
@@ -37,7 +37,7 @@ const ModalFooter: FunctionComponent<ComponentProps> = (
|
|
|
37
37
|
{props.leftFooterElement}
|
|
38
38
|
</div>
|
|
39
39
|
) : (
|
|
40
|
-
<div className="hidden sm:block" />
|
|
40
|
+
<div className="max-sm:hidden sm:block" />
|
|
41
41
|
)}
|
|
42
42
|
<div className="flex w-full flex-col gap-2 sm:w-auto sm:flex-row sm:items-center">
|
|
43
43
|
{props.onClose ? (
|
|
@@ -97,7 +97,7 @@ const CardModelDetail: <TBaseModel extends BaseModel>(
|
|
|
97
97
|
title: "View Documentation",
|
|
98
98
|
icon: IconProp.Book,
|
|
99
99
|
buttonStyle: ButtonStyleType.OUTLINE,
|
|
100
|
-
className: "hidden md:flex",
|
|
100
|
+
className: "max-md:hidden md:flex",
|
|
101
101
|
onClick: () => {
|
|
102
102
|
Navigation.navigate(props.documentationLink!, {
|
|
103
103
|
openInNewTab: true,
|
|
@@ -112,7 +112,7 @@ const CardModelDetail: <TBaseModel extends BaseModel>(
|
|
|
112
112
|
title: "Watch Demo",
|
|
113
113
|
icon: IconProp.Play,
|
|
114
114
|
buttonStyle: ButtonStyleType.OUTLINE,
|
|
115
|
-
className: "hidden md:flex",
|
|
115
|
+
className: "max-md:hidden md:flex",
|
|
116
116
|
onClick: () => {
|
|
117
117
|
Navigation.navigate(props.videoLink!, {
|
|
118
118
|
openInNewTab: true,
|
|
@@ -208,6 +208,19 @@ export interface BulkActionProps<T extends BaseModel | AnalyticsBaseModel> {
|
|
|
208
208
|
* cannot be undone - it cannot know what else goes with it.
|
|
209
209
|
*/
|
|
210
210
|
deleteConfirmationWarning?: string | undefined;
|
|
211
|
+
/**
|
|
212
|
+
* The word the default bulk Delete uses instead of "Delete", for a table
|
|
213
|
+
* whose rows are relationships rather than things - "Unlink" on a table of
|
|
214
|
+
* links, say. When set, the menu item, the confirmation's title and its
|
|
215
|
+
* sentence all use it ("Unlink 3 Alerts", "Are you sure you want to unlink
|
|
216
|
+
* 3 alerts?"), and the sentence no longer claims the action cannot be
|
|
217
|
+
* undone: removing a relationship is undone by adding it again. It is still
|
|
218
|
+
* the table's delete action - it deletes the selected rows, is gated on the
|
|
219
|
+
* model's delete permission, and stops a second Delete being added.
|
|
220
|
+
*/
|
|
221
|
+
deleteVerb?: string | undefined;
|
|
222
|
+
/* The menu icon to go with deleteVerb. Defaults to the trash can. */
|
|
223
|
+
deleteIcon?: IconProp | undefined;
|
|
211
224
|
}
|
|
212
225
|
|
|
213
226
|
/**
|
|
@@ -562,6 +575,29 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
562
575
|
|
|
563
576
|
const model: TBaseModel = new props.modelType();
|
|
564
577
|
|
|
578
|
+
/*
|
|
579
|
+
* The header's create button, "<verb> <noun>". Translating the two words
|
|
580
|
+
* separately reads the verb out of context - "Link" comes back as the noun
|
|
581
|
+
* in many languages, and word order differs - so the whole phrase is looked
|
|
582
|
+
* up first ("Link Alert") and the word-by-word join is only the fallback
|
|
583
|
+
* for a phrase with no entry of its own. In English both are the same.
|
|
584
|
+
*/
|
|
585
|
+
const getCreateButtonTitle: () => string = (): string => {
|
|
586
|
+
const verb: string = props.createVerb || "Create";
|
|
587
|
+
const noun: string = props.singularName || model.singularName || "";
|
|
588
|
+
|
|
589
|
+
if (noun) {
|
|
590
|
+
const phrase: string = `${verb} ${noun}`;
|
|
591
|
+
const translatedPhrase: string = tx(phrase);
|
|
592
|
+
|
|
593
|
+
if (translatedPhrase && translatedPhrase !== phrase) {
|
|
594
|
+
return translatedPhrase;
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
return `${tx(verb)} ${tx(noun)}`;
|
|
599
|
+
};
|
|
600
|
+
|
|
565
601
|
/*
|
|
566
602
|
* How a create / update / delete affordance should be rendered for this
|
|
567
603
|
* viewer. A user without the permission used to simply not see the button,
|
|
@@ -586,8 +622,18 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
586
622
|
const getActionGate: GetActionGateFunction = (
|
|
587
623
|
action: ModelAction,
|
|
588
624
|
): ActionGate => {
|
|
625
|
+
/*
|
|
626
|
+
* A table that calls its delete "Unlink" must not say the locked button
|
|
627
|
+
* would delete the row's noun ("permission to delete this Alert"). Keyed
|
|
628
|
+
* on deleteVerb alone: deleteButtonText is also set by tables such as
|
|
629
|
+
* "Remove from Project", which keep the default "delete" sentence.
|
|
630
|
+
*/
|
|
589
631
|
const result: PermissionGateResult = PermissionGate.check(model, action, {
|
|
590
632
|
singularName: props.singularName || model.singularName || undefined,
|
|
633
|
+
verb:
|
|
634
|
+
action === ModelAction.Delete
|
|
635
|
+
? props.bulkActions?.deleteVerb?.trim() || undefined
|
|
636
|
+
: undefined,
|
|
591
637
|
});
|
|
592
638
|
|
|
593
639
|
if (result.isAllowed) {
|
|
@@ -2387,7 +2433,7 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
2387
2433
|
icon: IconProp.Book,
|
|
2388
2434
|
buttonStyle: ButtonStyleType.HOVER_PRIMARY_OUTLINE,
|
|
2389
2435
|
buttonSize: ButtonSize.Small,
|
|
2390
|
-
className: "hidden md:flex",
|
|
2436
|
+
className: "max-md:hidden md:flex",
|
|
2391
2437
|
onClick: () => {
|
|
2392
2438
|
Navigation.navigate(props.documentationLink!, {
|
|
2393
2439
|
openInNewTab: true,
|
|
@@ -2417,7 +2463,7 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
2417
2463
|
icon: IconProp.Play,
|
|
2418
2464
|
buttonStyle: ButtonStyleType.HOVER_PRIMARY_OUTLINE,
|
|
2419
2465
|
buttonSize: ButtonSize.Small,
|
|
2420
|
-
className: "hidden md:flex",
|
|
2466
|
+
className: "max-md:hidden md:flex",
|
|
2421
2467
|
onClick: () => {
|
|
2422
2468
|
Navigation.navigate(props.videoLink!, {
|
|
2423
2469
|
openInNewTab: true,
|
|
@@ -2446,9 +2492,7 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
2446
2492
|
showAs !== ShowAs.OrderedStatesList
|
|
2447
2493
|
) {
|
|
2448
2494
|
headerbuttons.push({
|
|
2449
|
-
title:
|
|
2450
|
-
props.singularName || model.singularName || "",
|
|
2451
|
-
)}`,
|
|
2495
|
+
title: getCreateButtonTitle(),
|
|
2452
2496
|
buttonStyle: ButtonStyleType.NORMAL,
|
|
2453
2497
|
buttonSize: ButtonSize.Normal,
|
|
2454
2498
|
className: "",
|
|
@@ -2908,10 +2952,16 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
2908
2952
|
|
|
2909
2953
|
const deleteGate: ActionGate = getActionGate(ModelAction.Delete);
|
|
2910
2954
|
|
|
2955
|
+
/* The row action wears the same icon as the bulk one it stands for. */
|
|
2956
|
+
const rowDeleteIcon: IconProp =
|
|
2957
|
+
(props.bulkActions?.deleteVerb?.trim() &&
|
|
2958
|
+
props.bulkActions?.deleteIcon) ||
|
|
2959
|
+
IconProp.Trash;
|
|
2960
|
+
|
|
2911
2961
|
if (props.isDeleteable && deleteGate.show) {
|
|
2912
2962
|
actionsSchema.push({
|
|
2913
2963
|
title: tx(props.deleteButtonText || "Delete"),
|
|
2914
|
-
icon:
|
|
2964
|
+
icon: rowDeleteIcon,
|
|
2915
2965
|
buttonStyleType: ButtonStyleType.DANGER_OUTLINE,
|
|
2916
2966
|
disabled: deleteGate.disabled,
|
|
2917
2967
|
tooltip: deleteGate.tooltip,
|
|
@@ -3008,28 +3058,43 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
3008
3058
|
|
|
3009
3059
|
const getDeleteBulkAction: GetDeleteBulkActionFunction =
|
|
3010
3060
|
(): BulkActionButtonSchema<TBaseModel> => {
|
|
3061
|
+
/*
|
|
3062
|
+
* A table that names its own verb ("Unlink") removes relationships, not
|
|
3063
|
+
* things, so its sentence drops "This action cannot be undone" - that
|
|
3064
|
+
* would say the opposite of the warning it usually appends.
|
|
3065
|
+
*/
|
|
3066
|
+
const deleteVerb: string | undefined =
|
|
3067
|
+
props.bulkActions?.deleteVerb?.trim() || undefined;
|
|
3068
|
+
|
|
3069
|
+
type GetItemLabelFunction = (items: Array<TBaseModel>) => string;
|
|
3070
|
+
|
|
3071
|
+
const getItemLabel: GetItemLabelFunction = (
|
|
3072
|
+
items: Array<TBaseModel>,
|
|
3073
|
+
): string => {
|
|
3074
|
+
return items.length === 1
|
|
3075
|
+
? props.singularName || model.singularName || "item"
|
|
3076
|
+
: props.pluralName || model.pluralName || "items";
|
|
3077
|
+
};
|
|
3078
|
+
|
|
3011
3079
|
return {
|
|
3012
|
-
title: "Delete",
|
|
3080
|
+
title: deleteVerb || "Delete",
|
|
3013
3081
|
buttonStyleType: ButtonStyleType.DANGER,
|
|
3014
|
-
icon: IconProp.Trash,
|
|
3082
|
+
icon: (deleteVerb && props.bulkActions?.deleteIcon) || IconProp.Trash,
|
|
3015
3083
|
confirmMessage: (items: Array<TBaseModel>) => {
|
|
3016
|
-
const itemLabel: string =
|
|
3017
|
-
items.length === 1
|
|
3018
|
-
? props.singularName || model.singularName || "item"
|
|
3019
|
-
: props.pluralName || model.pluralName || "items";
|
|
3084
|
+
const itemLabel: string = getItemLabel(items);
|
|
3020
3085
|
|
|
3021
3086
|
const warning: string = props.bulkActions?.deleteConfirmationWarning
|
|
3022
3087
|
? ` ${props.bulkActions.deleteConfirmationWarning}`
|
|
3023
3088
|
: "";
|
|
3024
3089
|
|
|
3090
|
+
if (deleteVerb) {
|
|
3091
|
+
return `Are you sure you want to ${deleteVerb.toLowerCase()} ${items.length} ${itemLabel.toLowerCase()}?${warning}`;
|
|
3092
|
+
}
|
|
3093
|
+
|
|
3025
3094
|
return `Are you sure you want to delete ${items.length} ${itemLabel}? This action cannot be undone.${warning}`;
|
|
3026
3095
|
},
|
|
3027
3096
|
confirmTitle: (items: Array<TBaseModel>) => {
|
|
3028
|
-
|
|
3029
|
-
items.length === 1
|
|
3030
|
-
? props.singularName || model.singularName || "item"
|
|
3031
|
-
: props.pluralName || model.pluralName || "items";
|
|
3032
|
-
return `Delete ${items.length} ${itemLabel}`;
|
|
3097
|
+
return `${deleteVerb || "Delete"} ${items.length} ${getItemLabel(items)}`;
|
|
3033
3098
|
},
|
|
3034
3099
|
confirmButtonStyleType: ButtonStyleType.DANGER,
|
|
3035
3100
|
onClick: async ({
|
|
@@ -3207,7 +3272,19 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
3207
3272
|
* Table derives the row checkboxes from this array being non-empty,
|
|
3208
3273
|
* so injecting a locked Delete into an otherwise empty array would
|
|
3209
3274
|
* grow a selection column onto tables that have never had one.
|
|
3275
|
+
*
|
|
3276
|
+
* A page's own button counts as the delete action when it carries
|
|
3277
|
+
* the title the default one would have: "Delete", or the table's
|
|
3278
|
+
* deleteVerb.
|
|
3210
3279
|
*/
|
|
3280
|
+
const deleteActionTitles: Array<string> = ["Delete"];
|
|
3281
|
+
const bulkDeleteVerb: string | undefined =
|
|
3282
|
+
props.bulkActions?.deleteVerb?.trim() || undefined;
|
|
3283
|
+
|
|
3284
|
+
if (bulkDeleteVerb) {
|
|
3285
|
+
deleteActionTitles.push(bulkDeleteVerb);
|
|
3286
|
+
}
|
|
3287
|
+
|
|
3211
3288
|
const alreadyHasDeleteAction: boolean = sourceButtons.some(
|
|
3212
3289
|
(
|
|
3213
3290
|
action:
|
|
@@ -3221,8 +3298,9 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
3221
3298
|
typeof action === "object" &&
|
|
3222
3299
|
action !== null &&
|
|
3223
3300
|
"title" in action &&
|
|
3224
|
-
(
|
|
3225
|
-
|
|
3301
|
+
deleteActionTitles.includes(
|
|
3302
|
+
(action as BulkActionButtonSchema<TBaseModel>).title,
|
|
3303
|
+
)
|
|
3226
3304
|
) {
|
|
3227
3305
|
return true;
|
|
3228
3306
|
}
|
|
@@ -3989,7 +4067,7 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
3989
4067
|
</button>
|
|
3990
4068
|
) : (
|
|
3991
4069
|
<kbd
|
|
3992
|
-
className="hidden flex-none select-none items-center rounded border border-gray-200 bg-gray-50 px-1.5 py-0.5 font-mono text-[10px] font-medium text-gray-500 sm:inline-flex"
|
|
4070
|
+
className="max-sm:hidden flex-none select-none items-center rounded border border-gray-200 bg-gray-50 px-1.5 py-0.5 font-mono text-[10px] font-medium text-gray-500 sm:inline-flex"
|
|
3993
4071
|
title="Press / to focus search"
|
|
3994
4072
|
>
|
|
3995
4073
|
/
|
|
@@ -4338,7 +4416,7 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
4338
4416
|
<span className="flex-1 truncate text-left text-gray-400">
|
|
4339
4417
|
Search…
|
|
4340
4418
|
</span>
|
|
4341
|
-
<kbd className="hidden flex-none select-none items-center rounded border border-gray-200 bg-gray-50 px-1.5 py-0.5 font-mono text-[10px] font-medium text-gray-500 sm:inline-flex">
|
|
4419
|
+
<kbd className="max-sm:hidden flex-none select-none items-center rounded border border-gray-200 bg-gray-50 px-1.5 py-0.5 font-mono text-[10px] font-medium text-gray-500 sm:inline-flex">
|
|
4342
4420
|
/
|
|
4343
4421
|
</kbd>
|
|
4344
4422
|
</button>
|
|
@@ -63,6 +63,11 @@ export default interface Columns<
|
|
|
63
63
|
colSpan?: number | undefined;
|
|
64
64
|
disableSort?: boolean;
|
|
65
65
|
description?: string | undefined;
|
|
66
|
+
/*
|
|
67
|
+
* What the column's values mean, in an (i) beside the header (see the
|
|
68
|
+
* Table Column of the same name). Spread through to the table as is.
|
|
69
|
+
*/
|
|
70
|
+
headerTooltip?: string | undefined;
|
|
66
71
|
type: FieldType;
|
|
67
72
|
tooltipText?: ((item: TEntity) => string) | undefined;
|
|
68
73
|
actionButtons?: Array<ActionButton>;
|
|
@@ -392,10 +392,17 @@ const Navbar: FunctionComponent<ComponentProps> = (
|
|
|
392
392
|
);
|
|
393
393
|
}
|
|
394
394
|
|
|
395
|
-
|
|
395
|
+
/*
|
|
396
|
+
* Desktop view. `max-md:hidden md:flex`, never `hidden md:flex`: the bare
|
|
397
|
+
* `hidden` class is the one name a browser extension, a user stylesheet or
|
|
398
|
+
* an injected Bootstrap 3 / HTML5 Boilerplate sheet declares as
|
|
399
|
+
* `.hidden { display: none !important }`, and that rule beats `md:flex` at
|
|
400
|
+
* every width. A customer lost the whole navigation bar — and with it every
|
|
401
|
+
* product — to exactly that. The max-width form never carries the class.
|
|
402
|
+
*/
|
|
396
403
|
const className: string =
|
|
397
404
|
props.className ||
|
|
398
|
-
"bg-white flex text-center items-center lg:py-2 hidden md:flex";
|
|
405
|
+
"bg-white flex text-center items-center lg:py-2 max-md:hidden md:flex";
|
|
399
406
|
|
|
400
407
|
// Find active item in more menu items (needed for breadcrumb)
|
|
401
408
|
const activeMoreItem: MoreMenuItem | undefined = props.moreMenuItems?.find(
|
|
@@ -516,7 +516,7 @@ const NavBarMenuModal: FunctionComponent<ComponentProps> = (
|
|
|
516
516
|
<KeyboardShortcut
|
|
517
517
|
keys={[KeyboardKey.Mod, "K"]}
|
|
518
518
|
size={KeyboardShortcutSize.Small}
|
|
519
|
-
className="hidden sm:inline-flex"
|
|
519
|
+
className="max-sm:hidden sm:inline-flex"
|
|
520
520
|
/>
|
|
521
521
|
) : null}
|
|
522
522
|
</div>
|
|
@@ -661,7 +661,7 @@ const NavBarMenuModal: FunctionComponent<ComponentProps> = (
|
|
|
661
661
|
{props.keyboardHint && (
|
|
662
662
|
<div
|
|
663
663
|
aria-label={tx(props.keyboardHint)}
|
|
664
|
-
className="hidden flex-shrink-0 items-center gap-2 text-xs text-gray-400 md:flex"
|
|
664
|
+
className="max-md:hidden flex-shrink-0 items-center gap-2 text-xs text-gray-400 md:flex"
|
|
665
665
|
>
|
|
666
666
|
<KeyboardShortcut
|
|
667
667
|
keys={[KeyboardKey.ArrowUp, KeyboardKey.ArrowDown]}
|
|
@@ -113,7 +113,7 @@ const Page: FunctionComponent<ComponentProps> = (
|
|
|
113
113
|
</div>
|
|
114
114
|
)}
|
|
115
115
|
{props.labels && props.labels.length > 0 && (
|
|
116
|
-
<div className="hidden sm:flex sm:flex-wrap sm:items-center sm:justify-end sm:gap-3">
|
|
116
|
+
<div className="max-sm:hidden sm:flex sm:flex-wrap sm:items-center sm:justify-end sm:gap-3">
|
|
117
117
|
<span className="text-xs font-semibold uppercase tracking-wide text-gray-500 whitespace-nowrap">
|
|
118
118
|
{translateString("Labels") || "Labels"}
|
|
119
119
|
</span>
|
|
@@ -210,7 +210,7 @@ const Pagination: FunctionComponent<ComponentProps> = (
|
|
|
210
210
|
const isCurrentPage: boolean = pageNumber === currentPageNumber;
|
|
211
211
|
|
|
212
212
|
return (
|
|
213
|
-
<li className="hidden sm:flex" key={`page-${pageNumber}`}>
|
|
213
|
+
<li className="max-sm:hidden sm:flex" key={`page-${pageNumber}`}>
|
|
214
214
|
<button
|
|
215
215
|
type="button"
|
|
216
216
|
data-testid={`pagination-page-${pageNumber}`}
|
|
@@ -244,7 +244,7 @@ const Pagination: FunctionComponent<ComponentProps> = (
|
|
|
244
244
|
|
|
245
245
|
const getEllipsis: GetEllipsisFunction = (key: string): ReactElement => {
|
|
246
246
|
return (
|
|
247
|
-
<li className="hidden sm:flex" key={key}>
|
|
247
|
+
<li className="max-sm:hidden sm:flex" key={key}>
|
|
248
248
|
<button
|
|
249
249
|
type="button"
|
|
250
250
|
data-testid={`pagination-${key}`}
|
|
@@ -372,7 +372,7 @@ const Pagination: FunctionComponent<ComponentProps> = (
|
|
|
372
372
|
</li>
|
|
373
373
|
|
|
374
374
|
{isHasMoreMode && (
|
|
375
|
-
<li className="hidden sm:flex">
|
|
375
|
+
<li className="max-sm:hidden sm:flex">
|
|
376
376
|
<span
|
|
377
377
|
data-testid="pagination-current-page-indicator-desktop"
|
|
378
378
|
aria-current="page"
|
|
@@ -85,7 +85,7 @@ const ProgressButtonItem: FunctionComponent<ComponentProps> = (
|
|
|
85
85
|
|
|
86
86
|
{!props.isLastStep && (
|
|
87
87
|
<div
|
|
88
|
-
className="absolute right-0 top-0 hidden h-full w-5 md:block"
|
|
88
|
+
className="absolute right-0 top-0 max-md:hidden h-full w-5 md:block"
|
|
89
89
|
aria-hidden="true"
|
|
90
90
|
>
|
|
91
91
|
<svg
|
|
@@ -532,8 +532,11 @@ const SideMenu: FunctionComponent<ComponentProps> = (props: ComponentProps) => {
|
|
|
532
532
|
* ("Scheduled Maintenance", "Recommendations" beside a badge) were
|
|
533
533
|
* ellipsised on every page that has them. 16px buys those back without
|
|
534
534
|
* taking a visible bite out of the content column.
|
|
535
|
+
*
|
|
536
|
+
* `max-md:hidden`, not `hidden`, for the reason given on the NavBar's
|
|
537
|
+
* desktop view: a foreign `.hidden` rule must not remove the menu.
|
|
535
538
|
*/
|
|
536
|
-
className={`hidden md:block w-56 lg:w-64 flex-shrink-0 mb-10 ${props.className || ""}`}
|
|
539
|
+
className={`max-md:hidden md:block w-56 lg:w-64 flex-shrink-0 mb-10 ${props.className || ""}`}
|
|
537
540
|
role="navigation"
|
|
538
541
|
aria-label="Main navigation"
|
|
539
542
|
>
|