diff --git a/components/backdrop/backdrop-loading.js b/components/backdrop/backdrop-loading.js index fe781e79b9d..87afd0a1639 100644 --- a/components/backdrop/backdrop-loading.js +++ b/components/backdrop/backdrop-loading.js @@ -12,6 +12,7 @@ const BACKDROP_DELAY_MS = 800; const FADE_DURATION_MS = 500; const SPINNER_DELAY_MS = FADE_DURATION_MS; const LOADING_ANNOUNCEMENT_DELAY = 1000; +const DIRTY_ANNOUNCEMENT_DELAY = 1000; const LOADING_SPINNER_SIZE = 50; @@ -25,10 +26,13 @@ class LoadingBackdrop extends LocalizeCoreElement(LitElement) { static get properties() { return { /** - * Used to control whether the loading backdrop is shown - * @type {boolean} + * The state of data in the element being overlaid. Set to 'clean' when the data represents the user's latest selections, 'dirty' when the data does not represent the user's latest selections, and 'loading' if the data is being actively refreshed + * @type {'clean'|'dirty'|'loading'} */ - shown: { type: Boolean }, + dataState: { + reflect: true, + type: String + }, /** * Used to identify content that the backdrop should make inert * @type {boolean} @@ -81,9 +85,28 @@ class LoadingBackdrop extends LocalizeCoreElement(LitElement) { opacity: 1; transition: opacity ${FADE_DURATION_MS}ms ease-in ${SPINNER_DELAY_MS}ms; } - - :host([_state="hiding"]) .d2l-backdrop, + :host([_state="shown"][dataState="dirty"]) d2l-loading-spinner, :host([_state="hiding"]) d2l-loading-spinner { + opacity: 0; + transition: opacity ${FADE_DURATION_MS}ms ease-out; + } + + d2l-empty-state-simple { + background-color: var(--d2l-table-controls-background-color, white); + top: 0; + opacity: 0; + height: fit-content; + justify-content: center; + position: relative; + z-index: 1000; + } + :host([_state="shown"]) d2l-empty-state-simple { + opacity: 1; + transition: opacity ${FADE_DURATION_MS}ms ease-in; + } + :host([_state="shown"][dataState="loading"]) d2l-empty-state-simple, + :host([_state="hiding"]) d2l-empty-state-simple { + opacity: 0; transition: opacity ${FADE_DURATION_MS}ms ease-out; } @@ -95,9 +118,10 @@ class LoadingBackdrop extends LocalizeCoreElement(LitElement) { constructor() { super(); - this.shown = false; + this.dataState = 'clean'; this._state = 'hidden'; this._spinnerTop = 0; + this._dirtyDialogTop = 0; this._ariaContent = ''; } @@ -107,40 +131,62 @@ class LoadingBackdrop extends LocalizeCoreElement(LitElement) { html`
+ + +
` } ${this._ariaContent} `; } updated(changedProperties) { + if (changedProperties.get('_state') && changedProperties.get('_state') === 'hidden') + { + this.#centerLoadingSpinner(); + } + if (changedProperties.has('_state')) { if (this._state === 'showing') { - setTimeout(() => { - if (this._state === 'showing') this._state = 'shown'; - }, BACKDROP_DELAY_MS); + if (this.dataState === 'loading') { + setTimeout(() => { + if (this._state === 'showing') this._state = 'shown'; + }, BACKDROP_DELAY_MS); + } else { + this._state = 'shown'; + } } } - - if (changedProperties.has('shown') && ( - (reduceMotion && this._state === 'shown') || (!reduceMotion && this._state === 'showing') - )) { - this.#centerLoadingSpinner(); - } } willUpdate(changedProperties) { - if (changedProperties.has('shown')) { + if (changedProperties.has('dataState') && changedProperties.get('dataState') !== undefined) { this.#clearLiveArea(); - if (this.shown) { + + const oldState = changedProperties.get('dataState'); + const newState = this.dataState; + + // Calculate announcements + if (newState === 'loading') { this.#setLiveArea(this.localize('components.backdrop-loading.loadingAnnouncement'), { delay: LOADING_ANNOUNCEMENT_DELAY }); - this.#show(); - } else if (changedProperties.get('shown') !== undefined) { + } else if (oldState === 'loading' && newState === 'clean') { this.#setLiveArea(this.localize('components.backdrop-loading.loadingCompleteAnnouncement')); + } else if (newState === 'dirty') { + this.#setLiveArea(this.localize('components.backdrop-loading.dirtyAnnouncement'), { delay: DIRTY_ANNOUNCEMENT_DELAY }); + } + + // Update backdrop + if (oldState === 'clean') { + this.#show(); + } else if (newState === 'clean') { this.#fade(); + } else if (oldState === 'loading' && newState === 'dirty') { + setTimeout(() => { + if (this._state === 'showing') this._state = 'shown'; + }, BACKDROP_DELAY_MS); } } } - #centerLoadingSpinner() { + async #centerLoadingSpinner() { if (this._state === 'hidden') { return; } const loadingSpinner = this.shadowRoot.querySelector('d2l-loading-spinner'); @@ -160,7 +206,13 @@ class LoadingBackdrop extends LocalizeCoreElement(LitElement) { // Adjust for the size of the spinner const spinnerSizeOffset = LOADING_SPINNER_SIZE / 2; + // Adjust for the size of the dirty dialog + await this.shadowRoot.querySelector('d2l-empty-state-simple').getUpdateComplete(); + await this.shadowRoot.querySelector('d2l-empty-state-action-button')?.getUpdateComplete(); + const dirtyDialogSizeOffset = this.shadowRoot.querySelector('d2l-empty-state-simple').getBoundingClientRect().height / 2; + this._spinnerTop = centeringOffset + topOffset - spinnerSizeOffset; + this._dirtyDialogTop = centeringOffset + topOffset - dirtyDialogSizeOffset; } #clearLiveArea() { @@ -186,6 +238,7 @@ class LoadingBackdrop extends LocalizeCoreElement(LitElement) { this._state = 'hiding'; } } + #getBackdropTarget() { const parent = getComposedParent(this); @@ -199,11 +252,17 @@ class LoadingBackdrop extends LocalizeCoreElement(LitElement) { return targetedChildren.length === 0 ? parent : targetedChildren[0]; } + + #handleApplyButton() { + this.dispatchEvent(new CustomEvent('d2l-apply-button-click', { bubbles: true, composed: true })); + } + #handleTransitionEnd() { if (this._state === 'hiding') { this.#hide(); } } + #hide() { this._state = 'hidden'; @@ -211,9 +270,11 @@ class LoadingBackdrop extends LocalizeCoreElement(LitElement) { if (containingBlock.dataset.initiallyInert !== '1') containingBlock.removeAttribute('inert'); } + #setLiveArea(content, { delay } = {}) { this.announcementTimeout = setTimeout(() => this._ariaContent = content, delay || 0); } + #show() { this._state = reduceMotion ? 'shown' : 'showing'; @@ -223,7 +284,6 @@ class LoadingBackdrop extends LocalizeCoreElement(LitElement) { containingBlock.setAttribute('inert', 'inert'); } - } customElements.define('d2l-backdrop-loading', LoadingBackdrop); diff --git a/components/backdrop/test/backdrop-loading.vdiff.js b/components/backdrop/test/backdrop-loading.vdiff.js index 597cdc1ec92..6e7075493ec 100644 --- a/components/backdrop/test/backdrop-loading.vdiff.js +++ b/components/backdrop/test/backdrop-loading.vdiff.js @@ -11,14 +11,20 @@ const template = html` `; describe('backdrop-loading', () => { - it('not shown', async() => { + it('clean', async() => { const elem = await fixture(template); await expect(elem).to.be.golden(); }); - it('shown', async() => { + it('dirty', async() => { const elem = await fixture(template); - elem.querySelector('d2l-backdrop-loading').shown = true; + elem.querySelector('d2l-backdrop-loading').dataState = 'dirty'; + await expect(elem).to.be.golden(); + }); + + it('loading', async() => { + const elem = await fixture(template); + elem.querySelector('d2l-backdrop-loading').dataState = 'loading'; await expect(elem).to.be.golden(); }); }); diff --git a/components/list/demo/demo-list.js b/components/list/demo/demo-list.js index 813570c13d2..a2d6917d381 100644 --- a/components/list/demo/demo-list.js +++ b/components/list/demo/demo-list.js @@ -13,6 +13,8 @@ import '../list-controls.js'; import '../list-item-content.js'; import '../list-item.js'; import '../list.js'; +import '../../inputs/input-radio.js'; +import '../../inputs/input-radio-group.js'; import { css, html, LitElement } from 'lit'; import { getUniqueId } from '../../../helpers/uniqueId.js'; import { ifDefined } from 'lit/directives/if-defined.js'; @@ -144,6 +146,7 @@ class DemoList extends LitElement { this.items = JSON.parse(JSON.stringify(items)); this._lastItemLoadedIndex = 2; this._pageSize = 2; + this.dataState = 'clean'; } render() { @@ -158,6 +161,11 @@ class DemoList extends LitElement { ?add-button="${this.addButton}" add-button-text="${ifDefined(addButtonText)}"> + + + + + @@ -228,6 +236,11 @@ class DemoList extends LitElement { this.requestUpdate(); } + _handleDataStateChange(e) { + this.shadowRoot.querySelector('d2l-list').dataState = e.detail.value; + this.dataState = e.detail.value; + } + _handlePagerLoadMore(e) { // mock delay consumers might have setTimeout(() => { diff --git a/components/list/list.js b/components/list/list.js index 6ffc020f129..774a99c00db 100644 --- a/components/list/list.js +++ b/components/list/list.js @@ -1,3 +1,4 @@ +import '../backdrop/backdrop-loading.js'; import { css, html, LitElement } from 'lit'; import { getNextFocusable, getPreviousFocusable } from '../../helpers/focus.js'; import { SelectionInfo, SelectionMixin } from '../selection/selection-mixin.js'; @@ -98,6 +99,14 @@ class List extends PageableMixin(SelectionMixin(LitElement)) { * Show selection only on hover, focus or if at least one item is selected. Exclusive for the tile layout * @type {boolean} */ + /** + * The state of data in the table. Set to 'clean' when the data represents the user's latest selections, 'dirty' when the data does not represent the user's latest selections, and 'loading' if the data is being actively refreshed + * @type {'clean'|'dirty'|'loading'} + */ + dataState: { + reflect: true, + type: String + }, selectionWhenInteracted: { type: Boolean, attribute: 'selection-when-interacted', reflect: true }, _breakpoint: { type: Number, reflect: true }, _slimColor: { type: Boolean, reflect: true, attribute: '_slim-color' } @@ -175,6 +184,7 @@ class List extends PageableMixin(SelectionMixin(LitElement)) { this._listItemChanges = []; this._childHasColor = false; this._childHasExpandCollapseToggle = false; + this.dataState = 'clean'; this._breakpoint = 0; this._slimColor = false; @@ -247,11 +257,15 @@ class List extends PageableMixin(SelectionMixin(LitElement)) { render() { const role = !this.grid ? 'list' : 'application'; // not using grid role due to Safari+VO: https://bugs.webkit.org/show_bug.cgi?id=291591 const ariaLabel = this.slot !== 'nested' ? this.label : undefined; + console.log(this.dataState); return html`
- +
+ + +
${this._renderPagerContainer()} `; diff --git a/components/table/demo/table-test.js b/components/table/demo/table-test.js index 7014884e4d3..acd122540ba 100644 --- a/components/table/demo/table-test.js +++ b/components/table/demo/table-test.js @@ -14,6 +14,8 @@ import '../../selection/selection-action.js'; import '../../selection/selection-action-dropdown.js'; import '../../selection/selection-action-menu-item.js'; import '../../selection/selection-input.js'; +import '../../inputs/input-radio.js'; +import '../../inputs/input-radio-group.js'; import { css, html, nothing } from 'lit'; import { tableStyles, TableWrapper } from '../table-wrapper.js'; @@ -81,6 +83,7 @@ class TestTable extends DemoPassthroughMixin(TableWrapper, 'd2l-table-wrapper') this._data = data(); this._sortField = undefined; this._sortDesc = false; + this.dataState = 'clean'; } render() { @@ -97,11 +100,11 @@ class TestTable extends DemoPassthroughMixin(TableWrapper, 'd2l-table-wrapper') icon="tier1:${this.stickyHeaders ? 'check' : 'close-default'}" @d2l-selection-action-click="${this._toggleStickyHeaders}" > - + + + + + @@ -167,6 +170,10 @@ class TestTable extends DemoPassthroughMixin(TableWrapper, 'd2l-table-wrapper') `; } + _handleDataStateChange(e) { + this.dataState = e.detail.value; + } + async _handlePagerLoadMore(e) { const pageSize = e.target.pageSize; await new Promise(resolve => setTimeout(resolve, 1000)); @@ -256,9 +263,6 @@ class TestTable extends DemoPassthroughMixin(TableWrapper, 'd2l-table-wrapper') this.requestUpdate(); } - _toggleLoading() { - this.loading = !this.loading; - } _toggleStickyControls() { this.stickyControls = !this.stickyControls; } diff --git a/components/table/table-wrapper.js b/components/table/table-wrapper.js index e227b989f36..7f80efa7266 100644 --- a/components/table/table-wrapper.js +++ b/components/table/table-wrapper.js @@ -311,12 +311,12 @@ export class TableWrapper extends PageableMixin(SelectionMixin(LitElement)) { type: Boolean, }, /** - * Whether or not to display a loading backdrop. Set this property when the content in the table is being refreshed. - * @type {boolean} + * The state of data in the table. Set to 'clean' when the data represents the user's latest selections, 'dirty' when the data does not represent the user's latest selections, and 'loading' if the data is being actively refreshed + * @type {'clean'|'dirty'|'loading'} */ - loading: { + dataState: { reflect: true, - type: Boolean + type: String }, }; } @@ -388,7 +388,7 @@ export class TableWrapper extends PageableMixin(SelectionMixin(LitElement)) { this._tableIntersectionObserver = null; this._tableMutationObserver = null; this._tableScrollers = {}; - this.loading = false; + this.dataState = 'clean'; this._excludeStickyColumnsFromScrollCalculations = getFlag('GAUD-9530-exclude-sticky-columns-from-scroll-calculations', false); } @@ -422,7 +422,7 @@ export class TableWrapper extends PageableMixin(SelectionMixin(LitElement)) { const slot = html`
- +
`; const useScrollWrapper = this.stickyHeadersScrollWrapper || !this.stickyHeaders; diff --git a/lang/ar.js b/lang/ar.js index 3e2a23a2f46..1befca90ceb 100644 --- a/lang/ar.js +++ b/lang/ar.js @@ -1,8 +1,11 @@ export default { "components.alert.close": "إغلاق التنبيه", - "components.breadcrumbs.breadcrumb": "مسار التنقل", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", + "components.breadcrumbs.breadcrumb": "مسار التنقل", "components.button-add.addItem": "إضافة عنصر", "components.button-copy.copied": "تم النسخ!", "components.button-copy.error": "فشل النسخ. حاول مرة أخرى، أو حاول النسخ يدويًا.", diff --git a/lang/cy.js b/lang/cy.js index c59c9e705ca..9749e92e3b8 100644 --- a/lang/cy.js +++ b/lang/cy.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "Cau Hysbysiad", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "Briwsionyn Bara", diff --git a/lang/da.js b/lang/da.js index 5956001743d..eb1470eca12 100644 --- a/lang/da.js +++ b/lang/da.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "Luk besked", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "Brødkrumme", diff --git a/lang/de.js b/lang/de.js index 0980a2205e1..d00f79c9a60 100644 --- a/lang/de.js +++ b/lang/de.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "Benachrichtigung schließen", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "Brotkrümelnavigation", diff --git a/lang/en-gb.js b/lang/en-gb.js index 4830e2e5336..4a82c4e40f5 100644 --- a/lang/en-gb.js +++ b/lang/en-gb.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "Close Alert", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "Breadcrumb", diff --git a/lang/en.js b/lang/en.js index 569d4558a69..cf7ce6a8ec2 100644 --- a/lang/en.js +++ b/lang/en.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "Close Alert", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "Breadcrumb", diff --git a/lang/es-es.js b/lang/es-es.js index 75e15de3b3b..495a90fb23e 100644 --- a/lang/es-es.js +++ b/lang/es-es.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "Cerrar alerta", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "Ruta de navegación", diff --git a/lang/es.js b/lang/es.js index 909dd1f3040..e72aab41acc 100644 --- a/lang/es.js +++ b/lang/es.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "Cerrar alerta", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "Ruta de navegación", diff --git a/lang/fr-fr.js b/lang/fr-fr.js index dd1da26104a..e18e39d5cc5 100644 --- a/lang/fr-fr.js +++ b/lang/fr-fr.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "Fermer l’alerte", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "Chemin de navigation", diff --git a/lang/fr.js b/lang/fr.js index c9bf39303af..8178f1c5f63 100644 --- a/lang/fr.js +++ b/lang/fr.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "Fermer l’alerte", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "Chemin de navigation", diff --git a/lang/haw.js b/lang/haw.js index 741deddd8d6..f5e697581ed 100644 --- a/lang/haw.js +++ b/lang/haw.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "Pani i ka makaʻala", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "Palapalapala", diff --git a/lang/hi.js b/lang/hi.js index 92690d820f5..4242d472e46 100644 --- a/lang/hi.js +++ b/lang/hi.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "अलर्ट बंद करें", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "ब्रेडक्रंब", diff --git a/lang/ja.js b/lang/ja.js index f3d4bdf0c09..f68435f3c6e 100644 --- a/lang/ja.js +++ b/lang/ja.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "アラートを閉じる", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "階層", diff --git a/lang/ko.js b/lang/ko.js index 40d5c0207a4..53748271133 100644 --- a/lang/ko.js +++ b/lang/ko.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "경보 닫기", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "이동 경로", diff --git a/lang/mi.js b/lang/mi.js index b0e165ac128..b7e9a321ffb 100644 --- a/lang/mi.js +++ b/lang/mi.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "Kati Matohi", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "Pānui", diff --git a/lang/nl.js b/lang/nl.js index 2e9f9be2de6..88a01e938f4 100644 --- a/lang/nl.js +++ b/lang/nl.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "Waarschuwing sluiten", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "Kruimelpad", diff --git a/lang/pt.js b/lang/pt.js index 6d48a08cc68..d9d5f8fac1b 100644 --- a/lang/pt.js +++ b/lang/pt.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "Fechar alerta", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "Auxiliar de navegação", diff --git a/lang/sv.js b/lang/sv.js index e3dd955ce54..8445872a635 100644 --- a/lang/sv.js +++ b/lang/sv.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "Stängningsvarning", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "Sökväg", diff --git a/lang/th.js b/lang/th.js index 9c910bb8ae1..262ac46200b 100644 --- a/lang/th.js +++ b/lang/th.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "ปิดการแจ้งเตือน", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "แถบนำทาง", diff --git a/lang/tr.js b/lang/tr.js index 7f9838396e8..5ddbf5b1e78 100644 --- a/lang/tr.js +++ b/lang/tr.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "Kapatma Uyarısı", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "İçerik Haritası", diff --git a/lang/vi.js b/lang/vi.js index 7cd30d8172a..8d8ca15fcfe 100644 --- a/lang/vi.js +++ b/lang/vi.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "Đóng Cảnh Báo", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "Đường dẫn", diff --git a/lang/zh-cn.js b/lang/zh-cn.js index d5dd23c630a..64a526d9e91 100644 --- a/lang/zh-cn.js +++ b/lang/zh-cn.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "关闭提醒", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "痕迹导航", diff --git a/lang/zh-tw.js b/lang/zh-tw.js index 16037be73f3..ff3c05bb241 100644 --- a/lang/zh-tw.js +++ b/lang/zh-tw.js @@ -1,5 +1,8 @@ export default { "components.alert.close": "關閉警示", + "components.backdrop-loading.dirtyAnnouncement": "Filters have been changed. Click to apply filters", + "components.backdrop-loading.dirtyDialogAction": "Apply Filters.", + "components.backdrop-loading.dirtyDialogDescription": "Filters have been changed.", "components.backdrop-loading.loadingAnnouncement": "Loading.", "components.backdrop-loading.loadingCompleteAnnouncement": "Loading Complete.", "components.breadcrumbs.breadcrumb": "導覽路徑",