@oneuptime/common 14.0.12 → 14.0.14

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.
Files changed (2816) hide show
  1. package/Models/DatabaseModels/AlertGroupingRule.ts +14 -9
  2. package/Models/DatabaseModels/AlertMeasurement.ts +16 -9
  3. package/Models/DatabaseModels/AlertReminderRule.ts +4 -3
  4. package/Models/DatabaseModels/AlertSeverity.ts +5 -2
  5. package/Models/DatabaseModels/AlertState.ts +5 -2
  6. package/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.ts +17 -0
  7. package/Models/DatabaseModels/File.ts +41 -2
  8. package/Models/DatabaseModels/{IncidentForm.ts → Form.ts} +201 -183
  9. package/Models/DatabaseModels/{IncidentFormSubmission.ts → FormSubmission.ts} +158 -76
  10. package/Models/DatabaseModels/Incident.ts +1 -1
  11. package/Models/DatabaseModels/IncidentCustomField.ts +7 -3
  12. package/Models/DatabaseModels/IncidentGroupingRule.ts +14 -9
  13. package/Models/DatabaseModels/IncidentMeasurement.ts +15 -8
  14. package/Models/DatabaseModels/IncidentReminderRule.ts +4 -3
  15. package/Models/DatabaseModels/IncidentSeverity.ts +5 -2
  16. package/Models/DatabaseModels/IncidentSlaRule.ts +4 -3
  17. package/Models/DatabaseModels/IncidentState.ts +5 -2
  18. package/Models/DatabaseModels/IncidentTemplate.ts +1 -1
  19. package/Models/DatabaseModels/IncomingCallPolicyEscalationRule.ts +5 -1
  20. package/Models/DatabaseModels/Index.ts +4 -4
  21. package/Models/DatabaseModels/LogDropFilter.ts +5 -3
  22. package/Models/DatabaseModels/LogPipeline.ts +5 -3
  23. package/Models/DatabaseModels/LogPipelineProcessor.ts +4 -3
  24. package/Models/DatabaseModels/LogScrubRule.ts +17 -10
  25. package/Models/DatabaseModels/MetricPipelineRule.ts +3 -2
  26. package/Models/DatabaseModels/MetricRecordingRule.ts +9 -3
  27. package/Models/DatabaseModels/MonitorStatus.ts +4 -1
  28. package/Models/DatabaseModels/NetworkDeviceRole.ts +3 -1
  29. package/Models/DatabaseModels/NetworkSiteAssignmentRule.ts +9 -3
  30. package/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.ts +4 -2
  31. package/Models/DatabaseModels/OnCallDutyPolicyUserOverride.ts +22 -9
  32. package/Models/DatabaseModels/Project.ts +18 -11
  33. package/Models/DatabaseModels/ProjectCallSMSConfig.ts +6 -1
  34. package/Models/DatabaseModels/RunbookRule.ts +343 -0
  35. package/Models/DatabaseModels/ScheduledMaintenance.ts +3 -1
  36. package/Models/DatabaseModels/ScheduledMaintenanceMeasurement.ts +15 -8
  37. package/Models/DatabaseModels/ScheduledMaintenanceReminderRule.ts +4 -3
  38. package/Models/DatabaseModels/ScheduledMaintenanceState.ts +5 -2
  39. package/Models/DatabaseModels/ScheduledMaintenanceTemplate.ts +1 -2
  40. package/Models/DatabaseModels/StatusPage.ts +8 -4
  41. package/Models/DatabaseModels/StatusPageFooterLink.ts +5 -1
  42. package/Models/DatabaseModels/StatusPageHeaderLink.ts +5 -1
  43. package/Models/DatabaseModels/StatusPageHistoryChartBarColorRule.ts +5 -1
  44. package/Models/DatabaseModels/TraceDropFilter.ts +5 -3
  45. package/Models/DatabaseModels/TracePipeline.ts +5 -3
  46. package/Models/DatabaseModels/TracePipelineProcessor.ts +4 -3
  47. package/Models/DatabaseModels/TraceRecordingRule.ts +9 -3
  48. package/Models/DatabaseModels/TraceScrubRule.ts +17 -10
  49. package/Models/DatabaseModels/UserNotificationEmailRollupItem.ts +49 -1
  50. package/Models/DatabaseModels/UserOnCallLog.ts +4 -2
  51. package/Server/API/BaseAnalyticsAPI.ts +17 -0
  52. package/Server/API/CustomDomainRoutes.ts +251 -0
  53. package/Server/API/DashboardAPI.ts +33 -4
  54. package/Server/API/DashboardDomainAPI.ts +63 -93
  55. package/Server/API/{IncidentFormAPI.ts → FormAPI.ts} +77 -83
  56. package/Server/API/StatusPageAPI.ts +92 -0
  57. package/Server/API/StatusPageDomainAPI.ts +59 -96
  58. package/Server/Infrastructure/GlobalCache.ts +84 -0
  59. package/Server/Infrastructure/Postgres/SchemaMigrations/1797300000000-TurnOnLinkedAlertSwitchesByDefault.ts +40 -0
  60. package/Server/Infrastructure/Postgres/SchemaMigrations/1797400000000-MigrateIncidentFormsToForms.ts +348 -0
  61. package/Server/Infrastructure/Postgres/SchemaMigrations/1797500000000-AddRunbookRuleMatchCriteria.ts +178 -0
  62. package/Server/Infrastructure/Postgres/SchemaMigrations/1797600000000-AddSeverityAndStateColorsToNotificationEmailRollup.ts +26 -0
  63. package/Server/Infrastructure/Postgres/SchemaMigrations/1797700000000-AddFormBranding.ts +47 -0
  64. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
  65. package/Server/Middleware/{IncidentFormRateLimit.ts → FormRateLimit.ts} +186 -194
  66. package/Server/Services/AlertEpisodeService.ts +5 -3
  67. package/Server/Services/AlertGroupingEngineService.ts +48 -70
  68. package/Server/Services/AlertGroupingRuleService.ts +38 -0
  69. package/Server/Services/AlertMeasurementService.ts +120 -23
  70. package/Server/Services/AlertReminderRuleService.ts +0 -31
  71. package/Server/Services/AlertService.ts +5 -3
  72. package/Server/Services/AlertSeverityService.ts +15 -109
  73. package/Server/Services/AlertStateService.ts +28 -119
  74. package/Server/Services/AnalyticsDatabaseService.ts +102 -9
  75. package/Server/Services/CephClusterService.ts +25 -0
  76. package/Server/Services/CloudResourceService.ts +42 -0
  77. package/Server/Services/DashboardDomainService.ts +640 -214
  78. package/Server/Services/DashboardService.ts +30 -8
  79. package/Server/Services/DatabaseService.ts +445 -12
  80. package/Server/Services/DockerHostService.ts +60 -0
  81. package/Server/Services/DockerSwarmClusterService.ts +25 -0
  82. package/Server/Services/FileService.ts +60 -0
  83. package/Server/Services/FormService.ts +1371 -0
  84. package/Server/Services/FormSubmissionService.ts +22 -0
  85. package/Server/Services/GlobalOidcService.ts +10 -0
  86. package/Server/Services/GlobalSsoService.ts +10 -0
  87. package/Server/Services/HostService.ts +58 -0
  88. package/Server/Services/IncidentAlertService.ts +57 -24
  89. package/Server/Services/IncidentCustomFieldService.ts +4 -113
  90. package/Server/Services/IncidentEpisodeService.ts +5 -3
  91. package/Server/Services/IncidentGroupingEngineService.ts +48 -70
  92. package/Server/Services/IncidentGroupingRuleService.ts +38 -0
  93. package/Server/Services/IncidentMeasurementService.ts +123 -23
  94. package/Server/Services/IncidentReminderRuleService.ts +0 -31
  95. package/Server/Services/IncidentService.ts +5 -3
  96. package/Server/Services/IncidentSeverityService.ts +15 -114
  97. package/Server/Services/IncidentSlaRuleService.ts +0 -32
  98. package/Server/Services/IncidentStateService.ts +28 -119
  99. package/Server/Services/IncidentStateTimelineService.ts +2 -2
  100. package/Server/Services/IncomingCallPolicyEscalationRuleService.ts +22 -190
  101. package/Server/Services/Index.ts +4 -4
  102. package/Server/Services/IoTFleetService.ts +26 -0
  103. package/Server/Services/KubernetesClusterService.ts +64 -0
  104. package/Server/Services/LabelService.ts +6 -17
  105. package/Server/Services/LogScrubRuleService.ts +50 -0
  106. package/Server/Services/LogService.ts +13 -0
  107. package/Server/Services/MetricRecordingRuleService.ts +106 -0
  108. package/Server/Services/MonitorStatusService.ts +27 -131
  109. package/Server/Services/OnCallDutyPolicyEscalationRuleService.ts +41 -0
  110. package/Server/Services/OnCallDutyPolicyScheduleService.ts +264 -0
  111. package/Server/Services/OnCallDutyPolicyService.ts +343 -0
  112. package/Server/Services/OnCallDutyPolicyUserOverrideService.ts +9 -1
  113. package/Server/Services/OnCallNotificationAlertingService.ts +24 -29
  114. package/Server/Services/OnCallSetupReminderService.ts +41 -40
  115. package/Server/Services/PodmanHostService.ts +60 -0
  116. package/Server/Services/ProfileAggregationService.ts +38 -0
  117. package/Server/Services/ProjectCallSMSConfigService.ts +76 -3
  118. package/Server/Services/ProjectOidcService.ts +20 -0
  119. package/Server/Services/ProjectService.ts +62 -73
  120. package/Server/Services/ProjectSsoService.ts +20 -0
  121. package/Server/Services/ProxmoxClusterService.ts +25 -0
  122. package/Server/Services/RumApplicationService.ts +45 -0
  123. package/Server/Services/RunbookRuleEngineService.ts +413 -41
  124. package/Server/Services/RunbookRuleService.ts +97 -0
  125. package/Server/Services/ScheduledMaintenanceMeasurementService.ts +126 -23
  126. package/Server/Services/ScheduledMaintenanceReminderRuleService.ts +0 -31
  127. package/Server/Services/ScheduledMaintenanceService.ts +14 -26
  128. package/Server/Services/ScheduledMaintenanceStateService.ts +28 -129
  129. package/Server/Services/ServerlessFunctionService.ts +47 -0
  130. package/Server/Services/ServiceService.ts +33 -10
  131. package/Server/Services/SpanService.ts +21 -2
  132. package/Server/Services/StatusPageDomainService.ts +622 -213
  133. package/Server/Services/StatusPageFooterLinkService.ts +9 -198
  134. package/Server/Services/StatusPageHeaderLinkService.ts +8 -197
  135. package/Server/Services/StatusPageHistoryChartBarColorRuleService.ts +9 -198
  136. package/Server/Services/StatusPageOidcService.ts +20 -0
  137. package/Server/Services/StatusPageResourceService.ts +89 -34
  138. package/Server/Services/StatusPageService.ts +270 -54
  139. package/Server/Services/StatusPageSsoService.ts +20 -0
  140. package/Server/Services/StatusPageSubscriberNotificationTemplateService.ts +17 -5
  141. package/Server/Services/StatusPageSubscriberNotificationTemplateStatusPageService.ts +7 -6
  142. package/Server/Services/TraceRecordingRuleService.ts +15 -2
  143. package/Server/Services/TraceScrubRuleService.ts +50 -0
  144. package/Server/Services/UserIncomingCallNumberService.ts +28 -14
  145. package/Server/Services/UserNotificationRuleService.ts +41 -0
  146. package/Server/Services/VMwareVCenterService.ts +25 -0
  147. package/Server/Types/AnalyticsDatabase/CountBy.ts +14 -0
  148. package/Server/Utils/AI/PerfEvidence/SpanTreeAnalyzer.ts +3 -3
  149. package/Server/Utils/Database/ListOrderMaintainer.ts +465 -0
  150. package/Server/Utils/Database/StateOrderGuard.ts +390 -0
  151. package/Server/Utils/EmailRollup/EmailRollupFlushRunner.ts +2 -0
  152. package/Server/Utils/EmailRollup/EmailRollupRenderer.ts +86 -3
  153. package/Server/Utils/EmailRollup/EmailRollupWriter.ts +41 -0
  154. package/Server/Utils/Form/FormRecordOptions.ts +147 -0
  155. package/Server/Utils/Form/FormSubmissionNote.ts +215 -0
  156. package/Server/Utils/Form/FormTargetHandler.ts +410 -0
  157. package/Server/Utils/Form/FormTargets.ts +28 -0
  158. package/Server/Utils/Form/IncidentFormTarget.ts +580 -0
  159. package/Server/Utils/Form/ScheduledMaintenanceFormTarget.ts +401 -0
  160. package/Server/Utils/Greenlock/CertificateOrder.ts +482 -0
  161. package/Server/Utils/Greenlock/CertificateOrderBudget.ts +134 -0
  162. package/Server/Utils/Greenlock/CertificateOrderFailures.ts +288 -0
  163. package/Server/Utils/Greenlock/CertificateOrderLock.ts +163 -0
  164. package/Server/Utils/Greenlock/CertificateOrderOutcome.ts +29 -0
  165. package/Server/Utils/Greenlock/CertificateOwners.ts +72 -0
  166. package/Server/Utils/Greenlock/CertificateReissueOrder.ts +99 -0
  167. package/Server/Utils/Greenlock/CustomDomainOrders.ts +397 -0
  168. package/Server/Utils/Greenlock/Greenlock.ts +839 -203
  169. package/Server/Utils/Measurement/MeasurementDefinitionChange.ts +81 -0
  170. package/Server/Utils/Measurement/MeasurementDefinitionValidator.ts +9 -4
  171. package/Server/Utils/Measurement/MeasurementKeyAssigner.ts +50 -0
  172. package/Server/Utils/Measurement/MeasurementMetricWriter.ts +22 -2
  173. package/Server/Utils/Measurement/MeasurementStateReference.ts +95 -0
  174. package/Server/Utils/Rules/GroupingRuleEpisodeOwners.ts +551 -0
  175. package/Server/Utils/Rules/OwnerRuleAssignment.ts +8 -1
  176. package/Server/Utils/ScrubRuleValidation.ts +248 -0
  177. package/Server/Utils/Slo/SloOwnerReferenceValidator.ts +1 -1
  178. package/Server/Utils/StatusPage/AffectedStatusPageResources.ts +138 -0
  179. package/Server/Utils/StatusPage/IncidentSubscriberAudienceBuilder.ts +8 -7
  180. package/Server/Utils/StatusPage/IncidentTemplateVariableBuilder.ts +24 -16
  181. package/Server/Utils/StatusPage/StatusPagesListingMonitorsBuilder.ts +294 -0
  182. package/Server/Utils/StatusPage/SubscriberIncidentEmailBuilder.ts +9 -1
  183. package/Server/Utils/StatusPage/SubscriberNotificationPreviewBuilder.ts +4 -0
  184. package/Server/Utils/StatusPage/SubscriberTemplateIncidentRecordAccess.ts +7 -5
  185. package/Server/Utils/Telemetry/DiscoveredResourceCreate.ts +275 -0
  186. package/Server/Utils/Telemetry/DiscoveredResourceUpdate.ts +217 -0
  187. package/Server/Utils/Telemetry/MessageQueueDiscovery.ts +8 -2
  188. package/Tests/App/Accounts/FormPage.test.tsx +999 -0
  189. package/Tests/App/Accounts/FormServerMessages.test.ts +115 -0
  190. package/Tests/App/Accounts/FormUtils.test.ts +665 -0
  191. package/Tests/App/AdminDashboard/AdminAddToProjectMembersTeam.test.tsx +1087 -0
  192. package/Tests/App/AdminDashboard/AdminAuthenticationRequireSso.test.tsx +140 -138
  193. package/Tests/App/AdminDashboard/AdminAuthenticationSsoCardLocales.test.tsx +144 -145
  194. package/Tests/App/AdminDashboard/AdminMenusFolded.test.tsx +299 -0
  195. package/Tests/App/AdminDashboard/AdminProductsMenuUnfolded.test.tsx +133 -0
  196. package/Tests/App/AdminDashboard/AdminSettingsFormsOnePage.test.tsx +907 -0
  197. package/Tests/App/AdminDashboard/AdminSettingsSwitches.test.tsx +906 -0
  198. package/Tests/App/AdminDashboard/AdminSmtpSettingsForm.test.tsx +823 -0
  199. package/Tests/App/AdminDashboard/BulkAddUsersToProjectModal.test.tsx +341 -368
  200. package/Tests/App/AdminDashboard/GlobalSsoOidcPages.test.tsx +199 -54
  201. package/Tests/App/AdminDashboard/ProjectScopedTeamsPicker.test.tsx +991 -0
  202. package/Tests/App/ArchivedEntriesInAdvancedSection.test.tsx +662 -0
  203. package/Tests/App/Dashboard/AIInsightsKubernetesClusterPage.test.tsx +5 -4
  204. package/Tests/App/Dashboard/AIInvestigationSettingsLimits.test.tsx +147 -90
  205. package/Tests/App/Dashboard/AdminNotificationRulesPage.test.tsx +224 -104
  206. package/Tests/App/Dashboard/AdminUserNotificationMethodsPage.test.tsx +360 -0
  207. package/Tests/App/Dashboard/AdminUserOnCallPages.test.tsx +408 -152
  208. package/Tests/App/Dashboard/AffectedResourcesPicker.test.tsx +55 -0
  209. package/Tests/App/Dashboard/AffectedResourcesPickerEditForm.test.tsx +206 -115
  210. package/Tests/App/Dashboard/AffectedResourcesPickerFocusLeave.test.tsx +32 -0
  211. package/Tests/App/Dashboard/AffectedResourcesSummaryStep.test.tsx +206 -71
  212. package/Tests/App/Dashboard/AlertEpisodeViewFields.test.tsx +65 -7
  213. package/Tests/App/Dashboard/AlertsSideMenu.test.tsx +108 -4
  214. package/Tests/App/Dashboard/AnnouncementCreateForm.test.tsx +1208 -0
  215. package/Tests/App/Dashboard/AnnouncementEditAndTemplateForms.test.tsx +693 -0
  216. package/Tests/App/Dashboard/AnnouncementFormsStructure.test.ts +546 -0
  217. package/Tests/App/Dashboard/AnnouncementStatusPageSuggestions.test.tsx +425 -0
  218. package/Tests/App/Dashboard/AnnouncementsTableCreateLinks.test.tsx +267 -0
  219. package/Tests/App/Dashboard/ApiKeyCreateForm.test.ts +669 -0
  220. package/Tests/App/Dashboard/ApiKeyViewPermissions.test.tsx +758 -0
  221. package/Tests/App/Dashboard/ApiKeysCreateAccess.test.tsx +805 -0
  222. package/Tests/App/Dashboard/ArchivedResourceNavigation.test.tsx +50 -2
  223. package/Tests/App/Dashboard/BulkChangeStateModalColors.test.tsx +136 -0
  224. package/Tests/App/Dashboard/BulkChangeStateModalOnePage.test.tsx +333 -0
  225. package/Tests/App/Dashboard/CardDescriptionsSayWhatFor.test.tsx +307 -0
  226. package/Tests/App/Dashboard/ChangeAlertStateAIHeader.test.tsx +18 -4
  227. package/Tests/App/Dashboard/CloudDocumentationCard.test.tsx +7 -2
  228. package/Tests/App/Dashboard/ClusterAccessNotice.test.tsx +7 -2
  229. package/Tests/App/Dashboard/ColorFieldsPrefilledPages.test.tsx +453 -0
  230. package/Tests/App/Dashboard/ConnectedWorkspaces.test.tsx +771 -0
  231. package/Tests/App/Dashboard/CoreListEmptyStates.test.tsx +77 -20
  232. package/Tests/App/Dashboard/CreateFromRecordBreadcrumbs.test.ts +272 -0
  233. package/Tests/App/Dashboard/CreateFromRecordLinks.test.tsx +495 -0
  234. package/Tests/App/Dashboard/CreateFromRecordPages.test.tsx +1026 -0
  235. package/Tests/App/Dashboard/CreateOAuthWorkflowVariableFormSteps.test.tsx +6 -4
  236. package/Tests/App/Dashboard/CreateReviewStepRoleSummary.test.tsx +2 -2
  237. package/Tests/App/Dashboard/CreateReviewStepSelectionSummary.test.tsx +4 -4
  238. package/Tests/App/Dashboard/CreateWorkflowModal.test.tsx +587 -119
  239. package/Tests/App/Dashboard/CriteriaFilterDefaults.test.ts +64 -1
  240. package/Tests/App/Dashboard/CriteriaFilterMonitorTypeChange.test.ts +127 -0
  241. package/Tests/App/Dashboard/CriteriaName.test.ts +835 -0
  242. package/Tests/App/Dashboard/CustomDomainCreateFlow.test.tsx +516 -0
  243. package/Tests/App/Dashboard/CustomDomainDnsSetupModal.test.tsx +547 -0
  244. package/Tests/App/Dashboard/CustomDomainsPages.test.tsx +1077 -0
  245. package/Tests/App/Dashboard/CustomFieldDefinitionTableRender.test.tsx +485 -0
  246. package/Tests/App/Dashboard/CustomFieldSimpleCreate.test.tsx +1070 -0
  247. package/Tests/App/Dashboard/CustomFieldSimpleCreateRender.test.tsx +753 -0
  248. package/Tests/App/Dashboard/CustomFieldTablesTwoColumns.test.tsx +523 -0
  249. package/Tests/App/Dashboard/CustomFieldsSettingsIncidentOptions.test.tsx +92 -59
  250. package/Tests/App/Dashboard/CustomSmtpConfigForm.test.tsx +969 -0
  251. package/Tests/App/Dashboard/DashboardBlankCanvasAddWidget.test.tsx +425 -0
  252. package/Tests/App/Dashboard/DashboardCommandPalette.test.tsx +400 -0
  253. package/Tests/App/Dashboard/DashboardComponentsAToLHelpersTranslation.test.ts +256 -0
  254. package/Tests/App/Dashboard/DashboardComponentsAToLTranslation.test.tsx +482 -0
  255. package/Tests/App/Dashboard/DashboardComponentsMRTranslation.test.tsx +806 -0
  256. package/Tests/App/Dashboard/DashboardCreateForm.test.ts +375 -0
  257. package/Tests/App/Dashboard/DashboardCreateFromTemplate.test.tsx +727 -0
  258. package/Tests/App/Dashboard/DashboardEmptyCanvasAddWidget.test.tsx +86 -0
  259. package/Tests/App/Dashboard/DashboardFrenchLocale.test.tsx +335 -0
  260. package/Tests/App/Dashboard/DashboardGermanLocale.test.tsx +250 -0
  261. package/Tests/App/Dashboard/DashboardJapaneseLocale.test.tsx +435 -0
  262. package/Tests/App/Dashboard/DashboardPagesTranslation.test.tsx +449 -0
  263. package/Tests/App/Dashboard/DashboardPagesUtilsTranslation.test.ts +487 -0
  264. package/Tests/App/Dashboard/DashboardPhoneProductsMenu.test.tsx +352 -0
  265. package/Tests/App/Dashboard/DashboardRuntimeLocales.test.tsx +635 -0
  266. package/Tests/App/Dashboard/DashboardSharingCard.test.tsx +1226 -0
  267. package/Tests/App/Dashboard/DashboardSharingEntryPoints.test.tsx +383 -0
  268. package/Tests/App/Dashboard/DashboardSharingPage.test.tsx +478 -0
  269. package/Tests/App/Dashboard/DashboardSpanishLocale.test.tsx +405 -0
  270. package/Tests/App/Dashboard/DeclareFormsAdvancedRender.test.tsx +606 -0
  271. package/Tests/App/Dashboard/DeclareIncidentMonitorsApart.test.tsx +1028 -0
  272. package/Tests/App/Dashboard/DefaultSsoTeams.test.tsx +215 -0
  273. package/Tests/App/Dashboard/DeveloperDocsGuides.test.ts +569 -127
  274. package/Tests/App/Dashboard/DeveloperDocsPage.test.tsx +337 -51
  275. package/Tests/App/Dashboard/DisabledWarningArchived.test.tsx +3 -3
  276. package/Tests/App/Dashboard/DisabledWarningRobustness.test.tsx +15 -12
  277. package/Tests/App/Dashboard/DiscoveredResourceCreateForms.test.tsx +936 -0
  278. package/Tests/App/Dashboard/DiscoveryScanStatusMessage.test.tsx +10 -1
  279. package/Tests/App/Dashboard/EmbeddedMetricCardGroup.test.tsx +720 -0
  280. package/Tests/App/Dashboard/EntityFilterDropdownColors.test.tsx +269 -0
  281. package/Tests/App/Dashboard/EntityFilterDropdownUnlistedSelection.test.tsx +23 -12
  282. package/Tests/App/Dashboard/EpisodeMemberRoleAssignmentsFormField.test.tsx +331 -0
  283. package/Tests/App/Dashboard/EpisodePostmortemPage.test.tsx +327 -0
  284. package/Tests/App/Dashboard/EscalationRuleForm.test.ts +426 -0
  285. package/Tests/App/Dashboard/EscalationRuleFormGuard.test.ts +243 -0
  286. package/Tests/App/Dashboard/EscalationRuleOneStep.test.tsx +1001 -0
  287. package/Tests/App/Dashboard/EscalationRuleRowActions.test.tsx +38 -10
  288. package/Tests/App/Dashboard/EventMeasurements.test.ts +1175 -0
  289. package/Tests/App/Dashboard/EventMeasurementsCard.test.tsx +993 -0
  290. package/Tests/App/Dashboard/EventNoteComposerDialog.test.tsx +939 -0
  291. package/Tests/App/Dashboard/EventNotes.test.tsx +36 -3
  292. package/Tests/App/Dashboard/EventNotesUtil.test.ts +2 -2
  293. package/Tests/App/Dashboard/EventOverviewPages.test.tsx +186 -1
  294. package/Tests/App/Dashboard/EventSettingsSwitchPages.test.tsx +625 -0
  295. package/Tests/App/Dashboard/EventStatusPanel.test.tsx +87 -0
  296. package/Tests/App/Dashboard/ExceptionMonitorEnvironmentFilter.test.tsx +6 -2
  297. package/Tests/App/Dashboard/FeedFilterSortIntegration.test.tsx +349 -145
  298. package/Tests/App/Dashboard/FeedNoteComposerDialog.test.tsx +1327 -0
  299. package/Tests/App/Dashboard/FeedNoteDialogHelpers.ts +109 -0
  300. package/Tests/App/Dashboard/FeedOptionsLocales.test.ts +50 -18
  301. package/Tests/App/Dashboard/FeedOrdering.test.ts +116 -24
  302. package/Tests/App/Dashboard/FilterChipClearButton.test.tsx +356 -0
  303. package/Tests/App/Dashboard/FlameGraphLosesItsSpans.test.tsx +102 -0
  304. package/Tests/App/Dashboard/FormBrandingSection.test.tsx +504 -0
  305. package/Tests/App/Dashboard/FormBrandingValues.test.ts +255 -0
  306. package/Tests/App/Dashboard/FormBuilderData.test.ts +280 -0
  307. package/Tests/App/Dashboard/FormBuilderParts.test.tsx +831 -0
  308. package/Tests/App/Dashboard/FormBuilderState.test.ts +630 -0
  309. package/Tests/App/Dashboard/FormBuilderUi.test.tsx +1024 -0
  310. package/Tests/App/Dashboard/FormMappingCard.test.tsx +512 -0
  311. package/Tests/App/Dashboard/FormOnSubmit.test.ts +693 -0
  312. package/Tests/App/Dashboard/{IncidentFormPlan.test.ts → FormPlan.test.ts} +15 -15
  313. package/Tests/App/Dashboard/{IncidentFormShareLinkCard.test.tsx → FormShareLinkCard.test.tsx} +53 -73
  314. package/Tests/App/Dashboard/FormStatusCard.test.tsx +354 -0
  315. package/Tests/App/Dashboard/FormTargetCard.test.tsx +315 -0
  316. package/Tests/App/Dashboard/FormsMovedPagesAndSubmissions.test.tsx +270 -0
  317. package/Tests/App/Dashboard/FormsPages.test.tsx +574 -0
  318. package/Tests/App/Dashboard/GeneratedKeyForms.test.tsx +523 -0
  319. package/Tests/App/Dashboard/GlobalProbesOnNewMonitorsCard.test.tsx +258 -0
  320. package/Tests/App/Dashboard/GroupingRuleComponents.test.tsx +792 -0
  321. package/Tests/App/Dashboard/GroupingRuleFormFlow.test.tsx +1725 -0
  322. package/Tests/App/Dashboard/GroupingRulePages.test.tsx +881 -0
  323. package/Tests/App/Dashboard/GroupingRuleTranslationRender.test.tsx +244 -0
  324. package/Tests/App/Dashboard/IncidentCreateAcknowledgeAlerts.test.tsx +7 -4
  325. package/Tests/App/Dashboard/IncidentCreateFromAlerts.test.tsx +33 -15
  326. package/Tests/App/Dashboard/IncidentCreateStatusPageScope.test.tsx +690 -25
  327. package/Tests/App/Dashboard/IncidentCreateTemplateCustomFieldSettings.test.tsx +2 -0
  328. package/Tests/App/Dashboard/IncidentCustomFieldCreateSettingsForm.test.ts +37 -345
  329. package/Tests/App/Dashboard/IncidentCustomFieldSettingsCard.test.tsx +6 -541
  330. package/Tests/App/Dashboard/IncidentCustomFieldTemplateVariables.test.tsx +188 -28
  331. package/Tests/App/Dashboard/IncidentEpisodeFeedPublicNoteNotifyDefault.test.tsx +230 -338
  332. package/Tests/App/Dashboard/IncidentEpisodeViewFields.test.tsx +65 -7
  333. package/Tests/App/Dashboard/IncidentFeedPublicNoteNotifyDefault.test.tsx +227 -295
  334. package/Tests/App/Dashboard/IncidentLinkedAlertsSettingsPage.test.tsx +559 -0
  335. package/Tests/App/Dashboard/IncidentNoteTemplatePlaceholders.test.tsx +350 -52
  336. package/Tests/App/Dashboard/IncidentNoteTemplateVariablesLoader.test.ts +7 -2
  337. package/Tests/App/Dashboard/IncidentPostmortemPage.test.tsx +775 -0
  338. package/Tests/App/Dashboard/IncidentRoleFormField.test.tsx +769 -0
  339. package/Tests/App/Dashboard/IncidentRolesSettingsPage.test.tsx +775 -0
  340. package/Tests/App/Dashboard/IncidentRuleConditions.test.tsx +405 -0
  341. package/Tests/App/Dashboard/IncidentSettingsStatusPageScope.test.tsx +236 -21
  342. package/Tests/App/Dashboard/IncidentStatesPageTable.test.tsx +440 -0
  343. package/Tests/App/Dashboard/IncidentTemplateCustomFieldSettings.test.tsx +24 -4
  344. package/Tests/App/Dashboard/IncidentTemplateInitialState.test.tsx +430 -0
  345. package/Tests/App/Dashboard/IncidentTemplateMonitorsApart.test.tsx +492 -0
  346. package/Tests/App/Dashboard/IncidentTemplateStatusPageScopeCard.test.tsx +135 -3
  347. package/Tests/App/Dashboard/IncidentsSideMenu.test.tsx +201 -14
  348. package/Tests/App/Dashboard/IncomingCallEscalationOneStep.test.tsx +830 -0
  349. package/Tests/App/Dashboard/IncomingCallEscalationRuleForm.test.ts +510 -0
  350. package/Tests/App/Dashboard/IncomingCallEscalationRuleFormGuard.test.ts +378 -0
  351. package/Tests/App/Dashboard/IngestionKeyForm.test.ts +664 -0
  352. package/Tests/App/Dashboard/IngestionKeySelectorCreate.test.tsx +523 -0
  353. package/Tests/App/Dashboard/InventoryTypeAndStatusFacets.test.tsx +142 -14
  354. package/Tests/App/Dashboard/InvestigationConversationData.test.ts +36 -12
  355. package/Tests/App/Dashboard/InvestigationDrawer.test.tsx +56 -0
  356. package/Tests/App/Dashboard/InviteUserDefaultTeam.test.tsx +586 -0
  357. package/Tests/App/Dashboard/IpAllowlistCopy.test.ts +122 -0
  358. package/Tests/App/Dashboard/KubernetesClusterAiPage.test.tsx +19 -3
  359. package/Tests/App/Dashboard/KubernetesClusterOverviewZoom.test.tsx +6 -3
  360. package/Tests/App/Dashboard/KubernetesMetricsSetupEmptyState.test.tsx +275 -0
  361. package/Tests/App/Dashboard/KubernetesMetricsSetupHints.test.tsx +720 -0
  362. package/Tests/App/Dashboard/LabelsFormField.test.tsx +559 -0
  363. package/Tests/App/Dashboard/LegacyDefaultAssigneeNote.test.tsx +359 -0
  364. package/Tests/App/Dashboard/LogMonitorAttributeOperatorPreview.test.tsx +10 -10
  365. package/Tests/App/Dashboard/LogsResultTotal.test.tsx +827 -0
  366. package/Tests/App/Dashboard/MarkdownTemplateDialogsWide.test.tsx +328 -0
  367. package/Tests/App/Dashboard/MeasurementForms.test.tsx +1113 -0
  368. package/Tests/App/Dashboard/MeasurementListAndChart.test.tsx +290 -0
  369. package/Tests/App/Dashboard/MeasurementPagesI18n.test.ts +150 -0
  370. package/Tests/App/Dashboard/MeasurementSetup.test.ts +621 -0
  371. package/Tests/App/Dashboard/MenuSpecificFoldedSections.test.tsx +520 -0
  372. package/Tests/App/Dashboard/MessageQueueOverviewPresentation.test.ts +4 -4
  373. package/Tests/App/Dashboard/MessageQueueRulePages.test.tsx +70 -24
  374. package/Tests/App/Dashboard/MessageQueueSideMenus.test.tsx +35 -10
  375. package/Tests/App/Dashboard/MessageQueueViewPages.test.tsx +3 -1
  376. package/Tests/App/Dashboard/MetricAndRecordingRuleFormsRender.test.tsx +1206 -0
  377. package/Tests/App/Dashboard/MetricDescriptionsCatalog.test.ts +11 -2
  378. package/Tests/App/Dashboard/MetricResultsState.test.ts +248 -0
  379. package/Tests/App/Dashboard/MetricViewResultsState.test.tsx +404 -0
  380. package/Tests/App/Dashboard/MonitorCreateFromMonitorBackedDevice.test.tsx +1 -1
  381. package/Tests/App/Dashboard/MonitorCriteriaActionToggles.test.tsx +0 -1
  382. package/Tests/App/Dashboard/MonitorCriteriaAdvancedOptions.test.tsx +77 -29
  383. package/Tests/App/Dashboard/MonitorCriteriaAttributeFilter.test.tsx +5 -8
  384. package/Tests/App/Dashboard/MonitorCriteriaHeaderControls.test.tsx +228 -0
  385. package/Tests/App/Dashboard/MonitorCriteriaIncidentRoles.test.tsx +411 -0
  386. package/Tests/App/Dashboard/MonitorCriteriaNameAndDescription.test.tsx +534 -0
  387. package/Tests/App/Dashboard/MonitorCriteriaOwners.test.tsx +281 -0
  388. package/Tests/App/Dashboard/MonitorCriteriaTemplateVariables.test.tsx +191 -0
  389. package/Tests/App/Dashboard/MonitorFeedRefresh.test.tsx +5 -1
  390. package/Tests/App/Dashboard/MonitorFormIncidentRoles.test.tsx +460 -0
  391. package/Tests/App/Dashboard/MonitorIntervalRedirect.test.tsx +299 -0
  392. package/Tests/App/Dashboard/MonitorOverviewHero.test.tsx +243 -2
  393. package/Tests/App/Dashboard/MonitorProbesAndIntervalPage.test.tsx +638 -0
  394. package/Tests/App/Dashboard/MonitorRecommendationSeverityColors.test.ts +73 -0
  395. package/Tests/App/Dashboard/MonitorStatusChangesCard.test.tsx +70 -6
  396. package/Tests/App/Dashboard/MonitorStepsCriteriaAlignmentWiring.test.tsx +168 -4
  397. package/Tests/App/Dashboard/MonitorStepsDefaultStatusAdvanced.test.tsx +448 -0
  398. package/Tests/App/Dashboard/MonitorSummaryTestMonitorButton.test.tsx +2 -2
  399. package/Tests/App/Dashboard/MonitoringIntervalCard.test.tsx +493 -0
  400. package/Tests/App/Dashboard/MonitoringSwitch.test.tsx +597 -0
  401. package/Tests/App/Dashboard/MovedRunnerSettingsRedirects.test.tsx +4 -5
  402. package/Tests/App/Dashboard/NavigationSearchKeywords.test.tsx +54 -0
  403. package/Tests/App/Dashboard/NetworkMetricTooltips.test.ts +9 -4
  404. package/Tests/App/Dashboard/NetworkSideMenu.test.tsx +80 -7
  405. package/Tests/App/Dashboard/NotificationChannelOffSwitchLists.test.tsx +636 -0
  406. package/Tests/App/Dashboard/NotificationMethodTabsWorkspaces.test.tsx +280 -0
  407. package/Tests/App/Dashboard/NumberPrefixPageRedirects.test.tsx +365 -0
  408. package/Tests/App/Dashboard/NumberPrefixSettingsPages.test.tsx +1048 -0
  409. package/Tests/App/Dashboard/OnCallCalendarFeedSideMenus.test.tsx +11 -2
  410. package/Tests/App/Dashboard/OnCallPolicyCreateFormGuard.test.ts +332 -0
  411. package/Tests/App/Dashboard/OnCallPolicyFirstResponders.test.tsx +639 -0
  412. package/Tests/App/Dashboard/OnCallPolicySummaryNobodyPaged.test.tsx +293 -0
  413. package/Tests/App/Dashboard/OnCallPreventionGuards.test.tsx +36 -18
  414. package/Tests/App/Dashboard/OnCallReadinessSurfaces.test.tsx +61 -1
  415. package/Tests/App/Dashboard/OnCallRulesDeleteGuard.test.tsx +44 -25
  416. package/Tests/App/Dashboard/OnCallRulesRedirects.test.tsx +530 -0
  417. package/Tests/App/Dashboard/OnCallRulesTable.test.tsx +158 -74
  418. package/Tests/App/Dashboard/OnCallRulesTabs.test.tsx +511 -0
  419. package/Tests/App/Dashboard/OnCallScheduleAddLayerDefaults.test.tsx +236 -0
  420. package/Tests/App/Dashboard/OnCallScheduleCreateFormGuard.test.ts +633 -0
  421. package/Tests/App/Dashboard/OnCallScheduleOverrideClarity.test.tsx +13 -2
  422. package/Tests/App/Dashboard/OnCallScheduleWhoTakesTurns.test.tsx +771 -0
  423. package/Tests/App/Dashboard/OnCallSharedCalendarFeedSettingsForm.test.tsx +357 -0
  424. package/Tests/App/Dashboard/OnCallShiftRemindersAndUpcomingShifts.test.tsx +16 -6
  425. package/Tests/App/Dashboard/OnboardingSsoEmptyState.test.tsx +112 -23
  426. package/Tests/App/Dashboard/OwnersCard.test.tsx +422 -0
  427. package/Tests/App/Dashboard/PageSearchIndexCoversMenus.test.tsx +594 -0
  428. package/Tests/App/Dashboard/PageSearchIndexCoversRoutes.test.tsx +271 -0
  429. package/Tests/App/Dashboard/PageSearchRanking.test.tsx +373 -0
  430. package/Tests/App/Dashboard/PostmortemPageParts.test.tsx +548 -0
  431. package/Tests/App/Dashboard/ProbeAgreementCard.test.tsx +483 -0
  432. package/Tests/App/Dashboard/ProductOrientation.test.tsx +154 -9
  433. package/Tests/App/Dashboard/ProductSettingsSectionCollapsed.test.tsx +28 -14
  434. package/Tests/App/Dashboard/ProjectAISettingsPages.test.tsx +282 -404
  435. package/Tests/App/Dashboard/ProjectAiSettingsSwitchPages.test.tsx +1414 -0
  436. package/Tests/App/Dashboard/ProjectNotificationChannels.test.tsx +1191 -0
  437. package/Tests/App/Dashboard/ProjectSettingsSwitchCards.test.tsx +603 -0
  438. package/Tests/App/Dashboard/RemindersCard.test.tsx +477 -0
  439. package/Tests/App/Dashboard/ResourceAiInsightsPage.test.tsx +3 -2
  440. package/Tests/App/Dashboard/ResourceDetailsCard.test.tsx +458 -0
  441. package/Tests/App/Dashboard/ResourceFeed.test.tsx +162 -130
  442. package/Tests/App/Dashboard/ResourceFeedPageWiring.test.ts +1 -1
  443. package/Tests/App/Dashboard/ResourceFeedPagesFilterSort.test.tsx +115 -81
  444. package/Tests/App/Dashboard/ResourceRuleForm.test.ts +525 -0
  445. package/Tests/App/Dashboard/ResourceRuleFormsRender.test.tsx +803 -0
  446. package/Tests/App/Dashboard/RoleAccess.test.ts +753 -0
  447. package/Tests/App/Dashboard/RoleCardSelectOptions.test.ts +211 -0
  448. package/Tests/App/Dashboard/RouteUtilPageRoute.test.ts +116 -0
  449. package/Tests/App/Dashboard/RowActionPlacementOverrides.test.tsx +1 -1
  450. package/Tests/App/Dashboard/RumSessionReplayRetentionSettings.test.tsx +172 -219
  451. package/Tests/App/Dashboard/RunbookRuleConditions.test.tsx +773 -0
  452. package/Tests/App/Dashboard/RunbookStepHeaderControls.test.tsx +269 -0
  453. package/Tests/App/Dashboard/RunnerKubernetesAgentForm.test.tsx +57 -86
  454. package/Tests/App/Dashboard/RunnerNavigation.test.tsx +32 -11
  455. package/Tests/App/Dashboard/RunnerSupersededByAiAgentNote.test.tsx +16 -23
  456. package/Tests/App/Dashboard/ScheduledMaintenanceAffectedResourcesEditForm.test.tsx +485 -0
  457. package/Tests/App/Dashboard/ScheduledMaintenanceChangeStateNotifyDefault.test.tsx +27 -2
  458. package/Tests/App/Dashboard/ScheduledMaintenanceCreateForm.test.tsx +835 -0
  459. package/Tests/App/Dashboard/ScheduledMaintenanceFeedPublicNoteNotifyDefault.test.tsx +208 -309
  460. package/Tests/App/Dashboard/ScheduledMaintenanceFeedRefresh.test.tsx +36 -53
  461. package/Tests/App/Dashboard/ScheduledMaintenanceFormsStructure.test.ts +586 -0
  462. package/Tests/App/Dashboard/ScheduledMaintenanceMonitorsApart.test.tsx +1085 -0
  463. package/Tests/App/Dashboard/ScheduledMaintenanceOverviewPage.test.tsx +560 -24
  464. package/Tests/App/Dashboard/ScheduledMaintenanceSideMenu.test.tsx +103 -4
  465. package/Tests/App/Dashboard/ScheduledMaintenanceStatusPageSuggestions.test.tsx +513 -0
  466. package/Tests/App/Dashboard/ScheduledMaintenanceTemplateForm.test.tsx +624 -0
  467. package/Tests/App/Dashboard/ScheduledMaintenanceTemplateMonitorsApart.test.tsx +760 -0
  468. package/Tests/App/Dashboard/SearchEngineIndexingCard.test.tsx +436 -0
  469. package/Tests/App/Dashboard/SecurityEventConnectionFormModal.test.tsx +11 -13
  470. package/Tests/App/Dashboard/SecurityEventsMonitorStepForm.test.tsx +228 -69
  471. package/Tests/App/Dashboard/SecurityEventsViewer.test.tsx +104 -0
  472. package/Tests/App/Dashboard/SelectedProjectSwitches.test.tsx +359 -0
  473. package/Tests/App/Dashboard/ServerlessSetupGuide.test.ts +1 -1
  474. package/Tests/App/Dashboard/SessionReplayAllowedCard.test.tsx +297 -0
  475. package/Tests/App/Dashboard/SetupGuideCard.test.tsx +7 -1
  476. package/Tests/App/Dashboard/SetupGuideStepVariants.test.tsx +135 -0
  477. package/Tests/App/Dashboard/ShortFormsOnePage.test.tsx +591 -0
  478. package/Tests/App/Dashboard/SideMenuHarness.tsx +20 -0
  479. package/Tests/App/Dashboard/SloFeed.test.tsx +33 -48
  480. package/Tests/App/Dashboard/SloListSideMenu.test.tsx +36 -1
  481. package/Tests/App/Dashboard/SloMonitorRuleCriteria.test.tsx +66 -7
  482. package/Tests/App/Dashboard/SloNoticeBanner.test.tsx +253 -6
  483. package/Tests/App/Dashboard/SloOverviewData.test.tsx +99 -0
  484. package/Tests/App/Dashboard/SloOverviewLayout.test.tsx +3 -1
  485. package/Tests/App/Dashboard/SloSettings.test.tsx +257 -4
  486. package/Tests/App/Dashboard/SloViewSideMenu.test.tsx +15 -4
  487. package/Tests/App/Dashboard/SsoPages.test.tsx +448 -52
  488. package/Tests/App/Dashboard/StateChangeDialogsFolded.test.tsx +695 -0
  489. package/Tests/App/Dashboard/StateChangeFormFields.test.ts +376 -0
  490. package/Tests/App/Dashboard/StateSettingsPages.test.tsx +581 -0
  491. package/Tests/App/Dashboard/StateTimelinePagesLiveState.test.tsx +373 -0
  492. package/Tests/App/Dashboard/StatusPageAccessCard.test.tsx +1088 -0
  493. package/Tests/App/Dashboard/StatusPageAccessCopy.test.ts +450 -0
  494. package/Tests/App/Dashboard/StatusPageAccessMenu.test.tsx +137 -0
  495. package/Tests/App/Dashboard/StatusPageAccessPage.test.tsx +458 -0
  496. package/Tests/App/Dashboard/StatusPageAdvancedOptionsRedirect.test.tsx +321 -0
  497. package/Tests/App/Dashboard/StatusPageAdvancedSettingsPage.test.tsx +215 -0
  498. package/Tests/App/Dashboard/StatusPageBrandingMenu.test.tsx +176 -0
  499. package/Tests/App/Dashboard/StatusPageBrandingPage.test.tsx +707 -0
  500. package/Tests/App/Dashboard/StatusPageBrandingRedirects.test.tsx +400 -0
  501. package/Tests/App/Dashboard/StatusPageDisplaySettingsCard.test.tsx +2374 -0
  502. package/Tests/App/Dashboard/StatusPagePrivateUsersNotice.test.tsx +233 -0
  503. package/Tests/App/Dashboard/StatusPageReportsCard.test.tsx +1001 -0
  504. package/Tests/App/Dashboard/StatusPageRequireSsoCard.test.tsx +247 -0
  505. package/Tests/App/Dashboard/StatusPageSubscriberSettingsPages.test.tsx +875 -0
  506. package/Tests/App/Dashboard/StatusPageSuggestions.test.tsx +930 -0
  507. package/Tests/App/Dashboard/StatusPageSwitchCardPages.test.tsx +335 -0
  508. package/Tests/App/Dashboard/SubscriberAudienceSummary.test.tsx +382 -17
  509. package/Tests/App/Dashboard/SubscriberChannelOffPanel.test.tsx +393 -0
  510. package/Tests/App/Dashboard/SubscriberChannelsCard.test.tsx +832 -0
  511. package/Tests/App/Dashboard/SubscriberNotificationWarnings.test.tsx +215 -0
  512. package/Tests/App/Dashboard/SubscriberTemplateVariables.test.tsx +314 -0
  513. package/Tests/App/Dashboard/TeamBlockPermissionsRedirect.test.tsx +332 -0
  514. package/Tests/App/Dashboard/TeamCreateForm.test.ts +206 -0
  515. package/Tests/App/Dashboard/TeamViewPermissions.test.tsx +713 -0
  516. package/Tests/App/Dashboard/TeamViewSideMenuBlockPermissions.test.tsx +113 -0
  517. package/Tests/App/Dashboard/TeamsCreateAccess.test.tsx +799 -0
  518. package/Tests/App/Dashboard/TelemetryDataRuleForms.test.ts +655 -0
  519. package/Tests/App/Dashboard/TelemetryDataRuleFormsRender.test.tsx +1014 -0
  520. package/Tests/App/Dashboard/TelemetryIngestionKeyEdit.test.tsx +6 -3
  521. package/Tests/App/Dashboard/TelemetryIngestionKeyForm.test.tsx +446 -446
  522. package/Tests/App/Dashboard/TelemetryMonitorFiltersFold.test.tsx +613 -0
  523. package/Tests/App/Dashboard/TelemetryRetentionShells.test.tsx +37 -2
  524. package/Tests/App/Dashboard/TemplateFormsNoInternalDataWarning.test.tsx +698 -0
  525. package/Tests/App/Dashboard/TraceExplorer.test.tsx +338 -0
  526. package/Tests/App/Dashboard/TracesResultTotal.test.tsx +543 -0
  527. package/Tests/App/Dashboard/TracesStatusChartAndFacet.test.tsx +2 -1
  528. package/Tests/App/Dashboard/TriggerRuleCriteriaNames.test.tsx +142 -0
  529. package/Tests/App/Dashboard/TwilioConfigFirstDefault.test.tsx +786 -0
  530. package/Tests/App/Dashboard/UpcomingShiftGetCover.test.tsx +306 -0
  531. package/Tests/App/Dashboard/UseBulkShortenDeviceNames.test.tsx +36 -11
  532. package/Tests/App/Dashboard/UserOverrideForm.test.ts +505 -0
  533. package/Tests/App/Dashboard/UserOverrideFormGuard.test.ts +334 -0
  534. package/Tests/App/Dashboard/UserOverrideWhoIsAway.test.tsx +999 -0
  535. package/Tests/App/Dashboard/UserSettingsEmailPreferences.test.tsx +11 -3
  536. package/Tests/App/Dashboard/UserSettingsNotificationSettings.test.tsx +172 -1
  537. package/Tests/App/Dashboard/UserSettingsSetupChecklistModel.test.ts +33 -11
  538. package/Tests/App/Dashboard/UserSettingsSetupChecklistPage.test.tsx +49 -4
  539. package/Tests/App/Dashboard/UsersPageEmptyState.test.tsx +245 -0
  540. package/Tests/App/Dashboard/VMwareMetricTooltips.test.ts +12 -6
  541. package/Tests/App/Dashboard/WorkflowRunsLogsMenus.test.tsx +44 -7
  542. package/Tests/App/Dashboard/WorkflowRunsPages.test.tsx +5 -1
  543. package/Tests/App/Dashboard/WorkflowTemplatePicker.test.tsx +780 -755
  544. package/Tests/App/Dashboard/WorkflowVariableCreateFormSteps.test.tsx +37 -0
  545. package/Tests/App/Dashboard/WorkflowVariableListsGuard.test.ts +308 -0
  546. package/Tests/App/Dashboard/WorkflowVariableOAuthSettingsEditSteps.test.tsx +13 -6
  547. package/Tests/App/Dashboard/WorkflowVariablesTable.test.tsx +89 -55
  548. package/Tests/App/Dashboard/WorkflowVariablesTableRender.test.tsx +621 -0
  549. package/Tests/App/Dashboard/WorkspaceConnectionPages.test.tsx +628 -0
  550. package/Tests/App/Dashboard/WorkspaceConnectionsGuards.test.ts +398 -0
  551. package/Tests/App/Dashboard/WorkspaceConnectionsWiring.test.ts +213 -0
  552. package/Tests/App/Dashboard/WorkspaceDisconnectRefresh.test.tsx +318 -0
  553. package/Tests/App/Dashboard/WorkspaceMenusConnected.test.tsx +579 -0
  554. package/Tests/App/Dashboard/WorkspaceSideMenuSection.test.ts +433 -0
  555. package/Tests/App/PublicDashboard/AutoRefreshPickerTick.test.tsx +209 -0
  556. package/Tests/App/RarelyUsedMenuSectionsCollapsed.test.tsx +771 -0
  557. package/Tests/App/StatusPage/BulkAddStatusPageMonitorsModal.test.tsx +150 -59
  558. package/Tests/App/StatusPage/StatusPageResourceExplorer.test.tsx +397 -0
  559. package/Tests/App/StatusPage/StatusPageResourceForm.test.tsx +931 -0
  560. package/Tests/App/StatusPage/StatusPageSubscribeOnePage.test.tsx +686 -0
  561. package/Tests/DialogActionRules.ts +16 -5
  562. package/Tests/Helpers/CardHeaderScan.ts +258 -0
  563. package/Tests/Helpers/FormStepsScan.ts +1363 -83
  564. package/Tests/Helpers/HookOrderScan.ts +307 -0
  565. package/Tests/Helpers/MonitorGroupStatusPageRows.ts +237 -0
  566. package/Tests/Helpers/NestedControls.ts +184 -0
  567. package/Tests/Helpers/NestedControlsScan.ts +414 -0
  568. package/Tests/Helpers/SteppedFooterScan.ts +722 -0
  569. package/Tests/Helpers/ToggleUsageScan.ts +4 -2
  570. package/Tests/Models/DatabaseModels/{IncidentFormModel.test.ts → FormModel.test.ts} +450 -488
  571. package/Tests/Models/DatabaseModels/IncidentAlertModel.test.ts +76 -5
  572. package/Tests/Models/DatabaseModels/RunbookRuleCriteriaColumns.test.ts +117 -0
  573. package/Tests/Models/DatabaseModels/UserOverrideColumnDescriptions.test.ts +123 -0
  574. package/Tests/Models/GeneratedKeyColumns.test.ts +145 -0
  575. package/Tests/Models/IncidentCustomFieldApiSchemaContract.test.ts +10 -1
  576. package/Tests/Models/ListOrderColumnModels.test.ts +332 -0
  577. package/Tests/Models/RelationColumnModelTypes.test.ts +135 -0
  578. package/Tests/Models/TelemetryDataRuleColumnDefaults.test.ts +239 -0
  579. package/Tests/ResponsiveFlexLayout.test.ts +111 -0
  580. package/Tests/ResponsiveFlexLayout.ts +165 -0
  581. package/Tests/ResponsiveSpacing.test.ts +627 -0
  582. package/Tests/ResponsiveSpacing.ts +508 -0
  583. package/Tests/ResponsiveVisibility.test.ts +65 -0
  584. package/Tests/ResponsiveVisibility.ts +34 -0
  585. package/Tests/Server/API/BaseAnalyticsAPICountExact.test.ts +185 -0
  586. package/Tests/Server/API/DashboardDomainOrderSslAPI.test.ts +372 -0
  587. package/Tests/Server/API/DashboardDomainVerifyCnameAPI.test.ts +921 -0
  588. package/Tests/Server/API/DashboardSharingPublicRoutes.test.ts +559 -0
  589. package/Tests/Server/API/{IncidentFormAPI.test.ts → FormAPI.test.ts} +92 -93
  590. package/Tests/Server/API/FormBrandingPublicRoutes.test.ts +680 -0
  591. package/Tests/Server/API/{IncidentFormPublicRoutes.test.ts → FormPublicRoutes.test.ts} +182 -126
  592. package/Tests/Server/API/IncidentSubscriberAudienceAPI.test.ts +70 -3
  593. package/Tests/Server/API/ProjectAPICreateWithTenantHeader.test.ts +300 -0
  594. package/Tests/Server/API/ProjectCreateTestHelpers.ts +211 -0
  595. package/Tests/Server/API/ProjectCreateWithTenantHeaderPostgres.test.ts +387 -0
  596. package/Tests/Server/API/PublicRouteInvalidAccessToken.test.ts +29 -12
  597. package/Tests/Server/API/StatusPageDomainVerifyCnameAPI.test.ts +1090 -0
  598. package/Tests/Server/API/StatusPageMasterPageAccess.test.ts +254 -0
  599. package/Tests/Server/API/StatusPageReportScheduleWrites.test.ts +829 -0
  600. package/Tests/Server/API/StatusPageUptimeSettingsWrites.test.ts +417 -0
  601. package/Tests/Server/API/StatusPagesListingMonitorsAPI.test.ts +1029 -0
  602. package/Tests/Server/API/StatusPagesListingMonitorsRoute.test.ts +286 -0
  603. package/Tests/Server/Infrastructure/GlobalCache.test.ts +156 -0
  604. package/Tests/Server/Infrastructure/Postgres/AddIncidentFormsMigration.test.ts +48 -52
  605. package/Tests/Server/Infrastructure/Postgres/AddRunbookRuleMatchCriteriaMigration.test.ts +316 -0
  606. package/Tests/Server/Infrastructure/Postgres/MigrateIncidentFormsToFormsMigration.test.ts +739 -0
  607. package/Tests/Server/Infrastructure/Postgres/TurnOnLinkedAlertSwitchesByDefaultMigration.test.ts +229 -0
  608. package/Tests/Server/Infrastructure/Postgres/UserNotificationEmailRollupColorMigration.test.ts +116 -0
  609. package/Tests/Server/Infrastructure/Postgres/UserNotificationEmailRollupTableMigration.test.ts +109 -22
  610. package/Tests/Server/Middleware/{IncidentFormRateLimit.test.ts → FormRateLimit.test.ts} +214 -227
  611. package/Tests/Server/Services/AlertMeasurementService.test.ts +62 -33
  612. package/Tests/Server/Services/AnalyticsDatabaseServiceExactCount.test.ts +397 -0
  613. package/Tests/Server/Services/CustomDomainCertificateLifecycle.test.ts +1559 -0
  614. package/Tests/Server/Services/CustomDomainCertificateReissue.test.ts +186 -16
  615. package/Tests/Server/Services/DashboardAccessChoice.test.ts +657 -0
  616. package/Tests/Server/Services/DashboardCreateFromTemplate.test.ts +200 -0
  617. package/Tests/Server/Services/DashboardDomainCertificateSweeps.test.ts +1142 -0
  618. package/Tests/Server/Services/DatabaseServiceListOrder.test.ts +713 -0
  619. package/Tests/Server/Services/DiscoveredResourceCreate.test.ts +864 -0
  620. package/Tests/Server/Services/DiscoveredResourceUpdate.test.ts +822 -0
  621. package/Tests/Server/Services/EpisodeRuleSeverityRepair.test.ts +3 -4
  622. package/Tests/Server/Services/FileServiceProject.test.ts +345 -0
  623. package/Tests/Server/Services/FormBranding.test.ts +982 -0
  624. package/Tests/Server/Services/{IncidentFormOwnersCreatedNotification.test.ts → FormOwnersCreatedNotification.test.ts} +44 -30
  625. package/Tests/Server/Services/FormPublicForm.test.ts +1005 -0
  626. package/Tests/Server/Services/FormPublicSubmission.test.ts +1468 -0
  627. package/Tests/Server/Services/{IncidentFormRegistration.test.ts → FormRegistration.test.ts} +37 -45
  628. package/Tests/Server/Services/FormService.test.ts +709 -0
  629. package/Tests/Server/Services/{IncidentFormSubmissionTemplateBranch.test.ts → FormSubmissionTemplateBranch.test.ts} +100 -157
  630. package/Tests/Server/Services/GroupingRuleEpisodeOwners.test.ts +857 -0
  631. package/Tests/Server/Services/GroupingRuleSimpleSetupEngine.test.ts +627 -0
  632. package/Tests/Server/Services/IncidentAlertPostgres.test.ts +26 -3
  633. package/Tests/Server/Services/IncidentAlertStateCascade.test.ts +169 -8
  634. package/Tests/Server/Services/IncidentFormPostgres.test.ts +516 -464
  635. package/Tests/Server/Services/IncidentMeasurementService.test.ts +37 -17
  636. package/Tests/Server/Services/IncidentSeverityDeletePausesComplianceRules.test.ts +19 -33
  637. package/Tests/Server/Services/IncomingCallPolicyEscalationRuleTarget.test.ts +14 -36
  638. package/Tests/Server/Services/MachinePickedColors.test.ts +202 -0
  639. package/Tests/Server/Services/MeasurementDashboardEdits.test.ts +390 -0
  640. package/Tests/Server/Services/MeasurementKeyGeneration.test.ts +484 -0
  641. package/Tests/Server/Services/MonitorStatusServiceValidation.test.ts +302 -105
  642. package/Tests/Server/Services/OidcProviderCreateDefaults.test.ts +252 -0
  643. package/Tests/Server/Services/OnCallDutyPolicyEscalationRuleDefaultName.test.ts +339 -0
  644. package/Tests/Server/Services/OnCallDutyPolicyFirstResponders.test.ts +815 -0
  645. package/Tests/Server/Services/OnCallDutyPolicyFirstRespondersFreePlan.test.ts +270 -0
  646. package/Tests/Server/Services/OnCallDutyPolicyScheduleFirstLayer.test.ts +799 -0
  647. package/Tests/Server/Services/OnCallDutyPolicyScheduleFirstLayerPlans.test.ts +172 -0
  648. package/Tests/Server/Services/OnCallDutyPolicyUserOverrideWhoIsAway.test.ts +571 -0
  649. package/Tests/Server/Services/OnCallSetupReminder.test.ts +35 -13
  650. package/Tests/Server/Services/OnCallUndeliverablePageRulesLink.test.ts +217 -0
  651. package/Tests/Server/Services/ProfileAggregationService.test.ts +213 -4
  652. package/Tests/Server/Services/ProjectCallSMSConfigFirstDefault.test.ts +699 -0
  653. package/Tests/Server/Services/ProjectCallSMSConfigFirstDefaultBilling.test.ts +247 -0
  654. package/Tests/Server/Services/ProjectServiceDefaultIncidentRoles.test.ts +392 -0
  655. package/Tests/Server/Services/ProjectServiceLinkedAlertDefaults.test.ts +188 -0
  656. package/Tests/Server/Services/ProjectServiceNumberPrefix.test.ts +327 -0
  657. package/Tests/Server/Services/RecordingRuleOutputMetricNameGeneration.test.ts +367 -0
  658. package/Tests/Server/Services/RunbookRuleEngineService.test.ts +1543 -0
  659. package/Tests/Server/Services/RunbookRuleService.test.ts +478 -0
  660. package/Tests/Server/Services/SamlProviderCreateDefaults.test.ts +255 -0
  661. package/Tests/Server/Services/ScheduledMaintenanceMeasurementService.test.ts +73 -38
  662. package/Tests/Server/Services/ScheduledMaintenanceSubscriberMonitorGroups.test.ts +333 -0
  663. package/Tests/Server/Services/ScrubRuleSaveValidation.test.ts +947 -0
  664. package/Tests/Server/Services/SeverityCreationRuleBackfill.test.ts +52 -20
  665. package/Tests/Server/Services/StateListServicesOrder.test.ts +441 -0
  666. package/Tests/Server/Services/StaticRuleCriteriaRuntimeCoverage.test.ts +17 -4
  667. package/Tests/Server/Services/StatusPageAccessChoice.test.ts +548 -0
  668. package/Tests/Server/Services/StatusPageDomainCertificateSweeps.test.ts +1238 -0
  669. package/Tests/Server/Services/StatusPageSubscriberNotificationTemplateIncidentRecordAccess.test.ts +191 -27
  670. package/Tests/Server/Services/TeamComplianceSettingPostgres.test.ts +11 -3
  671. package/Tests/Server/Services/TeamCreateAccessGrant.test.ts +607 -0
  672. package/Tests/Server/Services/TelemetryExactCount.test.ts +410 -0
  673. package/Tests/Server/Services/TwilioConfigSendersGuard.test.ts +249 -0
  674. package/Tests/Server/Services/VerificationCodesUseProjectTwilioConfig.test.ts +264 -0
  675. package/Tests/Server/Types/Database/FeedEventTypeFilterQuery.test.ts +5 -4
  676. package/Tests/Server/Types/Database/Permissions/FormBrandingColumns.test.ts +270 -0
  677. package/Tests/Server/Types/Database/Permissions/FormSubmissionRelationSelect.test.ts +201 -0
  678. package/Tests/Server/Utils/Database/ListOrderMaintainer.test.ts +157 -0
  679. package/Tests/Server/Utils/Database/StateOrderGuard.test.ts +720 -0
  680. package/Tests/Server/Utils/EmailRollup/EmailRollupMetadataIntegration.test.ts +92 -0
  681. package/Tests/Server/Utils/EmailRollup/EmailRollupRenderer.test.ts +373 -0
  682. package/Tests/Server/Utils/EmailRollup/EmailRollupTestHarness.ts +7 -0
  683. package/Tests/Server/Utils/EmailRollup/EmailRollupWriter.test.ts +252 -0
  684. package/Tests/Server/Utils/Form/FormSubmissionNote.test.ts +402 -0
  685. package/Tests/Server/Utils/Greenlock/CertificateCleanup.test.ts +526 -0
  686. package/Tests/Server/Utils/Greenlock/CertificateOrder.test.ts +1062 -0
  687. package/Tests/Server/Utils/Greenlock/CertificateOrderBudget.test.ts +243 -0
  688. package/Tests/Server/Utils/Greenlock/CertificateOrderFailures.test.ts +293 -0
  689. package/Tests/Server/Utils/Greenlock/CertificateOrderLock.test.ts +152 -0
  690. package/Tests/Server/Utils/Greenlock/CertificateOwnersGuard.test.ts +119 -0
  691. package/Tests/Server/Utils/Greenlock/CertificateRenewalOwnership.test.ts +1170 -0
  692. package/Tests/Server/Utils/Greenlock/CertificateRenewalSafety.test.ts +368 -0
  693. package/Tests/Server/Utils/Greenlock/CertificateRenewalSchedule.test.ts +188 -11
  694. package/Tests/Server/Utils/Greenlock/CustomDomainOrders.test.ts +723 -0
  695. package/Tests/Server/Utils/Greenlock/InMemoryRedis.ts +189 -0
  696. package/Tests/Server/Utils/Greenlock/NginxAcmeCertificatesToDisk.test.ts +242 -0
  697. package/Tests/Server/Utils/Greenlock/NginxCustomCertificatesToDisk.test.ts +305 -0
  698. package/Tests/Server/Utils/Greenlock/OrderCertGuards.test.ts +583 -0
  699. package/Tests/Server/Utils/Greenlock/OrderCertStorage.test.ts +203 -0
  700. package/Tests/Server/Utils/Measurement/MeasurementDefinitionChange.test.ts +130 -0
  701. package/Tests/Server/Utils/Measurement/MeasurementMetricWriter.test.ts +86 -0
  702. package/Tests/Server/Utils/Measurement/MeasurementStateReference.test.ts +129 -0
  703. package/Tests/Server/Utils/Monitor/DefaultMonitorCriteriaOutcomes.test.ts +577 -0
  704. package/Tests/Server/Utils/StatusPage/AffectedStatusPageResources.test.ts +700 -0
  705. package/Tests/Server/Utils/StatusPage/IncidentTemplateVariableBuilder.test.ts +223 -46
  706. package/Tests/Server/Utils/StatusPage/StatusPagesListingMonitorsBuilder.test.ts +744 -0
  707. package/Tests/Server/Utils/StatusPage/SubscriberIncidentEmailBuilder.test.ts +58 -45
  708. package/Tests/Server/Utils/StatusPage/SubscriberNotificationPreviewBuilder.test.ts +76 -1
  709. package/Tests/Types/CustomDomain/CustomDomainCertificates.test.ts +106 -0
  710. package/Tests/Types/CustomDomain/CustomDomainVerification.test.ts +94 -0
  711. package/Tests/Types/CustomField/CustomFieldCreateSettings.test.ts +5 -173
  712. package/Tests/Types/CustomField/CustomFieldVariableKey.test.ts +160 -17
  713. package/Tests/Types/Dashboard/DashboardAccess.test.ts +460 -0
  714. package/Tests/Types/Filter/FilterConditionUtil.test.ts +59 -0
  715. package/Tests/Types/Form/FormBranding.test.ts +760 -0
  716. package/Tests/Types/Form/FormField.test.ts +1552 -0
  717. package/Tests/Types/{Incident/IncidentFormIpAllowlist.test.ts → Form/FormIpAllowlist.test.ts} +21 -23
  718. package/Tests/Types/Form/FormPublic.test.ts +1295 -0
  719. package/Tests/Types/Form/FormSubmissionAnswer.test.ts +206 -0
  720. package/Tests/Types/Form/FormTargetCatalog.test.ts +389 -0
  721. package/Tests/Types/Form/FormTargetSettings.test.ts +459 -0
  722. package/Tests/Types/Form/LegacyIncidentFormConversion.test.ts +341 -0
  723. package/Tests/Types/IncomingCall/IncomingCallRingTime.test.ts +80 -0
  724. package/Tests/Types/Measurement/MeasurementKey.test.ts +195 -0
  725. package/Tests/Types/Measurement/MeasurementUnit.test.ts +139 -0
  726. package/Tests/Types/Metrics/RecordingRuleOutputMetricName.test.ts +93 -0
  727. package/Tests/Types/Monitor/MonitorCriteria.test.ts +150 -0
  728. package/Tests/Types/Monitor/MonitorCriteriaActionValidation.test.ts +10 -4
  729. package/Tests/Types/Monitor/MonitorCriteriaInstance.test.ts +436 -7
  730. package/Tests/Types/NotificationRule/OnCallRuleKind.test.ts +271 -0
  731. package/Tests/Types/OnCallDutyPolicy/EscalationRuleDefaults.test.ts +230 -0
  732. package/Tests/Types/OnCallDutyPolicy/FirstResponders.test.ts +218 -0
  733. package/Tests/Types/OnCallDutyPolicy/ScheduleFirstLayer.test.ts +300 -0
  734. package/Tests/Types/OnCallDutyPolicy/ScheduleLayerDefaults.test.ts +316 -0
  735. package/Tests/Types/OnCallDutyPolicy/UserOverrideCoverRequest.test.ts +257 -0
  736. package/Tests/Types/Rules/RuleCriteriaFieldRegistry.test.ts +82 -2
  737. package/Tests/Types/Rum/SessionReplayCustomEvents.test.ts +75 -1
  738. package/Tests/Types/Runbook/RunbookRuleCriteria.test.ts +343 -0
  739. package/Tests/Types/SSO/OidcProviderDefaults.test.ts +474 -0
  740. package/Tests/Types/SSO/SamlProviderDefaults.test.ts +150 -0
  741. package/Tests/Types/SSO/SsoProviderDefaults.test.ts +181 -0
  742. package/Tests/Types/ScheduledMaintenance/MaintenanceWindow.test.ts +313 -0
  743. package/Tests/Types/StatusPage/StatusPageAccess.test.ts +393 -0
  744. package/Tests/Types/StatusPage/StatusPagesListingMonitors.test.ts +149 -0
  745. package/Tests/Types/StatusPage/SubscriberNotificationTemplateCompiler.test.ts +9 -5
  746. package/Tests/Types/StatusPage/SubscriberNotificationTemplatePreview.test.ts +42 -1
  747. package/Tests/Types/StatusPage/SubscriberNotificationTemplateVariables.test.ts +135 -23
  748. package/Tests/Types/Telemetry/ScrubRule.test.ts +375 -0
  749. package/Tests/Types/Template/TemplateVariable.test.ts +385 -0
  750. package/Tests/Types/Workflow/ComponentDocumentation.test.ts +2 -2
  751. package/Tests/Types/Workspace/NotificationRules/NotificationRuleConditionColors.test.ts +216 -0
  752. package/Tests/UI/Components/ActionButton/RowActions.test.tsx +214 -14
  753. package/Tests/UI/Components/ActionButton/RowActionsAccessibility.test.tsx +9 -0
  754. package/Tests/UI/Components/ActionButton/RowActionsTrigger.test.tsx +3 -0
  755. package/Tests/UI/Components/ActionButton/SplitActionButtons.test.ts +2 -0
  756. package/Tests/UI/Components/AdvancedPageSection.test.tsx +351 -0
  757. package/Tests/UI/Components/AppliedFilters.test.tsx +187 -0
  758. package/Tests/UI/Components/BasicFormModalSteps.test.tsx +213 -21
  759. package/Tests/UI/Components/BulkOwnerActions.test.tsx +366 -174
  760. package/Tests/UI/Components/BulkUpdateForm.test.tsx +2 -0
  761. package/Tests/UI/Components/BulkUpdateFormConfirmDetails.test.tsx +4 -0
  762. package/Tests/UI/Components/Card.test.tsx +354 -367
  763. package/Tests/UI/Components/CardHeaderActionsGuard.test.tsx +605 -0
  764. package/Tests/UI/Components/CardModelDetailEditModalTitle.test.tsx +195 -0
  765. package/Tests/UI/Components/CardModelDetailHeaderLayout.test.tsx +23 -8
  766. package/Tests/UI/Components/CardModelDetailOnBeforeUpdate.test.tsx +224 -0
  767. package/Tests/UI/Components/CardModelDetailPageButtons.test.tsx +231 -0
  768. package/Tests/UI/Components/CardSelect.test.tsx +45 -0
  769. package/Tests/UI/Components/ChoiceRows.test.tsx +365 -0
  770. package/Tests/UI/Components/CollapsibleSection.test.tsx +85 -0
  771. package/Tests/UI/Components/CommandPalette/CommandPalette.test.tsx +341 -5
  772. package/Tests/UI/Components/CommandPalette/PaletteFilter.test.ts +655 -64
  773. package/Tests/UI/Components/CustomFields/MapFromCustomFieldInput.test.tsx +192 -1
  774. package/Tests/UI/Components/Detail/BooleanValue.test.tsx +97 -0
  775. package/Tests/UI/Components/Detail/DetailCreatedOnIdLine.test.tsx +669 -0
  776. package/Tests/UI/Components/Detail/DetailIdLine.test.tsx +464 -0
  777. package/Tests/UI/Components/Detail/DetailIdLineDarkMode.test.ts +257 -0
  778. package/Tests/UI/Components/Detail/DetailIdLineInLocale.test.tsx +283 -0
  779. package/Tests/UI/Components/Detail/DetailRecordId.test.ts +142 -0
  780. package/Tests/UI/Components/Detail/DetailRecordIdLine.test.tsx +666 -0
  781. package/Tests/UI/Components/Detail/DetailRecordLine.test.tsx +326 -0
  782. package/Tests/UI/Components/Detail/DetailRecordTime.test.ts +324 -0
  783. package/Tests/UI/Components/Detail/PlaceholderText.test.tsx +249 -0
  784. package/Tests/UI/Components/DetailCompactStyle.test.tsx +7 -3
  785. package/Tests/UI/Components/Dropdown/DropdownChange.test.ts +163 -0
  786. package/Tests/UI/Components/EditionLabelLicenseStatus.test.tsx +14 -0
  787. package/Tests/UI/Components/EntityDropdown.test.tsx +103 -1
  788. package/Tests/UI/Components/EntityDropdownClearButton.test.tsx +638 -0
  789. package/Tests/UI/Components/EntityDropdownEscape.test.tsx +6 -6
  790. package/Tests/UI/Components/EntityDropdownFocusLeave.test.tsx +21 -4
  791. package/Tests/UI/Components/EntityDropdownQuery.test.tsx +411 -0
  792. package/Tests/UI/Components/EntityDropdownQueryHelpers.test.ts +131 -0
  793. package/Tests/UI/Components/FacetSidebarControls.test.tsx +3 -2
  794. package/Tests/UI/Components/FeedActionsMenu.test.tsx +192 -0
  795. package/Tests/UI/Components/FeedCard.test.tsx +467 -0
  796. package/Tests/UI/Components/FeedEventTypeChecklist.test.tsx +779 -0
  797. package/Tests/UI/Components/FeedFilterModal.test.tsx +232 -0
  798. package/Tests/UI/Components/FeedFilterSummary.test.tsx +335 -0
  799. package/Tests/UI/Components/FeedMoreMenu.test.tsx +488 -0
  800. package/Tests/UI/Components/FeedOptions.test.ts +79 -195
  801. package/Tests/UI/Components/FilePicker.test.tsx +220 -1
  802. package/Tests/UI/Components/Filters/FilterRowsChangeFilter.test.tsx +300 -0
  803. package/Tests/UI/Components/FoldedSection/FoldedSection.test.tsx +582 -0
  804. package/Tests/UI/Components/FoldedSection/FoldedSectionDarkMode.test.ts +197 -0
  805. package/Tests/UI/Components/FoldedSection/FoldedSectionItem.test.ts +247 -0
  806. package/Tests/UI/Components/FoldedSection/FoldedSectionQueries.ts +86 -0
  807. package/Tests/UI/Components/Forms/AdvancedStepsGuard.test.ts +557 -0
  808. package/Tests/UI/Components/Forms/AnchoredFieldPopupPlacement.test.tsx +195 -0
  809. package/Tests/UI/Components/Forms/BasicFormCollapsibleSections.test.tsx +499 -3
  810. package/Tests/UI/Components/Forms/BasicFormFillsInOnShow.test.tsx +246 -0
  811. package/Tests/UI/Components/Forms/BasicFormFooterSetValue.test.tsx +283 -0
  812. package/Tests/UI/Components/Forms/BasicFormPeoplePicker.test.tsx +345 -0
  813. package/Tests/UI/Components/Forms/BasicFormPrimaryActionLastStep.test.tsx +780 -0
  814. package/Tests/UI/Components/Forms/BasicFormSingleStep.test.tsx +232 -0
  815. package/Tests/UI/Components/Forms/BasicFormStepValidation.test.tsx +7 -4
  816. package/Tests/UI/Components/Forms/BasicFormSubmitAllSteps.test.tsx +4 -3
  817. package/Tests/UI/Components/Forms/CreateFormDefaultsGuard.test.ts +1063 -0
  818. package/Tests/UI/Components/Forms/DeclareAndCreateFormsGuard.test.ts +829 -0
  819. package/Tests/UI/Components/Forms/DiscoveredResourceCreateFormsGuard.test.ts +492 -0
  820. package/Tests/UI/Components/Forms/FilterConditionOnlyWithTwoFiltersGuard.test.ts +333 -0
  821. package/Tests/UI/Components/Forms/FoldedEditorWidthTiming.test.tsx +127 -0
  822. package/Tests/UI/Components/Forms/FoldedSectionsGuard.test.ts +523 -0
  823. package/Tests/UI/Components/Forms/FollowPickName.test.ts +88 -0
  824. package/Tests/UI/Components/Forms/FormFieldDropdownChange.test.tsx +294 -0
  825. package/Tests/UI/Components/Forms/FormFieldMarkdown.test.tsx +11 -5
  826. package/Tests/UI/Components/Forms/FormFieldPasswordManagers.test.tsx +301 -0
  827. package/Tests/UI/Components/Forms/FormFieldTemplateVariables.test.tsx +349 -0
  828. package/Tests/UI/Components/Forms/FormFieldToggleRow.test.tsx +76 -0
  829. package/Tests/UI/Components/Forms/FormModalWidth.test.tsx +659 -0
  830. package/Tests/UI/Components/Forms/FormSummary.test.tsx +609 -1
  831. package/Tests/UI/Components/Forms/GeneratedKeyField.test.tsx +527 -0
  832. package/Tests/UI/Components/Forms/GeneratedKeyFieldDarkMode.test.ts +157 -0
  833. package/Tests/UI/Components/Forms/GeneratedKeyFieldI18n.test.ts +182 -0
  834. package/Tests/UI/Components/Forms/GeneratedKeyGuard.test.ts +386 -0
  835. package/Tests/UI/Components/Forms/IncidentEpisodePublicNoteNotifyPayload.test.tsx +110 -86
  836. package/Tests/UI/Components/Forms/LabelsFormFieldGuard.test.ts +1242 -0
  837. package/Tests/UI/Components/Forms/LongFormStepsGuard.test.ts +861 -9
  838. package/Tests/UI/Components/Forms/MarkdownFormsAreWide.test.ts +510 -0
  839. package/Tests/UI/Components/Forms/MetricAndRecordingRuleFormsGuard.test.ts +400 -0
  840. package/Tests/UI/Components/Forms/ModelFormColorDefaults.test.tsx +659 -0
  841. package/Tests/UI/Components/Forms/ModelFormCreateDefaults.test.tsx +688 -0
  842. package/Tests/UI/Components/Forms/ModelFormDropdownOptionsRefused.test.tsx +3 -2
  843. package/Tests/UI/Components/Forms/ModelFormDropdownQuery.test.tsx +403 -0
  844. package/Tests/UI/Components/Forms/ModelFormModalFormRef.test.tsx +188 -0
  845. package/Tests/UI/Components/Forms/ModelFormOnBeforeUpdate.test.tsx +332 -0
  846. package/Tests/UI/Components/Forms/ModelFormPeoplePicker.test.tsx +452 -0
  847. package/Tests/UI/Components/Forms/ModelFormPreservesUserInput.test.tsx +126 -0
  848. package/Tests/UI/Components/Forms/ModelFormRuleCriteria.test.tsx +205 -2
  849. package/Tests/UI/Components/Forms/ModelFormSinglePickPeoplePicker.test.tsx +453 -0
  850. package/Tests/UI/Components/Forms/ModelFormStateDropdownColors.test.tsx +558 -0
  851. package/Tests/UI/Components/Forms/OidcProviderFormsGuard.test.ts +321 -0
  852. package/Tests/UI/Components/Forms/OneIncidentRolePickerGuard.test.ts +823 -0
  853. package/Tests/UI/Components/Forms/OneSwitchCardsGuard.test.ts +739 -0
  854. package/Tests/UI/Components/Forms/OpenFormSections.test.tsx +169 -0
  855. package/Tests/UI/Components/Forms/OverloadedFormStepsGuard.test.ts +107 -39
  856. package/Tests/UI/Components/Forms/PrimaryActionLastStepGuard.test.ts +478 -0
  857. package/Tests/UI/Components/Forms/ProjectTeamFormsGuard.test.ts +240 -0
  858. package/Tests/UI/Components/Forms/ResourceDetailsOnePlaceGuard.test.ts +936 -0
  859. package/Tests/UI/Components/Forms/ResourceRuleFormsGuard.test.ts +527 -0
  860. package/Tests/UI/Components/Forms/SamlProviderFormsGuard.test.ts +387 -0
  861. package/Tests/UI/Components/Forms/SmallWizardsOnePageGuard.test.ts +331 -0
  862. package/Tests/UI/Components/Forms/SmtpConfigFormsGuard.test.ts +470 -0
  863. package/Tests/UI/Components/Forms/StateChangeDialogsFoldTheNote.test.ts +322 -0
  864. package/Tests/UI/Components/Forms/StatusPageResourceFormsGuard.test.ts +381 -0
  865. package/Tests/UI/Components/Forms/SteppedFormFooter.test.ts +225 -0
  866. package/Tests/UI/Components/Forms/SteppedFormFooterTiming.test.tsx +235 -0
  867. package/Tests/UI/Components/Forms/SwitchCardsGuard.test.ts +339 -0
  868. package/Tests/UI/Components/Forms/TelemetryDataRuleFormsGuard.test.ts +383 -0
  869. package/Tests/UI/Components/Forms/UniqueName.test.ts +163 -0
  870. package/Tests/UI/Components/Forms/Utils/AdvancedFormSection.test.ts +521 -0
  871. package/Tests/UI/Components/Forms/Utils/CreateFormColorDefaults.test.ts +373 -0
  872. package/Tests/UI/Components/Forms/Utils/CreateFormDefaults.test.ts +246 -0
  873. package/Tests/UI/Components/Forms/Utils/FoldedFormFields.test.ts +482 -0
  874. package/Tests/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.test.ts +10 -1
  875. package/Tests/UI/Components/Icon.test.tsx +51 -3
  876. package/Tests/UI/Components/InputPasswordManagers.test.tsx +189 -0
  877. package/Tests/UI/Components/LabelRuleImportExport.test.tsx +32 -0
  878. package/Tests/UI/Components/List.test.tsx +136 -3
  879. package/Tests/UI/Components/ListDragAndDrop.test.tsx +203 -0
  880. package/Tests/UI/Components/LogsViewerResultTotal.test.tsx +532 -0
  881. package/Tests/UI/Components/MarkdownEditor.test.tsx +3 -3
  882. package/Tests/UI/Components/MarkdownEditorToolbar.test.tsx +693 -0
  883. package/Tests/UI/Components/MarkdownEditorToolbarDarkMode.test.ts +287 -0
  884. package/Tests/UI/Components/MarkdownToolbarLayout.test.ts +366 -0
  885. package/Tests/UI/Components/MarkdownViewerCopy.test.tsx +40 -1
  886. package/Tests/UI/Components/MasterPageExtensionEvents.test.tsx +236 -0
  887. package/Tests/UI/Components/MemberRoleAssignment.test.tsx +51 -7
  888. package/Tests/UI/Components/MenuItemIcons.tsx +152 -0
  889. package/Tests/UI/Components/ModalSecondaryButton.test.tsx +60 -3
  890. package/Tests/UI/Components/ModelFormDraftValues.test.tsx +255 -0
  891. package/Tests/UI/Components/ModelListEmptyState.test.tsx +107 -14
  892. package/Tests/UI/Components/ModelPageHeaderChanged.test.tsx +293 -0
  893. package/Tests/UI/Components/ModelSwitchCard.test.tsx +813 -0
  894. package/Tests/UI/Components/ModelSwitchEvents.test.ts +188 -0
  895. package/Tests/UI/Components/ModelSwitchRow.test.tsx +861 -0
  896. package/Tests/UI/Components/ModelSwitchUtil.test.ts +239 -0
  897. package/Tests/UI/Components/ModelSwitchesCard.test.tsx +699 -0
  898. package/Tests/UI/Components/ModelTable/BaseModelTableBulkDelete.test.tsx +3 -0
  899. package/Tests/UI/Components/ModelTable/BaseModelTableBulkSelectAll.test.tsx +2 -0
  900. package/Tests/UI/Components/ModelTable/BaseModelTableColumnCustomization.test.tsx +2 -0
  901. package/Tests/UI/Components/ModelTable/BaseModelTableCreateButtonTitle.test.tsx +78 -6
  902. package/Tests/UI/Components/ModelTable/BaseModelTableDeleteAndEmptyStates.test.tsx +5 -4
  903. package/Tests/UI/Components/ModelTable/BaseModelTableDeleteLock.test.tsx +425 -0
  904. package/Tests/UI/Components/ModelTable/BaseModelTableDeleteNames.test.tsx +2 -0
  905. package/Tests/UI/Components/ModelTable/BaseModelTableDragReorder.test.tsx +661 -0
  906. package/Tests/UI/Components/ModelTable/BaseModelTableEmptyStateAction.test.tsx +432 -92
  907. package/Tests/UI/Components/ModelTable/BaseModelTableFilterModalRows.test.tsx +286 -0
  908. package/Tests/UI/Components/ModelTable/BaseModelTableMenuIcons.test.tsx +682 -0
  909. package/Tests/UI/Components/ModelTable/BaseModelTablePermissionGating.test.tsx +2 -0
  910. package/Tests/UI/Components/ModelTable/BaseModelTableRowActions.test.tsx +4 -0
  911. package/Tests/UI/Components/ModelTable/ColumnCustomizationModal.test.tsx +2 -1
  912. package/Tests/UI/Components/ModelTable/FeedMoreMenuMatchesTable.test.tsx +321 -0
  913. package/Tests/UI/Components/ModelTable/ModelTableEmptyState.test.ts +741 -0
  914. package/Tests/UI/Components/ModelTable/ModelTableWrapContent.test.tsx +2 -0
  915. package/Tests/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.test.ts +70 -0
  916. package/Tests/UI/Components/MoreMenuCheckedItems.test.tsx +307 -0
  917. package/Tests/UI/Components/MoreMenuItemColor.test.tsx +187 -0
  918. package/Tests/UI/Components/MoreMenuPortal.test.tsx +3 -0
  919. package/Tests/UI/Components/NavBar.test.tsx +147 -1
  920. package/Tests/UI/Components/NavBarCategoryToggleDarkMode.test.ts +188 -0
  921. package/Tests/UI/Components/NavBarMenuCatalog.test.tsx +653 -0
  922. package/Tests/UI/Components/NavBarMenuFolding.test.tsx +939 -0
  923. package/Tests/UI/Components/NavBarMenuSearch.test.tsx +295 -213
  924. package/Tests/UI/Components/NestedControlsGuard.test.ts +300 -0
  925. package/Tests/UI/Components/ObjectID/ObjectIDView.test.tsx +191 -0
  926. package/Tests/UI/Components/PageBreadcrumbOverride.test.tsx +202 -0
  927. package/Tests/UI/Components/Pagination.test.tsx +1038 -1
  928. package/Tests/UI/Components/PaginationIntegration.test.tsx +120 -3
  929. package/Tests/UI/Components/PaginationSummary.test.ts +300 -0
  930. package/Tests/UI/Components/PaginationTranslation.test.tsx +310 -0
  931. package/Tests/UI/Components/PeoplePicker/OwnersFieldGuard.test.ts +684 -0
  932. package/Tests/UI/Components/PeoplePicker/OwnersFormField.test.ts +167 -0
  933. package/Tests/UI/Components/PeoplePicker/PeopleListAndAvatar.test.tsx +306 -0
  934. package/Tests/UI/Components/PeoplePicker/PeoplePicker.test.tsx +702 -0
  935. package/Tests/UI/Components/PeoplePicker/PeoplePickerChange.test.tsx +414 -0
  936. package/Tests/UI/Components/PeoplePicker/PeoplePickerExcludePicks.test.tsx +582 -0
  937. package/Tests/UI/Components/PeoplePicker/PeoplePickerKinds.test.ts +453 -0
  938. package/Tests/UI/Components/PeoplePicker/PeoplePickerOnCallScheduleKind.test.ts +371 -0
  939. package/Tests/UI/Components/PeoplePicker/PeoplePickerSinglePick.test.tsx +519 -0
  940. package/Tests/UI/Components/PeoplePicker/PeoplePickerSinglePickTypes.test.ts +174 -0
  941. package/Tests/UI/Components/PeoplePicker/PeoplePickerTypes.test.ts +251 -0
  942. package/Tests/UI/Components/Pill.test.tsx +128 -0
  943. package/Tests/UI/Components/PublicFormFields.test.ts +321 -0
  944. package/Tests/UI/Components/ResetObjectID.test.tsx +6 -6
  945. package/Tests/UI/Components/RowActionsLockedForRow.test.tsx +316 -0
  946. package/Tests/UI/Components/RuleCriteria/RuleCriteriaBuilder.test.tsx +900 -270
  947. package/Tests/UI/Components/RuleCriteria/RuleCriteriaBuilderDarkMode.test.ts +220 -0
  948. package/Tests/UI/Components/RuleCriteria/RuleCriteriaBuilderI18n.test.ts +259 -0
  949. package/Tests/UI/Components/RuleCriteria/RuleCriteriaBuilderTranslation.test.tsx +182 -0
  950. package/Tests/UI/Components/RuleCriteria/RuleCriteriaFields.test.ts +906 -0
  951. package/Tests/UI/Components/RuleCriteria/RuleCriteriaModelTable.test.tsx +189 -10
  952. package/Tests/UI/Components/RuleCriteria/RuleCriteriaNamesGuard.test.ts +399 -0
  953. package/Tests/UI/Components/RuleRun/RuleDetailFields.test.tsx +113 -31
  954. package/Tests/UI/Components/RuleRun/RuleEnabledField.test.ts +100 -0
  955. package/Tests/UI/Components/RuleRun/RuleTable.test.tsx +29 -0
  956. package/Tests/UI/Components/RuleRun/RuleTableCreateForm.test.tsx +308 -0
  957. package/Tests/UI/Components/RuleRun/RuleViewDescription.test.tsx +107 -0
  958. package/Tests/UI/Components/SaveStatus.test.tsx +81 -0
  959. package/Tests/UI/Components/SharedComponentsInLocale.test.tsx +286 -0
  960. package/Tests/UI/Components/SharedComponentsOwnWordsInLocale.test.tsx +487 -0
  961. package/Tests/UI/Components/SideMenuSection.test.tsx +75 -3
  962. package/Tests/UI/Components/SideMenuSectionState.test.tsx +99 -5
  963. package/Tests/UI/Components/SideOverSpacing.test.tsx +219 -0
  964. package/Tests/UI/Components/SmtpConfig/SmtpConfigFormFields.test.ts +1078 -0
  965. package/Tests/UI/Components/SrOnlyForeignRule.test.tsx +5 -23
  966. package/Tests/UI/Components/Sso/OidcProviderForm.test.tsx +608 -0
  967. package/Tests/UI/Components/Sso/OidcProviderFormFields.test.ts +698 -0
  968. package/Tests/UI/Components/Sso/SamlProviderForm.test.tsx +583 -0
  969. package/Tests/UI/Components/Sso/SamlProviderFormFields.test.ts +619 -0
  970. package/Tests/UI/Components/StateTimeline/CurrentlyActiveIndicator.test.tsx +227 -0
  971. package/Tests/UI/Components/StateTimeline/StateTimelineColumns.test.tsx +535 -0
  972. package/Tests/UI/Components/StateTimeline/StateTimelineDuration.test.tsx +236 -0
  973. package/Tests/UI/Components/StateTimeline/StateTimelineEndsAt.test.tsx +133 -0
  974. package/Tests/UI/Components/SteppedEditFormSave.test.tsx +236 -83
  975. package/Tests/UI/Components/Table/EmptyTableMessage.test.ts +422 -0
  976. package/Tests/UI/Components/Table/TableDragAndDrop.test.tsx +575 -0
  977. package/Tests/UI/Components/Table/TableEmptyState.test.tsx +300 -62
  978. package/Tests/UI/Components/Table/TableEmptyStateBuilders.test.ts +239 -0
  979. package/Tests/UI/Components/Table/TableEmptyStateComponent.test.tsx +635 -0
  980. package/Tests/UI/Components/Table/TableEmptyStateDarkMode.test.ts +239 -0
  981. package/Tests/UI/Components/TableBulkCsvExport.test.tsx +2 -0
  982. package/Tests/UI/Components/TableColumnList.test.tsx +108 -0
  983. package/Tests/UI/Components/TableLoadingStates.test.tsx +2 -0
  984. package/Tests/UI/Components/TableRowActions.test.tsx +6 -42
  985. package/Tests/UI/Components/TableRowSelectability.test.tsx +2 -0
  986. package/Tests/UI/Components/TelemetryViewer/TelemetryViewerResultTotal.test.tsx +371 -0
  987. package/Tests/UI/Components/TemplateVariables/InsertTemplateVariableButton.test.tsx +353 -0
  988. package/Tests/UI/Components/TemplateVariables/MarkdownConvertersTemplateVariables.test.ts +121 -0
  989. package/Tests/UI/Components/TemplateVariables/MarkdownEditorTemplateVariables.test.tsx +634 -0
  990. package/Tests/UI/Components/TemplateVariables/TemplateVariableMenu.test.tsx +371 -0
  991. package/Tests/UI/Components/TemplateVariables/TemplateVariableTextControl.test.tsx +438 -0
  992. package/Tests/UI/Components/TemplateVariables/TemplateVariablesList.test.tsx +352 -0
  993. package/Tests/UI/Components/TemplateVariables/TextControlUtil.test.tsx +206 -0
  994. package/Tests/UI/Components/Toggle.test.tsx +185 -30
  995. package/Tests/UI/Components/ToggleMatchesProduct.test.tsx +251 -0
  996. package/Tests/UI/Components/ToggleUsageGuard.test.ts +1 -1
  997. package/Tests/UI/Components/UseSaveModelSwitch.test.tsx +409 -0
  998. package/Tests/UI/Components/Workflow/ArgumentsForm.test.tsx +3 -3
  999. package/Tests/UI/Components/Workflow/ArgumentsFormAdvancedSettings.test.tsx +83 -27
  1000. package/Tests/UI/Components/Workflow/ComponentPicker/ComponentPickerBottomSpacing.test.tsx +293 -0
  1001. package/Tests/UI/Components/Workflow/RunModalSpacing.test.tsx +171 -0
  1002. package/Tests/UI/Components/Workflow/WorkflowBuilderInLocale.test.tsx +719 -0
  1003. package/Tests/UI/Components/Workflow/WorkflowLogModal.test.tsx +7 -2
  1004. package/Tests/UI/Components/Workflow/WorkflowSentencesInLocale.test.ts +444 -0
  1005. package/Tests/UI/Components/useFeedOptions.test.tsx +1 -1
  1006. package/Tests/UI/Components/useSaveOnChange.test.tsx +341 -0
  1007. package/Tests/UI/DeleteConfirmationNamesGuard.test.ts +64 -3
  1008. package/Tests/UI/EsbuildConfig.test.ts +39 -0
  1009. package/Tests/UI/EsbuildLocales.test.ts +1430 -0
  1010. package/Tests/UI/ForeignHiddenRuleGuard.test.ts +5 -5
  1011. package/Tests/UI/HookOrderGuard.test.ts +375 -0
  1012. package/Tests/UI/Monitor/MonitorStepRetrySettings.test.tsx +1 -2
  1013. package/Tests/UI/Monitor/MonitorSummaryResponseGoesMissing.test.tsx +147 -0
  1014. package/Tests/UI/Rum/ChunkLoader.test.ts +441 -0
  1015. package/Tests/UI/Rum/InactivityMap.test.ts +582 -1
  1016. package/Tests/UI/Rum/ReplayEngine.test.ts +433 -0
  1017. package/Tests/UI/Rum/ReplayPlaybackIntent.test.ts +27 -0
  1018. package/Tests/UI/Rum/ReplayRail.test.tsx +106 -0
  1019. package/Tests/UI/Rum/ReplayRailDetail.test.tsx +85 -0
  1020. package/Tests/UI/Rum/ReplaySignals.test.ts +115 -0
  1021. package/Tests/UI/Rum/ReplayStageOverlays.test.tsx +151 -0
  1022. package/Tests/UI/Rum/ReplayTimeline.test.tsx +204 -5
  1023. package/Tests/UI/Rum/ReplayUi.test.tsx +150 -1
  1024. package/Tests/UI/Rum/SessionReplaySettingsPolicyLoading.test.tsx +97 -0
  1025. package/Tests/UI/Rum/SessionReplayUsersTable.test.tsx +7 -4
  1026. package/Tests/UI/Styles/PaginationDarkTheme.test.tsx +274 -0
  1027. package/Tests/UI/Styles/PillDarkTheme.test.tsx +22 -0
  1028. package/Tests/UI/Styles/ToggleTheme.test.ts +425 -191
  1029. package/Tests/UI/Styles/TopLayerBackdrop.test.ts +734 -0
  1030. package/Tests/UI/Styles/TopLayerBackdropGuard.ts +789 -0
  1031. package/Tests/UI/Utils/AnalyticsModelAPICountExact.test.ts +139 -0
  1032. package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +13 -76
  1033. package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +4 -15
  1034. package/Tests/UI/Utils/DefaultInviteTeam.test.ts +722 -0
  1035. package/Tests/UI/Utils/DropdownOptionColors.test.ts +398 -0
  1036. package/Tests/UI/Utils/ForeignDomMutationGuard.test.tsx +711 -0
  1037. package/Tests/UI/Utils/GlobalTranslation.test.ts +222 -0
  1038. package/Tests/UI/Utils/GrantablePermission.test.ts +782 -0
  1039. package/Tests/UI/Utils/PermissionGateColumnUpdate.test.ts +211 -0
  1040. package/Tests/UI/Utils/Telemetry/ResultTotal.test.ts +234 -0
  1041. package/Tests/UI/Utils/Telemetry/UseResultTotal.test.tsx +616 -0
  1042. package/Tests/UI/Utils/TranslateTemplate.test.ts +31 -0
  1043. package/Tests/UI/Utils/Translator.test.ts +502 -0
  1044. package/Tests/UI/Utils/UseClockTick.test.tsx +137 -2
  1045. package/Tests/UI/Utils/UseLiveDuration.test.tsx +625 -0
  1046. package/Tests/Utils/ColorContrast.test.ts +108 -0
  1047. package/Tests/Utils/DeveloperDocs/AiAssistantExamples.test.ts +14 -0
  1048. package/Tests/Utils/DeveloperDocs/ApiExamples.test.ts +10 -117
  1049. package/Tests/Utils/DeveloperDocs/DeveloperDocsLiveFixture.ts +114 -0
  1050. package/Tests/Utils/DeveloperDocs/ExampleBuilder.test.ts +851 -0
  1051. package/Tests/Utils/DeveloperDocs/ExampleValues.test.ts +101 -0
  1052. package/Tests/Utils/DeveloperDocs/Hcl.test.ts +204 -0
  1053. package/Tests/Utils/DeveloperDocs/LiveData.test.ts +273 -0
  1054. package/Tests/Utils/DeveloperDocs/PageLookups.test.ts +297 -0
  1055. package/Tests/Utils/DeveloperDocs/ResourceProfiles.test.ts +582 -0
  1056. package/Tests/Utils/DeveloperDocs/TerraformConfig.test.ts +216 -22
  1057. package/Tests/Utils/DeveloperDocs/TerraformSchema.test.ts +94 -0
  1058. package/Tests/Utils/DistinctColor.test.ts +446 -0
  1059. package/Tests/Utils/Email/EmailColorUtil.test.ts +356 -0
  1060. package/Tests/Utils/Episode/EpisodeTemplateVariables.test.ts +106 -0
  1061. package/Tests/Utils/Incident/IncidentNoteTemplateVariables.test.ts +143 -21
  1062. package/Tests/Utils/KeyFromName.test.ts +442 -0
  1063. package/Tests/Utils/ListOrder.test.ts +889 -0
  1064. package/Tests/Utils/Markdown/UntrustedMarkdown.test.ts +4 -6
  1065. package/Tests/Utils/Measurement/MeasurementMoments.test.ts +531 -0
  1066. package/Tests/Utils/Monitor/MonitorOverviewPresentationUtil.test.ts +14 -2
  1067. package/Tests/Utils/Monitor/MonitoringIntervalUtil.test.ts +1 -1
  1068. package/Tests/Utils/NetworkDiscovery/ShortHostnameUtil.test.ts +2 -2
  1069. package/Tests/Utils/Project/NumberPrefix.test.ts +452 -0
  1070. package/Tests/Utils/Slo/SloHealth.test.ts +28 -6
  1071. package/Tests/Utils/StateOrder.test.ts +850 -0
  1072. package/Tests/Utils/StatusPage/ReportSchedule.test.ts +867 -0
  1073. package/Tests/Utils/Telemetry/DiscoveredResourceName.test.ts +189 -0
  1074. package/Tests/Utils/WordMatch.test.ts +104 -0
  1075. package/Types/BrandColors.ts +10 -0
  1076. package/Types/CustomDomain/CustomDomainCertificates.ts +128 -0
  1077. package/Types/CustomDomain/CustomDomainVerification.ts +78 -0
  1078. package/Types/CustomField/CustomFieldCreateSettings.ts +15 -123
  1079. package/Types/CustomField/CustomFieldValueFormat.ts +3 -2
  1080. package/Types/CustomField/CustomFieldVariableKey.ts +140 -111
  1081. package/Types/Dashboard/DashboardAccess.ts +250 -0
  1082. package/Types/Dashboard/DashboardTemplates.ts +33 -0
  1083. package/Types/Database/ListOrderColumn.ts +61 -0
  1084. package/Types/Filter/FilterConditionUtil.ts +29 -0
  1085. package/Types/Form/FormBranding.ts +475 -0
  1086. package/Types/Form/FormField.ts +1193 -0
  1087. package/Types/{Incident/IncidentFormIpAllowlist.ts → Form/FormIpAllowlist.ts} +50 -50
  1088. package/Types/Form/FormPublic.ts +1347 -0
  1089. package/Types/Form/FormSubmissionAnswer.ts +159 -0
  1090. package/Types/Form/FormTargetCatalog.ts +299 -0
  1091. package/Types/Form/FormTargetSettings.ts +450 -0
  1092. package/Types/Form/FormTargetType.ts +86 -0
  1093. package/Types/Form/LegacyIncidentFormConversion.ts +249 -0
  1094. package/Types/IncomingCall/IncomingCallRingTime.ts +48 -0
  1095. package/Types/Log/LogScrubField.ts +14 -0
  1096. package/Types/Measurement/MeasurementKey.ts +107 -0
  1097. package/Types/Measurement/MeasurementUnit.ts +97 -0
  1098. package/Types/Metrics/RecordingRuleOutputMetricName.ts +73 -0
  1099. package/Types/Monitor/MonitorCriteria.ts +27 -0
  1100. package/Types/Monitor/MonitorCriteriaInstance.ts +213 -28
  1101. package/Types/Monitor/MonitorStep.ts +2 -0
  1102. package/Types/Monitor/MonitorSteps.ts +2 -0
  1103. package/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.ts +6 -3
  1104. package/Types/Monitor/SeriesContext/SeriesLabelDisplay.ts +1 -1
  1105. package/Types/NotificationRule/OnCallRuleKind.ts +194 -0
  1106. package/Types/OnCallDutyPolicy/EscalationRuleDefaults.ts +147 -0
  1107. package/Types/OnCallDutyPolicy/FirstResponders.ts +132 -0
  1108. package/Types/OnCallDutyPolicy/MiscDataId.ts +38 -0
  1109. package/Types/OnCallDutyPolicy/ScheduleFirstLayer.ts +165 -0
  1110. package/Types/OnCallDutyPolicy/ScheduleLayerDefaults.ts +160 -0
  1111. package/Types/OnCallDutyPolicy/UserOverrideCoverRequest.ts +148 -0
  1112. package/Types/Permission.ts +41 -35
  1113. package/Types/Rules/RuleCriteriaFieldRegistry.ts +46 -1
  1114. package/Types/Rum/SessionReplay.ts +25 -0
  1115. package/Types/Rum/SessionReplayCustomEvents.ts +60 -0
  1116. package/Types/Runbook/RunbookRuleCriteria.ts +206 -0
  1117. package/Types/SSO/OidcProviderDefaults.ts +282 -0
  1118. package/Types/SSO/SamlProviderDefaults.ts +77 -0
  1119. package/Types/SSO/SsoProviderDefaults.ts +101 -0
  1120. package/Types/ScheduledMaintenance/MaintenanceWindow.ts +167 -0
  1121. package/Types/StatusPage/IncidentSubscriberAudience.ts +4 -3
  1122. package/Types/StatusPage/StatusPageAccess.ts +215 -0
  1123. package/Types/StatusPage/StatusPagesListingMonitors.ts +150 -0
  1124. package/Types/StatusPage/SubscriberNotificationTemplatePreview.ts +8 -2
  1125. package/Types/StatusPage/SubscriberNotificationTemplateVariables.ts +68 -27
  1126. package/Types/Telemetry/ScrubRule.ts +240 -0
  1127. package/Types/Template/TemplateVariable.ts +297 -0
  1128. package/Types/Workspace/NotificationRules/NotificationRuleCondition.ts +27 -56
  1129. package/UI/Components/404.tsx +8 -2
  1130. package/UI/Components/AI/GenerateFromAIModal.tsx +11 -6
  1131. package/UI/Components/AIAgent/AIAgent.tsx +8 -2
  1132. package/UI/Components/ActionButton/ActionButtonSchema.ts +17 -1
  1133. package/UI/Components/ActionButton/RowActions.tsx +34 -19
  1134. package/UI/Components/ActionButton/SplitActionButtons.ts +36 -3
  1135. package/UI/Components/ActionCard/ActionCard.tsx +14 -2
  1136. package/UI/Components/AdvancedPageSection/AdvancedPageSection.tsx +112 -0
  1137. package/UI/Components/AttachmentList/EventAttachmentList.tsx +8 -4
  1138. package/UI/Components/AttributesJSON/AttributesJSONPreferences.ts +5 -4
  1139. package/UI/Components/AttributesJSON/AttributesJSONView.tsx +18 -4
  1140. package/UI/Components/AttributesJSON/AttributesViewToggle.tsx +12 -3
  1141. package/UI/Components/AttributesJSON/CopyAttributesAsJSONButton.tsx +76 -23
  1142. package/UI/Components/AutocompleteTextInput/AutocompleteTextInput.tsx +7 -2
  1143. package/UI/Components/Breadcrumbs/Breadcrumbs.tsx +1 -1
  1144. package/UI/Components/BulkUpdate/BulkOwnerActions.tsx +55 -150
  1145. package/UI/Components/BulkUpdate/BulkUpdateForm.tsx +94 -30
  1146. package/UI/Components/Button/Button.tsx +1 -1
  1147. package/UI/Components/Button/DropdownButton.tsx +1 -1
  1148. package/UI/Components/CSVFileUpload/CSVFileUpload.tsx +88 -20
  1149. package/UI/Components/Captcha/Captcha.tsx +4 -1
  1150. package/UI/Components/Card/Card.tsx +139 -80
  1151. package/UI/Components/Card/CardMoreMenu.tsx +30 -0
  1152. package/UI/Components/CardSelect/CardSelect.tsx +51 -17
  1153. package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +13 -8
  1154. package/UI/Components/Charts/ChartGroup/NoDataMessage.tsx +5 -1
  1155. package/UI/Components/Charts/ChartLibrary/Annotations/AnnotationHoverCard.tsx +9 -1
  1156. package/UI/Components/Charts/ChartLibrary/Annotations/ChartAnnotationLayer.tsx +26 -5
  1157. package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +11 -1
  1158. package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +11 -1
  1159. package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +11 -1
  1160. package/UI/Components/Charts/TimeRangeZoom/ResetTimeRangeZoomButton.tsx +12 -4
  1161. package/UI/Components/Checkbox/Checkbox.tsx +6 -4
  1162. package/UI/Components/ChoiceRows/ChoiceRows.tsx +249 -0
  1163. package/UI/Components/CodeBlock/CodeBlock.tsx +9 -2
  1164. package/UI/Components/CodeEditor/CodeEditor.tsx +82 -29
  1165. package/UI/Components/CollapsibleSection/CollapsibleSection.tsx +38 -4
  1166. package/UI/Components/ColorViewer/ColorViewer.tsx +13 -2
  1167. package/UI/Components/CommandPalette/CommandPalette.tsx +28 -12
  1168. package/UI/Components/CommandPalette/PaletteFilter.ts +962 -75
  1169. package/UI/Components/CommandPalette/PaletteRow.tsx +35 -3
  1170. package/UI/Components/CommandPalette/Types.ts +37 -1
  1171. package/UI/Components/CopyTextButton/CopyTextButton.tsx +7 -3
  1172. package/UI/Components/CopyableButton/CopyableButton.tsx +7 -4
  1173. package/UI/Components/CustomFields/CustomFieldsDetail.tsx +16 -1
  1174. package/UI/Components/CustomFields/DropdownOptionsInput.tsx +22 -3
  1175. package/UI/Components/CustomFields/MapFromCustomFieldInput.tsx +137 -25
  1176. package/UI/Components/Dashboard/DashboardVariableControl.tsx +27 -6
  1177. package/UI/Components/Date/CustomTimeRangeModal.tsx +17 -13
  1178. package/UI/Components/Date/RangeStartAndEndDateEdit.tsx +36 -16
  1179. package/UI/Components/Date/RangeStartAndEndDateView.tsx +9 -1
  1180. package/UI/Components/Date/StartAndEndDate.tsx +9 -2
  1181. package/UI/Components/Date/TimeRangePickerDropdown.tsx +21 -9
  1182. package/UI/Components/DeleteConfirmation/DeleteConfirmationMessage.tsx +50 -9
  1183. package/UI/Components/Detail/BooleanValue.tsx +45 -0
  1184. package/UI/Components/Detail/Detail.tsx +159 -55
  1185. package/UI/Components/Detail/DetailIdLine.tsx +229 -0
  1186. package/UI/Components/Detail/DetailRecordId.ts +96 -0
  1187. package/UI/Components/Detail/DetailRecordLine.tsx +96 -0
  1188. package/UI/Components/Detail/DetailRecordTime.ts +196 -0
  1189. package/UI/Components/Detail/Field.ts +10 -0
  1190. package/UI/Components/Detail/PlaceholderText.tsx +22 -1
  1191. package/UI/Components/Dictionary/Dictionary.tsx +11 -1
  1192. package/UI/Components/Dictionary/DictionaryOfStingsViewer.tsx +9 -2
  1193. package/UI/Components/Dropdown/Dropdown.tsx +6 -3
  1194. package/UI/Components/Dropdown/DropdownChange.ts +198 -0
  1195. package/UI/Components/DuplicateModel/DuplicateModel.tsx +31 -6
  1196. package/UI/Components/EditionLabel/EditionLabel.tsx +333 -191
  1197. package/UI/Components/EntityDropdown/EntityDropdown.tsx +334 -137
  1198. package/UI/Components/EntityDropdown/EntityDropdownQuery.ts +119 -0
  1199. package/UI/Components/ErrorBoundary.tsx +40 -21
  1200. package/UI/Components/ErrorMessage/ErrorMessage.tsx +1 -1
  1201. package/UI/Components/EventItem/EventItem.tsx +14 -4
  1202. package/UI/Components/Events/RecurringViewElement.tsx +24 -3
  1203. package/UI/Components/ExpandableText/ExpandableText.tsx +6 -1
  1204. package/UI/Components/Feed/FeedActionsMenu.tsx +49 -0
  1205. package/UI/Components/Feed/FeedCard.tsx +156 -0
  1206. package/UI/Components/Feed/FeedEventTypeChecklist.tsx +239 -0
  1207. package/UI/Components/Feed/FeedFilterModal.tsx +54 -0
  1208. package/UI/Components/Feed/FeedFilterSummary.tsx +114 -0
  1209. package/UI/Components/Feed/FeedItem.tsx +5 -1
  1210. package/UI/Components/Feed/FeedMoreMenu.tsx +100 -0
  1211. package/UI/Components/Feed/FeedOptions.ts +44 -114
  1212. package/UI/Components/FilePicker/FilePicker.tsx +148 -48
  1213. package/UI/Components/FilterButtons/FilterButtons.tsx +6 -2
  1214. package/UI/Components/Filters/AppliedFilters.tsx +90 -0
  1215. package/UI/Components/Filters/BooleanFilter.tsx +5 -1
  1216. package/UI/Components/Filters/DateFilter.tsx +33 -6
  1217. package/UI/Components/Filters/DropdownFilter.tsx +5 -1
  1218. package/UI/Components/Filters/EntityFilter.tsx +55 -18
  1219. package/UI/Components/Filters/FilterPlaceholder.ts +21 -0
  1220. package/UI/Components/Filters/FilterViewer.tsx +205 -143
  1221. package/UI/Components/Filters/FiltersForm.tsx +19 -4
  1222. package/UI/Components/Filters/NumberFilter.tsx +34 -11
  1223. package/UI/Components/Filters/TextFilter.tsx +29 -10
  1224. package/UI/Components/FoldedSection/FoldedSection.tsx +370 -0
  1225. package/UI/Components/FoldedSection/FoldedSectionItem.ts +141 -0
  1226. package/UI/Components/FoldedSection/FoldedSectionTitles.ts +39 -0
  1227. package/UI/Components/FormModal/BasicFormModal.tsx +53 -17
  1228. package/UI/Components/Forms/BasicForm.tsx +331 -46
  1229. package/UI/Components/Forms/CollapsibleFormSection.tsx +134 -15
  1230. package/UI/Components/Forms/Fields/ColorPicker.tsx +6 -3
  1231. package/UI/Components/Forms/Fields/FormField.tsx +333 -140
  1232. package/UI/Components/Forms/Fields/GeneratedKeyField.tsx +332 -0
  1233. package/UI/Components/Forms/Fields/IconPicker.tsx +7 -4
  1234. package/UI/Components/Forms/Fields/PermissionPicker.tsx +11 -4
  1235. package/UI/Components/Forms/FormSummary.tsx +163 -15
  1236. package/UI/Components/Forms/ModelForm.tsx +295 -16
  1237. package/UI/Components/Forms/Steps/Steps.tsx +4 -1
  1238. package/UI/Components/Forms/Types/Field.ts +192 -1
  1239. package/UI/Components/Forms/Types/FormFieldSchemaType.ts +5 -0
  1240. package/UI/Components/Forms/Utils/AdvancedFormSection.ts +333 -0
  1241. package/UI/Components/Forms/Utils/CreateFormDefaults.ts +333 -0
  1242. package/UI/Components/Forms/Utils/FoldedFormFields.ts +393 -0
  1243. package/UI/Components/Forms/Utils/FollowPickName.ts +52 -0
  1244. package/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.ts +2 -0
  1245. package/UI/Components/Forms/Utils/FormModalWidth.ts +94 -0
  1246. package/UI/Components/Forms/Utils/OpenFormSections.ts +104 -0
  1247. package/UI/Components/Forms/Utils/SteppedFormFooter.ts +151 -0
  1248. package/UI/Components/Forms/Utils/UniqueName.ts +81 -0
  1249. package/UI/Components/Forms/Validation.ts +84 -46
  1250. package/UI/Components/FullPageModal/FullPageModal.tsx +4 -1
  1251. package/UI/Components/Graphs/UptimeBarTooltip.tsx +10 -2
  1252. package/UI/Components/Header/Notifications/Notifications.tsx +7 -4
  1253. package/UI/Components/Header/ProjectPicker/CreateNewProjectButton.tsx +5 -1
  1254. package/UI/Components/Header/ProjectPicker/ProjectPickerFilterBox.tsx +7 -1
  1255. package/UI/Components/Header/SearchBox.tsx +5 -1
  1256. package/UI/Components/HeaderAlert/HeaderModelAlert.tsx +6 -1
  1257. package/UI/Components/HeaderAlert/NotificationBell/NotificationBell.tsx +6 -1
  1258. package/UI/Components/HeaderAlert/NotificationBell/NotificationBellDropdown.tsx +5 -2
  1259. package/UI/Components/HeaderAlert/NotificationBell/NotificationBellSection.tsx +4 -1
  1260. package/UI/Components/HiddenText/HiddenText.tsx +4 -1
  1261. package/UI/Components/Icon/Icon.tsx +7 -4
  1262. package/UI/Components/ImportExport/ExportModelCard.tsx +21 -3
  1263. package/UI/Components/ImportExport/ImportModelsModal.tsx +61 -13
  1264. package/UI/Components/Input/Input.tsx +40 -2
  1265. package/UI/Components/IpAddressList/IpAddressList.tsx +12 -4
  1266. package/UI/Components/JSONTable/JSONTable.tsx +19 -5
  1267. package/UI/Components/LabelRule/ImportLabelRulesModal.tsx +112 -31
  1268. package/UI/Components/Link/Link.tsx +6 -3
  1269. package/UI/Components/List/List.tsx +152 -19
  1270. package/UI/Components/List/ListBody.tsx +15 -1
  1271. package/UI/Components/List/ListRow.tsx +32 -19
  1272. package/UI/Components/List/ListSkeleton.tsx +4 -1
  1273. package/UI/Components/Loader/Loader.tsx +12 -4
  1274. package/UI/Components/LogsViewer/LogsViewer.tsx +60 -3
  1275. package/UI/Components/LogsViewer/components/ActiveFilterChips.tsx +16 -4
  1276. package/UI/Components/LogsViewer/components/ColumnSelector.tsx +32 -17
  1277. package/UI/Components/LogsViewer/components/FacetValueRow.tsx +13 -7
  1278. package/UI/Components/LogsViewer/components/HistogramTooltip.tsx +6 -1
  1279. package/UI/Components/LogsViewer/components/KeyboardShortcutsHelp.tsx +18 -7
  1280. package/UI/Components/LogsViewer/components/LiveLogsToggle.tsx +4 -1
  1281. package/UI/Components/LogsViewer/components/LogDetailsPanel.tsx +43 -23
  1282. package/UI/Components/LogsViewer/components/LogSearchBar.tsx +11 -3
  1283. package/UI/Components/LogsViewer/components/LogSearchHelp.tsx +24 -14
  1284. package/UI/Components/LogsViewer/components/LogSearchSuggestions.tsx +10 -2
  1285. package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +19 -5
  1286. package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +4 -1
  1287. package/UI/Components/LogsViewer/components/LogsHistogram.tsx +13 -6
  1288. package/UI/Components/LogsViewer/components/LogsPagination.tsx +10 -0
  1289. package/UI/Components/LogsViewer/components/LogsTable.tsx +44 -16
  1290. package/UI/Components/LogsViewer/components/LogsViewerToolbar.tsx +65 -20
  1291. package/UI/Components/LogsViewer/components/SavedViewsDropdown.tsx +18 -11
  1292. package/UI/Components/Markdown.tsx/LazyMarkdownViewer.tsx +7 -1
  1293. package/UI/Components/Markdown.tsx/MarkdownConverters.ts +18 -0
  1294. package/UI/Components/Markdown.tsx/MarkdownEditor.tsx +1072 -249
  1295. package/UI/Components/Markdown.tsx/MarkdownToolbarLayout.ts +260 -0
  1296. package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +37 -8
  1297. package/UI/Components/MasterPage/MasterPage.tsx +4 -1
  1298. package/UI/Components/MemberRoleAssignment/MemberRoleAssignment.tsx +61 -27
  1299. package/UI/Components/Modal/ModalFooter.tsx +10 -1
  1300. package/UI/Components/ModelDelete/ModelDelete.tsx +22 -4
  1301. package/UI/Components/ModelDetail/CardModelDetail.tsx +59 -11
  1302. package/UI/Components/ModelDetail/ModelDetail.tsx +17 -6
  1303. package/UI/Components/ModelFormModal/ModelFormModal.tsx +65 -42
  1304. package/UI/Components/ModelList/ModelList.tsx +93 -11
  1305. package/UI/Components/ModelList/StaticModelList.tsx +24 -10
  1306. package/UI/Components/ModelSwitch/ModelSwitchCard.tsx +305 -0
  1307. package/UI/Components/ModelSwitch/ModelSwitchEvents.ts +109 -0
  1308. package/UI/Components/ModelSwitch/ModelSwitchRow.tsx +438 -0
  1309. package/UI/Components/ModelSwitch/ModelSwitchUtil.ts +120 -0
  1310. package/UI/Components/ModelSwitch/ModelSwitchesCard.tsx +265 -0
  1311. package/UI/Components/ModelSwitch/useSaveModelSwitch.ts +144 -0
  1312. package/UI/Components/ModelTable/BaseModelTable.tsx +721 -338
  1313. package/UI/Components/ModelTable/ColumnCustomizationModal.tsx +73 -29
  1314. package/UI/Components/ModelTable/CustomFieldColumns.tsx +2 -1
  1315. package/UI/Components/ModelTable/EmptyStateOptions.ts +47 -0
  1316. package/UI/Components/ModelTable/ModelTable.tsx +45 -10
  1317. package/UI/Components/ModelTable/ModelTableEmptyState.ts +337 -0
  1318. package/UI/Components/ModelTable/TableView.tsx +13 -6
  1319. package/UI/Components/Monitor/SeriesLabelsViewer.tsx +4 -1
  1320. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +39 -1
  1321. package/UI/Components/MonitorTemplateVariables/TemplateVariablesModal.tsx +63 -20
  1322. package/UI/Components/MoreMenu/MoreMenu.tsx +27 -11
  1323. package/UI/Components/MoreMenu/MoreMenuItem.tsx +63 -5
  1324. package/UI/Components/Navbar/NavBar.tsx +26 -29
  1325. package/UI/Components/Navbar/NavBarCategoryToggle.tsx +120 -0
  1326. package/UI/Components/Navbar/NavBarMenuCatalog.ts +285 -0
  1327. package/UI/Components/Navbar/NavBarMenuModal.tsx +395 -162
  1328. package/UI/Components/Navbar/NavBarMobileMenu.tsx +157 -0
  1329. package/UI/Components/ObjectID/ObjectIDView.tsx +54 -4
  1330. package/UI/Components/OsVersionDisplay/OsVersionDisplay.tsx +8 -1
  1331. package/UI/Components/Page/ModelHeaderEvents.ts +75 -0
  1332. package/UI/Components/Page/ModelPage.tsx +32 -6
  1333. package/UI/Components/Page/Page.tsx +69 -14
  1334. package/UI/Components/Pagination/Pagination.tsx +257 -112
  1335. package/UI/Components/Pagination/PaginationCopy.ts +71 -0
  1336. package/UI/Components/Pagination/PaginationSummary.ts +113 -0
  1337. package/UI/Components/Pagination/Screenshots/README.md +11 -9
  1338. package/UI/Components/Pagination/Screenshots/pagination-before-after.png +0 -0
  1339. package/UI/Components/Pagination/Screenshots/pagination-dark.png +0 -0
  1340. package/UI/Components/Pagination/Screenshots/pagination-go-to-page-modal.png +0 -0
  1341. package/UI/Components/Pagination/Screenshots/pagination-long-list.png +0 -0
  1342. package/UI/Components/Pagination/Screenshots/pagination-mobile.png +0 -0
  1343. package/UI/Components/Pagination/Screenshots/pagination-telemetry.png +0 -0
  1344. package/UI/Components/PeoplePicker/OwnersFormField.ts +95 -0
  1345. package/UI/Components/PeoplePicker/OwnersPicker.tsx +74 -0
  1346. package/UI/Components/PeoplePicker/PeopleAvatar.tsx +213 -0
  1347. package/UI/Components/PeoplePicker/PeopleList.tsx +198 -0
  1348. package/UI/Components/PeoplePicker/PeoplePicker.tsx +347 -0
  1349. package/UI/Components/PeoplePicker/PeoplePickerKinds.ts +599 -0
  1350. package/UI/Components/PeoplePicker/PeoplePickerTypes.ts +433 -0
  1351. package/UI/Components/PeoplePicker/PeopleSearchPopup.tsx +564 -0
  1352. package/UI/Components/PeoplePicker/usePeopleOptions.ts +264 -0
  1353. package/UI/Components/Pill/Pill.tsx +35 -2
  1354. package/UI/Components/Pill/PillColors.ts +22 -261
  1355. package/UI/Components/Probe/Probe.tsx +5 -2
  1356. package/UI/Components/ProgressBar/ProgressBar.tsx +17 -2
  1357. package/UI/Components/ProgressButtons/ProgressButtons.tsx +8 -1
  1358. package/UI/Components/ProjectInvitations/PendingProjectInvitations.tsx +49 -15
  1359. package/UI/Components/PublicForm/PublicFormFavicon.ts +99 -0
  1360. package/UI/Components/PublicForm/PublicFormFields.ts +359 -0
  1361. package/UI/Components/PublicForm/PublicFormLogo.tsx +81 -0
  1362. package/UI/Components/ResetObjectID/ResetObjectID.tsx +31 -4
  1363. package/UI/Components/RuleCriteria/RuleCriteriaBuilder.tsx +502 -574
  1364. package/UI/Components/RuleCriteria/RuleCriteriaFields.ts +895 -0
  1365. package/UI/Components/RuleCriteria/RuleCriteriaModelForm.tsx +45 -7
  1366. package/UI/Components/RuleCriteria/RuleCriteriaModelTable.tsx +105 -12
  1367. package/UI/Components/RuleCriteria/RuleCriteriaSummary.tsx +34 -30
  1368. package/UI/Components/RuleRun/RuleDetailFields.tsx +90 -2
  1369. package/UI/Components/RuleRun/RuleEnabledField.ts +51 -0
  1370. package/UI/Components/RuleRun/RuleTable.tsx +13 -1
  1371. package/UI/Components/RuleRun/RuleView.tsx +19 -4
  1372. package/UI/Components/RuleRun/RunRuleNowModal.tsx +11 -1
  1373. package/UI/Components/Runbook/StepTimeoutInput.tsx +22 -11
  1374. package/UI/Components/SaveStatus/SaveStatus.tsx +76 -0
  1375. package/UI/Components/SaveStatus/useSaveOnChange.ts +178 -0
  1376. package/UI/Components/SavedViews/SavedViewsFacetSection.tsx +28 -10
  1377. package/UI/Components/SavedViews/SavedViewsSearchInput.tsx +6 -2
  1378. package/UI/Components/SavedViews/SavedViewsShowMoreButton.tsx +9 -1
  1379. package/UI/Components/SideMenu/SideMenu.tsx +4 -6
  1380. package/UI/Components/SideMenu/SideMenuSection.tsx +5 -3
  1381. package/UI/Components/SideMenu/SideMenuSectionState.ts +52 -9
  1382. package/UI/Components/SideOver/SideOver.tsx +24 -6
  1383. package/UI/Components/SimpleLogViewer/SimpleLogViewer.tsx +4 -1
  1384. package/UI/Components/SmtpConfig/SmtpConfigFormFields.ts +815 -0
  1385. package/UI/Components/Sso/OidcProviderFormFields.ts +481 -0
  1386. package/UI/Components/Sso/SamlProviderFormFields.ts +322 -0
  1387. package/UI/Components/Sso/SsoProviderFormFields.ts +331 -0
  1388. package/UI/Components/StackedProgressBar/StackedProgressBar.tsx +4 -1
  1389. package/UI/Components/StateTimeline/CurrentlyActiveIndicator.tsx +48 -0
  1390. package/UI/Components/StateTimeline/StateTimelineColumns.tsx +134 -0
  1391. package/UI/Components/StateTimeline/StateTimelineDuration.tsx +56 -0
  1392. package/UI/Components/StateTimeline/StateTimelineEndsAt.tsx +37 -0
  1393. package/UI/Components/StatusBadge/StatusBadge.tsx +3 -1
  1394. package/UI/Components/StatusBubble/StatusBubble.tsx +8 -2
  1395. package/UI/Components/StatusPage/ResourceGrid.tsx +55 -16
  1396. package/UI/Components/StatusPage/ResourceGroupNavigator.tsx +67 -22
  1397. package/UI/Components/StatusPage/ResourceList.tsx +46 -18
  1398. package/UI/Components/Table/DragHandle.tsx +74 -0
  1399. package/UI/Components/Table/EmptyTableMessage.ts +272 -34
  1400. package/UI/Components/Table/Table.tsx +248 -68
  1401. package/UI/Components/Table/TableBody.tsx +43 -2
  1402. package/UI/Components/Table/TableEmptyState.tsx +284 -0
  1403. package/UI/Components/Table/TableEmptyStateBuilders.ts +187 -0
  1404. package/UI/Components/Table/TableRow.tsx +107 -32
  1405. package/UI/Components/Table/TableSkeletonRows.tsx +9 -2
  1406. package/UI/Components/TableColumnList/TableColumnListComponent.tsx +13 -3
  1407. package/UI/Components/Tabs/Tabs.tsx +4 -1
  1408. package/UI/Components/TelemetryViewer/FacetVisibility.ts +44 -9
  1409. package/UI/Components/TelemetryViewer/TelemetryViewer.tsx +79 -10
  1410. package/UI/Components/TelemetryViewer/components/FacetSearchInput.tsx +11 -4
  1411. package/UI/Components/TelemetryViewer/components/FacetShowMoreButton.tsx +9 -1
  1412. package/UI/Components/TelemetryViewer/components/HiddenFacetsFooter.tsx +15 -7
  1413. package/UI/Components/TelemetryViewer/components/LockedFilterChip.tsx +99 -33
  1414. package/UI/Components/TelemetryViewer/components/SavedViewsDropdown.tsx +18 -11
  1415. package/UI/Components/TelemetryViewer/components/TelemetryActiveFilterChips.tsx +9 -3
  1416. package/UI/Components/TelemetryViewer/components/TelemetryDetailPanel.tsx +6 -3
  1417. package/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.tsx +4 -1
  1418. package/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.tsx +13 -7
  1419. package/UI/Components/TelemetryViewer/components/TelemetryHistogram.tsx +15 -8
  1420. package/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.tsx +6 -1
  1421. package/UI/Components/TelemetryViewer/components/TelemetryItemLabel.ts +18 -0
  1422. package/UI/Components/TelemetryViewer/components/TelemetryPagination.tsx +17 -11
  1423. package/UI/Components/TelemetryViewer/components/TelemetryResultTotal.tsx +132 -0
  1424. package/UI/Components/TelemetryViewer/components/TelemetrySearchBar.tsx +9 -4
  1425. package/UI/Components/TelemetryViewer/components/TelemetrySearchHelp.tsx +30 -17
  1426. package/UI/Components/TelemetryViewer/components/TelemetrySearchSuggestions.tsx +10 -2
  1427. package/UI/Components/TemplateVariables/InsertTemplateVariableButton.tsx +162 -0
  1428. package/UI/Components/TemplateVariables/TemplateVariableIcons.tsx +55 -0
  1429. package/UI/Components/TemplateVariables/TemplateVariableMenu.tsx +351 -0
  1430. package/UI/Components/TemplateVariables/TemplateVariablePopup.tsx +255 -0
  1431. package/UI/Components/TemplateVariables/TemplateVariableTextControl.tsx +128 -0
  1432. package/UI/Components/TemplateVariables/TemplateVariablesCopy.ts +38 -0
  1433. package/UI/Components/TemplateVariables/TemplateVariablesList.tsx +277 -0
  1434. package/UI/Components/TemplateVariables/TextControlUtil.ts +295 -0
  1435. package/UI/Components/TemplateVariables/useTemplateVariableTyping.tsx +350 -0
  1436. package/UI/Components/TimePicker/TimePicker.tsx +36 -20
  1437. package/UI/Components/Toggle/Toggle.tsx +39 -45
  1438. package/UI/Components/Tooltip/InfoTooltip.tsx +6 -1
  1439. package/UI/Components/Tooltip/Tooltip.tsx +4 -1
  1440. package/UI/Components/TranslatedSentence/TranslatedSentence.tsx +76 -0
  1441. package/UI/Components/Workflow/ArgumentsForm.tsx +64 -82
  1442. package/UI/Components/Workflow/ColumnEditor/AddColumnPicker.tsx +20 -14
  1443. package/UI/Components/Workflow/ColumnEditor/ColumnConditionRow.tsx +19 -6
  1444. package/UI/Components/Workflow/ColumnEditor/ColumnControl.ts +28 -14
  1445. package/UI/Components/Workflow/ColumnEditor/ColumnFieldRow.tsx +24 -10
  1446. package/UI/Components/Workflow/ColumnEditor/ColumnOperators.ts +17 -14
  1447. package/UI/Components/Workflow/ColumnEditor/ColumnPickerOptions.ts +2 -1
  1448. package/UI/Components/Workflow/ColumnEditor/ColumnRowSerialization.ts +3 -2
  1449. package/UI/Components/Workflow/ColumnEditor/ColumnValueInput.tsx +21 -8
  1450. package/UI/Components/Workflow/ColumnEditor/ModelQueryBuilder.tsx +11 -6
  1451. package/UI/Components/Workflow/ColumnEditor/ModelRecordForm.tsx +29 -9
  1452. package/UI/Components/Workflow/Component.tsx +8 -3
  1453. package/UI/Components/Workflow/ComponentArgumentsViewer.tsx +20 -2
  1454. package/UI/Components/Workflow/ComponentPicker/ComponentSearch.ts +18 -145
  1455. package/UI/Components/Workflow/ComponentPicker/PickerItems.tsx +46 -18
  1456. package/UI/Components/Workflow/ComponentPortViewer.tsx +6 -1
  1457. package/UI/Components/Workflow/ComponentReturnValueViewer.tsx +10 -2
  1458. package/UI/Components/Workflow/ComponentSettingsModal.tsx +30 -9
  1459. package/UI/Components/Workflow/ComponentSettingsSection.tsx +7 -2
  1460. package/UI/Components/Workflow/ComponentsModal.tsx +137 -54
  1461. package/UI/Components/Workflow/Condition/ConditionEditor.tsx +52 -21
  1462. package/UI/Components/Workflow/Condition/ConditionModel.ts +45 -17
  1463. package/UI/Components/Workflow/CronScheduleField.tsx +54 -31
  1464. package/UI/Components/Workflow/DocumentationViewer.tsx +10 -2
  1465. package/UI/Components/Workflow/GraphLint.ts +78 -13
  1466. package/UI/Components/Workflow/GraphLintSummary.ts +24 -11
  1467. package/UI/Components/Workflow/ManualTriggerPanel.tsx +26 -6
  1468. package/UI/Components/Workflow/ModelColumnEditor.tsx +95 -33
  1469. package/UI/Components/Workflow/ModelFieldPicker.tsx +100 -34
  1470. package/UI/Components/Workflow/RunForm.tsx +13 -3
  1471. package/UI/Components/Workflow/RunStatusWatcher.ts +50 -8
  1472. package/UI/Components/Workflow/StepTraceViewer.tsx +130 -42
  1473. package/UI/Components/Workflow/UseRunWatch.ts +2 -1
  1474. package/UI/Components/Workflow/Utils.ts +7 -1
  1475. package/UI/Components/Workflow/ValuePicker/InsertValueButton.tsx +8 -5
  1476. package/UI/Components/Workflow/ValuePicker/ValuePickerMenu.tsx +105 -39
  1477. package/UI/Components/Workflow/ValuePicker/ValuePickerPopup.tsx +4 -1
  1478. package/UI/Components/Workflow/ValuePicker/ValueSingleField.tsx +10 -5
  1479. package/UI/Components/Workflow/ValuePicker/ValueTextField.tsx +11 -7
  1480. package/UI/Components/Workflow/WorkflowIssuesModal.tsx +48 -16
  1481. package/UI/Components/Workflow/WorkflowLogModal.tsx +10 -8
  1482. package/UI/Components/Workflow/WorkflowStatusBar.tsx +26 -13
  1483. package/UI/Styles/Theme.css +21 -26
  1484. package/UI/Types/UseAnchoredFieldPopup.ts +54 -6
  1485. package/UI/Utils/AnalyticsModelAPI/AnalyticsModelAPI.ts +12 -0
  1486. package/UI/Utils/DefaultInviteTeam.ts +306 -0
  1487. package/UI/Utils/Dropdown.ts +106 -5
  1488. package/UI/Utils/ForeignDomMutationGuard.ts +225 -0
  1489. package/UI/Utils/GrantablePermission.ts +243 -0
  1490. package/UI/Utils/PermissionGate.ts +130 -11
  1491. package/UI/Utils/Rules/RuleRunClient.ts +14 -4
  1492. package/UI/Utils/Telemetry/ResultTotal.ts +150 -0
  1493. package/UI/Utils/Telemetry/UseResultTotal.ts +173 -0
  1494. package/UI/Utils/TranslateTemplate.ts +639 -19
  1495. package/UI/Utils/Translation.tsx +56 -2
  1496. package/UI/Utils/UseClockTick.ts +43 -3
  1497. package/UI/Utils/UseLiveDuration.ts +155 -0
  1498. package/UI/Utils/UseTranslator.ts +22 -0
  1499. package/UI/esbuild-config.js +3 -0
  1500. package/UI/esbuild-locales.d.ts +60 -0
  1501. package/UI/esbuild-locales.js +358 -0
  1502. package/Utils/ColorContrast.ts +274 -0
  1503. package/Utils/DeveloperDocs/AiAssistantExamples.ts +3 -2
  1504. package/Utils/DeveloperDocs/ApiExamples.ts +5 -271
  1505. package/Utils/DeveloperDocs/ExampleBuilder.ts +1775 -0
  1506. package/Utils/DeveloperDocs/ExampleValues.ts +82 -0
  1507. package/Utils/DeveloperDocs/Hcl.ts +153 -33
  1508. package/Utils/DeveloperDocs/LiveData.ts +292 -0
  1509. package/Utils/DeveloperDocs/PageLookups.ts +370 -0
  1510. package/Utils/DeveloperDocs/ResourceProfiles.ts +2025 -0
  1511. package/Utils/DeveloperDocs/TerraformConfig.ts +139 -143
  1512. package/Utils/DeveloperDocs/TerraformMonitorSteps.ts +63 -10
  1513. package/Utils/DeveloperDocs/TerraformSchema.ts +88 -1
  1514. package/Utils/DistinctColor.ts +223 -0
  1515. package/Utils/Email/EmailColorUtil.ts +135 -0
  1516. package/Utils/Episode/EpisodeTemplateVariables.ts +75 -0
  1517. package/Utils/Incident/IncidentNoteTemplateVariables.ts +37 -6
  1518. package/Utils/Incident/IncidentSlaNoteTemplateVariables.ts +33 -0
  1519. package/Utils/KeyFromName.ts +230 -0
  1520. package/Utils/ListOrder.ts +417 -0
  1521. package/Utils/Measurement/MeasurementMoments.ts +699 -0
  1522. package/Utils/Monitor/MonitorOverviewPresentationUtil.ts +47 -2
  1523. package/Utils/Project/NumberPrefix.ts +188 -0
  1524. package/Utils/Slo/SloBurnRateTemplate.ts +24 -0
  1525. package/Utils/Slo/SloHealth.ts +9 -3
  1526. package/Utils/StateOrder.ts +631 -0
  1527. package/Utils/StatusPage/ReportSchedule.ts +462 -0
  1528. package/Utils/Telemetry/DiscoveredResourceName.ts +95 -0
  1529. package/Utils/WordMatch.ts +185 -0
  1530. package/build/dist/Models/DatabaseModels/AlertGroupingRule.js +10 -9
  1531. package/build/dist/Models/DatabaseModels/AlertGroupingRule.js.map +1 -1
  1532. package/build/dist/Models/DatabaseModels/AlertMeasurement.js +17 -10
  1533. package/build/dist/Models/DatabaseModels/AlertMeasurement.js.map +1 -1
  1534. package/build/dist/Models/DatabaseModels/AlertReminderRule.js +4 -3
  1535. package/build/dist/Models/DatabaseModels/AlertReminderRule.js.map +1 -1
  1536. package/build/dist/Models/DatabaseModels/AlertSeverity.js +4 -2
  1537. package/build/dist/Models/DatabaseModels/AlertSeverity.js.map +1 -1
  1538. package/build/dist/Models/DatabaseModels/AlertState.js +4 -2
  1539. package/build/dist/Models/DatabaseModels/AlertState.js.map +1 -1
  1540. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js +8 -0
  1541. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js.map +1 -1
  1542. package/build/dist/Models/DatabaseModels/File.js +47 -1
  1543. package/build/dist/Models/DatabaseModels/File.js.map +1 -1
  1544. package/build/dist/Models/DatabaseModels/{IncidentForm.js → Form.js} +215 -196
  1545. package/build/dist/Models/DatabaseModels/Form.js.map +1 -0
  1546. package/build/dist/Models/DatabaseModels/{IncidentFormSubmission.js → FormSubmission.js} +170 -89
  1547. package/build/dist/Models/DatabaseModels/FormSubmission.js.map +1 -0
  1548. package/build/dist/Models/DatabaseModels/Incident.js +1 -1
  1549. package/build/dist/Models/DatabaseModels/IncidentCustomField.js +7 -3
  1550. package/build/dist/Models/DatabaseModels/IncidentCustomField.js.map +1 -1
  1551. package/build/dist/Models/DatabaseModels/IncidentGroupingRule.js +10 -9
  1552. package/build/dist/Models/DatabaseModels/IncidentGroupingRule.js.map +1 -1
  1553. package/build/dist/Models/DatabaseModels/IncidentMeasurement.js +16 -9
  1554. package/build/dist/Models/DatabaseModels/IncidentMeasurement.js.map +1 -1
  1555. package/build/dist/Models/DatabaseModels/IncidentReminderRule.js +4 -3
  1556. package/build/dist/Models/DatabaseModels/IncidentReminderRule.js.map +1 -1
  1557. package/build/dist/Models/DatabaseModels/IncidentSeverity.js +4 -2
  1558. package/build/dist/Models/DatabaseModels/IncidentSeverity.js.map +1 -1
  1559. package/build/dist/Models/DatabaseModels/IncidentSlaRule.js +4 -3
  1560. package/build/dist/Models/DatabaseModels/IncidentSlaRule.js.map +1 -1
  1561. package/build/dist/Models/DatabaseModels/IncidentState.js +4 -2
  1562. package/build/dist/Models/DatabaseModels/IncidentState.js.map +1 -1
  1563. package/build/dist/Models/DatabaseModels/IncidentTemplate.js +1 -1
  1564. package/build/dist/Models/DatabaseModels/IncomingCallPolicyEscalationRule.js +4 -1
  1565. package/build/dist/Models/DatabaseModels/IncomingCallPolicyEscalationRule.js.map +1 -1
  1566. package/build/dist/Models/DatabaseModels/Index.js +4 -4
  1567. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  1568. package/build/dist/Models/DatabaseModels/LogDropFilter.js +5 -3
  1569. package/build/dist/Models/DatabaseModels/LogDropFilter.js.map +1 -1
  1570. package/build/dist/Models/DatabaseModels/LogPipeline.js +5 -3
  1571. package/build/dist/Models/DatabaseModels/LogPipeline.js.map +1 -1
  1572. package/build/dist/Models/DatabaseModels/LogPipelineProcessor.js +4 -3
  1573. package/build/dist/Models/DatabaseModels/LogPipelineProcessor.js.map +1 -1
  1574. package/build/dist/Models/DatabaseModels/LogScrubRule.js +17 -10
  1575. package/build/dist/Models/DatabaseModels/LogScrubRule.js.map +1 -1
  1576. package/build/dist/Models/DatabaseModels/MetricPipelineRule.js +3 -2
  1577. package/build/dist/Models/DatabaseModels/MetricPipelineRule.js.map +1 -1
  1578. package/build/dist/Models/DatabaseModels/MetricRecordingRule.js +10 -4
  1579. package/build/dist/Models/DatabaseModels/MetricRecordingRule.js.map +1 -1
  1580. package/build/dist/Models/DatabaseModels/MonitorStatus.js +4 -1
  1581. package/build/dist/Models/DatabaseModels/MonitorStatus.js.map +1 -1
  1582. package/build/dist/Models/DatabaseModels/NetworkDeviceRole.js +3 -1
  1583. package/build/dist/Models/DatabaseModels/NetworkDeviceRole.js.map +1 -1
  1584. package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js +9 -3
  1585. package/build/dist/Models/DatabaseModels/NetworkSiteAssignmentRule.js.map +1 -1
  1586. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.js +2 -2
  1587. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.js.map +1 -1
  1588. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyUserOverride.js +20 -9
  1589. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyUserOverride.js.map +1 -1
  1590. package/build/dist/Models/DatabaseModels/Project.js +22 -13
  1591. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  1592. package/build/dist/Models/DatabaseModels/ProjectCallSMSConfig.js +6 -1
  1593. package/build/dist/Models/DatabaseModels/ProjectCallSMSConfig.js.map +1 -1
  1594. package/build/dist/Models/DatabaseModels/RunbookRule.js +334 -0
  1595. package/build/dist/Models/DatabaseModels/RunbookRule.js.map +1 -1
  1596. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +3 -1
  1597. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  1598. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceMeasurement.js +16 -9
  1599. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceMeasurement.js.map +1 -1
  1600. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceReminderRule.js +4 -3
  1601. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceReminderRule.js.map +1 -1
  1602. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceState.js +4 -2
  1603. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceState.js.map +1 -1
  1604. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js +1 -2
  1605. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js.map +1 -1
  1606. package/build/dist/Models/DatabaseModels/StatusPage.js +4 -4
  1607. package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
  1608. package/build/dist/Models/DatabaseModels/StatusPageFooterLink.js +4 -1
  1609. package/build/dist/Models/DatabaseModels/StatusPageFooterLink.js.map +1 -1
  1610. package/build/dist/Models/DatabaseModels/StatusPageHeaderLink.js +4 -1
  1611. package/build/dist/Models/DatabaseModels/StatusPageHeaderLink.js.map +1 -1
  1612. package/build/dist/Models/DatabaseModels/StatusPageHistoryChartBarColorRule.js +4 -1
  1613. package/build/dist/Models/DatabaseModels/StatusPageHistoryChartBarColorRule.js.map +1 -1
  1614. package/build/dist/Models/DatabaseModels/TraceDropFilter.js +5 -3
  1615. package/build/dist/Models/DatabaseModels/TraceDropFilter.js.map +1 -1
  1616. package/build/dist/Models/DatabaseModels/TracePipeline.js +5 -3
  1617. package/build/dist/Models/DatabaseModels/TracePipeline.js.map +1 -1
  1618. package/build/dist/Models/DatabaseModels/TracePipelineProcessor.js +4 -3
  1619. package/build/dist/Models/DatabaseModels/TracePipelineProcessor.js.map +1 -1
  1620. package/build/dist/Models/DatabaseModels/TraceRecordingRule.js +10 -4
  1621. package/build/dist/Models/DatabaseModels/TraceRecordingRule.js.map +1 -1
  1622. package/build/dist/Models/DatabaseModels/TraceScrubRule.js +17 -10
  1623. package/build/dist/Models/DatabaseModels/TraceScrubRule.js.map +1 -1
  1624. package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupItem.js +53 -1
  1625. package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupItem.js.map +1 -1
  1626. package/build/dist/Models/DatabaseModels/UserOnCallLog.js +2 -2
  1627. package/build/dist/Models/DatabaseModels/UserOnCallLog.js.map +1 -1
  1628. package/build/dist/Server/API/BaseAnalyticsAPI.js +15 -0
  1629. package/build/dist/Server/API/BaseAnalyticsAPI.js.map +1 -1
  1630. package/build/dist/Server/API/CustomDomainRoutes.js +124 -0
  1631. package/build/dist/Server/API/CustomDomainRoutes.js.map +1 -0
  1632. package/build/dist/Server/API/DashboardAPI.js +22 -4
  1633. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  1634. package/build/dist/Server/API/DashboardDomainAPI.js +56 -49
  1635. package/build/dist/Server/API/DashboardDomainAPI.js.map +1 -1
  1636. package/build/dist/Server/API/{IncidentFormAPI.js → FormAPI.js} +57 -57
  1637. package/build/dist/Server/API/FormAPI.js.map +1 -0
  1638. package/build/dist/Server/API/StatusPageAPI.js +101 -39
  1639. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  1640. package/build/dist/Server/API/StatusPageDomainAPI.js +52 -51
  1641. package/build/dist/Server/API/StatusPageDomainAPI.js.map +1 -1
  1642. package/build/dist/Server/Infrastructure/GlobalCache.js +63 -0
  1643. package/build/dist/Server/Infrastructure/GlobalCache.js.map +1 -1
  1644. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1797300000000-TurnOnLinkedAlertSwitchesByDefault.js +29 -0
  1645. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1797300000000-TurnOnLinkedAlertSwitchesByDefault.js.map +1 -0
  1646. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1797400000000-MigrateIncidentFormsToForms.js +173 -0
  1647. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1797400000000-MigrateIncidentFormsToForms.js.map +1 -0
  1648. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1797500000000-AddRunbookRuleMatchCriteria.js +77 -0
  1649. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1797500000000-AddRunbookRuleMatchCriteria.js.map +1 -0
  1650. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1797600000000-AddSeverityAndStateColorsToNotificationEmailRollup.js +14 -0
  1651. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1797600000000-AddSeverityAndStateColorsToNotificationEmailRollup.js.map +1 -0
  1652. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1797700000000-AddFormBranding.js +36 -0
  1653. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1797700000000-AddFormBranding.js.map +1 -0
  1654. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
  1655. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  1656. package/build/dist/Server/Middleware/{IncidentFormRateLimit.js → FormRateLimit.js} +159 -146
  1657. package/build/dist/Server/Middleware/FormRateLimit.js.map +1 -0
  1658. package/build/dist/Server/Services/AlertEpisodeService.js +2 -3
  1659. package/build/dist/Server/Services/AlertEpisodeService.js.map +1 -1
  1660. package/build/dist/Server/Services/AlertGroupingEngineService.js +44 -61
  1661. package/build/dist/Server/Services/AlertGroupingEngineService.js.map +1 -1
  1662. package/build/dist/Server/Services/AlertGroupingRuleService.js +45 -0
  1663. package/build/dist/Server/Services/AlertGroupingRuleService.js.map +1 -1
  1664. package/build/dist/Server/Services/AlertMeasurementService.js +111 -20
  1665. package/build/dist/Server/Services/AlertMeasurementService.js.map +1 -1
  1666. package/build/dist/Server/Services/AlertReminderRuleService.js +0 -30
  1667. package/build/dist/Server/Services/AlertReminderRuleService.js.map +1 -1
  1668. package/build/dist/Server/Services/AlertService.js +2 -3
  1669. package/build/dist/Server/Services/AlertService.js.map +1 -1
  1670. package/build/dist/Server/Services/AlertSeverityService.js +14 -85
  1671. package/build/dist/Server/Services/AlertSeverityService.js.map +1 -1
  1672. package/build/dist/Server/Services/AlertStateService.js +28 -97
  1673. package/build/dist/Server/Services/AlertStateService.js.map +1 -1
  1674. package/build/dist/Server/Services/AnalyticsDatabaseService.js +82 -7
  1675. package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
  1676. package/build/dist/Server/Services/CephClusterService.js +23 -0
  1677. package/build/dist/Server/Services/CephClusterService.js.map +1 -1
  1678. package/build/dist/Server/Services/CloudResourceService.js +39 -0
  1679. package/build/dist/Server/Services/CloudResourceService.js.map +1 -1
  1680. package/build/dist/Server/Services/DashboardDomainService.js +510 -172
  1681. package/build/dist/Server/Services/DashboardDomainService.js.map +1 -1
  1682. package/build/dist/Server/Services/DashboardService.js +22 -9
  1683. package/build/dist/Server/Services/DashboardService.js.map +1 -1
  1684. package/build/dist/Server/Services/DatabaseService.js +330 -10
  1685. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  1686. package/build/dist/Server/Services/DockerHostService.js +51 -0
  1687. package/build/dist/Server/Services/DockerHostService.js.map +1 -1
  1688. package/build/dist/Server/Services/DockerSwarmClusterService.js +23 -0
  1689. package/build/dist/Server/Services/DockerSwarmClusterService.js.map +1 -1
  1690. package/build/dist/Server/Services/FileService.js +45 -0
  1691. package/build/dist/Server/Services/FileService.js.map +1 -1
  1692. package/build/dist/Server/Services/FormService.js +1014 -0
  1693. package/build/dist/Server/Services/FormService.js.map +1 -0
  1694. package/build/dist/Server/Services/FormSubmissionService.js +21 -0
  1695. package/build/dist/Server/Services/FormSubmissionService.js.map +1 -0
  1696. package/build/dist/Server/Services/GlobalOidcService.js +9 -0
  1697. package/build/dist/Server/Services/GlobalOidcService.js.map +1 -1
  1698. package/build/dist/Server/Services/GlobalSsoService.js +9 -0
  1699. package/build/dist/Server/Services/GlobalSsoService.js.map +1 -1
  1700. package/build/dist/Server/Services/HostService.js +50 -0
  1701. package/build/dist/Server/Services/HostService.js.map +1 -1
  1702. package/build/dist/Server/Services/IncidentAlertService.js +30 -12
  1703. package/build/dist/Server/Services/IncidentAlertService.js.map +1 -1
  1704. package/build/dist/Server/Services/IncidentCustomFieldService.js +0 -83
  1705. package/build/dist/Server/Services/IncidentCustomFieldService.js.map +1 -1
  1706. package/build/dist/Server/Services/IncidentEpisodeService.js +2 -3
  1707. package/build/dist/Server/Services/IncidentEpisodeService.js.map +1 -1
  1708. package/build/dist/Server/Services/IncidentGroupingEngineService.js +45 -62
  1709. package/build/dist/Server/Services/IncidentGroupingEngineService.js.map +1 -1
  1710. package/build/dist/Server/Services/IncidentGroupingRuleService.js +45 -0
  1711. package/build/dist/Server/Services/IncidentGroupingRuleService.js.map +1 -1
  1712. package/build/dist/Server/Services/IncidentMeasurementService.js +114 -20
  1713. package/build/dist/Server/Services/IncidentMeasurementService.js.map +1 -1
  1714. package/build/dist/Server/Services/IncidentReminderRuleService.js +0 -30
  1715. package/build/dist/Server/Services/IncidentReminderRuleService.js.map +1 -1
  1716. package/build/dist/Server/Services/IncidentService.js +2 -3
  1717. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  1718. package/build/dist/Server/Services/IncidentSeverityService.js +14 -87
  1719. package/build/dist/Server/Services/IncidentSeverityService.js.map +1 -1
  1720. package/build/dist/Server/Services/IncidentSlaRuleService.js +0 -30
  1721. package/build/dist/Server/Services/IncidentSlaRuleService.js.map +1 -1
  1722. package/build/dist/Server/Services/IncidentStateService.js +28 -97
  1723. package/build/dist/Server/Services/IncidentStateService.js.map +1 -1
  1724. package/build/dist/Server/Services/IncidentStateTimelineService.js +2 -2
  1725. package/build/dist/Server/Services/IncomingCallPolicyEscalationRuleService.js +14 -145
  1726. package/build/dist/Server/Services/IncomingCallPolicyEscalationRuleService.js.map +1 -1
  1727. package/build/dist/Server/Services/Index.js +4 -4
  1728. package/build/dist/Server/Services/Index.js.map +1 -1
  1729. package/build/dist/Server/Services/IoTFleetService.js +23 -0
  1730. package/build/dist/Server/Services/IoTFleetService.js.map +1 -1
  1731. package/build/dist/Server/Services/KubernetesClusterService.js +54 -0
  1732. package/build/dist/Server/Services/KubernetesClusterService.js.map +1 -1
  1733. package/build/dist/Server/Services/LabelService.js +6 -16
  1734. package/build/dist/Server/Services/LabelService.js.map +1 -1
  1735. package/build/dist/Server/Services/LogScrubRuleService.js +31 -0
  1736. package/build/dist/Server/Services/LogScrubRuleService.js.map +1 -1
  1737. package/build/dist/Server/Services/LogService.js +9 -0
  1738. package/build/dist/Server/Services/LogService.js.map +1 -1
  1739. package/build/dist/Server/Services/MetricRecordingRuleService.js +92 -0
  1740. package/build/dist/Server/Services/MetricRecordingRuleService.js.map +1 -1
  1741. package/build/dist/Server/Services/MonitorStatusService.js +25 -108
  1742. package/build/dist/Server/Services/MonitorStatusService.js.map +1 -1
  1743. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js +33 -0
  1744. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js.map +1 -1
  1745. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +202 -0
  1746. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
  1747. package/build/dist/Server/Services/OnCallDutyPolicyService.js +261 -0
  1748. package/build/dist/Server/Services/OnCallDutyPolicyService.js.map +1 -1
  1749. package/build/dist/Server/Services/OnCallDutyPolicyUserOverrideService.js +7 -1
  1750. package/build/dist/Server/Services/OnCallDutyPolicyUserOverrideService.js.map +1 -1
  1751. package/build/dist/Server/Services/OnCallNotificationAlertingService.js +17 -24
  1752. package/build/dist/Server/Services/OnCallNotificationAlertingService.js.map +1 -1
  1753. package/build/dist/Server/Services/OnCallSetupReminderService.js +32 -38
  1754. package/build/dist/Server/Services/OnCallSetupReminderService.js.map +1 -1
  1755. package/build/dist/Server/Services/PodmanHostService.js +51 -0
  1756. package/build/dist/Server/Services/PodmanHostService.js.map +1 -1
  1757. package/build/dist/Server/Services/ProfileAggregationService.js +34 -0
  1758. package/build/dist/Server/Services/ProfileAggregationService.js.map +1 -1
  1759. package/build/dist/Server/Services/ProjectCallSMSConfigService.js +53 -3
  1760. package/build/dist/Server/Services/ProjectCallSMSConfigService.js.map +1 -1
  1761. package/build/dist/Server/Services/ProjectOidcService.js +28 -0
  1762. package/build/dist/Server/Services/ProjectOidcService.js.map +1 -1
  1763. package/build/dist/Server/Services/ProjectService.js +49 -62
  1764. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  1765. package/build/dist/Server/Services/ProjectSsoService.js +28 -0
  1766. package/build/dist/Server/Services/ProjectSsoService.js.map +1 -1
  1767. package/build/dist/Server/Services/ProxmoxClusterService.js +23 -0
  1768. package/build/dist/Server/Services/ProxmoxClusterService.js.map +1 -1
  1769. package/build/dist/Server/Services/RumApplicationService.js +42 -0
  1770. package/build/dist/Server/Services/RumApplicationService.js.map +1 -1
  1771. package/build/dist/Server/Services/RunbookRuleEngineService.js +289 -32
  1772. package/build/dist/Server/Services/RunbookRuleEngineService.js.map +1 -1
  1773. package/build/dist/Server/Services/RunbookRuleService.js +87 -0
  1774. package/build/dist/Server/Services/RunbookRuleService.js.map +1 -1
  1775. package/build/dist/Server/Services/ScheduledMaintenanceMeasurementService.js +117 -20
  1776. package/build/dist/Server/Services/ScheduledMaintenanceMeasurementService.js.map +1 -1
  1777. package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js +0 -30
  1778. package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js.map +1 -1
  1779. package/build/dist/Server/Services/ScheduledMaintenanceService.js +20 -29
  1780. package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
  1781. package/build/dist/Server/Services/ScheduledMaintenanceStateService.js +28 -99
  1782. package/build/dist/Server/Services/ScheduledMaintenanceStateService.js.map +1 -1
  1783. package/build/dist/Server/Services/ServerlessFunctionService.js +44 -0
  1784. package/build/dist/Server/Services/ServerlessFunctionService.js.map +1 -1
  1785. package/build/dist/Server/Services/ServiceService.js +30 -4
  1786. package/build/dist/Server/Services/ServiceService.js.map +1 -1
  1787. package/build/dist/Server/Services/SpanService.js +17 -2
  1788. package/build/dist/Server/Services/SpanService.js.map +1 -1
  1789. package/build/dist/Server/Services/StatusPageDomainService.js +495 -174
  1790. package/build/dist/Server/Services/StatusPageDomainService.js.map +1 -1
  1791. package/build/dist/Server/Services/StatusPageFooterLinkService.js +8 -169
  1792. package/build/dist/Server/Services/StatusPageFooterLinkService.js.map +1 -1
  1793. package/build/dist/Server/Services/StatusPageHeaderLinkService.js +7 -168
  1794. package/build/dist/Server/Services/StatusPageHeaderLinkService.js.map +1 -1
  1795. package/build/dist/Server/Services/StatusPageHistoryChartBarColorRuleService.js +8 -169
  1796. package/build/dist/Server/Services/StatusPageHistoryChartBarColorRuleService.js.map +1 -1
  1797. package/build/dist/Server/Services/StatusPageOidcService.js +28 -0
  1798. package/build/dist/Server/Services/StatusPageOidcService.js.map +1 -1
  1799. package/build/dist/Server/Services/StatusPageResourceService.js +82 -46
  1800. package/build/dist/Server/Services/StatusPageResourceService.js.map +1 -1
  1801. package/build/dist/Server/Services/StatusPageService.js +174 -45
  1802. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  1803. package/build/dist/Server/Services/StatusPageSsoService.js +28 -0
  1804. package/build/dist/Server/Services/StatusPageSsoService.js.map +1 -1
  1805. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateService.js +14 -5
  1806. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateService.js.map +1 -1
  1807. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateStatusPageService.js +7 -6
  1808. package/build/dist/Server/Services/StatusPageSubscriberNotificationTemplateStatusPageService.js.map +1 -1
  1809. package/build/dist/Server/Services/TraceRecordingRuleService.js +11 -2
  1810. package/build/dist/Server/Services/TraceRecordingRuleService.js.map +1 -1
  1811. package/build/dist/Server/Services/TraceScrubRuleService.js +31 -0
  1812. package/build/dist/Server/Services/TraceScrubRuleService.js.map +1 -1
  1813. package/build/dist/Server/Services/UserIncomingCallNumberService.js +20 -10
  1814. package/build/dist/Server/Services/UserIncomingCallNumberService.js.map +1 -1
  1815. package/build/dist/Server/Services/UserNotificationRuleService.js +25 -59
  1816. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  1817. package/build/dist/Server/Services/VMwareVCenterService.js +23 -0
  1818. package/build/dist/Server/Services/VMwareVCenterService.js.map +1 -1
  1819. package/build/dist/Server/Utils/AI/PerfEvidence/SpanTreeAnalyzer.js +3 -3
  1820. package/build/dist/Server/Utils/AI/PerfEvidence/SpanTreeAnalyzer.js.map +1 -1
  1821. package/build/dist/Server/Utils/Database/ListOrderMaintainer.js +311 -0
  1822. package/build/dist/Server/Utils/Database/ListOrderMaintainer.js.map +1 -0
  1823. package/build/dist/Server/Utils/Database/StateOrderGuard.js +239 -0
  1824. package/build/dist/Server/Utils/Database/StateOrderGuard.js.map +1 -0
  1825. package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js +2 -0
  1826. package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js.map +1 -1
  1827. package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js +44 -3
  1828. package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js.map +1 -1
  1829. package/build/dist/Server/Utils/EmailRollup/EmailRollupWriter.js +29 -1
  1830. package/build/dist/Server/Utils/EmailRollup/EmailRollupWriter.js.map +1 -1
  1831. package/build/dist/Server/Utils/Form/FormRecordOptions.js +111 -0
  1832. package/build/dist/Server/Utils/Form/FormRecordOptions.js.map +1 -0
  1833. package/build/dist/Server/Utils/Form/FormSubmissionNote.js +154 -0
  1834. package/build/dist/Server/Utils/Form/FormSubmissionNote.js.map +1 -0
  1835. package/build/dist/Server/Utils/Form/FormTargetHandler.js +232 -0
  1836. package/build/dist/Server/Utils/Form/FormTargetHandler.js.map +1 -0
  1837. package/build/dist/Server/Utils/Form/FormTargets.js +13 -0
  1838. package/build/dist/Server/Utils/Form/FormTargets.js.map +1 -0
  1839. package/build/dist/Server/Utils/Form/IncidentFormTarget.js +400 -0
  1840. package/build/dist/Server/Utils/Form/IncidentFormTarget.js.map +1 -0
  1841. package/build/dist/Server/Utils/Form/ScheduledMaintenanceFormTarget.js +245 -0
  1842. package/build/dist/Server/Utils/Form/ScheduledMaintenanceFormTarget.js.map +1 -0
  1843. package/build/dist/Server/Utils/Greenlock/CertificateOrder.js +353 -0
  1844. package/build/dist/Server/Utils/Greenlock/CertificateOrder.js.map +1 -0
  1845. package/build/dist/Server/Utils/Greenlock/CertificateOrderBudget.js +119 -0
  1846. package/build/dist/Server/Utils/Greenlock/CertificateOrderBudget.js.map +1 -0
  1847. package/build/dist/Server/Utils/Greenlock/CertificateOrderFailures.js +208 -0
  1848. package/build/dist/Server/Utils/Greenlock/CertificateOrderFailures.js.map +1 -0
  1849. package/build/dist/Server/Utils/Greenlock/CertificateOrderLock.js +111 -0
  1850. package/build/dist/Server/Utils/Greenlock/CertificateOrderLock.js.map +1 -0
  1851. package/build/dist/Server/Utils/Greenlock/CertificateOrderOutcome.js +30 -0
  1852. package/build/dist/Server/Utils/Greenlock/CertificateOrderOutcome.js.map +1 -0
  1853. package/build/dist/Server/Utils/Greenlock/CertificateOwners.js +52 -0
  1854. package/build/dist/Server/Utils/Greenlock/CertificateOwners.js.map +1 -0
  1855. package/build/dist/Server/Utils/Greenlock/CertificateReissueOrder.js +80 -0
  1856. package/build/dist/Server/Utils/Greenlock/CertificateReissueOrder.js.map +1 -0
  1857. package/build/dist/Server/Utils/Greenlock/CustomDomainOrders.js +296 -0
  1858. package/build/dist/Server/Utils/Greenlock/CustomDomainOrders.js.map +1 -0
  1859. package/build/dist/Server/Utils/Greenlock/Greenlock.js +595 -146
  1860. package/build/dist/Server/Utils/Greenlock/Greenlock.js.map +1 -1
  1861. package/build/dist/Server/Utils/Measurement/MeasurementDefinitionChange.js +43 -0
  1862. package/build/dist/Server/Utils/Measurement/MeasurementDefinitionChange.js.map +1 -0
  1863. package/build/dist/Server/Utils/Measurement/MeasurementDefinitionValidator.js +6 -4
  1864. package/build/dist/Server/Utils/Measurement/MeasurementDefinitionValidator.js.map +1 -1
  1865. package/build/dist/Server/Utils/Measurement/MeasurementKeyAssigner.js +33 -0
  1866. package/build/dist/Server/Utils/Measurement/MeasurementKeyAssigner.js.map +1 -0
  1867. package/build/dist/Server/Utils/Measurement/MeasurementMetricWriter.js +15 -2
  1868. package/build/dist/Server/Utils/Measurement/MeasurementMetricWriter.js.map +1 -1
  1869. package/build/dist/Server/Utils/Measurement/MeasurementStateReference.js +72 -0
  1870. package/build/dist/Server/Utils/Measurement/MeasurementStateReference.js.map +1 -0
  1871. package/build/dist/Server/Utils/Rules/GroupingRuleEpisodeOwners.js +366 -0
  1872. package/build/dist/Server/Utils/Rules/GroupingRuleEpisodeOwners.js.map +1 -0
  1873. package/build/dist/Server/Utils/Rules/OwnerRuleAssignment.js +7 -0
  1874. package/build/dist/Server/Utils/Rules/OwnerRuleAssignment.js.map +1 -1
  1875. package/build/dist/Server/Utils/ScrubRuleValidation.js +127 -0
  1876. package/build/dist/Server/Utils/ScrubRuleValidation.js.map +1 -0
  1877. package/build/dist/Server/Utils/Slo/SloOwnerReferenceValidator.js +1 -1
  1878. package/build/dist/Server/Utils/StatusPage/AffectedStatusPageResources.js +97 -0
  1879. package/build/dist/Server/Utils/StatusPage/AffectedStatusPageResources.js.map +1 -0
  1880. package/build/dist/Server/Utils/StatusPage/IncidentSubscriberAudienceBuilder.js +7 -7
  1881. package/build/dist/Server/Utils/StatusPage/IncidentSubscriberAudienceBuilder.js.map +1 -1
  1882. package/build/dist/Server/Utils/StatusPage/IncidentTemplateVariableBuilder.js +14 -10
  1883. package/build/dist/Server/Utils/StatusPage/IncidentTemplateVariableBuilder.js.map +1 -1
  1884. package/build/dist/Server/Utils/StatusPage/StatusPagesListingMonitorsBuilder.js +195 -0
  1885. package/build/dist/Server/Utils/StatusPage/StatusPagesListingMonitorsBuilder.js.map +1 -0
  1886. package/build/dist/Server/Utils/StatusPage/SubscriberIncidentEmailBuilder.js +9 -15
  1887. package/build/dist/Server/Utils/StatusPage/SubscriberIncidentEmailBuilder.js.map +1 -1
  1888. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationPreviewBuilder.js +4 -0
  1889. package/build/dist/Server/Utils/StatusPage/SubscriberNotificationPreviewBuilder.js.map +1 -1
  1890. package/build/dist/Server/Utils/StatusPage/SubscriberTemplateIncidentRecordAccess.js +5 -4
  1891. package/build/dist/Server/Utils/StatusPage/SubscriberTemplateIncidentRecordAccess.js.map +1 -1
  1892. package/build/dist/Server/Utils/Telemetry/DiscoveredResourceCreate.js +177 -0
  1893. package/build/dist/Server/Utils/Telemetry/DiscoveredResourceCreate.js.map +1 -0
  1894. package/build/dist/Server/Utils/Telemetry/DiscoveredResourceUpdate.js +129 -0
  1895. package/build/dist/Server/Utils/Telemetry/DiscoveredResourceUpdate.js.map +1 -0
  1896. package/build/dist/Server/Utils/Telemetry/MessageQueueDiscovery.js +8 -2
  1897. package/build/dist/Server/Utils/Telemetry/MessageQueueDiscovery.js.map +1 -1
  1898. package/build/dist/Types/BrandColors.js +9 -0
  1899. package/build/dist/Types/BrandColors.js.map +1 -1
  1900. package/build/dist/Types/CustomDomain/CustomDomainCertificates.js +71 -0
  1901. package/build/dist/Types/CustomDomain/CustomDomainCertificates.js.map +1 -0
  1902. package/build/dist/Types/CustomDomain/CustomDomainVerification.js +58 -0
  1903. package/build/dist/Types/CustomDomain/CustomDomainVerification.js.map +1 -0
  1904. package/build/dist/Types/CustomField/CustomFieldCreateSettings.js +15 -66
  1905. package/build/dist/Types/CustomField/CustomFieldCreateSettings.js.map +1 -1
  1906. package/build/dist/Types/CustomField/CustomFieldValueFormat.js +3 -2
  1907. package/build/dist/Types/CustomField/CustomFieldValueFormat.js.map +1 -1
  1908. package/build/dist/Types/CustomField/CustomFieldVariableKey.js +97 -88
  1909. package/build/dist/Types/CustomField/CustomFieldVariableKey.js.map +1 -1
  1910. package/build/dist/Types/Dashboard/DashboardAccess.js +157 -0
  1911. package/build/dist/Types/Dashboard/DashboardAccess.js.map +1 -0
  1912. package/build/dist/Types/Dashboard/DashboardTemplates.js +26 -0
  1913. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  1914. package/build/dist/Types/Database/ListOrderColumn.js +12 -0
  1915. package/build/dist/Types/Database/ListOrderColumn.js.map +1 -0
  1916. package/build/dist/Types/Filter/FilterConditionUtil.js +24 -0
  1917. package/build/dist/Types/Filter/FilterConditionUtil.js.map +1 -0
  1918. package/build/dist/Types/Form/FormBranding.js +266 -0
  1919. package/build/dist/Types/Form/FormBranding.js.map +1 -0
  1920. package/build/dist/Types/Form/FormField.js +713 -0
  1921. package/build/dist/Types/Form/FormField.js.map +1 -0
  1922. package/build/dist/Types/{Incident/IncidentFormIpAllowlist.js → Form/FormIpAllowlist.js} +3 -3
  1923. package/build/dist/Types/Form/FormIpAllowlist.js.map +1 -0
  1924. package/build/dist/Types/Form/FormPublic.js +792 -0
  1925. package/build/dist/Types/Form/FormPublic.js.map +1 -0
  1926. package/build/dist/Types/Form/FormSubmissionAnswer.js +82 -0
  1927. package/build/dist/Types/Form/FormSubmissionAnswer.js.map +1 -0
  1928. package/build/dist/Types/Form/FormTargetCatalog.js +213 -0
  1929. package/build/dist/Types/Form/FormTargetCatalog.js.map +1 -0
  1930. package/build/dist/Types/Form/FormTargetSettings.js +276 -0
  1931. package/build/dist/Types/Form/FormTargetSettings.js.map +1 -0
  1932. package/build/dist/Types/Form/FormTargetType.js +56 -0
  1933. package/build/dist/Types/Form/FormTargetType.js.map +1 -0
  1934. package/build/dist/Types/Form/LegacyIncidentFormConversion.js +131 -0
  1935. package/build/dist/Types/Form/LegacyIncidentFormConversion.js.map +1 -0
  1936. package/build/dist/Types/IncomingCall/IncomingCallRingTime.js +37 -0
  1937. package/build/dist/Types/IncomingCall/IncomingCallRingTime.js.map +1 -0
  1938. package/build/dist/Types/Log/LogScrubField.js +15 -0
  1939. package/build/dist/Types/Log/LogScrubField.js.map +1 -0
  1940. package/build/dist/Types/Measurement/MeasurementKey.js +72 -0
  1941. package/build/dist/Types/Measurement/MeasurementKey.js.map +1 -0
  1942. package/build/dist/Types/Measurement/MeasurementUnit.js +74 -0
  1943. package/build/dist/Types/Measurement/MeasurementUnit.js.map +1 -0
  1944. package/build/dist/Types/Metrics/RecordingRuleOutputMetricName.js +48 -0
  1945. package/build/dist/Types/Metrics/RecordingRuleOutputMetricName.js.map +1 -0
  1946. package/build/dist/Types/Monitor/MonitorCriteria.js +22 -0
  1947. package/build/dist/Types/Monitor/MonitorCriteria.js.map +1 -1
  1948. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +191 -25
  1949. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  1950. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  1951. package/build/dist/Types/Monitor/MonitorSteps.js.map +1 -1
  1952. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js +3 -3
  1953. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js.map +1 -1
  1954. package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js +1 -1
  1955. package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js.map +1 -1
  1956. package/build/dist/Types/NotificationRule/OnCallRuleKind.js +134 -0
  1957. package/build/dist/Types/NotificationRule/OnCallRuleKind.js.map +1 -0
  1958. package/build/dist/Types/OnCallDutyPolicy/EscalationRuleDefaults.js +95 -0
  1959. package/build/dist/Types/OnCallDutyPolicy/EscalationRuleDefaults.js.map +1 -0
  1960. package/build/dist/Types/OnCallDutyPolicy/FirstResponders.js +66 -0
  1961. package/build/dist/Types/OnCallDutyPolicy/FirstResponders.js.map +1 -0
  1962. package/build/dist/Types/OnCallDutyPolicy/MiscDataId.js +30 -0
  1963. package/build/dist/Types/OnCallDutyPolicy/MiscDataId.js.map +1 -0
  1964. package/build/dist/Types/OnCallDutyPolicy/ScheduleFirstLayer.js +113 -0
  1965. package/build/dist/Types/OnCallDutyPolicy/ScheduleFirstLayer.js.map +1 -0
  1966. package/build/dist/Types/OnCallDutyPolicy/ScheduleLayerDefaults.js +95 -0
  1967. package/build/dist/Types/OnCallDutyPolicy/ScheduleLayerDefaults.js.map +1 -0
  1968. package/build/dist/Types/OnCallDutyPolicy/UserOverrideCoverRequest.js +99 -0
  1969. package/build/dist/Types/OnCallDutyPolicy/UserOverrideCoverRequest.js.map +1 -0
  1970. package/build/dist/Types/Permission.js +41 -34
  1971. package/build/dist/Types/Permission.js.map +1 -1
  1972. package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js +38 -1
  1973. package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js.map +1 -1
  1974. package/build/dist/Types/Rum/SessionReplay.js +24 -0
  1975. package/build/dist/Types/Rum/SessionReplay.js.map +1 -1
  1976. package/build/dist/Types/Rum/SessionReplayCustomEvents.js +17 -0
  1977. package/build/dist/Types/Rum/SessionReplayCustomEvents.js.map +1 -1
  1978. package/build/dist/Types/Runbook/RunbookRuleCriteria.js +151 -0
  1979. package/build/dist/Types/Runbook/RunbookRuleCriteria.js.map +1 -0
  1980. package/build/dist/Types/SSO/OidcProviderDefaults.js +189 -0
  1981. package/build/dist/Types/SSO/OidcProviderDefaults.js.map +1 -0
  1982. package/build/dist/Types/SSO/SamlProviderDefaults.js +55 -0
  1983. package/build/dist/Types/SSO/SamlProviderDefaults.js.map +1 -0
  1984. package/build/dist/Types/SSO/SsoProviderDefaults.js +67 -0
  1985. package/build/dist/Types/SSO/SsoProviderDefaults.js.map +1 -0
  1986. package/build/dist/Types/ScheduledMaintenance/MaintenanceWindow.js +105 -0
  1987. package/build/dist/Types/ScheduledMaintenance/MaintenanceWindow.js.map +1 -0
  1988. package/build/dist/Types/StatusPage/IncidentSubscriberAudience.js.map +1 -1
  1989. package/build/dist/Types/StatusPage/StatusPageAccess.js +132 -0
  1990. package/build/dist/Types/StatusPage/StatusPageAccess.js.map +1 -0
  1991. package/build/dist/Types/StatusPage/StatusPagesListingMonitors.js +84 -0
  1992. package/build/dist/Types/StatusPage/StatusPagesListingMonitors.js.map +1 -0
  1993. package/build/dist/Types/StatusPage/SubscriberNotificationTemplatePreview.js +3 -2
  1994. package/build/dist/Types/StatusPage/SubscriberNotificationTemplatePreview.js.map +1 -1
  1995. package/build/dist/Types/StatusPage/SubscriberNotificationTemplateVariables.js +47 -22
  1996. package/build/dist/Types/StatusPage/SubscriberNotificationTemplateVariables.js.map +1 -1
  1997. package/build/dist/Types/Telemetry/ScrubRule.js +180 -0
  1998. package/build/dist/Types/Telemetry/ScrubRule.js.map +1 -0
  1999. package/build/dist/Types/Template/TemplateVariable.js +157 -0
  2000. package/build/dist/Types/Template/TemplateVariable.js.map +1 -0
  2001. package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js +21 -54
  2002. package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js.map +1 -1
  2003. package/build/dist/UI/Components/404.js +4 -2
  2004. package/build/dist/UI/Components/404.js.map +1 -1
  2005. package/build/dist/UI/Components/AI/GenerateFromAIModal.js +6 -4
  2006. package/build/dist/UI/Components/AI/GenerateFromAIModal.js.map +1 -1
  2007. package/build/dist/UI/Components/AIAgent/AIAgent.js +5 -2
  2008. package/build/dist/UI/Components/AIAgent/AIAgent.js.map +1 -1
  2009. package/build/dist/UI/Components/ActionButton/RowActions.js +23 -10
  2010. package/build/dist/UI/Components/ActionButton/RowActions.js.map +1 -1
  2011. package/build/dist/UI/Components/ActionButton/SplitActionButtons.js +19 -1
  2012. package/build/dist/UI/Components/ActionButton/SplitActionButtons.js.map +1 -1
  2013. package/build/dist/UI/Components/ActionCard/ActionCard.js +10 -1
  2014. package/build/dist/UI/Components/ActionCard/ActionCard.js.map +1 -1
  2015. package/build/dist/UI/Components/AdvancedPageSection/AdvancedPageSection.js +17 -0
  2016. package/build/dist/UI/Components/AdvancedPageSection/AdvancedPageSection.js.map +1 -0
  2017. package/build/dist/UI/Components/AttachmentList/EventAttachmentList.js +8 -4
  2018. package/build/dist/UI/Components/AttachmentList/EventAttachmentList.js.map +1 -1
  2019. package/build/dist/UI/Components/AttributesJSON/AttributesJSONPreferences.js +5 -4
  2020. package/build/dist/UI/Components/AttributesJSON/AttributesJSONPreferences.js.map +1 -1
  2021. package/build/dist/UI/Components/AttributesJSON/AttributesJSONView.js +11 -4
  2022. package/build/dist/UI/Components/AttributesJSON/AttributesJSONView.js.map +1 -1
  2023. package/build/dist/UI/Components/AttributesJSON/AttributesViewToggle.js +8 -3
  2024. package/build/dist/UI/Components/AttributesJSON/AttributesViewToggle.js.map +1 -1
  2025. package/build/dist/UI/Components/AttributesJSON/CopyAttributesAsJSONButton.js +47 -23
  2026. package/build/dist/UI/Components/AttributesJSON/CopyAttributesAsJSONButton.js.map +1 -1
  2027. package/build/dist/UI/Components/AutocompleteTextInput/AutocompleteTextInput.js +4 -2
  2028. package/build/dist/UI/Components/AutocompleteTextInput/AutocompleteTextInput.js.map +1 -1
  2029. package/build/dist/UI/Components/Breadcrumbs/Breadcrumbs.js +1 -1
  2030. package/build/dist/UI/Components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  2031. package/build/dist/UI/Components/BulkUpdate/BulkOwnerActions.js +35 -131
  2032. package/build/dist/UI/Components/BulkUpdate/BulkOwnerActions.js.map +1 -1
  2033. package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js +57 -48
  2034. package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js.map +1 -1
  2035. package/build/dist/UI/Components/Button/Button.js +1 -1
  2036. package/build/dist/UI/Components/Button/Button.js.map +1 -1
  2037. package/build/dist/UI/Components/Button/DropdownButton.js +1 -1
  2038. package/build/dist/UI/Components/Button/DropdownButton.js.map +1 -1
  2039. package/build/dist/UI/Components/CSVFileUpload/CSVFileUpload.js +41 -28
  2040. package/build/dist/UI/Components/CSVFileUpload/CSVFileUpload.js.map +1 -1
  2041. package/build/dist/UI/Components/Captcha/Captcha.js +3 -1
  2042. package/build/dist/UI/Components/Captcha/Captcha.js.map +1 -1
  2043. package/build/dist/UI/Components/Card/Card.js +81 -35
  2044. package/build/dist/UI/Components/Card/Card.js.map +1 -1
  2045. package/build/dist/UI/Components/Card/CardMoreMenu.js +19 -0
  2046. package/build/dist/UI/Components/Card/CardMoreMenu.js.map +1 -0
  2047. package/build/dist/UI/Components/CardSelect/CardSelect.js +26 -16
  2048. package/build/dist/UI/Components/CardSelect/CardSelect.js.map +1 -1
  2049. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +10 -8
  2050. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
  2051. package/build/dist/UI/Components/Charts/ChartGroup/NoDataMessage.js +3 -1
  2052. package/build/dist/UI/Components/Charts/ChartGroup/NoDataMessage.js.map +1 -1
  2053. package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/AnnotationHoverCard.js +3 -3
  2054. package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/AnnotationHoverCard.js.map +1 -1
  2055. package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/ChartAnnotationLayer.js +19 -5
  2056. package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/ChartAnnotationLayer.js.map +1 -1
  2057. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +6 -4
  2058. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
  2059. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +6 -4
  2060. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
  2061. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +6 -4
  2062. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
  2063. package/build/dist/UI/Components/Charts/TimeRangeZoom/ResetTimeRangeZoomButton.js +9 -4
  2064. package/build/dist/UI/Components/Charts/TimeRangeZoom/ResetTimeRangeZoomButton.js.map +1 -1
  2065. package/build/dist/UI/Components/Checkbox/Checkbox.js +5 -3
  2066. package/build/dist/UI/Components/Checkbox/Checkbox.js.map +1 -1
  2067. package/build/dist/UI/Components/ChoiceRows/ChoiceRows.js +54 -0
  2068. package/build/dist/UI/Components/ChoiceRows/ChoiceRows.js.map +1 -0
  2069. package/build/dist/UI/Components/CodeBlock/CodeBlock.js +3 -1
  2070. package/build/dist/UI/Components/CodeBlock/CodeBlock.js.map +1 -1
  2071. package/build/dist/UI/Components/CodeEditor/CodeEditor.js +52 -28
  2072. package/build/dist/UI/Components/CodeEditor/CodeEditor.js.map +1 -1
  2073. package/build/dist/UI/Components/CollapsibleSection/CollapsibleSection.js +11 -6
  2074. package/build/dist/UI/Components/CollapsibleSection/CollapsibleSection.js.map +1 -1
  2075. package/build/dist/UI/Components/ColorViewer/ColorViewer.js +10 -2
  2076. package/build/dist/UI/Components/ColorViewer/ColorViewer.js.map +1 -1
  2077. package/build/dist/UI/Components/CommandPalette/CommandPalette.js +25 -12
  2078. package/build/dist/UI/Components/CommandPalette/CommandPalette.js.map +1 -1
  2079. package/build/dist/UI/Components/CommandPalette/PaletteFilter.js +632 -64
  2080. package/build/dist/UI/Components/CommandPalette/PaletteFilter.js.map +1 -1
  2081. package/build/dist/UI/Components/CommandPalette/PaletteRow.js +7 -1
  2082. package/build/dist/UI/Components/CommandPalette/PaletteRow.js.map +1 -1
  2083. package/build/dist/UI/Components/CopyTextButton/CopyTextButton.js +5 -2
  2084. package/build/dist/UI/Components/CopyTextButton/CopyTextButton.js.map +1 -1
  2085. package/build/dist/UI/Components/CopyableButton/CopyableButton.js +4 -2
  2086. package/build/dist/UI/Components/CopyableButton/CopyableButton.js.map +1 -1
  2087. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js +14 -2
  2088. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js.map +1 -1
  2089. package/build/dist/UI/Components/CustomFields/DropdownOptionsInput.js +16 -7
  2090. package/build/dist/UI/Components/CustomFields/DropdownOptionsInput.js.map +1 -1
  2091. package/build/dist/UI/Components/CustomFields/MapFromCustomFieldInput.js +63 -17
  2092. package/build/dist/UI/Components/CustomFields/MapFromCustomFieldInput.js.map +1 -1
  2093. package/build/dist/UI/Components/Dashboard/DashboardVariableControl.js +14 -11
  2094. package/build/dist/UI/Components/Dashboard/DashboardVariableControl.js.map +1 -1
  2095. package/build/dist/UI/Components/Date/CustomTimeRangeModal.js +13 -12
  2096. package/build/dist/UI/Components/Date/CustomTimeRangeModal.js.map +1 -1
  2097. package/build/dist/UI/Components/Date/RangeStartAndEndDateEdit.js +18 -16
  2098. package/build/dist/UI/Components/Date/RangeStartAndEndDateEdit.js.map +1 -1
  2099. package/build/dist/UI/Components/Date/RangeStartAndEndDateView.js +4 -1
  2100. package/build/dist/UI/Components/Date/RangeStartAndEndDateView.js.map +1 -1
  2101. package/build/dist/UI/Components/Date/StartAndEndDate.js +4 -2
  2102. package/build/dist/UI/Components/Date/StartAndEndDate.js.map +1 -1
  2103. package/build/dist/UI/Components/Date/TimeRangePickerDropdown.js +18 -8
  2104. package/build/dist/UI/Components/Date/TimeRangePickerDropdown.js.map +1 -1
  2105. package/build/dist/UI/Components/DeleteConfirmation/DeleteConfirmationMessage.js +30 -5
  2106. package/build/dist/UI/Components/DeleteConfirmation/DeleteConfirmationMessage.js.map +1 -1
  2107. package/build/dist/UI/Components/Detail/BooleanValue.js +15 -0
  2108. package/build/dist/UI/Components/Detail/BooleanValue.js.map +1 -0
  2109. package/build/dist/UI/Components/Detail/Detail.js +87 -39
  2110. package/build/dist/UI/Components/Detail/Detail.js.map +1 -1
  2111. package/build/dist/UI/Components/Detail/DetailIdLine.js +100 -0
  2112. package/build/dist/UI/Components/Detail/DetailIdLine.js.map +1 -0
  2113. package/build/dist/UI/Components/Detail/DetailRecordId.js +72 -0
  2114. package/build/dist/UI/Components/Detail/DetailRecordId.js.map +1 -0
  2115. package/build/dist/UI/Components/Detail/DetailRecordLine.js +32 -0
  2116. package/build/dist/UI/Components/Detail/DetailRecordLine.js.map +1 -0
  2117. package/build/dist/UI/Components/Detail/DetailRecordTime.js +134 -0
  2118. package/build/dist/UI/Components/Detail/DetailRecordTime.js.map +1 -0
  2119. package/build/dist/UI/Components/Detail/PlaceholderText.js +17 -1
  2120. package/build/dist/UI/Components/Detail/PlaceholderText.js.map +1 -1
  2121. package/build/dist/UI/Components/Dictionary/Dictionary.js +7 -1
  2122. package/build/dist/UI/Components/Dictionary/Dictionary.js.map +1 -1
  2123. package/build/dist/UI/Components/Dictionary/DictionaryOfStingsViewer.js +4 -2
  2124. package/build/dist/UI/Components/Dictionary/DictionaryOfStingsViewer.js.map +1 -1
  2125. package/build/dist/UI/Components/Dropdown/Dropdown.js +5 -4
  2126. package/build/dist/UI/Components/Dropdown/Dropdown.js.map +1 -1
  2127. package/build/dist/UI/Components/Dropdown/DropdownChange.js +102 -0
  2128. package/build/dist/UI/Components/Dropdown/DropdownChange.js.map +1 -0
  2129. package/build/dist/UI/Components/DuplicateModel/DuplicateModel.js +19 -5
  2130. package/build/dist/UI/Components/DuplicateModel/DuplicateModel.js.map +1 -1
  2131. package/build/dist/UI/Components/EditionLabel/EditionLabel.js +177 -134
  2132. package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
  2133. package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js +165 -82
  2134. package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js.map +1 -1
  2135. package/build/dist/UI/Components/EntityDropdown/EntityDropdownQuery.js +78 -0
  2136. package/build/dist/UI/Components/EntityDropdown/EntityDropdownQuery.js.map +1 -0
  2137. package/build/dist/UI/Components/ErrorBoundary.js +16 -13
  2138. package/build/dist/UI/Components/ErrorBoundary.js.map +1 -1
  2139. package/build/dist/UI/Components/ErrorMessage/ErrorMessage.js +2 -2
  2140. package/build/dist/UI/Components/ErrorMessage/ErrorMessage.js.map +1 -1
  2141. package/build/dist/UI/Components/EventItem/EventItem.js +8 -4
  2142. package/build/dist/UI/Components/EventItem/EventItem.js.map +1 -1
  2143. package/build/dist/UI/Components/Events/RecurringViewElement.js +16 -5
  2144. package/build/dist/UI/Components/Events/RecurringViewElement.js.map +1 -1
  2145. package/build/dist/UI/Components/ExpandableText/ExpandableText.js +3 -1
  2146. package/build/dist/UI/Components/ExpandableText/ExpandableText.js.map +1 -1
  2147. package/build/dist/UI/Components/Feed/FeedActionsMenu.js +24 -0
  2148. package/build/dist/UI/Components/Feed/FeedActionsMenu.js.map +1 -0
  2149. package/build/dist/UI/Components/Feed/FeedCard.js +79 -0
  2150. package/build/dist/UI/Components/Feed/FeedCard.js.map +1 -0
  2151. package/build/dist/UI/Components/Feed/FeedEventTypeChecklist.js +122 -0
  2152. package/build/dist/UI/Components/Feed/FeedEventTypeChecklist.js.map +1 -0
  2153. package/build/dist/UI/Components/Feed/FeedFilterModal.js +23 -0
  2154. package/build/dist/UI/Components/Feed/FeedFilterModal.js.map +1 -0
  2155. package/build/dist/UI/Components/Feed/FeedFilterSummary.js +50 -0
  2156. package/build/dist/UI/Components/Feed/FeedFilterSummary.js.map +1 -0
  2157. package/build/dist/UI/Components/Feed/FeedItem.js +4 -1
  2158. package/build/dist/UI/Components/Feed/FeedItem.js.map +1 -1
  2159. package/build/dist/UI/Components/Feed/FeedMoreMenu.js +50 -0
  2160. package/build/dist/UI/Components/Feed/FeedMoreMenu.js.map +1 -0
  2161. package/build/dist/UI/Components/Feed/FeedOptions.js +29 -65
  2162. package/build/dist/UI/Components/Feed/FeedOptions.js.map +1 -1
  2163. package/build/dist/UI/Components/FilePicker/FilePicker.js +80 -31
  2164. package/build/dist/UI/Components/FilePicker/FilePicker.js.map +1 -1
  2165. package/build/dist/UI/Components/FilterButtons/FilterButtons.js +4 -2
  2166. package/build/dist/UI/Components/FilterButtons/FilterButtons.js.map +1 -1
  2167. package/build/dist/UI/Components/Filters/AppliedFilters.js +32 -0
  2168. package/build/dist/UI/Components/Filters/AppliedFilters.js.map +1 -0
  2169. package/build/dist/UI/Components/Filters/BooleanFilter.js +4 -1
  2170. package/build/dist/UI/Components/Filters/BooleanFilter.js.map +1 -1
  2171. package/build/dist/UI/Components/Filters/DateFilter.js +24 -5
  2172. package/build/dist/UI/Components/Filters/DateFilter.js.map +1 -1
  2173. package/build/dist/UI/Components/Filters/DropdownFilter.js +4 -1
  2174. package/build/dist/UI/Components/Filters/DropdownFilter.js.map +1 -1
  2175. package/build/dist/UI/Components/Filters/EntityFilter.js +28 -13
  2176. package/build/dist/UI/Components/Filters/EntityFilter.js.map +1 -1
  2177. package/build/dist/UI/Components/Filters/FilterPlaceholder.js +13 -0
  2178. package/build/dist/UI/Components/Filters/FilterPlaceholder.js.map +1 -0
  2179. package/build/dist/UI/Components/Filters/FilterViewer.js +81 -101
  2180. package/build/dist/UI/Components/Filters/FilterViewer.js.map +1 -1
  2181. package/build/dist/UI/Components/Filters/FiltersForm.js +15 -4
  2182. package/build/dist/UI/Components/Filters/FiltersForm.js.map +1 -1
  2183. package/build/dist/UI/Components/Filters/NumberFilter.js +26 -9
  2184. package/build/dist/UI/Components/Filters/NumberFilter.js.map +1 -1
  2185. package/build/dist/UI/Components/Filters/TextFilter.js +23 -8
  2186. package/build/dist/UI/Components/Filters/TextFilter.js.map +1 -1
  2187. package/build/dist/UI/Components/FoldedSection/FoldedSection.js +139 -0
  2188. package/build/dist/UI/Components/FoldedSection/FoldedSection.js.map +1 -0
  2189. package/build/dist/UI/Components/FoldedSection/FoldedSectionItem.js +58 -0
  2190. package/build/dist/UI/Components/FoldedSection/FoldedSectionItem.js.map +1 -0
  2191. package/build/dist/UI/Components/FoldedSection/FoldedSectionTitles.js +34 -0
  2192. package/build/dist/UI/Components/FoldedSection/FoldedSectionTitles.js.map +1 -0
  2193. package/build/dist/UI/Components/FormModal/BasicFormModal.js +39 -10
  2194. package/build/dist/UI/Components/FormModal/BasicFormModal.js.map +1 -1
  2195. package/build/dist/UI/Components/Forms/BasicForm.js +215 -40
  2196. package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
  2197. package/build/dist/UI/Components/Forms/CollapsibleFormSection.js +62 -10
  2198. package/build/dist/UI/Components/Forms/CollapsibleFormSection.js.map +1 -1
  2199. package/build/dist/UI/Components/Forms/Fields/ColorPicker.js +4 -2
  2200. package/build/dist/UI/Components/Forms/Fields/ColorPicker.js.map +1 -1
  2201. package/build/dist/UI/Components/Forms/Fields/FormField.js +145 -69
  2202. package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
  2203. package/build/dist/UI/Components/Forms/Fields/GeneratedKeyField.js +143 -0
  2204. package/build/dist/UI/Components/Forms/Fields/GeneratedKeyField.js.map +1 -0
  2205. package/build/dist/UI/Components/Forms/Fields/IconPicker.js +5 -3
  2206. package/build/dist/UI/Components/Forms/Fields/IconPicker.js.map +1 -1
  2207. package/build/dist/UI/Components/Forms/Fields/PermissionPicker.js +5 -3
  2208. package/build/dist/UI/Components/Forms/Fields/PermissionPicker.js.map +1 -1
  2209. package/build/dist/UI/Components/Forms/FormSummary.js +99 -15
  2210. package/build/dist/UI/Components/Forms/FormSummary.js.map +1 -1
  2211. package/build/dist/UI/Components/Forms/ModelForm.js +169 -11
  2212. package/build/dist/UI/Components/Forms/ModelForm.js.map +1 -1
  2213. package/build/dist/UI/Components/Forms/Steps/Steps.js +3 -1
  2214. package/build/dist/UI/Components/Forms/Steps/Steps.js.map +1 -1
  2215. package/build/dist/UI/Components/Forms/Types/Field.js.map +1 -1
  2216. package/build/dist/UI/Components/Forms/Types/FormFieldSchemaType.js +5 -0
  2217. package/build/dist/UI/Components/Forms/Types/FormFieldSchemaType.js.map +1 -1
  2218. package/build/dist/UI/Components/Forms/Utils/AdvancedFormSection.js +208 -0
  2219. package/build/dist/UI/Components/Forms/Utils/AdvancedFormSection.js.map +1 -0
  2220. package/build/dist/UI/Components/Forms/Utils/CreateFormDefaults.js +174 -0
  2221. package/build/dist/UI/Components/Forms/Utils/CreateFormDefaults.js.map +1 -0
  2222. package/build/dist/UI/Components/Forms/Utils/FoldedFormFields.js +243 -0
  2223. package/build/dist/UI/Components/Forms/Utils/FoldedFormFields.js.map +1 -0
  2224. package/build/dist/UI/Components/Forms/Utils/FollowPickName.js +32 -0
  2225. package/build/dist/UI/Components/Forms/Utils/FollowPickName.js.map +1 -0
  2226. package/build/dist/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.js +2 -0
  2227. package/build/dist/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.js.map +1 -1
  2228. package/build/dist/UI/Components/Forms/Utils/FormModalWidth.js +63 -0
  2229. package/build/dist/UI/Components/Forms/Utils/FormModalWidth.js.map +1 -0
  2230. package/build/dist/UI/Components/Forms/Utils/OpenFormSections.js +32 -0
  2231. package/build/dist/UI/Components/Forms/Utils/OpenFormSections.js.map +1 -0
  2232. package/build/dist/UI/Components/Forms/Utils/SteppedFormFooter.js +71 -0
  2233. package/build/dist/UI/Components/Forms/Utils/SteppedFormFooter.js.map +1 -0
  2234. package/build/dist/UI/Components/Forms/Utils/UniqueName.js +56 -0
  2235. package/build/dist/UI/Components/Forms/Utils/UniqueName.js.map +1 -0
  2236. package/build/dist/UI/Components/Forms/Validation.js +51 -34
  2237. package/build/dist/UI/Components/Forms/Validation.js.map +1 -1
  2238. package/build/dist/UI/Components/FullPageModal/FullPageModal.js +3 -1
  2239. package/build/dist/UI/Components/FullPageModal/FullPageModal.js.map +1 -1
  2240. package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js +6 -5
  2241. package/build/dist/UI/Components/Graphs/UptimeBarTooltip.js.map +1 -1
  2242. package/build/dist/UI/Components/Header/Notifications/Notifications.js +5 -5
  2243. package/build/dist/UI/Components/Header/Notifications/Notifications.js.map +1 -1
  2244. package/build/dist/UI/Components/Header/ProjectPicker/CreateNewProjectButton.js +3 -1
  2245. package/build/dist/UI/Components/Header/ProjectPicker/CreateNewProjectButton.js.map +1 -1
  2246. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPickerFilterBox.js +3 -1
  2247. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPickerFilterBox.js.map +1 -1
  2248. package/build/dist/UI/Components/Header/SearchBox.js +3 -1
  2249. package/build/dist/UI/Components/Header/SearchBox.js.map +1 -1
  2250. package/build/dist/UI/Components/HeaderAlert/HeaderModelAlert.js +3 -1
  2251. package/build/dist/UI/Components/HeaderAlert/HeaderModelAlert.js.map +1 -1
  2252. package/build/dist/UI/Components/HeaderAlert/NotificationBell/NotificationBell.js +3 -1
  2253. package/build/dist/UI/Components/HeaderAlert/NotificationBell/NotificationBell.js.map +1 -1
  2254. package/build/dist/UI/Components/HeaderAlert/NotificationBell/NotificationBellDropdown.js +4 -2
  2255. package/build/dist/UI/Components/HeaderAlert/NotificationBell/NotificationBellDropdown.js.map +1 -1
  2256. package/build/dist/UI/Components/HeaderAlert/NotificationBell/NotificationBellSection.js +3 -1
  2257. package/build/dist/UI/Components/HeaderAlert/NotificationBell/NotificationBellSection.js.map +1 -1
  2258. package/build/dist/UI/Components/HiddenText/HiddenText.js +3 -1
  2259. package/build/dist/UI/Components/HiddenText/HiddenText.js.map +1 -1
  2260. package/build/dist/UI/Components/Icon/Icon.js +5 -4
  2261. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  2262. package/build/dist/UI/Components/ImportExport/ExportModelCard.js +13 -2
  2263. package/build/dist/UI/Components/ImportExport/ExportModelCard.js.map +1 -1
  2264. package/build/dist/UI/Components/ImportExport/ImportModelsModal.js +38 -7
  2265. package/build/dist/UI/Components/ImportExport/ImportModelsModal.js.map +1 -1
  2266. package/build/dist/UI/Components/Input/Input.js +27 -3
  2267. package/build/dist/UI/Components/Input/Input.js.map +1 -1
  2268. package/build/dist/UI/Components/IpAddressList/IpAddressList.js +8 -5
  2269. package/build/dist/UI/Components/IpAddressList/IpAddressList.js.map +1 -1
  2270. package/build/dist/UI/Components/JSONTable/JSONTable.js +10 -8
  2271. package/build/dist/UI/Components/JSONTable/JSONTable.js.map +1 -1
  2272. package/build/dist/UI/Components/LabelRule/ImportLabelRulesModal.js +61 -32
  2273. package/build/dist/UI/Components/LabelRule/ImportLabelRulesModal.js.map +1 -1
  2274. package/build/dist/UI/Components/Link/Link.js +5 -2
  2275. package/build/dist/UI/Components/Link/Link.js.map +1 -1
  2276. package/build/dist/UI/Components/List/List.js +78 -14
  2277. package/build/dist/UI/Components/List/List.js.map +1 -1
  2278. package/build/dist/UI/Components/List/ListBody.js +11 -4
  2279. package/build/dist/UI/Components/List/ListBody.js.map +1 -1
  2280. package/build/dist/UI/Components/List/ListRow.js +10 -12
  2281. package/build/dist/UI/Components/List/ListRow.js.map +1 -1
  2282. package/build/dist/UI/Components/List/ListSkeleton.js +3 -1
  2283. package/build/dist/UI/Components/List/ListSkeleton.js.map +1 -1
  2284. package/build/dist/UI/Components/Loader/Loader.js +6 -4
  2285. package/build/dist/UI/Components/Loader/Loader.js.map +1 -1
  2286. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +34 -5
  2287. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  2288. package/build/dist/UI/Components/LogsViewer/components/ActiveFilterChips.js +15 -7
  2289. package/build/dist/UI/Components/LogsViewer/components/ActiveFilterChips.js.map +1 -1
  2290. package/build/dist/UI/Components/LogsViewer/components/ColumnSelector.js +20 -16
  2291. package/build/dist/UI/Components/LogsViewer/components/ColumnSelector.js.map +1 -1
  2292. package/build/dist/UI/Components/LogsViewer/components/FacetValueRow.js +8 -4
  2293. package/build/dist/UI/Components/LogsViewer/components/FacetValueRow.js.map +1 -1
  2294. package/build/dist/UI/Components/LogsViewer/components/HistogramTooltip.js +3 -1
  2295. package/build/dist/UI/Components/LogsViewer/components/HistogramTooltip.js.map +1 -1
  2296. package/build/dist/UI/Components/LogsViewer/components/KeyboardShortcutsHelp.js +8 -7
  2297. package/build/dist/UI/Components/LogsViewer/components/KeyboardShortcutsHelp.js.map +1 -1
  2298. package/build/dist/UI/Components/LogsViewer/components/LiveLogsToggle.js +3 -1
  2299. package/build/dist/UI/Components/LogsViewer/components/LiveLogsToggle.js.map +1 -1
  2300. package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js +24 -22
  2301. package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js.map +1 -1
  2302. package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js +7 -3
  2303. package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js.map +1 -1
  2304. package/build/dist/UI/Components/LogsViewer/components/LogSearchHelp.js +13 -15
  2305. package/build/dist/UI/Components/LogsViewer/components/LogSearchHelp.js.map +1 -1
  2306. package/build/dist/UI/Components/LogsViewer/components/LogSearchSuggestions.js +4 -5
  2307. package/build/dist/UI/Components/LogsViewer/components/LogSearchSuggestions.js.map +1 -1
  2308. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +13 -6
  2309. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
  2310. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +3 -1
  2311. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
  2312. package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js +7 -5
  2313. package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js.map +1 -1
  2314. package/build/dist/UI/Components/LogsViewer/components/LogsPagination.js +1 -1
  2315. package/build/dist/UI/Components/LogsViewer/components/LogsPagination.js.map +1 -1
  2316. package/build/dist/UI/Components/LogsViewer/components/LogsTable.js +32 -18
  2317. package/build/dist/UI/Components/LogsViewer/components/LogsTable.js.map +1 -1
  2318. package/build/dist/UI/Components/LogsViewer/components/LogsViewerToolbar.js +32 -22
  2319. package/build/dist/UI/Components/LogsViewer/components/LogsViewerToolbar.js.map +1 -1
  2320. package/build/dist/UI/Components/LogsViewer/components/SavedViewsDropdown.js +17 -11
  2321. package/build/dist/UI/Components/LogsViewer/components/SavedViewsDropdown.js.map +1 -1
  2322. package/build/dist/UI/Components/Markdown.tsx/LazyMarkdownViewer.js +3 -1
  2323. package/build/dist/UI/Components/Markdown.tsx/LazyMarkdownViewer.js.map +1 -1
  2324. package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js +17 -0
  2325. package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js.map +1 -1
  2326. package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js +674 -112
  2327. package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js.map +1 -1
  2328. package/build/dist/UI/Components/Markdown.tsx/MarkdownToolbarLayout.js +150 -0
  2329. package/build/dist/UI/Components/Markdown.tsx/MarkdownToolbarLayout.js.map +1 -0
  2330. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +18 -7
  2331. package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
  2332. package/build/dist/UI/Components/MasterPage/MasterPage.js +3 -1
  2333. package/build/dist/UI/Components/MasterPage/MasterPage.js.map +1 -1
  2334. package/build/dist/UI/Components/MemberRoleAssignment/MemberRoleAssignment.js +29 -28
  2335. package/build/dist/UI/Components/MemberRoleAssignment/MemberRoleAssignment.js.map +1 -1
  2336. package/build/dist/UI/Components/Modal/ModalFooter.js +8 -1
  2337. package/build/dist/UI/Components/Modal/ModalFooter.js.map +1 -1
  2338. package/build/dist/UI/Components/ModelDelete/ModelDelete.js +19 -4
  2339. package/build/dist/UI/Components/ModelDelete/ModelDelete.js.map +1 -1
  2340. package/build/dist/UI/Components/ModelDetail/CardModelDetail.js +34 -9
  2341. package/build/dist/UI/Components/ModelDetail/CardModelDetail.js.map +1 -1
  2342. package/build/dist/UI/Components/ModelDetail/ModelDetail.js +10 -5
  2343. package/build/dist/UI/Components/ModelDetail/ModelDetail.js.map +1 -1
  2344. package/build/dist/UI/Components/ModelFormModal/ModelFormModal.js +48 -34
  2345. package/build/dist/UI/Components/ModelFormModal/ModelFormModal.js.map +1 -1
  2346. package/build/dist/UI/Components/ModelList/ModelList.js +53 -7
  2347. package/build/dist/UI/Components/ModelList/ModelList.js.map +1 -1
  2348. package/build/dist/UI/Components/ModelList/StaticModelList.js +14 -7
  2349. package/build/dist/UI/Components/ModelList/StaticModelList.js.map +1 -1
  2350. package/build/dist/UI/Components/ModelSwitch/ModelSwitchCard.js +151 -0
  2351. package/build/dist/UI/Components/ModelSwitch/ModelSwitchCard.js.map +1 -0
  2352. package/build/dist/UI/Components/ModelSwitch/ModelSwitchEvents.js +54 -0
  2353. package/build/dist/UI/Components/ModelSwitch/ModelSwitchEvents.js.map +1 -0
  2354. package/build/dist/UI/Components/ModelSwitch/ModelSwitchRow.js +201 -0
  2355. package/build/dist/UI/Components/ModelSwitch/ModelSwitchRow.js.map +1 -0
  2356. package/build/dist/UI/Components/ModelSwitch/ModelSwitchUtil.js +60 -0
  2357. package/build/dist/UI/Components/ModelSwitch/ModelSwitchUtil.js.map +1 -0
  2358. package/build/dist/UI/Components/ModelSwitch/ModelSwitchesCard.js +116 -0
  2359. package/build/dist/UI/Components/ModelSwitch/ModelSwitchesCard.js.map +1 -0
  2360. package/build/dist/UI/Components/ModelSwitch/useSaveModelSwitch.js +68 -0
  2361. package/build/dist/UI/Components/ModelSwitch/useSaveModelSwitch.js.map +1 -0
  2362. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +452 -220
  2363. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  2364. package/build/dist/UI/Components/ModelTable/ColumnCustomizationModal.js +46 -39
  2365. package/build/dist/UI/Components/ModelTable/ColumnCustomizationModal.js.map +1 -1
  2366. package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js +2 -1
  2367. package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js.map +1 -1
  2368. package/build/dist/UI/Components/ModelTable/EmptyStateOptions.js +2 -0
  2369. package/build/dist/UI/Components/ModelTable/EmptyStateOptions.js.map +1 -0
  2370. package/build/dist/UI/Components/ModelTable/ModelTable.js +32 -6
  2371. package/build/dist/UI/Components/ModelTable/ModelTable.js.map +1 -1
  2372. package/build/dist/UI/Components/ModelTable/ModelTableEmptyState.js +191 -0
  2373. package/build/dist/UI/Components/ModelTable/ModelTableEmptyState.js.map +1 -0
  2374. package/build/dist/UI/Components/ModelTable/TableView.js +9 -5
  2375. package/build/dist/UI/Components/ModelTable/TableView.js.map +1 -1
  2376. package/build/dist/UI/Components/Monitor/SeriesLabelsViewer.js +3 -1
  2377. package/build/dist/UI/Components/Monitor/SeriesLabelsViewer.js.map +1 -1
  2378. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +23 -1
  2379. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
  2380. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesModal.js +28 -22
  2381. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesModal.js.map +1 -1
  2382. package/build/dist/UI/Components/MoreMenu/MoreMenu.js +24 -11
  2383. package/build/dist/UI/Components/MoreMenu/MoreMenu.js.map +1 -1
  2384. package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js +16 -4
  2385. package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js.map +1 -1
  2386. package/build/dist/UI/Components/Navbar/NavBar.js +11 -19
  2387. package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
  2388. package/build/dist/UI/Components/Navbar/NavBarCategoryToggle.js +44 -0
  2389. package/build/dist/UI/Components/Navbar/NavBarCategoryToggle.js.map +1 -0
  2390. package/build/dist/UI/Components/Navbar/NavBarMenuCatalog.js +165 -0
  2391. package/build/dist/UI/Components/Navbar/NavBarMenuCatalog.js.map +1 -0
  2392. package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +213 -86
  2393. package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
  2394. package/build/dist/UI/Components/Navbar/NavBarMobileMenu.js +65 -0
  2395. package/build/dist/UI/Components/Navbar/NavBarMobileMenu.js.map +1 -0
  2396. package/build/dist/UI/Components/ObjectID/ObjectIDView.js +31 -5
  2397. package/build/dist/UI/Components/ObjectID/ObjectIDView.js.map +1 -1
  2398. package/build/dist/UI/Components/OsVersionDisplay/OsVersionDisplay.js +7 -1
  2399. package/build/dist/UI/Components/OsVersionDisplay/OsVersionDisplay.js.map +1 -1
  2400. package/build/dist/UI/Components/Page/ModelHeaderEvents.js +43 -0
  2401. package/build/dist/UI/Components/Page/ModelHeaderEvents.js.map +1 -0
  2402. package/build/dist/UI/Components/Page/ModelPage.js +27 -3
  2403. package/build/dist/UI/Components/Page/ModelPage.js.map +1 -1
  2404. package/build/dist/UI/Components/Page/Page.js +32 -14
  2405. package/build/dist/UI/Components/Page/Page.js.map +1 -1
  2406. package/build/dist/UI/Components/Pagination/Pagination.js +143 -65
  2407. package/build/dist/UI/Components/Pagination/Pagination.js.map +1 -1
  2408. package/build/dist/UI/Components/Pagination/PaginationCopy.js +51 -0
  2409. package/build/dist/UI/Components/Pagination/PaginationCopy.js.map +1 -0
  2410. package/build/dist/UI/Components/Pagination/PaginationSummary.js +53 -0
  2411. package/build/dist/UI/Components/Pagination/PaginationSummary.js.map +1 -0
  2412. package/build/dist/UI/Components/PeoplePicker/OwnersFormField.js +59 -0
  2413. package/build/dist/UI/Components/PeoplePicker/OwnersFormField.js.map +1 -0
  2414. package/build/dist/UI/Components/PeoplePicker/OwnersPicker.js +30 -0
  2415. package/build/dist/UI/Components/PeoplePicker/OwnersPicker.js.map +1 -0
  2416. package/build/dist/UI/Components/PeoplePicker/PeopleAvatar.js +109 -0
  2417. package/build/dist/UI/Components/PeoplePicker/PeopleAvatar.js.map +1 -0
  2418. package/build/dist/UI/Components/PeoplePicker/PeopleList.js +72 -0
  2419. package/build/dist/UI/Components/PeoplePicker/PeopleList.js.map +1 -0
  2420. package/build/dist/UI/Components/PeoplePicker/PeoplePicker.js +135 -0
  2421. package/build/dist/UI/Components/PeoplePicker/PeoplePicker.js.map +1 -0
  2422. package/build/dist/UI/Components/PeoplePicker/PeoplePickerKinds.js +379 -0
  2423. package/build/dist/UI/Components/PeoplePicker/PeoplePickerKinds.js.map +1 -0
  2424. package/build/dist/UI/Components/PeoplePicker/PeoplePickerTypes.js +226 -0
  2425. package/build/dist/UI/Components/PeoplePicker/PeoplePickerTypes.js.map +1 -0
  2426. package/build/dist/UI/Components/PeoplePicker/PeopleSearchPopup.js +301 -0
  2427. package/build/dist/UI/Components/PeoplePicker/PeopleSearchPopup.js.map +1 -0
  2428. package/build/dist/UI/Components/PeoplePicker/usePeopleOptions.js +151 -0
  2429. package/build/dist/UI/Components/PeoplePicker/usePeopleOptions.js.map +1 -0
  2430. package/build/dist/UI/Components/Pill/Pill.js +14 -3
  2431. package/build/dist/UI/Components/Pill/Pill.js.map +1 -1
  2432. package/build/dist/UI/Components/Pill/PillColors.js +22 -181
  2433. package/build/dist/UI/Components/Pill/PillColors.js.map +1 -1
  2434. package/build/dist/UI/Components/Probe/Probe.js +4 -2
  2435. package/build/dist/UI/Components/Probe/Probe.js.map +1 -1
  2436. package/build/dist/UI/Components/ProgressBar/ProgressBar.js +14 -7
  2437. package/build/dist/UI/Components/ProgressBar/ProgressBar.js.map +1 -1
  2438. package/build/dist/UI/Components/ProgressButtons/ProgressButtons.js +3 -1
  2439. package/build/dist/UI/Components/ProgressButtons/ProgressButtons.js.map +1 -1
  2440. package/build/dist/UI/Components/ProjectInvitations/PendingProjectInvitations.js +27 -8
  2441. package/build/dist/UI/Components/ProjectInvitations/PendingProjectInvitations.js.map +1 -1
  2442. package/build/dist/UI/Components/PublicForm/PublicFormFavicon.js +66 -0
  2443. package/build/dist/UI/Components/PublicForm/PublicFormFavicon.js.map +1 -0
  2444. package/build/dist/UI/Components/PublicForm/PublicFormFields.js +248 -0
  2445. package/build/dist/UI/Components/PublicForm/PublicFormFields.js.map +1 -0
  2446. package/build/dist/UI/Components/PublicForm/PublicFormLogo.js +38 -0
  2447. package/build/dist/UI/Components/PublicForm/PublicFormLogo.js.map +1 -0
  2448. package/build/dist/UI/Components/ResetObjectID/ResetObjectID.js +15 -2
  2449. package/build/dist/UI/Components/ResetObjectID/ResetObjectID.js.map +1 -1
  2450. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaBuilder.js +217 -335
  2451. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaBuilder.js.map +1 -1
  2452. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaFields.js +585 -0
  2453. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaFields.js.map +1 -0
  2454. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaModelForm.js +32 -6
  2455. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaModelForm.js.map +1 -1
  2456. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaModelTable.js +69 -16
  2457. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaModelTable.js.map +1 -1
  2458. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaSummary.js +18 -19
  2459. package/build/dist/UI/Components/RuleCriteria/RuleCriteriaSummary.js.map +1 -1
  2460. package/build/dist/UI/Components/RuleRun/RuleDetailFields.js +53 -2
  2461. package/build/dist/UI/Components/RuleRun/RuleDetailFields.js.map +1 -1
  2462. package/build/dist/UI/Components/RuleRun/RuleEnabledField.js +41 -0
  2463. package/build/dist/UI/Components/RuleRun/RuleEnabledField.js.map +1 -0
  2464. package/build/dist/UI/Components/RuleRun/RuleTable.js +9 -1
  2465. package/build/dist/UI/Components/RuleRun/RuleTable.js.map +1 -1
  2466. package/build/dist/UI/Components/RuleRun/RuleView.js +11 -4
  2467. package/build/dist/UI/Components/RuleRun/RuleView.js.map +1 -1
  2468. package/build/dist/UI/Components/RuleRun/RunRuleNowModal.js +8 -1
  2469. package/build/dist/UI/Components/RuleRun/RunRuleNowModal.js.map +1 -1
  2470. package/build/dist/UI/Components/Runbook/StepTimeoutInput.js +12 -13
  2471. package/build/dist/UI/Components/Runbook/StepTimeoutInput.js.map +1 -1
  2472. package/build/dist/UI/Components/SaveStatus/SaveStatus.js +46 -0
  2473. package/build/dist/UI/Components/SaveStatus/SaveStatus.js.map +1 -0
  2474. package/build/dist/UI/Components/SaveStatus/useSaveOnChange.js +98 -0
  2475. package/build/dist/UI/Components/SaveStatus/useSaveOnChange.js.map +1 -0
  2476. package/build/dist/UI/Components/SavedViews/SavedViewsFacetSection.js +19 -8
  2477. package/build/dist/UI/Components/SavedViews/SavedViewsFacetSection.js.map +1 -1
  2478. package/build/dist/UI/Components/SavedViews/SavedViewsSearchInput.js +5 -2
  2479. package/build/dist/UI/Components/SavedViews/SavedViewsSearchInput.js.map +1 -1
  2480. package/build/dist/UI/Components/SavedViews/SavedViewsShowMoreButton.js +5 -1
  2481. package/build/dist/UI/Components/SavedViews/SavedViewsShowMoreButton.js.map +1 -1
  2482. package/build/dist/UI/Components/SideMenu/SideMenu.js +4 -6
  2483. package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
  2484. package/build/dist/UI/Components/SideMenu/SideMenuSection.js.map +1 -1
  2485. package/build/dist/UI/Components/SideMenu/SideMenuSectionState.js +52 -9
  2486. package/build/dist/UI/Components/SideMenu/SideMenuSectionState.js.map +1 -1
  2487. package/build/dist/UI/Components/SideOver/SideOver.js +9 -6
  2488. package/build/dist/UI/Components/SideOver/SideOver.js.map +1 -1
  2489. package/build/dist/UI/Components/SimpleLogViewer/SimpleLogViewer.js +3 -1
  2490. package/build/dist/UI/Components/SimpleLogViewer/SimpleLogViewer.js.map +1 -1
  2491. package/build/dist/UI/Components/SmtpConfig/SmtpConfigFormFields.js +503 -0
  2492. package/build/dist/UI/Components/SmtpConfig/SmtpConfigFormFields.js.map +1 -0
  2493. package/build/dist/UI/Components/Sso/OidcProviderFormFields.js +283 -0
  2494. package/build/dist/UI/Components/Sso/OidcProviderFormFields.js.map +1 -0
  2495. package/build/dist/UI/Components/Sso/SamlProviderFormFields.js +182 -0
  2496. package/build/dist/UI/Components/Sso/SamlProviderFormFields.js.map +1 -0
  2497. package/build/dist/UI/Components/Sso/SsoProviderFormFields.js +208 -0
  2498. package/build/dist/UI/Components/Sso/SsoProviderFormFields.js.map +1 -0
  2499. package/build/dist/UI/Components/StackedProgressBar/StackedProgressBar.js +3 -1
  2500. package/build/dist/UI/Components/StackedProgressBar/StackedProgressBar.js.map +1 -1
  2501. package/build/dist/UI/Components/StateTimeline/CurrentlyActiveIndicator.js +28 -0
  2502. package/build/dist/UI/Components/StateTimeline/CurrentlyActiveIndicator.js.map +1 -0
  2503. package/build/dist/UI/Components/StateTimeline/StateTimelineColumns.js +55 -0
  2504. package/build/dist/UI/Components/StateTimeline/StateTimelineColumns.js.map +1 -0
  2505. package/build/dist/UI/Components/StateTimeline/StateTimelineDuration.js +28 -0
  2506. package/build/dist/UI/Components/StateTimeline/StateTimelineDuration.js.map +1 -0
  2507. package/build/dist/UI/Components/StateTimeline/StateTimelineEndsAt.js +19 -0
  2508. package/build/dist/UI/Components/StateTimeline/StateTimelineEndsAt.js.map +1 -0
  2509. package/build/dist/UI/Components/StatusBadge/StatusBadge.js +4 -1
  2510. package/build/dist/UI/Components/StatusBadge/StatusBadge.js.map +1 -1
  2511. package/build/dist/UI/Components/StatusBubble/StatusBubble.js +7 -2
  2512. package/build/dist/UI/Components/StatusBubble/StatusBubble.js.map +1 -1
  2513. package/build/dist/UI/Components/StatusPage/ResourceGrid.js +31 -20
  2514. package/build/dist/UI/Components/StatusPage/ResourceGrid.js.map +1 -1
  2515. package/build/dist/UI/Components/StatusPage/ResourceGroupNavigator.js +34 -16
  2516. package/build/dist/UI/Components/StatusPage/ResourceGroupNavigator.js.map +1 -1
  2517. package/build/dist/UI/Components/StatusPage/ResourceList.js +28 -11
  2518. package/build/dist/UI/Components/StatusPage/ResourceList.js.map +1 -1
  2519. package/build/dist/UI/Components/Table/DragHandle.js +30 -0
  2520. package/build/dist/UI/Components/Table/DragHandle.js.map +1 -0
  2521. package/build/dist/UI/Components/Table/EmptyTableMessage.js +159 -35
  2522. package/build/dist/UI/Components/Table/EmptyTableMessage.js.map +1 -1
  2523. package/build/dist/UI/Components/Table/Table.js +140 -50
  2524. package/build/dist/UI/Components/Table/Table.js.map +1 -1
  2525. package/build/dist/UI/Components/Table/TableBody.js +26 -2
  2526. package/build/dist/UI/Components/Table/TableBody.js.map +1 -1
  2527. package/build/dist/UI/Components/Table/TableEmptyState.js +131 -0
  2528. package/build/dist/UI/Components/Table/TableEmptyState.js.map +1 -0
  2529. package/build/dist/UI/Components/Table/TableEmptyStateBuilders.js +114 -0
  2530. package/build/dist/UI/Components/Table/TableEmptyStateBuilders.js.map +1 -0
  2531. package/build/dist/UI/Components/Table/TableRow.js +46 -20
  2532. package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
  2533. package/build/dist/UI/Components/Table/TableSkeletonRows.js +4 -2
  2534. package/build/dist/UI/Components/Table/TableSkeletonRows.js.map +1 -1
  2535. package/build/dist/UI/Components/TableColumnList/TableColumnListComponent.js +11 -2
  2536. package/build/dist/UI/Components/TableColumnList/TableColumnListComponent.js.map +1 -1
  2537. package/build/dist/UI/Components/Tabs/Tabs.js +3 -1
  2538. package/build/dist/UI/Components/Tabs/Tabs.js.map +1 -1
  2539. package/build/dist/UI/Components/TelemetryViewer/FacetVisibility.js +27 -8
  2540. package/build/dist/UI/Components/TelemetryViewer/FacetVisibility.js.map +1 -1
  2541. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js +31 -9
  2542. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js.map +1 -1
  2543. package/build/dist/UI/Components/TelemetryViewer/components/FacetSearchInput.js +9 -2
  2544. package/build/dist/UI/Components/TelemetryViewer/components/FacetSearchInput.js.map +1 -1
  2545. package/build/dist/UI/Components/TelemetryViewer/components/FacetShowMoreButton.js +5 -1
  2546. package/build/dist/UI/Components/TelemetryViewer/components/FacetShowMoreButton.js.map +1 -1
  2547. package/build/dist/UI/Components/TelemetryViewer/components/HiddenFacetsFooter.js +8 -3
  2548. package/build/dist/UI/Components/TelemetryViewer/components/HiddenFacetsFooter.js.map +1 -1
  2549. package/build/dist/UI/Components/TelemetryViewer/components/LockedFilterChip.js +56 -27
  2550. package/build/dist/UI/Components/TelemetryViewer/components/LockedFilterChip.js.map +1 -1
  2551. package/build/dist/UI/Components/TelemetryViewer/components/SavedViewsDropdown.js +17 -11
  2552. package/build/dist/UI/Components/TelemetryViewer/components/SavedViewsDropdown.js.map +1 -1
  2553. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryActiveFilterChips.js +9 -3
  2554. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryActiveFilterChips.js.map +1 -1
  2555. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryDetailPanel.js +4 -2
  2556. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryDetailPanel.js.map +1 -1
  2557. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js +3 -1
  2558. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js.map +1 -1
  2559. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.js +8 -4
  2560. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetValueRow.js.map +1 -1
  2561. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js +9 -5
  2562. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js.map +1 -1
  2563. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.js +3 -1
  2564. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.js.map +1 -1
  2565. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryItemLabel.js +11 -0
  2566. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryItemLabel.js.map +1 -0
  2567. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryPagination.js +3 -10
  2568. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryPagination.js.map +1 -1
  2569. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryResultTotal.js +60 -0
  2570. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryResultTotal.js.map +1 -0
  2571. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js +5 -3
  2572. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js.map +1 -1
  2573. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchHelp.js +13 -13
  2574. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchHelp.js.map +1 -1
  2575. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchSuggestions.js +4 -5
  2576. package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchSuggestions.js.map +1 -1
  2577. package/build/dist/UI/Components/TemplateVariables/InsertTemplateVariableButton.js +90 -0
  2578. package/build/dist/UI/Components/TemplateVariables/InsertTemplateVariableButton.js.map +1 -0
  2579. package/build/dist/UI/Components/TemplateVariables/TemplateVariableIcons.js +15 -0
  2580. package/build/dist/UI/Components/TemplateVariables/TemplateVariableIcons.js.map +1 -0
  2581. package/build/dist/UI/Components/TemplateVariables/TemplateVariableMenu.js +159 -0
  2582. package/build/dist/UI/Components/TemplateVariables/TemplateVariableMenu.js.map +1 -0
  2583. package/build/dist/UI/Components/TemplateVariables/TemplateVariablePopup.js +160 -0
  2584. package/build/dist/UI/Components/TemplateVariables/TemplateVariablePopup.js.map +1 -0
  2585. package/build/dist/UI/Components/TemplateVariables/TemplateVariableTextControl.js +73 -0
  2586. package/build/dist/UI/Components/TemplateVariables/TemplateVariableTextControl.js.map +1 -0
  2587. package/build/dist/UI/Components/TemplateVariables/TemplateVariablesCopy.js +28 -0
  2588. package/build/dist/UI/Components/TemplateVariables/TemplateVariablesCopy.js.map +1 -0
  2589. package/build/dist/UI/Components/TemplateVariables/TemplateVariablesList.js +98 -0
  2590. package/build/dist/UI/Components/TemplateVariables/TemplateVariablesList.js.map +1 -0
  2591. package/build/dist/UI/Components/TemplateVariables/TextControlUtil.js +197 -0
  2592. package/build/dist/UI/Components/TemplateVariables/TextControlUtil.js.map +1 -0
  2593. package/build/dist/UI/Components/TemplateVariables/useTemplateVariableTyping.js +184 -0
  2594. package/build/dist/UI/Components/TemplateVariables/useTemplateVariableTyping.js.map +1 -0
  2595. package/build/dist/UI/Components/TimePicker/TimePicker.js +22 -21
  2596. package/build/dist/UI/Components/TimePicker/TimePicker.js.map +1 -1
  2597. package/build/dist/UI/Components/Toggle/Toggle.js +39 -25
  2598. package/build/dist/UI/Components/Toggle/Toggle.js.map +1 -1
  2599. package/build/dist/UI/Components/Tooltip/InfoTooltip.js +6 -1
  2600. package/build/dist/UI/Components/Tooltip/InfoTooltip.js.map +1 -1
  2601. package/build/dist/UI/Components/Tooltip/Tooltip.js +5 -3
  2602. package/build/dist/UI/Components/Tooltip/Tooltip.js.map +1 -1
  2603. package/build/dist/UI/Components/TranslatedSentence/TranslatedSentence.js +22 -0
  2604. package/build/dist/UI/Components/TranslatedSentence/TranslatedSentence.js.map +1 -0
  2605. package/build/dist/UI/Components/Workflow/ArgumentsForm.js +35 -56
  2606. package/build/dist/UI/Components/Workflow/ArgumentsForm.js.map +1 -1
  2607. package/build/dist/UI/Components/Workflow/ColumnEditor/AddColumnPicker.js +15 -14
  2608. package/build/dist/UI/Components/Workflow/ColumnEditor/AddColumnPicker.js.map +1 -1
  2609. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnConditionRow.js +8 -6
  2610. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnConditionRow.js.map +1 -1
  2611. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnControl.js +22 -14
  2612. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnControl.js.map +1 -1
  2613. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnFieldRow.js +15 -12
  2614. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnFieldRow.js.map +1 -1
  2615. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnOperators.js +15 -14
  2616. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnOperators.js.map +1 -1
  2617. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnPickerOptions.js +2 -1
  2618. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnPickerOptions.js.map +1 -1
  2619. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnRowSerialization.js +3 -2
  2620. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnRowSerialization.js.map +1 -1
  2621. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnValueInput.js +13 -6
  2622. package/build/dist/UI/Components/Workflow/ColumnEditor/ColumnValueInput.js.map +1 -1
  2623. package/build/dist/UI/Components/Workflow/ColumnEditor/ModelQueryBuilder.js +9 -6
  2624. package/build/dist/UI/Components/Workflow/ColumnEditor/ModelQueryBuilder.js.map +1 -1
  2625. package/build/dist/UI/Components/Workflow/ColumnEditor/ModelRecordForm.js +20 -10
  2626. package/build/dist/UI/Components/Workflow/ColumnEditor/ModelRecordForm.js.map +1 -1
  2627. package/build/dist/UI/Components/Workflow/Component.js +7 -3
  2628. package/build/dist/UI/Components/Workflow/Component.js.map +1 -1
  2629. package/build/dist/UI/Components/Workflow/ComponentArgumentsViewer.js +10 -3
  2630. package/build/dist/UI/Components/Workflow/ComponentArgumentsViewer.js.map +1 -1
  2631. package/build/dist/UI/Components/Workflow/ComponentPicker/ComponentSearch.js +7 -89
  2632. package/build/dist/UI/Components/Workflow/ComponentPicker/ComponentSearch.js.map +1 -1
  2633. package/build/dist/UI/Components/Workflow/ComponentPicker/PickerItems.js +33 -15
  2634. package/build/dist/UI/Components/Workflow/ComponentPicker/PickerItems.js.map +1 -1
  2635. package/build/dist/UI/Components/Workflow/ComponentPortViewer.js +3 -1
  2636. package/build/dist/UI/Components/Workflow/ComponentPortViewer.js.map +1 -1
  2637. package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js +7 -2
  2638. package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js.map +1 -1
  2639. package/build/dist/UI/Components/Workflow/ComponentSettingsModal.js +15 -6
  2640. package/build/dist/UI/Components/Workflow/ComponentSettingsModal.js.map +1 -1
  2641. package/build/dist/UI/Components/Workflow/ComponentSettingsSection.js +4 -2
  2642. package/build/dist/UI/Components/Workflow/ComponentSettingsSection.js.map +1 -1
  2643. package/build/dist/UI/Components/Workflow/ComponentsModal.js +67 -48
  2644. package/build/dist/UI/Components/Workflow/ComponentsModal.js.map +1 -1
  2645. package/build/dist/UI/Components/Workflow/Condition/ConditionEditor.js +35 -17
  2646. package/build/dist/UI/Components/Workflow/Condition/ConditionEditor.js.map +1 -1
  2647. package/build/dist/UI/Components/Workflow/Condition/ConditionModel.js +23 -11
  2648. package/build/dist/UI/Components/Workflow/Condition/ConditionModel.js.map +1 -1
  2649. package/build/dist/UI/Components/Workflow/CronScheduleField.js +25 -24
  2650. package/build/dist/UI/Components/Workflow/CronScheduleField.js.map +1 -1
  2651. package/build/dist/UI/Components/Workflow/DocumentationViewer.js +10 -2
  2652. package/build/dist/UI/Components/Workflow/DocumentationViewer.js.map +1 -1
  2653. package/build/dist/UI/Components/Workflow/GraphLint.js +40 -13
  2654. package/build/dist/UI/Components/Workflow/GraphLint.js.map +1 -1
  2655. package/build/dist/UI/Components/Workflow/GraphLintSummary.js +16 -7
  2656. package/build/dist/UI/Components/Workflow/GraphLintSummary.js.map +1 -1
  2657. package/build/dist/UI/Components/Workflow/ManualTriggerPanel.js +11 -8
  2658. package/build/dist/UI/Components/Workflow/ManualTriggerPanel.js.map +1 -1
  2659. package/build/dist/UI/Components/Workflow/ModelColumnEditor.js +47 -38
  2660. package/build/dist/UI/Components/Workflow/ModelColumnEditor.js.map +1 -1
  2661. package/build/dist/UI/Components/Workflow/ModelFieldPicker.js +54 -37
  2662. package/build/dist/UI/Components/Workflow/ModelFieldPicker.js.map +1 -1
  2663. package/build/dist/UI/Components/Workflow/RunForm.js +13 -5
  2664. package/build/dist/UI/Components/Workflow/RunForm.js.map +1 -1
  2665. package/build/dist/UI/Components/Workflow/RunStatusWatcher.js +27 -6
  2666. package/build/dist/UI/Components/Workflow/RunStatusWatcher.js.map +1 -1
  2667. package/build/dist/UI/Components/Workflow/StepTraceViewer.js +68 -44
  2668. package/build/dist/UI/Components/Workflow/StepTraceViewer.js.map +1 -1
  2669. package/build/dist/UI/Components/Workflow/UseRunWatch.js +2 -2
  2670. package/build/dist/UI/Components/Workflow/UseRunWatch.js.map +1 -1
  2671. package/build/dist/UI/Components/Workflow/Utils.js +4 -1
  2672. package/build/dist/UI/Components/Workflow/Utils.js.map +1 -1
  2673. package/build/dist/UI/Components/Workflow/ValuePicker/InsertValueButton.js +4 -2
  2674. package/build/dist/UI/Components/Workflow/ValuePicker/InsertValueButton.js.map +1 -1
  2675. package/build/dist/UI/Components/Workflow/ValuePicker/ValuePickerMenu.js +60 -48
  2676. package/build/dist/UI/Components/Workflow/ValuePicker/ValuePickerMenu.js.map +1 -1
  2677. package/build/dist/UI/Components/Workflow/ValuePicker/ValuePickerPopup.js +3 -1
  2678. package/build/dist/UI/Components/Workflow/ValuePicker/ValuePickerPopup.js.map +1 -1
  2679. package/build/dist/UI/Components/Workflow/ValuePicker/ValueSingleField.js +6 -3
  2680. package/build/dist/UI/Components/Workflow/ValuePicker/ValueSingleField.js.map +1 -1
  2681. package/build/dist/UI/Components/Workflow/ValuePicker/ValueTextField.js +7 -4
  2682. package/build/dist/UI/Components/Workflow/ValuePicker/ValueTextField.js.map +1 -1
  2683. package/build/dist/UI/Components/Workflow/WorkflowIssuesModal.js +21 -20
  2684. package/build/dist/UI/Components/Workflow/WorkflowIssuesModal.js.map +1 -1
  2685. package/build/dist/UI/Components/Workflow/WorkflowLogModal.js +10 -6
  2686. package/build/dist/UI/Components/Workflow/WorkflowLogModal.js.map +1 -1
  2687. package/build/dist/UI/Components/Workflow/WorkflowStatusBar.js +16 -9
  2688. package/build/dist/UI/Components/Workflow/WorkflowStatusBar.js.map +1 -1
  2689. package/build/dist/UI/Types/UseAnchoredFieldPopup.js +24 -5
  2690. package/build/dist/UI/Types/UseAnchoredFieldPopup.js.map +1 -1
  2691. package/build/dist/UI/Utils/AnalyticsModelAPI/AnalyticsModelAPI.js +2 -4
  2692. package/build/dist/UI/Utils/AnalyticsModelAPI/AnalyticsModelAPI.js.map +1 -1
  2693. package/build/dist/UI/Utils/DefaultInviteTeam.js +207 -0
  2694. package/build/dist/UI/Utils/DefaultInviteTeam.js.map +1 -0
  2695. package/build/dist/UI/Utils/Dropdown.js +74 -2
  2696. package/build/dist/UI/Utils/Dropdown.js.map +1 -1
  2697. package/build/dist/UI/Utils/ForeignDomMutationGuard.js +111 -0
  2698. package/build/dist/UI/Utils/ForeignDomMutationGuard.js.map +1 -0
  2699. package/build/dist/UI/Utils/GrantablePermission.js +139 -0
  2700. package/build/dist/UI/Utils/GrantablePermission.js.map +1 -0
  2701. package/build/dist/UI/Utils/PermissionGate.js +84 -5
  2702. package/build/dist/UI/Utils/PermissionGate.js.map +1 -1
  2703. package/build/dist/UI/Utils/Rules/RuleRunClient.js +10 -2
  2704. package/build/dist/UI/Utils/Rules/RuleRunClient.js.map +1 -1
  2705. package/build/dist/UI/Utils/Telemetry/ResultTotal.js +102 -0
  2706. package/build/dist/UI/Utils/Telemetry/ResultTotal.js.map +1 -0
  2707. package/build/dist/UI/Utils/Telemetry/UseResultTotal.js +94 -0
  2708. package/build/dist/UI/Utils/Telemetry/UseResultTotal.js.map +1 -0
  2709. package/build/dist/UI/Utils/TranslateTemplate.js +369 -13
  2710. package/build/dist/UI/Utils/TranslateTemplate.js.map +1 -1
  2711. package/build/dist/UI/Utils/Translation.js +23 -2
  2712. package/build/dist/UI/Utils/Translation.js.map +1 -1
  2713. package/build/dist/UI/Utils/UseClockTick.js +20 -2
  2714. package/build/dist/UI/Utils/UseClockTick.js.map +1 -1
  2715. package/build/dist/UI/Utils/UseLiveDuration.js +66 -0
  2716. package/build/dist/UI/Utils/UseLiveDuration.js.map +1 -0
  2717. package/build/dist/UI/Utils/UseTranslator.js +20 -0
  2718. package/build/dist/UI/Utils/UseTranslator.js.map +1 -0
  2719. package/build/dist/Utils/ColorContrast.js +182 -0
  2720. package/build/dist/Utils/ColorContrast.js.map +1 -0
  2721. package/build/dist/Utils/DeveloperDocs/AiAssistantExamples.js +3 -3
  2722. package/build/dist/Utils/DeveloperDocs/AiAssistantExamples.js.map +1 -1
  2723. package/build/dist/Utils/DeveloperDocs/ApiExamples.js +1 -177
  2724. package/build/dist/Utils/DeveloperDocs/ApiExamples.js.map +1 -1
  2725. package/build/dist/Utils/DeveloperDocs/ExampleBuilder.js +1116 -0
  2726. package/build/dist/Utils/DeveloperDocs/ExampleBuilder.js.map +1 -0
  2727. package/build/dist/Utils/DeveloperDocs/ExampleValues.js +67 -0
  2728. package/build/dist/Utils/DeveloperDocs/ExampleValues.js.map +1 -1
  2729. package/build/dist/Utils/DeveloperDocs/Hcl.js +93 -17
  2730. package/build/dist/Utils/DeveloperDocs/Hcl.js.map +1 -1
  2731. package/build/dist/Utils/DeveloperDocs/LiveData.js +142 -0
  2732. package/build/dist/Utils/DeveloperDocs/LiveData.js.map +1 -0
  2733. package/build/dist/Utils/DeveloperDocs/PageLookups.js +224 -0
  2734. package/build/dist/Utils/DeveloperDocs/PageLookups.js.map +1 -0
  2735. package/build/dist/Utils/DeveloperDocs/ResourceProfiles.js +1447 -0
  2736. package/build/dist/Utils/DeveloperDocs/ResourceProfiles.js.map +1 -0
  2737. package/build/dist/Utils/DeveloperDocs/TerraformConfig.js +82 -79
  2738. package/build/dist/Utils/DeveloperDocs/TerraformConfig.js.map +1 -1
  2739. package/build/dist/Utils/DeveloperDocs/TerraformMonitorSteps.js +35 -12
  2740. package/build/dist/Utils/DeveloperDocs/TerraformMonitorSteps.js.map +1 -1
  2741. package/build/dist/Utils/DeveloperDocs/TerraformSchema.js +54 -0
  2742. package/build/dist/Utils/DeveloperDocs/TerraformSchema.js.map +1 -1
  2743. package/build/dist/Utils/DistinctColor.js +151 -0
  2744. package/build/dist/Utils/DistinctColor.js.map +1 -0
  2745. package/build/dist/Utils/Email/EmailColorUtil.js +101 -0
  2746. package/build/dist/Utils/Email/EmailColorUtil.js.map +1 -0
  2747. package/build/dist/Utils/Episode/EpisodeTemplateVariables.js +60 -0
  2748. package/build/dist/Utils/Episode/EpisodeTemplateVariables.js.map +1 -0
  2749. package/build/dist/Utils/Incident/IncidentNoteTemplateVariables.js +26 -5
  2750. package/build/dist/Utils/Incident/IncidentNoteTemplateVariables.js.map +1 -1
  2751. package/build/dist/Utils/Incident/IncidentSlaNoteTemplateVariables.js +26 -0
  2752. package/build/dist/Utils/Incident/IncidentSlaNoteTemplateVariables.js.map +1 -0
  2753. package/build/dist/Utils/KeyFromName.js +139 -0
  2754. package/build/dist/Utils/KeyFromName.js.map +1 -0
  2755. package/build/dist/Utils/ListOrder.js +242 -0
  2756. package/build/dist/Utils/ListOrder.js.map +1 -0
  2757. package/build/dist/Utils/Measurement/MeasurementMoments.js +477 -0
  2758. package/build/dist/Utils/Measurement/MeasurementMoments.js.map +1 -0
  2759. package/build/dist/Utils/Monitor/MonitorOverviewPresentationUtil.js +12 -1
  2760. package/build/dist/Utils/Monitor/MonitorOverviewPresentationUtil.js.map +1 -1
  2761. package/build/dist/Utils/Project/NumberPrefix.js +126 -0
  2762. package/build/dist/Utils/Project/NumberPrefix.js.map +1 -0
  2763. package/build/dist/Utils/Slo/SloBurnRateTemplate.js +17 -0
  2764. package/build/dist/Utils/Slo/SloBurnRateTemplate.js.map +1 -1
  2765. package/build/dist/Utils/Slo/SloHealth.js +9 -3
  2766. package/build/dist/Utils/Slo/SloHealth.js.map +1 -1
  2767. package/build/dist/Utils/StateOrder.js +384 -0
  2768. package/build/dist/Utils/StateOrder.js.map +1 -0
  2769. package/build/dist/Utils/StatusPage/ReportSchedule.js +304 -0
  2770. package/build/dist/Utils/StatusPage/ReportSchedule.js.map +1 -0
  2771. package/build/dist/Utils/Telemetry/DiscoveredResourceName.js +65 -0
  2772. package/build/dist/Utils/Telemetry/DiscoveredResourceName.js.map +1 -0
  2773. package/build/dist/Utils/WordMatch.js +115 -0
  2774. package/build/dist/Utils/WordMatch.js.map +1 -0
  2775. package/package.json +1 -1
  2776. package/Server/Services/IncidentFormService.ts +0 -1566
  2777. package/Server/Services/IncidentFormSubmissionService.ts +0 -97
  2778. package/Tests/App/Accounts/IncidentFormPage.test.tsx +0 -2036
  2779. package/Tests/App/Accounts/IncidentFormServerMessages.test.ts +0 -119
  2780. package/Tests/App/Accounts/IncidentFormUtils.test.ts +0 -1157
  2781. package/Tests/App/Dashboard/BulkChangeStateModalSteps.test.ts +0 -109
  2782. package/Tests/App/Dashboard/IncidentFormsPages.test.tsx +0 -1324
  2783. package/Tests/Server/Services/IncidentCustomFieldDeleteFormQuestions.test.ts +0 -297
  2784. package/Tests/Server/Services/IncidentFormPublicForm.test.ts +0 -1260
  2785. package/Tests/Server/Services/IncidentFormPublicSubmission.test.ts +0 -2520
  2786. package/Tests/Server/Services/IncidentFormService.test.ts +0 -663
  2787. package/Tests/Server/Services/IncidentFormSubmissionService.test.ts +0 -430
  2788. package/Tests/Types/Incident/IncidentFormPublic.test.ts +0 -1916
  2789. package/Tests/UI/Components/FeedOptionsButton.test.tsx +0 -2610
  2790. package/Tests/UI/Components/Item.test.tsx +0 -72
  2791. package/Tests/UI/Components/OrderedStatesList.test.tsx +0 -148
  2792. package/Tests/UI/Components/OrderedStatesListCreateGate.test.tsx +0 -174
  2793. package/Types/Incident/IncidentFormPublic.ts +0 -1145
  2794. package/UI/Components/EventHistoryList/NoEventDay.tsx +0 -27
  2795. package/UI/Components/Feed/FeedOptionsButton.tsx +0 -692
  2796. package/UI/Components/OrderedStatesList/Item.tsx +0 -76
  2797. package/UI/Components/OrderedStatesList/OrderedStatesList.tsx +0 -261
  2798. package/build/dist/Models/DatabaseModels/IncidentForm.js.map +0 -1
  2799. package/build/dist/Models/DatabaseModels/IncidentFormSubmission.js.map +0 -1
  2800. package/build/dist/Server/API/IncidentFormAPI.js.map +0 -1
  2801. package/build/dist/Server/Middleware/IncidentFormRateLimit.js.map +0 -1
  2802. package/build/dist/Server/Services/IncidentFormService.js +0 -1202
  2803. package/build/dist/Server/Services/IncidentFormService.js.map +0 -1
  2804. package/build/dist/Server/Services/IncidentFormSubmissionService.js +0 -91
  2805. package/build/dist/Server/Services/IncidentFormSubmissionService.js.map +0 -1
  2806. package/build/dist/Types/Incident/IncidentFormIpAllowlist.js.map +0 -1
  2807. package/build/dist/Types/Incident/IncidentFormPublic.js +0 -678
  2808. package/build/dist/Types/Incident/IncidentFormPublic.js.map +0 -1
  2809. package/build/dist/UI/Components/EventHistoryList/NoEventDay.js +0 -16
  2810. package/build/dist/UI/Components/EventHistoryList/NoEventDay.js.map +0 -1
  2811. package/build/dist/UI/Components/Feed/FeedOptionsButton.js +0 -346
  2812. package/build/dist/UI/Components/Feed/FeedOptionsButton.js.map +0 -1
  2813. package/build/dist/UI/Components/OrderedStatesList/Item.js +0 -29
  2814. package/build/dist/UI/Components/OrderedStatesList/Item.js.map +0 -1
  2815. package/build/dist/UI/Components/OrderedStatesList/OrderedStatesList.js +0 -101
  2816. package/build/dist/UI/Components/OrderedStatesList/OrderedStatesList.js.map +0 -1
@@ -0,0 +1,2374 @@
1
+ import "@testing-library/jest-dom";
2
+ import {
3
+ afterEach,
4
+ beforeEach,
5
+ describe,
6
+ expect,
7
+ jest,
8
+ test,
9
+ } from "@jest/globals";
10
+ import {
11
+ act,
12
+ cleanup,
13
+ fireEvent,
14
+ render,
15
+ screen,
16
+ waitFor,
17
+ within,
18
+ } from "@testing-library/react";
19
+ import React from "react";
20
+ import getJestMockFunction, { MockFunction } from "../../MockType";
21
+ import { getJestSpyOn } from "../../Spy";
22
+
23
+ /*
24
+ * "What your status page shows", the one card on a status page's Advanced
25
+ * Settings for what visitors see: a switch per list (incidents, episodes,
26
+ * announcements, scheduled maintenance), how far back each goes, its labels,
27
+ * the page's uptime - the uptime history window, the overall uptime
28
+ * percentage with its precision, and which statuses count as downtime - and
29
+ * the "Powered by OneUptime" line.
30
+ *
31
+ * It replaced eight cards with an Edit dialog each. Every control saves its
32
+ * own column at once: switches when pressed, a number of days when the box
33
+ * is left or Enter is pressed, a precision or a status when it is picked. A
34
+ * list that is off does not offer its history and labels, and the overall
35
+ * uptime percentage that is off does not offer its precision. Switches and
36
+ * boxes are locked while they save, the dropdowns never (a pick made
37
+ * meanwhile waits its turn), and all are locked for someone who may not edit
38
+ * the page, roll back with the reason when the server refuses, and name the
39
+ * plan they need.
40
+ *
41
+ * Only the network, the permission gate and the plan are stubbed; the card,
42
+ * its rows, the switches, the number boxes and the dropdowns (react-select)
43
+ * are the real ones.
44
+ */
45
+
46
+ /*
47
+ * A refused request is an async function that throws, not
48
+ * mockRejectedValue: the card's imports load zone.js, whose patched Promise
49
+ * reports a rejected one as unhandled although the card catches it.
50
+ */
51
+ const getItemMock: MockFunction = getJestMockFunction();
52
+ const getListMock: MockFunction = getJestMockFunction();
53
+ const updateByIdMock: MockFunction = getJestMockFunction();
54
+
55
+ jest.mock("../../../UI/Utils/ModelAPI/ModelAPI", () => {
56
+ return {
57
+ __esModule: true,
58
+ default: {
59
+ getItem: (...args: Array<unknown>): unknown => {
60
+ return getItemMock(...args);
61
+ },
62
+ getList: (...args: Array<unknown>): unknown => {
63
+ return getListMock(...args);
64
+ },
65
+ updateById: (...args: Array<unknown>): unknown => {
66
+ return updateByIdMock(...args);
67
+ },
68
+ },
69
+ };
70
+ });
71
+
72
+ import StatusPageDisplaySettingsCard, {
73
+ STATUS_PAGE_DISPLAY_SETTINGS_CARD_TEST_ID,
74
+ } from "../../../../App/FeatureSet/Dashboard/src/Components/StatusPage/StatusPageDisplaySettingsCard";
75
+ import StatusPageDisplaySettingsCopy, {
76
+ DISPLAY_CHOICES,
77
+ DISPLAY_DAYS,
78
+ DISPLAY_SECTIONS,
79
+ DISPLAY_SETTING_COLUMNS,
80
+ DISPLAY_STATUSES,
81
+ DISPLAY_SWITCHES,
82
+ DisplayChoiceColumn,
83
+ DisplayDaysColumn,
84
+ DisplayDaysDefinition,
85
+ DisplaySectionDefinition,
86
+ DisplaySettingColumn,
87
+ DisplayStatusesColumn,
88
+ DisplaySwitchColumn,
89
+ DisplaySwitchDefinition,
90
+ DisplayValueColumn,
91
+ getDisplayChoiceTestId,
92
+ getDisplayDaysTestId,
93
+ getDisplaySectionTestId,
94
+ getDisplayStatusesTestId,
95
+ getDisplaySwitchTestId,
96
+ } from "../../../../App/FeatureSet/Dashboard/src/Components/StatusPage/StatusPageDisplaySettingsCopy";
97
+ import IncidentStatusPageScopeCopy from "../../../../App/FeatureSet/Dashboard/src/Components/Incident/IncidentStatusPageScopeCopy";
98
+ import MonitorStatus from "../../../Models/DatabaseModels/MonitorStatus";
99
+ import StatusPage from "../../../Models/DatabaseModels/StatusPage";
100
+ import SortOrder from "../../../Types/BaseDatabase/SortOrder";
101
+ import SubscriptionPlan, {
102
+ PlanType,
103
+ } from "../../../Types/Billing/SubscriptionPlan";
104
+ import Color from "../../../Types/Color";
105
+ import ObjectID from "../../../Types/ObjectID";
106
+ import UptimePrecision from "../../../Types/StatusPage/UptimePrecision";
107
+ import PermissionGate, {
108
+ ModelAction,
109
+ PermissionGateResult,
110
+ } from "../../../UI/Utils/PermissionGate";
111
+ import ProjectUtil from "../../../UI/Utils/Project";
112
+
113
+ const STATUS_PAGE_ID: string = "5b5b5b5b-0000-4000-8000-0000000000bb";
114
+
115
+ type StoredColumns = Partial<
116
+ Record<DisplayValueColumn, boolean | number | string>
117
+ >;
118
+
119
+ // A new status page, as the columns' defaults leave it.
120
+ const NEW_PAGE: StoredColumns = {
121
+ showIncidentsOnStatusPage: true,
122
+ showIncidentHistoryInDays: 14,
123
+ showIncidentLabelsOnStatusPage: false,
124
+ onlyShowScopedIncidents: false,
125
+ showEpisodesOnStatusPage: true,
126
+ showEpisodeHistoryInDays: 14,
127
+ showEpisodeLabelsOnStatusPage: false,
128
+ showAnnouncementsOnStatusPage: true,
129
+ showAnnouncementHistoryInDays: 14,
130
+ showScheduledMaintenanceEventsOnStatusPage: true,
131
+ showScheduledEventHistoryInDays: 14,
132
+ showScheduledEventLabelsOnStatusPage: false,
133
+ showUptimeHistoryInDays: 90,
134
+ showOverallUptimePercentOnStatusPage: false,
135
+ overallUptimePercentPrecision: UptimePrecision.TWO_DECIMAL,
136
+ hidePoweredByOneUptimeBranding: false,
137
+ };
138
+
139
+ // The project's monitor statuses, as the server lists them.
140
+ const OPERATIONAL_ID: string = "6c6c6c6c-0000-4000-8000-000000000001";
141
+ const DEGRADED_ID: string = "6c6c6c6c-0000-4000-8000-000000000002";
142
+ const OFFLINE_ID: string = "6c6c6c6c-0000-4000-8000-000000000003";
143
+ const MAINTENANCE_ID: string = "6c6c6c6c-0000-4000-8000-000000000004";
144
+
145
+ function monitorStatus(data: {
146
+ id: string;
147
+ name: string;
148
+ color: string;
149
+ priority: number;
150
+ }): MonitorStatus {
151
+ const status: MonitorStatus = new MonitorStatus();
152
+ status._id = data.id;
153
+ status.name = data.name;
154
+ status.color = new Color(data.color);
155
+ status.priority = data.priority;
156
+ return status;
157
+ }
158
+
159
+ const PROJECT_STATUSES: Array<MonitorStatus> = [
160
+ monitorStatus({
161
+ id: OPERATIONAL_ID,
162
+ name: "Operational",
163
+ color: "#22c55e",
164
+ priority: 1,
165
+ }),
166
+ monitorStatus({
167
+ id: DEGRADED_ID,
168
+ name: "Degraded",
169
+ color: "#eab308",
170
+ priority: 2,
171
+ }),
172
+ monitorStatus({
173
+ id: OFFLINE_ID,
174
+ name: "Offline",
175
+ color: "#ef4444",
176
+ priority: 3,
177
+ }),
178
+ monitorStatus({
179
+ id: MAINTENANCE_ID,
180
+ name: "Under Maintenance",
181
+ color: "#6366f1",
182
+ priority: 4,
183
+ }),
184
+ ];
185
+
186
+ function statusesNamed(...names: Array<string>): Array<MonitorStatus> {
187
+ return names.map((name: string): MonitorStatus => {
188
+ return PROJECT_STATUSES.find((status: MonitorStatus): boolean => {
189
+ return status.name === name;
190
+ })!;
191
+ });
192
+ }
193
+
194
+ let stored: StoredColumns | null | Error = null;
195
+ // What a new page counts as downtime: the statuses that are not operational.
196
+ let storedStatuses: Array<MonitorStatus> = [];
197
+ let projectStatuses: Array<MonitorStatus> | Error = PROJECT_STATUSES;
198
+ let gate: PermissionGateResult = { isAllowed: true };
199
+ let plan: PlanType | null = null;
200
+
201
+ beforeEach(() => {
202
+ stored = { ...NEW_PAGE };
203
+ storedStatuses = statusesNamed("Degraded", "Offline");
204
+ projectStatuses = PROJECT_STATUSES;
205
+ gate = { isAllowed: true };
206
+ plan = null;
207
+
208
+ getItemMock.mockReset();
209
+ getItemMock.mockImplementation(async (): Promise<unknown> => {
210
+ if (stored instanceof Error) {
211
+ throw stored;
212
+ }
213
+
214
+ if (!stored) {
215
+ return null;
216
+ }
217
+
218
+ const page: StatusPage = new StatusPage();
219
+ page._id = STATUS_PAGE_ID;
220
+
221
+ for (const [column, value] of Object.entries(stored)) {
222
+ (page as unknown as Record<string, unknown>)[column] = value;
223
+ }
224
+
225
+ page.downtimeMonitorStatuses = storedStatuses;
226
+
227
+ return page;
228
+ });
229
+
230
+ getListMock.mockReset();
231
+ getListMock.mockImplementation(async (): Promise<unknown> => {
232
+ if (projectStatuses instanceof Error) {
233
+ throw projectStatuses;
234
+ }
235
+
236
+ return {
237
+ data: projectStatuses,
238
+ count: projectStatuses.length,
239
+ skip: 0,
240
+ limit: 10000,
241
+ };
242
+ });
243
+
244
+ updateByIdMock.mockReset();
245
+ updateByIdMock.mockResolvedValue({} as never);
246
+
247
+ getJestSpyOn(PermissionGate, "check").mockImplementation(
248
+ (): PermissionGateResult => {
249
+ return gate;
250
+ },
251
+ );
252
+
253
+ getJestSpyOn(ProjectUtil, "getCurrentPlan").mockImplementation(
254
+ (): PlanType | null => {
255
+ return plan;
256
+ },
257
+ );
258
+ });
259
+
260
+ afterEach(() => {
261
+ cleanup();
262
+ jest.restoreAllMocks();
263
+ });
264
+
265
+ async function renderCard(): Promise<void> {
266
+ await act(async (): Promise<void> => {
267
+ render(
268
+ <StatusPageDisplaySettingsCard
269
+ statusPageId={new ObjectID(STATUS_PAGE_ID)}
270
+ />,
271
+ );
272
+ });
273
+
274
+ await waitFor(() => {
275
+ expect(getItemMock).toHaveBeenCalled();
276
+ });
277
+ }
278
+
279
+ async function loaded(): Promise<void> {
280
+ await waitFor(() => {
281
+ expect(
282
+ screen.getByTestId(getDisplaySectionTestId("powered-by")),
283
+ ).toBeInTheDocument();
284
+ });
285
+ }
286
+
287
+ function switchFor(column: DisplaySwitchColumn): HTMLElement {
288
+ return screen.getByTestId(getDisplaySwitchTestId(column));
289
+ }
290
+
291
+ function querySwitchFor(column: DisplaySwitchColumn): HTMLElement | null {
292
+ return screen.queryByTestId(getDisplaySwitchTestId(column));
293
+ }
294
+
295
+ function switchRowFor(column: DisplaySwitchColumn): HTMLElement {
296
+ return screen.getByTestId(`${getDisplaySwitchTestId(column)}-row`);
297
+ }
298
+
299
+ function daysFor(column: DisplayDaysColumn): HTMLInputElement {
300
+ return screen.getByTestId(getDisplayDaysTestId(column)) as HTMLInputElement;
301
+ }
302
+
303
+ function queryDaysFor(column: DisplayDaysColumn): HTMLElement | null {
304
+ return screen.queryByTestId(getDisplayDaysTestId(column));
305
+ }
306
+
307
+ function daysRowFor(column: DisplayDaysColumn): HTMLElement {
308
+ return screen.getByTestId(`${getDisplayDaysTestId(column)}-row`);
309
+ }
310
+
311
+ const PRECISION: DisplayChoiceColumn = "overallUptimePercentPrecision";
312
+ const DOWNTIME: DisplayStatusesColumn = "downtimeMonitorStatuses";
313
+ const OVERALL: DisplaySwitchColumn = "showOverallUptimePercentOnStatusPage";
314
+
315
+ function choiceRowFor(column: DisplayChoiceColumn): HTMLElement {
316
+ return screen.getByTestId(`${getDisplayChoiceTestId(column)}-row`);
317
+ }
318
+
319
+ function queryChoiceRowFor(column: DisplayChoiceColumn): HTMLElement | null {
320
+ return screen.queryByTestId(`${getDisplayChoiceTestId(column)}-row`);
321
+ }
322
+
323
+ function statusesRowFor(column: DisplayStatusesColumn): HTMLElement {
324
+ return screen.getByTestId(`${getDisplayStatusesTestId(column)}-row`);
325
+ }
326
+
327
+ /*
328
+ * The dropdowns' inputs, found in their rows. A locked react-select hides
329
+ * its input (visibility: hidden), which takes its name out of the
330
+ * accessibility tree, so the names are checked where the dropdowns are not
331
+ * locked.
332
+ */
333
+ function precisionBox(): HTMLElement {
334
+ return within(choiceRowFor(PRECISION)).getByRole("combobox", {
335
+ hidden: true,
336
+ });
337
+ }
338
+
339
+ function downtimeBox(): HTMLElement {
340
+ return within(statusesRowFor(DOWNTIME)).getByRole("combobox", {
341
+ hidden: true,
342
+ });
343
+ }
344
+
345
+ // What the precision dropdown shows as picked.
346
+ function shownPrecision(): string {
347
+ const row: HTMLElement = choiceRowFor(PRECISION);
348
+
349
+ return (
350
+ row.querySelector(".ou-select__single-value")?.textContent ||
351
+ row.querySelector(".ou-select__placeholder")?.textContent ||
352
+ ""
353
+ );
354
+ }
355
+
356
+ // The names on the downtime chips, in order.
357
+ function downtimeChips(): Array<string> {
358
+ return Array.from(
359
+ statusesRowFor(DOWNTIME).querySelectorAll(".ou-select__multi-value__label"),
360
+ ).map((chip: Element): string => {
361
+ return (chip.textContent || "").trim();
362
+ });
363
+ }
364
+
365
+ async function flush(): Promise<void> {
366
+ await act(async () => {
367
+ for (let i: number = 0; i < 10; i++) {
368
+ await Promise.resolve();
369
+ }
370
+ });
371
+ }
372
+
373
+ // The options a dropdown offers, read from its open menu.
374
+ function offeredBy(box: HTMLElement): Array<string> {
375
+ fireEvent.keyDown(box, { key: "ArrowDown", code: "ArrowDown" });
376
+
377
+ const labels: Array<string> = screen
378
+ .queryAllByRole("option")
379
+ .map((option: HTMLElement): string => {
380
+ return (option.textContent || "").trim();
381
+ });
382
+
383
+ fireEvent.keyDown(box, { key: "Escape", code: "Escape" });
384
+
385
+ return labels;
386
+ }
387
+
388
+ async function pickFrom(box: HTMLElement, label: string): Promise<void> {
389
+ fireEvent.keyDown(box, { key: "ArrowDown", code: "ArrowDown" });
390
+
391
+ const option: HTMLElement = screen.getByRole("option", { name: label });
392
+
393
+ fireEvent.mouseDown(option);
394
+ fireEvent.click(option);
395
+ await flush();
396
+ }
397
+
398
+ async function removeChip(name: string): Promise<void> {
399
+ const remove: HTMLElement = within(statusesRowFor(DOWNTIME)).getByRole(
400
+ "button",
401
+ { name: `Remove ${name}` },
402
+ );
403
+
404
+ fireEvent.click(remove);
405
+ await flush();
406
+ }
407
+
408
+ function updatesOf(column: string): Array<Record<string, unknown>> {
409
+ return updateByIdMock.mock.calls
410
+ .map((call: Array<unknown>): Record<string, unknown> => {
411
+ return (call[0] as Record<string, unknown>)["data"] as Record<
412
+ string,
413
+ unknown
414
+ >;
415
+ })
416
+ .filter((data: Record<string, unknown>): boolean => {
417
+ return column in data;
418
+ });
419
+ }
420
+
421
+ function definitionOf(column: DisplaySwitchColumn): DisplaySwitchDefinition {
422
+ return DISPLAY_SWITCHES.find(
423
+ (candidate: DisplaySwitchDefinition): boolean => {
424
+ return candidate.column === column;
425
+ },
426
+ )!;
427
+ }
428
+
429
+ function daysDefinitionOf(column: DisplayDaysColumn): DisplayDaysDefinition {
430
+ return DISPLAY_DAYS.find((candidate: DisplayDaysDefinition): boolean => {
431
+ return candidate.column === column;
432
+ })!;
433
+ }
434
+
435
+ async function press(column: DisplaySwitchColumn): Promise<void> {
436
+ await act(async () => {
437
+ fireEvent.click(switchFor(column));
438
+ });
439
+ }
440
+
441
+ // Types a number into a box and leaves it, as a person would.
442
+ async function typeDays(
443
+ column: DisplayDaysColumn,
444
+ text: string,
445
+ leaveWith: "blur" | "enter" = "blur",
446
+ ): Promise<void> {
447
+ const box: HTMLInputElement = daysFor(column);
448
+
449
+ await act(async () => {
450
+ fireEvent.focus(box);
451
+ fireEvent.change(box, { target: { value: text } });
452
+ });
453
+
454
+ await act(async () => {
455
+ if (leaveWith === "enter") {
456
+ fireEvent.keyDown(box, { key: "Enter", code: "Enter" });
457
+ } else {
458
+ fireEvent.blur(box);
459
+ }
460
+ });
461
+ }
462
+
463
+ function lastUpdate(): Record<string, unknown> {
464
+ expect(updateByIdMock).toHaveBeenCalled();
465
+ return updateByIdMock.mock.calls[
466
+ updateByIdMock.mock.calls.length - 1
467
+ ]![0] as Record<string, unknown>;
468
+ }
469
+
470
+ const LIST_SWITCHES: Array<DisplaySwitchColumn> = [
471
+ "showIncidentsOnStatusPage",
472
+ "showEpisodesOnStatusPage",
473
+ "showAnnouncementsOnStatusPage",
474
+ "showScheduledMaintenanceEventsOnStatusPage",
475
+ ];
476
+
477
+ describe("reading the status page", () => {
478
+ test("asks once for the card's seventeen columns and nothing else", async () => {
479
+ await renderCard();
480
+ await loaded();
481
+
482
+ expect(getItemMock).toHaveBeenCalledTimes(1);
483
+
484
+ const request: Record<string, unknown> = getItemMock.mock
485
+ .calls[0]![0] as Record<string, unknown>;
486
+
487
+ expect(request["modelType"]).toBe(StatusPage);
488
+ expect((request["id"] as ObjectID).toString()).toBe(STATUS_PAGE_ID);
489
+ expect(request["select"]).toEqual({
490
+ showIncidentsOnStatusPage: true,
491
+ showIncidentHistoryInDays: true,
492
+ showIncidentLabelsOnStatusPage: true,
493
+ onlyShowScopedIncidents: true,
494
+ showEpisodesOnStatusPage: true,
495
+ showEpisodeHistoryInDays: true,
496
+ showEpisodeLabelsOnStatusPage: true,
497
+ showAnnouncementsOnStatusPage: true,
498
+ showAnnouncementHistoryInDays: true,
499
+ showScheduledMaintenanceEventsOnStatusPage: true,
500
+ showScheduledEventHistoryInDays: true,
501
+ showScheduledEventLabelsOnStatusPage: true,
502
+ showUptimeHistoryInDays: true,
503
+ showOverallUptimePercentOnStatusPage: true,
504
+ overallUptimePercentPrecision: true,
505
+ // What each chip shows.
506
+ downtimeMonitorStatuses: { _id: true, name: true, color: true },
507
+ hidePoweredByOneUptimeBranding: true,
508
+ });
509
+ expect(DISPLAY_SETTING_COLUMNS).toHaveLength(17);
510
+ });
511
+
512
+ test("asks once for the project's monitor statuses, in their colours and priority order, for the downtime picker", async () => {
513
+ await renderCard();
514
+ await loaded();
515
+ await flush();
516
+
517
+ expect(getListMock).toHaveBeenCalledTimes(1);
518
+
519
+ const request: Record<string, unknown> = getListMock.mock
520
+ .calls[0]![0] as Record<string, unknown>;
521
+
522
+ expect(request["modelType"]).toBe(MonitorStatus);
523
+ expect(request["select"]).toEqual({
524
+ _id: true,
525
+ name: true,
526
+ color: true,
527
+ priority: true,
528
+ });
529
+ expect(request["sort"]).toEqual({ priority: SortOrder.Ascending });
530
+ });
531
+
532
+ test("is one card, saying what it is for", async () => {
533
+ await renderCard();
534
+ await loaded();
535
+
536
+ expect(
537
+ screen.getByText(StatusPageDisplaySettingsCopy.cardTitle),
538
+ ).toBeInTheDocument();
539
+ expect(
540
+ screen.getByText(StatusPageDisplaySettingsCopy.cardDescription),
541
+ ).toBeInTheDocument();
542
+ expect(screen.getAllByTestId("card")).toHaveLength(1);
543
+ });
544
+
545
+ test("has no Edit button and no dialog: nothing to open before changing something", async () => {
546
+ await renderCard();
547
+ await loaded();
548
+
549
+ expect(screen.queryByText("Edit Settings")).not.toBeInTheDocument();
550
+ expect(screen.queryByRole("dialog")).not.toBeInTheDocument();
551
+ expect(screen.queryByTestId("card-button")).not.toBeInTheDocument();
552
+ });
553
+
554
+ test("lists incidents, episodes, announcements, scheduled maintenance, uptime history, then the Powered by line", async () => {
555
+ await renderCard();
556
+ await loaded();
557
+
558
+ const card: HTMLElement = screen.getByTestId(
559
+ STATUS_PAGE_DISPLAY_SETTINGS_CARD_TEST_ID,
560
+ );
561
+
562
+ const ids: Array<string | null> = Array.from(
563
+ card.querySelectorAll('[data-testid^="status-page-display-section-"]'),
564
+ ).map((element: Element): string | null => {
565
+ return element.getAttribute("data-testid");
566
+ });
567
+
568
+ expect(ids).toEqual([
569
+ "status-page-display-section-incidents",
570
+ "status-page-display-section-episodes",
571
+ "status-page-display-section-announcements",
572
+ "status-page-display-section-scheduled-maintenance",
573
+ "status-page-display-section-uptime-history",
574
+ "status-page-display-section-powered-by",
575
+ ]);
576
+ expect(
577
+ DISPLAY_SECTIONS.map((section: DisplaySectionDefinition): string => {
578
+ return section.id;
579
+ }),
580
+ ).toEqual([
581
+ "incidents",
582
+ "episodes",
583
+ "announcements",
584
+ "scheduled-maintenance",
585
+ "uptime-history",
586
+ "powered-by",
587
+ ]);
588
+ });
589
+
590
+ test("names every switch by its title, and every number box by its setting", async () => {
591
+ await renderCard();
592
+ await loaded();
593
+
594
+ for (const definition of DISPLAY_SWITCHES) {
595
+ expect(screen.getByRole("switch", { name: definition.title })).toBe(
596
+ switchFor(definition.column),
597
+ );
598
+ }
599
+
600
+ for (const definition of DISPLAY_DAYS) {
601
+ expect(screen.getByRole("spinbutton", { name: definition.label })).toBe(
602
+ daysFor(definition.column),
603
+ );
604
+ }
605
+
606
+ expect(screen.getAllByRole("switch")).toHaveLength(10);
607
+ expect(screen.getAllByRole("spinbutton")).toHaveLength(5);
608
+
609
+ // The downtime picker; the precision only while the overall % is on.
610
+ expect(screen.getAllByRole("combobox")).toEqual([downtimeBox()]);
611
+ });
612
+
613
+ test("keeps the names the settings have always had, and the scope switch's own copy", async () => {
614
+ expect(
615
+ DISPLAY_SWITCHES.map((definition: DisplaySwitchDefinition): string => {
616
+ return definition.title;
617
+ }),
618
+ ).toEqual([
619
+ "Show Incidents",
620
+ "Show Incident Labels",
621
+ IncidentStatusPageScopeCopy.onlyShowScopedIncidentsTitle,
622
+ "Show Episodes",
623
+ "Show Episode Labels",
624
+ "Show Announcements",
625
+ "Show Scheduled Maintenance Events",
626
+ "Show Event Labels",
627
+ "Show Overall Uptime Percent",
628
+ "Show Powered By OneUptime Branding",
629
+ ]);
630
+
631
+ await renderCard();
632
+ await loaded();
633
+
634
+ expect(
635
+ within(switchRowFor("onlyShowScopedIncidents")).getByText(
636
+ IncidentStatusPageScopeCopy.onlyShowScopedIncidentsDescription,
637
+ ),
638
+ ).toBeInTheDocument();
639
+ });
640
+
641
+ test("a new page shows every list, with 14 days of history, no labels, all incidents, 90 days of uptime and the Powered by line", async () => {
642
+ await renderCard();
643
+ await loaded();
644
+
645
+ for (const column of LIST_SWITCHES) {
646
+ expect(switchFor(column)).toHaveAttribute("aria-checked", "true");
647
+ }
648
+
649
+ for (const column of [
650
+ "showIncidentLabelsOnStatusPage",
651
+ "showEpisodeLabelsOnStatusPage",
652
+ "showScheduledEventLabelsOnStatusPage",
653
+ "onlyShowScopedIncidents",
654
+ ] as Array<DisplaySwitchColumn>) {
655
+ expect(switchFor(column)).toHaveAttribute("aria-checked", "false");
656
+ }
657
+
658
+ for (const column of [
659
+ "showIncidentHistoryInDays",
660
+ "showEpisodeHistoryInDays",
661
+ "showAnnouncementHistoryInDays",
662
+ "showScheduledEventHistoryInDays",
663
+ ] as Array<DisplayDaysColumn>) {
664
+ expect(daysFor(column)).toHaveValue(14);
665
+ }
666
+
667
+ expect(daysFor("showUptimeHistoryInDays")).toHaveValue(90);
668
+
669
+ // No overall uptime percentage, so no precision to pick.
670
+ expect(switchFor(OVERALL)).toHaveAttribute("aria-checked", "false");
671
+ expect(queryChoiceRowFor(PRECISION)).toBeNull();
672
+
673
+ // The statuses that are not operational count as downtime.
674
+ expect(downtimeChips()).toEqual(["Degraded", "Offline"]);
675
+
676
+ // Stored as "do not hide it", shown as a switch that is on.
677
+ expect(switchFor("hidePoweredByOneUptimeBranding")).toHaveAttribute(
678
+ "aria-checked",
679
+ "true",
680
+ );
681
+ });
682
+
683
+ test("shows each setting as the page has it", async () => {
684
+ storedStatuses = statusesNamed("Offline");
685
+ stored = {
686
+ ...NEW_PAGE,
687
+ showOverallUptimePercentOnStatusPage: true,
688
+ overallUptimePercentPrecision: UptimePrecision.THREE_DECIMAL,
689
+ showIncidentHistoryInDays: 30,
690
+ showIncidentLabelsOnStatusPage: true,
691
+ onlyShowScopedIncidents: true,
692
+ showEpisodeHistoryInDays: 3,
693
+ showEpisodeLabelsOnStatusPage: true,
694
+ showAnnouncementHistoryInDays: 60,
695
+ showScheduledEventHistoryInDays: 7,
696
+ showScheduledEventLabelsOnStatusPage: true,
697
+ showUptimeHistoryInDays: 45,
698
+ hidePoweredByOneUptimeBranding: true,
699
+ };
700
+
701
+ await renderCard();
702
+ await loaded();
703
+
704
+ for (const column of [
705
+ "showIncidentLabelsOnStatusPage",
706
+ "onlyShowScopedIncidents",
707
+ "showEpisodeLabelsOnStatusPage",
708
+ "showScheduledEventLabelsOnStatusPage",
709
+ ] as Array<DisplaySwitchColumn>) {
710
+ expect(switchFor(column)).toHaveAttribute("aria-checked", "true");
711
+ }
712
+
713
+ expect(daysFor("showIncidentHistoryInDays")).toHaveValue(30);
714
+ expect(daysFor("showEpisodeHistoryInDays")).toHaveValue(3);
715
+ expect(daysFor("showAnnouncementHistoryInDays")).toHaveValue(60);
716
+ expect(daysFor("showScheduledEventHistoryInDays")).toHaveValue(7);
717
+ expect(daysFor("showUptimeHistoryInDays")).toHaveValue(45);
718
+
719
+ expect(switchFor(OVERALL)).toHaveAttribute("aria-checked", "true");
720
+ expect(shownPrecision()).toBe("99.999%");
721
+ expect(downtimeChips()).toEqual(["Offline"]);
722
+
723
+ // Hidden: the switch that shows it is off.
724
+ expect(switchFor("hidePoweredByOneUptimeBranding")).toHaveAttribute(
725
+ "aria-checked",
726
+ "false",
727
+ );
728
+ });
729
+
730
+ test("a page with no value for a setting shows the model's default for it", async () => {
731
+ stored = { showOverallUptimePercentOnStatusPage: true };
732
+
733
+ await renderCard();
734
+ await loaded();
735
+
736
+ // Two decimals: the precision's own default.
737
+ expect(shownPrecision()).toBe("99.99%");
738
+
739
+ for (const column of LIST_SWITCHES) {
740
+ expect(switchFor(column)).toHaveAttribute("aria-checked", "true");
741
+ }
742
+
743
+ expect(switchFor("showIncidentLabelsOnStatusPage")).toHaveAttribute(
744
+ "aria-checked",
745
+ "false",
746
+ );
747
+ expect(daysFor("showIncidentHistoryInDays")).toHaveValue(14);
748
+ expect(daysFor("showUptimeHistoryInDays")).toHaveValue(90);
749
+ expect(switchFor("hidePoweredByOneUptimeBranding")).toHaveAttribute(
750
+ "aria-checked",
751
+ "true",
752
+ );
753
+ });
754
+
755
+ test("a page with no value for any setting shows the overall uptime percentage off, the default", async () => {
756
+ stored = {};
757
+
758
+ await renderCard();
759
+ await loaded();
760
+
761
+ expect(switchFor(OVERALL)).toHaveAttribute("aria-checked", "false");
762
+ expect(queryChoiceRowFor(PRECISION)).toBeNull();
763
+ });
764
+
765
+ test("a page that is not there says so, with nothing to change", async () => {
766
+ stored = null;
767
+
768
+ await renderCard();
769
+
770
+ await waitFor(() => {
771
+ expect(
772
+ screen.getByText(StatusPageDisplaySettingsCopy.notFound),
773
+ ).toBeInTheDocument();
774
+ });
775
+ expect(screen.queryByRole("switch")).not.toBeInTheDocument();
776
+ expect(screen.queryByRole("spinbutton")).not.toBeInTheDocument();
777
+ });
778
+
779
+ test("a read that fails says why, with nothing to change, and can be tried again", async () => {
780
+ stored = new Error("The server is down for maintenance.");
781
+
782
+ await renderCard();
783
+
784
+ await waitFor(() => {
785
+ expect(
786
+ screen.getByText("The server is down for maintenance."),
787
+ ).toBeInTheDocument();
788
+ });
789
+ expect(screen.queryByRole("switch")).not.toBeInTheDocument();
790
+
791
+ stored = { ...NEW_PAGE };
792
+
793
+ await act(async () => {
794
+ fireEvent.click(
795
+ within(
796
+ screen.getByTestId(STATUS_PAGE_DISPLAY_SETTINGS_CARD_TEST_ID),
797
+ ).getByTestId("refresh-button"),
798
+ );
799
+ });
800
+
801
+ await loaded();
802
+ expect(getItemMock).toHaveBeenCalledTimes(2);
803
+ });
804
+ });
805
+
806
+ describe("flipping a switch", () => {
807
+ test.each(
808
+ DISPLAY_SWITCHES.map((definition: DisplaySwitchDefinition) => {
809
+ return [definition.column];
810
+ }),
811
+ )(
812
+ "%s saves that column of this page, at once, and nothing else",
813
+ async (column: DisplaySwitchColumn) => {
814
+ await renderCard();
815
+ await loaded();
816
+
817
+ const before: boolean =
818
+ switchFor(column).getAttribute("aria-checked") === "true";
819
+
820
+ await press(column);
821
+
822
+ await waitFor(() => {
823
+ expect(switchFor(column)).toHaveAttribute(
824
+ "aria-checked",
825
+ before ? "false" : "true",
826
+ );
827
+ });
828
+
829
+ expect(updateByIdMock).toHaveBeenCalledTimes(1);
830
+
831
+ const request: Record<string, unknown> = lastUpdate();
832
+
833
+ expect(request["modelType"]).toBe(StatusPage);
834
+ expect((request["id"] as ObjectID).toString()).toBe(STATUS_PAGE_ID);
835
+
836
+ // The switch shows the opposite of what the inverted column stores.
837
+ const stored: boolean = definitionOf(column).isInverted
838
+ ? before
839
+ : !before;
840
+
841
+ expect(request["data"]).toEqual({ [column]: stored });
842
+ },
843
+ );
844
+
845
+ test("turning the Powered by line off stores that it is hidden, and on again that it is not", async () => {
846
+ await renderCard();
847
+ await loaded();
848
+
849
+ await press("hidePoweredByOneUptimeBranding");
850
+
851
+ await waitFor(() => {
852
+ expect(lastUpdate()["data"]).toEqual({
853
+ hidePoweredByOneUptimeBranding: true,
854
+ });
855
+ });
856
+
857
+ await waitFor(() => {
858
+ expect(switchFor("hidePoweredByOneUptimeBranding")).not.toHaveAttribute(
859
+ "aria-disabled",
860
+ "true",
861
+ );
862
+ });
863
+
864
+ await press("hidePoweredByOneUptimeBranding");
865
+
866
+ await waitFor(() => {
867
+ expect(lastUpdate()["data"]).toEqual({
868
+ hidePoweredByOneUptimeBranding: false,
869
+ });
870
+ });
871
+ expect(switchFor("hidePoweredByOneUptimeBranding")).toHaveAttribute(
872
+ "aria-checked",
873
+ "true",
874
+ );
875
+ });
876
+
877
+ test("is locked while the change is saved, without holding up the others", async () => {
878
+ let finish: () => void = (): void => {};
879
+
880
+ updateByIdMock.mockImplementation((): Promise<unknown> => {
881
+ return new Promise<unknown>((resolve: (value: unknown) => void) => {
882
+ finish = (): void => {
883
+ resolve({});
884
+ };
885
+ });
886
+ });
887
+
888
+ await renderCard();
889
+ await loaded();
890
+
891
+ await press("showEpisodeLabelsOnStatusPage");
892
+
893
+ expect(switchFor("showEpisodeLabelsOnStatusPage")).toHaveAttribute(
894
+ "aria-checked",
895
+ "true",
896
+ );
897
+ expect(switchFor("showEpisodeLabelsOnStatusPage")).toHaveAttribute(
898
+ "aria-disabled",
899
+ "true",
900
+ );
901
+
902
+ // A second press while it saves does nothing.
903
+ await press("showEpisodeLabelsOnStatusPage");
904
+ expect(updateByIdMock).toHaveBeenCalledTimes(1);
905
+
906
+ expect(switchFor("showIncidentLabelsOnStatusPage")).not.toHaveAttribute(
907
+ "aria-disabled",
908
+ "true",
909
+ );
910
+ expect(daysFor("showUptimeHistoryInDays")).not.toHaveAttribute("readonly");
911
+
912
+ await act(async () => {
913
+ finish();
914
+ });
915
+
916
+ await waitFor(() => {
917
+ expect(switchFor("showEpisodeLabelsOnStatusPage")).not.toHaveAttribute(
918
+ "aria-disabled",
919
+ "true",
920
+ );
921
+ });
922
+ expect(switchFor("showEpisodeLabelsOnStatusPage")).toHaveAttribute(
923
+ "aria-checked",
924
+ "true",
925
+ );
926
+ });
927
+
928
+ test("a refused save moves the switch back, and says why under it", async () => {
929
+ updateByIdMock.mockImplementation(async (): Promise<unknown> => {
930
+ throw new Error(
931
+ "Please upgrade your plan to Growth to access this feature",
932
+ );
933
+ });
934
+
935
+ await renderCard();
936
+ await loaded();
937
+
938
+ await press("showScheduledEventLabelsOnStatusPage");
939
+
940
+ await waitFor(() => {
941
+ expect(
942
+ within(switchRowFor("showScheduledEventLabelsOnStatusPage")).getByRole(
943
+ "alert",
944
+ ),
945
+ ).toHaveTextContent(
946
+ "Please upgrade your plan to Growth to access this feature",
947
+ );
948
+ });
949
+ expect(switchFor("showScheduledEventLabelsOnStatusPage")).toHaveAttribute(
950
+ "aria-checked",
951
+ "false",
952
+ );
953
+
954
+ // Only that row says so.
955
+ expect(
956
+ within(switchRowFor("showEpisodeLabelsOnStatusPage")).queryByRole(
957
+ "alert",
958
+ ),
959
+ ).not.toBeInTheDocument();
960
+ });
961
+ });
962
+
963
+ describe("a list that is off", () => {
964
+ test.each([
965
+ [
966
+ "showIncidentsOnStatusPage",
967
+ "showIncidentHistoryInDays",
968
+ "showIncidentLabelsOnStatusPage",
969
+ ],
970
+ [
971
+ "showEpisodesOnStatusPage",
972
+ "showEpisodeHistoryInDays",
973
+ "showEpisodeLabelsOnStatusPage",
974
+ ],
975
+ [
976
+ "showScheduledMaintenanceEventsOnStatusPage",
977
+ "showScheduledEventHistoryInDays",
978
+ "showScheduledEventLabelsOnStatusPage",
979
+ ],
980
+ ] as Array<[DisplaySwitchColumn, DisplayDaysColumn, DisplaySwitchColumn]>)(
981
+ "turning %s off takes away its history and labels, which then change nothing",
982
+ async (
983
+ list: DisplaySwitchColumn,
984
+ days: DisplayDaysColumn,
985
+ labels: DisplaySwitchColumn,
986
+ ) => {
987
+ await renderCard();
988
+ await loaded();
989
+
990
+ expect(queryDaysFor(days)).toBeInTheDocument();
991
+ expect(querySwitchFor(labels)).toBeInTheDocument();
992
+
993
+ await press(list);
994
+
995
+ await waitFor(() => {
996
+ expect(queryDaysFor(days)).not.toBeInTheDocument();
997
+ });
998
+ expect(querySwitchFor(labels)).not.toBeInTheDocument();
999
+
1000
+ await waitFor(() => {
1001
+ expect(switchFor(list)).not.toHaveAttribute("aria-disabled", "true");
1002
+ });
1003
+
1004
+ await press(list);
1005
+
1006
+ await waitFor(() => {
1007
+ expect(queryDaysFor(days)).toBeInTheDocument();
1008
+ });
1009
+ expect(querySwitchFor(labels)).toBeInTheDocument();
1010
+ },
1011
+ );
1012
+
1013
+ test("turning announcements off takes away how far back they go", async () => {
1014
+ await renderCard();
1015
+ await loaded();
1016
+
1017
+ await press("showAnnouncementsOnStatusPage");
1018
+
1019
+ await waitFor(() => {
1020
+ expect(
1021
+ queryDaysFor("showAnnouncementHistoryInDays"),
1022
+ ).not.toBeInTheDocument();
1023
+ });
1024
+ });
1025
+
1026
+ test("says what off means: hidden from visitors, and subscribers are not told", async () => {
1027
+ await renderCard();
1028
+ await loaded();
1029
+
1030
+ // Nothing to say while it is on.
1031
+ expect(
1032
+ within(switchRowFor("showIncidentsOnStatusPage")).queryByText(
1033
+ StatusPageDisplaySettingsCopy.hiddenListDescription,
1034
+ ),
1035
+ ).not.toBeInTheDocument();
1036
+
1037
+ await press("showIncidentsOnStatusPage");
1038
+
1039
+ await waitFor(() => {
1040
+ expect(
1041
+ within(switchRowFor("showIncidentsOnStatusPage")).getByText(
1042
+ StatusPageDisplaySettingsCopy.hiddenListDescription,
1043
+ ),
1044
+ ).toBeInTheDocument();
1045
+ });
1046
+
1047
+ // The others are still on, and say nothing.
1048
+ expect(
1049
+ within(switchRowFor("showEpisodesOnStatusPage")).queryByText(
1050
+ StatusPageDisplaySettingsCopy.hiddenListDescription,
1051
+ ),
1052
+ ).not.toBeInTheDocument();
1053
+ });
1054
+
1055
+ test("keeps Only Show Incidents Scoped to This Page while incidents are off: it still decides which episodes reach the page", async () => {
1056
+ stored = { ...NEW_PAGE, showIncidentsOnStatusPage: false };
1057
+
1058
+ await renderCard();
1059
+ await loaded();
1060
+
1061
+ expect(querySwitchFor("onlyShowScopedIncidents")).toBeInTheDocument();
1062
+ expect(querySwitchFor("showIncidentLabelsOnStatusPage")).toBeNull();
1063
+ expect(queryDaysFor("showIncidentHistoryInDays")).toBeNull();
1064
+
1065
+ await press("onlyShowScopedIncidents");
1066
+
1067
+ await waitFor(() => {
1068
+ expect(lastUpdate()["data"]).toEqual({ onlyShowScopedIncidents: true });
1069
+ });
1070
+ });
1071
+
1072
+ test("a page loaded with a list off offers only that list's switch", async () => {
1073
+ stored = {
1074
+ ...NEW_PAGE,
1075
+ showEpisodesOnStatusPage: false,
1076
+ showAnnouncementsOnStatusPage: false,
1077
+ };
1078
+
1079
+ await renderCard();
1080
+ await loaded();
1081
+
1082
+ const episodes: HTMLElement = screen.getByTestId(
1083
+ getDisplaySectionTestId("episodes"),
1084
+ );
1085
+
1086
+ expect(within(episodes).getAllByRole("switch")).toHaveLength(1);
1087
+ expect(within(episodes).queryByRole("spinbutton")).toBeNull();
1088
+ expect(
1089
+ within(episodes).getByText(
1090
+ StatusPageDisplaySettingsCopy.hiddenListDescription,
1091
+ ),
1092
+ ).toBeInTheDocument();
1093
+
1094
+ expect(
1095
+ within(
1096
+ screen.getByTestId(getDisplaySectionTestId("announcements")),
1097
+ ).queryByRole("spinbutton"),
1098
+ ).toBeNull();
1099
+
1100
+ // The lists that are on keep theirs.
1101
+ expect(daysFor("showIncidentHistoryInDays")).toBeInTheDocument();
1102
+ });
1103
+
1104
+ test("turned on again, its history and labels are as last saved, not as first read", async () => {
1105
+ await renderCard();
1106
+ await loaded();
1107
+
1108
+ await press("showIncidentLabelsOnStatusPage");
1109
+ await waitFor(() => {
1110
+ expect(switchFor("showIncidentLabelsOnStatusPage")).not.toHaveAttribute(
1111
+ "aria-disabled",
1112
+ "true",
1113
+ );
1114
+ });
1115
+
1116
+ await typeDays("showIncidentHistoryInDays", "30");
1117
+ await waitFor(() => {
1118
+ expect(lastUpdate()["data"]).toEqual({ showIncidentHistoryInDays: 30 });
1119
+ });
1120
+
1121
+ await press("showIncidentsOnStatusPage");
1122
+ await waitFor(() => {
1123
+ expect(queryDaysFor("showIncidentHistoryInDays")).toBeNull();
1124
+ });
1125
+ await waitFor(() => {
1126
+ expect(switchFor("showIncidentsOnStatusPage")).not.toHaveAttribute(
1127
+ "aria-disabled",
1128
+ "true",
1129
+ );
1130
+ });
1131
+
1132
+ await press("showIncidentsOnStatusPage");
1133
+
1134
+ await waitFor(() => {
1135
+ expect(daysFor("showIncidentHistoryInDays")).toHaveValue(30);
1136
+ });
1137
+ expect(switchFor("showIncidentLabelsOnStatusPage")).toHaveAttribute(
1138
+ "aria-checked",
1139
+ "true",
1140
+ );
1141
+ });
1142
+
1143
+ test("a refused attempt to hide a list leaves its history and labels where they were", async () => {
1144
+ updateByIdMock.mockImplementation(async (): Promise<unknown> => {
1145
+ throw new Error(
1146
+ "Please upgrade your plan to Growth to access this feature",
1147
+ );
1148
+ });
1149
+
1150
+ await renderCard();
1151
+ await loaded();
1152
+
1153
+ await press("showIncidentsOnStatusPage");
1154
+
1155
+ await waitFor(() => {
1156
+ expect(
1157
+ within(switchRowFor("showIncidentsOnStatusPage")).getByRole("alert"),
1158
+ ).toBeInTheDocument();
1159
+ });
1160
+
1161
+ expect(switchFor("showIncidentsOnStatusPage")).toHaveAttribute(
1162
+ "aria-checked",
1163
+ "true",
1164
+ );
1165
+ expect(daysFor("showIncidentHistoryInDays")).toBeInTheDocument();
1166
+ expect(switchFor("showIncidentLabelsOnStatusPage")).toBeInTheDocument();
1167
+ });
1168
+ });
1169
+
1170
+ describe("how many days", () => {
1171
+ test("reads as a sentence with the number in it", async () => {
1172
+ await renderCard();
1173
+ await loaded();
1174
+
1175
+ const row: HTMLElement = daysRowFor("showIncidentHistoryInDays");
1176
+
1177
+ // The words, read in order, with the box's value where the box is.
1178
+ const walker: TreeWalker = document.createTreeWalker(
1179
+ row,
1180
+ NodeFilter.SHOW_TEXT | NodeFilter.SHOW_ELEMENT,
1181
+ );
1182
+ const words: Array<string> = [];
1183
+
1184
+ for (
1185
+ let node: Node | null = walker.nextNode();
1186
+ node;
1187
+ node = walker.nextNode()
1188
+ ) {
1189
+ if (node.nodeType === Node.TEXT_NODE) {
1190
+ words.push(node.textContent || "");
1191
+ } else if ((node as Element).tagName === "INPUT") {
1192
+ words.push(` [${(node as HTMLInputElement).value}] `);
1193
+ }
1194
+ }
1195
+
1196
+ expect(words.join("").replace(/\s+/g, " ").trim()).toBe(
1197
+ "Show the last [14] days",
1198
+ );
1199
+
1200
+ // The words are apart in the text itself, not only on screen.
1201
+ expect(row).toHaveTextContent("Show the last days");
1202
+ });
1203
+
1204
+ test("says day, not days, for one", async () => {
1205
+ stored = { ...NEW_PAGE, showAnnouncementHistoryInDays: 1 };
1206
+
1207
+ await renderCard();
1208
+ await loaded();
1209
+
1210
+ expect(daysRowFor("showAnnouncementHistoryInDays")).toHaveTextContent(
1211
+ /Show the last\s*day$/,
1212
+ );
1213
+ expect(daysRowFor("showIncidentHistoryInDays")).toHaveTextContent(
1214
+ /Show the last\s*days$/,
1215
+ );
1216
+ });
1217
+
1218
+ test.each(
1219
+ DISPLAY_DAYS.map((definition: DisplayDaysDefinition) => {
1220
+ return [definition.column];
1221
+ }),
1222
+ )(
1223
+ "%s saves the new number when the box is left, and only that column",
1224
+ async (column: DisplayDaysColumn) => {
1225
+ await renderCard();
1226
+ await loaded();
1227
+
1228
+ await typeDays(column, "21");
1229
+
1230
+ await waitFor(() => {
1231
+ expect(updateByIdMock).toHaveBeenCalledTimes(1);
1232
+ });
1233
+
1234
+ const request: Record<string, unknown> = lastUpdate();
1235
+
1236
+ expect(request["modelType"]).toBe(StatusPage);
1237
+ expect((request["id"] as ObjectID).toString()).toBe(STATUS_PAGE_ID);
1238
+ expect(request["data"]).toEqual({ [column]: 21 });
1239
+
1240
+ await waitFor(() => {
1241
+ expect(
1242
+ screen.getByTestId(`${getDisplayDaysTestId(column)}-status`),
1243
+ ).toHaveTextContent(StatusPageDisplaySettingsCopy.saved);
1244
+ });
1245
+ expect(daysFor(column)).toHaveValue(21);
1246
+ },
1247
+ );
1248
+
1249
+ test("Enter saves too, and leaving the box afterwards does not save again", async () => {
1250
+ await renderCard();
1251
+ await loaded();
1252
+
1253
+ await typeDays("showEpisodeHistoryInDays", "7", "enter");
1254
+
1255
+ await waitFor(() => {
1256
+ expect(updateByIdMock).toHaveBeenCalledTimes(1);
1257
+ });
1258
+ expect(lastUpdate()["data"]).toEqual({ showEpisodeHistoryInDays: 7 });
1259
+
1260
+ await act(async () => {
1261
+ fireEvent.blur(daysFor("showEpisodeHistoryInDays"));
1262
+ });
1263
+
1264
+ expect(updateByIdMock).toHaveBeenCalledTimes(1);
1265
+ });
1266
+
1267
+ test("Escape puts back the number the page has, and nothing is saved", async () => {
1268
+ await renderCard();
1269
+ await loaded();
1270
+
1271
+ const box: HTMLInputElement = daysFor("showEpisodeHistoryInDays");
1272
+
1273
+ await act(async () => {
1274
+ fireEvent.focus(box);
1275
+ fireEvent.change(box, { target: { value: "0" } });
1276
+ });
1277
+
1278
+ // A number it cannot take, said so on Enter...
1279
+ await act(async () => {
1280
+ fireEvent.keyDown(box, { key: "Enter", code: "Enter" });
1281
+ });
1282
+ expect(
1283
+ screen.getByTestId(
1284
+ `${getDisplayDaysTestId("showEpisodeHistoryInDays")}-error`,
1285
+ ),
1286
+ ).toBeInTheDocument();
1287
+
1288
+ // ...and taken back with Escape, the message with it.
1289
+ await act(async () => {
1290
+ fireEvent.keyDown(box, { key: "Escape", code: "Escape" });
1291
+ });
1292
+
1293
+ expect(daysFor("showEpisodeHistoryInDays")).toHaveValue(14);
1294
+ expect(
1295
+ screen.queryByTestId(
1296
+ `${getDisplayDaysTestId("showEpisodeHistoryInDays")}-error`,
1297
+ ),
1298
+ ).not.toBeInTheDocument();
1299
+
1300
+ await act(async () => {
1301
+ fireEvent.blur(daysFor("showEpisodeHistoryInDays"));
1302
+ });
1303
+
1304
+ expect(updateByIdMock).not.toHaveBeenCalled();
1305
+ });
1306
+
1307
+ test("leaving the box with the number the page already has saves nothing", async () => {
1308
+ await renderCard();
1309
+ await loaded();
1310
+
1311
+ await typeDays("showIncidentHistoryInDays", "14");
1312
+ await typeDays("showIncidentHistoryInDays", "014");
1313
+
1314
+ expect(updateByIdMock).not.toHaveBeenCalled();
1315
+ expect(daysFor("showIncidentHistoryInDays")).toHaveValue(14);
1316
+ expect(
1317
+ screen.getByTestId(
1318
+ `${getDisplayDaysTestId("showIncidentHistoryInDays")}-status`,
1319
+ ),
1320
+ ).not.toHaveTextContent(StatusPageDisplaySettingsCopy.saved);
1321
+ });
1322
+
1323
+ test.each([[""], ["0"], ["-3"], ["2.5"]])(
1324
+ "%j is not a number of days: nothing is sent, and the box says what to type",
1325
+ async (text: string) => {
1326
+ await renderCard();
1327
+ await loaded();
1328
+
1329
+ await typeDays("showAnnouncementHistoryInDays", text);
1330
+
1331
+ expect(updateByIdMock).not.toHaveBeenCalled();
1332
+
1333
+ const error: HTMLElement = screen.getByTestId(
1334
+ `${getDisplayDaysTestId("showAnnouncementHistoryInDays")}-error`,
1335
+ );
1336
+
1337
+ expect(error).toHaveTextContent(StatusPageDisplaySettingsCopy.daysTooFew);
1338
+ expect(error).toHaveAttribute("role", "alert");
1339
+
1340
+ const box: HTMLInputElement = daysFor("showAnnouncementHistoryInDays");
1341
+
1342
+ expect(box).toHaveAttribute("aria-invalid", "true");
1343
+ expect(box.getAttribute("aria-describedby")).toBe(error.id);
1344
+
1345
+ // Typing again clears it, and a good number saves.
1346
+ await typeDays("showAnnouncementHistoryInDays", "5");
1347
+
1348
+ await waitFor(() => {
1349
+ expect(lastUpdate()["data"]).toEqual({
1350
+ showAnnouncementHistoryInDays: 5,
1351
+ });
1352
+ });
1353
+ expect(
1354
+ screen.queryByTestId(
1355
+ `${getDisplayDaysTestId("showAnnouncementHistoryInDays")}-error`,
1356
+ ),
1357
+ ).not.toBeInTheDocument();
1358
+ },
1359
+ );
1360
+
1361
+ test("uptime history stops at 90 days, the most the bars cover", async () => {
1362
+ await renderCard();
1363
+ await loaded();
1364
+
1365
+ expect(daysDefinitionOf("showUptimeHistoryInDays").maxDays).toBe(90);
1366
+
1367
+ await typeDays("showUptimeHistoryInDays", "91");
1368
+
1369
+ expect(updateByIdMock).not.toHaveBeenCalled();
1370
+ expect(
1371
+ screen.getByTestId(
1372
+ `${getDisplayDaysTestId("showUptimeHistoryInDays")}-error`,
1373
+ ),
1374
+ ).toHaveTextContent("Enter a whole number of days between 1 and 90.");
1375
+
1376
+ await typeDays("showUptimeHistoryInDays", "90");
1377
+ await typeDays("showUptimeHistoryInDays", "30");
1378
+
1379
+ await waitFor(() => {
1380
+ expect(lastUpdate()["data"]).toEqual({ showUptimeHistoryInDays: 30 });
1381
+ });
1382
+ });
1383
+
1384
+ test("the lists have no upper limit, as before", async () => {
1385
+ await renderCard();
1386
+ await loaded();
1387
+
1388
+ await typeDays("showIncidentHistoryInDays", "365");
1389
+
1390
+ await waitFor(() => {
1391
+ expect(lastUpdate()["data"]).toEqual({
1392
+ showIncidentHistoryInDays: 365,
1393
+ });
1394
+ });
1395
+ });
1396
+
1397
+ test("the uptime row says what the number is for, and the box points at it", async () => {
1398
+ await renderCard();
1399
+ await loaded();
1400
+
1401
+ const section: HTMLElement = screen.getByTestId(
1402
+ getDisplaySectionTestId("uptime-history"),
1403
+ );
1404
+
1405
+ expect(
1406
+ within(section).getByText(StatusPageDisplaySettingsCopy.uptimeTitle),
1407
+ ).toBeInTheDocument();
1408
+
1409
+ const description: HTMLElement = within(section).getByText(
1410
+ "How many days the uptime bars and uptime percentages cover, up to 90.",
1411
+ );
1412
+
1413
+ expect(
1414
+ daysFor("showUptimeHistoryInDays").getAttribute("aria-describedby"),
1415
+ ).toBe(description.id);
1416
+
1417
+ // No switch of its own, the uptime bars are always there: only the overall %.
1418
+ expect(within(section).getAllByRole("switch")).toEqual([
1419
+ switchFor(OVERALL),
1420
+ ]);
1421
+ });
1422
+
1423
+ test("is locked while it saves, then says Saved", async () => {
1424
+ let finish: () => void = (): void => {};
1425
+
1426
+ updateByIdMock.mockImplementation((): Promise<unknown> => {
1427
+ return new Promise<unknown>((resolve: (value: unknown) => void) => {
1428
+ finish = (): void => {
1429
+ resolve({});
1430
+ };
1431
+ });
1432
+ });
1433
+
1434
+ await renderCard();
1435
+ await loaded();
1436
+
1437
+ await typeDays("showScheduledEventHistoryInDays", "10");
1438
+
1439
+ const status: HTMLElement = screen.getByTestId(
1440
+ `${getDisplayDaysTestId("showScheduledEventHistoryInDays")}-status`,
1441
+ );
1442
+
1443
+ expect(daysFor("showScheduledEventHistoryInDays")).toHaveAttribute(
1444
+ "readonly",
1445
+ );
1446
+ expect(status).toHaveTextContent(StatusPageDisplaySettingsCopy.saving);
1447
+ expect(status).toHaveAttribute("role", "status");
1448
+
1449
+ await act(async () => {
1450
+ finish();
1451
+ });
1452
+
1453
+ await waitFor(() => {
1454
+ expect(status).toHaveTextContent(StatusPageDisplaySettingsCopy.saved);
1455
+ });
1456
+ expect(daysFor("showScheduledEventHistoryInDays")).not.toHaveAttribute(
1457
+ "readonly",
1458
+ );
1459
+
1460
+ // Typing again takes the Saved away until the next save.
1461
+ await act(async () => {
1462
+ fireEvent.change(daysFor("showScheduledEventHistoryInDays"), {
1463
+ target: { value: "11" },
1464
+ });
1465
+ });
1466
+ expect(status).not.toHaveTextContent(StatusPageDisplaySettingsCopy.saved);
1467
+ });
1468
+
1469
+ test("a refused number goes back to the one the page has, with the reason", async () => {
1470
+ updateByIdMock.mockImplementation(async (): Promise<unknown> => {
1471
+ throw new Error(
1472
+ "Please upgrade your plan to Growth to access this feature",
1473
+ );
1474
+ });
1475
+
1476
+ await renderCard();
1477
+ await loaded();
1478
+
1479
+ await typeDays("showEpisodeHistoryInDays", "30");
1480
+
1481
+ await waitFor(() => {
1482
+ expect(
1483
+ screen.getByTestId(
1484
+ `${getDisplayDaysTestId("showEpisodeHistoryInDays")}-error`,
1485
+ ),
1486
+ ).toHaveTextContent(
1487
+ "Please upgrade your plan to Growth to access this feature",
1488
+ );
1489
+ });
1490
+ expect(daysFor("showEpisodeHistoryInDays")).toHaveValue(14);
1491
+ expect(
1492
+ screen.getByTestId(
1493
+ `${getDisplayDaysTestId("showEpisodeHistoryInDays")}-status`,
1494
+ ),
1495
+ ).not.toHaveTextContent(StatusPageDisplaySettingsCopy.saved);
1496
+ });
1497
+ });
1498
+
1499
+ describe("the overall uptime percentage", () => {
1500
+ test("sits in the uptime row, under the number of days, saying what visitors see", async () => {
1501
+ await renderCard();
1502
+ await loaded();
1503
+
1504
+ const section: HTMLElement = screen.getByTestId(
1505
+ getDisplaySectionTestId("uptime-history"),
1506
+ );
1507
+
1508
+ expect(
1509
+ within(section).getByRole("switch", {
1510
+ name: "Show Overall Uptime Percent",
1511
+ }),
1512
+ ).toBe(switchFor(OVERALL));
1513
+ expect(
1514
+ within(switchRowFor(OVERALL)).getByText(
1515
+ StatusPageDisplaySettingsCopy.overallUptimeDescription,
1516
+ ),
1517
+ ).toBeInTheDocument();
1518
+
1519
+ // The days first, then the switch.
1520
+ const days: HTMLElement = daysFor("showUptimeHistoryInDays");
1521
+
1522
+ expect(
1523
+ days.compareDocumentPosition(switchFor(OVERALL)) &
1524
+ Node.DOCUMENT_POSITION_FOLLOWING,
1525
+ ).toBeTruthy();
1526
+ });
1527
+
1528
+ test("off, as a new page has it, offers no precision: the precision is of that percentage alone", async () => {
1529
+ await renderCard();
1530
+ await loaded();
1531
+
1532
+ expect(switchFor(OVERALL)).toHaveAttribute("aria-checked", "false");
1533
+ expect(queryChoiceRowFor(PRECISION)).toBeNull();
1534
+ });
1535
+
1536
+ test("turning it on saves the switch alone, and offers the precision the page has", async () => {
1537
+ await renderCard();
1538
+ await loaded();
1539
+
1540
+ await press(OVERALL);
1541
+
1542
+ await waitFor(() => {
1543
+ expect(choiceRowFor(PRECISION)).toBeInTheDocument();
1544
+ });
1545
+
1546
+ expect(updateByIdMock).toHaveBeenCalledTimes(1);
1547
+ expect(lastUpdate()["data"]).toEqual({
1548
+ showOverallUptimePercentOnStatusPage: true,
1549
+ });
1550
+ expect(shownPrecision()).toBe("99.99%");
1551
+ expect(
1552
+ screen.getByRole("combobox", {
1553
+ name: StatusPageDisplaySettingsCopy.precisionLabel,
1554
+ }),
1555
+ ).toBe(precisionBox());
1556
+ });
1557
+
1558
+ test("turning it off takes the precision away, and saves the switch alone", async () => {
1559
+ stored = { ...NEW_PAGE, showOverallUptimePercentOnStatusPage: true };
1560
+
1561
+ await renderCard();
1562
+ await loaded();
1563
+
1564
+ expect(choiceRowFor(PRECISION)).toBeInTheDocument();
1565
+
1566
+ await press(OVERALL);
1567
+
1568
+ await waitFor(() => {
1569
+ expect(queryChoiceRowFor(PRECISION)).toBeNull();
1570
+ });
1571
+ expect(lastUpdate()["data"]).toEqual({
1572
+ showOverallUptimePercentOnStatusPage: false,
1573
+ });
1574
+ });
1575
+
1576
+ test("offers every precision, fewest decimals first, each as a visitor would read it", async () => {
1577
+ stored = { ...NEW_PAGE, showOverallUptimePercentOnStatusPage: true };
1578
+
1579
+ await renderCard();
1580
+ await loaded();
1581
+
1582
+ expect(offeredBy(precisionBox())).toEqual([
1583
+ "99%",
1584
+ "99.9%",
1585
+ "99.99%",
1586
+ "99.999%",
1587
+ ]);
1588
+ });
1589
+
1590
+ test.each([
1591
+ [UptimePrecision.NO_DECIMAL, "99%"],
1592
+ [UptimePrecision.ONE_DECIMAL, "99.9%"],
1593
+ [UptimePrecision.TWO_DECIMAL, "99.99%"],
1594
+ [UptimePrecision.THREE_DECIMAL, "99.999%"],
1595
+ ])("a page stored with %s shows %s", async (value: string, shown: string) => {
1596
+ stored = {
1597
+ ...NEW_PAGE,
1598
+ showOverallUptimePercentOnStatusPage: true,
1599
+ overallUptimePercentPrecision: value,
1600
+ };
1601
+
1602
+ await renderCard();
1603
+ await loaded();
1604
+
1605
+ expect(shownPrecision()).toBe(shown);
1606
+ });
1607
+
1608
+ test("a precision the list does not know is shown as it is stored", async () => {
1609
+ stored = {
1610
+ ...NEW_PAGE,
1611
+ showOverallUptimePercentOnStatusPage: true,
1612
+ overallUptimePercentPrecision: "Five Decimal",
1613
+ };
1614
+
1615
+ await renderCard();
1616
+ await loaded();
1617
+
1618
+ expect(shownPrecision()).toBe("Five Decimal");
1619
+ expect(offeredBy(precisionBox())).toEqual([
1620
+ "99%",
1621
+ "99.9%",
1622
+ "99.99%",
1623
+ "99.999%",
1624
+ "Five Decimal",
1625
+ ]);
1626
+ });
1627
+
1628
+ test("picking a precision saves that column alone, at once, and says so", async () => {
1629
+ stored = { ...NEW_PAGE, showOverallUptimePercentOnStatusPage: true };
1630
+
1631
+ await renderCard();
1632
+ await loaded();
1633
+
1634
+ await pickFrom(precisionBox(), "99.9%");
1635
+
1636
+ expect(updateByIdMock).toHaveBeenCalledTimes(1);
1637
+
1638
+ const request: Record<string, unknown> = lastUpdate();
1639
+
1640
+ expect(request["modelType"]).toBe(StatusPage);
1641
+ expect((request["id"] as ObjectID).toString()).toBe(STATUS_PAGE_ID);
1642
+ expect(request["data"]).toEqual({
1643
+ overallUptimePercentPrecision: UptimePrecision.ONE_DECIMAL,
1644
+ });
1645
+ expect(shownPrecision()).toBe("99.9%");
1646
+ expect(
1647
+ screen.getByTestId(`${getDisplayChoiceTestId(PRECISION)}-status`),
1648
+ ).toHaveTextContent(StatusPageDisplaySettingsCopy.saved);
1649
+
1650
+ // No dialog, no Save button.
1651
+ expect(screen.queryByRole("dialog")).toBeNull();
1652
+ expect(screen.queryByRole("button", { name: /save/i })).toBeNull();
1653
+ });
1654
+
1655
+ test("picking what the page has saves nothing", async () => {
1656
+ stored = { ...NEW_PAGE, showOverallUptimePercentOnStatusPage: true };
1657
+
1658
+ await renderCard();
1659
+ await loaded();
1660
+
1661
+ await pickFrom(precisionBox(), "99.99%");
1662
+
1663
+ expect(updateByIdMock).not.toHaveBeenCalled();
1664
+ expect(
1665
+ screen.getByTestId(`${getDisplayChoiceTestId(PRECISION)}-status`),
1666
+ ).toHaveTextContent("");
1667
+ });
1668
+
1669
+ test("says Saving… while the pick is on its way, and stays usable, so a second pick is saved after it and the last one wins", async () => {
1670
+ stored = { ...NEW_PAGE, showOverallUptimePercentOnStatusPage: true };
1671
+
1672
+ const finishers: Array<() => void> = [];
1673
+
1674
+ updateByIdMock.mockImplementation((): Promise<unknown> => {
1675
+ return new Promise<unknown>((resolve: (value: unknown) => void) => {
1676
+ finishers.push((): void => {
1677
+ resolve({});
1678
+ });
1679
+ });
1680
+ });
1681
+
1682
+ await renderCard();
1683
+ await loaded();
1684
+
1685
+ await pickFrom(precisionBox(), "99%");
1686
+
1687
+ expect(
1688
+ screen.getByTestId(`${getDisplayChoiceTestId(PRECISION)}-status`),
1689
+ ).toHaveTextContent(StatusPageDisplaySettingsCopy.saving);
1690
+ expect(precisionBox()).not.toBeDisabled();
1691
+
1692
+ await pickFrom(precisionBox(), "99.9%");
1693
+ await pickFrom(precisionBox(), "99.999%");
1694
+
1695
+ // One request at a time.
1696
+ expect(updateByIdMock).toHaveBeenCalledTimes(1);
1697
+ expect(shownPrecision()).toBe("99.999%");
1698
+
1699
+ await act(async () => {
1700
+ finishers[0]!();
1701
+ });
1702
+ await flush();
1703
+
1704
+ // Only the last waiting pick is sent.
1705
+ expect(updateByIdMock).toHaveBeenCalledTimes(2);
1706
+ expect(lastUpdate()["data"]).toEqual({
1707
+ overallUptimePercentPrecision: UptimePrecision.THREE_DECIMAL,
1708
+ });
1709
+
1710
+ await act(async () => {
1711
+ finishers[1]!();
1712
+ });
1713
+ await flush();
1714
+
1715
+ expect(shownPrecision()).toBe("99.999%");
1716
+ expect(
1717
+ screen.getByTestId(`${getDisplayChoiceTestId(PRECISION)}-status`),
1718
+ ).toHaveTextContent(StatusPageDisplaySettingsCopy.saved);
1719
+ expect(updateByIdMock).toHaveBeenCalledTimes(2);
1720
+ });
1721
+
1722
+ test("a refused pick goes back to the page's precision, with the reason", async () => {
1723
+ stored = { ...NEW_PAGE, showOverallUptimePercentOnStatusPage: true };
1724
+
1725
+ updateByIdMock.mockImplementation(async (): Promise<unknown> => {
1726
+ throw new Error("You do not have permission to update this Status Page.");
1727
+ });
1728
+
1729
+ await renderCard();
1730
+ await loaded();
1731
+
1732
+ await pickFrom(precisionBox(), "99%");
1733
+
1734
+ const error: HTMLElement = screen.getByTestId(
1735
+ `${getDisplayChoiceTestId(PRECISION)}-error`,
1736
+ );
1737
+
1738
+ expect(error).toHaveAttribute("role", "alert");
1739
+ expect(error).toHaveTextContent(
1740
+ "You do not have permission to update this Status Page.",
1741
+ );
1742
+ expect(shownPrecision()).toBe("99.99%");
1743
+
1744
+ // A new pick clears it.
1745
+ updateByIdMock.mockResolvedValue({} as never);
1746
+ await pickFrom(precisionBox(), "99.9%");
1747
+
1748
+ expect(
1749
+ screen.queryByTestId(`${getDisplayChoiceTestId(PRECISION)}-error`),
1750
+ ).toBeNull();
1751
+ expect(shownPrecision()).toBe("99.9%");
1752
+ });
1753
+
1754
+ test("turned off and on again, the precision is as last saved, not as first read", async () => {
1755
+ stored = { ...NEW_PAGE, showOverallUptimePercentOnStatusPage: true };
1756
+
1757
+ await renderCard();
1758
+ await loaded();
1759
+
1760
+ await pickFrom(precisionBox(), "99%");
1761
+ expect(lastUpdate()["data"]).toEqual({
1762
+ overallUptimePercentPrecision: UptimePrecision.NO_DECIMAL,
1763
+ });
1764
+
1765
+ await press(OVERALL);
1766
+ await waitFor(() => {
1767
+ expect(queryChoiceRowFor(PRECISION)).toBeNull();
1768
+ });
1769
+ await waitFor(() => {
1770
+ expect(switchFor(OVERALL)).not.toHaveAttribute("aria-disabled", "true");
1771
+ });
1772
+
1773
+ await press(OVERALL);
1774
+
1775
+ await waitFor(() => {
1776
+ expect(shownPrecision()).toBe("99%");
1777
+ });
1778
+ });
1779
+
1780
+ test("a refused attempt to turn it on (it needs the Scale plan) offers no precision", async () => {
1781
+ updateByIdMock.mockImplementation(async (): Promise<unknown> => {
1782
+ throw new Error(
1783
+ "Please upgrade your plan to Scale to access this feature",
1784
+ );
1785
+ });
1786
+
1787
+ await renderCard();
1788
+ await loaded();
1789
+
1790
+ await press(OVERALL);
1791
+
1792
+ await waitFor(() => {
1793
+ expect(
1794
+ within(switchRowFor(OVERALL)).getByRole("alert"),
1795
+ ).toHaveTextContent(
1796
+ "Please upgrade your plan to Scale to access this feature",
1797
+ );
1798
+ });
1799
+ expect(switchFor(OVERALL)).toHaveAttribute("aria-checked", "false");
1800
+ expect(queryChoiceRowFor(PRECISION)).toBeNull();
1801
+ });
1802
+
1803
+ /*
1804
+ * The bug this row fixes: the precision shared an Edit dialog with the
1805
+ * switch, the dialog sent both, and the server refuses a write that
1806
+ * carries the Scale plan's switch on a lower plan - so a page whose
1807
+ * overall percentage was on (turned on on Scale, or by the API) could not
1808
+ * have its precision changed at all.
1809
+ */
1810
+ test("on a plan below Scale, the switch names Scale, and the precision still saves, on its own", async () => {
1811
+ plan = PlanType.Growth;
1812
+ stored = { ...NEW_PAGE, showOverallUptimePercentOnStatusPage: true };
1813
+
1814
+ getJestSpyOn(
1815
+ SubscriptionPlan,
1816
+ "isFeatureAccessibleOnCurrentPlan",
1817
+ ).mockImplementation((needed: unknown): boolean => {
1818
+ return needed === PlanType.Free || needed === PlanType.Growth;
1819
+ });
1820
+
1821
+ await renderCard();
1822
+ await loaded();
1823
+
1824
+ expect(within(switchRowFor(OVERALL)).getByTestId("pill")).toHaveTextContent(
1825
+ "Scale Plan",
1826
+ );
1827
+ expect(
1828
+ within(choiceRowFor(PRECISION)).queryByTestId("pill"),
1829
+ ).not.toBeInTheDocument();
1830
+
1831
+ await pickFrom(precisionBox(), "99.999%");
1832
+
1833
+ expect(updatesOf(PRECISION)).toEqual([
1834
+ { overallUptimePercentPrecision: UptimePrecision.THREE_DECIMAL },
1835
+ ]);
1836
+ expect(updatesOf(OVERALL)).toEqual([]);
1837
+ });
1838
+ });
1839
+
1840
+ describe("what counts as downtime", () => {
1841
+ test("is in the uptime row, last, named for what it does, saying what it does", async () => {
1842
+ await renderCard();
1843
+ await loaded();
1844
+ await flush();
1845
+
1846
+ const section: HTMLElement = screen.getByTestId(
1847
+ getDisplaySectionTestId("uptime-history"),
1848
+ );
1849
+
1850
+ expect(
1851
+ within(section).getByTestId(`${getDisplayStatusesTestId(DOWNTIME)}-row`),
1852
+ ).toBe(statusesRowFor(DOWNTIME));
1853
+ expect(
1854
+ screen.getByRole("combobox", {
1855
+ name: StatusPageDisplaySettingsCopy.downtimeLabel,
1856
+ }),
1857
+ ).toBe(downtimeBox());
1858
+ expect(
1859
+ screen.getByTestId(`${getDisplayStatusesTestId(DOWNTIME)}-description`),
1860
+ ).toHaveTextContent(StatusPageDisplaySettingsCopy.downtimeDescription);
1861
+
1862
+ // After the overall uptime percentage.
1863
+ expect(
1864
+ switchFor(OVERALL).compareDocumentPosition(downtimeBox()) &
1865
+ Node.DOCUMENT_POSITION_FOLLOWING,
1866
+ ).toBeTruthy();
1867
+ });
1868
+
1869
+ test("shows the page's statuses as chips, each in its own colour", async () => {
1870
+ await renderCard();
1871
+ await loaded();
1872
+ await flush();
1873
+
1874
+ expect(downtimeChips()).toEqual(["Degraded", "Offline"]);
1875
+
1876
+ const dots: Array<string | null> = Array.from(
1877
+ statusesRowFor(DOWNTIME).querySelectorAll(
1878
+ ".ou-select__multi-value__label [title]",
1879
+ ),
1880
+ ).map((dot: Element): string | null => {
1881
+ return dot.getAttribute("title");
1882
+ });
1883
+
1884
+ expect(dots).toEqual(["#eab308", "#ef4444"]);
1885
+ });
1886
+
1887
+ test("offers the project's other statuses, in priority order", async () => {
1888
+ await renderCard();
1889
+ await loaded();
1890
+ await flush();
1891
+
1892
+ // The picked ones are chips already.
1893
+ expect(offeredBy(downtimeBox())).toEqual([
1894
+ "Operational",
1895
+ "Under Maintenance",
1896
+ ]);
1897
+ });
1898
+
1899
+ test("adding a status saves the statuses alone, by id, at once, and says so", async () => {
1900
+ await renderCard();
1901
+ await loaded();
1902
+ await flush();
1903
+
1904
+ await pickFrom(downtimeBox(), "Under Maintenance");
1905
+
1906
+ expect(updateByIdMock).toHaveBeenCalledTimes(1);
1907
+
1908
+ const request: Record<string, unknown> = lastUpdate();
1909
+
1910
+ expect(request["modelType"]).toBe(StatusPage);
1911
+ expect((request["id"] as ObjectID).toString()).toBe(STATUS_PAGE_ID);
1912
+ expect(request["data"]).toEqual({
1913
+ downtimeMonitorStatuses: [DEGRADED_ID, OFFLINE_ID, MAINTENANCE_ID],
1914
+ });
1915
+ expect(downtimeChips()).toEqual([
1916
+ "Degraded",
1917
+ "Offline",
1918
+ "Under Maintenance",
1919
+ ]);
1920
+ expect(
1921
+ screen.getByTestId(`${getDisplayStatusesTestId(DOWNTIME)}-status`),
1922
+ ).toHaveTextContent(StatusPageDisplaySettingsCopy.saved);
1923
+ expect(screen.queryByRole("dialog")).toBeNull();
1924
+ });
1925
+
1926
+ test("taking a status off saves the rest", async () => {
1927
+ await renderCard();
1928
+ await loaded();
1929
+ await flush();
1930
+
1931
+ await removeChip("Degraded");
1932
+
1933
+ expect(lastUpdate()["data"]).toEqual({
1934
+ downtimeMonitorStatuses: [OFFLINE_ID],
1935
+ });
1936
+ expect(downtimeChips()).toEqual(["Offline"]);
1937
+ });
1938
+
1939
+ test("the last status cannot be taken off: nothing is sent, the chip stays, and the row says why", async () => {
1940
+ storedStatuses = statusesNamed("Offline");
1941
+
1942
+ await renderCard();
1943
+ await loaded();
1944
+ await flush();
1945
+
1946
+ await removeChip("Offline");
1947
+
1948
+ expect(updateByIdMock).not.toHaveBeenCalled();
1949
+ expect(downtimeChips()).toEqual(["Offline"]);
1950
+
1951
+ const error: HTMLElement = screen.getByTestId(
1952
+ `${getDisplayStatusesTestId(DOWNTIME)}-error`,
1953
+ );
1954
+
1955
+ expect(error).toHaveAttribute("role", "alert");
1956
+ expect(error).toHaveTextContent(
1957
+ StatusPageDisplaySettingsCopy.downtimeKeepOne,
1958
+ );
1959
+
1960
+ // Adding one clears it and saves.
1961
+ await pickFrom(downtimeBox(), "Degraded");
1962
+
1963
+ expect(
1964
+ screen.queryByTestId(`${getDisplayStatusesTestId(DOWNTIME)}-error`),
1965
+ ).toBeNull();
1966
+ expect(lastUpdate()["data"]).toEqual({
1967
+ downtimeMonitorStatuses: [OFFLINE_ID, DEGRADED_ID],
1968
+ });
1969
+ });
1970
+
1971
+ test("has no clear-all control: the list always keeps a status", async () => {
1972
+ await renderCard();
1973
+ await loaded();
1974
+ await flush();
1975
+
1976
+ expect(
1977
+ statusesRowFor(DOWNTIME).querySelector(".ou-select__clear-indicator"),
1978
+ ).toBeNull();
1979
+ });
1980
+
1981
+ test("a refused change puts back the page's statuses, with the reason", async () => {
1982
+ updateByIdMock.mockImplementation(async (): Promise<unknown> => {
1983
+ throw new Error("Monitor status not found.");
1984
+ });
1985
+
1986
+ await renderCard();
1987
+ await loaded();
1988
+ await flush();
1989
+
1990
+ await pickFrom(downtimeBox(), "Operational");
1991
+
1992
+ expect(
1993
+ screen.getByTestId(`${getDisplayStatusesTestId(DOWNTIME)}-error`),
1994
+ ).toHaveTextContent("Monitor status not found.");
1995
+ expect(downtimeChips()).toEqual(["Degraded", "Offline"]);
1996
+ expect(
1997
+ screen.getByTestId(`${getDisplayStatusesTestId(DOWNTIME)}-status`),
1998
+ ).toHaveTextContent("");
1999
+ });
2000
+
2001
+ test("is never locked while it saves: a change made meanwhile is saved after it, and the last one wins", async () => {
2002
+ const finishers: Array<() => void> = [];
2003
+
2004
+ updateByIdMock.mockImplementation((): Promise<unknown> => {
2005
+ return new Promise<unknown>((resolve: (value: unknown) => void) => {
2006
+ finishers.push((): void => {
2007
+ resolve({});
2008
+ });
2009
+ });
2010
+ });
2011
+
2012
+ await renderCard();
2013
+ await loaded();
2014
+ await flush();
2015
+
2016
+ await pickFrom(downtimeBox(), "Under Maintenance");
2017
+
2018
+ expect(downtimeBox()).not.toBeDisabled();
2019
+ expect(
2020
+ screen.getByTestId(`${getDisplayStatusesTestId(DOWNTIME)}-status`),
2021
+ ).toHaveTextContent(StatusPageDisplaySettingsCopy.saving);
2022
+
2023
+ await removeChip("Degraded");
2024
+ await pickFrom(downtimeBox(), "Operational");
2025
+
2026
+ expect(updateByIdMock).toHaveBeenCalledTimes(1);
2027
+ expect(downtimeChips()).toEqual([
2028
+ "Offline",
2029
+ "Under Maintenance",
2030
+ "Operational",
2031
+ ]);
2032
+
2033
+ await act(async () => {
2034
+ finishers[0]!();
2035
+ });
2036
+ await flush();
2037
+
2038
+ expect(updateByIdMock).toHaveBeenCalledTimes(2);
2039
+ expect(lastUpdate()["data"]).toEqual({
2040
+ downtimeMonitorStatuses: [OFFLINE_ID, MAINTENANCE_ID, OPERATIONAL_ID],
2041
+ });
2042
+
2043
+ await act(async () => {
2044
+ finishers[1]!();
2045
+ });
2046
+ await flush();
2047
+
2048
+ expect(
2049
+ screen.getByTestId(`${getDisplayStatusesTestId(DOWNTIME)}-status`),
2050
+ ).toHaveTextContent(StatusPageDisplaySettingsCopy.saved);
2051
+ });
2052
+
2053
+ test("a page with none (only the API leaves a page so) says every uptime percentage reads 100%, and a pick saves", async () => {
2054
+ storedStatuses = [];
2055
+
2056
+ await renderCard();
2057
+ await loaded();
2058
+ await flush();
2059
+
2060
+ expect(downtimeChips()).toEqual([]);
2061
+ expect(
2062
+ screen.getByTestId(`${getDisplayStatusesTestId(DOWNTIME)}-description`),
2063
+ ).toHaveTextContent(StatusPageDisplaySettingsCopy.downtimeEmptyDescription);
2064
+ expect(statusesRowFor(DOWNTIME)).toHaveTextContent(
2065
+ StatusPageDisplaySettingsCopy.downtimePlaceholder,
2066
+ );
2067
+
2068
+ await pickFrom(downtimeBox(), "Offline");
2069
+
2070
+ expect(lastUpdate()["data"]).toEqual({
2071
+ downtimeMonitorStatuses: [OFFLINE_ID],
2072
+ });
2073
+ expect(
2074
+ screen.getByTestId(`${getDisplayStatusesTestId(DOWNTIME)}-description`),
2075
+ ).toHaveTextContent(StatusPageDisplaySettingsCopy.downtimeDescription);
2076
+ });
2077
+
2078
+ test("when the project's statuses cannot be read it says why, and the page's chips still show", async () => {
2079
+ projectStatuses = new Error("The server is down for maintenance.");
2080
+
2081
+ await renderCard();
2082
+ await loaded();
2083
+ await flush();
2084
+
2085
+ expect(
2086
+ screen.getByTestId(`${getDisplayStatusesTestId(DOWNTIME)}-load-error`),
2087
+ ).toHaveTextContent("The server is down for maintenance.");
2088
+ expect(downtimeChips()).toEqual(["Degraded", "Offline"]);
2089
+
2090
+ // The rest of the card is untouched.
2091
+ expect(switchFor("showIncidentsOnStatusPage")).toBeInTheDocument();
2092
+ });
2093
+
2094
+ test("a status the project's list leaves out stays a chip of its own, and can be taken off", async () => {
2095
+ const retired: MonitorStatus = monitorStatus({
2096
+ id: "6c6c6c6c-0000-4000-8000-000000000009",
2097
+ name: "Retired",
2098
+ color: "#000000",
2099
+ priority: 9,
2100
+ });
2101
+
2102
+ storedStatuses = [...statusesNamed("Offline"), retired];
2103
+
2104
+ await renderCard();
2105
+ await loaded();
2106
+ await flush();
2107
+
2108
+ expect(downtimeChips()).toEqual(["Offline", "Retired"]);
2109
+
2110
+ await removeChip("Retired");
2111
+
2112
+ expect(lastUpdate()["data"]).toEqual({
2113
+ downtimeMonitorStatuses: [OFFLINE_ID],
2114
+ });
2115
+ });
2116
+ });
2117
+
2118
+ describe("who may change them", () => {
2119
+ test("the gate is asked about updating a status page", async () => {
2120
+ await renderCard();
2121
+ await loaded();
2122
+
2123
+ const calls: Array<Array<unknown>> = (
2124
+ PermissionGate.check as unknown as MockFunction
2125
+ ).mock.calls as Array<Array<unknown>>;
2126
+
2127
+ expect(calls.length).toBeGreaterThan(0);
2128
+
2129
+ for (const [model, action] of calls) {
2130
+ expect(model).toBeInstanceOf(StatusPage);
2131
+ expect(action).toBe(ModelAction.Update);
2132
+ }
2133
+ });
2134
+
2135
+ test("someone who may not edit the page sees everything locked, with the reason, and nothing is saved", async () => {
2136
+ gate = {
2137
+ isAllowed: false,
2138
+ disabledReason: "You do not have permission to update this Status Page.",
2139
+ };
2140
+ stored = { ...NEW_PAGE, showOverallUptimePercentOnStatusPage: true };
2141
+
2142
+ await renderCard();
2143
+ await loaded();
2144
+
2145
+ for (const definition of DISPLAY_SWITCHES) {
2146
+ expect(switchFor(definition.column)).toHaveAttribute(
2147
+ "aria-disabled",
2148
+ "true",
2149
+ );
2150
+ }
2151
+
2152
+ for (const definition of DISPLAY_DAYS) {
2153
+ expect(daysFor(definition.column)).toHaveAttribute("readonly");
2154
+ }
2155
+
2156
+ // The precision and the downtime statuses too, still showing their values.
2157
+ expect(precisionBox()).toBeDisabled();
2158
+ expect(shownPrecision()).toBe("99.99%");
2159
+ expect(downtimeBox()).toBeDisabled();
2160
+ expect(downtimeChips()).toEqual(["Degraded", "Offline"]);
2161
+ expect(offeredBy(precisionBox())).toEqual([]);
2162
+ expect(offeredBy(downtimeBox())).toEqual([]);
2163
+
2164
+ expect(
2165
+ screen.getAllByText(
2166
+ "You do not have permission to update this Status Page.",
2167
+ ).length,
2168
+ ).toBeGreaterThan(0);
2169
+
2170
+ await press("showIncidentsOnStatusPage");
2171
+ await typeDays("showUptimeHistoryInDays", "30");
2172
+
2173
+ expect(updateByIdMock).not.toHaveBeenCalled();
2174
+ expect(switchFor("showIncidentsOnStatusPage")).toHaveAttribute(
2175
+ "aria-checked",
2176
+ "true",
2177
+ );
2178
+ });
2179
+ });
2180
+
2181
+ describe("plans", () => {
2182
+ test("with no plan to go by (billing off, or not loaded), nothing names a plan", async () => {
2183
+ plan = null;
2184
+ const accessible: ReturnType<typeof getJestSpyOn> = getJestSpyOn(
2185
+ SubscriptionPlan,
2186
+ "isFeatureAccessibleOnCurrentPlan",
2187
+ );
2188
+
2189
+ await renderCard();
2190
+ await loaded();
2191
+
2192
+ expect(screen.queryByTestId("pill")).not.toBeInTheDocument();
2193
+ expect(accessible).not.toHaveBeenCalled();
2194
+ });
2195
+
2196
+ test("on the Free plan, each setting the Free plan cannot change names the plan it needs, beside it", async () => {
2197
+ plan = PlanType.Free;
2198
+ // On, so its precision is drawn too.
2199
+ stored = { ...NEW_PAGE, showOverallUptimePercentOnStatusPage: true };
2200
+
2201
+ getJestSpyOn(
2202
+ SubscriptionPlan,
2203
+ "isFeatureAccessibleOnCurrentPlan",
2204
+ ).mockImplementation((needed: unknown, current: unknown): boolean => {
2205
+ expect(current).toBe(PlanType.Free);
2206
+ return needed === PlanType.Free;
2207
+ });
2208
+
2209
+ await renderCard();
2210
+ await loaded();
2211
+
2212
+ const statusPage: StatusPage = new StatusPage();
2213
+
2214
+ const rowOf: (column: DisplaySettingColumn) => HTMLElement = (
2215
+ column: DisplaySettingColumn,
2216
+ ): HTMLElement => {
2217
+ if (
2218
+ DISPLAY_CHOICES.some((definition: { column: string }) => {
2219
+ return definition.column === column;
2220
+ })
2221
+ ) {
2222
+ return choiceRowFor(column as DisplayChoiceColumn);
2223
+ }
2224
+
2225
+ if (
2226
+ DISPLAY_STATUSES.some((definition: { column: string }) => {
2227
+ return definition.column === column;
2228
+ })
2229
+ ) {
2230
+ return statusesRowFor(column as DisplayStatusesColumn);
2231
+ }
2232
+
2233
+ return DISPLAY_DAYS.some((definition: DisplayDaysDefinition) => {
2234
+ return definition.column === column;
2235
+ })
2236
+ ? daysRowFor(column as DisplayDaysColumn)
2237
+ : switchRowFor(column as DisplaySwitchColumn);
2238
+ };
2239
+
2240
+ for (const column of DISPLAY_SETTING_COLUMNS) {
2241
+ const billing: { update?: PlanType } | undefined =
2242
+ statusPage.getColumnBillingAccessControl(column);
2243
+ const needed: PlanType | undefined = billing?.update;
2244
+
2245
+ if (!needed || needed === PlanType.Free) {
2246
+ expect({
2247
+ column: column,
2248
+ pill: within(rowOf(column)).queryByTestId("pill"),
2249
+ }).toEqual({ column: column, pill: null });
2250
+ continue;
2251
+ }
2252
+
2253
+ expect(within(rowOf(column)).getByTestId("pill")).toHaveTextContent(
2254
+ `${needed} Plan`,
2255
+ );
2256
+ }
2257
+
2258
+ /*
2259
+ * The overall uptime percentage needs Scale to be switched; its
2260
+ * precision and the downtime statuses, every plan.
2261
+ */
2262
+ expect(within(switchRowFor(OVERALL)).getByTestId("pill")).toHaveTextContent(
2263
+ "Scale Plan",
2264
+ );
2265
+ expect(
2266
+ within(choiceRowFor(PRECISION)).queryByTestId("pill"),
2267
+ ).not.toBeInTheDocument();
2268
+ expect(
2269
+ within(statusesRowFor(DOWNTIME)).queryByTestId("pill"),
2270
+ ).not.toBeInTheDocument();
2271
+
2272
+ /*
2273
+ * As the model has it today: the four lists, their labels and how far
2274
+ * back episodes go from Growth; hiding the Powered by line from Scale;
2275
+ * the other history windows and the scope switch on every plan.
2276
+ */
2277
+ for (const column of [
2278
+ ...LIST_SWITCHES,
2279
+ "showIncidentLabelsOnStatusPage",
2280
+ "showEpisodeLabelsOnStatusPage",
2281
+ "showScheduledEventLabelsOnStatusPage",
2282
+ ] as Array<DisplaySwitchColumn>) {
2283
+ expect(
2284
+ within(switchRowFor(column)).getByTestId("pill"),
2285
+ ).toHaveTextContent("Growth Plan");
2286
+ }
2287
+
2288
+ expect(
2289
+ within(daysRowFor("showEpisodeHistoryInDays")).getByTestId("pill"),
2290
+ ).toHaveTextContent("Growth Plan");
2291
+ expect(
2292
+ within(switchRowFor("hidePoweredByOneUptimeBranding")).getByTestId(
2293
+ "pill",
2294
+ ),
2295
+ ).toHaveTextContent("Scale Plan");
2296
+
2297
+ for (const column of [
2298
+ "showIncidentHistoryInDays",
2299
+ "showAnnouncementHistoryInDays",
2300
+ "showScheduledEventHistoryInDays",
2301
+ "showUptimeHistoryInDays",
2302
+ ] as Array<DisplayDaysColumn>) {
2303
+ expect(
2304
+ within(daysRowFor(column)).queryByTestId("pill"),
2305
+ ).not.toBeInTheDocument();
2306
+ }
2307
+
2308
+ expect(
2309
+ within(switchRowFor("onlyShowScopedIncidents")).queryByTestId("pill"),
2310
+ ).not.toBeInTheDocument();
2311
+ });
2312
+
2313
+ test("on the Free plan, the free settings next to a paid one still save on their own", async () => {
2314
+ plan = PlanType.Free;
2315
+
2316
+ getJestSpyOn(
2317
+ SubscriptionPlan,
2318
+ "isFeatureAccessibleOnCurrentPlan",
2319
+ ).mockImplementation((needed: unknown): boolean => {
2320
+ return needed === PlanType.Free;
2321
+ });
2322
+
2323
+ await renderCard();
2324
+ await loaded();
2325
+
2326
+ await typeDays("showIncidentHistoryInDays", "30");
2327
+ await waitFor(() => {
2328
+ expect(lastUpdate()["data"]).toEqual({ showIncidentHistoryInDays: 30 });
2329
+ });
2330
+
2331
+ await press("onlyShowScopedIncidents");
2332
+ await waitFor(() => {
2333
+ expect(lastUpdate()["data"]).toEqual({ onlyShowScopedIncidents: true });
2334
+ });
2335
+
2336
+ await pickFrom(downtimeBox(), "Under Maintenance");
2337
+ await waitFor(() => {
2338
+ expect(lastUpdate()["data"]).toEqual({
2339
+ downtimeMonitorStatuses: [DEGRADED_ID, OFFLINE_ID, MAINTENANCE_ID],
2340
+ });
2341
+ });
2342
+
2343
+ // Each request carried its own column alone.
2344
+ for (const call of updateByIdMock.mock.calls) {
2345
+ expect(
2346
+ Object.keys(
2347
+ (call[0] as Record<string, unknown>)["data"] as Record<
2348
+ string,
2349
+ unknown
2350
+ >,
2351
+ ),
2352
+ ).toHaveLength(1);
2353
+ }
2354
+ });
2355
+
2356
+ test("the plan's name is beside a switch, not part of its name", async () => {
2357
+ plan = PlanType.Free;
2358
+ getJestSpyOn(
2359
+ SubscriptionPlan,
2360
+ "isFeatureAccessibleOnCurrentPlan",
2361
+ ).mockImplementation((): boolean => {
2362
+ return false;
2363
+ });
2364
+
2365
+ await renderCard();
2366
+ await loaded();
2367
+
2368
+ expect(
2369
+ screen.getByRole("switch", {
2370
+ name: definitionOf("showIncidentsOnStatusPage").title,
2371
+ }),
2372
+ ).toBe(switchFor("showIncidentsOnStatusPage"));
2373
+ });
2374
+ });