@abi-software/map-side-bar 2.14.2 → 2.14.3-demo.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/map-side-bar.js +771 -725
- package/dist/map-side-bar.umd.cjs +25 -18
- package/dist/style.css +1 -1
- package/package.json +2 -2
- package/src/components/ConnectivityInfo.vue +126 -29
- package/src/components/SideBar.vue +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abi-software/map-side-bar",
|
|
3
|
-
"version": "2.14.
|
|
3
|
+
"version": "2.14.3-demo.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"@abi-software/gallery": "1.3.0",
|
|
47
|
-
"@abi-software/map-utilities": "1.8.
|
|
47
|
+
"@abi-software/map-utilities": "^1.8.2-demo.0",
|
|
48
48
|
"@abi-software/svg-sprite": "^1.0.2",
|
|
49
49
|
"@element-plus/icons-vue": "^2.3.1",
|
|
50
50
|
"algoliasearch": "^4.10.5",
|
|
@@ -12,21 +12,6 @@
|
|
|
12
12
|
@click="toggleTitleExpansion"
|
|
13
13
|
>
|
|
14
14
|
<span>{{ capitalise(displayTitle) }}</span>
|
|
15
|
-
<template v-if="entry.featuresAlert">
|
|
16
|
-
<el-popover
|
|
17
|
-
width="250"
|
|
18
|
-
trigger="hover"
|
|
19
|
-
:teleported="false"
|
|
20
|
-
popper-class="popover-origin-help"
|
|
21
|
-
>
|
|
22
|
-
<template #reference>
|
|
23
|
-
<el-icon class="alert"><el-icon-warn-triangle-filled /></el-icon>
|
|
24
|
-
</template>
|
|
25
|
-
<span style="word-break: keep-all">
|
|
26
|
-
{{ entry.featuresAlert }}
|
|
27
|
-
</span>
|
|
28
|
-
</el-popover>
|
|
29
|
-
</template>
|
|
30
15
|
</div>
|
|
31
16
|
<button
|
|
32
17
|
v-if="showTitleToggle"
|
|
@@ -41,7 +26,19 @@
|
|
|
41
26
|
</el-icon>
|
|
42
27
|
</button>
|
|
43
28
|
</div>
|
|
44
|
-
<div class="subtitle"
|
|
29
|
+
<div class="subtitle">
|
|
30
|
+
<strong>Id: </strong>{{ entry.featureId[0] }}
|
|
31
|
+
<el-button
|
|
32
|
+
round
|
|
33
|
+
size="small"
|
|
34
|
+
class="alert-chip"
|
|
35
|
+
@click="showAlertMessage"
|
|
36
|
+
v-if="entry.featuresAlert"
|
|
37
|
+
>
|
|
38
|
+
<el-icon class="alert"><el-icon-warn-triangle-filled /></el-icon>
|
|
39
|
+
Notes
|
|
40
|
+
</el-button>
|
|
41
|
+
</div>
|
|
45
42
|
<div v-if="hasProvenanceTaxonomyLabel" class="subtitle">
|
|
46
43
|
{{ provSpeciesDescription }}
|
|
47
44
|
</div>
|
|
@@ -290,6 +287,22 @@
|
|
|
290
287
|
@trackEvent="onTrackEvent"
|
|
291
288
|
/>
|
|
292
289
|
</div>
|
|
290
|
+
|
|
291
|
+
<div
|
|
292
|
+
ref="alertElement"
|
|
293
|
+
class="content-container content-container-alert"
|
|
294
|
+
v-if="entry.featuresAlert"
|
|
295
|
+
>
|
|
296
|
+
<div class="block attribute-title-container">
|
|
297
|
+
<span class="attribute-title">Notes</span>
|
|
298
|
+
</div>
|
|
299
|
+
<div class="block">
|
|
300
|
+
<div class="alert-block"
|
|
301
|
+
v-for="alert in entry.featuresAlert"
|
|
302
|
+
v-html="formatAlertText(alert)"
|
|
303
|
+
></div>
|
|
304
|
+
</div>
|
|
305
|
+
</div>
|
|
293
306
|
</div>
|
|
294
307
|
</template>
|
|
295
308
|
|
|
@@ -785,6 +798,14 @@ export default {
|
|
|
785
798
|
contentArray.push(contentString);
|
|
786
799
|
}
|
|
787
800
|
|
|
801
|
+
// Alert (Notes)
|
|
802
|
+
if (this.entry.featuresAlert) {
|
|
803
|
+
const alertContent = this.entry.featuresAlert
|
|
804
|
+
.map((alert) => this.formatAlertText(alert))
|
|
805
|
+
.join('\n');
|
|
806
|
+
contentArray.push(`<div><strong>Notes</strong></div>\n${alertContent}`);
|
|
807
|
+
}
|
|
808
|
+
|
|
788
809
|
return contentArray.join('\n\n<br>');
|
|
789
810
|
},
|
|
790
811
|
getConnectivityDatasets: function (label) {
|
|
@@ -911,6 +932,51 @@ export default {
|
|
|
911
932
|
onTrackEvent: function (data) {
|
|
912
933
|
EventBus.emit('trackEvent', data);
|
|
913
934
|
},
|
|
935
|
+
showAlertMessage: function () {
|
|
936
|
+
// scroll to alert message
|
|
937
|
+
this.$nextTick(() => {
|
|
938
|
+
const alertElement = this.$refs.alertElement;
|
|
939
|
+
if (alertElement) {
|
|
940
|
+
alertElement.scrollIntoView({
|
|
941
|
+
behavior: 'smooth',
|
|
942
|
+
block: 'start',
|
|
943
|
+
inline: 'nearest',
|
|
944
|
+
});
|
|
945
|
+
}
|
|
946
|
+
});
|
|
947
|
+
},
|
|
948
|
+
formatAlertText: function (text) {
|
|
949
|
+
if (!text) return '';
|
|
950
|
+
const escaped = text
|
|
951
|
+
.replace(/&/g, '&')
|
|
952
|
+
.replace(/</g, '<')
|
|
953
|
+
.replace(/>/g, '>');
|
|
954
|
+
const linkified = escaped.replace(
|
|
955
|
+
/(https?:\/\/[^\s"<>\[]+)/g,
|
|
956
|
+
(url) => {
|
|
957
|
+
const parts = url.match(/^(.*?)([\].,;:!?]*)$/);
|
|
958
|
+
const cleanUrl = parts ? parts[1] : url;
|
|
959
|
+
const suffix = parts ? parts[2] : '';
|
|
960
|
+
return `<a href="${cleanUrl}" target="_blank" rel="noopener noreferrer">${cleanUrl}</a>${suffix}`;
|
|
961
|
+
}
|
|
962
|
+
);
|
|
963
|
+
|
|
964
|
+
const normalised = linkified
|
|
965
|
+
.replace(/\\n/g, '\n')
|
|
966
|
+
.replace(/\r\n/g, '\n')
|
|
967
|
+
.replace(/\r/g, '\n');
|
|
968
|
+
|
|
969
|
+
return normalised
|
|
970
|
+
.split('\n')
|
|
971
|
+
.map((line) => {
|
|
972
|
+
const withBoldLabel = line.replace(
|
|
973
|
+
/^\s*([A-Za-z][^:<]{0,120}:)/,
|
|
974
|
+
'<strong>$1</strong>'
|
|
975
|
+
);
|
|
976
|
+
return `<div class="alert-line">${withBoldLabel}</div>`;
|
|
977
|
+
})
|
|
978
|
+
.join('\n');
|
|
979
|
+
},
|
|
914
980
|
},
|
|
915
981
|
mounted: function () {
|
|
916
982
|
this.updatedCopyContent = this.getUpdateCopyContent();
|
|
@@ -1089,15 +1155,6 @@ export default {
|
|
|
1089
1155
|
text-transform: uppercase;
|
|
1090
1156
|
}
|
|
1091
1157
|
|
|
1092
|
-
.main {
|
|
1093
|
-
.el-button.is-round {
|
|
1094
|
-
border-radius: 4px;
|
|
1095
|
-
padding: 9px 20px 10px 20px;
|
|
1096
|
-
display: flex;
|
|
1097
|
-
height: 36px;
|
|
1098
|
-
}
|
|
1099
|
-
}
|
|
1100
|
-
|
|
1101
1158
|
.button {
|
|
1102
1159
|
margin-left: 0px !important;
|
|
1103
1160
|
margin-top: 0px !important;
|
|
@@ -1420,10 +1477,6 @@ export default {
|
|
|
1420
1477
|
|
|
1421
1478
|
.content-container-connectivity {
|
|
1422
1479
|
position: relative;
|
|
1423
|
-
|
|
1424
|
-
&:not([style*="display: none"]) ~ .content-container-references {
|
|
1425
|
-
margin-top: -1.25rem;
|
|
1426
|
-
}
|
|
1427
1480
|
}
|
|
1428
1481
|
|
|
1429
1482
|
.attribute-content {
|
|
@@ -1467,4 +1520,48 @@ export default {
|
|
|
1467
1520
|
margin-bottom: 0.5em;
|
|
1468
1521
|
}
|
|
1469
1522
|
}
|
|
1523
|
+
|
|
1524
|
+
.alert-block {
|
|
1525
|
+
background-color: var(--el-color-warning-light-9);
|
|
1526
|
+
border: 1px dashed var(--el-color-warning);
|
|
1527
|
+
padding: 0.75rem;
|
|
1528
|
+
border-radius: 4px;
|
|
1529
|
+
|
|
1530
|
+
:deep(.alert-line + .alert-line) {
|
|
1531
|
+
margin-top: 0.5rem;
|
|
1532
|
+
}
|
|
1533
|
+
|
|
1534
|
+
:deep(a) {
|
|
1535
|
+
color: $app-primary-color;
|
|
1536
|
+
word-break: break-all;
|
|
1537
|
+
|
|
1538
|
+
&:hover {
|
|
1539
|
+
opacity: 0.8;
|
|
1540
|
+
}
|
|
1541
|
+
}
|
|
1542
|
+
}
|
|
1543
|
+
|
|
1544
|
+
.alert-chip {
|
|
1545
|
+
margin-left: 5px;
|
|
1546
|
+
background-color: $app-primary-color;
|
|
1547
|
+
border-color: $app-primary-color;
|
|
1548
|
+
color: #fff;
|
|
1549
|
+
|
|
1550
|
+
&:hover {
|
|
1551
|
+
color: #fff !important;
|
|
1552
|
+
background-color: #ac76c5 !important;
|
|
1553
|
+
border: 1px solid #ac76c5 !important;
|
|
1554
|
+
}
|
|
1555
|
+
|
|
1556
|
+
:deep(> span) {
|
|
1557
|
+
gap: 2px;
|
|
1558
|
+
}
|
|
1559
|
+
|
|
1560
|
+
.alert {
|
|
1561
|
+
width: 1rem;
|
|
1562
|
+
height: 1rem;
|
|
1563
|
+
color: inherit;
|
|
1564
|
+
margin: 0;
|
|
1565
|
+
}
|
|
1566
|
+
}
|
|
1470
1567
|
</style>
|
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
:connectivityEntry="connectivityEntry"
|
|
54
54
|
:availableAnatomyFacets="availableAnatomyFacets"
|
|
55
55
|
:showLongLabel="showLongLabel"
|
|
56
|
-
@filter-visibility="$emit('filter-visibility', $event)"
|
|
57
56
|
:connectivityFilterOptions="filterOptions"
|
|
57
|
+
@filter-visibility="$emit('filter-visibility', $event)"
|
|
58
58
|
:showVisibilityFilter="showVisibilityFilter"
|
|
59
59
|
@search-changed="searchChanged(tab.id, $event)"
|
|
60
60
|
@hover-changed="hoverChanged(tab.id, $event)"
|