From bdf330e620949579a199cda4c0adeda17c1d1144 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Mon, 3 Apr 2023 16:42:56 +0200 Subject: [PATCH 01/52] register :query as param --- .../logviewer-root-workspace.element.ts | 13 ++++--------- .../logviewer/workspace/logviewer-root/manifests.ts | 2 +- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts index 46382e5690..85e9f66a5d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts @@ -2,14 +2,13 @@ import './components'; import { map } from 'rxjs'; import { css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { IRoutingInfo } from 'router-slot'; import { UUITextStyles } from '@umbraco-ui/uui-css'; import { repeat } from 'lit/directives/repeat.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../logviewer.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { umbExtensionsRegistry, createExtensionElement } from '@umbraco-cms/backoffice/extensions-api'; import { ManifestWorkspaceView, ManifestWorkspaceViewCollection } from '@umbraco-cms/backoffice/extensions-registry'; -import { UmbRouterSlotInitEvent, UmbRouterSlotChangeEvent } from '@umbraco-cms/internal/router'; +import type { UmbRouterSlotInitEvent, UmbRouterSlotChangeEvent } from '@umbraco-cms/internal/router'; //TODO make uui-input accept min and max values @customElement('umb-logviewer-workspace') @@ -104,13 +103,9 @@ export class UmbLogViewerWorkspaceElement extends UmbLitElement { component: () => { return createExtensionElement(view); }, - setup: (component: Promise | HTMLElement, info: IRoutingInfo) => { + setup: (component: Promise) => { // When its using import, we get an element, when using createExtensionElement we get a Promise. - if ((component as any).then) { - (component as any).then((el: any) => (el.manifest = view)); - } else { - (component as any).manifest = view; - } + component.then((el: any) => (el.manifest = view)); }, }; }); @@ -151,7 +146,7 @@ export class UmbLogViewerWorkspaceElement extends UmbLitElement { (view) => html` ${view.meta.label || view.name} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts index 1d6ee72173..79727af96e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts @@ -40,7 +40,7 @@ const workspaceViews: Array = [ weight: 200, meta: { label: 'Search', - pathname: 'search', + pathname: 'search/:query', icon: 'umb:search', }, conditions: { From 1e05193f4147338fea175f46ece29086250daade Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Mon, 3 Apr 2023 16:43:21 +0200 Subject: [PATCH 02/52] fix links to link to new /workspace/ page including :query --- ...ewer-message-templates-overview.element.ts | 24 +++++++---------- ...-viewer-saved-searches-overview.element.ts | 26 +++++-------------- 2 files changed, 15 insertions(+), 35 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts index d96280149b..d2c29aafcb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts @@ -66,14 +66,11 @@ export class UmbLogViewerMessageTemplatesOverviewElement extends UmbLitElement { #renderSearchItem = (searchListItem: SavedLogSearchResponseModel) => { return html`
  • { - this.#setCurrentQuery(searchListItem.query ?? ''); - }} label="${searchListItem.name ?? ''}" title="${searchListItem.name ?? ''}" - href=${'/section/settings/logviewer/search?lq=' + searchListItem.query} - >${searchListItem.name} + href=${`section/settings/workspace/logviewer/search/${searchListItem.query}`}> + ${searchListItem.name} +
  • `; }; @@ -90,13 +87,10 @@ export class UmbLogViewerMessageTemplatesOverviewElement extends UmbLitElement { ${this._messageTemplates ? this._messageTemplates.items.map( (template) => - html` + html` + { - this.#setCurrentQuery(`@MessageTemplate='${template.messageTemplate}'` ?? ''); - }} - href=${'/section/settings/logviewer/search?lg=@MessageTemplate%3D' + template.messageTemplate}> + href=${`section/settings/workspace/logviewer/search/@MessageTemplate='${template.messageTemplate}'`}> ${template.messageTemplate} ${template.count} @@ -109,9 +103,9 @@ export class UmbLogViewerMessageTemplatesOverviewElement extends UmbLitElement { id="show-more-templates-btn" look="primary" @click=${this.#getMessageTemplates} - label="Show more templates" - >Show more + label="Show more templates"> + Show more + `; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts index 761f06c97b..b69c630d22 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts @@ -40,6 +40,7 @@ export class UmbLogViewerSavedSearchesOverviewElement extends UmbLitElement { private _savedSearches: SavedLogSearchResponseModel[] = []; #logViewerContext?: UmbLogViewerWorkspaceContext; + constructor() { super(); this.consumeContext(UMB_APP_LOG_VIEWER_CONTEXT_TOKEN, (instance) => { @@ -56,39 +57,24 @@ export class UmbLogViewerSavedSearchesOverviewElement extends UmbLitElement { }); } - #setCurrentQuery(query: string) { - this.#logViewerContext?.setFilterExpression(query); - } - #renderSearchItem = (searchListItem: SavedLogSearchResponseModel) => { return html`
  • { - this.#setCurrentQuery(searchListItem.query ?? ''); + //this.#setCurrentQuery(searchListItem.query ?? ''); }} label="${searchListItem.name ?? ''}" title="${searchListItem.name ?? ''}" - href=${'/section/settings/logviewer/search?lq=' + searchListItem.query} - >${searchListItem.name} + href=${`section/settings/workspace/logviewer/search/${searchListItem.query}`}> + ${searchListItem.name} +
  • `; }; render() { return html`
      -
    • - { - this.#setCurrentQuery(''); - }} - label="All logs" - title="All logs" - href="/section/settings/logviewer/search" - >All logs -
    • - ${this._savedSearches.map(this.#renderSearchItem)} + ${this.#renderSearchItem({ name: 'All logs', query: '*' })} ${this._savedSearches.map(this.#renderSearchItem)}
    `; } From 56d92458064f383ca7bf63ac932a76533d592365 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Mon, 3 Apr 2023 16:43:32 +0200 Subject: [PATCH 03/52] cleanup context --- .../settings/logviewer/workspace/logviewer.context.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts index 22a4eeaeeb..efd5772889 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts @@ -122,7 +122,7 @@ export class UmbLogViewerWorkspaceContext { if (data) { this.#savedSearches.next(data); } else { - //falback to some default searches like in the old backoffice + //falback to some default searches resembling Umbraco <= 12 this.#savedSearches.next({ items: [ { @@ -180,14 +180,12 @@ export class UmbLogViewerWorkspaceContext { } async validateLogSize() { - const { data, error } = await this.#repository.getLogViewerValidateLogsSize({ ...this.#dateRange.getValue() }); + const { error } = await this.#repository.getLogViewerValidateLogsSize({ ...this.#dateRange.getValue() }); if (error) { this.#canShowLogs.next(false); - console.info('LogViewer: ', error); return; } this.#canShowLogs.next(true); - console.info('LogViewer:showinfg logs'); } setCurrentPage(page: number) { From d769c844e8cd7173d46c90457c9f9953c61f5f94 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Mon, 3 Apr 2023 16:43:48 +0200 Subject: [PATCH 04/52] listen for :query param and set filter expression --- .../views/search/log-search-view.element.ts | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/log-search-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/log-search-view.element.ts index d936195362..f6fa079bff 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/log-search-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/log-search-view.element.ts @@ -3,6 +3,8 @@ import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../logviewer.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import type { UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; +import { queryParentRouterSlot } from '@umbraco-cms/internal/router'; @customElement('umb-log-viewer-search-view') export class UmbLogViewerSearchViewElement extends UmbLitElement { @@ -40,10 +42,17 @@ export class UmbLogViewerSearchViewElement extends UmbLitElement { `, ]; + private get params() { + return queryParentRouterSlot(this)!.match!.params; + } + @state() private _canShowLogs = false; #logViewerContext?: UmbLogViewerWorkspaceContext; + + #canShowLogsObserver?: UmbObserverController; + constructor() { super(); this.consumeContext(UMB_APP_LOG_VIEWER_CONTEXT_TOKEN, (instance) => { @@ -52,9 +61,20 @@ export class UmbLogViewerSearchViewElement extends UmbLitElement { }); } + connectedCallback(): void { + super.connectedCallback(); + + if (this.params.query) { + const searchQuery = decodeURIComponent(this.params.query); + this.#logViewerContext?.setFilterExpression(searchQuery); + } + } + #observeCanShowLogs() { + if (this.#canShowLogsObserver) this.#canShowLogsObserver.destroy(); if (!this.#logViewerContext) return; - this.observe(this.#logViewerContext.canShowLogs, (canShowLogs) => { + + this.#canShowLogsObserver = this.observe(this.#logViewerContext.canShowLogs, (canShowLogs) => { this._canShowLogs = canShowLogs ?? false; }); } From 81d4d0c43105e7cca183122f23561ecdb12be78e Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Mon, 3 Apr 2023 16:43:58 +0200 Subject: [PATCH 05/52] fix import from lodash --- .../components/log-viewer-log-level-filter-menu.element.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts index 78c554931e..3877b02719 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts @@ -2,7 +2,7 @@ import { UUICheckboxElement } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, queryAll, state } from 'lit/decorators.js'; -import _ from 'lodash'; +import { debounce } from 'lodash-es'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; import { LogLevelModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -67,7 +67,7 @@ export class UmbLogViewerLogLevelFilterMenuElement extends UmbLitElement { this.#logViewerContext.getLogs(); } - setLogLevelDebounce = _.debounce(this.#setLogLevel, 300); + setLogLevelDebounce = debounce(this.#setLogLevel, 300); #selectAllLogLevels() { this._logLevelSelectorCheckboxes.forEach((checkbox) => (checkbox.checked = true)); @@ -81,7 +81,7 @@ export class UmbLogViewerLogLevelFilterMenuElement extends UmbLitElement { #renderLogLevelSelector() { return html` -
    +
    this.setLogLevelDebounce()}> ${Object.values(LogLevelModel).map( (logLevel) => html` Date: Mon, 3 Apr 2023 16:44:11 +0200 Subject: [PATCH 06/52] use :query for message templates --- .../search/components/log-viewer-message.element.ts | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts index 6669964aa3..92154cf5f7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts @@ -219,10 +219,7 @@ export class UmbLogViewerMessageElement extends UmbLitElement { queryString = name + '=' + value; } - this.#logViewerContext?.setFilterExpression(queryString); - this.#logViewerContext?.setCurrentPage(1); - this.details.removeAttribute('open'); - this.#logViewerContext?.getLogs(); + return queryString; } #setOpen(event: Event) { @@ -259,14 +256,12 @@ export class UmbLogViewerMessageElement extends UmbLitElement { ${this._propertiesWithSearchMenu.includes(property.name ?? '') ? html` { - this._findLogsWithProperty(property); - }} look="secondary" label="Find logs with ${property.name}" title="Find logs with ${property.name}" - >` + href=${`section/settings/workspace/logviewer/search/${this._findLogsWithProperty(property)}`}> + + ` : ''}
    ` From 98e2d626c03677fc9548471e43f61a37517280b8 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Tue, 4 Apr 2023 09:05:47 +0200 Subject: [PATCH 07/52] cleanup --- .../logviewer-root/logviewer-root-workspace.element.ts | 1 - .../components/log-viewer-saved-searches-overview.element.ts | 3 --- 2 files changed, 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts index 85e9f66a5d..7cacaca5ba 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts @@ -104,7 +104,6 @@ export class UmbLogViewerWorkspaceElement extends UmbLitElement { return createExtensionElement(view); }, setup: (component: Promise) => { - // When its using import, we get an element, when using createExtensionElement we get a Promise. component.then((el: any) => (el.manifest = view)); }, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts index b69c630d22..f36787489f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts @@ -60,9 +60,6 @@ export class UmbLogViewerSavedSearchesOverviewElement extends UmbLitElement { #renderSearchItem = (searchListItem: SavedLogSearchResponseModel) => { return html`
  • { - //this.#setCurrentQuery(searchListItem.query ?? ''); - }} label="${searchListItem.name ?? ''}" title="${searchListItem.name ?? ''}" href=${`section/settings/workspace/logviewer/search/${searchListItem.query}`}> From a040bd5691ab1533f630a2034ae4b756aae0413e Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Tue, 4 Apr 2023 16:57:28 +0200 Subject: [PATCH 08/52] remove query --- .../logviewer-root/logviewer-root-workspace.element.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts index 1273c32847..f41865a2b4 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts @@ -101,9 +101,7 @@ export class UmbLogViewerWorkspaceElement extends UmbLitElement { this._routes = this._workspaceViews.map((view) => { return { path: `${view.meta.pathname}`, - component: () => { - return createExtensionElement(view); - }, + component: () => createExtensionElement(view), setup: (component) => { (component as any).manifest = view; }, @@ -146,7 +144,7 @@ export class UmbLogViewerWorkspaceElement extends UmbLitElement { (view) => html` ${view.meta.label || view.name} From 5f98a54e5a9d053021c9357f738da4bcf8ed2f43 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Tue, 4 Apr 2023 16:57:33 +0200 Subject: [PATCH 09/52] remove query --- .../settings/logviewer/workspace/logviewer-root/manifests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts index 79727af96e..1d6ee72173 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts @@ -40,7 +40,7 @@ const workspaceViews: Array = [ weight: 200, meta: { label: 'Search', - pathname: 'search/:query', + pathname: 'search', icon: 'umb:search', }, conditions: { From 34713441573a9e2561cfff5d3fc3567a6096775e Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Tue, 4 Apr 2023 16:57:51 +0200 Subject: [PATCH 10/52] add support for updating log viewer context through url query --- .../views/search/log-search-view.element.ts | 63 +++++++++++++++---- 1 file changed, 51 insertions(+), 12 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/log-search-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/log-search-view.element.ts index f6fa079bff..d2bd780642 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/log-search-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/log-search-view.element.ts @@ -1,10 +1,15 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { css, html } from 'lit'; +import { PropertyValueMap, css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../logviewer.context'; +import { + UmbLogViewerWorkspaceContext, + UMB_APP_LOG_VIEWER_CONTEXT_TOKEN, + LogViewerDateRange, +} from '../../logviewer.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import type { UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; -import { queryParentRouterSlot } from '@umbraco-cms/internal/router'; +import { query } from '@umbraco-cms/backoffice/router'; +import type { LogLevelModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-log-viewer-search-view') export class UmbLogViewerSearchViewElement extends UmbLitElement { @@ -42,10 +47,6 @@ export class UmbLogViewerSearchViewElement extends UmbLitElement { `, ]; - private get params() { - return queryParentRouterSlot(this)!.match!.params; - } - @state() private _canShowLogs = false; @@ -61,13 +62,51 @@ export class UmbLogViewerSearchViewElement extends UmbLitElement { }); } - connectedCallback(): void { - super.connectedCallback(); + onChangeState = () => { + if (!this.#logViewerContext) return; - if (this.params.query) { - const searchQuery = decodeURIComponent(this.params.query); - this.#logViewerContext?.setFilterExpression(searchQuery); + const searchQuery = query(); + + if (searchQuery.lq) { + const sanitizedQuery = decodeURIComponent(searchQuery.lq); + this.#logViewerContext.setFilterExpression(sanitizedQuery); } + + if (searchQuery.loglevels) { + const loglevels = [...searchQuery.loglevels]; + + // Filter out invalid log levels that do not exist in LogLevelModel + const validLogLevels = loglevels.filter((loglevel) => { + return ['Verbose', 'Debug', 'Information', 'Warning', 'Error', 'Fatal'].includes(loglevel); + }); + + this.#logViewerContext.setLogLevelsFilter(validLogLevels as LogLevelModel[]); + } + + const dateRange: Partial = {}; + + if (searchQuery.startDate) { + dateRange.startDate = searchQuery.startDate; + } + + if (searchQuery.endDate) { + dateRange.endDate = searchQuery.endDate; + } + + this.#logViewerContext.setDateRange(dateRange); + + console.log('query', searchQuery); + }; + + firstUpdated(props: PropertyValueMap) { + super.firstUpdated(props); + window.addEventListener('changestate', this.onChangeState); + this.onChangeState(); + } + + disconnectedCallback(): void { + super.disconnectedCallback(); + window.removeEventListener('changestate', this.onChangeState); } #observeCanShowLogs() { From 95505845ecbe23c30eadaefca0267a8e228032c7 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Tue, 4 Apr 2023 16:57:59 +0200 Subject: [PATCH 11/52] make daterange work with partials --- .../settings/logviewer/workspace/logviewer.context.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts index efd5772889..724bc9cf76 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts @@ -103,8 +103,11 @@ export class UmbLogViewerWorkspaceContext { this.validateLogSize(); } - setDateRange(dateRange: LogViewerDateRange) { - const { startDate, endDate } = dateRange; + setDateRange(dateRange: Partial) { + let { startDate, endDate } = dateRange; + + if (!startDate) startDate = this.defaultDateRange.startDate; + if (!endDate) endDate = this.defaultDateRange.endDate; const isAnyDateInTheFuture = new Date(startDate) > new Date() || new Date(endDate) > new Date(); const isStartDateBiggerThenEndDate = new Date(startDate) > new Date(endDate); @@ -112,7 +115,7 @@ export class UmbLogViewerWorkspaceContext { return; } - this.#dateRange.next(dateRange); + this.#dateRange.next({ startDate, endDate }); this.validateLogSize(); this.getLogCount(); } From fbd87b207bb48d5e6fdb97c2d4b7953447884659 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Tue, 4 Apr 2023 16:58:06 +0200 Subject: [PATCH 12/52] update urls to encode uri components --- .../log-viewer-message-templates-overview.element.ts | 6 ++++-- .../log-viewer-saved-searches-overview.element.ts | 4 ++-- .../views/search/components/log-viewer-message.element.ts | 6 ++++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts index d2c29aafcb..1e10aff9bb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-message-templates-overview.element.ts @@ -68,7 +68,7 @@ export class UmbLogViewerMessageTemplatesOverviewElement extends UmbLitElement { + href=${`section/settings/workspace/logviewer/search/?lq=${searchListItem.query}`}> ${searchListItem.name}
  • `; @@ -90,7 +90,9 @@ export class UmbLogViewerMessageTemplatesOverviewElement extends UmbLitElement { html` + href=${`section/settings/workspace/logviewer/search/?lq=${encodeURIComponent( + `@MessageTemplate='${template.messageTemplate}'` + )}`}> ${template.messageTemplate} ${template.count} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts index f36787489f..a918939169 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.ts @@ -62,7 +62,7 @@ export class UmbLogViewerSavedSearchesOverviewElement extends UmbLitElement { + href=${`section/settings/workspace/logviewer/search/?lq=${encodeURIComponent(searchListItem.query ?? '')}`}> ${searchListItem.name} `; @@ -71,7 +71,7 @@ export class UmbLogViewerSavedSearchesOverviewElement extends UmbLitElement { render() { return html`
      - ${this.#renderSearchItem({ name: 'All logs', query: '*' })} ${this._savedSearches.map(this.#renderSearchItem)} + ${this.#renderSearchItem({ name: 'All logs', query: '' })} ${this._savedSearches.map(this.#renderSearchItem)}
    `; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts index 92154cf5f7..d4fade3f9d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts @@ -219,7 +219,7 @@ export class UmbLogViewerMessageElement extends UmbLitElement { queryString = name + '=' + value; } - return queryString; + return encodeURIComponent(queryString); } #setOpen(event: Event) { @@ -259,7 +259,9 @@ export class UmbLogViewerMessageElement extends UmbLitElement { look="secondary" label="Find logs with ${property.name}" title="Find logs with ${property.name}" - href=${`section/settings/workspace/logviewer/search/${this._findLogsWithProperty(property)}`}> + href=${`section/settings/workspace/logviewer/search/?lq=${this._findLogsWithProperty( + property + )}`}> ` : ''} From 7990cb15fec8a9c1928b4fe43d2f1df2eb6058b3 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 5 Apr 2023 08:36:42 +0200 Subject: [PATCH 13/52] remove ts5 features since test tool does not support it yet --- .../components/backoffice-frame/backoffice-main.element.ts | 2 +- .../workspace/workspace-layout/workspace-layout.element.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts index 031d20c953..59ab21030a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/backoffice-frame/backoffice-main.element.ts @@ -67,7 +67,7 @@ export class UmbBackofficeMainElement extends UmbLitElement { setup: (component) => { (component as UmbSectionElement).manifest = section; }, - } satisfies IRoute; + }; }); this._routes.push({ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts index 91f0a07438..48c6859ea2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-layout/workspace-layout.element.ts @@ -145,7 +145,7 @@ export class UmbWorkspaceLayoutElement extends UmbLitElement { console.groupEnd(); } }, - } satisfies IRoute; + }; }); // If we have a post fix then we need to add a direct from the empty url of the split-view-index: From 3c62c00d8c25b3b7804c588d2117217247cc6081 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 5 Apr 2023 09:39:07 +0200 Subject: [PATCH 14/52] listen for changestate on logviewer root to intercept events on both subviews --- .../logviewer-root-workspace.element.ts | 16 ++++++- .../logviewer/workspace/logviewer.context.ts | 44 +++++++++++++++++++ 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts index f41865a2b4..5e3e245ad0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts @@ -1,6 +1,6 @@ import './components'; import { map } from 'rxjs'; -import { css, html, nothing } from 'lit'; +import { PropertyValueMap, css, html, nothing } from 'lit'; import { customElement, state } from 'lit/decorators.js'; import { UUITextStyles } from '@umbraco-ui/uui-css'; import { repeat } from 'lit/directives/repeat.js'; @@ -64,12 +64,24 @@ export class UmbLogViewerWorkspaceElement extends UmbLitElement { constructor() { super(); this.#logViewerContext.init(); + this.provideContext(UMB_APP_LOG_VIEWER_CONTEXT_TOKEN, this.#logViewerContext); + } + + firstUpdated(props: PropertyValueMap) { + super.firstUpdated(props); + + window.addEventListener('changestate', this.#logViewerContext.onChangeState); + this.#logViewerContext.onChangeState(); } connectedCallback() { super.connectedCallback(); this._observeWorkspaceViews(); - this.provideContext(UMB_APP_LOG_VIEWER_CONTEXT_TOKEN, this.#logViewerContext); + } + + disconnectedCallback(): void { + super.disconnectedCallback(); + window.removeEventListener('changestate', this.#logViewerContext.onChangeState); } load(): void { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts index 724bc9cf76..5bfb5badcd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts @@ -18,6 +18,7 @@ import { } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; +import { query } from '@umbraco-cms/backoffice/router'; export type PoolingInterval = 0 | 2000 | 5000 | 10000 | 20000 | 30000; export interface PoolingCOnfig { @@ -103,6 +104,49 @@ export class UmbLogViewerWorkspaceContext { this.validateLogSize(); } + reset() { + this.#logs.next({ items: [], total: 0 }); + this.setCurrentPage(1); + } + + onChangeState = () => { + this.reset(); + + const searchQuery = query(); + + if (searchQuery.lq) { + const sanitizedQuery = decodeURIComponent(searchQuery.lq); + this.setFilterExpression(sanitizedQuery); + } + + if (searchQuery.loglevels) { + const loglevels = searchQuery.loglevels.split(',') as LogLevelModel[]; + + // Filter out invalid log levels that do not exist in LogLevelModel + const validLogLevels = loglevels.filter((loglevel) => { + return ['Verbose', 'Debug', 'Information', 'Warning', 'Error', 'Fatal'].includes(loglevel); + }); + + this.setLogLevelsFilter(validLogLevels); + } + + const dateRange: Partial = {}; + + if (searchQuery.startDate) { + dateRange.startDate = searchQuery.startDate; + } + + if (searchQuery.endDate) { + dateRange.endDate = searchQuery.endDate; + } + + this.setDateRange(dateRange); + + this.setCurrentPage(searchQuery.page ? Number(searchQuery.page) : 1); + + this.getLogs(); + }; + setDateRange(dateRange: Partial) { let { startDate, endDate } = dateRange; From df9a1829485cec90fe283d9337851b193d507e97 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 5 Apr 2023 09:39:17 +0200 Subject: [PATCH 15/52] save date range to url --- .../log-viewer-date-range-selector.element.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-date-range-selector.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-date-range-selector.element.ts index cab197ce92..248825bad1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-date-range-selector.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-date-range-selector.element.ts @@ -7,6 +7,7 @@ import { UMB_APP_LOG_VIEWER_CONTEXT_TOKEN, } from '../../logviewer.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { query as getQuery, path, toQueryString } from '@umbraco-cms/backoffice/router'; @customElement('umb-log-viewer-date-range-selector') export class UmbLogViewerDateRangeSelectorElement extends UmbLitElement { @@ -86,8 +87,15 @@ export class UmbLogViewerDateRangeSelectorElement extends UmbLitElement { this._endDate = input.value; } }); - const newDateRange: LogViewerDateRange = { startDate: this._startDate, endDate: this._endDate }; - this.#logViewerContext?.setDateRange(newDateRange); + + const query = getQuery(); + const qs = toQueryString({ + ...query, + startDate: this._startDate, + endDate: this._endDate, + }); + + window.history.pushState({}, '', `${path()}?${qs}`); } render() { From 8dcb119a775cced772d6f86acd1f320dc903debf Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 5 Apr 2023 09:39:26 +0200 Subject: [PATCH 16/52] save log level to url --- .../log-viewer-log-level-filter-menu.element.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts index 3877b02719..162846feb5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts @@ -6,6 +6,7 @@ import { debounce } from 'lodash-es'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; import { LogLevelModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { path, query, toQueryString } from '@umbraco-cms/backoffice/router'; @customElement('umb-log-viewer-log-level-filter-menu') export class UmbLogViewerLogLevelFilterMenuElement extends UmbLitElement { @@ -58,13 +59,18 @@ export class UmbLogViewerLogLevelFilterMenuElement extends UmbLitElement { #setLogLevel() { if (!this.#logViewerContext) return; - this.#logViewerContext?.setCurrentPage(1); const logLevels = Array.from(this._logLevelSelectorCheckboxes) .filter((checkbox) => checkbox.checked) .map((checkbox) => checkbox.value as LogLevelModel); - this.#logViewerContext?.setLogLevelsFilter(logLevels); - this.#logViewerContext.getLogs(); + + let q = query(); + + if (logLevels.length) { + q = { ...q, loglevels: logLevels.join(',') }; + } + + window.history.pushState({}, '', `${path()}?${toQueryString(q)}`); } setLogLevelDebounce = debounce(this.#setLogLevel, 300); From 2f7228f9304ebdfb948d70a6e080d04095689353 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 5 Apr 2023 09:39:45 +0200 Subject: [PATCH 17/52] save log message query to url --- .../components/log-viewer-message.element.ts | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts index d4fade3f9d..36b885f34e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-message.element.ts @@ -4,6 +4,7 @@ import { customElement, property, query, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; import { LogLevelModel, LogMessagePropertyPresentationModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { query as getQuery, toQueryString } from '@umbraco-cms/backoffice/router'; //TODO: check how to display EventId field in the message properties @customElement('umb-log-viewer-message') @@ -211,15 +212,23 @@ export class UmbLogViewerMessageElement extends UmbLitElement { private _propertiesWithSearchMenu: Array = ['HttpRequestNumber', 'SourceContext', 'MachineName']; private _findLogsWithProperty({ name, value }: LogMessagePropertyPresentationModel) { - let queryString = ''; + if (!name) return ''; + + let query = getQuery(); + let sanitizedValue = value ?? ''; if (isNaN(+(value ?? ''))) { - queryString = name + "='" + value + "'"; - } else { - queryString = name + '=' + value; + sanitizedValue = "'" + value + "'"; } - return encodeURIComponent(queryString); + query = { + ...query, + lq: encodeURIComponent(`${name}=${sanitizedValue}`), + }; + + const queryString = toQueryString(query); + + return queryString; } #setOpen(event: Event) { @@ -259,9 +268,7 @@ export class UmbLogViewerMessageElement extends UmbLitElement { look="secondary" label="Find logs with ${property.name}" title="Find logs with ${property.name}" - href=${`section/settings/workspace/logviewer/search/?lq=${this._findLogsWithProperty( - property - )}`}> + href=${`section/settings/workspace/logviewer/search/?${this._findLogsWithProperty(property)}`}> ` : ''} From 80ac8c41ad68c3efccde2a56ec7813f8cd6c1fd2 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 5 Apr 2023 09:49:17 +0200 Subject: [PATCH 18/52] move changestate to root element --- .../views/search/log-search-view.element.ts | 57 +------------------ 1 file changed, 2 insertions(+), 55 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/log-search-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/log-search-view.element.ts index d2bd780642..0296fcc686 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/log-search-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/log-search-view.element.ts @@ -1,15 +1,9 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { PropertyValueMap, css, html } from 'lit'; +import { css, html } from 'lit'; import { customElement, state } from 'lit/decorators.js'; -import { - UmbLogViewerWorkspaceContext, - UMB_APP_LOG_VIEWER_CONTEXT_TOKEN, - LogViewerDateRange, -} from '../../logviewer.context'; +import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../logviewer.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import type { UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; -import { query } from '@umbraco-cms/backoffice/router'; -import type { LogLevelModel } from '@umbraco-cms/backoffice/backend-api'; @customElement('umb-log-viewer-search-view') export class UmbLogViewerSearchViewElement extends UmbLitElement { @@ -62,53 +56,6 @@ export class UmbLogViewerSearchViewElement extends UmbLitElement { }); } - onChangeState = () => { - if (!this.#logViewerContext) return; - - const searchQuery = query(); - - if (searchQuery.lq) { - const sanitizedQuery = decodeURIComponent(searchQuery.lq); - this.#logViewerContext.setFilterExpression(sanitizedQuery); - } - - if (searchQuery.loglevels) { - const loglevels = [...searchQuery.loglevels]; - - // Filter out invalid log levels that do not exist in LogLevelModel - const validLogLevels = loglevels.filter((loglevel) => { - return ['Verbose', 'Debug', 'Information', 'Warning', 'Error', 'Fatal'].includes(loglevel); - }); - - this.#logViewerContext.setLogLevelsFilter(validLogLevels as LogLevelModel[]); - } - - const dateRange: Partial = {}; - - if (searchQuery.startDate) { - dateRange.startDate = searchQuery.startDate; - } - - if (searchQuery.endDate) { - dateRange.endDate = searchQuery.endDate; - } - - this.#logViewerContext.setDateRange(dateRange); - - console.log('query', searchQuery); - }; - - firstUpdated(props: PropertyValueMap) { - super.firstUpdated(props); - window.addEventListener('changestate', this.onChangeState); - this.onChangeState(); - } - - disconnectedCallback(): void { - super.disconnectedCallback(); - window.removeEventListener('changestate', this.onChangeState); - } - #observeCanShowLogs() { if (this.#canShowLogsObserver) this.#canShowLogsObserver.destroy(); if (!this.#logViewerContext) return; From 0ac938d77a23e9135eb24a21f1e7e8939d1d1891 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 5 Apr 2023 09:50:03 +0200 Subject: [PATCH 19/52] use rxjs to debounce query --- .../log-viewer-search-input.element.ts | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts index 32ae06990d..369d49d1d2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts @@ -2,9 +2,11 @@ import { UUIInputElement, UUIPopoverElement, UUISymbolExpandElement } from '@umb import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, query, state } from 'lit/decorators.js'; +import { Subject, debounceTime } from 'rxjs'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; import { SavedLogSearchResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { query as getQuery, path, toQueryString } from '@umbraco-cms/backoffice/router'; @customElement('umb-log-viewer-search-input') export class UmbLogViewerSearchInputElement extends UmbLitElement { @@ -92,6 +94,8 @@ export class UmbLogViewerSearchInputElement extends UmbLitElement { @state() private _inputQuery = ''; + private inputQuery$ = new Subject(); + #logViewerContext?: UmbLogViewerWorkspaceContext; constructor() { @@ -101,6 +105,11 @@ export class UmbLogViewerSearchInputElement extends UmbLitElement { this.#observeStuff(); this.#logViewerContext.getLogs(); }); + + this.inputQuery$.pipe(debounceTime(250)).subscribe((query) => { + this.#logViewerContext?.setFilterExpression(query); + this.#persist(query); + }); } #observeStuff() { @@ -129,21 +138,26 @@ export class UmbLogViewerSearchInputElement extends UmbLitElement { #setQuery(event: Event) { const target = event.target as UUIInputElement; - this._inputQuery = target.value as string; - this.#logViewerContext?.setFilterExpression(this._inputQuery); + this.inputQuery$.next(target.value as string); } #setQueryFromSavedSearch(query: string) { - this._inputQuery = query; - this.#logViewerContext?.setFilterExpression(query); - this.#logViewerContext?.setCurrentPage(1); - - this.#logViewerContext?.getLogs(); + this.inputQuery$.next(query); this._savedSearchesPopover.open = false; } + #persist(filter: string) { + let q = getQuery(); + + q = { + ...q, + lq: filter, + }; + + window.history.pushState({}, '', `${path()}?${toQueryString(q)}`); + } + #clearQuery() { - this._inputQuery = ''; this.#logViewerContext?.setFilterExpression(''); this.#logViewerContext?.getLogs(); } From ddb391a5d0211876703326613b527a949221cfc0 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 5 Apr 2023 10:02:09 +0200 Subject: [PATCH 20/52] check for .checked value --- .../components/log-viewer-log-level-filter-menu.element.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts index 162846feb5..474b64843b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts @@ -90,7 +90,11 @@ export class UmbLogViewerLogLevelFilterMenuElement extends UmbLitElement {
    this.setLogLevelDebounce()}> ${Object.values(LogLevelModel).map( (logLevel) => - html`` )} From 01dc04b991c7b483859833411e2b2e7ce867a6c3 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 5 Apr 2023 10:29:45 +0200 Subject: [PATCH 21/52] make sure to preserve the querystring when making the first router navigation --- src/Umbraco.Web.UI.Client/src/app.ts | 39 ++++++++++++++++++---------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/app.ts b/src/Umbraco.Web.UI.Client/src/app.ts index 8bf3961d55..0984fd9bb8 100644 --- a/src/Umbraco.Web.UI.Client/src/app.ts +++ b/src/Umbraco.Web.UI.Client/src/app.ts @@ -10,10 +10,11 @@ import './core/modal/modal-element.element'; import { UUIIconRegistryEssential } from '@umbraco-ui/uui'; import { css, html } from 'lit'; -import { customElement, property, state } from 'lit/decorators.js'; +import { customElement, property } from 'lit/decorators.js'; import { UmbIconStore } from './core/stores/icon/icon.store'; import type { Guard, IRoute } from '@umbraco-cms/backoffice/router'; +import { pathWithoutBasePath, queryString } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import { OpenAPI, RuntimeLevelModel, ServerResource } from '@umbraco-cms/backoffice/backend-api'; @@ -37,8 +38,7 @@ export class UmbAppElement extends UmbLitElement { @property({ type: String }) private umbracoUrl?: string; - @state() - private _routes: IRoute[] = [ + private _routes: IRoute[] = [ { path: 'install', component: () => import('./installer/installer.element'), @@ -68,7 +68,7 @@ export class UmbAppElement extends UmbLitElement { this._setup(); } - async connectedCallback() { + connectedCallback() { super.connectedCallback(); OpenAPI.BASE = @@ -79,8 +79,7 @@ export class UmbAppElement extends UmbLitElement { this.provideContext('UMBRACOBASE', OpenAPI.BASE); - await this._setInitStatus(); - this._redirect(); + this._setInitStatus(); // Listen for the debug event from the component this.addEventListener(umbDebugContextEventType, (event: any) => { @@ -106,30 +105,44 @@ export class UmbAppElement extends UmbLitElement { } private async _setup() { + await this._setInitStatus(); this._iconRegistry.attach(this); } private async _setInitStatus() { const { data } = await tryExecuteAndNotify(this, ServerResource.getServerStatus()); this._runtimeLevel = data?.serverStatus ?? RuntimeLevelModel.UNKNOWN; + this._redirect(); } private _redirect() { switch (this._runtimeLevel) { case RuntimeLevelModel.INSTALL: - history.replaceState(null, '', '/install'); + history.replaceState(null, '', 'install'); break; case RuntimeLevelModel.UPGRADE: - history.replaceState(null, '', '/upgrade'); + history.replaceState(null, '', 'upgrade'); break; case RuntimeLevelModel.RUN: { - const pathname = - window.location.pathname === '/install' || window.location.pathname === '/upgrade' - ? '/' - : window.location.pathname; - history.replaceState(null, '', pathname); + const pathname = pathWithoutBasePath(); + + // If we are on the installer or upgrade page, redirect to the root + // but if not, keep the current path but replace state anyway to initialize the router + let finalPath = pathname === 'install' || pathname === 'upgrade' ? '/' : pathname; + + const qs = queryString(); + + if (qs) { + finalPath += qs; + } + + if (location.hash) { + finalPath += `#${location.hash}`; + } + + history.replaceState(null, '', finalPath); break; } From 0057e1f457096491b110ffb543074455a1c754a3 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 5 Apr 2023 10:30:14 +0200 Subject: [PATCH 22/52] make sure to link using the base path (without leading slash) --- .../documents/entity-actions/create/create.action.ts | 2 +- .../workspace/workspace-package-builder.element.ts | 2 +- .../package-repo/workspace/workspace-package.element.ts | 2 +- .../views/created/packages-created-overview.element.ts | 4 ++-- .../user-profile-apps/user-profile-app-profile.element.ts | 2 +- .../users/modals/create-user/create-user-modal.element.ts | 2 +- .../src/installer/database/installer-database.element.ts | 2 +- src/Umbraco.Web.UI.Client/src/upgrader/upgrader.element.ts | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts index 7a5b8b3e31..62a8480101 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/entity-actions/create/create.action.ts @@ -33,7 +33,7 @@ export class UmbCreateDocumentEntityAction extends UmbEntityActionBase Date: Wed, 5 Apr 2023 10:38:03 +0200 Subject: [PATCH 23/52] use full location.href for initial routing --- src/Umbraco.Web.UI.Client/src/app.ts | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/app.ts b/src/Umbraco.Web.UI.Client/src/app.ts index 0984fd9bb8..5707e9ec4d 100644 --- a/src/Umbraco.Web.UI.Client/src/app.ts +++ b/src/Umbraco.Web.UI.Client/src/app.ts @@ -14,7 +14,7 @@ import { customElement, property } from 'lit/decorators.js'; import { UmbIconStore } from './core/stores/icon/icon.store'; import type { Guard, IRoute } from '@umbraco-cms/backoffice/router'; -import { pathWithoutBasePath, queryString } from '@umbraco-cms/backoffice/router'; +import { pathWithoutBasePath } from '@umbraco-cms/backoffice/router'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; import { OpenAPI, RuntimeLevelModel, ServerResource } from '@umbraco-cms/backoffice/backend-api'; @@ -126,21 +126,11 @@ export class UmbAppElement extends UmbLitElement { break; case RuntimeLevelModel.RUN: { - const pathname = pathWithoutBasePath(); + const pathname = pathWithoutBasePath({ start: true, end: false }); // If we are on the installer or upgrade page, redirect to the root // but if not, keep the current path but replace state anyway to initialize the router - let finalPath = pathname === 'install' || pathname === 'upgrade' ? '/' : pathname; - - const qs = queryString(); - - if (qs) { - finalPath += qs; - } - - if (location.hash) { - finalPath += `#${location.hash}`; - } + const finalPath = pathname === '/install' || pathname === '/upgrade' ? '/' : location.href; history.replaceState(null, '', finalPath); break; From 439d885adb04d71c0d9fdc33a7b4032589f7c58a Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Tue, 11 Apr 2023 15:46:40 +0200 Subject: [PATCH 24/52] output nothing --- .../components/log-viewer-log-level-overview.element.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-level-overview.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-level-overview.element.ts index bae9ab55f4..fecb77768c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-level-overview.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/components/log-viewer-log-level-overview.element.ts @@ -1,4 +1,4 @@ -import { html } from 'lit'; +import { html, nothing } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -37,7 +37,7 @@ export class UmbLogViewerLogLevelOverviewElement extends UmbLitElement { render() { return html`${this._loggers.length > 0 ? this._loggers.find((logger) => logger.name === this.loggerName)?.level - : ''}`; + : nothing}`; } } From bfb5a2b041a25236486c947ae157c5cfd098d359 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Tue, 11 Apr 2023 15:46:57 +0200 Subject: [PATCH 25/52] delete log levels if there are none --- .../log-viewer-log-level-filter-menu.element.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts index 474b64843b..ce2d6eee18 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts @@ -68,6 +68,8 @@ export class UmbLogViewerLogLevelFilterMenuElement extends UmbLitElement { if (logLevels.length) { q = { ...q, loglevels: logLevels.join(',') }; + } else { + delete q.loglevels; } window.history.pushState({}, '', `${path()}?${toQueryString(q)}`); @@ -87,16 +89,16 @@ export class UmbLogViewerLogLevelFilterMenuElement extends UmbLitElement { #renderLogLevelSelector() { return html` -
    this.setLogLevelDebounce()}> +
    ${Object.values(LogLevelModel).map( (logLevel) => html`` + label="${logLevel}"> + + ` )} Select allLog Level: + + Log Level: ${this._logLevelFilter.length > 0 ? this._logLevelFilter.map((level) => html`${level}`) : 'All'} From 4c51c7a3e5f05c7581d4cc09fc9a64f148485037 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Tue, 11 Apr 2023 15:47:06 +0200 Subject: [PATCH 26/52] send out empty log levels --- .../settings/logviewer/workspace/logviewer.context.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts index 5bfb5badcd..42fcef4ca3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts @@ -119,16 +119,16 @@ export class UmbLogViewerWorkspaceContext { this.setFilterExpression(sanitizedQuery); } + let validLogLevels: LogLevelModel[] = []; if (searchQuery.loglevels) { const loglevels = searchQuery.loglevels.split(',') as LogLevelModel[]; // Filter out invalid log levels that do not exist in LogLevelModel - const validLogLevels = loglevels.filter((loglevel) => { - return ['Verbose', 'Debug', 'Information', 'Warning', 'Error', 'Fatal'].includes(loglevel); + validLogLevels = loglevels.filter((loglevel) => { + return Object.values(LogLevelModel).includes(loglevel); }); - - this.setLogLevelsFilter(validLogLevels); } + this.setLogLevelsFilter(validLogLevels); const dateRange: Partial = {}; From 5bc57c1e774cdde8deadc0622a93535d1197cb49 Mon Sep 17 00:00:00 2001 From: Julia Gru <56249914+julczka@users.noreply.github.com> Date: Wed, 12 Apr 2023 12:27:49 +0200 Subject: [PATCH 27/52] add link and query to number of error --- .../settings/logviewer/workspace/logviewer.context.ts | 2 +- .../workspace/views/overview/log-overview-view.element.ts | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts index 42fcef4ca3..d544a627b2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts @@ -110,10 +110,10 @@ export class UmbLogViewerWorkspaceContext { } onChangeState = () => { + this.reset(); const searchQuery = query(); - if (searchQuery.lq) { const sanitizedQuery = decodeURIComponent(searchQuery.lq); this.setFilterExpression(sanitizedQuery); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/log-overview-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/log-overview-view.element.ts index d4faca5e18..ae80065098 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/log-overview-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/log-overview-view.element.ts @@ -128,7 +128,13 @@ export class UmbLogViewerOverviewViewElement extends UmbLitElement { -

    ${this._errorCount}

    + +

    ${this._errorCount}

    From fc216d65d0c7786ac44d3d82a22c0224a0f82e95 Mon Sep 17 00:00:00 2001 From: Julia Gru <56249914+julczka@users.noreply.github.com> Date: Wed, 12 Apr 2023 13:14:42 +0200 Subject: [PATCH 28/52] add loader to the input, remeove search button --- .../log-viewer-search-input.element.ts | 39 ++++++++++++++----- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts index 369d49d1d2..bb0fb9d10c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts @@ -2,7 +2,7 @@ import { UUIInputElement, UUIPopoverElement, UUISymbolExpandElement } from '@umb import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, query, state } from 'lit/decorators.js'; -import { Subject, debounceTime } from 'rxjs'; +import { Subject, debounceTime, tap } from 'rxjs'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context'; import { SavedLogSearchResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -39,6 +39,13 @@ export class UmbLogViewerSearchInputElement extends UmbLitElement { box-shadow: var(--uui-shadow-depth-1); } + #loader-container { + display: flex; + justify-content: center; + align-items: center; + margin: 0 var(--uui-size-space-4); + } + .saved-search-item { display: flex; justify-content: space-between; @@ -94,6 +101,9 @@ export class UmbLogViewerSearchInputElement extends UmbLitElement { @state() private _inputQuery = ''; + @state() + private _showLoader = false; + private inputQuery$ = new Subject(); #logViewerContext?: UmbLogViewerWorkspaceContext; @@ -106,10 +116,16 @@ export class UmbLogViewerSearchInputElement extends UmbLitElement { this.#logViewerContext.getLogs(); }); - this.inputQuery$.pipe(debounceTime(250)).subscribe((query) => { - this.#logViewerContext?.setFilterExpression(query); - this.#persist(query); - }); + this.inputQuery$ + .pipe( + tap(() => (this._showLoader = true)), + debounceTime(250) + ) + .subscribe((query) => { + this.#logViewerContext?.setFilterExpression(query); + this.#persist(query); + this._showLoader = false; + }); } #observeStuff() { @@ -169,10 +185,8 @@ export class UmbLogViewerSearchInputElement extends UmbLitElement { } render() { - return html` + return html` + + ${this._showLoader + ? html`
    + +
    ` + : ''} ${this._inputQuery ? html`
    - Search`; + `; } } From 6411fbb113c7d6feb684390aecbb2b42c27b3cd0 Mon Sep 17 00:00:00 2001 From: Julia Gru <56249914+julczka@users.noreply.github.com> Date: Wed, 12 Apr 2023 13:42:33 +0200 Subject: [PATCH 29/52] remove redundant search --- .../components/log-viewer-search-input.element.ts | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts index bb0fb9d10c..cba237b8cd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts @@ -174,16 +174,12 @@ export class UmbLogViewerSearchInputElement extends UmbLitElement { } #clearQuery() { + this.inputQuery$.next(''); + this.#logViewerContext?.setFilterExpression(''); this.#logViewerContext?.getLogs(); } - - #search() { - this.#logViewerContext?.setCurrentPage(1); - - this.#logViewerContext?.getLogs(); - } - + render() { return html` From 1810bba3abc8518c3212142aa933e2601b63c2a8 Mon Sep 17 00:00:00 2001 From: Julia Gru <56249914+julczka@users.noreply.github.com> Date: Wed, 12 Apr 2023 13:52:37 +0200 Subject: [PATCH 30/52] fix typo --- .../search/components/log-viewer-polling-button.element.ts | 2 +- .../search/components/log-viewer-search-input.element.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-polling-button.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-polling-button.element.ts index 44b19b8cae..11474cce8d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-polling-button.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-polling-button.element.ts @@ -111,7 +111,7 @@ export class UmbLogViewerPollingButtonElement extends UmbLitElement { >${this._poolingConfig.enabled ? html`Polling ${this._poolingConfig.interval / 1000} seconds` - : 'Pooling'} (this._polingExpandSymbol.open = false)}> diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts index cba237b8cd..fb0ceae1a8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts @@ -113,6 +113,7 @@ export class UmbLogViewerSearchInputElement extends UmbLitElement { this.consumeContext(UMB_APP_LOG_VIEWER_CONTEXT_TOKEN, (instance) => { this.#logViewerContext = instance; this.#observeStuff(); + this.#logViewerContext?.getSavedSearches(); this.#logViewerContext.getLogs(); }); @@ -175,11 +176,10 @@ export class UmbLogViewerSearchInputElement extends UmbLitElement { #clearQuery() { this.inputQuery$.next(''); - this.#logViewerContext?.setFilterExpression(''); this.#logViewerContext?.getLogs(); } - + render() { return html` From 262ac0861d39fef6fa8eb380a0895787d03208c1 Mon Sep 17 00:00:00 2001 From: Julia Gru <56249914+julczka@users.noreply.github.com> Date: Wed, 12 Apr 2023 17:36:01 +0200 Subject: [PATCH 31/52] add saving search --- .../repository/log-viewer.repository.ts | 20 +++++- .../logviewer/repository/sources/index.ts | 6 +- .../sources/log-viewer.server.data.ts | 7 +- .../workspace/logviewer-root/manifests.ts | 12 +++- .../logviewer/workspace/logviewer.context.ts | 15 ++++- .../log-viewer-search-input-modal.element.ts | 64 +++++++++++++++++++ .../log-viewer-search-input.element.ts | 46 ++++++++++++- 7 files changed, 158 insertions(+), 12 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input-modal.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/log-viewer.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/log-viewer.repository.ts index 15ad25e1b0..9c6c12d74f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/log-viewer.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/log-viewer.repository.ts @@ -2,7 +2,7 @@ import { UmbLogMessagesServerDataSource, UmbLogSearchesServerDataSource } from ' import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; -import { DirectionModel, LogLevelModel } from '@umbraco-cms/backoffice/backend-api'; +import { DirectionModel, LogLevelModel, SavedLogSearchPresenationBaseModel } from '@umbraco-cms/backoffice/backend-api'; // Move to documentation / JSdoc /* We need to create a new instance of the repository from within the element context. We want the notifications to be displayed in the right context. */ @@ -47,6 +47,24 @@ export class UmbLogViewerRepository { return this.#searchDataSource.getAllSavedSearches({ skip, take }); } + async saveSearch({ name, query }: SavedLogSearchPresenationBaseModel) { + await this.#init(); + this.#searchDataSource.postLogViewerSavedSearch({ name, query }); + } + + async removeSearch({ + name, + filterExpression, + logLevel, + }: { + name: string; + filterExpression: string; + logLevel: Array; + }) { + console.log('save'); + await this.#init(); + } + async getMessageTemplates({ skip, take }: { skip: number; take: number }) { await this.#init(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/index.ts index 944990c6d9..9dd4491af0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/index.ts @@ -20,11 +20,7 @@ export interface LogSearchDataSource { }): Promise>; getSavedSearchByName({ name }: { name: string }): Promise>; deleteSavedSearchByName({ name }: { name: string }): Promise>; - postLogViewerSavedSearch({ - requestBody, - }: { - requestBody?: SavedLogSearchResponseModel; - }): Promise>; + postLogViewerSavedSearch({ name, query }: SavedLogSearchResponseModel): Promise>; } export interface LogMessagesDataSource { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/log-viewer.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/log-viewer.server.data.ts index 660ab50056..fa069f9d2f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/log-viewer.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/sources/log-viewer.server.data.ts @@ -54,8 +54,11 @@ export class UmbLogSearchesServerDataSource implements LogSearchDataSource { * @return {*} * @memberof UmbLogSearchesServerDataSource */ - async postLogViewerSavedSearch({ requestBody }: { requestBody?: SavedLogSearchResponseModel }) { - return await tryExecuteAndNotify(this.#host, LogViewerResource.postLogViewerSavedSearch({ requestBody })); + async postLogViewerSavedSearch({ name, query }: SavedLogSearchResponseModel) { + return await tryExecuteAndNotify( + this.#host, + LogViewerResource.postLogViewerSavedSearch({ requestBody: { name, query } }) + ); } /** * Remove a log viewer saved search by name from the server diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts index 1d6ee72173..83478e4b88 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/manifests.ts @@ -1,4 +1,5 @@ import type { + ManifestModal, ManifestWorkspace, ManifestWorkspaceAction, ManifestWorkspaceView, @@ -51,4 +52,13 @@ const workspaceViews: Array = [ const workspaceActions: Array = []; -export const manifests = [workspace, ...workspaceViews, ...workspaceActions]; +const modals: Array = [ + { + type: 'modal', + alias: 'Umb.Modal.LogViewer.SaveSearch', + name: 'Saved Searches Modal', + loader: () => import('../views/search/components/log-viewer-search-input-modal.element'), + }, +]; + +export const manifests = [workspace, ...workspaceViews, ...workspaceActions, ...modals]; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts index d544a627b2..b988f14043 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts @@ -15,6 +15,7 @@ import { PagedLogMessageResponseModel, PagedLogTemplateResponseModel, PagedSavedLogSearchResponseModel, + SavedLogSearchPresenationBaseModel, } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; @@ -57,7 +58,7 @@ export class UmbLogViewerWorkspaceContext { endDate: this.today, }; - #savedSearches = new DeepState(undefined); + #savedSearches = new ObjectState(undefined); savedSearches = createObservablePart(this.#savedSearches, (data) => data?.items); #logCount = new DeepState(null); @@ -110,7 +111,6 @@ export class UmbLogViewerWorkspaceContext { } onChangeState = () => { - this.reset(); const searchQuery = query(); @@ -202,6 +202,17 @@ export class UmbLogViewerWorkspaceContext { } } + async saveSearch({ name, query }: SavedLogSearchPresenationBaseModel) { + const previousSavedSearches = this.#savedSearches.getValue()?.items ?? []; + try { + this.#savedSearches.update({ items: [...previousSavedSearches, { name, query }] }); + await this.#repository.saveSearch({ name, query }); + } catch (err) { + this.#savedSearches.update({ items: previousSavedSearches }); + console.log(err); + } + } + async getLogCount() { const { data } = await this.#repository.getLogCount({ ...this.#dateRange.getValue() }); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input-modal.element.ts new file mode 100644 index 0000000000..4b40f9ef11 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input-modal.element.ts @@ -0,0 +1,64 @@ +import { html, css } from 'lit'; +import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; +import { customElement, query, state } from 'lit/decorators.js'; +import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; +import { SavedLogSearchPresenationBaseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UUIInputElement } from '@umbraco-ui/uui'; + +@customElement('umb-log-viewer-save-search-modal') +export default class UmbLogViewerSaveSearchModalElement extends UmbModalBaseElement< + { query: string }, + SavedLogSearchPresenationBaseModel +> { + static styles = [ + UUITextStyles, + css` + uui-dialog-layout { + background-color: var(--uui-color-surface); + box-shadow: var(--uui-shadow-depth-1, 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24)); + border-radius: var(--uui-border-radius); + padding: var(--uui-size-space-5); + box-sizing: border-box; + } + + uui-input { + width: 100%; + } + `, + ]; + + @query('uui-input') + private _input!: UUIInputElement; + + private _handleClose() { + this.modalHandler?.reject(); + } + + private _handleSubmit() { + this.modalHandler?.submit({ name: this._input.value as string, query: this.data?.query }); + } + + firstUpdated() { + console.log('this.data', this.data); + } + + render() { + return html` + + Enter a friendly name for your search query +

    Query:

    + ${this.data?.query} +

    Name:

    + + Close + Save +
    + `; + } +} + +declare global { + interface HTMLElementTagNameMap { + 'umb-log-viewer-save-search-modal': UmbLogViewerSaveSearchModalElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts index fb0ceae1a8..eb964d4e69 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts @@ -7,6 +7,25 @@ import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from ' import { SavedLogSearchResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { query as getQuery, path, toQueryString } from '@umbraco-cms/backoffice/router'; +import { + UMB_MODAL_CONTEXT_TOKEN, + UmbModalContext, + UmbModalHandler, + UmbModalToken, +} from '@umbraco-cms/backoffice/modal'; + +import './log-viewer-search-input-modal.element'; +export interface UmbContextSaveSearchModalData { + query: string; +} + +export const UMB_LOG_VIEWER_SAVE_SEARCH_MODAL = new UmbModalToken( + 'Umb.Modal.LogViewer.SaveSearch', + { + type: 'dialog', + size: 'small', + } +); @customElement('umb-log-viewer-search-input') export class UmbLogViewerSearchInputElement extends UmbLitElement { @@ -108,6 +127,8 @@ export class UmbLogViewerSearchInputElement extends UmbLitElement { #logViewerContext?: UmbLogViewerWorkspaceContext; + private _modalContext?: UmbModalContext; + constructor() { super(); this.consumeContext(UMB_APP_LOG_VIEWER_CONTEXT_TOKEN, (instance) => { @@ -117,6 +138,10 @@ export class UmbLogViewerSearchInputElement extends UmbLitElement { this.#logViewerContext.getLogs(); }); + this.consumeContext(UMB_MODAL_CONTEXT_TOKEN, (instance) => { + this._modalContext = instance; + }); + this.inputQuery$ .pipe( tap(() => (this._showLoader = true)), @@ -180,6 +205,25 @@ export class UmbLogViewerSearchInputElement extends UmbLitElement { this.#logViewerContext?.getLogs(); } + #modalHandler?: UmbModalHandler; + + async #saveSearch(savedSearch: SavedLogSearchResponseModel) { + try { + await this.#logViewerContext?.saveSearch(savedSearch); + } catch (e) { + console.error(e); + } + } + + #openSaveSearchDialog() { + this.#modalHandler = this._modalContext?.open(UMB_LOG_VIEWER_SAVE_SEARCH_MODAL, { query: this._inputQuery }); + this.#modalHandler?.onSubmit().then((savedSearch) => { + if (savedSearch) { + this.#saveSearch(savedSearch); + } + }); + } + render() { return html` @@ -196,7 +240,7 @@ export class UmbLogViewerSearchInputElement extends UmbLitElement {
    ` : ''} ${this._inputQuery - ? html` Date: Wed, 12 Apr 2023 17:59:13 +0200 Subject: [PATCH 32/52] add remove search funcion --- .../repository/log-viewer.repository.ts | 12 +----- .../logviewer/workspace/logviewer.context.ts | 11 ++++- .../log-viewer-search-input-modal.element.ts | 41 +++++++++++-------- .../log-viewer-search-input.element.ts | 17 ++++---- 4 files changed, 46 insertions(+), 35 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/log-viewer.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/log-viewer.repository.ts index 9c6c12d74f..e25ee3fd95 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/log-viewer.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/log-viewer.repository.ts @@ -52,17 +52,9 @@ export class UmbLogViewerRepository { this.#searchDataSource.postLogViewerSavedSearch({ name, query }); } - async removeSearch({ - name, - filterExpression, - logLevel, - }: { - name: string; - filterExpression: string; - logLevel: Array; - }) { - console.log('save'); + async removeSearch({ name }: { name: string }) { await this.#init(); + this.#searchDataSource.deleteSavedSearchByName({ name }); } async getMessageTemplates({ skip, take }: { skip: number; take: number }) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts index b988f14043..edc69fa1cf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts @@ -209,7 +209,16 @@ export class UmbLogViewerWorkspaceContext { await this.#repository.saveSearch({ name, query }); } catch (err) { this.#savedSearches.update({ items: previousSavedSearches }); - console.log(err); + } + } + + async removeSearch({ name }: { name: string }) { + const previousSavedSearches = this.#savedSearches.getValue()?.items ?? []; + try { + this.#savedSearches.update({ items: previousSavedSearches.filter((search) => search.name !== name) }); + await this.#repository.removeSearch({ name }); + } catch (err) { + this.#savedSearches.update({ items: previousSavedSearches }); } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input-modal.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input-modal.element.ts index 4b40f9ef11..7fc279c8eb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input-modal.element.ts @@ -13,14 +13,6 @@ export default class UmbLogViewerSaveSearchModalElement extends UmbModalBaseElem static styles = [ UUITextStyles, css` - uui-dialog-layout { - background-color: var(--uui-color-surface); - box-shadow: var(--uui-shadow-depth-1, 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24)); - border-radius: var(--uui-border-radius); - padding: var(--uui-size-space-5); - box-sizing: border-box; - } - uui-input { width: 100%; } @@ -38,20 +30,37 @@ export default class UmbLogViewerSaveSearchModalElement extends UmbModalBaseElem this.modalHandler?.submit({ name: this._input.value as string, query: this.data?.query }); } - firstUpdated() { - console.log('this.data', this.data); + @state() + private _hasValue = false; + + #validate(event: Event) { + const target = event.target as UUIInputElement; + this._hasValue = (target.value as string).length > 0; } render() { return html` Enter a friendly name for your search query -

    Query:

    - ${this.data?.query} -

    Name:

    - - Close - Save + + Query: + ${this.data?.query} + + + Name: + + + + Close + Save
    `; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts index eb964d4e69..f001b327e5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-search-input.element.ts @@ -1,4 +1,4 @@ -import { UUIInputElement, UUIPopoverElement, UUISymbolExpandElement } from '@umbraco-ui/uui'; +import { UUIButtonElement, UUIInputElement, UUIPopoverElement, UUISymbolExpandElement } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from 'lit'; import { customElement, query, state } from 'lit/decorators.js'; @@ -207,12 +207,13 @@ export class UmbLogViewerSearchInputElement extends UmbLitElement { #modalHandler?: UmbModalHandler; - async #saveSearch(savedSearch: SavedLogSearchResponseModel) { - try { - await this.#logViewerContext?.saveSearch(savedSearch); - } catch (e) { - console.error(e); - } + #saveSearch(savedSearch: SavedLogSearchResponseModel) { + this.#logViewerContext?.saveSearch(savedSearch); + } + + #removeSearch(event: Event) { + const target = event.target as UUIButtonElement; + this.#logViewerContext?.removeSearch({ name: target.id }); } #openSaveSearchDialog() { @@ -266,7 +267,7 @@ export class UmbLogViewerSearchInputElement extends UmbLitElement { @click=${() => this.#setQueryFromSavedSearch(search.query ?? '')}> ${search.name} ${search.query} ` From 3c4f15d002b02634018f9ff876ddba560ea25ed3 Mon Sep 17 00:00:00 2001 From: Julia Gru <56249914+julczka@users.noreply.github.com> Date: Wed, 12 Apr 2023 18:26:40 +0200 Subject: [PATCH 33/52] fix message templates dates and chart --- .../logviewer/repository/log-viewer.repository.ts | 14 ++++++++++++-- .../logviewer/workspace/logviewer.context.ts | 5 +++-- .../views/overview/log-overview-view.element.ts | 4 ++-- .../components/donut-chart/donut-chart.element.ts | 4 +++- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/log-viewer.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/log-viewer.repository.ts index e25ee3fd95..81d0c80cac 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/log-viewer.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/repository/log-viewer.repository.ts @@ -57,10 +57,20 @@ export class UmbLogViewerRepository { this.#searchDataSource.deleteSavedSearchByName({ name }); } - async getMessageTemplates({ skip, take }: { skip: number; take: number }) { + async getMessageTemplates({ + skip, + take, + startDate, + endDate, + }: { + skip: number; + take: number; + startDate?: string; + endDate?: string; + }) { await this.#init(); - return this.#messagesDataSource.getLogViewerMessageTemplate({ skip, take }); + return this.#messagesDataSource.getLogViewerMessageTemplate({ skip, take, startDate, endDate }); } async getLogCount({ startDate, endDate }: { startDate?: string; endDate?: string }) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts index edc69fa1cf..c2d1283144 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts @@ -162,6 +162,7 @@ export class UmbLogViewerWorkspaceContext { this.#dateRange.next({ startDate, endDate }); this.validateLogSize(); this.getLogCount(); + this.getMessageTemplates(0, 10); } async getSavedSearches() { @@ -230,8 +231,8 @@ export class UmbLogViewerWorkspaceContext { } } - async getMessageTemplates(skip: number, take: number) { - const { data } = await this.#repository.getMessageTemplates({ skip, take }); + async getMessageTemplates(skip: number, take: number, ) { + const { data } = await this.#repository.getMessageTemplates({ skip, take,...this.#dateRange.getValue()}); if (data) { this.#messageTemplates.next(data); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/log-overview-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/log-overview-view.element.ts index ae80065098..b8fba68f66 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/log-overview-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/overview/log-overview-view.element.ts @@ -107,8 +107,8 @@ export class UmbLogViewerOverviewViewElement extends UmbLitElement { #observeErrorCount() { if (!this.#logViewerContext) return; - this.observe(this.#logViewerContext.logCount, () => { - this._errorCount = this._logLevelCount?.error ?? 0; + this.observe(this.#logViewerContext.logCount, (logLevelCount) => { + this._errorCount = logLevelCount?.error ?? 0; }); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-chart.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-chart.element.ts index fb3a7bfcd4..2f3f7892da 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-chart.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/donut-chart/donut-chart.element.ts @@ -9,6 +9,7 @@ export interface Circle { name: string; percent: number; kind: string; + number: number; } interface CircleWithCommands extends Circle { @@ -195,6 +196,7 @@ export class UmbDonutChartElement extends LitElement { this._slices.map((slice) => { return { percent: this.#calculatePercentage(slice.amount), + number: slice.amount, color: slice.color, name: slice.name, kind: slice.kind, @@ -249,7 +251,7 @@ export class UmbDonutChartElement extends LitElement { const index = target.dataset.index as unknown as number; const circle = this.circles[index]; this._detailName = circle.name; - this._detailAmount = circle.percent; + this._detailAmount = circle.number; this._detailColor = circle.color; this._detailKind = circle.kind; } From f6c7a60d5b7c2f6190facc4c558980ca0f56b19b Mon Sep 17 00:00:00 2001 From: Julia Gru <56249914+julczka@users.noreply.github.com> Date: Wed, 12 Apr 2023 18:37:45 +0200 Subject: [PATCH 34/52] fix silly styling --- .../log-viewer-messages-list.element.ts | 35 ++++++++++--------- .../views/search/log-search-view.element.ts | 1 + 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-messages-list.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-messages-list.element.ts index 896fedc78c..b185f59144 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-messages-list.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-messages-list.element.ts @@ -11,6 +11,9 @@ export class UmbLogViewerMessagesListElement extends UmbLitElement { static styles = [ UUITextStyles, css` + :host { + display: block; + } #message-list-header { display: flex; font-weight: 600; @@ -129,23 +132,21 @@ export class UmbLogViewerMessagesListElement extends UmbLitElement {
    Machine name
    Message
    - - ${this._logs.length > 0 - ? html` ${this._logs.map( - (log) => html`` - )}` - : html` - Sorry, we cannot find what you are looking for. - `} - + ${this._logs.length > 0 + ? html` ${this._logs.map( + (log) => html`` + )}` + : html` + Sorry, we cannot find what you are looking for. + `} ${this._renderPagination()} `; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/log-search-view.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/log-search-view.element.ts index 0296fcc686..79e8f9e216 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/log-search-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/log-search-view.element.ts @@ -12,6 +12,7 @@ export class UmbLogViewerSearchViewElement extends UmbLitElement { css` #layout { margin: 20px; + padding-bottom: 20px; } #levels-container, #input-container { From 30f7537e5e58b4b34a0137949137d5f0fbeaa708 Mon Sep 17 00:00:00 2001 From: Julia Gru <56249914+julczka@users.noreply.github.com> Date: Wed, 12 Apr 2023 18:49:37 +0200 Subject: [PATCH 35/52] fix polling bug --- .../settings/logviewer/workspace/logviewer.context.ts | 2 +- .../search/components/log-viewer-polling-button.element.ts | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts index c2d1283144..4b9de4b54d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts @@ -310,7 +310,7 @@ export class UmbLogViewerWorkspaceContext { } setPollingInterval(interval: PoolingInterval) { - this.#polling.update({ interval, enabled: true }); + this.#polling.update({ interval }); } toggleSortOrder() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-polling-button.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-polling-button.element.ts index 11474cce8d..f32fa860eb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-polling-button.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/views/search/components/log-viewer-polling-button.element.ts @@ -90,10 +90,11 @@ export class UmbLogViewerPollingButtonElement extends UmbLitElement { this.#logViewerContext?.togglePolling(); } - #setPolingInterval(interval: PoolingInterval) { + #setPolingInterval = (interval: PoolingInterval) => { this.#logViewerContext?.setPollingInterval(interval); + this.#closePoolingPopover(); - } + }; #openPoolingPopover() { this._pollingPopover.open = true; @@ -103,6 +104,7 @@ export class UmbLogViewerPollingButtonElement extends UmbLitElement { #closePoolingPopover() { this._pollingPopover.open = false; this._polingExpandSymbol.open = false; + this.#togglePolling(); } render() { From fed1be0271b7d035d84532bec47442e601b1ab71 Mon Sep 17 00:00:00 2001 From: Julia Gru <56249914+julczka@users.noreply.github.com> Date: Wed, 12 Apr 2023 18:55:06 +0200 Subject: [PATCH 36/52] make fatal black --- .../components/log-viewer-level-tag.element.ts | 5 ++++- .../logviewer-root/logviewer-root-workspace.element.ts | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-level-tag.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-level-tag.element.ts index 4bf03dbf85..1807638292 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-level-tag.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/components/log-viewer-level-tag.element.ts @@ -27,7 +27,10 @@ export class UmbLogViewerLevelTagElement extends LitElement { Information: { look: 'primary', color: 'positive' }, Warning: { look: 'primary', color: 'warning' }, Error: { look: 'primary', color: 'danger' }, - Fatal: { look: 'primary' }, + Fatal: { + look: 'primary', + style: 'background-color: var(--umb-log-viewer-fatal-color); color: var(--uui-color-surface)', + }, }; render() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts index 5e3e245ad0..f5423593a8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer-root/logviewer-root-workspace.element.ts @@ -26,7 +26,7 @@ export class UmbLogViewerWorkspaceElement extends UmbLitElement { --umb-log-viewer-information-color: var(--uui-color-positive); --umb-log-viewer-warning-color: var(--uui-color-warning); --umb-log-viewer-error-color: var(--uui-color-danger); - --umb-log-viewer-fatal-color: var(--uui-color-default); + --umb-log-viewer-fatal-color: var(--uui-palette-black); --umb-log-viewer-verbose-color: var(--uui-color-current); } From 700252f3182de9c32dc81523915d107a3c645fb2 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 13 Apr 2023 11:03:59 +0200 Subject: [PATCH 37/52] reset filter expression when navigating to search with empty query --- .../settings/logviewer/workspace/logviewer.context.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts index 4b9de4b54d..6bec1b10e9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts @@ -114,10 +114,11 @@ export class UmbLogViewerWorkspaceContext { this.reset(); const searchQuery = query(); + let sanitizedQuery = ''; if (searchQuery.lq) { - const sanitizedQuery = decodeURIComponent(searchQuery.lq); - this.setFilterExpression(sanitizedQuery); + sanitizedQuery = decodeURIComponent(searchQuery.lq); } + this.setFilterExpression(sanitizedQuery); let validLogLevels: LogLevelModel[] = []; if (searchQuery.loglevels) { @@ -231,8 +232,8 @@ export class UmbLogViewerWorkspaceContext { } } - async getMessageTemplates(skip: number, take: number, ) { - const { data } = await this.#repository.getMessageTemplates({ skip, take,...this.#dateRange.getValue()}); + async getMessageTemplates(skip: number, take: number) { + const { data } = await this.#repository.getMessageTemplates({ skip, take, ...this.#dateRange.getValue() }); if (data) { this.#messageTemplates.next(data); From 07b1febdc99da81d153ac391049694c3164d020b Mon Sep 17 00:00:00 2001 From: Warren Buckley Date: Wed, 12 Apr 2023 16:13:41 +0100 Subject: [PATCH 38/52] WIP & messy but trying to serialize the object data NOTE: Currently gets so far before another circular dependancy this time its trying to serialize lit stuff - so way toooo deep --- .../debug/context-data.function.ts | 56 +++++++++++++++++-- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/debug/context-data.function.ts b/src/Umbraco.Web.UI.Client/libs/context-api/debug/context-data.function.ts index 1834d95002..ccdf4d4204 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/debug/context-data.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/debug/context-data.function.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-case-declarations */ /** * Change the collection of Contexts into a simplified array of data * @@ -39,11 +40,58 @@ function contextItemData(contextInstance:any):DebugContextItemData { } const value = contextInstance[key]; - if (typeof value === 'string' || typeof value === 'boolean') { - props.push({ key: key, value: value, type: typeof value }); - } else { - props.push({ key: key, type: typeof value }); + const valueType = typeof value; + + switch (valueType) { + case 'string': + case 'boolean': + case 'number': + props.push({ key: key, value: value, type: typeof value }); + break; + + case 'object': + console.log('I AM OBJECT', value); + + const objValue = value; + const jsonString = JSON.stringify(objValue, function(key, value) { + const cache: any[] = []; + console.log('OBJ JSON key', key); + console.log('OBJ JSON value', value); + console.log('OBJ JSON value typeof', typeof value); + + if(key === 'observers'){ + console.log('REMOVE OBSERVERS'); + return undefined; + } + + if (typeof value === "object" && value !== null) { + if (cache.includes(value)) { + // Circular reference found, remove the property + return undefined; + } + + // Store the value in our cache + cache.push(value); + } + return value; + }); + + console.log('OBJ JSON string', jsonString); + + props.push({ key: key, type: typeof value }); + break; + + default: + props.push({ key: key, type: typeof value }); } + + + + // if (typeof value === 'string' || typeof value === 'boolean' || typeof value === 'number') { + // props.push({ key: key, value: value, type: typeof value }); + // } else { + // props.push({ key: key, type: typeof value }); + // } } contextItemData = { ...contextItemData, properties: props }; From 1dcf75c32a9262650c28192ee333dd1b8bbb64ff Mon Sep 17 00:00:00 2001 From: Warren Buckley Date: Thu, 13 Apr 2023 10:04:13 +0100 Subject: [PATCH 39/52] Attempt number two - data returned doesn't seem right :S --- .../debug/context-data.function.ts | 79 +++++++++++++++---- 1 file changed, 65 insertions(+), 14 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/debug/context-data.function.ts b/src/Umbraco.Web.UI.Client/libs/context-api/debug/context-data.function.ts index ccdf4d4204..73f307f210 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/debug/context-data.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/debug/context-data.function.ts @@ -54,31 +54,74 @@ function contextItemData(contextInstance:any):DebugContextItemData { const objValue = value; const jsonString = JSON.stringify(objValue, function(key, value) { - const cache: any[] = []; - console.log('OBJ JSON key', key); - console.log('OBJ JSON value', value); - console.log('OBJ JSON value typeof', typeof value); + const cache: any[] = []; + const valueTypeOfProp = typeof value; + + console.log('Key', key); + console.log('Value', value); + console.log('TypeOf', valueTypeOfProp); + + // Remove the 'observers' property if(key === 'observers'){ console.log('REMOVE OBSERVERS'); return undefined; } - if (typeof value === "object" && value !== null) { - if (cache.includes(value)) { - // Circular reference found, remove the property - return undefined; - } - - // Store the value in our cache - cache.push(value); + if(key === 'host'){ + console.log('REMOVE HOST'); + return undefined; } - return value; + + if(key.startsWith('_')){ + console.log('STARTED WITH _'); + return undefined;; + } + + + switch(valueTypeOfProp){ + case 'string': + case 'boolean': + case 'number': + case 'bigint': + return value; + + case 'object': + console.log('Prop inside OBJ is another OBJ', value); + + if (typeof value === "object" && value !== null) { + if (cache.includes(value)) { + // Circular reference found, remove the property + return undefined; + } + + // Store the value in our cache + cache.push(value); + } + + return value; + + default: + console.log('WHAT AM I?', value, valueTypeOfProp); + return undefined; + } + + + // if (typeof value === "object" && value !== null) { + // if (cache.includes(value)) { + // // Circular reference found, remove the property + // return undefined; + // } + + // // Store the value in our cache + // cache.push(value); + // } + // return value; }); console.log('OBJ JSON string', jsonString); - props.push({ key: key, type: typeof value }); + props.push({ key: key, type: typeof value, value: jsonString }); break; default: @@ -104,6 +147,14 @@ function contextItemData(contextInstance:any):DebugContextItemData { return contextItemData; }; +function jsonReplacer(key: any, value: any) { + // Filtering out properties + if (key === 'observers') { + return undefined; + } + return value; +} + /** * Gets a list of methods from a class * From 0e7757052731e758644652e4897995c2f0d3a39b Mon Sep 17 00:00:00 2001 From: Warren Buckley Date: Thu, 13 Apr 2023 10:51:04 +0100 Subject: [PATCH 40/52] Simplify the problem and show if something is an RxJS subscribable, a HTML WebComponent or some other object --- .../debug/context-data.function.ts | 96 +++---------------- .../shared/components/debug/debug.element.ts | 15 ++- 2 files changed, 23 insertions(+), 88 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/debug/context-data.function.ts b/src/Umbraco.Web.UI.Client/libs/context-api/debug/context-data.function.ts index 73f307f210..a2a8179474 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/debug/context-data.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/debug/context-data.function.ts @@ -50,91 +50,27 @@ function contextItemData(contextInstance:any):DebugContextItemData { break; case 'object': - console.log('I AM OBJECT', value); - const objValue = value; - const jsonString = JSON.stringify(objValue, function(key, value) { + // Check if the object is an observable (by checking if it has a subscribe method/function) + const isSubscribeLike = 'subscribe' in value && typeof value['subscribe'] === 'function'; + const isWebComponent = value instanceof HTMLElement; - const cache: any[] = []; - const valueTypeOfProp = typeof value; + let valueToDisplay = "Complex Object"; + if(isWebComponent){ + const tagName = value.tagName.toLowerCase(); - console.log('Key', key); - console.log('Value', value); - console.log('TypeOf', valueTypeOfProp); + valueToDisplay = `Web Component <${tagName}>`; + } else if(isSubscribeLike){ + valueToDisplay = "Subscribable"; + } - // Remove the 'observers' property - if(key === 'observers'){ - console.log('REMOVE OBSERVERS'); - return undefined; - } - - if(key === 'host'){ - console.log('REMOVE HOST'); - return undefined; - } - - if(key.startsWith('_')){ - console.log('STARTED WITH _'); - return undefined;; - } - - - switch(valueTypeOfProp){ - case 'string': - case 'boolean': - case 'number': - case 'bigint': - return value; - - case 'object': - console.log('Prop inside OBJ is another OBJ', value); - - if (typeof value === "object" && value !== null) { - if (cache.includes(value)) { - // Circular reference found, remove the property - return undefined; - } - - // Store the value in our cache - cache.push(value); - } - - return value; - - default: - console.log('WHAT AM I?', value, valueTypeOfProp); - return undefined; - } - - - // if (typeof value === "object" && value !== null) { - // if (cache.includes(value)) { - // // Circular reference found, remove the property - // return undefined; - // } - - // // Store the value in our cache - // cache.push(value); - // } - // return value; - }); - - console.log('OBJ JSON string', jsonString); - - props.push({ key: key, type: typeof value, value: jsonString }); + props.push({ key: key, type: typeof value, value: valueToDisplay }); break; default: props.push({ key: key, type: typeof value }); + break; } - - - - // if (typeof value === 'string' || typeof value === 'boolean' || typeof value === 'number') { - // props.push({ key: key, value: value, type: typeof value }); - // } else { - // props.push({ key: key, type: typeof value }); - // } } contextItemData = { ...contextItemData, properties: props }; @@ -147,14 +83,6 @@ function contextItemData(contextInstance:any):DebugContextItemData { return contextItemData; }; -function jsonReplacer(key: any, value: any) { - // Filtering out properties - if (key === 'observers') { - return undefined; - } - return value; -} - /** * Gets a list of methods from a class * diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/debug.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/debug.element.ts index 33f35f8f52..c0161b597c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/debug.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/debug/debug.element.ts @@ -180,10 +180,17 @@ export class UmbDebugElement extends UmbLitElement { const props: TemplateResult[] = []; instance.properties?.forEach((property) => { - if (property.type === 'string') { - props.push(html`
  • ${property.key} = ${property.value}
  • `); - } else { - props.push(html`
  • ${property.key} (${property.type})
  • `); + switch(property.type){ + case 'string': + case 'number': + case 'boolean': + case 'object': + props.push(html`
  • ${property.key} (${property.type}) = ${property.value}
  • `); + break; + + default: + props.push(html`
  • ${property.key} (${property.type})
  • `); + break; } }); From 94cbe725af13a36f5912f1cdb6f1ba533989069e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 13 Apr 2023 13:48:10 +0200 Subject: [PATCH 41/52] remove double request to get init status --- src/Umbraco.Web.UI.Client/src/app.ts | 43 +++++++++++----------------- 1 file changed, 17 insertions(+), 26 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/app.ts b/src/Umbraco.Web.UI.Client/src/app.ts index 5707e9ec4d..35bcc3afd1 100644 --- a/src/Umbraco.Web.UI.Client/src/app.ts +++ b/src/Umbraco.Web.UI.Client/src/app.ts @@ -46,26 +46,24 @@ export class UmbAppElement extends UmbLitElement { { path: 'upgrade', component: () => import('./upgrader/upgrader.element'), - guards: [this._isAuthorizedGuard('/upgrade')], + guards: [this.#isAuthorizedGuard('/upgrade')], }, { path: '**', component: () => import('./backoffice/backoffice.element'), - guards: [this._isAuthorizedGuard()], + guards: [this.#isAuthorizedGuard()], }, ]; - private _umbIconRegistry = new UmbIconStore(); - - private _iconRegistry = new UUIIconRegistryEssential(); - private _runtimeLevel = RuntimeLevelModel.UNKNOWN; + #umbIconRegistry = new UmbIconStore(); + #uuiIconRegistry = new UUIIconRegistryEssential(); + #runtimeLevel = RuntimeLevelModel.UNKNOWN; constructor() { super(); - - this._umbIconRegistry.attach(this); - - this._setup(); + this.#umbIconRegistry.attach(this); + this.#uuiIconRegistry.attach(this); + this.#setInitStatus(); } connectedCallback() { @@ -79,8 +77,6 @@ export class UmbAppElement extends UmbLitElement { this.provideContext('UMBRACOBASE', OpenAPI.BASE); - this._setInitStatus(); - // Listen for the debug event from the component this.addEventListener(umbDebugContextEventType, (event: any) => { // Once we got to the outter most component @@ -104,19 +100,14 @@ export class UmbAppElement extends UmbLitElement { }); } - private async _setup() { - await this._setInitStatus(); - this._iconRegistry.attach(this); - } - - private async _setInitStatus() { + async #setInitStatus() { const { data } = await tryExecuteAndNotify(this, ServerResource.getServerStatus()); - this._runtimeLevel = data?.serverStatus ?? RuntimeLevelModel.UNKNOWN; - this._redirect(); + this.#runtimeLevel = data?.serverStatus ?? RuntimeLevelModel.UNKNOWN; + this.#redirect(); } - private _redirect() { - switch (this._runtimeLevel) { + #redirect() { + switch (this.#runtimeLevel) { case RuntimeLevelModel.INSTALL: history.replaceState(null, '', 'install'); break; @@ -137,18 +128,18 @@ export class UmbAppElement extends UmbLitElement { } default: - throw new Error(`Unsupported runtime level: ${this._runtimeLevel}`); + throw new Error(`Unsupported runtime level: ${this.#runtimeLevel}`); } } - private _isAuthorized(): boolean { + #isAuthorized(): boolean { return true; // TODO: Return true for now, until new login page is up and running //return sessionStorage.getItem('is-authenticated') === 'true'; } - private _isAuthorizedGuard(redirectTo?: string): Guard { + #isAuthorizedGuard(redirectTo?: string): Guard { return () => { - if (this._isAuthorized()) { + if (this.#isAuthorized()) { return true; } From 72abe48dca2a9ea4a1e7a990d01b95d9045de64b Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 14 Apr 2023 09:49:17 +0200 Subject: [PATCH 42/52] update uui to 1.2.0-rc.3 --- src/Umbraco.Web.UI.Client/package-lock.json | 1812 +++++++++---------- src/Umbraco.Web.UI.Client/package.json | 4 +- 2 files changed, 908 insertions(+), 908 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index f257dae220..8b9729f5f3 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -9,8 +9,8 @@ "version": "0.0.0", "license": "MIT", "dependencies": { - "@umbraco-ui/uui": "^1.2.0-rc.2", - "@umbraco-ui/uui-css": "^1.2.0-rc.2", + "@umbraco-ui/uui": "^1.2.0-rc.3", + "@umbraco-ui/uui-css": "^1.2.0-rc.3", "element-internals-polyfill": "^1.1.19", "lit": "^2.7.0", "lodash-es": "4.17.21", @@ -5704,780 +5704,780 @@ } }, "node_modules/@umbraco-ui/uui": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui/-/uui-1.2.0-rc.2.tgz", - "integrity": "sha512-E8CrJYKLBcCnshV+nTVkfkL9I+0sJbBjKMHOVr/jCOj6Dw9mGytq0bmq8EIT0QcqZ6teZZplkwW2JPQauuv5JA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui/-/uui-1.2.0-rc.3.tgz", + "integrity": "sha512-40mfNOaZYJioMhnp7iPs68U9NlWbnkh3OuNCy5oztXq+OmEHLDVJY0YDiieUEFUnxIjgHN1SKPJplykjog6X0A==", "dependencies": { - "@umbraco-ui/uui-action-bar": "1.2.0-rc.2", - "@umbraco-ui/uui-avatar": "1.2.0-rc.2", - "@umbraco-ui/uui-avatar-group": "1.2.0-rc.2", - "@umbraco-ui/uui-badge": "1.2.0-rc.2", - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-boolean-input": "1.2.0-rc.2", - "@umbraco-ui/uui-box": "1.2.0-rc.2", - "@umbraco-ui/uui-breadcrumbs": "1.2.0-rc.2", - "@umbraco-ui/uui-button": "1.2.0-rc.2", - "@umbraco-ui/uui-button-group": "1.2.0-rc.2", - "@umbraco-ui/uui-button-inline-create": "1.2.0-rc.2", - "@umbraco-ui/uui-card": "1.2.0-rc.2", - "@umbraco-ui/uui-card-content-node": "1.2.0-rc.2", - "@umbraco-ui/uui-card-media": "1.2.0-rc.2", - "@umbraco-ui/uui-card-user": "1.2.0-rc.2", - "@umbraco-ui/uui-caret": "1.2.0-rc.2", - "@umbraco-ui/uui-checkbox": "1.2.0-rc.2", - "@umbraco-ui/uui-color-area": "1.2.0-rc.2", - "@umbraco-ui/uui-color-picker": "1.2.0-rc.2", - "@umbraco-ui/uui-color-slider": "1.2.0-rc.2", - "@umbraco-ui/uui-color-swatch": "1.2.0-rc.2", - "@umbraco-ui/uui-color-swatches": "1.2.0-rc.2", - "@umbraco-ui/uui-combobox": "1.2.0-rc.2", - "@umbraco-ui/uui-combobox-list": "1.2.0-rc.2", - "@umbraco-ui/uui-css": "1.2.0-rc.2", - "@umbraco-ui/uui-dialog": "1.2.0-rc.2", - "@umbraco-ui/uui-dialog-layout": "1.2.0-rc.2", - "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.2", - "@umbraco-ui/uui-file-preview": "1.2.0-rc.2", - "@umbraco-ui/uui-form": "1.2.0-rc.2", - "@umbraco-ui/uui-form-layout-item": "1.2.0-rc.2", - "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.2", - "@umbraco-ui/uui-icon": "1.2.0-rc.2", - "@umbraco-ui/uui-icon-registry": "1.2.0-rc.2", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2", - "@umbraco-ui/uui-input": "1.2.0-rc.2", - "@umbraco-ui/uui-input-file": "1.2.0-rc.2", - "@umbraco-ui/uui-input-lock": "1.2.0-rc.2", - "@umbraco-ui/uui-input-password": "1.2.0-rc.2", - "@umbraco-ui/uui-keyboard-shortcut": "1.2.0-rc.2", - "@umbraco-ui/uui-label": "1.2.0-rc.2", - "@umbraco-ui/uui-loader": "1.2.0-rc.2", - "@umbraco-ui/uui-loader-bar": "1.2.0-rc.2", - "@umbraco-ui/uui-loader-circle": "1.2.0-rc.2", - "@umbraco-ui/uui-menu-item": "1.2.0-rc.2", - "@umbraco-ui/uui-modal": "1.2.0-rc.2", - "@umbraco-ui/uui-pagination": "1.2.0-rc.2", - "@umbraco-ui/uui-popover": "1.2.0-rc.2", - "@umbraco-ui/uui-progress-bar": "1.2.0-rc.2", - "@umbraco-ui/uui-radio": "1.2.0-rc.2", - "@umbraco-ui/uui-range-slider": "1.2.0-rc.2", - "@umbraco-ui/uui-ref": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-list": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node-data-type": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node-document-type": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node-form": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node-member": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node-package": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node-user": "1.2.0-rc.2", - "@umbraco-ui/uui-scroll-container": "1.2.0-rc.2", - "@umbraco-ui/uui-select": "1.2.0-rc.2", - "@umbraco-ui/uui-slider": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-file": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-lock": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-more": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-sort": "1.2.0-rc.2", - "@umbraco-ui/uui-table": "1.2.0-rc.2", - "@umbraco-ui/uui-tabs": "1.2.0-rc.2", - "@umbraco-ui/uui-tag": "1.2.0-rc.2", - "@umbraco-ui/uui-textarea": "1.2.0-rc.2", - "@umbraco-ui/uui-toast-notification": "1.2.0-rc.2", - "@umbraco-ui/uui-toast-notification-container": "1.2.0-rc.2", - "@umbraco-ui/uui-toast-notification-layout": "1.2.0-rc.2", - "@umbraco-ui/uui-toggle": "1.2.0-rc.2" + "@umbraco-ui/uui-action-bar": "1.2.0-rc.3", + "@umbraco-ui/uui-avatar": "1.2.0-rc.3", + "@umbraco-ui/uui-avatar-group": "1.2.0-rc.3", + "@umbraco-ui/uui-badge": "1.2.0-rc.3", + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-boolean-input": "1.2.0-rc.3", + "@umbraco-ui/uui-box": "1.2.0-rc.3", + "@umbraco-ui/uui-breadcrumbs": "1.2.0-rc.3", + "@umbraco-ui/uui-button": "1.2.0-rc.3", + "@umbraco-ui/uui-button-group": "1.2.0-rc.3", + "@umbraco-ui/uui-button-inline-create": "1.2.0-rc.3", + "@umbraco-ui/uui-card": "1.2.0-rc.3", + "@umbraco-ui/uui-card-content-node": "1.2.0-rc.3", + "@umbraco-ui/uui-card-media": "1.2.0-rc.3", + "@umbraco-ui/uui-card-user": "1.2.0-rc.3", + "@umbraco-ui/uui-caret": "1.2.0-rc.3", + "@umbraco-ui/uui-checkbox": "1.2.0-rc.3", + "@umbraco-ui/uui-color-area": "1.2.0-rc.3", + "@umbraco-ui/uui-color-picker": "1.2.0-rc.3", + "@umbraco-ui/uui-color-slider": "1.2.0-rc.3", + "@umbraco-ui/uui-color-swatch": "1.2.0-rc.3", + "@umbraco-ui/uui-color-swatches": "1.2.0-rc.3", + "@umbraco-ui/uui-combobox": "1.2.0-rc.3", + "@umbraco-ui/uui-combobox-list": "1.2.0-rc.3", + "@umbraco-ui/uui-css": "1.2.0-rc.3", + "@umbraco-ui/uui-dialog": "1.2.0-rc.3", + "@umbraco-ui/uui-dialog-layout": "1.2.0-rc.3", + "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.3", + "@umbraco-ui/uui-file-preview": "1.2.0-rc.3", + "@umbraco-ui/uui-form": "1.2.0-rc.3", + "@umbraco-ui/uui-form-layout-item": "1.2.0-rc.3", + "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.3", + "@umbraco-ui/uui-icon": "1.2.0-rc.3", + "@umbraco-ui/uui-icon-registry": "1.2.0-rc.3", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.3", + "@umbraco-ui/uui-input": "1.2.0-rc.3", + "@umbraco-ui/uui-input-file": "1.2.0-rc.3", + "@umbraco-ui/uui-input-lock": "1.2.0-rc.3", + "@umbraco-ui/uui-input-password": "1.2.0-rc.3", + "@umbraco-ui/uui-keyboard-shortcut": "1.2.0-rc.3", + "@umbraco-ui/uui-label": "1.2.0-rc.3", + "@umbraco-ui/uui-loader": "1.2.0-rc.3", + "@umbraco-ui/uui-loader-bar": "1.2.0-rc.3", + "@umbraco-ui/uui-loader-circle": "1.2.0-rc.3", + "@umbraco-ui/uui-menu-item": "1.2.0-rc.3", + "@umbraco-ui/uui-modal": "1.2.0-rc.3", + "@umbraco-ui/uui-pagination": "1.2.0-rc.3", + "@umbraco-ui/uui-popover": "1.2.0-rc.3", + "@umbraco-ui/uui-progress-bar": "1.2.0-rc.3", + "@umbraco-ui/uui-radio": "1.2.0-rc.3", + "@umbraco-ui/uui-range-slider": "1.2.0-rc.3", + "@umbraco-ui/uui-ref": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-list": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node-data-type": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node-document-type": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node-form": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node-member": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node-package": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node-user": "1.2.0-rc.3", + "@umbraco-ui/uui-scroll-container": "1.2.0-rc.3", + "@umbraco-ui/uui-select": "1.2.0-rc.3", + "@umbraco-ui/uui-slider": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-file": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-lock": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-more": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-sort": "1.2.0-rc.3", + "@umbraco-ui/uui-table": "1.2.0-rc.3", + "@umbraco-ui/uui-tabs": "1.2.0-rc.3", + "@umbraco-ui/uui-tag": "1.2.0-rc.3", + "@umbraco-ui/uui-textarea": "1.2.0-rc.3", + "@umbraco-ui/uui-toast-notification": "1.2.0-rc.3", + "@umbraco-ui/uui-toast-notification-container": "1.2.0-rc.3", + "@umbraco-ui/uui-toast-notification-layout": "1.2.0-rc.3", + "@umbraco-ui/uui-toggle": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-action-bar": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-action-bar/-/uui-action-bar-1.2.0-rc.2.tgz", - "integrity": "sha512-JI9n1/gB6cr+7k0+v+HVAnfXCkZIN3UYbC8BhC+YinMsKIIWiLgo/FmgClgHmJ9zPD9EhAVqUa8wViM03npyDg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-action-bar/-/uui-action-bar-1.2.0-rc.3.tgz", + "integrity": "sha512-kxMgIYNnE/2DGIuvdfWsY1zCU0zwbPxEQnhhGgqP6SjgxN+c01yid1w7R4hF1DwS5gtuZWJvfQEmdM7r5x3ctw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-button-group": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-button-group": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-avatar": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar/-/uui-avatar-1.2.0-rc.2.tgz", - "integrity": "sha512-WnVicYfGExAKA7gXHjVk4dcANRrWYnXLlAWiRS9SOVDFUYezbNbX82Nt2rMGxZ5K3TJr+WWxBa0b2AYhz/pWpw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar/-/uui-avatar-1.2.0-rc.3.tgz", + "integrity": "sha512-ZlKyIaXxXZR7VXEKTHj5aNmw4UKxAdD4G5vb+5/rYzSKQ/yf37nVDtMjvDQIFRQiwMpxl9tQ3oEe3SlafCmLiw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-avatar-group": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar-group/-/uui-avatar-group-1.2.0-rc.2.tgz", - "integrity": "sha512-bEtJzr4tC8oL4KszNxqu3ey1DPg9hZnaEND7p8RDXCknZLpi9flhpU73esvskiCRSJr5CTu0pTwJwOR+Bhwr9Q==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar-group/-/uui-avatar-group-1.2.0-rc.3.tgz", + "integrity": "sha512-7GLMnr3uAOsK8keZXITZTuNW8DqhqMhR5tknY1sWDJZ57vH5C+aJUDVvwcAs97W03Sjn2PRx5ZzNQbeV4s0SKg==", "dependencies": { - "@umbraco-ui/uui-avatar": "1.2.0-rc.2", - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-avatar": "1.2.0-rc.3", + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-badge": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-badge/-/uui-badge-1.2.0-rc.2.tgz", - "integrity": "sha512-Z/zxDmf5WbeXo+3CrB62TOHgg5cEcKNB4vc06NAllypzLBKdBPjRe3FtBtRL8ExwZmXoAlJmlItr6nEnfogKUQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-badge/-/uui-badge-1.2.0-rc.3.tgz", + "integrity": "sha512-nehPDh2nKW0JxtIjWAoUJ+Rj+8ZCBsPeaRgqRKetOxfmMhQHvq0Yw+r8DxgCU+5VXdR6TEpEojvTioln6zErgw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-base": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.2.0-rc.2.tgz", - "integrity": "sha512-rGHM+OgldohqNlq5B1BMcpVkZNMu8A0X5uN6cG74qGg+WXqXbX9XlRFxMMuoxCTgtqowGZMn7St+Tu3O8GQAiA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.2.0-rc.3.tgz", + "integrity": "sha512-qM1dDv1nCEIQZw4licg+FTpS9O69TWRZ7zf2XS30Y8qhVtkibUSi+DbM6pimxYvdlCnGYgDpB59yDqAWdDxwTQ==", "dependencies": { "lit": "^2.3.1" } }, "node_modules/@umbraco-ui/uui-boolean-input": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-boolean-input/-/uui-boolean-input-1.2.0-rc.2.tgz", - "integrity": "sha512-W3qKtrH1c+nPe0yuz8sySf6hF7rOK9Hg3I2HZ5jRmoKnDmTLiZpXhDDyaYKy1oH5n/WdRlJx9aBaZG5TMmRqpg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-boolean-input/-/uui-boolean-input-1.2.0-rc.3.tgz", + "integrity": "sha512-IPiOtns6qGFTCRwAg7V1gVHJnAk+48bCRtxNo9MneHx2TefgRYnLAmpCx11KGDBryguQPr8w+ep93WE6/Wh7nw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-box": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-box/-/uui-box-1.2.0-rc.2.tgz", - "integrity": "sha512-c3rqT0KdCnBqWv8Lbzpetj/MldQSTQ7/7uxTtHcS+Wclkvr+ktKeai45NebiKqDCb6l3scy2Va0TRoJBUNmofA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-box/-/uui-box-1.2.0-rc.3.tgz", + "integrity": "sha512-qBbWCzB7NhsAzK/7KkG1Au8x8fJeuYaD5YexIgSzfwwHoIAogRCj/0jY1aiJD1SCtatWzmi2iEJGD7XrxQ3a+w==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-css": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-css": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-breadcrumbs": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-breadcrumbs/-/uui-breadcrumbs-1.2.0-rc.2.tgz", - "integrity": "sha512-xX93r/n6dKY1D0wWRx2FKDVtJ2Yja91KPheHExSPuBuwUI0C0hBI02U+AhWjr/6+hUl+Kc0CWOdoYNkuum3RZg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-breadcrumbs/-/uui-breadcrumbs-1.2.0-rc.3.tgz", + "integrity": "sha512-kkjRYmmMviUHXDtITOLwtByZsNj3ZJRYCduoDsWNazNwkE77HGDre76yzWQZEIekGMxq4Jq3Ms5XfDROcvTzHg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-button": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button/-/uui-button-1.2.0-rc.2.tgz", - "integrity": "sha512-IVtsxvRPT8on8vomxCWWRwhJbDl8dDmeUxSFxOPm/LrDZ8Y3sVf5Z248mBVCvX87E9AsBYkd7WX4KRDf3vubFQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button/-/uui-button-1.2.0-rc.3.tgz", + "integrity": "sha512-rd0ceJTO2oX+W0kJcMt+6qz7DKl/PI4XiKXkJ6p1O1Tz3aZoOiCnB1J+PZKZjduUMcoPlqSMdjzEwYu4rHYveA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-button-group": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-group/-/uui-button-group-1.2.0-rc.2.tgz", - "integrity": "sha512-sNxAiZGCbjKE95hiCroBb5DBIiIncpojpS0ARWFHXQAbjPi99qP72cE/+D/LF61NZwDKyyP+GKrzOmzgI4BQMw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-group/-/uui-button-group-1.2.0-rc.3.tgz", + "integrity": "sha512-AjjDSLkwElHXzo9Zh36ogxgy0UbWe4ZvPpyF5OoCfPvmt7P7/5qiSM8MhoJ/wgCTvgclHL2Vw/JPtFmG1DaiIg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-button-inline-create": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-inline-create/-/uui-button-inline-create-1.2.0-rc.2.tgz", - "integrity": "sha512-lNIFbBuiv113JyS8igqV7VhVppObRa34gpsflcmkCaCN2Khm6XVVsG4h226RNrhnQgjJ0J+r+/QTdaIUKLYX+w==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-inline-create/-/uui-button-inline-create-1.2.0-rc.3.tgz", + "integrity": "sha512-aWLjKobfXxuU4wltc6IRuFuiOHTPNa+3coajJ9FGs2JKXhgMZcAsva1k/qLd9x54yL2Z1dLQ02AOl5YmwIC3lw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-card": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card/-/uui-card-1.2.0-rc.2.tgz", - "integrity": "sha512-7hlGuunANegwsC6R4N+ILxNMHwXzB6tJzO/enMnrAQA7SkuLDEJB1rHy2TOhUOjEP1hQREM+rc+srX1wT8ZkCw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card/-/uui-card-1.2.0-rc.3.tgz", + "integrity": "sha512-cy5kbKMkfpiDc7ZdFjlgMmxor98UMq8OKkhL8+M6fyYPCFQI4mEiWlN+ZHsIMtZSBclln4ToOeIRTo3hQPUfXQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-card-content-node": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-content-node/-/uui-card-content-node-1.2.0-rc.2.tgz", - "integrity": "sha512-RA4VK+XoJQpQmc3sfkw/ZnrMGCn1HDiFowanwrR8SEYOPiMbmGUhRMnnmsa8WSOlNJ4KLpgN8vyaa7cvu93ZuA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-content-node/-/uui-card-content-node-1.2.0-rc.3.tgz", + "integrity": "sha512-FSUloNf1plSH6dlostjLCq4UHbRV+jZY8pggD++CaAu8ULpfxKXmOFnKsq17v4pBKKLa+vKeYU1Li2MXW8agyA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-card": "1.2.0-rc.2", - "@umbraco-ui/uui-icon": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-card": "1.2.0-rc.3", + "@umbraco-ui/uui-icon": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-card-media": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-media/-/uui-card-media-1.2.0-rc.2.tgz", - "integrity": "sha512-VDMbhevtLu0ucbhqVf17rKUrRfiNyyzttBFHX7NDUfeXGoqjTb98z6aproP5ujvqsWhECa5Q2iemTbxqVr/b7A==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-media/-/uui-card-media-1.2.0-rc.3.tgz", + "integrity": "sha512-KShrp9gkJyT2WTDwaRsVbwiuSchFwSNn/ihPHs0PI/sMGTuLIvgU08jUzSAKUny/uREAj2ttCeRgiLj18vCQ4A==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-card": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-file": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-card": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-file": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-card-user": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-user/-/uui-card-user-1.2.0-rc.2.tgz", - "integrity": "sha512-SVh2Rf1b/PL3WamMlSoLtm4bFLj9Ms33wS+94FVoEKikH/b/5OSHJyMnW4h6K/c2yyaMT7/y+tQhoc9oGcq5WQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-user/-/uui-card-user-1.2.0-rc.3.tgz", + "integrity": "sha512-+PqH5AMYnjPzRm7nLO9//4tJ74tOLyY0Fjlw2Z50QJ/m2EjCTQqf003XdSyeVHIZZA12wv/75GNwjiBEXqRbDg==", "dependencies": { - "@umbraco-ui/uui-avatar": "1.2.0-rc.2", - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-card": "1.2.0-rc.2" + "@umbraco-ui/uui-avatar": "1.2.0-rc.3", + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-card": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-caret": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-caret/-/uui-caret-1.2.0-rc.2.tgz", - "integrity": "sha512-/19J8MpMLkWT5u4QdGGmf7xqCZ0URB0YUq48rsn5y/efElWi1HG0ptJwGoqrW5hhKuLWEcZG4V1WVJxT4LgwZQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-caret/-/uui-caret-1.2.0-rc.3.tgz", + "integrity": "sha512-/M3gvU+Ub99RWCDvw7yn1CDKdoBZh3OjeuutGc9N5nDNhnFATam3BVyTXRcL02uGiFlxiCnsqphE3B3EUyBnOA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-checkbox": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-checkbox/-/uui-checkbox-1.2.0-rc.2.tgz", - "integrity": "sha512-shjQWdFjjRnbXGaZa6BkSxC2Q1jfSh5q6xVjkDrcGToOW94q6PURF6Vm1aodsBVWZGuJUzmTdT41mhG/SjsIPg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-checkbox/-/uui-checkbox-1.2.0-rc.3.tgz", + "integrity": "sha512-6hnVO9CCaPntu7SUOEX95fKnry67l8EWC/J55N2nERCV6/9OY7YwIdQditKMZnJKfj3HOtdBh8IAIvNqSM3Wkw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-boolean-input": "1.2.0-rc.2", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-boolean-input": "1.2.0-rc.3", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-color-area": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-area/-/uui-color-area-1.2.0-rc.2.tgz", - "integrity": "sha512-LwdmkwFu+3Ms9xm86sZovTItlWlHgVfHPOMnW+nxUkVMfwv1FjK4n4G7xVJ9nmpa8W4GjMwcENjvR0Qs2/JqqQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-area/-/uui-color-area-1.2.0-rc.3.tgz", + "integrity": "sha512-DPS54CIROx43c9JAXjhqDnv4IR2WQM5/MYN/4Xo+fL87nwpTnb7yfp7EmqBhX8uNRjSsb7TwILjGUs6YibBqBg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-base": "1.2.0-rc.3", "colord": "^2.9.3" } }, "node_modules/@umbraco-ui/uui-color-picker": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-picker/-/uui-color-picker-1.2.0-rc.2.tgz", - "integrity": "sha512-Ibn3dRJn/N8E9mRi2EWEFxyL4BwEbraytGNq7jD+iJZ9cIaZTU/zuxYGxNFNBP3EDsdD10iLnyBA9hfyEDxRcQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-picker/-/uui-color-picker-1.2.0-rc.3.tgz", + "integrity": "sha512-TZ0yxENsS1EMYp+sIzKO3X+yq3QAtNr0172FzgdCgkzsTatVsxpIz2K8rNQbBPInDFtNMZ/MztFaBPdYf9jbwA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-base": "1.2.0-rc.3", "colord": "^2.9.3" } }, "node_modules/@umbraco-ui/uui-color-slider": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-slider/-/uui-color-slider-1.2.0-rc.2.tgz", - "integrity": "sha512-aQTTizgH0oNHBFRXXr3tjhH456SRx7TVx797elcA9b0NtSFMuFwWZZI4qqppHTaVkVGZz/0coF973Xu8s5GSGg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-slider/-/uui-color-slider-1.2.0-rc.3.tgz", + "integrity": "sha512-CghdFKYDjCt6l6eHinRKNqFq//sZ2J5A/WOf6Cuz6poT+bCoSGT+AVqh/UbYtrbJtQ2ZsD06enIjOqbeoL+TpA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-color-swatch": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatch/-/uui-color-swatch-1.2.0-rc.2.tgz", - "integrity": "sha512-A7G0kz/ZEOANizHNek6nsq41XrCbCBE5XTE5Y0afUEbL3RM37yZHsjNFM4H1iJs57plt4Mfb85TQqb3h5HnHJA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatch/-/uui-color-swatch-1.2.0-rc.3.tgz", + "integrity": "sha512-AxVefkwHVd/ngI4BkEjsLwEIUi5kTB4yg2y6w8t9kafZRZWxWi4jLgZrddw60h8iVMUvbzXM3kjOZ9gLim9gVA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2", + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.3", "colord": "^2.9.3" } }, "node_modules/@umbraco-ui/uui-color-swatches": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatches/-/uui-color-swatches-1.2.0-rc.2.tgz", - "integrity": "sha512-FskzxqYXCfi3gV0BOfoo5acDJEpiHF2ZIcjYxgrPNtG2phjVZ1Mk1BinfKRRibXqKGU/uhAQxbNIygxW/C9bJA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatches/-/uui-color-swatches-1.2.0-rc.3.tgz", + "integrity": "sha512-mvquxgmkrqi1p8R7HskdlSUGiZKnqOZaQCPtDBnZRF/h+0wv1VYEAWtFzhyglpUVFWl6+djvyLvTOnV19zS3pQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-color-swatch": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-color-swatch": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-combobox": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox/-/uui-combobox-1.2.0-rc.2.tgz", - "integrity": "sha512-8BctuzQ1hoiAkhV4XU6sOICoKWn4EMIesWiQavl44IILuldrJhBc9PJlSkBeaOs8raOXCwWb7yhDf0w68rlY/w==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox/-/uui-combobox-1.2.0-rc.3.tgz", + "integrity": "sha512-z8jOSwDk0TWTvXtn2DLd/YsH3Nsi2ruECTDjf8VWYHIuxNCTMqIJv49yrIM33qmJUtITFT8ZU8kUGHWLbNLQmA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-button": "1.2.0-rc.2", - "@umbraco-ui/uui-combobox-list": "1.2.0-rc.2", - "@umbraco-ui/uui-icon": "1.2.0-rc.2", - "@umbraco-ui/uui-scroll-container": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-button": "1.2.0-rc.3", + "@umbraco-ui/uui-combobox-list": "1.2.0-rc.3", + "@umbraco-ui/uui-icon": "1.2.0-rc.3", + "@umbraco-ui/uui-scroll-container": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-combobox-list": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox-list/-/uui-combobox-list-1.2.0-rc.2.tgz", - "integrity": "sha512-hOnfyje4XzhPWgDlbfOlaJOIUlMvc0RmwpKmqFynZMo0wZ+zuPMQ34jjPRAkgDa7dHkkAmbhZczLHdPF6I9aFA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox-list/-/uui-combobox-list-1.2.0-rc.3.tgz", + "integrity": "sha512-wyunnv56FHVGkHm61a5I+zNYI4kdjqRllwqVjSo+BzxWhWwPIcTJguBHPlgd/3w7ir0GuhPJcLPb+1zoeB1PVw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-css": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.2.0-rc.2.tgz", - "integrity": "sha512-yEHxeUFqRPhxHblR/jjkNLabMFZXZ3aMGVGgehBvsGM01D3yQq9wvFe+qtjr4TGXs7v62DIT4bOtP0f45KfRRg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.2.0-rc.3.tgz", + "integrity": "sha512-E3Ytd10emwCUs1g7ByZkENp/1fCQo9wMjm8HStHfq5YVzdayHkyyJj5sTNv3dMEXy0Cac9gQ4lHjmBDE8wwDlA==", "dependencies": { "lit": "^2.2.2" } }, "node_modules/@umbraco-ui/uui-dialog": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog/-/uui-dialog-1.2.0-rc.2.tgz", - "integrity": "sha512-Jw0YfP4WJMaSsdvUGPjOQtFUiAlno2knxt709V2IugdbnfjgSYllBzQGNHWmbBFS1kJtURAcCWJX74B9P/qRfQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog/-/uui-dialog-1.2.0-rc.3.tgz", + "integrity": "sha512-DxHRc4qFOWft7JXHn3YqpC4YnIDHAppJK0DUKssOMM+es3UsdLW1jYMQ8gKCcNUaWx/dwcfA3NCDok4giFc8CA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-css": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-css": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-dialog-layout": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog-layout/-/uui-dialog-layout-1.2.0-rc.2.tgz", - "integrity": "sha512-gqFpO38XtYXQszCwUqt2jUqFHgcIIqf8+evlcGTXr1arFPpLfq2FWbEnXR83BjVRhHRCHhmLrbsoAZzwaJmToQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog-layout/-/uui-dialog-layout-1.2.0-rc.3.tgz", + "integrity": "sha512-QJIwo5eUtGZ36zOuURhMtTMezkqAh/Nl/O0p1xeawyun8sHh8rRSBCqC1goA7KIotKErD4eqrbvkENbR9Uhmfw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-file-dropzone": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-dropzone/-/uui-file-dropzone-1.2.0-rc.2.tgz", - "integrity": "sha512-Pm07+UkQmp+SXuvynjlKlc+/NOHBVve3k6hoPX5Z0mHWUG0XBG0WgbrTJoqgQYytbndt6AaE6vrKKyPE/VvoHw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-dropzone/-/uui-file-dropzone-1.2.0-rc.3.tgz", + "integrity": "sha512-YxYF+daaAl0YeCNoYxpvNbSeE1GCu5rDcMkrMbq8zRdoQ3KCqOi5p1DqSdOpIeOuna2/tBPK8McsehXgS0xR/Q==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-file-preview": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-preview/-/uui-file-preview-1.2.0-rc.2.tgz", - "integrity": "sha512-eG+BtfA+22KmY+UoMBp8iJDTWUoy2Iq0jLahWmHADaQ+HWUMJ/CXYFquNVfk2nQ5SmYrJV+qPC0d+ikf4UXVmQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-preview/-/uui-file-preview-1.2.0-rc.3.tgz", + "integrity": "sha512-uQvE8HGOFrcl6OKzb/tgHXZ3LnZU8i/HfzxTx0nh6538wdTqK7VWvRN65jPB3aerKrfl+8XMS67hRNfo/saU3Q==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-file": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-file": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-form": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form/-/uui-form-1.2.0-rc.2.tgz", - "integrity": "sha512-9iCKrLzmjpUaaL7l3C50UL3iJOYxqEY3aFLx9hRbpFzyQvwMmt/hcKiUeSEVjEtAIxpk5wUTwD7WlxeRve0POA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form/-/uui-form-1.2.0-rc.3.tgz", + "integrity": "sha512-Iz2JLK7lAKdX1B6aEQaGXaFuYKKH4i/DvJRltfRCIK4rn0OYmSp4RgcKyub/IuQkE8q8qNiyV3yS1vgSZQ9aHw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-form-layout-item": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-layout-item/-/uui-form-layout-item-1.2.0-rc.2.tgz", - "integrity": "sha512-jFmw83oA/ecFOItGc27oHUHa2c6gA0gpzS2qsyYs7pSYEqwUxxe5iWI4otl3Ioi/3GgJwp69qzmVaEYuBgy/Sw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-layout-item/-/uui-form-layout-item-1.2.0-rc.3.tgz", + "integrity": "sha512-SbFAAjzplF2RiufhFIESzvbQEsza/qvq3nbxaBBFVPsfW1QkfBsU1H55kf8yWyTFrTWVMrDbneUlu9o/Iq3XUQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-form-validation-message": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-validation-message/-/uui-form-validation-message-1.2.0-rc.2.tgz", - "integrity": "sha512-rbdJIO9uvSclc+8lRNcOv3ePp9Aa7wW7pZ6S8aY1bkV03vTAp7syKILNF70NIzxSq1yOKBE8xFXspHxDftdEVw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-validation-message/-/uui-form-validation-message-1.2.0-rc.3.tgz", + "integrity": "sha512-kVejule16/TGKFBxTIbR1DIrEXKQ0R+ssgdqJYBxBpYntimRlDS9Wmx895gWxrYkMzL4echSLx8S6S2Pht9Y9A==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-icon": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon/-/uui-icon-1.2.0-rc.2.tgz", - "integrity": "sha512-DKKco6oTG0XpwcYhLscRo22tF1R3Y/kQHn2tDi1T8IBez/AdknQPveYOGoUVC2jENngeNahuXNpWwgNvTpn4Zg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon/-/uui-icon-1.2.0-rc.3.tgz", + "integrity": "sha512-ajugRVP2leJLTVKuJoKE0Xm1tncaq/zrtCRbin9fPBkajOHlcUIX9D7G1U0/g/aVDR2ag24uhDZyDYP/MoSF1g==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-icon-registry": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry/-/uui-icon-registry-1.2.0-rc.2.tgz", - "integrity": "sha512-Tt9RiNBCsbsZo2uh1saw0V8Z0pIXOAvRr9UgBOdn0GJIYbKDtHV1yALyqcQ//qenwkkPB5a5ly0a3tJHzeej0w==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry/-/uui-icon-registry-1.2.0-rc.3.tgz", + "integrity": "sha512-d0r8v1PHog7TfZLECk5Jn9cIqO+KGn9YjWixGgexVzCTVyhDWYJ0zeGcOEZ14qcNLQkXGQXTkYccegVlrcSDUQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-icon": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-icon": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-icon-registry-essential": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry-essential/-/uui-icon-registry-essential-1.2.0-rc.2.tgz", - "integrity": "sha512-K93QxSybUhz7Q/UWZVqib2LGxlIQkTGF0fq7yDbGAYnx1OGJ7fKR0BjWok0G5Xz+7bCmjfNqTcb364XECUKpjw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry-essential/-/uui-icon-registry-essential-1.2.0-rc.3.tgz", + "integrity": "sha512-GaXUOIDg4mfRGvjlammUMLUaA/ksvCC4MIImgeYf3zAYXBzVX0XWbLatDlj7A2KwJkYOS/lWs2KJz17r11MA2A==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-icon-registry": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-icon-registry": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-input": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input/-/uui-input-1.2.0-rc.2.tgz", - "integrity": "sha512-+Spx/J0ofNL9Rozy05LdKBxDh8It32JzRjt3LCOuBPrN6Tme5HwCmcWtBK2Cn2HQ1zQJgnD+h1KItSyyYPXsnw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input/-/uui-input-1.2.0-rc.3.tgz", + "integrity": "sha512-/7qlTkn1se/RvXZ6PoFodyYWIOTtjgmdjCQ1r3y+DxjaelnhlJjymkQierpQY/S1VlPoqvJeJY3GfJipqpQHEQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-input-file": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-file/-/uui-input-file-1.2.0-rc.2.tgz", - "integrity": "sha512-zoFda6gYT1OSJDd9ObTzx4+xEL5/rBrzAZBniWJUQqrPPi3NfYrT+q4hY9c262F/HPbiyWYIH7xxMmr18EfNfw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-file/-/uui-input-file-1.2.0-rc.3.tgz", + "integrity": "sha512-BqVQs6HvGJxhNwDgQe002i6ToTxIpqhsuz9nWjh4BSh9i/6VqZkElyuNtlJEv9uMeyFJNlSids2GhhzpFv9Eaw==", "dependencies": { - "@umbraco-ui/uui-action-bar": "1.2.0-rc.2", - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-button": "1.2.0-rc.2", - "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.2", - "@umbraco-ui/uui-icon": "1.2.0-rc.2", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2" + "@umbraco-ui/uui-action-bar": "1.2.0-rc.3", + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-button": "1.2.0-rc.3", + "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.3", + "@umbraco-ui/uui-icon": "1.2.0-rc.3", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-input-lock": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-lock/-/uui-input-lock-1.2.0-rc.2.tgz", - "integrity": "sha512-jhWEm+qeJs4PZLEGNUs9DSTs3VAKe6IS70+i9fQQY0VQQgyDzMtAqf9A+93D6EgT6pLu7HdtfS1yZVIzAteEsg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-lock/-/uui-input-lock-1.2.0-rc.3.tgz", + "integrity": "sha512-JscAOMp9jWkVXxBUAs5bcRw3DpGCZDqnIb8Av0BZdy/0jRSXTwKKtvvaiad+vCe+pGlQhbA6v+hRWVsuAbeszg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-button": "1.2.0-rc.2", - "@umbraco-ui/uui-icon": "1.2.0-rc.2", - "@umbraco-ui/uui-input": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-button": "1.2.0-rc.3", + "@umbraco-ui/uui-icon": "1.2.0-rc.3", + "@umbraco-ui/uui-input": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-input-password": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-password/-/uui-input-password-1.2.0-rc.2.tgz", - "integrity": "sha512-MafMMXrAof7YUKQy+hwKfwOADwRQV7xKkDjagyobVsBp2ccCRndZKTOAyBBDTqu+7w/k0SbHd9BvC4xCvVUwrA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-password/-/uui-input-password-1.2.0-rc.3.tgz", + "integrity": "sha512-4zJMR+JUu4eGUUYwf5sX71sW9ABxtHRuO9ml8VVAGddh+4KRi/RRVOFQ2uZUWYiTNM9buLuLEWLGhy5vrTQ2YQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2", - "@umbraco-ui/uui-input": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.3", + "@umbraco-ui/uui-input": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-keyboard-shortcut": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-keyboard-shortcut/-/uui-keyboard-shortcut-1.2.0-rc.2.tgz", - "integrity": "sha512-iMvqmDNwU9R0w3D4xRb9nNdoYOiXQJfE+6ojwld84XhfyfMYGIwmiIlCnIzW6g8yFPIDOkF91B+wKgyk5xBlqQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-keyboard-shortcut/-/uui-keyboard-shortcut-1.2.0-rc.3.tgz", + "integrity": "sha512-NB9EKMSpXkiOU1yQvbo+97TlfOqvZmTzIqPeWG8uamShINTBpfV7ppV1czRAaWsolNIO0GoplBflH489tmh50A==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-label": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-label/-/uui-label-1.2.0-rc.2.tgz", - "integrity": "sha512-eYY9e7cPGdwkw3JvM54fPpjn28bkKi3IVkfgDgvVP71vbuoBGCOk4rMP/H2XLElwKFTEM6EDRsXqrth02Ws0SA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-label/-/uui-label-1.2.0-rc.3.tgz", + "integrity": "sha512-11bn7NCgdefJjVhR8YSXWM/MF6UiNZzBBjW8G7vrQEMFxm/3lFQ3vyzGIK25sjpFCBE2RHkso1VR9PI0FamfBA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-loader": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader/-/uui-loader-1.2.0-rc.2.tgz", - "integrity": "sha512-Vms+NrPH15BhhawaCIdTzC9vY/2oMwu4/3AdEzHznELx3OfZbrt57a+Cpaoq6ojJoynJdGHQ+Kl92cKcv2kk3A==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader/-/uui-loader-1.2.0-rc.3.tgz", + "integrity": "sha512-Icfkog5R6BXCFLO/xsqcOj4y1O+Tcm92iWGM5KR1xcpvQEVbHOEgxXpa1shLa2MqbdyB0q2ij5EYcCGhFPjM7A==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-loader-bar": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-bar/-/uui-loader-bar-1.2.0-rc.2.tgz", - "integrity": "sha512-dGXjMdWzndnWdbh6bNaeR3rP36Oi91l82Hx5mlByAKYVBG/q0J1nDn4gZhfczEx0ItaCq9uB8dfa3WolZKaMTw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-bar/-/uui-loader-bar-1.2.0-rc.3.tgz", + "integrity": "sha512-hi03ulGnY2M+N/uZgfENB2Yojg8M0b6CE8Kj9Uud65aWOxyQShKwTrCjGz0Bq1m/TPRhn0HQ7QEwedl2DMxDNA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-loader-circle": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-circle/-/uui-loader-circle-1.2.0-rc.2.tgz", - "integrity": "sha512-Djp2Vikv8t7y4yw7hrAveyRe5ASN2ooRCKrN49F2Tn8fKhi5NfZ0NRKMtIU+QZNzLMRA1mjrnxB2mqcD/xGsug==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-circle/-/uui-loader-circle-1.2.0-rc.3.tgz", + "integrity": "sha512-LZc/EWFgE4MAmqU1YIVA+3dF08EciMxk7wLrQGDiDVKEFUNCIyaNt9zoHsIk0CdKCpgfZ82Mq+DNf+CSTs+YbQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-menu-item": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-menu-item/-/uui-menu-item-1.2.0-rc.2.tgz", - "integrity": "sha512-i2YRq6DtxhjjpvhdbG6AVSWGMfY1sxBtylMwyWPMWCY/l0ozQrS8wiE34CEopvQszfnxKABb9nZYM6de3ybbZA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-menu-item/-/uui-menu-item-1.2.0-rc.3.tgz", + "integrity": "sha512-+d6SbMMIDHEZWBiOytwT3YilhSAHMpl/D5HVCfbtr7I5UhDcTL4nMpTBcc6y53bvhdnQnGCRIkIOjcgRk3cpEg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-loader-bar": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-loader-bar": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-modal": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-modal/-/uui-modal-1.2.0-rc.2.tgz", - "integrity": "sha512-mWGhjqb4xk4QJsflXByYy9wvKtUdSVyIQv4064zGSBWH9VgUkSmz3hHrBpjQU2MjCpj6XW96aeEIkg7mY9J0VA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-modal/-/uui-modal-1.2.0-rc.3.tgz", + "integrity": "sha512-1yzKLZl033YN7SPbxV8cyAg7g9gbv7jgblQWnvfM2m7YLT6Cut22H4uDU/ASYeLS6zDHMIvlzrpcqItoIwQcCw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-pagination": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-pagination/-/uui-pagination-1.2.0-rc.2.tgz", - "integrity": "sha512-tk5aS8NyugAPl7Dh8g8Igakup2k4eNT5clGvJacRRHIPBOn0p1gV6vKL3NDiVCmHHGLtgZMVnQQN7uSfm/Xj5w==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-pagination/-/uui-pagination-1.2.0-rc.3.tgz", + "integrity": "sha512-QrFfumL3hC+WcD5/h1rZ6m3THd0EHgYdygNZ5+Hp5AU5NBkwqhl17W2bSAtUwosB/+ssW5dlb1UqD9gIBly1Mw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-button": "1.2.0-rc.2", - "@umbraco-ui/uui-button-group": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-button": "1.2.0-rc.3", + "@umbraco-ui/uui-button-group": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-popover": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover/-/uui-popover-1.2.0-rc.2.tgz", - "integrity": "sha512-ecxT66ZrU/xTRs0vrpPIfr7YpykVtSEh/vwwo9DSkhaaIotPorMrRXi7LixS2mllslHvsETis6STCzsBylqB3w==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover/-/uui-popover-1.2.0-rc.3.tgz", + "integrity": "sha512-x1Hg/npbmbCsCvMKHAU6uxdQ9UTJJ6A1M2s2QxtySDlIYS8YzA/RM66QVuHxIxAx81eM+iS0nquHiVpQcu/c5A==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-progress-bar": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-progress-bar/-/uui-progress-bar-1.2.0-rc.2.tgz", - "integrity": "sha512-KaffpsaFfj/7w2gGziMoYLvcQLCaDFhhCvbOYZE2DyyagIcJMr59LQYbX0ma7cTtUKSaJTk4RB1SWzIEuDu9Mg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-progress-bar/-/uui-progress-bar-1.2.0-rc.3.tgz", + "integrity": "sha512-S4/KrmKR5GP5HYq/ILMuYT04n8x2hdMcdmfUPZGaOwW3V5q5nH3313Qp68q+iqegqErrZsYBrkE+DofsqS1pkQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-radio": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-radio/-/uui-radio-1.2.0-rc.2.tgz", - "integrity": "sha512-jfGK/wzXue9s/E026k9ZBThCodrzRbpw/xS8xX9YHq3NvJNjfPTMABuTM2VpW4sPZtkdpkjZKNreJAfpYJoPrA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-radio/-/uui-radio-1.2.0-rc.3.tgz", + "integrity": "sha512-RYZxGLL/VFiEVn2a5Fd298vA1G85BCmBg8VsxSql2GhawFzCNBMKnfXJzOkuV2uZORGDnnW5RFDPh1qqcwkjhw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-range-slider": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-range-slider/-/uui-range-slider-1.2.0-rc.2.tgz", - "integrity": "sha512-5K//peXBIAsOh9uAcY/8U+qoRxTaHGwfYl5SYjD/NnfpHXPY8xxXtMDHZcPXnSZLyVsoL2DSroFXgTLSJLsYlg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-range-slider/-/uui-range-slider-1.2.0-rc.3.tgz", + "integrity": "sha512-A1fyvDQ+qY59Sm+HkMzo8BVCp6Ipoi+AE8IH/C7GJ3/o0k8UxCZ4iSMWHtaiNSRY3kPWVkGX/P7MPdle2y7qBw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-ref": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref/-/uui-ref-1.2.0-rc.2.tgz", - "integrity": "sha512-Qdat4AxQt8neF1sIWvWDGoWkTDa3BHOhc8JUw7QxmcPwvv11Hvg62tAfRN7zbiVcTmpYIPoy6GV+tgAUn7TAIQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref/-/uui-ref-1.2.0-rc.3.tgz", + "integrity": "sha512-DXZSaofnpBl+tUEo7BB92M+oWjoJpHrjuf5y3BT0cVhKHNta/WW7xnC60yprfHNz1zdvwvhfuFioIPaoI1ljHA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-ref-list": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-list/-/uui-ref-list-1.2.0-rc.2.tgz", - "integrity": "sha512-t0iriFiVPLepRgB4JbCu8YNKBycHHusev3SBGtAV1NJ6uBKVcNgoKk2UCcmy4H9nq+pMAafXm/HX/Oq5F4JfZA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-list/-/uui-ref-list-1.2.0-rc.3.tgz", + "integrity": "sha512-CdM44A1JGa22TAbUBpalDbjezbwKv6riD+4IvN4LEQp6gPIiu5K/8QZma4tweP2k1986xMhgmDXqUIONb58RCw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-ref-node": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node/-/uui-ref-node-1.2.0-rc.2.tgz", - "integrity": "sha512-Ji90frchpuqcl/wro/Np4hRhQLa15pvb078UA+zOSpBLHO03Py/Bs6l3BzFYskfOntC3EFSHm6HxFntPjAKFzw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node/-/uui-ref-node-1.2.0-rc.3.tgz", + "integrity": "sha512-0UvQ7ycY57DImFTfXlYUKoEDdUIrTVMjfx1o7GIL1ZdZ1YM+0x/4wHZP1QGRk2ZQqj37AzTK/7Ps4zJZY4tTQA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-icon": "1.2.0-rc.2", - "@umbraco-ui/uui-ref": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-icon": "1.2.0-rc.3", + "@umbraco-ui/uui-ref": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-ref-node-data-type": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-data-type/-/uui-ref-node-data-type-1.2.0-rc.2.tgz", - "integrity": "sha512-aNV5GORnxkPvu0HWKfc7xzRDGYKMzeAXPLjYpcArKKFDfI95GTTNMvR9P0M/8IBJWiGb8oXCjMe1+YsVUCBSfw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-data-type/-/uui-ref-node-data-type-1.2.0-rc.3.tgz", + "integrity": "sha512-F3uyKNVpdALhcI7A0WP7UAIx5e8+r9jOdOxJpxBvNRe3xCnZEHzp1fa0z7oAIIqolkXxmbqmv84eS8zf4PVT1A==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-ref-node-document-type": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-document-type/-/uui-ref-node-document-type-1.2.0-rc.2.tgz", - "integrity": "sha512-WC3aCJjVhDNFF0aSvMf/wZkRzQMmAvkRQzcresG0J20xzGyNh8HiDVTFp24luT7l8vYqAeAl9NlLYbCWZAEyvA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-document-type/-/uui-ref-node-document-type-1.2.0-rc.3.tgz", + "integrity": "sha512-ol0QlxGWCzoVlEVL8gHh/Uc8X8K4YZWLd9heL/iimlYRVHSrVV0f8X1PeoQH1MkwcNCarPMavw1D6qyGpkPv/w==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-ref-node-form": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-form/-/uui-ref-node-form-1.2.0-rc.2.tgz", - "integrity": "sha512-UxK8tKD9pYuMU6rYfBcT3zyf/NM6LtnXCN/p9/3CWDhAeHJ4gdf6fFoPzgehZlxHl22BUQ0+bjZ2VF5/4KKtbQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-form/-/uui-ref-node-form-1.2.0-rc.3.tgz", + "integrity": "sha512-j6aB2iorTlqIJ7xp7+FkeuOsKm3qdol58dyAdh6OHvU6XPW7tVXDteO/9aQpYIjkobfLgfvfodC3r7dk2amKGA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-ref-node-member": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-member/-/uui-ref-node-member-1.2.0-rc.2.tgz", - "integrity": "sha512-I9RZAg0AZKLSlmJBu7iL9OHoNg5f+FLdDWv8cO060LRXGftjNdnjaLwlQFL5uxXvXwDI3E4i94XFThiju41fWw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-member/-/uui-ref-node-member-1.2.0-rc.3.tgz", + "integrity": "sha512-1rtjN/7tEak7pDmoEvUQwS7V8YEaPZE4ul1rviVRgUdrkdN0h0GPIdCbO5JJWqKk0k3UINbdS8eRr6u5jZZAfQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-ref-node-package": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-package/-/uui-ref-node-package-1.2.0-rc.2.tgz", - "integrity": "sha512-2tNl9S+J17uRSy6eSFJJ47b/zUuemm3UALaBII1+c5rWmUvtvs9ZYljX77VAkuwELKEMgExWjGQKaLQBTbvFMQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-package/-/uui-ref-node-package-1.2.0-rc.3.tgz", + "integrity": "sha512-Gt+pJcqO3SjK3Dw/dZ1/0FIsRfChXa/6NeUOYygQE0vCBNKCzMW3DbTa5HqOnjjLpnV+s0r6s2FtAqpsHVKCxA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-ref-node-user": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-user/-/uui-ref-node-user-1.2.0-rc.2.tgz", - "integrity": "sha512-sTrz9xhHrcv9Il27NMMSKTm7A50gpRF9z3vDWiZ0Ottg37oUkGiitgk4XI3AJOSWqDzNJjwuwUk6tAlwc6D5TQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-user/-/uui-ref-node-user-1.2.0-rc.3.tgz", + "integrity": "sha512-rL1oyMEvR9yeCV7GI0GtH6uoGQJ3rNjxD+3nvX52iS0HUU212A23wCPXjTtBkJvKcumm3WXpcG0LYZXTdO87tA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-scroll-container": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-scroll-container/-/uui-scroll-container-1.2.0-rc.2.tgz", - "integrity": "sha512-Aj2hiU05DFZ7eXab/zAXjitP9bM/TAM7HNVPOAl08BNpkemo0DYTtdFu4VmLIkqw6WtyxIVZ/N5pSJYMYovXYA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-scroll-container/-/uui-scroll-container-1.2.0-rc.3.tgz", + "integrity": "sha512-svSGFuPoTpJmq3raNjWuMIOQvYR6TrvzdtfDue2pQG725rNIKf5C32Vd/tr9pOo18JMtmWkk3G1tz17ZF6+VmA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-select": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-select/-/uui-select-1.2.0-rc.2.tgz", - "integrity": "sha512-X17ciKmnrtEut6RTrHvsOSIfwimPc0gT6kQoQFgPcTmF14Zr6edFPd6YKhWtjQNG9rVpmW1HK5bBSyeyiw/P4w==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-select/-/uui-select-1.2.0-rc.3.tgz", + "integrity": "sha512-C8RjztMPuHBhd0X9Wwvmzifwz9ljEqqN+m0FQGuO+dEKNskDI6ASGjdfTAch/NtxdJLjSztzx1I8h/FGv/0REA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-slider": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-slider/-/uui-slider-1.2.0-rc.2.tgz", - "integrity": "sha512-PRoKMCvGTejDg37dm5fGYxO7jFrHECPn20X3fv3bsVqnF5wH7RZ88dBW5oMNoYxoreph4SSQd5AsSQabuCpT4w==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-slider/-/uui-slider-1.2.0-rc.3.tgz", + "integrity": "sha512-HTNa+w9TNSA8IkZZxvNHrdjPbg6PirFo6GF1aC7R6nvJxkntEDBm2KyjmpyPT+bcLQ6aMKsYlLVY2q5o7M7C3A==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-symbol-expand": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-expand/-/uui-symbol-expand-1.2.0-rc.2.tgz", - "integrity": "sha512-i42zskMlDb7tivcFkFo5pXPo6Z+A2Sgu/MTChDzIEw3AK3/V2Lf8jNZtjL9Anjn1ZWg0Mq4GBjR5iv+pkjHZjw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-expand/-/uui-symbol-expand-1.2.0-rc.3.tgz", + "integrity": "sha512-UtGA0m6qtNEw6/6b57RSOZPzzgbdYlp4sz0z55lCpFbekQ16efMFIXNqaKAyeKjD9n0nRPdr4AhgLXARFgpLyg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-symbol-file": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file/-/uui-symbol-file-1.2.0-rc.2.tgz", - "integrity": "sha512-jIKSrcsmYwQJDyDOSeu49LbqaB7r9xq62cHB5dq2V1SRX9CYQqnX6E6hwcj2KBXwvp6oeAVWg+RzHth/8nR66A==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file/-/uui-symbol-file-1.2.0-rc.3.tgz", + "integrity": "sha512-5Ks6lHXlB9/n8WW5qTLmR1AIXUT8gDjVFUFTBXdOWU59+Authq5As/lpzZiv/4V3oPkhb9PcASI64CD320D0cw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-symbol-file-dropzone": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-dropzone/-/uui-symbol-file-dropzone-1.2.0-rc.2.tgz", - "integrity": "sha512-yy6Ay2q3MW5ntJxmT+bgcCzwfSvsX9/0Fp/W7sX7sSO3gwraWobZuOBCiULiUkMe8No1t7x2HecW4Xr1mHUNXQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-dropzone/-/uui-symbol-file-dropzone-1.2.0-rc.3.tgz", + "integrity": "sha512-1ObzFfd2GFvLj+CZEJuAmcfoTiO2TX/EAitV/SU2x/tsU6FmDLX/K9SdJooYGFImv+v4N2Bf3L1yXdfnA5RkCg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-symbol-file-thumbnail": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-thumbnail/-/uui-symbol-file-thumbnail-1.2.0-rc.2.tgz", - "integrity": "sha512-hcpxQWHDfPDx8eqWz6O8hHR4C09BOZ/ukYpy5EOJ8I+nwgB6eR39Waml+rOmOoDdMue1B8qPxKUcBODzWomSJg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-thumbnail/-/uui-symbol-file-thumbnail-1.2.0-rc.3.tgz", + "integrity": "sha512-FY/iMl3j/7foYybwEYtkvtGit+GJucLcXbRQup0uBZsM0jCv9bdUyZM1HPKS0BCLuNyl0LFAI7sevB4nq+u27A==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-symbol-folder": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-folder/-/uui-symbol-folder-1.2.0-rc.2.tgz", - "integrity": "sha512-LdNRWeuE/If+v9N6/MH2rgTWlyBwgjynffmUw+Js29OUJFuCp3docdsB2KlVOsfoDVEyAJtlGbsdAXQvf718VQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-folder/-/uui-symbol-folder-1.2.0-rc.3.tgz", + "integrity": "sha512-0eV2BIdHJk7ir46HkjpVj5vKAEwCvgMSHxHs690ZWmchyqlJOBiDHGetUbkzQZLXyT51wseWfXn2iYerHNajMg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-symbol-lock": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-lock/-/uui-symbol-lock-1.2.0-rc.2.tgz", - "integrity": "sha512-xJIf+T5VkOGEU6A62SINUlkRJjV8rAGp5bS1Buf2z8vxpe50yqLpOm4mXpJXTyvmyybGm0efrUhfX9ESXWWP2g==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-lock/-/uui-symbol-lock-1.2.0-rc.3.tgz", + "integrity": "sha512-5+9xz32fr+jAPoZtiPhPsS+DrmtSkdvrhLqAbiVwfi28T4VtwWpOLRk/9hFchBql8HloAuyTqhk0XS4sLyIjbw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-symbol-more": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-more/-/uui-symbol-more-1.2.0-rc.2.tgz", - "integrity": "sha512-KSJ5JoAijccGBGk233ZSN0a2sz9EDf50oWOE8x10mQvTGRUwwAgEIoxkXN39d0oBgCeY6xrkFS1JL0SC6qD4qg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-more/-/uui-symbol-more-1.2.0-rc.3.tgz", + "integrity": "sha512-7qKWzoSoBL9rkEfoKKBnrTGjUWLXXL4DK9T7porGbcVWCcveBqywrGmKLIsKzMuMPI0buGSidiD/CSCTy+Nlow==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-symbol-sort": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-sort/-/uui-symbol-sort-1.2.0-rc.2.tgz", - "integrity": "sha512-LcUNh/yaKiG5Mli9f95SPcKufKLFFPFz2zaD/iR80kcem2niXfgNPzuhV145XaLpKrebktrDTYKUefsDI6xqrA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-sort/-/uui-symbol-sort-1.2.0-rc.3.tgz", + "integrity": "sha512-yHU43q840CBtzAs+Q9CSvPqf61KOu7pOArda94kmMd1Ct5IrF71/3rJ3a1rGQOa9GG2Gn/4bLD4G4e50zh4Y+A==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-table": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-table/-/uui-table-1.2.0-rc.2.tgz", - "integrity": "sha512-IhHnB5vr7l+8E2Ae/CCy1ZJMH7yWITTfn1zzN+5qcAvQn5M/mm0gCCVFSvHQSRmt9Bj4s9CYSN1rRVp6Nw6gow==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-table/-/uui-table-1.2.0-rc.3.tgz", + "integrity": "sha512-AGEN7RoQrRRA0ht72KtKCS+9Lkfridjl3K96gOPORBfNczxPtPvLC3mroUPolR36eCi1/NKq10uZ+G0Q+ovBJA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-tabs": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tabs/-/uui-tabs-1.2.0-rc.2.tgz", - "integrity": "sha512-R7kK3j8zF9Em4sB85h//hwXh2tV5h6xuJ1DawqY+am0imdZlr/7rkdv89NTJlP5y8nGGKY1P2lfy3prajxcoqQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tabs/-/uui-tabs-1.2.0-rc.3.tgz", + "integrity": "sha512-qx5nqXlKhTpJVrIOBs5DG9lzbrxXh6HMQ0F+qCJ7wg20Sb3U+tUkr4TXGbrPXXYwQxZ1ERhYKdnLbpRNgFE8Hg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-tag": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tag/-/uui-tag-1.2.0-rc.2.tgz", - "integrity": "sha512-8P9ejFdgy1LTwJIWAT90DDj1cKFNbnwo/6HiqmFIHL40h43oa5/xtAh8SlwF+VzzT3EyuIS2+kOQBIaUT5CGRA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tag/-/uui-tag-1.2.0-rc.3.tgz", + "integrity": "sha512-FWBzn/1OaxUtNCuCIrRXNenJy0GYn6hepGoqaEfDqo4uHdhNNi+xpjEanFwEQf7vRlhlIeEFJN7cSQwTi7ks9A==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-textarea": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-textarea/-/uui-textarea-1.2.0-rc.2.tgz", - "integrity": "sha512-VUbZ9ztkdJpv3bBPCmrrhCjLHiS3MMWVnZT5fnQlbd0v+efD+I09Z4ir8JcdP3lbhP1HbQTVbwx+OyiAHp3pfg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-textarea/-/uui-textarea-1.2.0-rc.3.tgz", + "integrity": "sha512-MX8pXgpSshx6ulGgoLqS+UkLfVKvERwmE0bV1MRCD8F+S27GjAHk+vMUQY2rYIihD3s87tPYRMwINjwRytWmCw==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-toast-notification": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification/-/uui-toast-notification-1.2.0-rc.2.tgz", - "integrity": "sha512-cWm/wUU3WRA5VfQGeLa3nrrmOYmpp78pFWa1QAZUFbCZv/NWEmm1wHLqySb9O9AH5zUz3TG7F1LH75ZXI7dv0g==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification/-/uui-toast-notification-1.2.0-rc.3.tgz", + "integrity": "sha512-xwSJY6zFIstyRElDVoALnx+b7IiauvcAp9QgAQaq7TDivOSy/Cfjb0juEl6vVwvOFRaKdeVMuGUbKFdSdPlBcQ==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-button": "1.2.0-rc.2", - "@umbraco-ui/uui-css": "1.2.0-rc.2", - "@umbraco-ui/uui-icon": "1.2.0-rc.2", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-button": "1.2.0-rc.3", + "@umbraco-ui/uui-css": "1.2.0-rc.3", + "@umbraco-ui/uui-icon": "1.2.0-rc.3", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-toast-notification-container": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-container/-/uui-toast-notification-container-1.2.0-rc.2.tgz", - "integrity": "sha512-3LPWk2mpCsYUOBiqeIdX/DDvQSM324rLMomXgxco+dmI1CvykkSJ2u3HclsmXk567d19h7+rt0k1Ap79him9+g==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-container/-/uui-toast-notification-container-1.2.0-rc.3.tgz", + "integrity": "sha512-T/wsWFqBA/NO++NkY6U550kr7lkU09eyX6OQR/e1jGWmTBbRqgxVS72fHxBDg+3j/Z3RY/jtsXfSy6UZOAc8lg==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-toast-notification": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-toast-notification": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-toast-notification-layout": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-layout/-/uui-toast-notification-layout-1.2.0-rc.2.tgz", - "integrity": "sha512-UagMXNgIoVzk+GyLI7S8nsskMtpADhOqcyO8mNLfppF2RVtZ7xmBUPiZ+9OsaiZFet0IcbPpg1ZtdsuNnHZydw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-layout/-/uui-toast-notification-layout-1.2.0-rc.3.tgz", + "integrity": "sha512-ZNODYxUy2W2I5FJxFjBdPTEICydTdIfk03l7oJDp6UEdsiNIcoWlHOwNjHv0knUm95pAF+RTp1ansO1v6YXpKA==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-css": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-css": "1.2.0-rc.3" } }, "node_modules/@umbraco-ui/uui-toggle": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toggle/-/uui-toggle-1.2.0-rc.2.tgz", - "integrity": "sha512-ypp8pFp3GRXk3WLitMJp7Cg/ducZlVDKQyTqwwHap2q6RfkTwvZcLl59Bf00hgkMeTV1vVzFCMSMqLextPabQQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toggle/-/uui-toggle-1.2.0-rc.3.tgz", + "integrity": "sha512-RbCTWGBja8+oMrWR7Y5DPYJpqeCrGgq88FZ8C83uKxNwdUXqjWHcG60zwiQfpL4enjmCiOWsqc/hWpP7t4Nb/g==", "dependencies": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-boolean-input": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-boolean-input": "1.2.0-rc.3" } }, "node_modules/@web/browser-logs": { @@ -22415,780 +22415,780 @@ } }, "@umbraco-ui/uui": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui/-/uui-1.2.0-rc.2.tgz", - "integrity": "sha512-E8CrJYKLBcCnshV+nTVkfkL9I+0sJbBjKMHOVr/jCOj6Dw9mGytq0bmq8EIT0QcqZ6teZZplkwW2JPQauuv5JA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui/-/uui-1.2.0-rc.3.tgz", + "integrity": "sha512-40mfNOaZYJioMhnp7iPs68U9NlWbnkh3OuNCy5oztXq+OmEHLDVJY0YDiieUEFUnxIjgHN1SKPJplykjog6X0A==", "requires": { - "@umbraco-ui/uui-action-bar": "1.2.0-rc.2", - "@umbraco-ui/uui-avatar": "1.2.0-rc.2", - "@umbraco-ui/uui-avatar-group": "1.2.0-rc.2", - "@umbraco-ui/uui-badge": "1.2.0-rc.2", - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-boolean-input": "1.2.0-rc.2", - "@umbraco-ui/uui-box": "1.2.0-rc.2", - "@umbraco-ui/uui-breadcrumbs": "1.2.0-rc.2", - "@umbraco-ui/uui-button": "1.2.0-rc.2", - "@umbraco-ui/uui-button-group": "1.2.0-rc.2", - "@umbraco-ui/uui-button-inline-create": "1.2.0-rc.2", - "@umbraco-ui/uui-card": "1.2.0-rc.2", - "@umbraco-ui/uui-card-content-node": "1.2.0-rc.2", - "@umbraco-ui/uui-card-media": "1.2.0-rc.2", - "@umbraco-ui/uui-card-user": "1.2.0-rc.2", - "@umbraco-ui/uui-caret": "1.2.0-rc.2", - "@umbraco-ui/uui-checkbox": "1.2.0-rc.2", - "@umbraco-ui/uui-color-area": "1.2.0-rc.2", - "@umbraco-ui/uui-color-picker": "1.2.0-rc.2", - "@umbraco-ui/uui-color-slider": "1.2.0-rc.2", - "@umbraco-ui/uui-color-swatch": "1.2.0-rc.2", - "@umbraco-ui/uui-color-swatches": "1.2.0-rc.2", - "@umbraco-ui/uui-combobox": "1.2.0-rc.2", - "@umbraco-ui/uui-combobox-list": "1.2.0-rc.2", - "@umbraco-ui/uui-css": "1.2.0-rc.2", - "@umbraco-ui/uui-dialog": "1.2.0-rc.2", - "@umbraco-ui/uui-dialog-layout": "1.2.0-rc.2", - "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.2", - "@umbraco-ui/uui-file-preview": "1.2.0-rc.2", - "@umbraco-ui/uui-form": "1.2.0-rc.2", - "@umbraco-ui/uui-form-layout-item": "1.2.0-rc.2", - "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.2", - "@umbraco-ui/uui-icon": "1.2.0-rc.2", - "@umbraco-ui/uui-icon-registry": "1.2.0-rc.2", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2", - "@umbraco-ui/uui-input": "1.2.0-rc.2", - "@umbraco-ui/uui-input-file": "1.2.0-rc.2", - "@umbraco-ui/uui-input-lock": "1.2.0-rc.2", - "@umbraco-ui/uui-input-password": "1.2.0-rc.2", - "@umbraco-ui/uui-keyboard-shortcut": "1.2.0-rc.2", - "@umbraco-ui/uui-label": "1.2.0-rc.2", - "@umbraco-ui/uui-loader": "1.2.0-rc.2", - "@umbraco-ui/uui-loader-bar": "1.2.0-rc.2", - "@umbraco-ui/uui-loader-circle": "1.2.0-rc.2", - "@umbraco-ui/uui-menu-item": "1.2.0-rc.2", - "@umbraco-ui/uui-modal": "1.2.0-rc.2", - "@umbraco-ui/uui-pagination": "1.2.0-rc.2", - "@umbraco-ui/uui-popover": "1.2.0-rc.2", - "@umbraco-ui/uui-progress-bar": "1.2.0-rc.2", - "@umbraco-ui/uui-radio": "1.2.0-rc.2", - "@umbraco-ui/uui-range-slider": "1.2.0-rc.2", - "@umbraco-ui/uui-ref": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-list": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node-data-type": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node-document-type": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node-form": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node-member": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node-package": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node-user": "1.2.0-rc.2", - "@umbraco-ui/uui-scroll-container": "1.2.0-rc.2", - "@umbraco-ui/uui-select": "1.2.0-rc.2", - "@umbraco-ui/uui-slider": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-file": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-lock": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-more": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-sort": "1.2.0-rc.2", - "@umbraco-ui/uui-table": "1.2.0-rc.2", - "@umbraco-ui/uui-tabs": "1.2.0-rc.2", - "@umbraco-ui/uui-tag": "1.2.0-rc.2", - "@umbraco-ui/uui-textarea": "1.2.0-rc.2", - "@umbraco-ui/uui-toast-notification": "1.2.0-rc.2", - "@umbraco-ui/uui-toast-notification-container": "1.2.0-rc.2", - "@umbraco-ui/uui-toast-notification-layout": "1.2.0-rc.2", - "@umbraco-ui/uui-toggle": "1.2.0-rc.2" + "@umbraco-ui/uui-action-bar": "1.2.0-rc.3", + "@umbraco-ui/uui-avatar": "1.2.0-rc.3", + "@umbraco-ui/uui-avatar-group": "1.2.0-rc.3", + "@umbraco-ui/uui-badge": "1.2.0-rc.3", + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-boolean-input": "1.2.0-rc.3", + "@umbraco-ui/uui-box": "1.2.0-rc.3", + "@umbraco-ui/uui-breadcrumbs": "1.2.0-rc.3", + "@umbraco-ui/uui-button": "1.2.0-rc.3", + "@umbraco-ui/uui-button-group": "1.2.0-rc.3", + "@umbraco-ui/uui-button-inline-create": "1.2.0-rc.3", + "@umbraco-ui/uui-card": "1.2.0-rc.3", + "@umbraco-ui/uui-card-content-node": "1.2.0-rc.3", + "@umbraco-ui/uui-card-media": "1.2.0-rc.3", + "@umbraco-ui/uui-card-user": "1.2.0-rc.3", + "@umbraco-ui/uui-caret": "1.2.0-rc.3", + "@umbraco-ui/uui-checkbox": "1.2.0-rc.3", + "@umbraco-ui/uui-color-area": "1.2.0-rc.3", + "@umbraco-ui/uui-color-picker": "1.2.0-rc.3", + "@umbraco-ui/uui-color-slider": "1.2.0-rc.3", + "@umbraco-ui/uui-color-swatch": "1.2.0-rc.3", + "@umbraco-ui/uui-color-swatches": "1.2.0-rc.3", + "@umbraco-ui/uui-combobox": "1.2.0-rc.3", + "@umbraco-ui/uui-combobox-list": "1.2.0-rc.3", + "@umbraco-ui/uui-css": "1.2.0-rc.3", + "@umbraco-ui/uui-dialog": "1.2.0-rc.3", + "@umbraco-ui/uui-dialog-layout": "1.2.0-rc.3", + "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.3", + "@umbraco-ui/uui-file-preview": "1.2.0-rc.3", + "@umbraco-ui/uui-form": "1.2.0-rc.3", + "@umbraco-ui/uui-form-layout-item": "1.2.0-rc.3", + "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.3", + "@umbraco-ui/uui-icon": "1.2.0-rc.3", + "@umbraco-ui/uui-icon-registry": "1.2.0-rc.3", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.3", + "@umbraco-ui/uui-input": "1.2.0-rc.3", + "@umbraco-ui/uui-input-file": "1.2.0-rc.3", + "@umbraco-ui/uui-input-lock": "1.2.0-rc.3", + "@umbraco-ui/uui-input-password": "1.2.0-rc.3", + "@umbraco-ui/uui-keyboard-shortcut": "1.2.0-rc.3", + "@umbraco-ui/uui-label": "1.2.0-rc.3", + "@umbraco-ui/uui-loader": "1.2.0-rc.3", + "@umbraco-ui/uui-loader-bar": "1.2.0-rc.3", + "@umbraco-ui/uui-loader-circle": "1.2.0-rc.3", + "@umbraco-ui/uui-menu-item": "1.2.0-rc.3", + "@umbraco-ui/uui-modal": "1.2.0-rc.3", + "@umbraco-ui/uui-pagination": "1.2.0-rc.3", + "@umbraco-ui/uui-popover": "1.2.0-rc.3", + "@umbraco-ui/uui-progress-bar": "1.2.0-rc.3", + "@umbraco-ui/uui-radio": "1.2.0-rc.3", + "@umbraco-ui/uui-range-slider": "1.2.0-rc.3", + "@umbraco-ui/uui-ref": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-list": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node-data-type": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node-document-type": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node-form": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node-member": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node-package": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node-user": "1.2.0-rc.3", + "@umbraco-ui/uui-scroll-container": "1.2.0-rc.3", + "@umbraco-ui/uui-select": "1.2.0-rc.3", + "@umbraco-ui/uui-slider": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-file": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-lock": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-more": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-sort": "1.2.0-rc.3", + "@umbraco-ui/uui-table": "1.2.0-rc.3", + "@umbraco-ui/uui-tabs": "1.2.0-rc.3", + "@umbraco-ui/uui-tag": "1.2.0-rc.3", + "@umbraco-ui/uui-textarea": "1.2.0-rc.3", + "@umbraco-ui/uui-toast-notification": "1.2.0-rc.3", + "@umbraco-ui/uui-toast-notification-container": "1.2.0-rc.3", + "@umbraco-ui/uui-toast-notification-layout": "1.2.0-rc.3", + "@umbraco-ui/uui-toggle": "1.2.0-rc.3" } }, "@umbraco-ui/uui-action-bar": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-action-bar/-/uui-action-bar-1.2.0-rc.2.tgz", - "integrity": "sha512-JI9n1/gB6cr+7k0+v+HVAnfXCkZIN3UYbC8BhC+YinMsKIIWiLgo/FmgClgHmJ9zPD9EhAVqUa8wViM03npyDg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-action-bar/-/uui-action-bar-1.2.0-rc.3.tgz", + "integrity": "sha512-kxMgIYNnE/2DGIuvdfWsY1zCU0zwbPxEQnhhGgqP6SjgxN+c01yid1w7R4hF1DwS5gtuZWJvfQEmdM7r5x3ctw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-button-group": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-button-group": "1.2.0-rc.3" } }, "@umbraco-ui/uui-avatar": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar/-/uui-avatar-1.2.0-rc.2.tgz", - "integrity": "sha512-WnVicYfGExAKA7gXHjVk4dcANRrWYnXLlAWiRS9SOVDFUYezbNbX82Nt2rMGxZ5K3TJr+WWxBa0b2AYhz/pWpw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar/-/uui-avatar-1.2.0-rc.3.tgz", + "integrity": "sha512-ZlKyIaXxXZR7VXEKTHj5aNmw4UKxAdD4G5vb+5/rYzSKQ/yf37nVDtMjvDQIFRQiwMpxl9tQ3oEe3SlafCmLiw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-avatar-group": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar-group/-/uui-avatar-group-1.2.0-rc.2.tgz", - "integrity": "sha512-bEtJzr4tC8oL4KszNxqu3ey1DPg9hZnaEND7p8RDXCknZLpi9flhpU73esvskiCRSJr5CTu0pTwJwOR+Bhwr9Q==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar-group/-/uui-avatar-group-1.2.0-rc.3.tgz", + "integrity": "sha512-7GLMnr3uAOsK8keZXITZTuNW8DqhqMhR5tknY1sWDJZ57vH5C+aJUDVvwcAs97W03Sjn2PRx5ZzNQbeV4s0SKg==", "requires": { - "@umbraco-ui/uui-avatar": "1.2.0-rc.2", - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-avatar": "1.2.0-rc.3", + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-badge": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-badge/-/uui-badge-1.2.0-rc.2.tgz", - "integrity": "sha512-Z/zxDmf5WbeXo+3CrB62TOHgg5cEcKNB4vc06NAllypzLBKdBPjRe3FtBtRL8ExwZmXoAlJmlItr6nEnfogKUQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-badge/-/uui-badge-1.2.0-rc.3.tgz", + "integrity": "sha512-nehPDh2nKW0JxtIjWAoUJ+Rj+8ZCBsPeaRgqRKetOxfmMhQHvq0Yw+r8DxgCU+5VXdR6TEpEojvTioln6zErgw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-base": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.2.0-rc.2.tgz", - "integrity": "sha512-rGHM+OgldohqNlq5B1BMcpVkZNMu8A0X5uN6cG74qGg+WXqXbX9XlRFxMMuoxCTgtqowGZMn7St+Tu3O8GQAiA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.2.0-rc.3.tgz", + "integrity": "sha512-qM1dDv1nCEIQZw4licg+FTpS9O69TWRZ7zf2XS30Y8qhVtkibUSi+DbM6pimxYvdlCnGYgDpB59yDqAWdDxwTQ==", "requires": { "lit": "^2.3.1" } }, "@umbraco-ui/uui-boolean-input": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-boolean-input/-/uui-boolean-input-1.2.0-rc.2.tgz", - "integrity": "sha512-W3qKtrH1c+nPe0yuz8sySf6hF7rOK9Hg3I2HZ5jRmoKnDmTLiZpXhDDyaYKy1oH5n/WdRlJx9aBaZG5TMmRqpg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-boolean-input/-/uui-boolean-input-1.2.0-rc.3.tgz", + "integrity": "sha512-IPiOtns6qGFTCRwAg7V1gVHJnAk+48bCRtxNo9MneHx2TefgRYnLAmpCx11KGDBryguQPr8w+ep93WE6/Wh7nw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-box": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-box/-/uui-box-1.2.0-rc.2.tgz", - "integrity": "sha512-c3rqT0KdCnBqWv8Lbzpetj/MldQSTQ7/7uxTtHcS+Wclkvr+ktKeai45NebiKqDCb6l3scy2Va0TRoJBUNmofA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-box/-/uui-box-1.2.0-rc.3.tgz", + "integrity": "sha512-qBbWCzB7NhsAzK/7KkG1Au8x8fJeuYaD5YexIgSzfwwHoIAogRCj/0jY1aiJD1SCtatWzmi2iEJGD7XrxQ3a+w==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-css": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-css": "1.2.0-rc.3" } }, "@umbraco-ui/uui-breadcrumbs": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-breadcrumbs/-/uui-breadcrumbs-1.2.0-rc.2.tgz", - "integrity": "sha512-xX93r/n6dKY1D0wWRx2FKDVtJ2Yja91KPheHExSPuBuwUI0C0hBI02U+AhWjr/6+hUl+Kc0CWOdoYNkuum3RZg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-breadcrumbs/-/uui-breadcrumbs-1.2.0-rc.3.tgz", + "integrity": "sha512-kkjRYmmMviUHXDtITOLwtByZsNj3ZJRYCduoDsWNazNwkE77HGDre76yzWQZEIekGMxq4Jq3Ms5XfDROcvTzHg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-button": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button/-/uui-button-1.2.0-rc.2.tgz", - "integrity": "sha512-IVtsxvRPT8on8vomxCWWRwhJbDl8dDmeUxSFxOPm/LrDZ8Y3sVf5Z248mBVCvX87E9AsBYkd7WX4KRDf3vubFQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button/-/uui-button-1.2.0-rc.3.tgz", + "integrity": "sha512-rd0ceJTO2oX+W0kJcMt+6qz7DKl/PI4XiKXkJ6p1O1Tz3aZoOiCnB1J+PZKZjduUMcoPlqSMdjzEwYu4rHYveA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.3" } }, "@umbraco-ui/uui-button-group": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-group/-/uui-button-group-1.2.0-rc.2.tgz", - "integrity": "sha512-sNxAiZGCbjKE95hiCroBb5DBIiIncpojpS0ARWFHXQAbjPi99qP72cE/+D/LF61NZwDKyyP+GKrzOmzgI4BQMw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-group/-/uui-button-group-1.2.0-rc.3.tgz", + "integrity": "sha512-AjjDSLkwElHXzo9Zh36ogxgy0UbWe4ZvPpyF5OoCfPvmt7P7/5qiSM8MhoJ/wgCTvgclHL2Vw/JPtFmG1DaiIg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-button-inline-create": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-inline-create/-/uui-button-inline-create-1.2.0-rc.2.tgz", - "integrity": "sha512-lNIFbBuiv113JyS8igqV7VhVppObRa34gpsflcmkCaCN2Khm6XVVsG4h226RNrhnQgjJ0J+r+/QTdaIUKLYX+w==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-inline-create/-/uui-button-inline-create-1.2.0-rc.3.tgz", + "integrity": "sha512-aWLjKobfXxuU4wltc6IRuFuiOHTPNa+3coajJ9FGs2JKXhgMZcAsva1k/qLd9x54yL2Z1dLQ02AOl5YmwIC3lw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-card": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card/-/uui-card-1.2.0-rc.2.tgz", - "integrity": "sha512-7hlGuunANegwsC6R4N+ILxNMHwXzB6tJzO/enMnrAQA7SkuLDEJB1rHy2TOhUOjEP1hQREM+rc+srX1wT8ZkCw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card/-/uui-card-1.2.0-rc.3.tgz", + "integrity": "sha512-cy5kbKMkfpiDc7ZdFjlgMmxor98UMq8OKkhL8+M6fyYPCFQI4mEiWlN+ZHsIMtZSBclln4ToOeIRTo3hQPUfXQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-card-content-node": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-content-node/-/uui-card-content-node-1.2.0-rc.2.tgz", - "integrity": "sha512-RA4VK+XoJQpQmc3sfkw/ZnrMGCn1HDiFowanwrR8SEYOPiMbmGUhRMnnmsa8WSOlNJ4KLpgN8vyaa7cvu93ZuA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-content-node/-/uui-card-content-node-1.2.0-rc.3.tgz", + "integrity": "sha512-FSUloNf1plSH6dlostjLCq4UHbRV+jZY8pggD++CaAu8ULpfxKXmOFnKsq17v4pBKKLa+vKeYU1Li2MXW8agyA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-card": "1.2.0-rc.2", - "@umbraco-ui/uui-icon": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-card": "1.2.0-rc.3", + "@umbraco-ui/uui-icon": "1.2.0-rc.3" } }, "@umbraco-ui/uui-card-media": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-media/-/uui-card-media-1.2.0-rc.2.tgz", - "integrity": "sha512-VDMbhevtLu0ucbhqVf17rKUrRfiNyyzttBFHX7NDUfeXGoqjTb98z6aproP5ujvqsWhECa5Q2iemTbxqVr/b7A==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-media/-/uui-card-media-1.2.0-rc.3.tgz", + "integrity": "sha512-KShrp9gkJyT2WTDwaRsVbwiuSchFwSNn/ihPHs0PI/sMGTuLIvgU08jUzSAKUny/uREAj2ttCeRgiLj18vCQ4A==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-card": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-file": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-card": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-file": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.3" } }, "@umbraco-ui/uui-card-user": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-user/-/uui-card-user-1.2.0-rc.2.tgz", - "integrity": "sha512-SVh2Rf1b/PL3WamMlSoLtm4bFLj9Ms33wS+94FVoEKikH/b/5OSHJyMnW4h6K/c2yyaMT7/y+tQhoc9oGcq5WQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-user/-/uui-card-user-1.2.0-rc.3.tgz", + "integrity": "sha512-+PqH5AMYnjPzRm7nLO9//4tJ74tOLyY0Fjlw2Z50QJ/m2EjCTQqf003XdSyeVHIZZA12wv/75GNwjiBEXqRbDg==", "requires": { - "@umbraco-ui/uui-avatar": "1.2.0-rc.2", - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-card": "1.2.0-rc.2" + "@umbraco-ui/uui-avatar": "1.2.0-rc.3", + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-card": "1.2.0-rc.3" } }, "@umbraco-ui/uui-caret": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-caret/-/uui-caret-1.2.0-rc.2.tgz", - "integrity": "sha512-/19J8MpMLkWT5u4QdGGmf7xqCZ0URB0YUq48rsn5y/efElWi1HG0ptJwGoqrW5hhKuLWEcZG4V1WVJxT4LgwZQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-caret/-/uui-caret-1.2.0-rc.3.tgz", + "integrity": "sha512-/M3gvU+Ub99RWCDvw7yn1CDKdoBZh3OjeuutGc9N5nDNhnFATam3BVyTXRcL02uGiFlxiCnsqphE3B3EUyBnOA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-checkbox": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-checkbox/-/uui-checkbox-1.2.0-rc.2.tgz", - "integrity": "sha512-shjQWdFjjRnbXGaZa6BkSxC2Q1jfSh5q6xVjkDrcGToOW94q6PURF6Vm1aodsBVWZGuJUzmTdT41mhG/SjsIPg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-checkbox/-/uui-checkbox-1.2.0-rc.3.tgz", + "integrity": "sha512-6hnVO9CCaPntu7SUOEX95fKnry67l8EWC/J55N2nERCV6/9OY7YwIdQditKMZnJKfj3HOtdBh8IAIvNqSM3Wkw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-boolean-input": "1.2.0-rc.2", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-boolean-input": "1.2.0-rc.3", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.3" } }, "@umbraco-ui/uui-color-area": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-area/-/uui-color-area-1.2.0-rc.2.tgz", - "integrity": "sha512-LwdmkwFu+3Ms9xm86sZovTItlWlHgVfHPOMnW+nxUkVMfwv1FjK4n4G7xVJ9nmpa8W4GjMwcENjvR0Qs2/JqqQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-area/-/uui-color-area-1.2.0-rc.3.tgz", + "integrity": "sha512-DPS54CIROx43c9JAXjhqDnv4IR2WQM5/MYN/4Xo+fL87nwpTnb7yfp7EmqBhX8uNRjSsb7TwILjGUs6YibBqBg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-base": "1.2.0-rc.3", "colord": "^2.9.3" } }, "@umbraco-ui/uui-color-picker": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-picker/-/uui-color-picker-1.2.0-rc.2.tgz", - "integrity": "sha512-Ibn3dRJn/N8E9mRi2EWEFxyL4BwEbraytGNq7jD+iJZ9cIaZTU/zuxYGxNFNBP3EDsdD10iLnyBA9hfyEDxRcQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-picker/-/uui-color-picker-1.2.0-rc.3.tgz", + "integrity": "sha512-TZ0yxENsS1EMYp+sIzKO3X+yq3QAtNr0172FzgdCgkzsTatVsxpIz2K8rNQbBPInDFtNMZ/MztFaBPdYf9jbwA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", + "@umbraco-ui/uui-base": "1.2.0-rc.3", "colord": "^2.9.3" } }, "@umbraco-ui/uui-color-slider": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-slider/-/uui-color-slider-1.2.0-rc.2.tgz", - "integrity": "sha512-aQTTizgH0oNHBFRXXr3tjhH456SRx7TVx797elcA9b0NtSFMuFwWZZI4qqppHTaVkVGZz/0coF973Xu8s5GSGg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-slider/-/uui-color-slider-1.2.0-rc.3.tgz", + "integrity": "sha512-CghdFKYDjCt6l6eHinRKNqFq//sZ2J5A/WOf6Cuz6poT+bCoSGT+AVqh/UbYtrbJtQ2ZsD06enIjOqbeoL+TpA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-color-swatch": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatch/-/uui-color-swatch-1.2.0-rc.2.tgz", - "integrity": "sha512-A7G0kz/ZEOANizHNek6nsq41XrCbCBE5XTE5Y0afUEbL3RM37yZHsjNFM4H1iJs57plt4Mfb85TQqb3h5HnHJA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatch/-/uui-color-swatch-1.2.0-rc.3.tgz", + "integrity": "sha512-AxVefkwHVd/ngI4BkEjsLwEIUi5kTB4yg2y6w8t9kafZRZWxWi4jLgZrddw60h8iVMUvbzXM3kjOZ9gLim9gVA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2", + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.3", "colord": "^2.9.3" } }, "@umbraco-ui/uui-color-swatches": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatches/-/uui-color-swatches-1.2.0-rc.2.tgz", - "integrity": "sha512-FskzxqYXCfi3gV0BOfoo5acDJEpiHF2ZIcjYxgrPNtG2phjVZ1Mk1BinfKRRibXqKGU/uhAQxbNIygxW/C9bJA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatches/-/uui-color-swatches-1.2.0-rc.3.tgz", + "integrity": "sha512-mvquxgmkrqi1p8R7HskdlSUGiZKnqOZaQCPtDBnZRF/h+0wv1VYEAWtFzhyglpUVFWl6+djvyLvTOnV19zS3pQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-color-swatch": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-color-swatch": "1.2.0-rc.3" } }, "@umbraco-ui/uui-combobox": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox/-/uui-combobox-1.2.0-rc.2.tgz", - "integrity": "sha512-8BctuzQ1hoiAkhV4XU6sOICoKWn4EMIesWiQavl44IILuldrJhBc9PJlSkBeaOs8raOXCwWb7yhDf0w68rlY/w==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox/-/uui-combobox-1.2.0-rc.3.tgz", + "integrity": "sha512-z8jOSwDk0TWTvXtn2DLd/YsH3Nsi2ruECTDjf8VWYHIuxNCTMqIJv49yrIM33qmJUtITFT8ZU8kUGHWLbNLQmA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-button": "1.2.0-rc.2", - "@umbraco-ui/uui-combobox-list": "1.2.0-rc.2", - "@umbraco-ui/uui-icon": "1.2.0-rc.2", - "@umbraco-ui/uui-scroll-container": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-button": "1.2.0-rc.3", + "@umbraco-ui/uui-combobox-list": "1.2.0-rc.3", + "@umbraco-ui/uui-icon": "1.2.0-rc.3", + "@umbraco-ui/uui-scroll-container": "1.2.0-rc.3" } }, "@umbraco-ui/uui-combobox-list": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox-list/-/uui-combobox-list-1.2.0-rc.2.tgz", - "integrity": "sha512-hOnfyje4XzhPWgDlbfOlaJOIUlMvc0RmwpKmqFynZMo0wZ+zuPMQ34jjPRAkgDa7dHkkAmbhZczLHdPF6I9aFA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox-list/-/uui-combobox-list-1.2.0-rc.3.tgz", + "integrity": "sha512-wyunnv56FHVGkHm61a5I+zNYI4kdjqRllwqVjSo+BzxWhWwPIcTJguBHPlgd/3w7ir0GuhPJcLPb+1zoeB1PVw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-css": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.2.0-rc.2.tgz", - "integrity": "sha512-yEHxeUFqRPhxHblR/jjkNLabMFZXZ3aMGVGgehBvsGM01D3yQq9wvFe+qtjr4TGXs7v62DIT4bOtP0f45KfRRg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.2.0-rc.3.tgz", + "integrity": "sha512-E3Ytd10emwCUs1g7ByZkENp/1fCQo9wMjm8HStHfq5YVzdayHkyyJj5sTNv3dMEXy0Cac9gQ4lHjmBDE8wwDlA==", "requires": { "lit": "^2.2.2" } }, "@umbraco-ui/uui-dialog": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog/-/uui-dialog-1.2.0-rc.2.tgz", - "integrity": "sha512-Jw0YfP4WJMaSsdvUGPjOQtFUiAlno2knxt709V2IugdbnfjgSYllBzQGNHWmbBFS1kJtURAcCWJX74B9P/qRfQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog/-/uui-dialog-1.2.0-rc.3.tgz", + "integrity": "sha512-DxHRc4qFOWft7JXHn3YqpC4YnIDHAppJK0DUKssOMM+es3UsdLW1jYMQ8gKCcNUaWx/dwcfA3NCDok4giFc8CA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-css": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-css": "1.2.0-rc.3" } }, "@umbraco-ui/uui-dialog-layout": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog-layout/-/uui-dialog-layout-1.2.0-rc.2.tgz", - "integrity": "sha512-gqFpO38XtYXQszCwUqt2jUqFHgcIIqf8+evlcGTXr1arFPpLfq2FWbEnXR83BjVRhHRCHhmLrbsoAZzwaJmToQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog-layout/-/uui-dialog-layout-1.2.0-rc.3.tgz", + "integrity": "sha512-QJIwo5eUtGZ36zOuURhMtTMezkqAh/Nl/O0p1xeawyun8sHh8rRSBCqC1goA7KIotKErD4eqrbvkENbR9Uhmfw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-file-dropzone": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-dropzone/-/uui-file-dropzone-1.2.0-rc.2.tgz", - "integrity": "sha512-Pm07+UkQmp+SXuvynjlKlc+/NOHBVve3k6hoPX5Z0mHWUG0XBG0WgbrTJoqgQYytbndt6AaE6vrKKyPE/VvoHw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-dropzone/-/uui-file-dropzone-1.2.0-rc.3.tgz", + "integrity": "sha512-YxYF+daaAl0YeCNoYxpvNbSeE1GCu5rDcMkrMbq8zRdoQ3KCqOi5p1DqSdOpIeOuna2/tBPK8McsehXgS0xR/Q==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-file-dropzone": "1.2.0-rc.3" } }, "@umbraco-ui/uui-file-preview": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-preview/-/uui-file-preview-1.2.0-rc.2.tgz", - "integrity": "sha512-eG+BtfA+22KmY+UoMBp8iJDTWUoy2Iq0jLahWmHADaQ+HWUMJ/CXYFquNVfk2nQ5SmYrJV+qPC0d+ikf4UXVmQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-preview/-/uui-file-preview-1.2.0-rc.3.tgz", + "integrity": "sha512-uQvE8HGOFrcl6OKzb/tgHXZ3LnZU8i/HfzxTx0nh6538wdTqK7VWvRN65jPB3aerKrfl+8XMS67hRNfo/saU3Q==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-file": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-file": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-file-thumbnail": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-folder": "1.2.0-rc.3" } }, "@umbraco-ui/uui-form": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form/-/uui-form-1.2.0-rc.2.tgz", - "integrity": "sha512-9iCKrLzmjpUaaL7l3C50UL3iJOYxqEY3aFLx9hRbpFzyQvwMmt/hcKiUeSEVjEtAIxpk5wUTwD7WlxeRve0POA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form/-/uui-form-1.2.0-rc.3.tgz", + "integrity": "sha512-Iz2JLK7lAKdX1B6aEQaGXaFuYKKH4i/DvJRltfRCIK4rn0OYmSp4RgcKyub/IuQkE8q8qNiyV3yS1vgSZQ9aHw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-form-layout-item": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-layout-item/-/uui-form-layout-item-1.2.0-rc.2.tgz", - "integrity": "sha512-jFmw83oA/ecFOItGc27oHUHa2c6gA0gpzS2qsyYs7pSYEqwUxxe5iWI4otl3Ioi/3GgJwp69qzmVaEYuBgy/Sw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-layout-item/-/uui-form-layout-item-1.2.0-rc.3.tgz", + "integrity": "sha512-SbFAAjzplF2RiufhFIESzvbQEsza/qvq3nbxaBBFVPsfW1QkfBsU1H55kf8yWyTFrTWVMrDbneUlu9o/Iq3XUQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-form-validation-message": "1.2.0-rc.3" } }, "@umbraco-ui/uui-form-validation-message": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-validation-message/-/uui-form-validation-message-1.2.0-rc.2.tgz", - "integrity": "sha512-rbdJIO9uvSclc+8lRNcOv3ePp9Aa7wW7pZ6S8aY1bkV03vTAp7syKILNF70NIzxSq1yOKBE8xFXspHxDftdEVw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-validation-message/-/uui-form-validation-message-1.2.0-rc.3.tgz", + "integrity": "sha512-kVejule16/TGKFBxTIbR1DIrEXKQ0R+ssgdqJYBxBpYntimRlDS9Wmx895gWxrYkMzL4echSLx8S6S2Pht9Y9A==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-icon": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon/-/uui-icon-1.2.0-rc.2.tgz", - "integrity": "sha512-DKKco6oTG0XpwcYhLscRo22tF1R3Y/kQHn2tDi1T8IBez/AdknQPveYOGoUVC2jENngeNahuXNpWwgNvTpn4Zg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon/-/uui-icon-1.2.0-rc.3.tgz", + "integrity": "sha512-ajugRVP2leJLTVKuJoKE0Xm1tncaq/zrtCRbin9fPBkajOHlcUIX9D7G1U0/g/aVDR2ag24uhDZyDYP/MoSF1g==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-icon-registry": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry/-/uui-icon-registry-1.2.0-rc.2.tgz", - "integrity": "sha512-Tt9RiNBCsbsZo2uh1saw0V8Z0pIXOAvRr9UgBOdn0GJIYbKDtHV1yALyqcQ//qenwkkPB5a5ly0a3tJHzeej0w==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry/-/uui-icon-registry-1.2.0-rc.3.tgz", + "integrity": "sha512-d0r8v1PHog7TfZLECk5Jn9cIqO+KGn9YjWixGgexVzCTVyhDWYJ0zeGcOEZ14qcNLQkXGQXTkYccegVlrcSDUQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-icon": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-icon": "1.2.0-rc.3" } }, "@umbraco-ui/uui-icon-registry-essential": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry-essential/-/uui-icon-registry-essential-1.2.0-rc.2.tgz", - "integrity": "sha512-K93QxSybUhz7Q/UWZVqib2LGxlIQkTGF0fq7yDbGAYnx1OGJ7fKR0BjWok0G5Xz+7bCmjfNqTcb364XECUKpjw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry-essential/-/uui-icon-registry-essential-1.2.0-rc.3.tgz", + "integrity": "sha512-GaXUOIDg4mfRGvjlammUMLUaA/ksvCC4MIImgeYf3zAYXBzVX0XWbLatDlj7A2KwJkYOS/lWs2KJz17r11MA2A==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-icon-registry": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-icon-registry": "1.2.0-rc.3" } }, "@umbraco-ui/uui-input": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input/-/uui-input-1.2.0-rc.2.tgz", - "integrity": "sha512-+Spx/J0ofNL9Rozy05LdKBxDh8It32JzRjt3LCOuBPrN6Tme5HwCmcWtBK2Cn2HQ1zQJgnD+h1KItSyyYPXsnw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input/-/uui-input-1.2.0-rc.3.tgz", + "integrity": "sha512-/7qlTkn1se/RvXZ6PoFodyYWIOTtjgmdjCQ1r3y+DxjaelnhlJjymkQierpQY/S1VlPoqvJeJY3GfJipqpQHEQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-input-file": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-file/-/uui-input-file-1.2.0-rc.2.tgz", - "integrity": "sha512-zoFda6gYT1OSJDd9ObTzx4+xEL5/rBrzAZBniWJUQqrPPi3NfYrT+q4hY9c262F/HPbiyWYIH7xxMmr18EfNfw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-file/-/uui-input-file-1.2.0-rc.3.tgz", + "integrity": "sha512-BqVQs6HvGJxhNwDgQe002i6ToTxIpqhsuz9nWjh4BSh9i/6VqZkElyuNtlJEv9uMeyFJNlSids2GhhzpFv9Eaw==", "requires": { - "@umbraco-ui/uui-action-bar": "1.2.0-rc.2", - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-button": "1.2.0-rc.2", - "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.2", - "@umbraco-ui/uui-icon": "1.2.0-rc.2", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2" + "@umbraco-ui/uui-action-bar": "1.2.0-rc.3", + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-button": "1.2.0-rc.3", + "@umbraco-ui/uui-file-dropzone": "1.2.0-rc.3", + "@umbraco-ui/uui-icon": "1.2.0-rc.3", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.3" } }, "@umbraco-ui/uui-input-lock": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-lock/-/uui-input-lock-1.2.0-rc.2.tgz", - "integrity": "sha512-jhWEm+qeJs4PZLEGNUs9DSTs3VAKe6IS70+i9fQQY0VQQgyDzMtAqf9A+93D6EgT6pLu7HdtfS1yZVIzAteEsg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-lock/-/uui-input-lock-1.2.0-rc.3.tgz", + "integrity": "sha512-JscAOMp9jWkVXxBUAs5bcRw3DpGCZDqnIb8Av0BZdy/0jRSXTwKKtvvaiad+vCe+pGlQhbA6v+hRWVsuAbeszg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-button": "1.2.0-rc.2", - "@umbraco-ui/uui-icon": "1.2.0-rc.2", - "@umbraco-ui/uui-input": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-button": "1.2.0-rc.3", + "@umbraco-ui/uui-icon": "1.2.0-rc.3", + "@umbraco-ui/uui-input": "1.2.0-rc.3" } }, "@umbraco-ui/uui-input-password": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-password/-/uui-input-password-1.2.0-rc.2.tgz", - "integrity": "sha512-MafMMXrAof7YUKQy+hwKfwOADwRQV7xKkDjagyobVsBp2ccCRndZKTOAyBBDTqu+7w/k0SbHd9BvC4xCvVUwrA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-password/-/uui-input-password-1.2.0-rc.3.tgz", + "integrity": "sha512-4zJMR+JUu4eGUUYwf5sX71sW9ABxtHRuO9ml8VVAGddh+4KRi/RRVOFQ2uZUWYiTNM9buLuLEWLGhy5vrTQ2YQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2", - "@umbraco-ui/uui-input": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.3", + "@umbraco-ui/uui-input": "1.2.0-rc.3" } }, "@umbraco-ui/uui-keyboard-shortcut": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-keyboard-shortcut/-/uui-keyboard-shortcut-1.2.0-rc.2.tgz", - "integrity": "sha512-iMvqmDNwU9R0w3D4xRb9nNdoYOiXQJfE+6ojwld84XhfyfMYGIwmiIlCnIzW6g8yFPIDOkF91B+wKgyk5xBlqQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-keyboard-shortcut/-/uui-keyboard-shortcut-1.2.0-rc.3.tgz", + "integrity": "sha512-NB9EKMSpXkiOU1yQvbo+97TlfOqvZmTzIqPeWG8uamShINTBpfV7ppV1czRAaWsolNIO0GoplBflH489tmh50A==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-label": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-label/-/uui-label-1.2.0-rc.2.tgz", - "integrity": "sha512-eYY9e7cPGdwkw3JvM54fPpjn28bkKi3IVkfgDgvVP71vbuoBGCOk4rMP/H2XLElwKFTEM6EDRsXqrth02Ws0SA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-label/-/uui-label-1.2.0-rc.3.tgz", + "integrity": "sha512-11bn7NCgdefJjVhR8YSXWM/MF6UiNZzBBjW8G7vrQEMFxm/3lFQ3vyzGIK25sjpFCBE2RHkso1VR9PI0FamfBA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-loader": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader/-/uui-loader-1.2.0-rc.2.tgz", - "integrity": "sha512-Vms+NrPH15BhhawaCIdTzC9vY/2oMwu4/3AdEzHznELx3OfZbrt57a+Cpaoq6ojJoynJdGHQ+Kl92cKcv2kk3A==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader/-/uui-loader-1.2.0-rc.3.tgz", + "integrity": "sha512-Icfkog5R6BXCFLO/xsqcOj4y1O+Tcm92iWGM5KR1xcpvQEVbHOEgxXpa1shLa2MqbdyB0q2ij5EYcCGhFPjM7A==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-loader-bar": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-bar/-/uui-loader-bar-1.2.0-rc.2.tgz", - "integrity": "sha512-dGXjMdWzndnWdbh6bNaeR3rP36Oi91l82Hx5mlByAKYVBG/q0J1nDn4gZhfczEx0ItaCq9uB8dfa3WolZKaMTw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-bar/-/uui-loader-bar-1.2.0-rc.3.tgz", + "integrity": "sha512-hi03ulGnY2M+N/uZgfENB2Yojg8M0b6CE8Kj9Uud65aWOxyQShKwTrCjGz0Bq1m/TPRhn0HQ7QEwedl2DMxDNA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-loader-circle": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-circle/-/uui-loader-circle-1.2.0-rc.2.tgz", - "integrity": "sha512-Djp2Vikv8t7y4yw7hrAveyRe5ASN2ooRCKrN49F2Tn8fKhi5NfZ0NRKMtIU+QZNzLMRA1mjrnxB2mqcD/xGsug==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-circle/-/uui-loader-circle-1.2.0-rc.3.tgz", + "integrity": "sha512-LZc/EWFgE4MAmqU1YIVA+3dF08EciMxk7wLrQGDiDVKEFUNCIyaNt9zoHsIk0CdKCpgfZ82Mq+DNf+CSTs+YbQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-menu-item": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-menu-item/-/uui-menu-item-1.2.0-rc.2.tgz", - "integrity": "sha512-i2YRq6DtxhjjpvhdbG6AVSWGMfY1sxBtylMwyWPMWCY/l0ozQrS8wiE34CEopvQszfnxKABb9nZYM6de3ybbZA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-menu-item/-/uui-menu-item-1.2.0-rc.3.tgz", + "integrity": "sha512-+d6SbMMIDHEZWBiOytwT3YilhSAHMpl/D5HVCfbtr7I5UhDcTL4nMpTBcc6y53bvhdnQnGCRIkIOjcgRk3cpEg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-loader-bar": "1.2.0-rc.2", - "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-loader-bar": "1.2.0-rc.3", + "@umbraco-ui/uui-symbol-expand": "1.2.0-rc.3" } }, "@umbraco-ui/uui-modal": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-modal/-/uui-modal-1.2.0-rc.2.tgz", - "integrity": "sha512-mWGhjqb4xk4QJsflXByYy9wvKtUdSVyIQv4064zGSBWH9VgUkSmz3hHrBpjQU2MjCpj6XW96aeEIkg7mY9J0VA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-modal/-/uui-modal-1.2.0-rc.3.tgz", + "integrity": "sha512-1yzKLZl033YN7SPbxV8cyAg7g9gbv7jgblQWnvfM2m7YLT6Cut22H4uDU/ASYeLS6zDHMIvlzrpcqItoIwQcCw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-pagination": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-pagination/-/uui-pagination-1.2.0-rc.2.tgz", - "integrity": "sha512-tk5aS8NyugAPl7Dh8g8Igakup2k4eNT5clGvJacRRHIPBOn0p1gV6vKL3NDiVCmHHGLtgZMVnQQN7uSfm/Xj5w==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-pagination/-/uui-pagination-1.2.0-rc.3.tgz", + "integrity": "sha512-QrFfumL3hC+WcD5/h1rZ6m3THd0EHgYdygNZ5+Hp5AU5NBkwqhl17W2bSAtUwosB/+ssW5dlb1UqD9gIBly1Mw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-button": "1.2.0-rc.2", - "@umbraco-ui/uui-button-group": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-button": "1.2.0-rc.3", + "@umbraco-ui/uui-button-group": "1.2.0-rc.3" } }, "@umbraco-ui/uui-popover": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover/-/uui-popover-1.2.0-rc.2.tgz", - "integrity": "sha512-ecxT66ZrU/xTRs0vrpPIfr7YpykVtSEh/vwwo9DSkhaaIotPorMrRXi7LixS2mllslHvsETis6STCzsBylqB3w==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover/-/uui-popover-1.2.0-rc.3.tgz", + "integrity": "sha512-x1Hg/npbmbCsCvMKHAU6uxdQ9UTJJ6A1M2s2QxtySDlIYS8YzA/RM66QVuHxIxAx81eM+iS0nquHiVpQcu/c5A==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-progress-bar": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-progress-bar/-/uui-progress-bar-1.2.0-rc.2.tgz", - "integrity": "sha512-KaffpsaFfj/7w2gGziMoYLvcQLCaDFhhCvbOYZE2DyyagIcJMr59LQYbX0ma7cTtUKSaJTk4RB1SWzIEuDu9Mg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-progress-bar/-/uui-progress-bar-1.2.0-rc.3.tgz", + "integrity": "sha512-S4/KrmKR5GP5HYq/ILMuYT04n8x2hdMcdmfUPZGaOwW3V5q5nH3313Qp68q+iqegqErrZsYBrkE+DofsqS1pkQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-radio": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-radio/-/uui-radio-1.2.0-rc.2.tgz", - "integrity": "sha512-jfGK/wzXue9s/E026k9ZBThCodrzRbpw/xS8xX9YHq3NvJNjfPTMABuTM2VpW4sPZtkdpkjZKNreJAfpYJoPrA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-radio/-/uui-radio-1.2.0-rc.3.tgz", + "integrity": "sha512-RYZxGLL/VFiEVn2a5Fd298vA1G85BCmBg8VsxSql2GhawFzCNBMKnfXJzOkuV2uZORGDnnW5RFDPh1qqcwkjhw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-range-slider": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-range-slider/-/uui-range-slider-1.2.0-rc.2.tgz", - "integrity": "sha512-5K//peXBIAsOh9uAcY/8U+qoRxTaHGwfYl5SYjD/NnfpHXPY8xxXtMDHZcPXnSZLyVsoL2DSroFXgTLSJLsYlg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-range-slider/-/uui-range-slider-1.2.0-rc.3.tgz", + "integrity": "sha512-A1fyvDQ+qY59Sm+HkMzo8BVCp6Ipoi+AE8IH/C7GJ3/o0k8UxCZ4iSMWHtaiNSRY3kPWVkGX/P7MPdle2y7qBw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-ref": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref/-/uui-ref-1.2.0-rc.2.tgz", - "integrity": "sha512-Qdat4AxQt8neF1sIWvWDGoWkTDa3BHOhc8JUw7QxmcPwvv11Hvg62tAfRN7zbiVcTmpYIPoy6GV+tgAUn7TAIQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref/-/uui-ref-1.2.0-rc.3.tgz", + "integrity": "sha512-DXZSaofnpBl+tUEo7BB92M+oWjoJpHrjuf5y3BT0cVhKHNta/WW7xnC60yprfHNz1zdvwvhfuFioIPaoI1ljHA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-ref-list": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-list/-/uui-ref-list-1.2.0-rc.2.tgz", - "integrity": "sha512-t0iriFiVPLepRgB4JbCu8YNKBycHHusev3SBGtAV1NJ6uBKVcNgoKk2UCcmy4H9nq+pMAafXm/HX/Oq5F4JfZA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-list/-/uui-ref-list-1.2.0-rc.3.tgz", + "integrity": "sha512-CdM44A1JGa22TAbUBpalDbjezbwKv6riD+4IvN4LEQp6gPIiu5K/8QZma4tweP2k1986xMhgmDXqUIONb58RCw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-ref-node": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node/-/uui-ref-node-1.2.0-rc.2.tgz", - "integrity": "sha512-Ji90frchpuqcl/wro/Np4hRhQLa15pvb078UA+zOSpBLHO03Py/Bs6l3BzFYskfOntC3EFSHm6HxFntPjAKFzw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node/-/uui-ref-node-1.2.0-rc.3.tgz", + "integrity": "sha512-0UvQ7ycY57DImFTfXlYUKoEDdUIrTVMjfx1o7GIL1ZdZ1YM+0x/4wHZP1QGRk2ZQqj37AzTK/7Ps4zJZY4tTQA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-icon": "1.2.0-rc.2", - "@umbraco-ui/uui-ref": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-icon": "1.2.0-rc.3", + "@umbraco-ui/uui-ref": "1.2.0-rc.3" } }, "@umbraco-ui/uui-ref-node-data-type": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-data-type/-/uui-ref-node-data-type-1.2.0-rc.2.tgz", - "integrity": "sha512-aNV5GORnxkPvu0HWKfc7xzRDGYKMzeAXPLjYpcArKKFDfI95GTTNMvR9P0M/8IBJWiGb8oXCjMe1+YsVUCBSfw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-data-type/-/uui-ref-node-data-type-1.2.0-rc.3.tgz", + "integrity": "sha512-F3uyKNVpdALhcI7A0WP7UAIx5e8+r9jOdOxJpxBvNRe3xCnZEHzp1fa0z7oAIIqolkXxmbqmv84eS8zf4PVT1A==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.3" } }, "@umbraco-ui/uui-ref-node-document-type": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-document-type/-/uui-ref-node-document-type-1.2.0-rc.2.tgz", - "integrity": "sha512-WC3aCJjVhDNFF0aSvMf/wZkRzQMmAvkRQzcresG0J20xzGyNh8HiDVTFp24luT7l8vYqAeAl9NlLYbCWZAEyvA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-document-type/-/uui-ref-node-document-type-1.2.0-rc.3.tgz", + "integrity": "sha512-ol0QlxGWCzoVlEVL8gHh/Uc8X8K4YZWLd9heL/iimlYRVHSrVV0f8X1PeoQH1MkwcNCarPMavw1D6qyGpkPv/w==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.3" } }, "@umbraco-ui/uui-ref-node-form": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-form/-/uui-ref-node-form-1.2.0-rc.2.tgz", - "integrity": "sha512-UxK8tKD9pYuMU6rYfBcT3zyf/NM6LtnXCN/p9/3CWDhAeHJ4gdf6fFoPzgehZlxHl22BUQ0+bjZ2VF5/4KKtbQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-form/-/uui-ref-node-form-1.2.0-rc.3.tgz", + "integrity": "sha512-j6aB2iorTlqIJ7xp7+FkeuOsKm3qdol58dyAdh6OHvU6XPW7tVXDteO/9aQpYIjkobfLgfvfodC3r7dk2amKGA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.3" } }, "@umbraco-ui/uui-ref-node-member": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-member/-/uui-ref-node-member-1.2.0-rc.2.tgz", - "integrity": "sha512-I9RZAg0AZKLSlmJBu7iL9OHoNg5f+FLdDWv8cO060LRXGftjNdnjaLwlQFL5uxXvXwDI3E4i94XFThiju41fWw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-member/-/uui-ref-node-member-1.2.0-rc.3.tgz", + "integrity": "sha512-1rtjN/7tEak7pDmoEvUQwS7V8YEaPZE4ul1rviVRgUdrkdN0h0GPIdCbO5JJWqKk0k3UINbdS8eRr6u5jZZAfQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.3" } }, "@umbraco-ui/uui-ref-node-package": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-package/-/uui-ref-node-package-1.2.0-rc.2.tgz", - "integrity": "sha512-2tNl9S+J17uRSy6eSFJJ47b/zUuemm3UALaBII1+c5rWmUvtvs9ZYljX77VAkuwELKEMgExWjGQKaLQBTbvFMQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-package/-/uui-ref-node-package-1.2.0-rc.3.tgz", + "integrity": "sha512-Gt+pJcqO3SjK3Dw/dZ1/0FIsRfChXa/6NeUOYygQE0vCBNKCzMW3DbTa5HqOnjjLpnV+s0r6s2FtAqpsHVKCxA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.3" } }, "@umbraco-ui/uui-ref-node-user": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-user/-/uui-ref-node-user-1.2.0-rc.2.tgz", - "integrity": "sha512-sTrz9xhHrcv9Il27NMMSKTm7A50gpRF9z3vDWiZ0Ottg37oUkGiitgk4XI3AJOSWqDzNJjwuwUk6tAlwc6D5TQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-user/-/uui-ref-node-user-1.2.0-rc.3.tgz", + "integrity": "sha512-rL1oyMEvR9yeCV7GI0GtH6uoGQJ3rNjxD+3nvX52iS0HUU212A23wCPXjTtBkJvKcumm3WXpcG0LYZXTdO87tA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-ref-node": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-ref-node": "1.2.0-rc.3" } }, "@umbraco-ui/uui-scroll-container": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-scroll-container/-/uui-scroll-container-1.2.0-rc.2.tgz", - "integrity": "sha512-Aj2hiU05DFZ7eXab/zAXjitP9bM/TAM7HNVPOAl08BNpkemo0DYTtdFu4VmLIkqw6WtyxIVZ/N5pSJYMYovXYA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-scroll-container/-/uui-scroll-container-1.2.0-rc.3.tgz", + "integrity": "sha512-svSGFuPoTpJmq3raNjWuMIOQvYR6TrvzdtfDue2pQG725rNIKf5C32Vd/tr9pOo18JMtmWkk3G1tz17ZF6+VmA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-select": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-select/-/uui-select-1.2.0-rc.2.tgz", - "integrity": "sha512-X17ciKmnrtEut6RTrHvsOSIfwimPc0gT6kQoQFgPcTmF14Zr6edFPd6YKhWtjQNG9rVpmW1HK5bBSyeyiw/P4w==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-select/-/uui-select-1.2.0-rc.3.tgz", + "integrity": "sha512-C8RjztMPuHBhd0X9Wwvmzifwz9ljEqqN+m0FQGuO+dEKNskDI6ASGjdfTAch/NtxdJLjSztzx1I8h/FGv/0REA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-slider": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-slider/-/uui-slider-1.2.0-rc.2.tgz", - "integrity": "sha512-PRoKMCvGTejDg37dm5fGYxO7jFrHECPn20X3fv3bsVqnF5wH7RZ88dBW5oMNoYxoreph4SSQd5AsSQabuCpT4w==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-slider/-/uui-slider-1.2.0-rc.3.tgz", + "integrity": "sha512-HTNa+w9TNSA8IkZZxvNHrdjPbg6PirFo6GF1aC7R6nvJxkntEDBm2KyjmpyPT+bcLQ6aMKsYlLVY2q5o7M7C3A==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-symbol-expand": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-expand/-/uui-symbol-expand-1.2.0-rc.2.tgz", - "integrity": "sha512-i42zskMlDb7tivcFkFo5pXPo6Z+A2Sgu/MTChDzIEw3AK3/V2Lf8jNZtjL9Anjn1ZWg0Mq4GBjR5iv+pkjHZjw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-expand/-/uui-symbol-expand-1.2.0-rc.3.tgz", + "integrity": "sha512-UtGA0m6qtNEw6/6b57RSOZPzzgbdYlp4sz0z55lCpFbekQ16efMFIXNqaKAyeKjD9n0nRPdr4AhgLXARFgpLyg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-symbol-file": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file/-/uui-symbol-file-1.2.0-rc.2.tgz", - "integrity": "sha512-jIKSrcsmYwQJDyDOSeu49LbqaB7r9xq62cHB5dq2V1SRX9CYQqnX6E6hwcj2KBXwvp6oeAVWg+RzHth/8nR66A==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file/-/uui-symbol-file-1.2.0-rc.3.tgz", + "integrity": "sha512-5Ks6lHXlB9/n8WW5qTLmR1AIXUT8gDjVFUFTBXdOWU59+Authq5As/lpzZiv/4V3oPkhb9PcASI64CD320D0cw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-symbol-file-dropzone": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-dropzone/-/uui-symbol-file-dropzone-1.2.0-rc.2.tgz", - "integrity": "sha512-yy6Ay2q3MW5ntJxmT+bgcCzwfSvsX9/0Fp/W7sX7sSO3gwraWobZuOBCiULiUkMe8No1t7x2HecW4Xr1mHUNXQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-dropzone/-/uui-symbol-file-dropzone-1.2.0-rc.3.tgz", + "integrity": "sha512-1ObzFfd2GFvLj+CZEJuAmcfoTiO2TX/EAitV/SU2x/tsU6FmDLX/K9SdJooYGFImv+v4N2Bf3L1yXdfnA5RkCg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-symbol-file-thumbnail": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-thumbnail/-/uui-symbol-file-thumbnail-1.2.0-rc.2.tgz", - "integrity": "sha512-hcpxQWHDfPDx8eqWz6O8hHR4C09BOZ/ukYpy5EOJ8I+nwgB6eR39Waml+rOmOoDdMue1B8qPxKUcBODzWomSJg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-thumbnail/-/uui-symbol-file-thumbnail-1.2.0-rc.3.tgz", + "integrity": "sha512-FY/iMl3j/7foYybwEYtkvtGit+GJucLcXbRQup0uBZsM0jCv9bdUyZM1HPKS0BCLuNyl0LFAI7sevB4nq+u27A==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-symbol-folder": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-folder/-/uui-symbol-folder-1.2.0-rc.2.tgz", - "integrity": "sha512-LdNRWeuE/If+v9N6/MH2rgTWlyBwgjynffmUw+Js29OUJFuCp3docdsB2KlVOsfoDVEyAJtlGbsdAXQvf718VQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-folder/-/uui-symbol-folder-1.2.0-rc.3.tgz", + "integrity": "sha512-0eV2BIdHJk7ir46HkjpVj5vKAEwCvgMSHxHs690ZWmchyqlJOBiDHGetUbkzQZLXyT51wseWfXn2iYerHNajMg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-symbol-lock": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-lock/-/uui-symbol-lock-1.2.0-rc.2.tgz", - "integrity": "sha512-xJIf+T5VkOGEU6A62SINUlkRJjV8rAGp5bS1Buf2z8vxpe50yqLpOm4mXpJXTyvmyybGm0efrUhfX9ESXWWP2g==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-lock/-/uui-symbol-lock-1.2.0-rc.3.tgz", + "integrity": "sha512-5+9xz32fr+jAPoZtiPhPsS+DrmtSkdvrhLqAbiVwfi28T4VtwWpOLRk/9hFchBql8HloAuyTqhk0XS4sLyIjbw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-symbol-more": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-more/-/uui-symbol-more-1.2.0-rc.2.tgz", - "integrity": "sha512-KSJ5JoAijccGBGk233ZSN0a2sz9EDf50oWOE8x10mQvTGRUwwAgEIoxkXN39d0oBgCeY6xrkFS1JL0SC6qD4qg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-more/-/uui-symbol-more-1.2.0-rc.3.tgz", + "integrity": "sha512-7qKWzoSoBL9rkEfoKKBnrTGjUWLXXL4DK9T7porGbcVWCcveBqywrGmKLIsKzMuMPI0buGSidiD/CSCTy+Nlow==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-symbol-sort": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-sort/-/uui-symbol-sort-1.2.0-rc.2.tgz", - "integrity": "sha512-LcUNh/yaKiG5Mli9f95SPcKufKLFFPFz2zaD/iR80kcem2niXfgNPzuhV145XaLpKrebktrDTYKUefsDI6xqrA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-sort/-/uui-symbol-sort-1.2.0-rc.3.tgz", + "integrity": "sha512-yHU43q840CBtzAs+Q9CSvPqf61KOu7pOArda94kmMd1Ct5IrF71/3rJ3a1rGQOa9GG2Gn/4bLD4G4e50zh4Y+A==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-table": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-table/-/uui-table-1.2.0-rc.2.tgz", - "integrity": "sha512-IhHnB5vr7l+8E2Ae/CCy1ZJMH7yWITTfn1zzN+5qcAvQn5M/mm0gCCVFSvHQSRmt9Bj4s9CYSN1rRVp6Nw6gow==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-table/-/uui-table-1.2.0-rc.3.tgz", + "integrity": "sha512-AGEN7RoQrRRA0ht72KtKCS+9Lkfridjl3K96gOPORBfNczxPtPvLC3mroUPolR36eCi1/NKq10uZ+G0Q+ovBJA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-tabs": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tabs/-/uui-tabs-1.2.0-rc.2.tgz", - "integrity": "sha512-R7kK3j8zF9Em4sB85h//hwXh2tV5h6xuJ1DawqY+am0imdZlr/7rkdv89NTJlP5y8nGGKY1P2lfy3prajxcoqQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tabs/-/uui-tabs-1.2.0-rc.3.tgz", + "integrity": "sha512-qx5nqXlKhTpJVrIOBs5DG9lzbrxXh6HMQ0F+qCJ7wg20Sb3U+tUkr4TXGbrPXXYwQxZ1ERhYKdnLbpRNgFE8Hg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-tag": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tag/-/uui-tag-1.2.0-rc.2.tgz", - "integrity": "sha512-8P9ejFdgy1LTwJIWAT90DDj1cKFNbnwo/6HiqmFIHL40h43oa5/xtAh8SlwF+VzzT3EyuIS2+kOQBIaUT5CGRA==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tag/-/uui-tag-1.2.0-rc.3.tgz", + "integrity": "sha512-FWBzn/1OaxUtNCuCIrRXNenJy0GYn6hepGoqaEfDqo4uHdhNNi+xpjEanFwEQf7vRlhlIeEFJN7cSQwTi7ks9A==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-textarea": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-textarea/-/uui-textarea-1.2.0-rc.2.tgz", - "integrity": "sha512-VUbZ9ztkdJpv3bBPCmrrhCjLHiS3MMWVnZT5fnQlbd0v+efD+I09Z4ir8JcdP3lbhP1HbQTVbwx+OyiAHp3pfg==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-textarea/-/uui-textarea-1.2.0-rc.3.tgz", + "integrity": "sha512-MX8pXgpSshx6ulGgoLqS+UkLfVKvERwmE0bV1MRCD8F+S27GjAHk+vMUQY2rYIihD3s87tPYRMwINjwRytWmCw==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3" } }, "@umbraco-ui/uui-toast-notification": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification/-/uui-toast-notification-1.2.0-rc.2.tgz", - "integrity": "sha512-cWm/wUU3WRA5VfQGeLa3nrrmOYmpp78pFWa1QAZUFbCZv/NWEmm1wHLqySb9O9AH5zUz3TG7F1LH75ZXI7dv0g==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification/-/uui-toast-notification-1.2.0-rc.3.tgz", + "integrity": "sha512-xwSJY6zFIstyRElDVoALnx+b7IiauvcAp9QgAQaq7TDivOSy/Cfjb0juEl6vVwvOFRaKdeVMuGUbKFdSdPlBcQ==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-button": "1.2.0-rc.2", - "@umbraco-ui/uui-css": "1.2.0-rc.2", - "@umbraco-ui/uui-icon": "1.2.0-rc.2", - "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-button": "1.2.0-rc.3", + "@umbraco-ui/uui-css": "1.2.0-rc.3", + "@umbraco-ui/uui-icon": "1.2.0-rc.3", + "@umbraco-ui/uui-icon-registry-essential": "1.2.0-rc.3" } }, "@umbraco-ui/uui-toast-notification-container": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-container/-/uui-toast-notification-container-1.2.0-rc.2.tgz", - "integrity": "sha512-3LPWk2mpCsYUOBiqeIdX/DDvQSM324rLMomXgxco+dmI1CvykkSJ2u3HclsmXk567d19h7+rt0k1Ap79him9+g==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-container/-/uui-toast-notification-container-1.2.0-rc.3.tgz", + "integrity": "sha512-T/wsWFqBA/NO++NkY6U550kr7lkU09eyX6OQR/e1jGWmTBbRqgxVS72fHxBDg+3j/Z3RY/jtsXfSy6UZOAc8lg==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-toast-notification": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-toast-notification": "1.2.0-rc.3" } }, "@umbraco-ui/uui-toast-notification-layout": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-layout/-/uui-toast-notification-layout-1.2.0-rc.2.tgz", - "integrity": "sha512-UagMXNgIoVzk+GyLI7S8nsskMtpADhOqcyO8mNLfppF2RVtZ7xmBUPiZ+9OsaiZFet0IcbPpg1ZtdsuNnHZydw==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-layout/-/uui-toast-notification-layout-1.2.0-rc.3.tgz", + "integrity": "sha512-ZNODYxUy2W2I5FJxFjBdPTEICydTdIfk03l7oJDp6UEdsiNIcoWlHOwNjHv0knUm95pAF+RTp1ansO1v6YXpKA==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-css": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-css": "1.2.0-rc.3" } }, "@umbraco-ui/uui-toggle": { - "version": "1.2.0-rc.2", - "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toggle/-/uui-toggle-1.2.0-rc.2.tgz", - "integrity": "sha512-ypp8pFp3GRXk3WLitMJp7Cg/ducZlVDKQyTqwwHap2q6RfkTwvZcLl59Bf00hgkMeTV1vVzFCMSMqLextPabQQ==", + "version": "1.2.0-rc.3", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toggle/-/uui-toggle-1.2.0-rc.3.tgz", + "integrity": "sha512-RbCTWGBja8+oMrWR7Y5DPYJpqeCrGgq88FZ8C83uKxNwdUXqjWHcG60zwiQfpL4enjmCiOWsqc/hWpP7t4Nb/g==", "requires": { - "@umbraco-ui/uui-base": "1.2.0-rc.2", - "@umbraco-ui/uui-boolean-input": "1.2.0-rc.2" + "@umbraco-ui/uui-base": "1.2.0-rc.3", + "@umbraco-ui/uui-boolean-input": "1.2.0-rc.3" } }, "@web/browser-logs": { diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 46d864b4a3..561d6a8af6 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -60,8 +60,8 @@ "npm": ">=9.5 < 10" }, "dependencies": { - "@umbraco-ui/uui": "^1.2.0-rc.2", - "@umbraco-ui/uui-css": "^1.2.0-rc.2", + "@umbraco-ui/uui": "^1.2.0-rc.3", + "@umbraco-ui/uui-css": "^1.2.0-rc.3", "element-internals-polyfill": "^1.1.19", "lit": "^2.7.0", "lodash-es": "4.17.21", From cd9a3a3275345281ef1178b3a2adf4ecd62e6c78 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Sun, 16 Apr 2023 20:27:07 +0200 Subject: [PATCH 43/52] add eslint to to ensure umb prefix on classes --- src/Umbraco.Web.UI.Client/.eslintrc.json | 1 + .../eslint-local-rules.cjs | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/.eslintrc.json b/src/Umbraco.Web.UI.Client/.eslintrc.json index 88caa66773..5d886c4d8f 100644 --- a/src/Umbraco.Web.UI.Client/.eslintrc.json +++ b/src/Umbraco.Web.UI.Client/.eslintrc.json @@ -44,6 +44,7 @@ "local-rules/enforce-element-suffix-on-element-class-name": "error", "local-rules/prefer-umbraco-cms-imports": "error", "local-rules/no-external-imports": "error", + "local-rules/umb-class-prefix": "error", "@typescript-eslint/no-non-null-assertion": "off" }, "settings": { diff --git a/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs b/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs index ed1c5036cd..5d121e8cfb 100644 --- a/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs +++ b/src/Umbraco.Web.UI.Client/eslint-local-rules.cjs @@ -205,4 +205,31 @@ module.exports = { }; }, }, + + /** @type {import('eslint').Rule.RuleModule} */ + 'umb-class-prefix': { + meta: { + type: 'problem', + docs: { + description: 'Ensure that all class declarations are prefixed with "Umb"', + category: 'Best Practices', + recommended: true, + }, + schema: [], + }, + create: function (context) { + function checkClassName(node) { + if (node.id && node.id.name && !node.id.name.startsWith('Umb')) { + context.report({ + node: node.id, + message: 'Class declaration should be prefixed with "Umb"', + }); + } + } + + return { + ClassDeclaration: checkClassName, + }; + }, + }, }; From cc7b07c61c3ce941dc9f20960799b87954f8a6b2 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Sun, 16 Apr 2023 20:30:39 +0200 Subject: [PATCH 44/52] prefix with umb --- .../dictionary/repository/dictionary.repository.ts | 4 ++-- .../repository/sources/dictionary.tree.server.data.ts | 10 +++++----- .../context-provider/context-provider.element.test.ts | 6 +++--- .../core/controller-host/controller-host-test.test.ts | 6 +++--- .../src/core/modal/stories/modal.stories.ts | 2 +- .../stories/story-modal-service-example.element.ts | 4 ++-- .../core/notification/stories/notification.stories.ts | 2 +- .../story-notification-default-example.element.ts | 6 +++--- 8 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts index 0ce6e7db0f..d805833fe8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.repository.ts @@ -1,7 +1,7 @@ import { UmbDictionaryStore, UMB_DICTIONARY_STORE_CONTEXT_TOKEN } from './dictionary.store'; import { UmbDictionaryDetailServerDataSource } from './sources/dictionary.detail.server.data'; import { UmbDictionaryTreeStore, UMB_DICTIONARY_TREE_STORE_CONTEXT_TOKEN } from './dictionary.tree.store'; -import { DictionaryTreeServerDataSource } from './sources/dictionary.tree.server.data'; +import { UmbDictionaryTreeServerDataSource } from './sources/dictionary.tree.server.data'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { UmbTreeDataSource, UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; @@ -39,7 +39,7 @@ export class UmbDictionaryRepository this.#host = host; // TODO: figure out how spin up get the correct data source - this.#treeSource = new DictionaryTreeServerDataSource(this.#host); + this.#treeSource = new UmbDictionaryTreeServerDataSource(this.#host); this.#detailSource = new UmbDictionaryDetailServerDataSource(this.#host); this.#init = Promise.all([ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts index a24572eb9f..e9d5ab9a40 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/sources/dictionary.tree.server.data.ts @@ -6,10 +6,10 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the Dictionary tree that fetches data from the server * @export - * @class DictionaryTreeServerDataSource + * @class UmbDictionaryTreeServerDataSource * @implements {DictionaryTreeDataSource} */ -export class DictionaryTreeServerDataSource implements UmbTreeDataSource { +export class UmbDictionaryTreeServerDataSource implements UmbTreeDataSource { #host: UmbControllerHostElement; /** @@ -24,7 +24,7 @@ export class DictionaryTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the root items for the tree from the server * @return {*} - * @memberof DictionaryTreeServerDataSource + * @memberof UmbDictionaryTreeServerDataSource */ async getRootItems() { return tryExecuteAndNotify(this.#host, DictionaryResource.getTreeDictionaryRoot({})); @@ -34,7 +34,7 @@ export class DictionaryTreeServerDataSource implements UmbTreeDataSource { * Fetches the children of a given parent id from the server * @param {(string | null)} parentId * @return {*} - * @memberof DictionaryTreeServerDataSource + * @memberof UmbDictionaryTreeServerDataSource */ async getChildrenOf(parentId: string | null) { if (!parentId) { @@ -54,7 +54,7 @@ export class DictionaryTreeServerDataSource implements UmbTreeDataSource { * Fetches the items for the given ids from the server * @param {Array} ids * @return {*} - * @memberof DictionaryTreeServerDataSource + * @memberof UmbDictionaryTreeServerDataSource */ async getItems(ids: Array) { if (!ids || ids.length === 0) { diff --git a/src/Umbraco.Web.UI.Client/src/core/context-provider/context-provider.element.test.ts b/src/Umbraco.Web.UI.Client/src/core/context-provider/context-provider.element.test.ts index d64bd405c4..6ea4d15838 100644 --- a/src/Umbraco.Web.UI.Client/src/core/context-provider/context-provider.element.test.ts +++ b/src/Umbraco.Web.UI.Client/src/core/context-provider/context-provider.element.test.ts @@ -4,7 +4,7 @@ import { UmbContextProviderElement } from './context-provider.element'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-context-test') -export class ContextTestElement extends UmbLitElement { +export class UmbContextTestElement extends UmbLitElement { public value: string | null = null; constructor() { super(); @@ -16,7 +16,7 @@ export class ContextTestElement extends UmbLitElement { describe('UmbContextProvider', () => { let element: UmbContextProviderElement; - let consumer: ContextTestElement; + let consumer: UmbContextTestElement; const contextValue = 'test-value'; beforeEach(async () => { @@ -25,7 +25,7 @@ describe('UmbContextProvider', () => { ` ); - consumer = element.getElementsByTagName('umb-context-test')[0] as ContextTestElement; + consumer = element.getElementsByTagName('umb-context-test')[0] as UmbContextTestElement; }); it('is defined with its own instance', () => { diff --git a/src/Umbraco.Web.UI.Client/src/core/controller-host/controller-host-test.test.ts b/src/Umbraco.Web.UI.Client/src/core/controller-host/controller-host-test.test.ts index df0e1f3c42..322bb7246c 100644 --- a/src/Umbraco.Web.UI.Client/src/core/controller-host/controller-host-test.test.ts +++ b/src/Umbraco.Web.UI.Client/src/core/controller-host/controller-host-test.test.ts @@ -6,7 +6,7 @@ import { UmbContextProviderController } from '@umbraco-cms/backoffice/context-ap import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; @customElement('umb-controller-host-test-consumer') -export class ControllerHostTestConsumerElement extends UmbLitElement { +export class UmbControllerHostTestConsumerElement extends UmbLitElement { public value: string | null = null; constructor() { super(); @@ -18,7 +18,7 @@ export class ControllerHostTestConsumerElement extends UmbLitElement { describe('UmbControllerHostTestElement', () => { let element: UmbControllerHostTestElement; - let consumer: ControllerHostTestConsumerElement; + let consumer: UmbControllerHostTestConsumerElement; const contextValue = 'test-value'; beforeEach(async () => { @@ -31,7 +31,7 @@ describe('UmbControllerHostTestElement', () => { ); consumer = element.getElementsByTagName( 'umb-controller-host-test-consumer' - )[0] as ControllerHostTestConsumerElement; + )[0] as UmbControllerHostTestConsumerElement; }); it('element is defined with its own instance', () => { diff --git a/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.stories.ts b/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.stories.ts index e1c4bb2daa..b80cd203b5 100644 --- a/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/core/modal/stories/modal.stories.ts @@ -15,7 +15,7 @@ export default { const Template: Story = (props) => { return html` Under construction - + `; }; diff --git a/src/Umbraco.Web.UI.Client/src/core/modal/stories/story-modal-service-example.element.ts b/src/Umbraco.Web.UI.Client/src/core/modal/stories/story-modal-service-example.element.ts index 42f97388b3..4e0580a122 100644 --- a/src/Umbraco.Web.UI.Client/src/core/modal/stories/story-modal-service-example.element.ts +++ b/src/Umbraco.Web.UI.Client/src/core/modal/stories/story-modal-service-example.element.ts @@ -3,8 +3,8 @@ import { customElement, property, state } from 'lit/decorators.js'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UMB_MODAL_CONTEXT_TOKEN, UmbModalContext } from '@umbraco-cms/backoffice/modal'; -@customElement('story-modal-context-example') -export class StoryModalContextExampleElement extends UmbLitElement { +@customElement('umb-story-modal-context-example') +export class UmbStoryModalContextExampleElement extends UmbLitElement { @property() modalLayout = 'confirm'; diff --git a/src/Umbraco.Web.UI.Client/src/core/notification/stories/notification.stories.ts b/src/Umbraco.Web.UI.Client/src/core/notification/stories/notification.stories.ts index 3c8e401107..6928ff210a 100644 --- a/src/Umbraco.Web.UI.Client/src/core/notification/stories/notification.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/core/notification/stories/notification.stories.ts @@ -15,7 +15,7 @@ export default { ], } as Meta; -const Template: Story = () => html``; +const Template: Story = () => html``; export const Default = Template.bind({}); Default.parameters = { diff --git a/src/Umbraco.Web.UI.Client/src/core/notification/stories/story-notification-default-example.element.ts b/src/Umbraco.Web.UI.Client/src/core/notification/stories/story-notification-default-example.element.ts index de78281ffb..fc29c90356 100644 --- a/src/Umbraco.Web.UI.Client/src/core/notification/stories/story-notification-default-example.element.ts +++ b/src/Umbraco.Web.UI.Client/src/core/notification/stories/story-notification-default-example.element.ts @@ -8,8 +8,8 @@ import { } from '@umbraco-cms/backoffice/notification'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -@customElement('story-notification-default-example') -export class StoryNotificationDefaultExampleElement extends UmbLitElement { +@customElement('umb-story-notification-default-example') +export class UmbStoryNotificationDefaultExampleElement extends UmbLitElement { private _notificationContext?: UmbNotificationContext; connectedCallback(): void { @@ -56,6 +56,6 @@ export class StoryNotificationDefaultExampleElement extends UmbLitElement { declare global { interface HTMLElementTagNameMap { - 'story-notification-default-example': StoryNotificationDefaultExampleElement; + 'umb-story-notification-default-example': UmbStoryNotificationDefaultExampleElement; } } From b37a2382f92c201f0c6c3362b0ae4e327b2b00dc Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Sun, 16 Apr 2023 20:35:53 +0200 Subject: [PATCH 45/52] add umb prefix --- .../dashboard-models-builder.element.ts | 2 +- .../repository/relation-type.repository.ts | 8 ++++---- .../relation-types/repository/sources/index.ts | 2 +- .../sources/relation-type.tree.server.data.ts | 16 ++++++++-------- .../components/code-block/code-block.element.ts | 6 +++--- .../components/code-block/code-block.stories.ts | 10 +++++----- .../sources/template.tree.server.data.ts | 14 +++++++------- .../templates/repository/template.repository.ts | 6 +++--- 8 files changed, 32 insertions(+), 32 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.element.ts index 249718f61e..34bc597c23 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/dashboards/models-builder/dashboard-models-builder.element.ts @@ -135,7 +135,7 @@ export class UmbDashboardModelsBuilderElement extends UmbLitElement {

    ${this._modelsBuilder?.lastError ? html`

    Last generation failed with the following error:

    - ${this._modelsBuilder.lastError}` + ${this._modelsBuilder.lastError}` : nothing} `; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts index 52249a2896..db6bfe9bcf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.repository.ts @@ -1,8 +1,8 @@ import { UmbRelationTypeTreeStore, UMB_RELATION_TYPE_TREE_STORE_CONTEXT_TOKEN } from './relation-type.tree.store'; import { UmbRelationTypeServerDataSource } from './sources/relation-type.server.data'; import { UmbRelationTypeStore, UMB_RELATION_TYPE_STORE_CONTEXT_TOKEN } from './relation-type.store'; -import { RelationTypeTreeServerDataSource } from './sources/relation-type.tree.server.data'; -import { RelationTypeTreeDataSource } from './sources'; +import { UmbRelationTypeTreeServerDataSource } from './sources/relation-type.tree.server.data'; +import { UmbRelationTypeTreeDataSource } from './sources'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { @@ -23,7 +23,7 @@ export class UmbRelationTypeRepository #host: UmbControllerHostElement; - #treeSource: RelationTypeTreeDataSource; + #treeSource: UmbRelationTypeTreeDataSource; #treeStore?: UmbRelationTypeTreeStore; #detailDataSource: UmbRelationTypeServerDataSource; @@ -35,7 +35,7 @@ export class UmbRelationTypeRepository this.#host = host; // TODO: figure out how spin up get the correct data source - this.#treeSource = new RelationTypeTreeServerDataSource(this.#host); + this.#treeSource = new UmbRelationTypeTreeServerDataSource(this.#host); this.#detailDataSource = new UmbRelationTypeServerDataSource(this.#host); this.#init = Promise.all([ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts index f8ff932071..7acf297b3e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/index.ts @@ -1,7 +1,7 @@ import type { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; import { ItemResponseModelBaseModel, PagedEntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; -export interface RelationTypeTreeDataSource { +export interface UmbRelationTypeTreeDataSource { getRootItems(): Promise>; getItems(ids: Array): Promise>; } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts index 1dc64b51b5..4529c77390 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/sources/relation-type.tree.server.data.ts @@ -1,4 +1,4 @@ -import { RelationTypeTreeDataSource } from '.'; +import { UmbRelationTypeTreeDataSource } from '.'; import { ProblemDetailsModel, RelationTypeResource } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; @@ -7,10 +7,10 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the RelationType tree that fetches data from the server * @export - * @class RelationTypeTreeServerDataSource - * @implements {RelationTypeTreeDataSource} + * @class UmbRelationTypeTreeServerDataSource + * @implements {UmbRelationTypeTreeDataSource} */ -export class RelationTypeTreeServerDataSource implements RelationTypeTreeDataSource { +export class UmbRelationTypeTreeServerDataSource implements UmbRelationTypeTreeDataSource { #host: UmbControllerHostElement; // TODO: how do we handle trashed items? @@ -47,9 +47,9 @@ export class RelationTypeTreeServerDataSource implements RelationTypeTreeDataSou } /** - * Creates an instance of RelationTypeTreeServerDataSource. + * Creates an instance of UmbRelationTypeTreeServerDataSource. * @param {UmbControllerHostElement} host - * @memberof RelationTypeTreeServerDataSource + * @memberof UmbRelationTypeTreeServerDataSource */ constructor(host: UmbControllerHostElement) { this.#host = host; @@ -58,7 +58,7 @@ export class RelationTypeTreeServerDataSource implements RelationTypeTreeDataSou /** * Fetches the root items for the tree from the server * @return {*} - * @memberof RelationTypeTreeServerDataSource + * @memberof UmbRelationTypeTreeServerDataSource */ async getRootItems() { return tryExecuteAndNotify(this.#host, RelationTypeResource.getTreeRelationTypeRoot({})); @@ -68,7 +68,7 @@ export class RelationTypeTreeServerDataSource implements RelationTypeTreeDataSou * Fetches the items for the given ids from the server * @param {Array} ids * @return {*} - * @memberof RelationTypeTreeServerDataSource + * @memberof UmbRelationTypeTreeServerDataSource */ async getItems(ids: Array) { if (ids) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-block/code-block.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-block/code-block.element.ts index 99833cbcce..11a4372905 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-block/code-block.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-block/code-block.element.ts @@ -7,8 +7,8 @@ import { customElement } from 'lit/decorators.js'; * @slot the full message * */ -@customElement('uui-code-block') -export class UUICodeBlockElement extends LitElement { +@customElement('umb-code-block') +export class UmbCodeBlockElement extends LitElement { static styles = [ UUITextStyles, css` @@ -54,6 +54,6 @@ export class UUICodeBlockElement extends LitElement { declare global { interface HTMLElementTagNameMap { - 'uui-code-block': UUICodeBlockElement; + 'umb-code-block': UmbCodeBlockElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-block/code-block.stories.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-block/code-block.stories.ts index f3f2d6ca24..46edd57d43 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-block/code-block.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/code-block/code-block.stories.ts @@ -1,15 +1,15 @@ import { Meta, StoryObj } from '@storybook/web-components'; import { html } from 'lit'; import './code-block.element'; -import type { UUICodeBlockElement } from './code-block.element'; +import type { UmbCodeBlockElement } from './code-block.element'; -const meta: Meta = { +const meta: Meta = { title: 'Components/Code Block', - component: 'uui-code-block', + component: 'umb-code-block', }; export default meta; -type Story = StoryObj; +type Story = StoryObj; export const Overview: Story = { args: {}, @@ -17,5 +17,5 @@ export const Overview: Story = { export const WithCode: Story = { decorators: [], - render: () => html` // Lets write some javascript alert("Hello World"); `, + render: () => html` // Lets write some javascript alert("Hello World"); `, }; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts index ed7be4b8d9..ee94417b50 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/sources/template.tree.server.data.ts @@ -6,16 +6,16 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the Template tree that fetches data from the server * @export - * @class TemplateTreeServerDataSource + * @class UmbTemplateTreeServerDataSource * @implements {TemplateTreeDataSource} */ -export class TemplateTreeServerDataSource implements TemplateTreeDataSource { +export class UmbTemplateTreeServerDataSource implements TemplateTreeDataSource { #host: UmbControllerHostElement; /** - * Creates an instance of TemplateTreeServerDataSource. + * Creates an instance of UmbTemplateTreeServerDataSource. * @param {UmbControllerHostElement} host - * @memberof TemplateTreeServerDataSource + * @memberof UmbTemplateTreeServerDataSource */ constructor(host: UmbControllerHostElement) { this.#host = host; @@ -24,7 +24,7 @@ export class TemplateTreeServerDataSource implements TemplateTreeDataSource { /** * Fetches the root items for the tree from the server * @return {*} - * @memberof TemplateTreeServerDataSource + * @memberof UmbTemplateTreeServerDataSource */ async getRootItems() { return tryExecuteAndNotify(this.#host, TemplateResource.getTreeTemplateRoot({})); @@ -34,7 +34,7 @@ export class TemplateTreeServerDataSource implements TemplateTreeDataSource { * Fetches the children of a given parent id from the server * @param {(string | null)} parentId * @return {*} - * @memberof TemplateTreeServerDataSource + * @memberof UmbTemplateTreeServerDataSource */ async getChildrenOf(parentId: string | null) { if (!parentId) { @@ -54,7 +54,7 @@ export class TemplateTreeServerDataSource implements TemplateTreeDataSource { * Fetches the items for the given ids from the server * @param {Array} id * @return {*} - * @memberof TemplateTreeServerDataSource + * @memberof UmbTemplateTreeServerDataSource */ async getItems(ids: Array) { if (!ids) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts index 0ec0c4baa7..2903994109 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.repository.ts @@ -1,5 +1,5 @@ import { UmbTemplateDetailServerDataSource } from './sources/template.detail.server.data'; -import { TemplateTreeServerDataSource } from './sources/template.tree.server.data'; +import { UmbTemplateTreeServerDataSource } from './sources/template.tree.server.data'; import { UmbTemplateStore, UMB_TEMPLATE_STORE_CONTEXT_TOKEN } from './template.store'; import { UmbTemplateTreeStore, UMB_TEMPLATE_TREE_STORE_CONTEXT_TOKEN } from './template.tree.store'; import type { UmbDetailRepository, UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; @@ -21,7 +21,7 @@ export class UmbTemplateRepository #init; #host: UmbControllerHostElement; - #treeDataSource: TemplateTreeServerDataSource; + #treeDataSource: UmbTemplateTreeServerDataSource; #detailDataSource: UmbTemplateDetailServerDataSource; #treeStore?: UmbTemplateTreeStore; @@ -33,7 +33,7 @@ export class UmbTemplateRepository this.#host = host; // TODO: figure out how spin up get the correct data source - this.#treeDataSource = new TemplateTreeServerDataSource(this.#host); + this.#treeDataSource = new UmbTemplateTreeServerDataSource(this.#host); this.#detailDataSource = new UmbTemplateDetailServerDataSource(this.#host); this.#init = Promise.all([ From 26fed3638d444fbdf63a85249685237b980cd39e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Sun, 16 Apr 2023 20:40:13 +0200 Subject: [PATCH 46/52] prefix with umb --- .../consume/context-consumer.test.ts | 16 ++++++---- .../context-provider.controller.test.ts | 20 +++++++----- .../provide/context-provider.test.ts | 31 ++++++++++++------- .../context-api/token/context-token.test.ts | 12 +++---- 4 files changed, 47 insertions(+), 32 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.test.ts b/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.test.ts index bc0c5f2e1e..09a575938f 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/consume/context-consumer.test.ts @@ -5,7 +5,7 @@ import { UmbContextRequestEventImplementation, umbContextRequestEventType } from const testContextAlias = 'my-test-context'; -class MyClass { +class UmbTestContextConsumerClass { prop = 'value from provider'; } @@ -39,16 +39,20 @@ describe('UmbContextConsumer', () => { }); it('works with UmbContextProvider', (done) => { - const provider = new UmbContextProvider(document.body, testContextAlias, new MyClass()); + const provider = new UmbContextProvider(document.body, testContextAlias, new UmbTestContextConsumerClass()); provider.hostConnected(); const element = document.createElement('div'); document.body.appendChild(element); - const localConsumer = new UmbContextConsumer(element, testContextAlias, (_instance: MyClass) => { - expect(_instance.prop).to.eq('value from provider'); - done(); - }); + const localConsumer = new UmbContextConsumer( + element, + testContextAlias, + (_instance: UmbTestContextConsumerClass) => { + expect(_instance.prop).to.eq('value from provider'); + done(); + } + ); localConsumer.hostConnected(); provider.hostDisconnected(); diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.test.ts b/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.test.ts index 7946d8b30b..83bd2a2621 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.test.ts @@ -3,7 +3,7 @@ import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbContextConsumer } from '../consume/context-consumer'; import { UmbContextProviderController } from './context-provider.controller'; -class MyClass { +class UmbTestContextProviderControllerClass { prop = 'value from provider'; } @@ -11,13 +11,13 @@ class ControllerHostElement extends UmbLitElement {} const controllerHostElement = defineCE(ControllerHostElement); describe('UmbContextProviderController', () => { - let instance: MyClass; + let instance: UmbTestContextProviderControllerClass; let provider: UmbContextProviderController; let element: UmbLitElement; beforeEach(async () => { element = await fixture(`<${controllerHostElement}>`); - instance = new MyClass(); + instance = new UmbTestContextProviderControllerClass(); provider = new UmbContextProviderController(element, 'my-test-context', instance); }); @@ -39,11 +39,15 @@ describe('UmbContextProviderController', () => { }); it('works with UmbContextConsumer', (done) => { - const localConsumer = new UmbContextConsumer(element, 'my-test-context', (_instance: MyClass) => { - expect(_instance.prop).to.eq('value from provider'); - done(); - localConsumer.hostDisconnected(); - }); + const localConsumer = new UmbContextConsumer( + element, + 'my-test-context', + (_instance: UmbTestContextProviderControllerClass) => { + expect(_instance.prop).to.eq('value from provider'); + done(); + localConsumer.hostDisconnected(); + } + ); localConsumer.hostConnected(); }); diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.test.ts b/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.test.ts index d39e026a2f..ce82bcb9b5 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.test.ts @@ -3,16 +3,16 @@ import { UmbContextConsumer } from '../consume/context-consumer'; import { UmbContextRequestEventImplementation } from '../consume/context-request.event'; import { UmbContextProvider } from './context-provider'; -class MyClass { +class UmbTestContextProviderClass { prop = 'value from provider'; } describe('UmbContextProvider', () => { - let instance: MyClass; + let instance: UmbTestContextProviderClass; let provider: UmbContextProvider; beforeEach(() => { - instance = new MyClass(); + instance = new UmbTestContextProviderClass(); provider = new UmbContextProvider(document.body, 'my-test-context', instance); provider.hostConnected(); }); @@ -40,10 +40,13 @@ describe('UmbContextProvider', () => { }); it('handles context request events', (done) => { - const event = new UmbContextRequestEventImplementation('my-test-context', (_instance: MyClass) => { - expect(_instance.prop).to.eq('value from provider'); - done(); - }); + const event = new UmbContextRequestEventImplementation( + 'my-test-context', + (_instance: UmbTestContextProviderClass) => { + expect(_instance.prop).to.eq('value from provider'); + done(); + } + ); document.body.dispatchEvent(event); }); @@ -52,11 +55,15 @@ describe('UmbContextProvider', () => { const element = document.createElement('div'); document.body.appendChild(element); - const localConsumer = new UmbContextConsumer(element, 'my-test-context', (_instance: MyClass) => { - expect(_instance.prop).to.eq('value from provider'); - done(); - localConsumer.hostDisconnected(); - }); + const localConsumer = new UmbContextConsumer( + element, + 'my-test-context', + (_instance: UmbTestContextProviderClass) => { + expect(_instance.prop).to.eq('value from provider'); + done(); + localConsumer.hostDisconnected(); + } + ); localConsumer.hostConnected(); }); }); diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/token/context-token.test.ts b/src/Umbraco.Web.UI.Client/libs/context-api/token/context-token.test.ts index f8b0a2046d..01cdf69427 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/token/context-token.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/token/context-token.test.ts @@ -5,13 +5,13 @@ import { UmbContextToken } from './context-token'; const testContextAlias = 'my-test-context'; -class MyClass { +class UmbTestContextTokenClass { prop = 'value from provider'; } describe('ContextAlias', () => { - const contextAlias = new UmbContextToken(testContextAlias); - const typedProvider = new UmbContextProvider(document.body, contextAlias, new MyClass()); + const contextAlias = new UmbContextToken(testContextAlias); + const typedProvider = new UmbContextProvider(document.body, contextAlias, new UmbTestContextTokenClass()); typedProvider.hostConnected(); after(() => { @@ -27,7 +27,7 @@ describe('ContextAlias', () => { document.body.appendChild(element); const localConsumer = new UmbContextConsumer(element, contextAlias, (_instance) => { - expect(_instance).to.be.instanceOf(MyClass); + expect(_instance).to.be.instanceOf(UmbTestContextTokenClass); expect(_instance.prop).to.eq('value from provider'); done(); }); @@ -39,8 +39,8 @@ describe('ContextAlias', () => { const element = document.createElement('div'); document.body.appendChild(element); - const localConsumer = new UmbContextConsumer(element, testContextAlias, (_instance: MyClass) => { - expect(_instance).to.be.instanceOf(MyClass); + const localConsumer = new UmbContextConsumer(element, testContextAlias, (_instance: UmbTestContextTokenClass) => { + expect(_instance).to.be.instanceOf(UmbTestContextTokenClass); expect(_instance.prop).to.eq('value from provider'); done(); }); From cce5477195d7390ced363436fcbd9528ced241b7 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Sun, 16 Apr 2023 20:48:38 +0200 Subject: [PATCH 47/52] add umb prefix --- .../libs/observable-api/array-state.test.ts | 6 ++-- .../libs/observable-api/array-state.ts | 30 +++++++++---------- .../libs/observable-api/basic-state.ts | 4 +-- .../libs/observable-api/boolean-state.ts | 6 ++-- .../libs/observable-api/class-state.ts | 8 ++--- .../libs/observable-api/number-state.ts | 4 +-- .../libs/observable-api/object-state.test.ts | 29 +++++++----------- .../libs/observable-api/object-state.ts | 10 +++---- .../partial-update-frozen-array.function.ts | 2 +- .../libs/observable-api/string-state.ts | 6 ++-- .../libs/store/entity-tree-store.ts | 4 +-- .../libs/store/file-system-tree.store.ts | 4 +-- .../document-blueprint.detail.store.ts | 4 +-- .../repository/document-type.store.ts | 4 +-- .../documents/repository/document.store.ts | 4 +-- .../workspace/document-workspace.context.ts | 10 +++++-- .../repository/media-type.detail.store.ts | 4 +-- .../workspace/media-type-workspace.context.ts | 4 +-- .../media/media/repository/media.store.ts | 4 +-- .../media/repository/media.tree.store.ts | 4 +-- .../workspace/media-workspace.context.ts | 4 +-- .../repository/member-group.store.ts | 4 +-- .../member-group-workspace.context.ts | 4 +-- .../repository/member-type.store.ts | 4 +-- .../member-type-workspace.context.ts | 4 +-- .../members/members/member.detail.store.ts | 4 +-- .../members/repository/member.store.ts | 4 +-- .../packages/repository/package.store.ts | 6 ++-- .../data-types/repository/data-type.store.ts | 4 +-- .../workspace/data-type-workspace.context.ts | 4 +-- .../app-language.context.ts | 4 +-- .../languages/repository/language.store.ts | 4 +-- .../language/language-workspace.context.ts | 6 ++-- .../logviewer/workspace/logviewer.context.ts | 16 +++++----- .../repository/relation-type.store.ts | 4 +-- .../relation-type-workspace.context.ts | 4 +-- .../shared/collection/collection.context.ts | 6 ++-- .../section-sidebar.context.ts | 4 +-- .../components/section/section.context.ts | 2 +- .../tree-item-base/tree-item-base.context.ts | 14 ++++----- .../workspace-property.context.ts | 13 +++++--- .../entity-manager-controller.ts | 4 +-- ...kspace-container-structure-helper.class.ts | 6 ++-- .../workspace-context/workspace-context.ts | 4 +-- ...rkspace-property-structure-helper.class.ts | 4 +-- .../workspace-split-view-manager.class.ts | 4 +-- .../workspace-structure-manager.class.ts | 6 ++-- .../workspace-variant.context.ts | 11 +++++-- .../workspace/stylesheet-workspace.context.ts | 4 +-- .../templates/repository/template.store.ts | 4 +-- .../dictionary/repository/dictionary.store.ts | 4 +-- .../workspace/dictionary-workspace.context.ts | 4 +-- .../users/current-user/current-user.store.ts | 4 +-- .../repository/user-group.store.ts | 4 +-- .../users/users/repository/user.store.ts | 4 +-- .../src/installer/installer.context.ts | 8 ++--- .../src/stories/store.mdx | 6 ++-- 57 files changed, 179 insertions(+), 172 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.test.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.test.ts index 854ec3ee92..1a22dae157 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.test.ts @@ -1,11 +1,11 @@ import { expect } from '@open-wc/testing'; -import { ArrayState } from './array-state'; +import { UmbArrayState } from './array-state'; describe('ArrayState', () => { type ObjectType = { key: string; another: string }; type ArrayType = ObjectType[]; - let subject: ArrayState; + let subject: UmbArrayState; let initialData: ArrayType; beforeEach(() => { @@ -14,7 +14,7 @@ describe('ArrayState', () => { { key: '2', another: 'myValue2' }, { key: '3', another: 'myValue3' }, ]; - subject = new ArrayState(initialData, (x) => x.key); + subject = new UmbArrayState(initialData, (x) => x.key); }); it('replays latests, no matter the amount of subscriptions.', (done) => { diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.ts index 7572f89d8b..df29f02b1c 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.ts @@ -4,14 +4,14 @@ import { pushToUniqueArray } from './push-to-unique-array.function'; /** * @export - * @class ArrayState + * @class UmbArrayState * @extends {DeepState} * @description - A RxJS BehaviorSubject which deepFreezes the object-data to ensure its not manipulated from any implementations. * Additionally the Subject ensures the data is unique, not updating any Observes unless there is an actual change of the content. * * The ArrayState provides methods to append data when the data is an Object. */ -export class ArrayState extends DeepState { +export class UmbArrayState extends DeepState { #getUnique?: (entry: T) => unknown; #sortMethod?: (a: T, b: T) => number; @@ -29,7 +29,7 @@ export class ArrayState extends DeepState { * { key: 1, value: 'foo'}, * { key: 2, value: 'bar'} * ]; - * const myState = new ArrayState(data, (x) => x.key); + * const myState = new UmbArrayState(data, (x) => x.key); * myState.sortBy((a, b) => (a.sortOrder || 0) - (b.sortOrder || 0)); */ sortBy(sortMethod?: (a: T, b: T) => number) { @@ -48,14 +48,14 @@ export class ArrayState extends DeepState { /** * @method remove * @param {unknown[]} uniques - The unique values to remove. - * @return {ArrayState} Reference to it self. + * @return {UmbArrayState} Reference to it self. * @description - Remove some new data of this Subject. * @example Example remove entry with id '1' and '2' * const data = [ * { id: 1, value: 'foo'}, * { id: 2, value: 'bar'} * ]; - * const myState = new ArrayState(data, (x) => x.id); + * const myState = new UmbArrayState(data, (x) => x.id); * myState.remove([1, 2]); */ remove(uniques: unknown[]) { @@ -77,14 +77,14 @@ export class ArrayState extends DeepState { /** * @method removeOne * @param {unknown} unique - The unique value to remove. - * @return {ArrayState} Reference to it self. + * @return {UmbArrayState} Reference to it self. * @description - Remove some new data of this Subject. * @example Example remove entry with id '1' * const data = [ * { id: 1, value: 'foo'}, * { id: 2, value: 'bar'} * ]; - * const myState = new ArrayState(data, (x) => x.id); + * const myState = new UmbArrayState(data, (x) => x.id); * myState.removeOne(1); */ removeOne(unique: unknown) { @@ -104,7 +104,7 @@ export class ArrayState extends DeepState { /** * @method filter * @param {unknown} filterMethod - The unique value to remove. - * @return {ArrayState} Reference to it self. + * @return {UmbArrayState} Reference to it self. * @description - Remove some new data of this Subject. * @example Example remove entry with key '1' * const data = [ @@ -112,7 +112,7 @@ export class ArrayState extends DeepState { * { key: 2, value: 'bar'}, * { key: 3, value: 'poo'} * ]; - * const myState = new ArrayState(data, (x) => x.key); + * const myState = new UmbArrayState(data, (x) => x.key); * myState.filter((entry) => entry.key !== 1); * * Result: @@ -130,14 +130,14 @@ export class ArrayState extends DeepState { /** * @method appendOne * @param {T} entry - new data to be added in this Subject. - * @return {ArrayState} Reference to it self. + * @return {UmbArrayState} Reference to it self. * @description - Append some new data to this Subject. * @example Example append some data. * const data = [ * { key: 1, value: 'foo'}, * { key: 2, value: 'bar'} * ]; - * const myState = new ArrayState(data); + * const myState = new UmbArrayState(data); * myState.append({ key: 1, value: 'replaced-foo'}); */ appendOne(entry: T) { @@ -154,14 +154,14 @@ export class ArrayState extends DeepState { /** * @method append * @param {T[]} entries - A array of new data to be added in this Subject. - * @return {ArrayState} Reference to it self. + * @return {UmbArrayState} Reference to it self. * @description - Append some new data to this Subject, if it compares to existing data it will replace it. * @example Example append some data. * const data = [ * { key: 1, value: 'foo'}, * { key: 2, value: 'bar'} * ]; - * const myState = new ArrayState(data); + * const myState = new UmbArrayState(data); * myState.append([ * { key: 1, value: 'replaced-foo'}, * { key: 3, value: 'another-bla'} @@ -184,14 +184,14 @@ export class ArrayState extends DeepState { * @method updateOne * @param {unknown} unique - Unique value to find entry to update. * @param {Partial} entry - new data to be added in this Subject. - * @return {ArrayState} Reference to it self. + * @return {UmbArrayState} Reference to it self. * @description - Update a item with some new data, requires the ArrayState to be constructed with a getUnique method. * @example Example append some data. * const data = [ * { key: 1, value: 'foo'}, * { key: 2, value: 'bar'} * ]; - * const myState = new ArrayState(data, (x) => x.key); + * const myState = new UmbArrayState(data, (x) => x.key); * myState.updateOne(2, {value: 'updated-bar'}); */ updateOne(unique: unknown, entry: Partial) { diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/basic-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/basic-state.ts index 57d7f8581b..30972d0ef4 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/basic-state.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/basic-state.ts @@ -2,11 +2,11 @@ import { BehaviorSubject } from 'rxjs'; /** * @export - * @class BasicState + * @class UmbBasicState * @extends {BehaviorSubject} * @description - A RxJS BehaviorSubject this Subject ensures the data is unique, not updating any Observes unless there is an actual change of the value. */ -export class BasicState extends BehaviorSubject { +export class UmbBasicState extends BehaviorSubject { constructor(initialData: T) { super(initialData); } diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/boolean-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/boolean-state.ts index 5404d43651..85a91d895d 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/boolean-state.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/boolean-state.ts @@ -1,12 +1,12 @@ -import { BasicState } from './basic-state'; +import { UmbBasicState } from './basic-state'; /** * @export - * @class BooleanState + * @class UmbBooleanState * @extends {BehaviorSubject} * @description - A RxJS BehaviorSubject this Subject ensures the data is unique, not updating any Observes unless there is an actual change of the value. */ -export class BooleanState extends BasicState { +export class UmbBooleanState extends UmbBasicState { constructor(initialData: T | boolean) { super(initialData); } diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/class-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/class-state.ts index 11c38dc6b9..586710e38b 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/class-state.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/class-state.ts @@ -1,16 +1,16 @@ import { BehaviorSubject } from 'rxjs'; -interface ClassStateData { - equal(otherClass: ClassStateData): boolean; +interface UmbClassStateData { + equal(otherClass: UmbClassStateData): boolean; } /** * @export - * @class ClassState + * @class UmbClassState * @extends {BehaviorSubject} * @description - A RxJS BehaviorSubject which can hold class instance which has a equal method to compare in coming instances for changes. */ -export class ClassState extends BehaviorSubject { +export class UmbClassState extends BehaviorSubject { constructor(initialData: T) { super(initialData); } diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/number-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/number-state.ts index ded3defeb9..82387e9580 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/number-state.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/number-state.ts @@ -1,4 +1,4 @@ -import { BasicState } from './basic-state'; +import { UmbBasicState } from './basic-state'; /** * @export @@ -6,7 +6,7 @@ import { BasicState } from './basic-state'; * @extends {BehaviorSubject} * @description - A RxJS BehaviorSubject this Subject ensures the data is unique, not updating any Observes unless there is an actual change of the value. */ -export class NumberState extends BasicState { +export class NumberState extends UmbBasicState { constructor(initialData: T | number) { super(initialData); } diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/object-state.test.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/object-state.test.ts index 66b1e0deef..75b4d3bbe2 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/object-state.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/object-state.test.ts @@ -1,21 +1,18 @@ import { expect } from '@open-wc/testing'; -import { ObjectState } from './object-state'; +import { UmbObjectState } from './object-state'; -describe('ObjectState', () => { +describe('UmbObjectState', () => { + type ObjectType = { key: string; another: string }; - type ObjectType = {key: string, another: string}; - - let subject: ObjectState; + let subject: UmbObjectState; let initialData: ObjectType; beforeEach(() => { - initialData = {key: 'some', another: 'myValue'}; - subject = new ObjectState(initialData); + initialData = { key: 'some', another: 'myValue' }; + subject = new UmbObjectState(initialData); }); - it('replays latests, no matter the amount of subscriptions.', (done) => { - const observer = subject.asObservable(); observer.subscribe((value) => { expect(value).to.be.equal(initialData); @@ -24,28 +21,24 @@ describe('ObjectState', () => { expect(value).to.be.equal(initialData); done(); }); - }); it('use getObservablePart, updates on its specific change.', (done) => { - let amountOfCallbacks = 0; - const subObserver = subject.getObservablePart(data => data.another); + const subObserver = subject.getObservablePart((data) => data.another); subObserver.subscribe((value) => { amountOfCallbacks++; - if(amountOfCallbacks === 1) { + if (amountOfCallbacks === 1) { expect(value).to.be.equal('myValue'); } - if(amountOfCallbacks === 2) { + if (amountOfCallbacks === 2) { expect(value).to.be.equal('myNewValue'); done(); } }); - subject.update({key: 'change_this_first_should_not_trigger_update'}); - subject.update({another: 'myNewValue'}); - + subject.update({ key: 'change_this_first_should_not_trigger_update' }); + subject.update({ another: 'myNewValue' }); }); - }); diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/object-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/object-state.ts index 04c72dd9b3..fdb85a43b9 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/object-state.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/object-state.ts @@ -2,22 +2,22 @@ import { DeepState } from './deep-state'; /** * @export - * @class ObjectState + * @class UmbObjectState * @extends {DeepState} * @description - A RxJS BehaviorSubject which deepFreezes the object-data to ensure its not manipulated from any implementations. * Additionally the Subject ensures the data is unique, not updating any Observes unless there is an actual change of the content. * - * The ObjectState provides methods to append data when the data is an Object. + * The UmbObjectState provides methods to append data when the data is an Object. */ -export class ObjectState extends DeepState { +export class UmbObjectState extends DeepState { /** * @method update * @param {Partial} partialData - A object containing some of the data to update in this Subject. * @description - Append some new data to this Object. - * @return {ObjectState} Reference to it self. + * @return {UmbObjectState} Reference to it self. * @example Example append some data. * const data = {key: 'myKey', value: 'myInitialValue'}; - * const myState = new ObjectState(data); + * const myState = new UmbObjectState(data); * myState.update({value: 'myNewValue'}); */ update(partialData: Partial) { diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/partial-update-frozen-array.function.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/partial-update-frozen-array.function.ts index 14a2e4c5b6..9064fb0384 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/partial-update-frozen-array.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/partial-update-frozen-array.function.ts @@ -5,7 +5,7 @@ * @param {(mappable: T) => R} mappingFunction - Method to return the part for this Observable to return. * @param {(previousResult: R, currentResult: R) => boolean} [memoizationFunction] - Method to Compare if the data has changed. Should return true when data is different. * @description - Creates a RxJS Observable from RxJS Subject. - * @example Example append new entry for a ArrayState or a part of DeepState/ObjectState it which is an array. Where the key is unique and the item will be updated if matched with existing. + * @example Example append new entry for a ArrayState or a part of DeepState/UmbObjectState it which is an array. Where the key is unique and the item will be updated if matched with existing. * const partialEntry = {value: 'myValue'}; * const newDataSet = partialUpdateFrozenArray(mySubject.getValue(), partialEntry, x => x.key === 'myKey'); * mySubject.next(newDataSet); diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/string-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/string-state.ts index d3e9689a7b..d78d91127e 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/string-state.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/string-state.ts @@ -1,12 +1,12 @@ -import { BasicState } from './basic-state'; +import { UmbBasicState } from './basic-state'; /** * @export * @class StringState - * @extends {BasicState} + * @extends {UmbBasicState} * @description - A RxJS BehaviorSubject this Subject ensures the data is unique, not updating any Observes unless there is an actual change of the value. */ -export class StringState extends BasicState { +export class StringState extends UmbBasicState { constructor(initialData: T | string) { super(initialData); } diff --git a/src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts b/src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts index ea94db043a..dfa6815a04 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/entity-tree-store.ts @@ -1,5 +1,5 @@ import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; -import { ArrayState, partialUpdateFrozenArray } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState, partialUpdateFrozenArray } from '@umbraco-cms/backoffice/observable-api'; import { UmbStoreBase, UmbTreeStore } from '@umbraco-cms/backoffice/store'; /** @@ -9,7 +9,7 @@ import { UmbStoreBase, UmbTreeStore } from '@umbraco-cms/backoffice/store'; * @description - General Tree Data Store */ export class UmbEntityTreeStore extends UmbStoreBase implements UmbTreeStore { - #data = new ArrayState([], (x) => x.id); + #data = new UmbArrayState([], (x) => x.id); /** * Appends items to the store diff --git a/src/Umbraco.Web.UI.Client/libs/store/file-system-tree.store.ts b/src/Umbraco.Web.UI.Client/libs/store/file-system-tree.store.ts index 8afa8ca62e..3bb024511a 100644 --- a/src/Umbraco.Web.UI.Client/libs/store/file-system-tree.store.ts +++ b/src/Umbraco.Web.UI.Client/libs/store/file-system-tree.store.ts @@ -1,5 +1,5 @@ import { FileSystemTreeItemPresentationModel } from '@umbraco-cms/backoffice/backend-api'; -import { ArrayState, partialUpdateFrozenArray } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState, partialUpdateFrozenArray } from '@umbraco-cms/backoffice/observable-api'; import { UmbStoreBase, UmbTreeStore } from '@umbraco-cms/backoffice/store'; /** @@ -9,7 +9,7 @@ import { UmbStoreBase, UmbTreeStore } from '@umbraco-cms/backoffice/store'; * @description - General Tree Data Store */ export class UmbFileSystemTreeStore extends UmbStoreBase implements UmbTreeStore { - #data = new ArrayState([], (x) => x.path); + #data = new UmbArrayState([], (x) => x.path); /** * Appends items to the store diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts index f60b478a36..054c05d1ec 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-blueprints/document-blueprint.detail.store.ts @@ -1,6 +1,6 @@ import type { DocumentBlueprintDetails } from '@umbraco-cms/backoffice/models'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api'; import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; @@ -12,7 +12,7 @@ import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; */ export class UmbDocumentBlueprintStore extends UmbStoreBase { // TODO: use the right type: - #data = new ArrayState([], (x) => x.id); + #data = new UmbArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement) { super(host, UMB_DOCUMENT_BLUEPRINT_STORE_CONTEXT_TOKEN.toString()); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts index 23b64c0942..3ad9e8e4e2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.store.ts @@ -1,6 +1,6 @@ import { DocumentTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api'; import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; @@ -11,7 +11,7 @@ import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; * @description - Data Store for Document Types */ export class UmbDocumentTypeStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.id); + #data = new UmbArrayState([], (x) => x.id); /** * Creates an instance of UmbDocumentTypeStore. diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts index d53818f95e..5af98a68b8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.store.ts @@ -1,6 +1,6 @@ import { DocumentResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api'; import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; @@ -11,7 +11,7 @@ import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; * @description - Data Store for Template Details */ export class UmbDocumentStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.id); + #data = new UmbArrayState([], (x) => x.id); /** * Creates an instance of UmbDocumentDetailStore. diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.context.ts index e4d3f0b984..3b38145096 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/workspace/document-workspace.context.ts @@ -6,7 +6,11 @@ import { UmbVariantId } from '../../../shared/variants/variant-id.class'; import { UmbWorkspacePropertyStructureManager } from '../../../shared/components/workspace/workspace-context/workspace-structure-manager.class'; import { UmbWorkspaceSplitViewManager } from '../../../shared/components/workspace/workspace-context/workspace-split-view-manager.class'; import type { CreateDocumentRequestModel, DocumentResponseModel } from '@umbraco-cms/backoffice/backend-api'; -import { partialUpdateFrozenArray, ObjectState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; +import { + partialUpdateFrozenArray, + UmbObjectState, + UmbObserverController, +} from '@umbraco-cms/backoffice/observable-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; // TODO: should this context be called DocumentDraft instead of workspace? or should the draft be part of this? @@ -22,12 +26,12 @@ export class UmbDocumentWorkspaceContext * For now lets not share this publicly as it can become confusing. * TODO: Use this to compare, for variants with changes. */ - #document = new ObjectState(undefined); + #document = new UmbObjectState(undefined); /** * The document is the current state/draft version of the document. */ - #draft = new ObjectState(undefined); + #draft = new UmbObjectState(undefined); readonly unique = this.#draft.getObservablePart((data) => data?.id); readonly documentTypeKey = this.#draft.getObservablePart((data) => data?.contentTypeId); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.detail.store.ts index d6ef9c0fa9..844b1f5a1e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.detail.store.ts @@ -1,7 +1,7 @@ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; -import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api'; import type { MediaTypeDetails } from '@umbraco-cms/backoffice/models'; /** @@ -11,7 +11,7 @@ import type { MediaTypeDetails } from '@umbraco-cms/backoffice/models'; * @description - Details Data Store for Media Types */ export class UmbMediaTypeStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.id); + #data = new UmbArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement) { super(host, UMB_MEDIA_TYPE_STORE_CONTEXT_TOKEN.toString()); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.context.ts index 648c880015..921a41b6b1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/workspace/media-type-workspace.context.ts @@ -2,7 +2,7 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/worksp import { UmbMediaTypeRepository } from '../repository/media-type.repository'; import { UmbEntityWorkspaceContextInterface } from '@umbraco-cms/backoffice/workspace'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; -import { ObjectState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbObjectState } from '@umbraco-cms/backoffice/observable-api'; import type { MediaTypeDetails } from '@umbraco-cms/backoffice/models'; type EntityType = MediaTypeDetails; @@ -10,7 +10,7 @@ export class UmbWorkspaceMediaTypeContext extends UmbWorkspaceContext implements UmbEntityWorkspaceContextInterface { - #data = new ObjectState(undefined); + #data = new UmbObjectState(undefined); data = this.#data.asObservable(); name = this.#data.getObservablePart((data) => data?.name); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.store.ts index ddc1a8b5fc..c6eb6e22f7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.store.ts @@ -1,6 +1,6 @@ import type { MediaDetails } from '../'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api'; import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; @@ -11,7 +11,7 @@ import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; * @description - Data Store for Template Details */ export class UmbMediaStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.id); + #data = new UmbArrayState([], (x) => x.id); /** * Creates an instance of UmbMediaStore. diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts index 9c63d9c946..babdf21049 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.tree.store.ts @@ -1,6 +1,6 @@ import { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api'; import { UmbEntityTreeStore } from '@umbraco-cms/backoffice/store'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; @@ -13,7 +13,7 @@ export const UMB_MEDIA_TREE_STORE_CONTEXT_TOKEN = new UmbContextToken([], (x) => x.id); + #data = new UmbArrayState([], (x) => x.id); /** * Creates an instance of UmbMediaTreeStore. diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.context.ts index 751b587560..9e50b63768 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/workspace/media-workspace.context.ts @@ -2,7 +2,7 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/worksp import { UmbMediaRepository } from '../repository/media.repository'; import type { MediaDetails } from '../'; import type { UmbEntityWorkspaceContextInterface } from '@umbraco-cms/backoffice/workspace'; -import { appendToFrozenArray, ObjectState } from '@umbraco-cms/backoffice/observable-api'; +import { appendToFrozenArray, UmbObjectState } from '@umbraco-cms/backoffice/observable-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; type EntityType = MediaDetails; @@ -10,7 +10,7 @@ export class UmbMediaWorkspaceContext extends UmbWorkspaceContext implements UmbEntityWorkspaceContextInterface { - #data = new ObjectState(undefined); + #data = new UmbObjectState(undefined); data = this.#data.asObservable(); name = this.#data.getObservablePart((data) => data?.name); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.store.ts index 38fd8ede11..44eff1edff 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.store.ts @@ -1,6 +1,6 @@ import type { MemberGroupDetails } from '@umbraco-cms/backoffice/models'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; @@ -11,7 +11,7 @@ import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; * @description - Data Store for Member Groups */ export class UmbMemberGroupStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.id); + #data = new UmbArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement) { super(host, UMB_MEMBER_GROUP_STORE_CONTEXT_TOKEN.toString()); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.context.ts index ecf64222eb..bf8f38eb1e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/workspace/member-group-workspace.context.ts @@ -3,14 +3,14 @@ import { UmbMemberGroupRepository } from '../repository/member-group.repository' import { UmbEntityWorkspaceContextInterface } from '@umbraco-cms/backoffice/workspace'; import type { MemberGroupDetails } from '@umbraco-cms/backoffice/models'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; -import { ObjectState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbObjectState } from '@umbraco-cms/backoffice/observable-api'; type EntityType = MemberGroupDetails; export class UmbWorkspaceMemberGroupContext extends UmbWorkspaceContext implements UmbEntityWorkspaceContextInterface { - #data = new ObjectState(undefined); + #data = new UmbObjectState(undefined); data = this.#data.asObservable(); name = this.#data.getObservablePart((data) => data?.name); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.store.ts index b9afd506a2..c379a95620 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.store.ts @@ -1,7 +1,7 @@ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; -import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api'; import type { MemberTypeDetails } from '@umbraco-cms/backoffice/models'; /** @@ -11,7 +11,7 @@ import type { MemberTypeDetails } from '@umbraco-cms/backoffice/models'; * @description - Data Store for Member Types */ export class UmbMemberTypeStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.id); + #data = new UmbArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement) { super(host, UMB_MEMBER_TYPE_STORE_CONTEXT_TOKEN.toString()); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.context.ts index 8274bec279..9acaa2b9f7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/workspace/member-type-workspace.context.ts @@ -1,7 +1,7 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbMemberTypeRepository } from '../repository/member-type.repository'; import { UmbEntityWorkspaceContextInterface } from '@umbraco-cms/backoffice/workspace'; -import { ObjectState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbObjectState } from '@umbraco-cms/backoffice/observable-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; // TODO => use correct tpye @@ -11,7 +11,7 @@ export class UmbMemberTypeWorkspaceContext extends UmbWorkspaceContext implements UmbEntityWorkspaceContextInterface { - #data = new ObjectState(undefined); + #data = new UmbObjectState(undefined); name = this.#data.getObservablePart((data) => data?.name); constructor(host: UmbControllerHostElement) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts index 973f79f5c4..a5b8248990 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/member.detail.store.ts @@ -2,7 +2,7 @@ import { Observable } from 'rxjs'; import { umbMemberData } from '../../../core/mocks/data/member.data'; import type { MemberDetails, MemberGroupDetails } from '@umbraco-cms/backoffice/models'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { ArrayState, createObservablePart } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState, createObservablePart } from '@umbraco-cms/backoffice/observable-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbEntityDetailStore, UmbStoreBase } from '@umbraco-cms/backoffice/store'; @@ -13,7 +13,7 @@ import { UmbEntityDetailStore, UmbStoreBase } from '@umbraco-cms/backoffice/stor * @description - Data Store for Members */ export class UmbMemberStore extends UmbStoreBase implements UmbEntityDetailStore { - #data = new ArrayState([], (x) => x.id); + #data = new UmbArrayState([], (x) => x.id); public groups = this.#data.asObservable(); constructor(private host: UmbControllerHostElement) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.store.ts index 4b01b1a8d8..958cb319ab 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.store.ts @@ -1,7 +1,7 @@ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; -import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api'; import type { MemberDetails } from '@umbraco-cms/backoffice/models'; /** @@ -11,7 +11,7 @@ import type { MemberDetails } from '@umbraco-cms/backoffice/models'; * @description - Data Store for Members */ export class UmbMemberStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.id); + #data = new UmbArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement) { super(host, UMB_MEMBER_STORE_CONTEXT_TOKEN.toString()); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts index 8ed4792471..0d0a8440a0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/packages/repository/package.store.ts @@ -5,7 +5,7 @@ import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; import type { UmbPackage } from '@umbraco-cms/backoffice/models'; import type { PackageMigrationStatusResponseModel } from '@umbraco-cms/backoffice/backend-api'; import type { ManifestBase } from '@umbraco-cms/backoffice/extensions-registry'; -import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api'; export const UMB_PACKAGE_STORE_TOKEN = new UmbContextToken('UmbPackageStore'); @@ -21,9 +21,9 @@ export class UmbPackageStore extends UmbStoreBase { */ #packages = new ReplaySubject>(1); - #extensions = new ArrayState([], (e) => e.alias); + #extensions = new UmbArrayState([], (e) => e.alias); - #migrations = new ArrayState([], (e) => e.packageName); + #migrations = new UmbArrayState([], (e) => e.packageName); /** * Observable of packages with extensions diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts index 71db9b0013..b3aea6ee17 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/repository/data-type.store.ts @@ -1,6 +1,6 @@ import type { DataTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api'; import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; @@ -13,7 +13,7 @@ export const UMB_DATA_TYPE_STORE_CONTEXT_TOKEN = new UmbContextToken([], (x) => x.id); + #data = new UmbArrayState([], (x) => x.id); /** * Creates an instance of UmbDataTypeStore. diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.context.ts index 127850dc1f..15a5714fc1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/data-types/workspace/data-type-workspace.context.ts @@ -2,7 +2,7 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/worksp import { UmbDataTypeRepository } from '../repository/data-type.repository'; import { UmbEntityWorkspaceContextInterface } from '@umbraco-cms/backoffice/workspace'; import type { CreateDataTypeRequestModel, DataTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; -import { appendToFrozenArray, ObjectState } from '@umbraco-cms/backoffice/observable-api'; +import { appendToFrozenArray, UmbObjectState } from '@umbraco-cms/backoffice/observable-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; export class UmbDataTypeWorkspaceContext @@ -10,7 +10,7 @@ export class UmbDataTypeWorkspaceContext implements UmbEntityWorkspaceContextInterface { // TODO: revisit. temp solution because the create and response models are different. - #data = new ObjectState(undefined); + #data = new UmbObjectState(undefined); data = this.#data.asObservable(); name = this.#data.getObservablePart((data) => data?.name); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language.context.ts index 6f85f5c271..4ed5119e48 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/app-language-select/app-language.context.ts @@ -1,5 +1,5 @@ import { UmbLanguageRepository } from '../repository/language.repository'; -import { ObjectState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; +import { UmbObjectState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; @@ -10,7 +10,7 @@ export class UmbAppLanguageContext { #languages: Array = []; - #appLanguage = new ObjectState(undefined); + #appLanguage = new UmbObjectState(undefined); appLanguage = this.#appLanguage.asObservable(); constructor(host: UmbControllerHostElement) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.store.ts index 820b66fc50..4844685cd7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/repository/language.store.ts @@ -1,7 +1,7 @@ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; -import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api'; import { LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; export const UMB_LANGUAGE_STORE_CONTEXT_TOKEN = new UmbContextToken('UmbLanguageStore'); @@ -13,7 +13,7 @@ export const UMB_LANGUAGE_STORE_CONTEXT_TOKEN = new UmbContextToken([], (x) => x.isoCode); + #data = new UmbArrayState([], (x) => x.isoCode); data = this.#data.asObservable(); constructor(host: UmbControllerHostElement) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.context.ts index f51bfe3075..782f623ff0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/languages/workspace/language/language-workspace.context.ts @@ -2,18 +2,18 @@ import { UmbLanguageRepository } from '../../repository/language.repository'; import { UmbWorkspaceContext } from '../../../../shared/components/workspace/workspace-context/workspace-context'; import { UmbEntityWorkspaceContextInterface } from '@umbraco-cms/backoffice/workspace'; import type { LanguageResponseModel } from '@umbraco-cms/backoffice/backend-api'; -import { ObjectState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbObjectState } from '@umbraco-cms/backoffice/observable-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; export class UmbLanguageWorkspaceContext extends UmbWorkspaceContext implements UmbEntityWorkspaceContextInterface { - #data = new ObjectState(undefined); + #data = new UmbObjectState(undefined); data = this.#data.asObservable(); // TODO: this is a temp solution to bubble validation errors to the UI - #validationErrors = new ObjectState(undefined); + #validationErrors = new UmbObjectState(undefined); validationErrors = this.#validationErrors.asObservable(); constructor(host: UmbControllerHostElement) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts index 6bec1b10e9..95bf69be44 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts @@ -1,10 +1,10 @@ import { UmbLogViewerRepository } from '../repository/log-viewer.repository'; import { - BasicState, - ArrayState, + UmbBasicState, + UmbArrayState, createObservablePart, DeepState, - ObjectState, + UmbObjectState, StringState, } from '@umbraco-cms/backoffice/observable-api'; import { @@ -58,7 +58,7 @@ export class UmbLogViewerWorkspaceContext { endDate: this.today, }; - #savedSearches = new ObjectState(undefined); + #savedSearches = new UmbObjectState(undefined); savedSearches = createObservablePart(this.#savedSearches, (data) => data?.items); #logCount = new DeepState(null); @@ -70,7 +70,7 @@ export class UmbLogViewerWorkspaceContext { #loggers = new DeepState(null); loggers = createObservablePart(this.#loggers, (data) => data?.items); - #canShowLogs = new BasicState(null); + #canShowLogs = new UmbBasicState(null); canShowLogs = createObservablePart(this.#canShowLogs, (data) => data); #filterExpression = new StringState(''); @@ -79,17 +79,17 @@ export class UmbLogViewerWorkspaceContext { #messageTemplates = new DeepState(null); messageTemplates = createObservablePart(this.#messageTemplates, (data) => data); - #logLevelsFilter = new ArrayState([]); + #logLevelsFilter = new UmbArrayState([]); logLevelsFilter = createObservablePart(this.#logLevelsFilter, (data) => data); #logs = new DeepState(null); logs = createObservablePart(this.#logs, (data) => data?.items); logsTotal = createObservablePart(this.#logs, (data) => data?.total); - #polling = new ObjectState({ enabled: false, interval: 2000 }); + #polling = new UmbObjectState({ enabled: false, interval: 2000 }); polling = createObservablePart(this.#polling, (data) => data); - #sortingDirection = new BasicState(DirectionModel.ASCENDING); + #sortingDirection = new UmbBasicState(DirectionModel.ASCENDING); sortingDirection = createObservablePart(this.#sortingDirection, (data) => data); #intervalID: number | null = null; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.store.ts index f8ac1dd072..71dac38ee3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/repository/relation-type.store.ts @@ -1,6 +1,6 @@ import type { RelationTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api'; import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; @@ -13,7 +13,7 @@ export const UMB_RELATION_TYPE_STORE_CONTEXT_TOKEN = new UmbContextToken([], (x) => x.id); + #data = new UmbArrayState([], (x) => x.id); /** * Creates an instance of UmbRelationTypeStore. diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts index 81abf8f66f..3c87efd4c2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/relation-types/workspace/relation-type-workspace.context.ts @@ -3,14 +3,14 @@ import { UmbRelationTypeRepository } from '../repository/relation-type.repositor import { UmbEntityWorkspaceContextInterface } from '@umbraco-cms/backoffice/workspace'; import type { RelationTypeBaseModel, RelationTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; -import { ObjectState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbObjectState } from '@umbraco-cms/backoffice/observable-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; export class UmbRelationTypeWorkspaceContext extends UmbWorkspaceContext implements UmbEntityWorkspaceContextInterface { - #data = new ObjectState(undefined); + #data = new UmbObjectState(undefined); data = this.#data.asObservable(); name = this.#data.getObservablePart((data) => data?.name); id = this.#data.getObservablePart((data) => data?.id); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts index 9668a51d68..3d417cdf4a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts @@ -2,7 +2,7 @@ import { Observable } from 'rxjs'; import type { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbContextToken, UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; -import { ArrayState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; import { umbExtensionsRegistry, createExtensionClass } from '@umbraco-cms/backoffice/extensions-api'; import { UmbTreeRepository } from '@umbraco-cms/backoffice/repository'; @@ -17,10 +17,10 @@ export class UmbCollectionContext; - #data = new ArrayState(>[]); + #data = new UmbArrayState(>[]); public readonly data = this.#data.asObservable(); - #selection = new ArrayState(>[]); + #selection = new UmbArrayState(>[]); public readonly selection = this.#selection.asObservable(); /* diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.context.ts index c3a4264b2a..799d6f015b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.context.ts @@ -1,10 +1,10 @@ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; -import { StringState, BooleanState } from '@umbraco-cms/backoffice/observable-api'; +import { StringState, UmbBooleanState } from '@umbraco-cms/backoffice/observable-api'; export class UmbSectionSidebarContext { #host: UmbControllerHostElement; - #contextMenuIsOpen = new BooleanState(false); + #contextMenuIsOpen = new UmbBooleanState(false); contextMenuIsOpen = this.#contextMenuIsOpen.asObservable(); #entityType = new StringState(undefined); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts index 2f90f58eca..41622825a7 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts @@ -1,6 +1,6 @@ import type { ManifestSection } from '@umbraco-cms/backoffice/extensions-registry'; import type { Entity } from '@umbraco-cms/backoffice/models'; -import { ObjectState, StringState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbObjectState, StringState } from '@umbraco-cms/backoffice/observable-api'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; export type ActiveTreeItemType = Entity | undefined; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts index 0465630182..9f85452b99 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts @@ -7,7 +7,7 @@ import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../../section/sect import { UmbTreeContextBase } from '../tree.context'; import { UmbTreeItemContext } from '../tree-item.context.interface'; import { ManifestEntityAction } from '@umbraco-cms/backoffice/extensions-registry'; -import { BooleanState, DeepState, StringState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; +import { UmbBooleanState, DeepState, StringState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController, @@ -30,22 +30,22 @@ export class UmbTreeItemContextBase(undefined); treeItem = this.#treeItem.asObservable(); - #hasChildren = new BooleanState(false); + #hasChildren = new UmbBooleanState(false); hasChildren = this.#hasChildren.asObservable(); - #isLoading = new BooleanState(false); + #isLoading = new UmbBooleanState(false); isLoading = this.#isLoading.asObservable(); - #isSelectable = new BooleanState(false); + #isSelectable = new UmbBooleanState(false); isSelectable = this.#isSelectable.asObservable(); - #isSelected = new BooleanState(false); + #isSelected = new UmbBooleanState(false); isSelected = this.#isSelected.asObservable(); - #isActive = new BooleanState(false); + #isActive = new UmbBooleanState(false); isActive = this.#isActive.asObservable(); - #hasActions = new BooleanState(false); + #hasActions = new UmbBooleanState(false); hasActions = this.#hasActions.asObservable(); #path = new StringState(''); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts index e069c2a5b5..9cbb1616de 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts @@ -3,7 +3,12 @@ import { UmbWorkspaceVariableEntityContextInterface } from '../workspace/workspa import { UMB_WORKSPACE_VARIANT_CONTEXT_TOKEN } from '../workspace/workspace-variant/workspace-variant.context'; import type { DataTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; -import { ClassState, ObjectState, StringState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; +import { + UmbClassState, + UmbObjectState, + StringState, + UmbObserverController, +} from '@umbraco-cms/backoffice/observable-api'; import { UmbContextConsumerController, UmbContextProviderController, @@ -25,7 +30,7 @@ export class UmbWorkspacePropertyContext { private _providerController: UmbContextProviderController; - private _data = new ObjectState>({}); + private _data = new UmbObjectState>({}); public readonly alias = this._data.getObservablePart((data) => data.alias); public readonly label = this._data.getObservablePart((data) => data.label); @@ -35,7 +40,7 @@ export class UmbWorkspacePropertyContext { #workspaceVariantId?: UmbVariantId; - #variantId = new ClassState(undefined); + #variantId = new UmbClassState(undefined); public readonly variantId = this.#variantId.asObservable(); private _variantDifference = new StringState(undefined); @@ -88,7 +93,7 @@ export class UmbWorkspacePropertyContext { this._data.update({ description }); } public setValue(value: WorkspacePropertyData['value']) { - // Note: Do not try to compare new / old value, as it can of any type. We trust the ObjectState in doing such. + // Note: Do not try to compare new / old value, as it can of any type. We trust the UmbObjectState in doing such. this._data.update({ value }); } public changeValue(value: WorkspacePropertyData['value']) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts index 9704ce80c2..9eb0f5400c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/entity-manager-controller.ts @@ -6,7 +6,7 @@ import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN, } from '@umbraco-cms/backoffice/notification'; -import { ObjectState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; +import { UmbObjectState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; import type { EntityTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbEntityDetailStore } from '@umbraco-cms/backoffice/store'; @@ -18,7 +18,7 @@ export class UmbEntityWorkspaceManager< > { private _host; - state = new ObjectState(undefined); + state = new UmbObjectState(undefined); protected _storeSubscription?: UmbObserverController; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-container-structure-helper.class.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-container-structure-helper.class.ts index 25b756dfbf..ffaf4f118e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-container-structure-helper.class.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-container-structure-helper.class.ts @@ -3,7 +3,7 @@ import { PropertyContainerTypes } from './workspace-structure-manager.class'; import { PropertyTypeContainerResponseModelBaseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController, UMB_ENTITY_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/context-api'; -import { ArrayState, BooleanState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState, UmbBooleanState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; export class UmbWorkspaceContainerStructureHelper { #host: UmbControllerHostElement; @@ -20,10 +20,10 @@ export class UmbWorkspaceContainerStructureHelper { private _ownerContainers: PropertyTypeContainerResponseModelBaseModel[] = []; // State containing the merged containers (only one pr. name): - #containers = new ArrayState([], (x) => x.id); + #containers = new UmbArrayState([], (x) => x.id); readonly containers = this.#containers.asObservable(); - #hasProperties = new BooleanState(false); + #hasProperties = new UmbBooleanState(false); readonly hasProperties = this.#hasProperties.asObservable(); constructor(host: UmbControllerHostElement) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-context.ts index 796b258bd3..05d6a77a39 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-context.ts @@ -1,7 +1,7 @@ import { UmbEntityWorkspaceContextInterface } from '@umbraco-cms/backoffice/workspace'; import { UmbContextProviderController, UMB_ENTITY_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/context-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; -import { BooleanState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbBooleanState } from '@umbraco-cms/backoffice/observable-api'; import type { BaseEntity } from '@umbraco-cms/backoffice/models'; /* @@ -15,7 +15,7 @@ export abstract class UmbWorkspaceContext public host: UmbControllerHostElement; public repository: T; - #isNew = new BooleanState(undefined); + #isNew = new UmbBooleanState(undefined); isNew = this.#isNew.asObservable(); constructor(host: UmbControllerHostElement, repository: T) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts index 6941cd3daa..00bd8fb9db 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-property-structure-helper.class.ts @@ -3,7 +3,7 @@ import { PropertyContainerTypes } from './workspace-structure-manager.class'; import { DocumentTypePropertyTypeResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController, UMB_ENTITY_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/context-api'; -import { ArrayState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; export class UmbWorkspacePropertyStructureHelper { #host: UmbControllerHostElement; @@ -14,7 +14,7 @@ export class UmbWorkspacePropertyStructureHelper { private _isRoot?: boolean; private _containerName?: string; - #propertyStructure = new ArrayState([], (x) => x.id); + #propertyStructure = new UmbArrayState([], (x) => x.id); readonly propertyStructure = this.#propertyStructure.asObservable(); constructor(host: UmbControllerHostElement) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-split-view-manager.class.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-split-view-manager.class.ts index 3c238c96b0..b300be5ebf 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-split-view-manager.class.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-split-view-manager.class.ts @@ -1,6 +1,6 @@ import { UmbVariantId } from '../../../variants/variant-id.class'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; -import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api'; export type ActiveVariant = { index: number; @@ -16,7 +16,7 @@ export type ActiveVariant = { export class UmbWorkspaceSplitViewManager { #host: UmbControllerHostElement; - #activeVariantsInfo = new ArrayState([], (x) => x.index); + #activeVariantsInfo = new UmbArrayState([], (x) => x.index); public readonly activeVariantsInfo = this.#activeVariantsInfo.asObservable(); constructor(host: UmbControllerHostElement) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts index 8a7b24dc23..a5b15b4b1d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-context/workspace-structure-manager.class.ts @@ -9,7 +9,7 @@ import { } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostElement, UmbControllerInterface } from '@umbraco-cms/backoffice/controller'; import { - ArrayState, + UmbArrayState, UmbObserverController, MappingFunction, partialUpdateFrozenArray, @@ -29,13 +29,13 @@ export class UmbWorkspacePropertyStructureManager(); - #documentTypes = new ArrayState([], (x) => x.id); + #documentTypes = new UmbArrayState([], (x) => x.id); readonly documentTypes = this.#documentTypes.asObservable(); private readonly _documentTypeContainers = this.#documentTypes.getObservablePart((x) => x.flatMap((x) => x.containers ?? []) ); - #containers = new ArrayState([], (x) => x.id); + #containers = new UmbArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement, typeRepository: R) { this.#host = host; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-variant/workspace-variant.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-variant/workspace-variant.context.ts index 0f621391b5..2393a6c6e3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-variant/workspace-variant.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-variant/workspace-variant.context.ts @@ -9,7 +9,12 @@ import { UMB_ENTITY_WORKSPACE_CONTEXT, } from '@umbraco-cms/backoffice/context-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; -import { ClassState, NumberState, ObjectState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; +import { + UmbClassState, + NumberState, + UmbObjectState, + UmbObserverController, +} from '@umbraco-cms/backoffice/observable-api'; import { DocumentVariantResponseModel } from '@umbraco-cms/backoffice/backend-api'; //type EntityType = DocumentModel; @@ -25,14 +30,14 @@ export class UmbWorkspaceVariantContext { #index = new NumberState(undefined); index = this.#index.asObservable(); - #currentVariant = new ObjectState(undefined); + #currentVariant = new UmbObjectState(undefined); currentVariant = this.#currentVariant.asObservable(); name = this.#currentVariant.getObservablePart((x) => x?.name); culture = this.#currentVariant.getObservablePart((x) => x?.culture); segment = this.#currentVariant.getObservablePart((x) => x?.segment); - #variantId = new ClassState(undefined); + #variantId = new UmbClassState(undefined); variantId = this.#variantId.asObservable(); private _currentVariantObserver?: UmbObserverController; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts index a973a00a4b..e92b3f643f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/stylesheets/workspace/stylesheet-workspace.context.ts @@ -2,10 +2,10 @@ import { UmbWorkspaceContext } from '../../../shared/components/workspace/worksp import { UmbStylesheetRepository } from '../repository/stylesheet.repository'; import { StylesheetDetails } from '..'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; -import { ObjectState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbObjectState } from '@umbraco-cms/backoffice/observable-api'; export class UmbStylesheetWorkspaceContext extends UmbWorkspaceContext { - #data = new ObjectState(undefined); + #data = new UmbObjectState(undefined); data = this.#data.asObservable(); constructor(host: UmbControllerHostElement) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.store.ts index edebf64d61..4ef41040e2 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/repository/template.store.ts @@ -1,5 +1,5 @@ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api'; import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; import type { TemplateResponseModel } from '@umbraco-cms/backoffice/backend-api'; import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; @@ -11,7 +11,7 @@ import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controlle * @description - Data Store for Templates */ export class UmbTemplateStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.id); + #data = new UmbArrayState([], (x) => x.id); /** * Creates an instance of UmbTemplateStore. diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.store.ts index c4b62e7c82..8090202a0d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/repository/dictionary.store.ts @@ -1,7 +1,7 @@ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { UmbStoreBase } from '@umbraco-cms/backoffice/store'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; -import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api'; import { DictionaryItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; /** @@ -11,7 +11,7 @@ import { DictionaryItemResponseModel } from '@umbraco-cms/backoffice/backend-api * @description - Data Store for Dictionary */ export class UmbDictionaryStore extends UmbStoreBase { - #data = new ArrayState([], (x) => x.id); + #data = new UmbArrayState([], (x) => x.id); constructor(host: UmbControllerHostElement) { super(host, UMB_DICTIONARY_STORE_CONTEXT_TOKEN.toString()); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.context.ts index 2d2eb3039d..3a1115d880 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/translation/dictionary/workspace/dictionary-workspace.context.ts @@ -2,14 +2,14 @@ import { UmbDictionaryRepository } from '../repository/dictionary.repository'; import { UmbWorkspaceContext } from '../../../../backoffice/shared/components/workspace/workspace-context/workspace-context'; import { UmbEntityWorkspaceContextInterface } from '@umbraco-cms/backoffice/workspace'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; -import { ObjectState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbObjectState } from '@umbraco-cms/backoffice/observable-api'; import { DictionaryItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; export class UmbDictionaryWorkspaceContext extends UmbWorkspaceContext implements UmbEntityWorkspaceContextInterface { - #data = new ObjectState(undefined); + #data = new UmbObjectState(undefined); data = this.#data.asObservable(); name = this.#data.getObservablePart((data) => data?.name); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user.store.ts index 70556528f1..cf4823147e 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user.store.ts @@ -2,13 +2,13 @@ import { umbUsersData } from '../../../core/mocks/data/users.data'; import { umbracoPath } from '@umbraco-cms/backoffice/utils'; import type { UserDetails } from '@umbraco-cms/backoffice/models'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { ObjectState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbObjectState } from '@umbraco-cms/backoffice/observable-api'; export const UMB_CURRENT_USER_STORE_CONTEXT_TOKEN = new UmbContextToken('UmbCurrentUserStore'); export class UmbCurrentUserStore { //TODO: Temp solution to get a current user. Replace when we have a real user service - private _currentUser = new ObjectState(umbUsersData.getAll()[0]); + private _currentUser = new UmbObjectState(umbUsersData.getAll()[0]); public readonly currentUser = this._currentUser.asObservable(); /** diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/user-group.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/user-group.store.ts index 64197bb05b..87961ea266 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/user-group.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/user-group.store.ts @@ -1,7 +1,7 @@ import type { UserGroupDetails } from '@umbraco-cms/backoffice/models'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; -import { ArrayState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState } from '@umbraco-cms/backoffice/observable-api'; import { UmbEntityDetailStore, UmbStoreBase } from '@umbraco-cms/backoffice/store'; // TODO: get rid of this type addition & { ... }: @@ -16,7 +16,7 @@ export const UMB_USER_GROUP_STORE_CONTEXT_TOKEN = new UmbContextToken { - #groups = new ArrayState([], (x) => x.id); + #groups = new UmbArrayState([], (x) => x.id); public groups = this.#groups.asObservable(); constructor(host: UmbControllerHostElement) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts index a52581484d..bdf016f8eb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts @@ -1,5 +1,5 @@ import type { UserDetails } from '@umbraco-cms/backoffice/models'; -import { ArrayState, NumberState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState, NumberState } from '@umbraco-cms/backoffice/observable-api'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { UmbEntityDetailStore, UmbStoreBase } from '@umbraco-cms/backoffice/store'; import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; @@ -15,7 +15,7 @@ export const UMB_USER_STORE_CONTEXT_TOKEN = new UmbContextToken('U * @description - Data Store for Users */ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore { - #users = new ArrayState([], (x) => x.id); + #users = new UmbArrayState([], (x) => x.id); public users = this.#users.asObservable(); #totalUsers = new NumberState(0); diff --git a/src/Umbraco.Web.UI.Client/src/installer/installer.context.ts b/src/Umbraco.Web.UI.Client/src/installer/installer.context.ts index 9e6b26b8cf..3c19c9f491 100644 --- a/src/Umbraco.Web.UI.Client/src/installer/installer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/installer/installer.context.ts @@ -8,7 +8,7 @@ import { } from '@umbraco-cms/backoffice/backend-api'; import { tryExecute } from '@umbraco-cms/backoffice/resources'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { ObjectState, NumberState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbObjectState, NumberState } from '@umbraco-cms/backoffice/observable-api'; /** * Context API for the installer @@ -16,7 +16,7 @@ import { ObjectState, NumberState } from '@umbraco-cms/backoffice/observable-api * @class UmbInstallerContext */ export class UmbInstallerContext { - private _data = new ObjectState({ + private _data = new UmbObjectState({ user: { name: '', email: '', password: '', subscribeToNewsletter: false }, database: { id: '', providerName: '' }, telemetryLevel: TelemetryLevelModel.BASIC, @@ -26,10 +26,10 @@ export class UmbInstallerContext { private _currentStep = new NumberState(1); public readonly currentStep = this._currentStep.asObservable(); - private _settings = new ObjectState(undefined); + private _settings = new UmbObjectState(undefined); public readonly settings = this._settings.asObservable(); - private _installStatus = new ObjectState(null); + private _installStatus = new UmbObjectState(null); public readonly installStatus = this._installStatus.asObservable(); constructor() { diff --git a/src/Umbraco.Web.UI.Client/src/stories/store.mdx b/src/Umbraco.Web.UI.Client/src/stories/store.mdx index 1140ee8e40..9622967a0c 100644 --- a/src/Umbraco.Web.UI.Client/src/stories/store.mdx +++ b/src/Umbraco.Web.UI.Client/src/stories/store.mdx @@ -11,7 +11,7 @@ Generally a Store will be holding one or more RxJS Subjects, each Subject is mad ```typescript class MyProductStore { - #products = new ArrayState(>[], (product) => product.id); + #products = new UmbArrayState(>[], (product) => product.id); public readonly products = this.#products.asObservable(); @@ -118,7 +118,7 @@ This example give some inspiration to how fine grained this can become: ```typescript class MyProductStore { - #products = new ArrayState(>[]); + #products = new UmbArrayState(>[]); public readonly products = this.#products.asObservable(); public readonly amountOfProducts = this.#products.getObservablePart((products) => products.length); @@ -138,7 +138,7 @@ In the examples of this guide each product has a id, and we have clarified this ```typescript class MyProductStore { - #products = new ArrayState(>[], (product) => product.id); + #products = new UmbArrayState(>[], (product) => product.id); ... } ``` From 14247b04a5db1b84ae6f0ca1f98aa2496d0ac90b Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Sun, 16 Apr 2023 20:59:15 +0200 Subject: [PATCH 48/52] add umb prefix --- .../append-to-frozen-array.function.ts | 2 +- .../libs/observable-api/array-state.ts | 6 ++-- .../libs/observable-api/deep-state.test.ts | 31 +++++++------------ .../libs/observable-api/deep-state.ts | 4 +-- .../libs/observable-api/number-state.ts | 4 +-- .../libs/observable-api/object-state.ts | 6 ++-- .../partial-update-frozen-array.function.ts | 2 +- .../libs/observable-api/string-state.ts | 4 +-- .../repository/document-type.repository.ts | 4 +-- .../sources/document-type.tree.server.data.ts | 16 +++++----- .../repository/document.repository.ts | 4 +-- .../sources/document.tree.server.data.ts | 16 +++++----- .../logviewer/workspace/logviewer.context.ts | 16 +++++----- .../shared/collection/collection.context.ts | 2 +- .../backoffice-frame/backoffice.context.ts | 4 +-- .../code-editor/code-editor.stories.ts | 4 +-- .../section-sidebar.context.ts | 8 ++--- .../components/section/section.context.ts | 8 ++--- .../tree-context-menu-page.service.ts | 4 +-- .../tree-item-base/tree-item-base.context.ts | 11 +++++-- .../shared/components/tree/tree.context.ts | 6 ++-- .../workspace-property.context.ts | 4 +-- .../workspace-variant.context.ts | 4 +-- .../property-action-menu.context.ts | 4 +-- .../workspace/template-workspace.context.ts | 4 +-- .../src/backoffice/themes/theme.context.ts | 4 +-- .../current-user-history.store.ts | 4 +-- .../views/users/section-view-users.element.ts | 8 ++--- .../users/users/repository/user.store.ts | 4 +-- .../src/installer/installer.context.ts | 4 +-- 30 files changed, 100 insertions(+), 102 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/append-to-frozen-array.function.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/append-to-frozen-array.function.ts index 97ff56848c..23510e754c 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/append-to-frozen-array.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/append-to-frozen-array.function.ts @@ -5,7 +5,7 @@ * @param {(mappable: T) => R} mappingFunction - Method to return the part for this Observable to return. * @param {(previousResult: R, currentResult: R) => boolean} [memoizationFunction] - Method to Compare if the data has changed. Should return true when data is different. * @description - Creates a RxJS Observable from RxJS Subject. - * @example Example append new entry for a ArrayState or a part of DeepState/ObjectState it which is an array. Where the key is unique and the item will be updated if matched with existing. + * @example Example append new entry for a ArrayState or a part of UmbDeepState/UmbObjectState it which is an array. Where the key is unique and the item will be updated if matched with existing. * const entry = {id: 'myKey', value: 'myValue'}; * const newDataSet = appendToFrozenArray(mySubject.getValue(), entry, x => x.id === id); * mySubject.next(newDataSet); diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.ts index df29f02b1c..a4f67b2708 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/array-state.ts @@ -1,17 +1,17 @@ -import { DeepState } from './deep-state'; +import { UmbDeepState } from './deep-state'; import { partialUpdateFrozenArray } from './partial-update-frozen-array.function'; import { pushToUniqueArray } from './push-to-unique-array.function'; /** * @export * @class UmbArrayState - * @extends {DeepState} + * @extends {UmbDeepState} * @description - A RxJS BehaviorSubject which deepFreezes the object-data to ensure its not manipulated from any implementations. * Additionally the Subject ensures the data is unique, not updating any Observes unless there is an actual change of the content. * * The ArrayState provides methods to append data when the data is an Object. */ -export class UmbArrayState extends DeepState { +export class UmbArrayState extends UmbDeepState { #getUnique?: (entry: T) => unknown; #sortMethod?: (a: T, b: T) => number; diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/deep-state.test.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/deep-state.test.ts index f605564749..f1971dfa40 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/deep-state.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/deep-state.test.ts @@ -1,30 +1,27 @@ import { expect } from '@open-wc/testing'; -import { DeepState } from './deep-state'; +import { UmbDeepState } from './deep-state'; -describe('DeepState', () => { +describe('UmbDeepState', () => { + type ObjectType = { key: string; another: string }; - type ObjectType = {key: string, another: string}; - - let subject: DeepState; + let subject: UmbDeepState; let initialData: ObjectType; beforeEach(() => { - initialData = {key: 'some', another: 'myValue'}; - subject = new DeepState(initialData); + initialData = { key: 'some', another: 'myValue' }; + subject = new UmbDeepState(initialData); }); - it('getValue gives the initial data', () => { expect(subject.value.another).to.be.equal(initialData.another); }); it('update via next', () => { - subject.next({key: 'some', another: 'myNewValue'}); + subject.next({ key: 'some', another: 'myNewValue' }); expect(subject.value.another).to.be.equal('myNewValue'); }); it('replays latests, no matter the amount of subscriptions.', (done) => { - const observer = subject.asObservable(); observer.subscribe((value) => { expect(value).to.be.equal(initialData); @@ -33,28 +30,24 @@ describe('DeepState', () => { expect(value).to.be.equal(initialData); done(); }); - }); it('use gObservablePart, updates on its specific change.', (done) => { - let amountOfCallbacks = 0; - const subObserver = subject.getObservablePart(data => data.another); + const subObserver = subject.getObservablePart((data) => data.another); subObserver.subscribe((value) => { amountOfCallbacks++; - if(amountOfCallbacks === 1) { + if (amountOfCallbacks === 1) { expect(value).to.be.equal('myValue'); } - if(amountOfCallbacks === 2) { + if (amountOfCallbacks === 2) { expect(value).to.be.equal('myNewValue'); done(); } }); - subject.next({key: 'change_this_first_should_not_trigger_update', another: 'myValue'}); - subject.next({key: 'some', another: 'myNewValue'}); - + subject.next({ key: 'change_this_first_should_not_trigger_update', another: 'myValue' }); + subject.next({ key: 'some', another: 'myNewValue' }); }); - }); diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/deep-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/deep-state.ts index 201ab479c8..c67daa927c 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/deep-state.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/deep-state.ts @@ -7,12 +7,12 @@ import { naiveObjectComparison } from './naive-object-comparison'; /** * @export - * @class DeepState + * @class UmbDeepState * @extends {BehaviorSubject} * @description - A RxJS BehaviorSubject which deepFreezes the data to ensure its not manipulated from any implementations. * Additionally the Subject ensures the data is unique, not updating any Observes unless there is an actual change of the content. */ -export class DeepState extends BehaviorSubject { +export class UmbDeepState extends BehaviorSubject { constructor(initialData: T) { super(deepFreeze(initialData)); } diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/number-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/number-state.ts index 82387e9580..5556d8956c 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/number-state.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/number-state.ts @@ -2,11 +2,11 @@ import { UmbBasicState } from './basic-state'; /** * @export - * @class NumberState + * @class UmbNumberState * @extends {BehaviorSubject} * @description - A RxJS BehaviorSubject this Subject ensures the data is unique, not updating any Observes unless there is an actual change of the value. */ -export class NumberState extends UmbBasicState { +export class UmbNumberState extends UmbBasicState { constructor(initialData: T | number) { super(initialData); } diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/object-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/object-state.ts index fdb85a43b9..6c4b32a115 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/object-state.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/object-state.ts @@ -1,15 +1,15 @@ -import { DeepState } from './deep-state'; +import { UmbDeepState } from './deep-state'; /** * @export * @class UmbObjectState - * @extends {DeepState} + * @extends {UmbDeepState} * @description - A RxJS BehaviorSubject which deepFreezes the object-data to ensure its not manipulated from any implementations. * Additionally the Subject ensures the data is unique, not updating any Observes unless there is an actual change of the content. * * The UmbObjectState provides methods to append data when the data is an Object. */ -export class UmbObjectState extends DeepState { +export class UmbObjectState extends UmbDeepState { /** * @method update * @param {Partial} partialData - A object containing some of the data to update in this Subject. diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/partial-update-frozen-array.function.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/partial-update-frozen-array.function.ts index 9064fb0384..b19c322594 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/partial-update-frozen-array.function.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/partial-update-frozen-array.function.ts @@ -5,7 +5,7 @@ * @param {(mappable: T) => R} mappingFunction - Method to return the part for this Observable to return. * @param {(previousResult: R, currentResult: R) => boolean} [memoizationFunction] - Method to Compare if the data has changed. Should return true when data is different. * @description - Creates a RxJS Observable from RxJS Subject. - * @example Example append new entry for a ArrayState or a part of DeepState/UmbObjectState it which is an array. Where the key is unique and the item will be updated if matched with existing. + * @example Example append new entry for a ArrayState or a part of UmbDeepState/UmbObjectState it which is an array. Where the key is unique and the item will be updated if matched with existing. * const partialEntry = {value: 'myValue'}; * const newDataSet = partialUpdateFrozenArray(mySubject.getValue(), partialEntry, x => x.key === 'myKey'); * mySubject.next(newDataSet); diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/string-state.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/string-state.ts index d78d91127e..632c28e1b1 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/string-state.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/string-state.ts @@ -2,11 +2,11 @@ import { UmbBasicState } from './basic-state'; /** * @export - * @class StringState + * @class UmbStringState * @extends {UmbBasicState} * @description - A RxJS BehaviorSubject this Subject ensures the data is unique, not updating any Observes unless there is an actual change of the value. */ -export class StringState extends UmbBasicState { +export class UmbStringState extends UmbBasicState { constructor(initialData: T | string) { super(initialData); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts index 78c9ac203c..3ab4e56fd9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/document-type.repository.ts @@ -1,4 +1,4 @@ -import { DocumentTypeTreeServerDataSource } from './sources/document-type.tree.server.data'; +import { UmbDocumentTypeTreeServerDataSource } from './sources/document-type.tree.server.data'; import { UmbDocumentTypeServerDataSource } from './sources/document-type.server.data'; import { UmbDocumentTypeTreeStore, UMB_DOCUMENT_TYPE_TREE_STORE_CONTEXT_TOKEN } from './document-type.tree.store'; import { UmbDocumentTypeStore, UMB_DOCUMENT_TYPE_STORE_CONTEXT_TOKEN } from './document-type.store'; @@ -27,7 +27,7 @@ export class UmbDocumentTypeRepository implements UmbTreeRepository, U this.#host = host; // TODO: figure out how spin up get the correct data source - this.#treeSource = new DocumentTypeTreeServerDataSource(this.#host); + this.#treeSource = new UmbDocumentTypeTreeServerDataSource(this.#host); this.#detailDataSource = new UmbDocumentTypeServerDataSource(this.#host); this.#init = Promise.all([ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts index fd3cee9ccb..33869d807f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/document-types/repository/sources/document-type.tree.server.data.ts @@ -6,10 +6,10 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the Document tree that fetches data from the server * @export - * @class DocumentTreeServerDataSource - * @implements {DocumentTreeDataSource} + * @class UmbDocumentTypeTreeServerDataSource + * @implements {UmbTreeDataSource} */ -export class DocumentTypeTreeServerDataSource implements UmbTreeDataSource { +export class UmbDocumentTypeTreeServerDataSource implements UmbTreeDataSource { #host: UmbControllerHostElement; // TODO: how do we handle trashed items? @@ -42,9 +42,9 @@ export class DocumentTypeTreeServerDataSource implements UmbTreeDataSource { } /** - * Creates an instance of DocumentTreeServerDataSource. + * Creates an instance of UmbDocumentTypeTreeServerDataSource. * @param {UmbControllerHostElement} host - * @memberof DocumentTreeServerDataSource + * @memberof UmbDocumentTypeTreeServerDataSource */ constructor(host: UmbControllerHostElement) { this.#host = host; @@ -53,7 +53,7 @@ export class DocumentTypeTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the root items for the tree from the server * @return {*} - * @memberof DocumentTreeServerDataSource + * @memberof UmbDocumentTypeTreeServerDataSource */ async getRootItems() { return tryExecuteAndNotify(this.#host, DocumentTypeResource.getTreeDocumentTypeRoot({})); @@ -63,7 +63,7 @@ export class DocumentTypeTreeServerDataSource implements UmbTreeDataSource { * Fetches the children of a given parent id from the server * @param {(string | null)} parentId * @return {*} - * @memberof DocumentTreeServerDataSource + * @memberof UmbDocumentTypeTreeServerDataSource */ async getChildrenOf(parentId: string | null) { if (!parentId) { @@ -83,7 +83,7 @@ export class DocumentTypeTreeServerDataSource implements UmbTreeDataSource { * Fetches the items for the given ids from the server * @param {Array} ids * @return {*} - * @memberof DocumentTreeServerDataSource + * @memberof UmbDocumentTypeTreeServerDataSource */ async getItems(ids: Array) { if (ids) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts index 91d485f05c..b6ad80faaa 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/document.repository.ts @@ -1,7 +1,7 @@ import { UmbDocumentServerDataSource } from './sources/document.server.data'; import { UmbDocumentStore, UMB_DOCUMENT_STORE_CONTEXT_TOKEN } from './document.store'; import { UmbDocumentTreeStore, UMB_DOCUMENT_TREE_STORE_CONTEXT_TOKEN } from './document.tree.store'; -import { DocumentTreeServerDataSource } from './sources/document.tree.server.data'; +import { UmbDocumentTreeServerDataSource } from './sources/document.tree.server.data'; import type { UmbTreeDataSource, UmbTreeRepository, UmbDetailRepository } from '@umbraco-cms/backoffice/repository'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; @@ -32,7 +32,7 @@ export class UmbDocumentRepository implements UmbTreeRepository, UmbDe this.#host = host; // TODO: figure out how spin up get the correct data source - this.#treeSource = new DocumentTreeServerDataSource(this.#host); + this.#treeSource = new UmbDocumentTreeServerDataSource(this.#host); this.#detailDataSource = new UmbDocumentServerDataSource(this.#host); this.#init = Promise.all([ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts index 076b707b0b..9d09c3bcc3 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/documents/documents/repository/sources/document.tree.server.data.ts @@ -6,10 +6,10 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the Document tree that fetches data from the server * @export - * @class DocumentTreeServerDataSource - * @implements {DocumentTreeDataSource} + * @class UmbDocumentTreeServerDataSource + * @implements {UmbTreeDataSource} */ -export class DocumentTreeServerDataSource implements UmbTreeDataSource { +export class UmbDocumentTreeServerDataSource implements UmbTreeDataSource { #host: UmbControllerHostElement; // TODO: how do we handle trashed items? @@ -42,9 +42,9 @@ export class DocumentTreeServerDataSource implements UmbTreeDataSource { } /** - * Creates an instance of DocumentTreeServerDataSource. + * Creates an instance of UmbDocumentTreeServerDataSource. * @param {UmbControllerHostElement} host - * @memberof DocumentTreeServerDataSource + * @memberof UmbDocumentTreeServerDataSource */ constructor(host: UmbControllerHostElement) { this.#host = host; @@ -53,7 +53,7 @@ export class DocumentTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the root items for the tree from the server * @return {*} - * @memberof DocumentTreeServerDataSource + * @memberof UmbDocumentTreeServerDataSource */ async getRootItems() { return tryExecuteAndNotify(this.#host, DocumentResource.getTreeDocumentRoot({})); @@ -63,7 +63,7 @@ export class DocumentTreeServerDataSource implements UmbTreeDataSource { * Fetches the children of a given parent id from the server * @param {(string | null)} parentId * @return {*} - * @memberof DocumentTreeServerDataSource + * @memberof UmbDocumentTreeServerDataSource */ async getChildrenOf(parentId: string | null) { if (!parentId) { @@ -83,7 +83,7 @@ export class DocumentTreeServerDataSource implements UmbTreeDataSource { * Fetches the items for the given ids from the server * @param {Array} ids * @return {*} - * @memberof DocumentTreeServerDataSource + * @memberof UmbDocumentTreeServerDataSource */ async getItems(ids: Array) { if (!ids) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts index 95bf69be44..73c793e4dd 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/settings/logviewer/workspace/logviewer.context.ts @@ -3,9 +3,9 @@ import { UmbBasicState, UmbArrayState, createObservablePart, - DeepState, + UmbDeepState, UmbObjectState, - StringState, + UmbStringState, } from '@umbraco-cms/backoffice/observable-api'; import { DirectionModel, @@ -61,28 +61,28 @@ export class UmbLogViewerWorkspaceContext { #savedSearches = new UmbObjectState(undefined); savedSearches = createObservablePart(this.#savedSearches, (data) => data?.items); - #logCount = new DeepState(null); + #logCount = new UmbDeepState(null); logCount = createObservablePart(this.#logCount, (data) => data); - #dateRange = new DeepState(this.defaultDateRange); + #dateRange = new UmbDeepState(this.defaultDateRange); dateRange = createObservablePart(this.#dateRange, (data) => data); - #loggers = new DeepState(null); + #loggers = new UmbDeepState(null); loggers = createObservablePart(this.#loggers, (data) => data?.items); #canShowLogs = new UmbBasicState(null); canShowLogs = createObservablePart(this.#canShowLogs, (data) => data); - #filterExpression = new StringState(''); + #filterExpression = new UmbStringState(''); filterExpression = createObservablePart(this.#filterExpression, (data) => data); - #messageTemplates = new DeepState(null); + #messageTemplates = new UmbDeepState(null); messageTemplates = createObservablePart(this.#messageTemplates, (data) => data); #logLevelsFilter = new UmbArrayState([]); logLevelsFilter = createObservablePart(this.#logLevelsFilter, (data) => data); - #logs = new DeepState(null); + #logs = new UmbDeepState(null); logs = createObservablePart(this.#logs, (data) => data?.items); logsTotal = createObservablePart(this.#logs, (data) => data?.total); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts index 3d417cdf4a..4f2512206c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/collection/collection.context.ts @@ -25,7 +25,7 @@ export class UmbCollectionContext = { "Smartypants, double quotes" and 'single quotes'`, typescript: `import { UmbTemplateRepository } from '../repository/template.repository'; import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; - import { createObservablePart, DeepState } from '@umbraco-cms/observable-api'; + import { createObservablePart, UmbDeepState } from '@umbraco-cms/observable-api'; import { TemplateModel } from '@umbraco-cms/backend-api'; import { UmbControllerHostElement } from '@umbraco-cms/controller'; export class UmbTemplateWorkspaceContext extends UmbWorkspaceContext { - #data = new DeepState(undefined); + #data = new UmbDeepState(undefined); data = this.#data.asObservable(); name = createObservablePart(this.#data, (data) => data?.name); content = createObservablePart(this.#data, (data) => data?.content); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.context.ts index 799d6f015b..8185a4f502 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section-sidebar/section-sidebar.context.ts @@ -1,19 +1,19 @@ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; -import { StringState, UmbBooleanState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbStringState, UmbBooleanState } from '@umbraco-cms/backoffice/observable-api'; export class UmbSectionSidebarContext { #host: UmbControllerHostElement; #contextMenuIsOpen = new UmbBooleanState(false); contextMenuIsOpen = this.#contextMenuIsOpen.asObservable(); - #entityType = new StringState(undefined); + #entityType = new UmbStringState(undefined); entityType = this.#entityType.asObservable(); - #unique = new StringState(undefined); + #unique = new UmbStringState(undefined); unique = this.#unique.asObservable(); - #headline = new StringState(undefined); + #headline = new UmbStringState(undefined); headline = this.#headline.asObservable(); constructor(host: UmbControllerHostElement) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts index 41622825a7..628062ceb0 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/section/section.context.ts @@ -1,14 +1,14 @@ import type { ManifestSection } from '@umbraco-cms/backoffice/extensions-registry'; import type { Entity } from '@umbraco-cms/backoffice/models'; -import { UmbObjectState, StringState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbObjectState, UmbStringState } from '@umbraco-cms/backoffice/observable-api'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; export type ActiveTreeItemType = Entity | undefined; export class UmbSectionContext { - #manifestAlias = new StringState(undefined); - #manifestPathname = new StringState(undefined); - #manifestLabel = new StringState(undefined); + #manifestAlias = new UmbStringState(undefined); + #manifestPathname = new UmbStringState(undefined); + #manifestLabel = new UmbStringState(undefined); public readonly alias = this.#manifestAlias.asObservable(); public readonly pathname = this.#manifestPathname.asObservable(); public readonly label = this.#manifestLabel.asObservable(); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/context-menu/tree-context-menu-page.service.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/context-menu/tree-context-menu-page.service.ts index d82eb782bf..584b77456a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/context-menu/tree-context-menu-page.service.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/context-menu/tree-context-menu-page.service.ts @@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, nothing, PropertyValueMap } from 'lit'; import { customElement, property, state } from 'lit/decorators.js'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { DeepState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbDeepState } from '@umbraco-cms/backoffice/observable-api'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; // TODO: Refactor this, its not a service and the data should be handled by a context api. @@ -13,7 +13,7 @@ export class UmbTreeContextMenuPageServiceElement extends UmbLitElement { @property({ type: Object }) public actionEntity: any = { key: '', name: '' }; - #entity = new DeepState({ key: '', name: '' } as any); + #entity = new UmbDeepState({ key: '', name: '' } as any); public readonly entity = this.#entity.asObservable(); @state() diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts index 9f85452b99..9c81962047 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/tree/tree-item-base/tree-item-base.context.ts @@ -7,7 +7,12 @@ import { UmbSectionContext, UMB_SECTION_CONTEXT_TOKEN } from '../../section/sect import { UmbTreeContextBase } from '../tree.context'; import { UmbTreeItemContext } from '../tree-item.context.interface'; import { ManifestEntityAction } from '@umbraco-cms/backoffice/extensions-registry'; -import { UmbBooleanState, DeepState, StringState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; +import { + UmbBooleanState, + UmbDeepState, + UmbStringState, + UmbObserverController, +} from '@umbraco-cms/backoffice/observable-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbContextConsumerController, @@ -27,7 +32,7 @@ export class UmbTreeItemContextBase(undefined); + #treeItem = new UmbDeepState(undefined); treeItem = this.#treeItem.asObservable(); #hasChildren = new UmbBooleanState(false); @@ -48,7 +53,7 @@ export class UmbTreeItemContextBase>[]); + #selection = new UmbDeepState(>[]); public readonly selection = this.#selection.asObservable(); repository?: UmbTreeRepository; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts index 9cbb1616de..5cad4cae04 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace-property/workspace-property.context.ts @@ -6,7 +6,7 @@ import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controlle import { UmbClassState, UmbObjectState, - StringState, + UmbStringState, UmbObserverController, } from '@umbraco-cms/backoffice/observable-api'; import { @@ -43,7 +43,7 @@ export class UmbWorkspacePropertyContext { #variantId = new UmbClassState(undefined); public readonly variantId = this.#variantId.asObservable(); - private _variantDifference = new StringState(undefined); + private _variantDifference = new UmbStringState(undefined); public readonly variantDifference = this._variantDifference.asObservable(); private _workspaceContext?: UmbWorkspaceVariableEntityContextInterface; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-variant/workspace-variant.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-variant/workspace-variant.context.ts index 2393a6c6e3..4364c6d3b8 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-variant/workspace-variant.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/workspace/workspace-variant/workspace-variant.context.ts @@ -11,7 +11,7 @@ import { import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbClassState, - NumberState, + UmbNumberState, UmbObjectState, UmbObserverController, } from '@umbraco-cms/backoffice/observable-api'; @@ -27,7 +27,7 @@ export class UmbWorkspaceVariantContext { return this.#workspaceContext; } - #index = new NumberState(undefined); + #index = new UmbNumberState(undefined); index = this.#index.asObservable(); #currentVariant = new UmbObjectState(undefined); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/shared/property-action-menu/property-action-menu.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/shared/property-action-menu/property-action-menu.context.ts index 3a8205847f..ef67ddc26c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/shared/property-action-menu/property-action-menu.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/property-actions/shared/property-action-menu/property-action-menu.context.ts @@ -1,9 +1,9 @@ import { UmbContextProviderController } from '@umbraco-cms/backoffice/context-api'; import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; -import { DeepState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbDeepState } from '@umbraco-cms/backoffice/observable-api'; export class UmbPropertyActionMenuContext { - #isOpen = new DeepState(false); + #isOpen = new UmbDeepState(false); public readonly isOpen = this.#isOpen.asObservable(); constructor(host: UmbControllerHostElement) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts index d4f7541846..89983e09f5 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/templating/templates/workspace/template-workspace.context.ts @@ -1,11 +1,11 @@ import { UmbTemplateRepository } from '../repository/template.repository'; import { UmbWorkspaceContext } from '../../../shared/components/workspace/workspace-context/workspace-context'; -import { createObservablePart, DeepState } from '@umbraco-cms/backoffice/observable-api'; +import { createObservablePart, UmbDeepState } from '@umbraco-cms/backoffice/observable-api'; import { TemplateResponseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; export class UmbTemplateWorkspaceContext extends UmbWorkspaceContext { - #data = new DeepState(undefined); + #data = new UmbDeepState(undefined); data = this.#data.asObservable(); name = createObservablePart(this.#data, (data) => data?.name); content = createObservablePart(this.#data, (data) => data?.content); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/themes/theme.context.ts b/src/Umbraco.Web.UI.Client/src/backoffice/themes/theme.context.ts index 959c8f19ef..1d3829bf8a 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/themes/theme.context.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/themes/theme.context.ts @@ -1,7 +1,7 @@ import { map } from 'rxjs'; import { manifests } from './manifests'; import { UmbContextProviderController, UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { StringState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; +import { UmbStringState, UmbObserverController } from '@umbraco-cms/backoffice/observable-api'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { ManifestTheme } from '@umbraco-cms/backoffice/extensions-registry'; @@ -11,7 +11,7 @@ const LOCAL_STORAGE_KEY = 'umb-theme-alias'; export class UmbThemeContext { private _host: UmbControllerHostElement; - #theme = new StringState('umb-light-theme'); + #theme = new UmbStringState('umb-light-theme'); public readonly theme = this.#theme.asObservable(); private themeSubscription?: UmbObserverController; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user-history.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user-history.store.ts index 2a5df8b61f..888278353b 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user-history.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/current-user/current-user-history.store.ts @@ -1,5 +1,5 @@ import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { DeepState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbDeepState } from '@umbraco-cms/backoffice/observable-api'; export type UmbModelType = 'dialog' | 'sidebar'; @@ -10,7 +10,7 @@ export type UmbCurrentUserHistoryItem = { }; export class UmbCurrentUserHistoryStore { - #history = new DeepState(>[]); + #history = new UmbDeepState(>[]); public readonly history = this.#history.asObservable(); public readonly latestHistory = this.#history.getObservablePart((historyItems) => historyItems.slice(-10)); diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts index 2cebe636ce..64f9e96e23 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-section/views/users/section-view-users.element.ts @@ -11,7 +11,7 @@ import './workspace-view-users-selection.element'; import type { UserDetails } from '@umbraco-cms/backoffice/models'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { DeepState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbDeepState } from '@umbraco-cms/backoffice/observable-api'; import type { ManifestWorkspace } from '@umbraco-cms/backoffice/extensions-registry'; @customElement('umb-section-view-users') @@ -37,13 +37,13 @@ export class UmbSectionViewUsersElement extends UmbLitElement { // TODO: This must be turned into context api: Maybe its a Collection View (SectionView Collection View)? private _userStore?: UmbUserStore; - #selection = new DeepState(>[]); + #selection = new UmbDeepState(>[]); public readonly selection = this.#selection.asObservable(); - #users = new DeepState(>[]); + #users = new UmbDeepState(>[]); public readonly users = this.#users.asObservable(); - #search = new DeepState(''); + #search = new UmbDeepState(''); public readonly search = this.#search.asObservable(); constructor() { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts index bdf016f8eb..c074c2f3cb 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/users/repository/user.store.ts @@ -1,5 +1,5 @@ import type { UserDetails } from '@umbraco-cms/backoffice/models'; -import { UmbArrayState, NumberState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState, UmbNumberState } from '@umbraco-cms/backoffice/observable-api'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { UmbEntityDetailStore, UmbStoreBase } from '@umbraco-cms/backoffice/store'; import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; @@ -18,7 +18,7 @@ export class UmbUserStore extends UmbStoreBase implements UmbEntityDetailStore([], (x) => x.id); public users = this.#users.asObservable(); - #totalUsers = new NumberState(0); + #totalUsers = new UmbNumberState(0); public readonly totalUsers = this.#totalUsers.asObservable(); constructor(host: UmbControllerHostElement) { diff --git a/src/Umbraco.Web.UI.Client/src/installer/installer.context.ts b/src/Umbraco.Web.UI.Client/src/installer/installer.context.ts index 3c19c9f491..30b4c7350a 100644 --- a/src/Umbraco.Web.UI.Client/src/installer/installer.context.ts +++ b/src/Umbraco.Web.UI.Client/src/installer/installer.context.ts @@ -8,7 +8,7 @@ import { } from '@umbraco-cms/backoffice/backend-api'; import { tryExecute } from '@umbraco-cms/backoffice/resources'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { UmbObjectState, NumberState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbObjectState, UmbNumberState } from '@umbraco-cms/backoffice/observable-api'; /** * Context API for the installer @@ -23,7 +23,7 @@ export class UmbInstallerContext { }); public readonly data = this._data.asObservable(); - private _currentStep = new NumberState(1); + private _currentStep = new UmbNumberState(1); public readonly currentStep = this._currentStep.asObservable(); private _settings = new UmbObjectState(undefined); From c81a57a1c5dde6f2479b709b6a3e216d8b80feb0 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Sun, 16 Apr 2023 21:06:04 +0200 Subject: [PATCH 49/52] add umb prefix --- .../repository/media-type.repository.ts | 4 ++-- .../sources/media-type.tree.server.data.ts | 12 ++++++------ .../media/media/repository/media.repository.ts | 4 ++-- .../repository/sources/media.tree.server.data.ts | 16 ++++++++-------- .../repository/member-group.repository.ts | 4 ++-- .../sources/member-group.tree.server.data.ts | 16 ++++++++-------- 6 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts index 898e1ab966..56e3769a84 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/media-type.repository.ts @@ -1,7 +1,7 @@ import { UmbMediaTypeTreeStore, UMB_MEDIA_TYPE_TREE_STORE_CONTEXT_TOKEN } from './media-type.tree.store'; import { UmbMediaTypeDetailServerDataSource } from './sources/media-type.detail.server.data'; import { UmbMediaTypeStore, UMB_MEDIA_TYPE_STORE_CONTEXT_TOKEN } from './media-type.detail.store'; -import { MediaTypeTreeServerDataSource } from './sources/media-type.tree.server.data'; +import { UmbMediaTypeTreeServerDataSource } from './sources/media-type.tree.server.data'; import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; @@ -26,7 +26,7 @@ export class UmbMediaTypeRepository implements UmbTreeRepository { this.#host = host; // TODO: figure out how spin up get the correct data source - this.#treeSource = new MediaTypeTreeServerDataSource(this.#host); + this.#treeSource = new UmbMediaTypeTreeServerDataSource(this.#host); this.#detailSource = new UmbMediaTypeDetailServerDataSource(this.#host); this.#init = Promise.all([ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts index 6d164599f4..12401f3fe9 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media-types/repository/sources/media-type.tree.server.data.ts @@ -6,10 +6,10 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the MediaType tree that fetches data from the server * @export - * @class MediaTypeTreeServerDataSource - * @implements {MediaTypeTreeDataSource} + * @class UmbMediaTypeTreeServerDataSource + * @implements {UmbTreeDataSource} */ -export class MediaTypeTreeServerDataSource implements UmbTreeDataSource { +export class UmbMediaTypeTreeServerDataSource implements UmbTreeDataSource { #host: UmbControllerHostElement; /** @@ -24,7 +24,7 @@ export class MediaTypeTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the root items for the tree from the server * @return {*} - * @memberof MediaTypeTreeServerDataSource + * @memberof UmbMediaTypeTreeServerDataSource */ async getRootItems() { return tryExecuteAndNotify(this.#host, MediaTypeResource.getTreeMediaTypeRoot({})); @@ -34,7 +34,7 @@ export class MediaTypeTreeServerDataSource implements UmbTreeDataSource { * Fetches the children of a given parent id from the server * @param {(string | null)} parentId * @return {*} - * @memberof MediaTypeTreeServerDataSource + * @memberof UmbMediaTypeTreeServerDataSource */ async getChildrenOf(parentId: string | null) { if (!parentId) { @@ -54,7 +54,7 @@ export class MediaTypeTreeServerDataSource implements UmbTreeDataSource { * Fetches the items for the given ids from the server * @param {Array} ids * @return {*} - * @memberof MediaTypeTreeServerDataSource + * @memberof UmbMediaTypeTreeServerDataSource */ async getItems(ids: Array) { if (!ids || ids.length === 0) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts index 28e2aed79d..77554e0894 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/media.repository.ts @@ -1,5 +1,5 @@ import type { MediaDetails } from '../'; -import { MediaTreeServerDataSource } from './sources/media.tree.server.data'; +import { UmbMediaTreeServerDataSource } from './sources/media.tree.server.data'; import { UmbMediaTreeStore, UMB_MEDIA_TREE_STORE_CONTEXT_TOKEN } from './media.tree.store'; import { UmbMediaStore, UMB_MEDIA_STORE_CONTEXT_TOKEN } from './media.store'; import { UmbMediaDetailServerDataSource } from './sources/media.detail.server.data'; @@ -36,7 +36,7 @@ export class UmbMediaRepository this.#host = host; // TODO: figure out how spin up get the correct data source - this.#treeSource = new MediaTreeServerDataSource(this.#host); + this.#treeSource = new UmbMediaTreeServerDataSource(this.#host); this.#detailDataSource = new UmbMediaDetailServerDataSource(this.#host); new UmbContextConsumerController(this.#host, UMB_MEDIA_TREE_STORE_CONTEXT_TOKEN, (instance) => { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.tree.server.data.ts index 096d2b2814..ee50c0ce1d 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/media/media/repository/sources/media.tree.server.data.ts @@ -6,10 +6,10 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the Media tree that fetches data from the server * @export - * @class MediaTreeServerDataSource - * @implements {MediaTreeDataSource} + * @class UmbMediaTreeServerDataSource + * @implements {UmbTreeDataSource} */ -export class MediaTreeServerDataSource implements UmbTreeDataSource { +export class UmbMediaTreeServerDataSource implements UmbTreeDataSource { #host: UmbControllerHostElement; // TODO: how do we handle trashed items? @@ -42,9 +42,9 @@ export class MediaTreeServerDataSource implements UmbTreeDataSource { } /** - * Creates an instance of MediaTreeServerDataSource. + * Creates an instance of UmbMediaTreeServerDataSource. * @param {UmbControllerHostElement} host - * @memberof MediaTreeServerDataSource + * @memberof UmbMediaTreeServerDataSource */ constructor(host: UmbControllerHostElement) { this.#host = host; @@ -53,7 +53,7 @@ export class MediaTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the root items for the tree from the server * @return {*} - * @memberof MediaTreeServerDataSource + * @memberof UmbMediaTreeServerDataSource */ async getRootItems() { return tryExecuteAndNotify(this.#host, MediaResource.getTreeMediaRoot({})); @@ -63,7 +63,7 @@ export class MediaTreeServerDataSource implements UmbTreeDataSource { * Fetches the children of a given parent id from the server * @param {(string | null)} parentId * @return {*} - * @memberof MediaTreeServerDataSource + * @memberof UmbMediaTreeServerDataSource */ async getChildrenOf(parentId: string | null) { if (!parentId) { @@ -83,7 +83,7 @@ export class MediaTreeServerDataSource implements UmbTreeDataSource { * Fetches the items for the given ids from the server * @param {Array} ids * @return {*} - * @memberof MediaTreeServerDataSource + * @memberof UmbMediaTreeServerDataSource */ async getItems(ids: Array) { if (!ids) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts index 572e6d7fd0..22f2dceff6 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/member-group.repository.ts @@ -1,7 +1,7 @@ import { UmbMemberGroupTreeStore, UMB_MEMBER_GROUP_TREE_STORE_CONTEXT_TOKEN } from './member-group.tree.store'; import { UmbMemberGroupDetailServerDataSource } from './sources/member-group.detail.server.data'; import { UmbMemberGroupStore, UMB_MEMBER_GROUP_STORE_CONTEXT_TOKEN } from './member-group.store'; -import { MemberGroupTreeServerDataSource } from './sources/member-group.tree.server.data'; +import { UmbMemberGroupTreeServerDataSource } from './sources/member-group.tree.server.data'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; @@ -26,7 +26,7 @@ export class UmbMemberGroupRepository implements UmbTreeRepository, UmbDetailRep constructor(host: UmbControllerHostElement) { this.#host = host; // TODO: figure out how spin up get the correct data source - this.#treeSource = new MemberGroupTreeServerDataSource(this.#host); + this.#treeSource = new UmbMemberGroupTreeServerDataSource(this.#host); this.#detailSource = new UmbMemberGroupDetailServerDataSource(this.#host); new UmbContextConsumerController(this.#host, UMB_MEMBER_GROUP_TREE_STORE_CONTEXT_TOKEN, (instance) => { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts index bfb95a7473..7535e756ea 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-groups/repository/sources/member-group.tree.server.data.ts @@ -6,16 +6,16 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the Member Group tree that fetches data from the server * @export - * @class MemberGroupTreeServerDataSource - * @implements {MemberGroupTreeDataSource} + * @class UmbMemberGroupTreeServerDataSource + * @implements {UmbTreeDataSource} */ -export class MemberGroupTreeServerDataSource implements UmbTreeDataSource { +export class UmbMemberGroupTreeServerDataSource implements UmbTreeDataSource { #host: UmbControllerHostElement; /** - * Creates an instance of MemberGroupTreeServerDataSource. + * Creates an instance of UmbMemberGroupTreeServerDataSource. * @param {UmbControllerHostElement} host - * @memberof MemberGroupTreeServerDataSource + * @memberof UmbMemberGroupTreeServerDataSource */ constructor(host: UmbControllerHostElement) { this.#host = host; @@ -24,7 +24,7 @@ export class MemberGroupTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the root items for the tree from the server * @return {*} - * @memberof MemberGroupTreeServerDataSource + * @memberof UmbMemberGroupTreeServerDataSource */ async getRootItems() { return tryExecuteAndNotify(this.#host, MemberGroupResource.getTreeMemberGroupRoot({})); @@ -34,7 +34,7 @@ export class MemberGroupTreeServerDataSource implements UmbTreeDataSource { * Fetches the children of a given parent id from the server * @param {(string | null)} parentId * @return {*} - * @memberof MemberGroupTreeServerDataSource + * @memberof UmbMemberGroupTreeServerDataSource */ async getChildrenOf(parentId: string | null) { // Not implemented for this tree @@ -45,7 +45,7 @@ export class MemberGroupTreeServerDataSource implements UmbTreeDataSource { * Fetches the items for the given ids from the server * @param {Array} ids * @return {*} - * @memberof MemberGroupTreeServerDataSource + * @memberof UmbMemberGroupTreeServerDataSource */ async getItems(ids: Array) { if (!ids || ids.length === 0) { From b0bd02df28257911ba062dec08b87a577922e553 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Sun, 16 Apr 2023 21:22:28 +0200 Subject: [PATCH 50/52] add umb prefix --- .../repository/member-type.repository.ts | 4 ++-- .../sources/member-type.tree.server.data.ts | 12 ++++++------ .../extension-slot/extension-slot.test.ts | 13 +++++++------ 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts index 620347e0b4..fe51a1c02c 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/member-type.repository.ts @@ -1,4 +1,4 @@ -import { MemberTypeTreeServerDataSource } from './sources/member-type.tree.server.data'; +import { UmbMemberTypeTreeServerDataSource } from './sources/member-type.tree.server.data'; import { UmbMemberTypeTreeStore, UMB_MEMBER_TYPE_TREE_STORE_CONTEXT_TOKEN } from './member-type.tree.store'; import { UmbMemberTypeStore, UMB_MEMBER_TYPE_STORE_CONTEXT_TOKEN } from './member-type.store'; import { UmbMemberTypeDetailServerDataSource } from './sources/member-type.detail.server.data'; @@ -30,7 +30,7 @@ export class UmbMemberTypeRepository implements UmbTreeRepository, this.#host = host; // TODO: figure out how spin up get the correct data source - this.#treeSource = new MemberTypeTreeServerDataSource(this.#host); + this.#treeSource = new UmbMemberTypeTreeServerDataSource(this.#host); this.#detailSource = new UmbMemberTypeDetailServerDataSource(this.#host); this.#init = Promise.all([ diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts index 0c1abf952a..40c09a25fc 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/member-types/repository/sources/member-type.tree.server.data.ts @@ -6,10 +6,10 @@ import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; /** * A data source for the MemberType tree that fetches data from the server * @export - * @class MemberTypeTreeServerDataSource - * @implements {MemberTypeTreeDataSource} + * @class UmbMemberTypeTreeServerDataSource + * @implements {UmbTreeDataSource} */ -export class MemberTypeTreeServerDataSource implements UmbTreeDataSource { +export class UmbMemberTypeTreeServerDataSource implements UmbTreeDataSource { #host: UmbControllerHostElement; /** @@ -24,7 +24,7 @@ export class MemberTypeTreeServerDataSource implements UmbTreeDataSource { /** * Fetches the root items for the tree from the server * @return {*} - * @memberof MemberTypeTreeServerDataSource + * @memberof UmbMemberTypeTreeServerDataSource */ async getRootItems() { return tryExecuteAndNotify(this.#host, MemberTypeResource.getTreeMemberTypeRoot({})); @@ -34,7 +34,7 @@ export class MemberTypeTreeServerDataSource implements UmbTreeDataSource { * Fetches the children of a given parent id from the server * @param {(string | null)} parentId * @return {*} - * @memberof MemberTypeTreeServerDataSource + * @memberof UmbMemberTypeTreeServerDataSource */ async getChildrenOf(parentId: string | null) { const error: ProblemDetailsModel = { title: 'Not implemented for Member Type' }; @@ -45,7 +45,7 @@ export class MemberTypeTreeServerDataSource implements UmbTreeDataSource { * Fetches the items for the given ids from the server * @param {Array} ids * @return {*} - * @memberof MemberTypeTreeServerDataSource + * @memberof UmbMemberTypeTreeServerDataSource */ async getItems(ids: Array) { if (!ids || ids.length === 0) { diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts index a61451b20b..3fba5e41f1 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts @@ -3,10 +3,9 @@ import { expect, fixture, html } from '@open-wc/testing'; import { InitializedExtension, UmbExtensionSlotElement } from './extension-slot.element'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extensions-api'; import { ManifestDashboard } from '@umbraco-cms/backoffice/extensions-registry'; -import { defaultA11yConfig } from '@umbraco-cms/internal/test-utils'; -@customElement('test-extension-slot-manifest-element') -class MyExtensionSlotManifestElement extends HTMLElement {} +@customElement('umb-test-extension-slot-manifest-element') +class UmbTestExtensionSlotManifestElement extends HTMLElement {} function sleep(ms: number) { return new Promise((resolve) => setTimeout(resolve, ms)); @@ -52,7 +51,7 @@ describe('UmbExtensionSlotElement', () => { type: 'dashboard', alias: 'unit-test-ext-slot-element-manifest', name: 'unit-test-extension', - elementName: 'test-extension-slot-manifest-element', + elementName: 'umb-test-extension-slot-manifest-element', meta: { pathname: 'test/test', }, @@ -75,7 +74,7 @@ describe('UmbExtensionSlotElement', () => { await sleep(0); - expect(element.shadowRoot!.firstElementChild).to.be.instanceOf(MyExtensionSlotManifestElement); + expect(element.shadowRoot!.firstElementChild).to.be.instanceOf(UmbTestExtensionSlotManifestElement); }); it('use the render method', async () => { @@ -90,7 +89,9 @@ describe('UmbExtensionSlotElement', () => { await sleep(0); expect(element.shadowRoot!.firstElementChild?.nodeName).to.be.equal('BLA'); - expect(element.shadowRoot!.firstElementChild?.firstElementChild).to.be.instanceOf(MyExtensionSlotManifestElement); + expect(element.shadowRoot!.firstElementChild?.firstElementChild).to.be.instanceOf( + UmbTestExtensionSlotManifestElement + ); }); }); }); From 952d585df7bff768428d21b1f52c47d6a91dc2b0 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Sun, 16 Apr 2023 21:28:56 +0200 Subject: [PATCH 51/52] add umb prefix --- .../provide/context-provider.controller.test.ts | 4 ++-- .../libs/controller/controller.test.ts | 8 ++++---- .../members/members/repository/member.repository.ts | 6 +++--- .../repository/sources/member.tree.server.data.ts | 12 ++++++------ 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.test.ts b/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.test.ts index 83bd2a2621..d09e43fb44 100644 --- a/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/context-api/provide/context-provider.controller.test.ts @@ -7,8 +7,8 @@ class UmbTestContextProviderControllerClass { prop = 'value from provider'; } -class ControllerHostElement extends UmbLitElement {} -const controllerHostElement = defineCE(ControllerHostElement); +class UmbTestControllerHostElement extends UmbLitElement {} +const controllerHostElement = defineCE(UmbTestControllerHostElement); describe('UmbContextProviderController', () => { let instance: UmbTestContextProviderControllerClass; diff --git a/src/Umbraco.Web.UI.Client/libs/controller/controller.test.ts b/src/Umbraco.Web.UI.Client/libs/controller/controller.test.ts index 993bc546ca..deda6a09e1 100644 --- a/src/Umbraco.Web.UI.Client/libs/controller/controller.test.ts +++ b/src/Umbraco.Web.UI.Client/libs/controller/controller.test.ts @@ -3,18 +3,18 @@ import { customElement } from 'lit/decorators.js'; import { UmbControllerHostElement, UmbControllerHostMixin } from './controller-host.mixin'; import { UmbContextProviderController } from '@umbraco-cms/backoffice/context-api'; -class MyClass { +class UmbTestContext { prop = 'value from provider'; } @customElement('test-my-controller-host') -export class MyHostElement extends UmbControllerHostMixin(HTMLElement) {} +export class UmbTestControllerHostElement extends UmbControllerHostMixin(HTMLElement) {} describe('UmbContextProvider', () => { type NewType = UmbControllerHostElement; let hostElement: NewType; - const contextInstance = new MyClass(); + const contextInstance = new UmbTestContext(); beforeEach(() => { hostElement = document.createElement('test-my-controller-host') as UmbControllerHostElement; @@ -35,7 +35,7 @@ describe('UmbContextProvider', () => { describe('Unique controllers replace each other', () => { it('has a host property', () => { const firstCtrl = new UmbContextProviderController(hostElement, 'my-test-context', contextInstance); - const secondCtrl = new UmbContextProviderController(hostElement, 'my-test-context', new MyClass()); + const secondCtrl = new UmbContextProviderController(hostElement, 'my-test-context', new UmbTestContext()); expect(hostElement.hasController(firstCtrl)).to.be.false; expect(hostElement.hasController(secondCtrl)).to.be.true; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.repository.ts index cf91bf0bf9..39fbb84c35 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/member.repository.ts @@ -1,5 +1,5 @@ import { UmbMemberTreeStore, UMB_MEMBER_TREE_STORE_CONTEXT_TOKEN } from './member.tree.store'; -import { MemberTreeServerDataSource } from './sources/member.tree.server.data'; +import { UmbMemberTreeServerDataSource } from './sources/member.tree.server.data'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; @@ -8,7 +8,7 @@ import { ProblemDetailsModel } from '@umbraco-cms/backoffice/backend-api'; export class UmbMemberRepository implements UmbTreeRepository { #host: UmbControllerHostElement; - #dataSource: MemberTreeServerDataSource; + #dataSource: UmbMemberTreeServerDataSource; #treeStore?: UmbMemberTreeStore; #notificationContext?: UmbNotificationContext; #initResolver?: () => void; @@ -17,7 +17,7 @@ export class UmbMemberRepository implements UmbTreeRepository { constructor(host: UmbControllerHostElement) { this.#host = host; // TODO: figure out how spin up get the correct data source - this.#dataSource = new MemberTreeServerDataSource(this.#host); + this.#dataSource = new UmbMemberTreeServerDataSource(this.#host); new UmbContextConsumerController(this.#host, UMB_MEMBER_TREE_STORE_CONTEXT_TOKEN, (instance) => { this.#treeStore = instance; diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/member.tree.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/member.tree.server.data.ts index b386fb52e2..903c63ef9f 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/member.tree.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/members/members/repository/sources/member.tree.server.data.ts @@ -4,16 +4,16 @@ import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; /** * A data source for the Member tree that fetches data from the server * @export - * @class MemberTreeServerDataSource + * @class UmbMemberTreeServerDataSource * @implements {MemberTreeDataSource} */ -export class MemberTreeServerDataSource implements MemberTreeDataSource { +export class UmbMemberTreeServerDataSource implements MemberTreeDataSource { #host: UmbControllerHostElement; /** - * Creates an instance of MemberTreeServerDataSource. + * Creates an instance of UmbMemberTreeServerDataSource. * @param {UmbControllerHostElement} host - * @memberof MemberTreeServerDataSource + * @memberof UmbMemberTreeServerDataSource */ constructor(host: UmbControllerHostElement) { this.#host = host; @@ -22,7 +22,7 @@ export class MemberTreeServerDataSource implements MemberTreeDataSource { /** * Fetches the root items for the tree from the server * @return {*} - * @memberof MemberTreeServerDataSource + * @memberof UmbMemberTreeServerDataSource */ async getRootItems() { const response = await fetch('/umbraco/management/api/v1/tree/member/root'); @@ -36,7 +36,7 @@ export class MemberTreeServerDataSource implements MemberTreeDataSource { * Fetches the items for the given ids from the server * @param {Array} ids * @return {*} - * @memberof MemberTreeServerDataSource + * @memberof UmbMemberTreeServerDataSource */ async getItems(ids: Array) { const response = await fetch('/umbraco/management/api/v1/tree/member/item'); From 6b68ce68a8e7d5cff3afaa3e494117f8d6da7280 Mon Sep 17 00:00:00 2001 From: Nathan Woulfe Date: Mon, 17 Apr 2023 13:34:21 +1000 Subject: [PATCH 52/52] needs to be called after setting OpenAPI config --- src/Umbraco.Web.UI.Client/src/app.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/app.ts b/src/Umbraco.Web.UI.Client/src/app.ts index 35bcc3afd1..af690fdd6e 100644 --- a/src/Umbraco.Web.UI.Client/src/app.ts +++ b/src/Umbraco.Web.UI.Client/src/app.ts @@ -63,7 +63,6 @@ export class UmbAppElement extends UmbLitElement { super(); this.#umbIconRegistry.attach(this); this.#uuiIconRegistry.attach(this); - this.#setInitStatus(); } connectedCallback() { @@ -76,6 +75,7 @@ export class UmbAppElement extends UmbLitElement { OpenAPI.WITH_CREDENTIALS = true; this.provideContext('UMBRACOBASE', OpenAPI.BASE); + this.#setInitStatus(); // Listen for the debug event from the component this.addEventListener(umbDebugContextEventType, (event: any) => {