Add flag to opt out from sub url tracking (#55672)
* introduce flag for disabling sub url tracking * re-generate documentation and extend ui_app * fix ui_nav_link test Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
This commit is contained in:
parent
24a6eb2cde
commit
8c2980213e
|
@ -0,0 +1,17 @@
|
|||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [ChromeNavLink](./kibana-plugin-public.chromenavlink.md) > [disableSubUrlTracking](./kibana-plugin-public.chromenavlink.disablesuburltracking.md)
|
||||
|
||||
## ChromeNavLink.disableSubUrlTracking property
|
||||
|
||||
> Warning: This API is now obsolete.
|
||||
>
|
||||
>
|
||||
|
||||
A flag that tells legacy chrome to ignore the link when tracking sub-urls
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
readonly disableSubUrlTracking?: boolean;
|
||||
```
|
|
@ -1,32 +1,33 @@
|
|||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [ChromeNavLink](./kibana-plugin-public.chromenavlink.md)
|
||||
|
||||
## ChromeNavLink interface
|
||||
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
export interface ChromeNavLink
|
||||
```
|
||||
|
||||
## Properties
|
||||
|
||||
| Property | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| [active](./kibana-plugin-public.chromenavlink.active.md) | <code>boolean</code> | Indicates whether or not this app is currently on the screen. |
|
||||
| [baseUrl](./kibana-plugin-public.chromenavlink.baseurl.md) | <code>string</code> | The base route used to open the root of an application. |
|
||||
| [category](./kibana-plugin-public.chromenavlink.category.md) | <code>AppCategory</code> | The category the app lives in |
|
||||
| [disabled](./kibana-plugin-public.chromenavlink.disabled.md) | <code>boolean</code> | Disables a link from being clickable. |
|
||||
| [euiIconType](./kibana-plugin-public.chromenavlink.euiicontype.md) | <code>string</code> | A EUI iconType that will be used for the app's icon. This icon takes precendence over the <code>icon</code> property. |
|
||||
| [hidden](./kibana-plugin-public.chromenavlink.hidden.md) | <code>boolean</code> | Hides a link from the navigation. |
|
||||
| [icon](./kibana-plugin-public.chromenavlink.icon.md) | <code>string</code> | A URL to an image file used as an icon. Used as a fallback if <code>euiIconType</code> is not provided. |
|
||||
| [id](./kibana-plugin-public.chromenavlink.id.md) | <code>string</code> | A unique identifier for looking up links. |
|
||||
| [linkToLastSubUrl](./kibana-plugin-public.chromenavlink.linktolastsuburl.md) | <code>boolean</code> | Whether or not the subUrl feature should be enabled. |
|
||||
| [order](./kibana-plugin-public.chromenavlink.order.md) | <code>number</code> | An ordinal used to sort nav links relative to one another for display. |
|
||||
| [subUrlBase](./kibana-plugin-public.chromenavlink.suburlbase.md) | <code>string</code> | A url base that legacy apps can set to match deep URLs to an application. |
|
||||
| [title](./kibana-plugin-public.chromenavlink.title.md) | <code>string</code> | The title of the application. |
|
||||
| [tooltip](./kibana-plugin-public.chromenavlink.tooltip.md) | <code>string</code> | A tooltip shown when hovering over an app link. |
|
||||
| [url](./kibana-plugin-public.chromenavlink.url.md) | <code>string</code> | A url that legacy apps can set to deep link into their applications. |
|
||||
|
||||
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
||||
|
||||
[Home](./index.md) > [kibana-plugin-public](./kibana-plugin-public.md) > [ChromeNavLink](./kibana-plugin-public.chromenavlink.md)
|
||||
|
||||
## ChromeNavLink interface
|
||||
|
||||
|
||||
<b>Signature:</b>
|
||||
|
||||
```typescript
|
||||
export interface ChromeNavLink
|
||||
```
|
||||
|
||||
## Properties
|
||||
|
||||
| Property | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| [active](./kibana-plugin-public.chromenavlink.active.md) | <code>boolean</code> | Indicates whether or not this app is currently on the screen. |
|
||||
| [baseUrl](./kibana-plugin-public.chromenavlink.baseurl.md) | <code>string</code> | The base route used to open the root of an application. |
|
||||
| [category](./kibana-plugin-public.chromenavlink.category.md) | <code>AppCategory</code> | The category the app lives in |
|
||||
| [disabled](./kibana-plugin-public.chromenavlink.disabled.md) | <code>boolean</code> | Disables a link from being clickable. |
|
||||
| [disableSubUrlTracking](./kibana-plugin-public.chromenavlink.disablesuburltracking.md) | <code>boolean</code> | A flag that tells legacy chrome to ignore the link when tracking sub-urls |
|
||||
| [euiIconType](./kibana-plugin-public.chromenavlink.euiicontype.md) | <code>string</code> | A EUI iconType that will be used for the app's icon. This icon takes precendence over the <code>icon</code> property. |
|
||||
| [hidden](./kibana-plugin-public.chromenavlink.hidden.md) | <code>boolean</code> | Hides a link from the navigation. |
|
||||
| [icon](./kibana-plugin-public.chromenavlink.icon.md) | <code>string</code> | A URL to an image file used as an icon. Used as a fallback if <code>euiIconType</code> is not provided. |
|
||||
| [id](./kibana-plugin-public.chromenavlink.id.md) | <code>string</code> | A unique identifier for looking up links. |
|
||||
| [linkToLastSubUrl](./kibana-plugin-public.chromenavlink.linktolastsuburl.md) | <code>boolean</code> | Whether or not the subUrl feature should be enabled. |
|
||||
| [order](./kibana-plugin-public.chromenavlink.order.md) | <code>number</code> | An ordinal used to sort nav links relative to one another for display. |
|
||||
| [subUrlBase](./kibana-plugin-public.chromenavlink.suburlbase.md) | <code>string</code> | A url base that legacy apps can set to match deep URLs to an application. |
|
||||
| [title](./kibana-plugin-public.chromenavlink.title.md) | <code>string</code> | The title of the application. |
|
||||
| [tooltip](./kibana-plugin-public.chromenavlink.tooltip.md) | <code>string</code> | A tooltip shown when hovering over an app link. |
|
||||
| [url](./kibana-plugin-public.chromenavlink.url.md) | <code>string</code> | A url that legacy apps can set to deep link into their applications. |
|
||||
|
||||
|
|
|
@ -229,6 +229,7 @@ export interface LegacyApp extends AppBase {
|
|||
appUrl: string;
|
||||
subUrlBase?: string;
|
||||
linkToLastSubUrl?: boolean;
|
||||
disableSubUrlTracking?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -78,6 +78,17 @@ export interface ChromeNavLink {
|
|||
*/
|
||||
readonly subUrlBase?: string;
|
||||
|
||||
/**
|
||||
* A flag that tells legacy chrome to ignore the link when
|
||||
* tracking sub-urls
|
||||
*
|
||||
* @internalRemarks
|
||||
* This should be removed once legacy apps are gone.
|
||||
*
|
||||
* @deprecated
|
||||
*/
|
||||
readonly disableSubUrlTracking?: boolean;
|
||||
|
||||
/**
|
||||
* Whether or not the subUrl feature should be enabled.
|
||||
*
|
||||
|
|
|
@ -75,6 +75,7 @@ export class LegacyPlatformService {
|
|||
subUrlBase: navLink.subUrlBase,
|
||||
linkToLastSubUrl: navLink.linkToLastSubUrl,
|
||||
category: navLink.category,
|
||||
disableSubUrlTracking: navLink.disableSubUrlTracking,
|
||||
})
|
||||
);
|
||||
|
||||
|
|
|
@ -264,6 +264,8 @@ export interface ChromeNavLink {
|
|||
readonly category?: AppCategory;
|
||||
// @deprecated
|
||||
readonly disabled?: boolean;
|
||||
// @deprecated
|
||||
readonly disableSubUrlTracking?: boolean;
|
||||
readonly euiIconType?: string;
|
||||
readonly hidden?: boolean;
|
||||
readonly icon?: string;
|
||||
|
|
|
@ -85,6 +85,7 @@ function getNavLinks(uiExports: LegacyUiExports, pluginSpecs: LegacyPluginSpec[]
|
|||
order: typeof spec.order === 'number' ? spec.order : 0,
|
||||
url: spec.url,
|
||||
subUrlBase: spec.subUrlBase || spec.url,
|
||||
disableSubUrlTracking: spec.disableSubUrlTracking,
|
||||
icon: spec.icon,
|
||||
euiIconType: spec.euiIconType,
|
||||
linkToLastSub: 'linkToLastSubUrl' in spec ? spec.linkToLastSubUrl : false,
|
||||
|
|
|
@ -78,7 +78,7 @@ export function initChromeNavApi(chrome: any, internals: NavInternals) {
|
|||
coreNavLinks
|
||||
.getAll()
|
||||
// Filter only legacy links
|
||||
.filter(link => link.legacy)
|
||||
.filter(link => link.legacy && !link.disableSubUrlTracking)
|
||||
.forEach(link => {
|
||||
const active = url.startsWith(link.subUrlBase!);
|
||||
link = coreNavLinks.update(link.id, { active })!;
|
||||
|
|
|
@ -31,6 +31,7 @@ export class UiApp {
|
|||
euiIconType,
|
||||
hidden,
|
||||
linkToLastSubUrl,
|
||||
disableSubUrlTracking,
|
||||
listed,
|
||||
category,
|
||||
url = `/app/${id}`,
|
||||
|
@ -47,6 +48,7 @@ export class UiApp {
|
|||
this._icon = icon;
|
||||
this._euiIconType = euiIconType;
|
||||
this._linkToLastSubUrl = linkToLastSubUrl;
|
||||
this._disableSubUrlTracking = disableSubUrlTracking;
|
||||
this._category = category;
|
||||
this._hidden = hidden;
|
||||
this._listed = listed;
|
||||
|
@ -70,6 +72,7 @@ export class UiApp {
|
|||
euiIconType: this._euiIconType,
|
||||
url: this._url,
|
||||
linkToLastSubUrl: this._linkToLastSubUrl,
|
||||
disableSubUrlTracking: this._disableSubUrlTracking,
|
||||
category: this._category,
|
||||
});
|
||||
}
|
||||
|
@ -118,6 +121,7 @@ export class UiApp {
|
|||
main: this._main,
|
||||
navLink: this._navLink,
|
||||
linkToLastSubUrl: this._linkToLastSubUrl,
|
||||
disableSubUrlTracking: this._disableSubUrlTracking,
|
||||
category: this._category,
|
||||
};
|
||||
}
|
||||
|
|
|
@ -49,6 +49,7 @@ describe('UiNavLink', () => {
|
|||
|
||||
// defaults
|
||||
linkToLastSubUrl: true,
|
||||
disableSubUrlTracking: undefined,
|
||||
tooltip: '',
|
||||
});
|
||||
});
|
||||
|
|
|
@ -25,6 +25,7 @@ export class UiNavLink {
|
|||
order = 0,
|
||||
url,
|
||||
subUrlBase,
|
||||
disableSubUrlTracking,
|
||||
icon,
|
||||
euiIconType,
|
||||
linkToLastSubUrl = true,
|
||||
|
@ -39,6 +40,7 @@ export class UiNavLink {
|
|||
this._order = order;
|
||||
this._url = url;
|
||||
this._subUrlBase = subUrlBase || url;
|
||||
this._disableSubUrlTracking = disableSubUrlTracking;
|
||||
this._icon = icon;
|
||||
this._euiIconType = euiIconType;
|
||||
this._linkToLastSubUrl = linkToLastSubUrl;
|
||||
|
@ -62,6 +64,7 @@ export class UiNavLink {
|
|||
icon: this._icon,
|
||||
euiIconType: this._euiIconType,
|
||||
linkToLastSubUrl: this._linkToLastSubUrl,
|
||||
disableSubUrlTracking: this._disableSubUrlTracking,
|
||||
hidden: this._hidden,
|
||||
disabled: this._disabled,
|
||||
tooltip: this._tooltip,
|
||||
|
|
Loading…
Reference in a new issue