@memberjunction/ng-explorer-core 6.2.0-edge.2 → 6.2.0-edge.4

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 (139) hide show
  1. package/README.md +10 -0
  2. package/dist/app-routing.module.d.ts.map +1 -1
  3. package/dist/app-routing.module.js +5 -0
  4. package/dist/app-routing.module.js.map +1 -1
  5. package/dist/generated/lazy-feature-config.d.ts +1 -1
  6. package/dist/generated/lazy-feature-config.d.ts.map +1 -1
  7. package/dist/generated/lazy-feature-config.js +12 -2
  8. package/dist/generated/lazy-feature-config.js.map +1 -1
  9. package/dist/lib/guards/moved-nav-item-redirect.d.ts +15 -0
  10. package/dist/lib/guards/moved-nav-item-redirect.d.ts.map +1 -0
  11. package/dist/lib/guards/moved-nav-item-redirect.js +37 -0
  12. package/dist/lib/guards/moved-nav-item-redirect.js.map +1 -0
  13. package/dist/lib/omnibar/omnibar-dashboard-matches.d.ts +34 -0
  14. package/dist/lib/omnibar/omnibar-dashboard-matches.d.ts.map +1 -0
  15. package/dist/lib/omnibar/omnibar-dashboard-matches.js +70 -0
  16. package/dist/lib/omnibar/omnibar-dashboard-matches.js.map +1 -0
  17. package/dist/lib/omnibar/omnibar-palette.component.d.ts +27 -2
  18. package/dist/lib/omnibar/omnibar-palette.component.d.ts.map +1 -1
  19. package/dist/lib/omnibar/omnibar-palette.component.js +126 -65
  20. package/dist/lib/omnibar/omnibar-palette.component.js.map +1 -1
  21. package/dist/lib/omnibar/omnibar-provider.d.ts +4 -0
  22. package/dist/lib/omnibar/omnibar-provider.d.ts.map +1 -1
  23. package/dist/lib/omnibar/omnibar-provider.js.map +1 -1
  24. package/dist/lib/omnibar/providers/omnibar-record.provider.d.ts +2 -2
  25. package/dist/lib/omnibar/providers/omnibar-record.provider.d.ts.map +1 -1
  26. package/dist/lib/omnibar/providers/omnibar-record.provider.js +3 -7
  27. package/dist/lib/omnibar/providers/omnibar-record.provider.js.map +1 -1
  28. package/dist/lib/omnibar/providers/omnibar-search.provider.d.ts +15 -2
  29. package/dist/lib/omnibar/providers/omnibar-search.provider.d.ts.map +1 -1
  30. package/dist/lib/omnibar/providers/omnibar-search.provider.js +59 -7
  31. package/dist/lib/omnibar/providers/omnibar-search.provider.js.map +1 -1
  32. package/dist/lib/profile/forking-setting.d.ts +8 -0
  33. package/dist/lib/profile/forking-setting.d.ts.map +1 -0
  34. package/dist/lib/profile/forking-setting.js +18 -0
  35. package/dist/lib/profile/forking-setting.js.map +1 -0
  36. package/dist/lib/profile/profile-dialog.component.d.ts +8 -0
  37. package/dist/lib/profile/profile-dialog.component.d.ts.map +1 -1
  38. package/dist/lib/profile/profile-dialog.component.js +182 -92
  39. package/dist/lib/profile/profile-dialog.component.js.map +1 -1
  40. package/dist/lib/resource-wrappers/artifact-resource.component.d.ts +23 -4
  41. package/dist/lib/resource-wrappers/artifact-resource.component.d.ts.map +1 -1
  42. package/dist/lib/resource-wrappers/artifact-resource.component.js +36 -8
  43. package/dist/lib/resource-wrappers/artifact-resource.component.js.map +1 -1
  44. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts +7 -18
  45. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts.map +1 -1
  46. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js +20 -41
  47. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js.map +1 -1
  48. package/dist/lib/resource-wrappers/chat-search-routing.d.ts +10 -3
  49. package/dist/lib/resource-wrappers/chat-search-routing.d.ts.map +1 -1
  50. package/dist/lib/resource-wrappers/chat-search-routing.js +11 -4
  51. package/dist/lib/resource-wrappers/chat-search-routing.js.map +1 -1
  52. package/dist/lib/resource-wrappers/dashboard-add-to-menu.component.d.ts +29 -0
  53. package/dist/lib/resource-wrappers/dashboard-add-to-menu.component.d.ts.map +1 -0
  54. package/dist/lib/resource-wrappers/dashboard-add-to-menu.component.js +141 -0
  55. package/dist/lib/resource-wrappers/dashboard-add-to-menu.component.js.map +1 -0
  56. package/dist/lib/resource-wrappers/dashboard-part-config.d.ts +28 -0
  57. package/dist/lib/resource-wrappers/dashboard-part-config.d.ts.map +1 -0
  58. package/dist/lib/resource-wrappers/dashboard-part-config.js +150 -0
  59. package/dist/lib/resource-wrappers/dashboard-part-config.js.map +1 -0
  60. package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts +361 -56
  61. package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts.map +1 -1
  62. package/dist/lib/resource-wrappers/dashboard-resource.component.js +1312 -361
  63. package/dist/lib/resource-wrappers/dashboard-resource.component.js.map +1 -1
  64. package/dist/lib/resource-wrappers/dashboard-source-search.d.ts +86 -0
  65. package/dist/lib/resource-wrappers/dashboard-source-search.d.ts.map +1 -0
  66. package/dist/lib/resource-wrappers/dashboard-source-search.js +136 -0
  67. package/dist/lib/resource-wrappers/dashboard-source-search.js.map +1 -0
  68. package/dist/lib/resource-wrappers/dashboard-studio-pane.d.ts +30 -0
  69. package/dist/lib/resource-wrappers/dashboard-studio-pane.d.ts.map +1 -0
  70. package/dist/lib/resource-wrappers/dashboard-studio-pane.js +55 -0
  71. package/dist/lib/resource-wrappers/dashboard-studio-pane.js.map +1 -0
  72. package/dist/lib/resource-wrappers/dashboard-studio-tools.d.ts +135 -0
  73. package/dist/lib/resource-wrappers/dashboard-studio-tools.d.ts.map +1 -0
  74. package/dist/lib/resource-wrappers/dashboard-studio-tools.js +856 -0
  75. package/dist/lib/resource-wrappers/dashboard-studio-tools.js.map +1 -0
  76. package/dist/lib/resource-wrappers/dashboard-tab-agent.d.ts +87 -0
  77. package/dist/lib/resource-wrappers/dashboard-tab-agent.d.ts.map +1 -0
  78. package/dist/lib/resource-wrappers/dashboard-tab-agent.js +125 -0
  79. package/dist/lib/resource-wrappers/dashboard-tab-agent.js.map +1 -0
  80. package/dist/lib/resource-wrappers/human-handoff-console-resource.component.d.ts +32 -0
  81. package/dist/lib/resource-wrappers/human-handoff-console-resource.component.d.ts.map +1 -0
  82. package/dist/lib/resource-wrappers/human-handoff-console-resource.component.js +114 -0
  83. package/dist/lib/resource-wrappers/human-handoff-console-resource.component.js.map +1 -0
  84. package/dist/lib/resource-wrappers/livekit-room-resource.component.d.ts +40 -6
  85. package/dist/lib/resource-wrappers/livekit-room-resource.component.d.ts.map +1 -1
  86. package/dist/lib/resource-wrappers/livekit-room-resource.component.js +287 -147
  87. package/dist/lib/resource-wrappers/livekit-room-resource.component.js.map +1 -1
  88. package/dist/lib/resource-wrappers/meetings-resource.component.d.ts +42 -0
  89. package/dist/lib/resource-wrappers/meetings-resource.component.d.ts.map +1 -0
  90. package/dist/lib/resource-wrappers/meetings-resource.component.js +225 -0
  91. package/dist/lib/resource-wrappers/meetings-resource.component.js.map +1 -0
  92. package/dist/lib/resource-wrappers/record-resource.component.d.ts +27 -2
  93. package/dist/lib/resource-wrappers/record-resource.component.d.ts.map +1 -1
  94. package/dist/lib/resource-wrappers/record-resource.component.js +58 -6
  95. package/dist/lib/resource-wrappers/record-resource.component.js.map +1 -1
  96. package/dist/lib/resource-wrappers/search-results-resource.component.d.ts.map +1 -1
  97. package/dist/lib/resource-wrappers/search-results-resource.component.js +5 -4
  98. package/dist/lib/resource-wrappers/search-results-resource.component.js.map +1 -1
  99. package/dist/lib/shell/components/tabs/component-cache-manager.d.ts.map +1 -1
  100. package/dist/lib/shell/components/tabs/component-cache-manager.js.map +1 -1
  101. package/dist/lib/shell/components/tabs/tab-container.component.d.ts +38 -0
  102. package/dist/lib/shell/components/tabs/tab-container.component.d.ts.map +1 -1
  103. package/dist/lib/shell/components/tabs/tab-container.component.js +77 -4
  104. package/dist/lib/shell/components/tabs/tab-container.component.js.map +1 -1
  105. package/dist/lib/shell/dashboard-tab-for-url.d.ts +35 -0
  106. package/dist/lib/shell/dashboard-tab-for-url.d.ts.map +1 -0
  107. package/dist/lib/shell/dashboard-tab-for-url.js +39 -0
  108. package/dist/lib/shell/dashboard-tab-for-url.js.map +1 -0
  109. package/dist/lib/shell/shell.component.d.ts +31 -2
  110. package/dist/lib/shell/shell.component.d.ts.map +1 -1
  111. package/dist/lib/shell/shell.component.js +119 -42
  112. package/dist/lib/shell/shell.component.js.map +1 -1
  113. package/dist/lib/shell/shell.module.d.ts +2 -1
  114. package/dist/lib/shell/shell.module.d.ts.map +1 -1
  115. package/dist/lib/shell/shell.module.js +6 -2
  116. package/dist/lib/shell/shell.module.js.map +1 -1
  117. package/dist/lib/single-dashboard/single-dashboard.component.js +1 -1
  118. package/dist/lib/single-dashboard/single-dashboard.component.js.map +1 -1
  119. package/dist/lib/single-record/single-record.component.d.ts +29 -3
  120. package/dist/lib/single-record/single-record.component.d.ts.map +1 -1
  121. package/dist/lib/single-record/single-record.component.js +44 -4
  122. package/dist/lib/single-record/single-record.component.js.map +1 -1
  123. package/dist/lib/template-user/template-user-banner.component.d.ts +20 -0
  124. package/dist/lib/template-user/template-user-banner.component.d.ts.map +1 -0
  125. package/dist/lib/template-user/template-user-banner.component.js +67 -0
  126. package/dist/lib/template-user/template-user-banner.component.js.map +1 -0
  127. package/dist/lib/user-notifications/user-notifications.component.d.ts +13 -0
  128. package/dist/lib/user-notifications/user-notifications.component.d.ts.map +1 -1
  129. package/dist/lib/user-notifications/user-notifications.component.js +67 -0
  130. package/dist/lib/user-notifications/user-notifications.component.js.map +1 -1
  131. package/dist/module.d.ts +61 -56
  132. package/dist/module.d.ts.map +1 -1
  133. package/dist/module.js +32 -4
  134. package/dist/module.js.map +1 -1
  135. package/dist/public-api.d.ts +2 -0
  136. package/dist/public-api.d.ts.map +1 -1
  137. package/dist/public-api.js +2 -0
  138. package/dist/public-api.js.map +1 -1
  139. package/package.json +58 -52
