Merge the Research Gallery shell's ownAddress (shareable pages P2)
This commit is contained in:
commit
00577668d6
1 changed files with 5 additions and 1 deletions
|
|
@ -216,7 +216,7 @@ import { helpFor } from './src/experimentalHelp.js'
|
|||
import { TAB_INFO } from './src/tabInfo.js'
|
||||
import MapInfo from '@map/components/info/MapInfo.vue'
|
||||
import { loadScriptOnce, whenTagDefined } from '@map/utils/embedScript.js'
|
||||
import { readViewKeys, writeViewKeys, onAddressChange, urlOwnerOf } from '@map/composables/useViewAddress.js'
|
||||
import { readViewKeys, writeViewKeys, onAddressChange, urlOwnerOf, ownAddress } from '@map/composables/useViewAddress.js'
|
||||
|
||||
// THE HOST PAGE'S LANGUAGE, by the same ladder every nested map already uses (library/i18n
|
||||
// detectLocale): ?lang= / ?locale= on the page URL, then <html lang>. '' when the page says nothing.
|
||||
|
|
@ -1136,6 +1136,9 @@ export default defineComponent({
|
|||
// would snap a host's fixed `tab` attribute back to the default. The owner is read per event: a host may set
|
||||
// profile-config after mount.
|
||||
this._offAddress = onAddressChange(({ tab }) => { if (urlOwnerOf(this.cfg)) this.openFromAddress(tab) })
|
||||
// A nested composite's choice (its open pane, a selected place) reaches the address through this shell, the
|
||||
// page's one writer, while the page owns its address; a nested element can never switch this shell's tab.
|
||||
this._offOwn = ownAddress(this.$el, () => urlOwnerOf(this.cfg))
|
||||
},
|
||||
// Release the media-query listener. This element is a custom element a host can add and REMOVE at
|
||||
// will (a cap-5 SPA is mounted and unmounted by shells, tabs and the studio), and a live listener
|
||||
|
|
@ -1144,6 +1147,7 @@ export default defineComponent({
|
|||
if (this._langObs) { this._langObs.disconnect(); this._langObs = null }
|
||||
if (this._onHostedHelp) { this.$el.removeEventListener('doxa:help', this._onHostedHelp); this._onHostedHelp = null }
|
||||
if (this._offAddress) { this._offAddress(); this._offAddress = null }
|
||||
if (this._offOwn) { this._offOwn(); this._offOwn = null }
|
||||
if (!this._mql || !this._onMedia) return
|
||||
if (this._mql.removeEventListener) this._mql.removeEventListener('change', this._onMedia)
|
||||
else if (this._mql.removeListener) this._mql.removeListener(this._onMedia)
|
||||
|
|
|
|||
Loading…
Reference in a new issue