Two posters per row on the regions wall, with a control to change it
The Driver, verbatim: "i need two posters per row on the regiosn posters and witha setitn got icnreat eh number of poswers per row". The wall's own grid is repeat(auto-fill, minmax(210px, 1fr)), which lays five across a region card. It now takes a `columns` count and an optional `columnsControl`, both opt-in and both defaulting to the behaviour that shipped — so country-posters and my-upg-100-list, which did not ask for this, keep the auto-fill they have always had. Measured after the change: they still lay out five across and neither grew a control. The control is a <select>, not a stepper or a pair of chevrons. It is what every reader already knows for "choose one of a few", it is keyboard- and screen-reader-operable with no work, and it shows its current value without a second element. Imitating the solved pattern rather than inventing one. Its label is catalogued in eleven locales like everything else on this surface. The probe measures GEOMETRY, not CSS. Asserting grid-template-columns would pass on a rule that says repeat(2, …) while the cards actually wrapped three across because one had a min-width the track could not honour — and a computed style is exactly the kind of proxy that has fooled this suite five times today. It counts how many cards share a rendered top coordinate, which is what a reader sees: [2,2,2,2,2]. And it proves the control by USING it — set it to 3 and the rows become [3,3,3,3,3]. A default that happens to be right would pass a one-shot check with an inert knob. One thing worth recording for the next person: the first attempt put the explanatory comment inside the PosterWall tag's attribute list, and the Vue compiler rejected it. An HTML comment belongs above the tag. This file had already learned that once.
This commit is contained in:
parent
661133dd5c
commit
5a959d6b94
23 changed files with 264 additions and 198 deletions
|
|
@ -39,7 +39,7 @@
|
|||
* CROSS-PANE COMMS — this wall NEVER imports a map. It dispatches a window
|
||||
* CustomEvent scoped by instanceId, so several embeds on one page never cross-talk.
|
||||
*/
|
||||
import { computed, ref, onBeforeUnmount } from 'vue'
|
||||
import { computed, ref, watch, onBeforeUnmount } from 'vue'
|
||||
import { useShadowStyles } from '@map/composables/useShadowStyles.js'
|
||||
import { usePosterPrints } from '@map/composables/usePosterPrints.js'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
|
@ -146,8 +146,30 @@ const props = defineProps({
|
|||
// group in its own chrome (the region card's header and summary) would otherwise repeat it,
|
||||
// and with a single unnamed group the head renders the literal "Other". Default true.
|
||||
sectionHeads:{ type: Boolean, default: true },
|
||||
// ★ HOW MANY POSTERS SIT IN A ROW. The Driver, on the regions posters: "i need two posters per
|
||||
// row on the regiosn posters and witha setitn got icnreat eh number of poswers per row".
|
||||
// 0 keeps the wall's existing auto-fill (repeat(auto-fill, minmax(210px, 1fr))), so the two
|
||||
// panes that already ship — country-posters and my-upg-100-list — are byte-identical unless
|
||||
// their owner opts in. A positive number fixes the track count instead.
|
||||
columns: { type: Number, default: 0 },
|
||||
// And the control that changes it, off by default for the same reason. Only the caller that
|
||||
// asked for a fixed count wants a knob for it.
|
||||
columnsControl: { type: Boolean, default: false },
|
||||
})
|
||||
|
||||
// The live count, seeded from the prop. A ref rather than the prop directly, because the control
|
||||
// changes it and a prop is not ours to write.
|
||||
const perRow = ref(props.columns || 0)
|
||||
watch(() => props.columns, (n) => { perRow.value = n || 0 })
|
||||
// The choices the control offers. Two is the Driver's default; the ceiling is the wall's own
|
||||
// auto-fill behaviour, offered as "fit" so the knob can always get back to where it started.
|
||||
const PER_ROW_CHOICES = [2, 3, 4, 5, 6]
|
||||
// grid-template-columns, or nothing at all when the count is 0 — an empty string leaves the
|
||||
// stylesheet's auto-fill rule in charge rather than overriding it with something equivalent.
|
||||
const gridStyle = computed(() => perRow.value > 0
|
||||
? { gridTemplateColumns: `repeat(${perRow.value}, minmax(0, 1fr))` }
|
||||
: {})
|
||||
|
||||
const plural = computed(() => props.itemNounPlural || `${props.itemNoun}s`)
|
||||
const base = computed(() => String(props.assetsBase || './assets').replace(/\/+$/, ''))
|
||||
|
||||
|
|
@ -438,6 +460,16 @@ useShadowStyles(
|
|||
// left ~1px of real air and the wall read as one dense block.
|
||||
'.grid{display:grid;gap:64px 30px;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));' +
|
||||
'max-width:1180px;margin:0 auto}' +
|
||||
// The per-row control. Sits above its own grid, right-aligned so it reads as a setting for the
|
||||
// block below rather than as content, and inherits the wall's type so it does not announce
|
||||
// itself. max-width matches the grid's, so the two share an edge.
|
||||
'.perrow{display:flex;align-items:center;justify-content:flex-end;gap:8px;' +
|
||||
'max-width:1180px;margin:0 auto 12px;font:inherit;font-size:13px}' +
|
||||
'.perrow__label{color:#6d766e}' +
|
||||
'.perrow__select{font:inherit;font-size:13px;padding:2px 6px;border:1px solid #cbd2d9;' +
|
||||
'border-radius:6px;background:#fff;color:inherit;cursor:pointer}' +
|
||||
'.is-dark .perrow__label{color:#9fb3a6}' +
|
||||
'.is-dark .perrow__select{background:#132019;border-color:rgba(110,231,183,.20)}' +
|
||||
'.card{position:relative;background:#fff;border:1px solid #e3e6ea;border-radius:3px;' +
|
||||
'padding:24px 12px 26px;box-shadow:0 1px 3px rgba(0,0,0,.10),0 6px 18px rgba(0,0,0,.07);' +
|
||||
'transition:transform .16s ease,box-shadow .16s ease}' +
|
||||
|
|
@ -621,7 +653,19 @@ useShadowStyles(
|
|||
</span>
|
||||
</component>
|
||||
|
||||
<div v-show="!isCollapsed(sec.name)" class="grid">
|
||||
<!-- ★ THE PER-ROW CONTROL. A <select>, not a stepper or a pair of chevrons: it is the control
|
||||
every reader already knows for "choose one of a few", it is keyboard- and
|
||||
screen-reader-operable with no work, and it shows the current value without a second
|
||||
element. Imitating the solved pattern rather than inventing one.
|
||||
Rendered once per section, beside the grid it governs, and only where the caller asked
|
||||
for it — so neither existing pane grows a knob it did not request. -->
|
||||
<div v-if="columnsControl && !isCollapsed(sec.name)" class="perrow">
|
||||
<label class="perrow__label" :for="`perrow-${instanceId}-${sec.name}`">{{ t('buttons.postersPerRow') }}</label>
|
||||
<select :id="`perrow-${instanceId}-${sec.name}`" class="perrow__select" v-model.number="perRow">
|
||||
<option v-for="n in PER_ROW_CHOICES" :key="n" :value="n">{{ n }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div v-show="!isCollapsed(sec.name)" class="grid" :style="gridStyle">
|
||||
<div v-for="item in sec.items" :key="item.id" class="card"
|
||||
:class="{ 'is-last': lastShown === item.id }" :data-list-id="item.id">
|
||||
|
||||
|
|
|
|||
|
|
@ -41,5 +41,6 @@
|
|||
],
|
||||
"clearSelection": "إلغاء التحديد",
|
||||
"noOptions": "لا توجد نتائج",
|
||||
"renderingLocal": "يتم إنشاء صورة بجودة الطباعة في متصفحك — لا يتم تحميل أي شيء."
|
||||
"renderingLocal": "يتم إنشاء صورة بجودة الطباعة في متصفحك — لا يتم تحميل أي شيء.",
|
||||
"postersPerRow": "الملصقات في كل صف"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,5 +41,6 @@
|
|||
],
|
||||
"clearSelection": "Auswahl aufheben",
|
||||
"noOptions": "Keine Optionen gefunden",
|
||||
"renderingLocal": "Ein druckfähiges Bild wird in deinem Browser erzeugt — es wird nichts hochgeladen."
|
||||
"renderingLocal": "Ein druckfähiges Bild wird in deinem Browser erzeugt — es wird nichts hochgeladen.",
|
||||
"postersPerRow": "Poster pro Zeile"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,5 +41,6 @@
|
|||
"previewPrintPoster": "Preview & print the {label} poster",
|
||||
"clearSelection": "Clear selection",
|
||||
"noOptions": "No options found",
|
||||
"renderingLocal": "Rendering a print-quality image in your browser — nothing is uploaded."
|
||||
"renderingLocal": "Rendering a print-quality image in your browser — nothing is uploaded.",
|
||||
"postersPerRow": "Posters per row"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,5 +41,6 @@
|
|||
],
|
||||
"clearSelection": "Borrar la selección",
|
||||
"noOptions": "No se encontraron opciones",
|
||||
"renderingLocal": "Se está generando una imagen con calidad de impresión en tu navegador: no se sube nada."
|
||||
"renderingLocal": "Se está generando una imagen con calidad de impresión en tu navegador: no se sube nada.",
|
||||
"postersPerRow": "Pósteres por fila"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,5 +41,6 @@
|
|||
],
|
||||
"clearSelection": "Effacer la sélection",
|
||||
"noOptions": "Aucune option trouvée",
|
||||
"renderingLocal": "Une image de qualité impression est générée dans votre navigateur — rien n’est envoyé."
|
||||
"renderingLocal": "Une image de qualité impression est générée dans votre navigateur — rien n’est envoyé.",
|
||||
"postersPerRow": "Affiches par ligne"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,5 +41,6 @@
|
|||
],
|
||||
"clearSelection": "चयन हटाएँ",
|
||||
"noOptions": "कोई विकल्प नहीं मिला",
|
||||
"renderingLocal": "आपके ब्राउज़र में प्रिंट-गुणवत्ता वाली छवि बन रही है — कुछ भी अपलोड नहीं किया जाता।"
|
||||
"renderingLocal": "आपके ब्राउज़र में प्रिंट-गुणवत्ता वाली छवि बन रही है — कुछ भी अपलोड नहीं किया जाता।",
|
||||
"postersPerRow": "प्रति पंक्ति पोस्टर"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,5 +41,6 @@
|
|||
],
|
||||
"clearSelection": "Cancella la selezione",
|
||||
"noOptions": "Nessuna opzione trovata",
|
||||
"renderingLocal": "Un’immagine con qualità di stampa viene generata nel tuo browser: nulla viene caricato."
|
||||
"renderingLocal": "Un’immagine con qualità di stampa viene generata nel tuo browser: nulla viene caricato.",
|
||||
"postersPerRow": "Poster per riga"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,5 +41,6 @@
|
|||
],
|
||||
"clearSelection": "Limpar a seleção",
|
||||
"noOptions": "Nenhuma opção encontrada",
|
||||
"renderingLocal": "Uma imagem com qualidade de impressão está a ser gerada no seu navegador — nada é enviado."
|
||||
"renderingLocal": "Uma imagem com qualidade de impressão está a ser gerada no seu navegador — nada é enviado.",
|
||||
"postersPerRow": "Cartazes por linha"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,5 +41,6 @@
|
|||
],
|
||||
"clearSelection": "Șterge selecția",
|
||||
"noOptions": "Nicio opțiune găsită",
|
||||
"renderingLocal": "O imagine de calitate pentru tipar este generată în browserul tău — nimic nu este încărcat."
|
||||
"renderingLocal": "O imagine de calitate pentru tipar este generată în browserul tău — nimic nu este încărcat.",
|
||||
"postersPerRow": "Postere pe rând"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,5 +41,6 @@
|
|||
],
|
||||
"clearSelection": "Снять выделение",
|
||||
"noOptions": "Ничего не найдено",
|
||||
"renderingLocal": "Изображение типографского качества создаётся в вашем браузере — ничего не загружается на сервер."
|
||||
"renderingLocal": "Изображение типографского качества создаётся в вашем браузере — ничего не загружается на сервер.",
|
||||
"postersPerRow": "Плакатов в ряду"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,5 +41,6 @@
|
|||
],
|
||||
"clearSelection": "清除选择",
|
||||
"noOptions": "未找到选项",
|
||||
"renderingLocal": "正在您的浏览器中生成可打印质量的图片——不会上传任何内容。"
|
||||
"renderingLocal": "正在您的浏览器中生成可打印质量的图片——不会上传任何内容。",
|
||||
"postersPerRow": "每行海报数"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -669,6 +669,15 @@ useShadowStyles(
|
|||
and the print UX here must be identical. deliverPoster() branches on that one
|
||||
prop and routes BOTH the shipped-.webp and the browser-rasterised path through
|
||||
openPrintFrame, so this is configuration — not a second implementation. -->
|
||||
<!-- ★ TWO PER ROW, AND A KNOB. The Driver, verbatim: "i need two posters per row on
|
||||
the regiosn posters and witha setitn got icnreat eh number of poswers per row".
|
||||
The wall's own default is an auto-fill grid at minmax(210px,1fr), which lays out
|
||||
five across a region card; two is a deliberate, larger card, and the control lets
|
||||
a reader put it back.
|
||||
Both props are OPT-IN on the shared component, so country-posters and
|
||||
my-upg-100-list keep the auto-fill they have always had.
|
||||
The comment sits ABOVE the tag because an HTML comment inside an attribute list is
|
||||
a parse error — which is how the first attempt at this failed. -->
|
||||
<PosterWall
|
||||
:items="postersFor(region)"
|
||||
:group-by="posterGroupBy"
|
||||
|
|
@ -683,6 +692,8 @@ useShadowStyles(
|
|||
:collapsible="false"
|
||||
:embedded="true"
|
||||
:section-heads="false"
|
||||
:columns="2"
|
||||
:columns-control="true"
|
||||
:unsupported="posterUnsupported"
|
||||
download-prefix="doxa-country"
|
||||
poster-action="print"
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <country-posters-map> custom element. -->
|
||||
<script src="../country-posters.js" integrity="sha384-urEju/yDTxk2w6K/Q47C3j1Br2UfZSats0Nw7WT+GTQjgQDYmr11XCCZNDaDMfn7" crossorigin="anonymous"></script>
|
||||
<script src="../country-posters.js" integrity="sha384-CONItvVegTgNTDURbgn8e3HcQ6rHwPbFja2DEuSlzX3ZHh5S0vNc8VnnV0QSAT4j" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <country-posters-map> custom element. -->
|
||||
<script src="../country-posters.js" integrity="sha384-urEju/yDTxk2w6K/Q47C3j1Br2UfZSats0Nw7WT+GTQjgQDYmr11XCCZNDaDMfn7" crossorigin="anonymous"></script>
|
||||
<script src="../country-posters.js" integrity="sha384-CONItvVegTgNTDURbgn8e3HcQ6rHwPbFja2DEuSlzX3ZHh5S0vNc8VnnV0QSAT4j" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <country-posters-map> custom element. -->
|
||||
<script src="../country-posters.js" integrity="sha384-urEju/yDTxk2w6K/Q47C3j1Br2UfZSats0Nw7WT+GTQjgQDYmr11XCCZNDaDMfn7" crossorigin="anonymous"></script>
|
||||
<script src="../country-posters.js" integrity="sha384-CONItvVegTgNTDURbgn8e3HcQ6rHwPbFja2DEuSlzX3ZHh5S0vNc8VnnV0QSAT4j" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
198
public/doxa-maps/country-posters/country-posters.js
generated
198
public/doxa-maps/country-posters/country-posters.js
generated
File diff suppressed because one or more lines are too long
2
public/doxa-maps/index.html
generated
2
public/doxa-maps/index.html
generated
File diff suppressed because one or more lines are too long
16
public/doxa-maps/manifest.json
generated
16
public/doxa-maps/manifest.json
generated
|
|
@ -158,7 +158,7 @@
|
|||
"bundle": "country-posters",
|
||||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"output": "doxa-maps/country-posters/country-posters.js",
|
||||
"integrity": "sha384-urEju/yDTxk2w6K/Q47C3j1Br2UfZSats0Nw7WT+GTQjgQDYmr11XCCZNDaDMfn7",
|
||||
"integrity": "sha384-CONItvVegTgNTDURbgn8e3HcQ6rHwPbFja2DEuSlzX3ZHh5S0vNc8VnnV0QSAT4j",
|
||||
"elements": [
|
||||
"country-posters-map"
|
||||
],
|
||||
|
|
@ -178,7 +178,7 @@
|
|||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./country-posters/countries-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-urEju/yDTxk2w6K/Q47C3j1Br2UfZSats0Nw7WT+GTQjgQDYmr11XCCZNDaDMfn7\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"countries-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-CONItvVegTgNTDURbgn8e3HcQ6rHwPbFja2DEuSlzX3ZHh5S0vNc8VnnV0QSAT4j\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"countries-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -192,7 +192,7 @@
|
|||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./country-posters/country-poster-wall/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-urEju/yDTxk2w6K/Q47C3j1Br2UfZSats0Nw7WT+GTQjgQDYmr11XCCZNDaDMfn7\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"country-poster-wall\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-CONItvVegTgNTDURbgn8e3HcQ6rHwPbFja2DEuSlzX3ZHh5S0vNc8VnnV0QSAT4j\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"country-poster-wall\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -206,7 +206,7 @@
|
|||
"scriptUrl": "./country-posters/country-posters.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./country-posters/country-posters-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-urEju/yDTxk2w6K/Q47C3j1Br2UfZSats0Nw7WT+GTQjgQDYmr11XCCZNDaDMfn7\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"country-posters-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-CONItvVegTgNTDURbgn8e3HcQ6rHwPbFja2DEuSlzX3ZHh5S0vNc8VnnV0QSAT4j\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"country-posters-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -879,7 +879,7 @@
|
|||
"bundle": "regions-dashboard",
|
||||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"output": "doxa-maps/regions-dashboard/regions-dashboard.js",
|
||||
"integrity": "sha384-zorvkN5CO/YDU8sOPg5wlcDDL8l/apAjvwSvyrKz4t28/kZU7HFr2uAOZxpwRpRp",
|
||||
"integrity": "sha384-f0saWo0w/M5QsdVssuZErE234tQH8CRxHpAaHtQ8oSVaHGV2e3O9HCOUfP4SKg4B",
|
||||
"elements": [
|
||||
"regions-dashboard"
|
||||
],
|
||||
|
|
@ -899,7 +899,7 @@
|
|||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./regions-dashboard/region-dashboards/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-zorvkN5CO/YDU8sOPg5wlcDDL8l/apAjvwSvyrKz4t28/kZU7HFr2uAOZxpwRpRp\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-f0saWo0w/M5QsdVssuZErE234tQH8CRxHpAaHtQ8oSVaHGV2e3O9HCOUfP4SKg4B\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -913,7 +913,7 @@
|
|||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./regions-dashboard/regions-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-zorvkN5CO/YDU8sOPg5wlcDDL8l/apAjvwSvyrKz4t28/kZU7HFr2uAOZxpwRpRp\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-f0saWo0w/M5QsdVssuZErE234tQH8CRxHpAaHtQ8oSVaHGV2e3O9HCOUfP4SKg4B\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -927,7 +927,7 @@
|
|||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./regions-dashboard/regions-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-zorvkN5CO/YDU8sOPg5wlcDDL8l/apAjvwSvyrKz4t28/kZU7HFr2uAOZxpwRpRp\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-f0saWo0w/M5QsdVssuZErE234tQH8CRxHpAaHtQ8oSVaHGV2e3O9HCOUfP4SKg4B\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <regions-dashboard> custom element. -->
|
||||
<script src="../regions-dashboard.js" integrity="sha384-zorvkN5CO/YDU8sOPg5wlcDDL8l/apAjvwSvyrKz4t28/kZU7HFr2uAOZxpwRpRp" crossorigin="anonymous"></script>
|
||||
<script src="../regions-dashboard.js" integrity="sha384-f0saWo0w/M5QsdVssuZErE234tQH8CRxHpAaHtQ8oSVaHGV2e3O9HCOUfP4SKg4B" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
142
public/doxa-maps/regions-dashboard/regions-dashboard.js
generated
142
public/doxa-maps/regions-dashboard/regions-dashboard.js
generated
File diff suppressed because one or more lines are too long
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <regions-dashboard> custom element. -->
|
||||
<script src="../regions-dashboard.js" integrity="sha384-zorvkN5CO/YDU8sOPg5wlcDDL8l/apAjvwSvyrKz4t28/kZU7HFr2uAOZxpwRpRp" crossorigin="anonymous"></script>
|
||||
<script src="../regions-dashboard.js" integrity="sha384-f0saWo0w/M5QsdVssuZErE234tQH8CRxHpAaHtQ8oSVaHGV2e3O9HCOUfP4SKg4B" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <regions-dashboard> custom element. -->
|
||||
<script src="../regions-dashboard.js" integrity="sha384-zorvkN5CO/YDU8sOPg5wlcDDL8l/apAjvwSvyrKz4t28/kZU7HFr2uAOZxpwRpRp" crossorigin="anonymous"></script>
|
||||
<script src="../regions-dashboard.js" integrity="sha384-f0saWo0w/M5QsdVssuZErE234tQH8CRxHpAaHtQ8oSVaHGV2e3O9HCOUfP4SKg4B" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
Loading…
Reference in a new issue