@@ -0,0 +1,34 @@
1
+ import type { MJDashboardEntity } from '@memberjunction/core-entities';
2
+ /** The dashboard fields the palette matches on and shows. */
3
+ export interface DashboardMatchLike {
4
+ ID: string;
5
+ Name: string;
6
+ Description: string | null;
7
+ Category: string | null;
8
+ User: string;
9
+ }
10
+ /**
11
+ * True when the dashboard tab can render the dashboard: a Config dashboard, or a Code
12
+ * dashboard that names its driver class. 'Dynamic Code' dashboards have no renderer.
13
+ */
14
+ export declare function CanOpenInDashboardTab(dashboard: Pick<MJDashboardEntity, 'Type' | 'DriverClass'>): boolean;
15
+ /**
16
+ * Dashboards whose name, description or category contains the query, case-insensitively.
17
+ * An exact name ranks first, then a name that starts with the query, then a name that
18
+ * contains it, then a description or category hit. Ties keep the input order.
19
+ * Returns at most `max` dashboards.
20
+ */
21
+ export declare function MatchDashboards<T extends DashboardMatchLike>(dashboards: ReadonlyArray<T>, query: string, max: number): T[];
22
+ /** Dashboard matches split by what matched the query. */
23
+ export interface DashboardMatchSplit<T> {
24
+ /** Exact, prefix and contains name matches, best first. */
25
+ NameMatches: T[];
26
+ /** Dashboards whose description or category matches but whose name does not, in input order. */
27
+ DescriptionOrCategoryMatches: T[];
28
+ }
29
+ /**
30
+ * The dashboards of {@link MatchDashboards}, split into name matches and matches on the
31
+ * description or category only. The two lists share the `max` cap, and name matches fill it first.
32
+ */
33
+ export declare function SplitDashboardMatches<T extends DashboardMatchLike>(dashboards: ReadonlyArray<T>, query: string, max: number): DashboardMatchSplit<T>;
34
+ //# sourceMappingURL=omnibar-dashboard-matches.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omnibar-dashboard-matches.d.ts","sourceRoot":"","sources":["../../../src/lib/omnibar/omnibar-dashboard-matches.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,6DAA6D;AAC7D,MAAM,WAAW,kBAAkB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,aAAa,CAAC,GAAG,OAAO,CASzG;AAWD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,kBAAkB,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,CAW3H;AAED,yDAAyD;AACzD,MAAM,WAAW,mBAAmB,CAAC,CAAC;IAClC,2DAA2D;IAC3D,WAAW,EAAE,CAAC,EAAE,CAAC;IACjB,gGAAgG;IAChG,4BAA4B,EAAE,CAAC,EAAE,CAAC;CACrC;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,kBAAkB,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAQpJ"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * True when the dashboard tab can render the dashboard: a Config dashboard, or a Code
3
+ * dashboard that names its driver class. 'Dynamic Code' dashboards have no renderer.
4
+ */
5
+ export function CanOpenInDashboardTab(dashboard) {
6
+ switch (dashboard.Type) {
7
+ case 'Config':
8
+ return true;
9
+ case 'Code':
10
+ return !!dashboard.DriverClass;
11
+ default:
12
+ return false;
13
+ }
14
+ }
15
+ /** How well a dashboard matches the query. A higher rank lists first. */
16
+ const MatchRank = {
17
+ ExactName: 4,
18
+ NamePrefix: 3,
19
+ NameContains: 2,
20
+ DescriptionOrCategory: 1,
21
+ None: 0,
22
+ };
23
+ /**
24
+ * Dashboards whose name, description or category contains the query, case-insensitively.
25
+ * An exact name ranks first, then a name that starts with the query, then a name that
26
+ * contains it, then a description or category hit. Ties keep the input order.
27
+ * Returns at most `max` dashboards.
28
+ */
29
+ export function MatchDashboards(dashboards, query, max) {
30
+ const q = query.trim().toLowerCase();
31
+ if (!q) {
32
+ return [];
33
+ }
34
+ return dashboards
35
+ .map((d, i) => ({ d, rank: matchRank(d, q), i }))
36
+ .filter((x) => x.rank > MatchRank.None)
37
+ .sort((a, b) => b.rank - a.rank || a.i - b.i)
38
+ .slice(0, max)
39
+ .map((x) => x.d);
40
+ }
41
+ /**
42
+ * The dashboards of {@link MatchDashboards}, split into name matches and matches on the
43
+ * description or category only. The two lists share the `max` cap, and name matches fill it first.
44
+ */
45
+ export function SplitDashboardMatches(dashboards, query, max) {
46
+ const q = query.trim().toLowerCase();
47
+ const isNameMatch = (dashboard) => matchRank(dashboard, q) > MatchRank.DescriptionOrCategory;
48
+ const matches = MatchDashboards(dashboards, query, max);
49
+ return {
50
+ NameMatches: matches.filter(isNameMatch),
51
+ DescriptionOrCategoryMatches: matches.filter((dashboard) => !isNameMatch(dashboard)),
52
+ };
53
+ }
54
+ /** The rank of one dashboard for a trimmed, lower-case query. */
55
+ function matchRank(dashboard, q) {
56
+ const name = dashboard.Name.trim().toLowerCase();
57
+ if (name === q) {
58
+ return MatchRank.ExactName;
59
+ }
60
+ if (name.startsWith(q)) {
61
+ return MatchRank.NamePrefix;
62
+ }
63
+ if (name.includes(q)) {
64
+ return MatchRank.NameContains;
65
+ }
66
+ const description = (dashboard.Description || '').toLowerCase();
67
+ const category = (dashboard.Category || '').toLowerCase();
68
+ return description.includes(q) || category.includes(q) ? MatchRank.DescriptionOrCategory : MatchRank.None;
69
+ }
70
+ //# sourceMappingURL=omnibar-dashboard-matches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omnibar-dashboard-matches.js","sourceRoot":"","sources":["../../../src/lib/omnibar/omnibar-dashboard-matches.ts"],"names":[],"mappings":"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","sourcesContent":["import type { MJDashboardEntity } from '@memberjunction/core-entities';\n\n/** The dashboard fields the palette matches on and shows. */\nexport interface DashboardMatchLike {\n ID: string;\n Name: string;\n Description: string | null;\n Category: string | null;\n User: string;\n}\n\n/**\n * True when the dashboard tab can render the dashboard: a Config dashboard, or a Code\n * dashboard that names its driver class. 'Dynamic Code' dashboards have no renderer.\n */\nexport function CanOpenInDashboardTab(dashboard: Pick<MJDashboardEntity, 'Type' | 'DriverClass'>): boolean {\n switch (dashboard.Type) {\n case 'Config':\n return true;\n case 'Code':\n return !!dashboard.DriverClass;\n default:\n return false;\n }\n}\n\n/** How well a dashboard matches the query. A higher rank lists first. */\nconst MatchRank = {\n ExactName: 4,\n NamePrefix: 3,\n NameContains: 2,\n DescriptionOrCategory: 1,\n None: 0,\n} as const;\n\n/**\n * Dashboards whose name, description or category contains the query, case-insensitively.\n * An exact name ranks first, then a name that starts with the query, then a name that\n * contains it, then a description or category hit. Ties keep the input order.\n * Returns at most `max` dashboards.\n */\nexport function MatchDashboards<T extends DashboardMatchLike>(dashboards: ReadonlyArray<T>, query: string, max: number): T[] {\n const q = query.trim().toLowerCase();\n if (!q) {\n return [];\n }\n return dashboards\n .map((d, i) => ({ d, rank: matchRank(d, q), i }))\n .filter((x) => x.rank > MatchRank.None)\n .sort((a, b) => b.rank - a.rank || a.i - b.i)\n .slice(0, max)\n .map((x) => x.d);\n}\n\n/** Dashboard matches split by what matched the query. */\nexport interface DashboardMatchSplit<T> {\n /** Exact, prefix and contains name matches, best first. */\n NameMatches: T[];\n /** Dashboards whose description or category matches but whose name does not, in input order. */\n DescriptionOrCategoryMatches: T[];\n}\n\n/**\n * The dashboards of {@link MatchDashboards}, split into name matches and matches on the\n * description or category only. The two lists share the `max` cap, and name matches fill it first.\n */\nexport function SplitDashboardMatches<T extends DashboardMatchLike>(dashboards: ReadonlyArray<T>, query: string, max: number): DashboardMatchSplit<T> {\n const q = query.trim().toLowerCase();\n const isNameMatch = (dashboard: T): boolean => matchRank(dashboard, q) > MatchRank.DescriptionOrCategory;\n const matches = MatchDashboards(dashboards, query, max);\n return {\n NameMatches: matches.filter(isNameMatch),\n DescriptionOrCategoryMatches: matches.filter((dashboard) => !isNameMatch(dashboard)),\n };\n}\n\n/** The rank of one dashboard for a trimmed, lower-case query. */\nfunction matchRank(dashboard: DashboardMatchLike, q: string): number {\n const name = dashboard.Name.trim().toLowerCase();\n if (name === q) {\n return MatchRank.ExactName;\n }\n if (name.startsWith(q)) {\n return MatchRank.NamePrefix;\n }\n if (name.includes(q)) {\n return MatchRank.NameContains;\n }\n const description = (dashboard.Description || '').toLowerCase();\n const category = (dashboard.Category || '').toLowerCase();\n return description.includes(q) || category.includes(q) ? MatchRank.DescriptionOrCategory : MatchRank.None;\n}\n"]}
@@ -5,7 +5,11 @@ import * as i0 from "@angular/core";
5
5
  /** One rendered result row: the suggestion + presentation extras. */
6
6
  interface OmnibarRow {
7
7
  Suggestion: MentionSuggestion;
8
- /** Set only on the FIRST row of each group — drives the section header. */
8
+ /**
9
+ * Section header before this row, set where the group changes: the group name, '' for the
10
+ * empty spacer before an ungrouped row that follows a group (the "see all" row), or null
11
+ * for no header. A group that comes back after another group gets its header again.
12
+ */
9
13
  GroupLabel: string | null;
10
14
  /** 0-100 relevance bar (search mode only). */
11
15
  ScorePercent: number | null;
@@ -47,6 +51,8 @@ export declare class OmnibarPaletteComponent implements OnDestroy {
47
51
  private defaultProvider;
48
52
  private byTrigger;
49
53
  private queryGeneration;
54
+ /** Trigger char of the provider that produced the current {@link Rows}. */
55
+ private renderedTriggerChar;
50
56
  private debounceHandle;
51
57
  /** Element focused before the palette opened — restored on close (a11y). */
52
58
  private previousFocus;
@@ -69,7 +75,20 @@ export declare class OmnibarPaletteComponent implements OnDestroy {
69
75
  /** RecentRows render after the hint bar; selection indexes continue into them. */
70
76
  get RecentBaseIndex(): number;
71
77
  private get activeProvider();
78
+ /**
79
+ * Rows that keyboard selection may target: only rendered rows. {@link RecentRows}
80
+ * render only in the empty-query state, so they are selectable only then.
81
+ */
72
82
  private get selectableRows();
83
+ /**
84
+ * Whether <kbd>Enter</kbd> on a palette with no rows may open the full Search Results
85
+ * workspace for the typed text. Drives both the key handler and the empty-state wording.
86
+ *
87
+ * Default mode always allows it, because full search is that mode's own action. A trigger
88
+ * mode allows it only after its fetch settles, because there full search is a different
89
+ * action from what the rows offer (switch app, open record).
90
+ */
91
+ get CanEscapeToFullSearch(): boolean;
73
92
  /**
74
93
  * ARIA combobox wiring: the input keeps DOM focus while this points at the
75
94
  * virtually-highlighted option row, so screen readers announce selection moves.
@@ -108,7 +127,13 @@ export declare class OmnibarPaletteComponent implements OnDestroy {
108
127
  IsScopeSelected(id: string): boolean;
109
128
  ToggleScope(id: string): void;
110
129
  ClearScopes(): void;
111
- /** Executes a suggestion: navigate per its payload, or re-seed for entity drill-in. */
130
+ /**
131
+ * Executes a suggestion: navigate per its payload, or re-seed for entity drill-in.
132
+ *
133
+ * Not blocked while a fetch is pending: every activation path targets a rendered row,
134
+ * because {@link selectableRows} offers only rendered rows and a mode change clears
135
+ * {@link Rows}.
136
+ */
112
137
  Execute(suggestion: MentionSuggestion): void;
113
138
  private openFullSearch;
114
139
  /** '@' selection: switch to the Chat app pre-addressed to the agent. */
@@ -1 +1 @@
1
- {"version":3,"file":"omnibar-palette.component.d.ts","sourceRoot":"","sources":["../../../src/lib/omnibar/omnibar-palette.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"omnibar-palette.component.d.ts","sourceRoot":"","sources":["../../../src/lib/omnibar/omnibar-palette.component.ts"],"names":[],"mappings":"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"}