@abi-software/flatmapvuer 0.5.7-alpha → 0.5.7

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.
Files changed (37) hide show
  1. package/CHANGELOG.md +399 -385
  2. package/LICENSE +201 -201
  3. package/README.md +105 -105
  4. package/babel.config.js +14 -14
  5. package/dist/flatmapvuer.common.js +190 -173
  6. package/dist/flatmapvuer.common.js.map +1 -1
  7. package/dist/flatmapvuer.css +1 -1
  8. package/dist/flatmapvuer.umd.js +190 -173
  9. package/dist/flatmapvuer.umd.js.map +1 -1
  10. package/dist/flatmapvuer.umd.min.js +2 -2
  11. package/dist/flatmapvuer.umd.min.js.map +1 -1
  12. package/package-lock.json +14399 -14390
  13. package/package.json +78 -78
  14. package/public/index.html +17 -17
  15. package/src/App.vue +226 -226
  16. package/src/assets/_variables.scss +43 -43
  17. package/src/assets/styles.scss +7 -7
  18. package/src/components/EventBus.js +2 -2
  19. package/src/components/ExternalResourceCard.vue +98 -98
  20. package/src/components/FlatmapVuer.vue +1841 -1837
  21. package/src/components/MultiFlatmapVuer.vue +529 -523
  22. package/src/components/SelectionsGroup.vue +249 -249
  23. package/src/components/Tooltip.vue +417 -422
  24. package/src/components/TreeControls.vue +231 -231
  25. package/src/components/index.js +9 -9
  26. package/src/components/legends/DynamicLegends.vue +112 -112
  27. package/src/components/legends/SvgLegends.vue +66 -66
  28. package/src/icons/fonts/mapicon-species.eot +0 -0
  29. package/src/icons/fonts/mapicon-species.svg +14 -14
  30. package/src/icons/fonts/mapicon-species.ttf +0 -0
  31. package/src/icons/fonts/mapicon-species.woff +0 -0
  32. package/src/icons/mapicon-species-style.css +42 -42
  33. package/src/legends/legend.svg +25 -25
  34. package/src/main.js +8 -8
  35. package/src/services/flatmapQueries.js +415 -420
  36. package/vue.config.js +31 -31
  37. package/src/nerve-map.js +0 -99
@@ -1,422 +1,417 @@
1
- <template>
2
- <div class="tooltip-container">
3
- <el-main v-if="entry" class="main" v-loading="loading">
4
- <div class="block" v-if="entry.title">
5
- <span class="title">{{capitalise(entry.title)}}</span>
6
- <div v-if="entry.provenanceTaxonomyLabel && entry.provenanceTaxonomyLabel.length > 0" class="subtitle">
7
- {{provSpeciesDescription}}
8
- </div>
9
- </div>
10
- <div class="block" v-else>
11
- <span class="title">{{entry.featureId}}</span>
12
- </div>
13
- <div class="content-container scrollbar">
14
- {{entry.paths}}
15
- <div v-if="entry.origins && entry.origins.length > 0" class="block">
16
- <div>
17
- <span class="attribute-title">Origin</span>
18
- <el-popover
19
- width="250"
20
- trigger="hover"
21
- :append-to-body=false
22
- popper-class="popover-origin-help"
23
- >
24
- <i slot="reference" class="el-icon-warning-outline info"/>
25
- <span style="word-break: keep-all;">
26
- <i>Origin</i> {{originDescription}}
27
- </span>
28
- </el-popover>
29
- </div>
30
- <div v-for="(origin, i) in entry.origins" class="attribute-content" :key="origin">
31
- {{ capitalise(origin) }}
32
- <div v-if="i != entry.origins.length - 1" class="seperator"></div>
33
- </div>
34
- <el-button v-show="entry.originsWithDatasets && entry.originsWithDatasets.length > 0" class="button" @click="openDendrites">
35
- Explore origin data
36
- </el-button>
37
- </div>
38
- <div v-if="entry.components && entry.components.length > 0" class="block">
39
- <div class="attribute-title">Components</div>
40
- <div v-for="(component, i) in entry.components" class="attribute-content" :key="component">
41
- {{ capitalise(component) }}
42
- <div v-if="i != entry.components.length - 1" class="seperator"></div>
43
- </div>
44
- </div>
45
- <div v-if="entry.destinations && entry.destinations.length > 0" class="block">
46
- <div>
47
- <span class="attribute-title">Destination</span>
48
- <el-popover
49
- width="250"
50
- trigger="hover"
51
- :append-to-body=false
52
- popper-class="popover-origin-help"
53
- >
54
- <i slot="reference" class="el-icon-warning-outline info"/>
55
- <span style="word-break: keep-all;">
56
- <i>Destination</i> is where the axons terminate
57
- </span>
58
- </el-popover>
59
- </div>
60
- <div v-for="(destination, i) in entry.destinations" class="attribute-content" :key="destination">
61
- {{ capitalise(destination) }}
62
- <div v-if="i != entry.destinations.length - 1" class="seperator"></div>
63
- </div>
64
- <el-button v-show="entry.destinationsWithDatasets && entry.destinationsWithDatasets.length > 0" class="button" @click="openAxons">
65
- Explore destination data
66
- </el-button>
67
- </div>
68
-
69
- <el-button v-show="entry.componentsWithDatasets && entry.componentsWithDatasets.length > 0" class="button" @click="openAll">
70
- Search for data on components
71
- </el-button>
72
-
73
- <external-resource-card :resources="resources"></external-resource-card>
74
-
75
- </div>
76
- </el-main>
77
- </div>
78
- </template>
79
-
80
-
81
- <script>
82
- /* eslint-disable no-alert, no-console */
83
- import Vue from "vue";
84
- import {
85
- Button,
86
- Container,
87
- Header,
88
- Icon,
89
- Main
90
- } from "element-ui";
91
- import lang from "element-ui/lib/locale/lang/en";
92
- import locale from "element-ui/lib/locale";
93
- locale.use(lang);
94
- Vue.use(Button);
95
- Vue.use(Container);
96
- Vue.use(Header);
97
- Vue.use(Icon);
98
- Vue.use(Main);
99
-
100
- import EventBus from './EventBus'
101
- import ExternalResourceCard from './ExternalResourceCard.vue';
102
-
103
- const titleCase = (str) => {
104
- return str.replace(/\w\S*/g, (t) => { return t.charAt(0).toUpperCase() + t.substr(1).toLowerCase() });
105
- }
106
-
107
- const capitalise = function(str){
108
- if (str)
109
- return str.charAt(0).toUpperCase() + str.slice(1)
110
- return ""
111
- }
112
-
113
- export default {
114
- components: { ExternalResourceCard },
115
- name: "Tooltip",
116
- props: {
117
- visible: {
118
- type: Boolean,
119
- default: false
120
- },
121
- entry: {
122
- type: Object,
123
- default: () => ({
124
- destinations: [],
125
- origins: [],
126
- components: [],
127
- destinationsWithDatasets: [],
128
- originsWithDatasets: [],
129
- componentsWithDatasets: [],
130
- resource: undefined
131
- })
132
- },
133
- },
134
- data: function() {
135
- return {
136
- controller: undefined,
137
- activeSpecies: undefined,
138
- appendToBody: false,
139
- pubmedSearchUrl: '',
140
- loading: false,
141
- showToolip: false,
142
- destinations: [],
143
- origins: [],
144
- components: [],
145
- destinationsWithDatasets: [],
146
- originsWithDatasets: [],
147
- originDescriptions: {
148
- 'motor': 'is the location of the initial cell body of the circuit',
149
- 'sensory': 'is the location of the initial cell body in the PNS circuit'
150
- },
151
- componentsWithDatasets: [],
152
- uberons: [{id: undefined, name: undefined}]
153
- };
154
- },
155
- computed: {
156
- resources: function(){
157
- let resources = []
158
- if(this.entry && this.entry.hyperlinks){
159
- resources = this.entry.hyperlinks
160
- }
161
- return resources
162
- },
163
- originDescription: function(){
164
- if(this.entry && this.entry.title && this.entry.title.toLowerCase().includes('motor')){
165
- return this.originDescriptions.motor
166
- } else {
167
- return this.originDescriptions.sensory
168
- }
169
- },
170
- provSpeciesDescription: function(){
171
- let text = "Observed in"
172
- this.entry.provenanceTaxonomyLabel.forEach(label => {
173
- text += ` ${label},`
174
- });
175
- text = text.slice(0,-1) // remove last comma
176
- text += " species"
177
- return text
178
- }
179
- },
180
- methods: {
181
- titleCase: function(title){
182
- return titleCase(title)
183
- },
184
- capitalise: function(text){
185
- return capitalise(text)
186
- },
187
- onClose: function() {
188
- this.$emit("onClose")
189
- },
190
- openUrl: function(url){
191
- window.open(url, '_blank')
192
- },
193
- openAll: function(){
194
- EventBus.$emit('onActionClick', {type:'Facets', labels: this.componentsWithDatasets.map(a=>a.name)})
195
- },
196
- openAxons: function(){
197
- EventBus.$emit('onActionClick', {type:'Facets', labels: this.destinationsWithDatasets.map(a=>a.name)})
198
- },
199
- openDendrites: function(){
200
- EventBus.$emit('onActionClick', {type:'Facets', labels: this.originsWithDatasets.map(a=>a.name)})
201
- },
202
- pubmedSearchUrlUpdate: function (val){
203
- this.pubmedSearchUrl = val
204
- },
205
- }
206
- };
207
- </script>
208
-
209
- <style scoped lang="scss">
210
- @import "~element-ui/packages/theme-chalk/src/button";
211
- @import "~element-ui/packages/theme-chalk/src/container";
212
- @import "~element-ui/packages/theme-chalk/src/header";
213
- @import "~element-ui/packages/theme-chalk/src/main";
214
-
215
- .tooltip-container {
216
- text-align:justify;
217
- border-radius: 4px;
218
- box-shadow: 0 1px 2px rgba(0,0,0,.1);
219
- pointer-events: auto;
220
- background: #fff;
221
- border: 1px solid $app-primary-color;
222
- display: flex;
223
- justify-content: center;
224
- align-items: center;
225
- }
226
-
227
- .display {
228
- width: 44px;
229
- word-break: normal;
230
- }
231
-
232
- .title {
233
- text-align: left;
234
- width: 16em;
235
- line-height: 1.5em !important;
236
- font-size: 1em;
237
- font-family: Helvetica;
238
- font-weight: 500;
239
- /* font-weight: bold; */
240
- padding-bottom: 8px;
241
- }
242
-
243
- .block {
244
- margin-bottom: 1.5em;
245
- }
246
-
247
- .pub {
248
- width: 16rem;
249
- }
250
-
251
- .icon {
252
- right: 0px;
253
- position: absolute;
254
- top: 10px;
255
- }
256
-
257
- .icon:hover {
258
- cursor: pointer;
259
- }
260
-
261
- .popover-origin-help {
262
- text-transform: none !important; // need to overide the tooltip text transform
263
- }
264
-
265
- .info{
266
- transform: rotate(180deg);
267
- color: #8300bf;
268
- margin-left: 8px;
269
- }
270
-
271
- .seperator {
272
- width:90%;
273
- height:1px;
274
- background-color:#bfbec2;
275
- }
276
-
277
- .main {
278
- font-size: 14px;
279
- text-align: left;
280
- line-height: 1.5em;
281
- font-family: Helvetica;
282
- font-weight: 400;
283
- /* outline: thin red solid; */
284
- padding: 1em !important;
285
- overflow: hidden;
286
- min-width: 16rem;
287
- }
288
-
289
- .title{
290
- font-size: 18px;
291
- font-weight: 500;
292
- font-weight: bold;
293
- padding-bottom: 8px;
294
- color: rgb(131, 0, 191);
295
-
296
- }
297
-
298
- .attribute-title{
299
- font-size: 16px;
300
- font-weight: 600;
301
- /* font-weight: bold; */
302
- text-transform: uppercase;
303
- }
304
-
305
- .attribute-content{
306
- font-size: 14px;
307
- font-weight: 500;
308
- }
309
-
310
- .popover-container {
311
- height: 100%;
312
- width: 100%;
313
- }
314
-
315
- .main {
316
- .el-button.is-round{
317
- border-radius: 4px;
318
- padding: 9px 20px 10px 20px;
319
- display: flex;
320
- height: 36px;
321
- }
322
- }
323
-
324
- .button {
325
- margin-left: 0px !important;
326
- margin-top: 0px !important;
327
- font-size: 14px !important;
328
- background-color: $app-primary-color;
329
- color: #fff;
330
- &+.button {
331
- margin-top: 10px !important;
332
- }
333
- &:hover {
334
- color: #fff !important;
335
- background: #ac76c5 !important;
336
- border: 1px solid #ac76c5 !important;
337
- }
338
- }
339
-
340
- .tooltip-container{
341
- &::after, &::before {
342
- content: '';
343
- display: block;
344
- position: absolute;
345
- width: 0;
346
- height: 0;
347
- border-style: solid;
348
- flex-shrink: 0;
349
- }
350
- .tooltip {
351
- &::after {
352
- display: none;
353
- }
354
- &::before {
355
- display: none;
356
- }
357
- }
358
- }
359
-
360
- .maplibregl-popup-anchor-bottom {
361
- .tooltip-container {
362
- &::after, &::before {
363
- top: 100%;
364
- border-width: 12px;
365
- }
366
- &::after {
367
- margin-top:-1px;
368
- border-color: rgb(255, 255, 255) transparent transparent transparent ;
369
- }
370
- &::before {
371
- margin: 0 auto;
372
- border-color: $app-primary-color transparent transparent transparent ;
373
- }
374
- }
375
- }
376
-
377
- .maplibregl-popup-anchor-top {
378
- .tooltip-container {
379
- &::after, &::before {
380
- top: -24px;
381
- border-width: 12px;
382
- }
383
- &::after {
384
- margin-top: 1px;
385
- border-color: transparent transparent rgb(255, 255, 255) transparent ;
386
- }
387
- &::before {
388
- margin: 0 auto;
389
- border-color: transparent transparent $app-primary-color transparent ;
390
- }
391
- }
392
- }
393
-
394
- .content-container {
395
- overflow-y: scroll;
396
- scrollbar-width: thin !important;
397
- max-height: 240px;
398
- }
399
-
400
- .scrollbar::-webkit-scrollbar-track {
401
- border-radius: 10px;
402
- background-color: #f5f5f5;
403
- }
404
-
405
- .scrollbar::-webkit-scrollbar {
406
- width: 12px;
407
- right: -12px;
408
- background-color: #f5f5f5;
409
- }
410
-
411
- .scrollbar::-webkit-scrollbar-thumb {
412
- border-radius: 4px;
413
- box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.06);
414
- background-color: #979797;
415
- }
416
-
417
-
418
- /* Fix for chrome bug where under triangle pops up above one on top of it */
419
- .selector:not(*:root), .tooltip-container::after{
420
- top: 99.4%;
421
- }
422
- </style>
1
+ <template>
2
+ <div class="tooltip-container">
3
+ <el-main v-if="entry" class="main" v-loading="loading">
4
+ <div class="block" v-if="entry.title">
5
+ <span class="title">{{capitalise(entry.title)}}</span>
6
+ <div v-if="entry.provenanceTaxonomyLabel && entry.provenanceTaxonomyLabel.length > 0" class="subtitle">
7
+ {{provSpeciesDescription}}
8
+ </div>
9
+ </div>
10
+ <div class="block" v-else>
11
+ <span class="title">{{entry.featureId}}</span>
12
+ </div>
13
+ <div class="content-container scrollbar">
14
+ {{entry.paths}}
15
+ <div v-if="entry.origins && entry.origins.length > 0" class="block">
16
+ <div>
17
+ <span class="attribute-title">Origin</span>
18
+ <el-popover
19
+ width="250"
20
+ trigger="hover"
21
+ :append-to-body=false
22
+ popper-class="popover-origin-help"
23
+ >
24
+ <i slot="reference" class="el-icon-warning-outline info"/>
25
+ <span style="word-break: keep-all;">
26
+ <i>Origin</i> {{originDescription}}
27
+ </span>
28
+ </el-popover>
29
+ </div>
30
+ <div v-for="(origin, i) in entry.origins" class="attribute-content" :key="origin">
31
+ {{ capitalise(origin) }}
32
+ <div v-if="i != entry.origins.length - 1" class="seperator"></div>
33
+ </div>
34
+ <el-button v-show="entry.originsWithDatasets && entry.originsWithDatasets.length > 0" class="button" @click="openDendrites">
35
+ Explore origin data
36
+ </el-button>
37
+ </div>
38
+ <div v-if="entry.components && entry.components.length > 0" class="block">
39
+ <div class="attribute-title">Components</div>
40
+ <div v-for="(component, i) in entry.components" class="attribute-content" :key="component">
41
+ {{ capitalise(component) }}
42
+ <div v-if="i != entry.components.length - 1" class="seperator"></div>
43
+ </div>
44
+ </div>
45
+ <div v-if="entry.destinations && entry.destinations.length > 0" class="block">
46
+ <div>
47
+ <span class="attribute-title">Destination</span>
48
+ <el-popover
49
+ width="250"
50
+ trigger="hover"
51
+ :append-to-body=false
52
+ popper-class="popover-origin-help"
53
+ >
54
+ <i slot="reference" class="el-icon-warning-outline info"/>
55
+ <span style="word-break: keep-all;">
56
+ <i>Destination</i> is where the axons terminate
57
+ </span>
58
+ </el-popover>
59
+ </div>
60
+ <div v-for="(destination, i) in entry.destinations" class="attribute-content" :key="destination">
61
+ {{ capitalise(destination) }}
62
+ <div v-if="i != entry.destinations.length - 1" class="seperator"></div>
63
+ </div>
64
+ <el-button v-show="entry.destinationsWithDatasets && entry.destinationsWithDatasets.length > 0" class="button" @click="openAxons">
65
+ Explore destination data
66
+ </el-button>
67
+ </div>
68
+
69
+ <el-button v-show="entry.componentsWithDatasets && entry.componentsWithDatasets.length > 0" class="button" @click="openAll">
70
+ Search for data on components
71
+ </el-button>
72
+
73
+ <external-resource-card :resources="resources"></external-resource-card>
74
+
75
+ </div>
76
+ </el-main>
77
+ </div>
78
+ </template>
79
+
80
+
81
+ <script>
82
+ /* eslint-disable no-alert, no-console */
83
+ import Vue from "vue";
84
+ import {
85
+ Button,
86
+ Container,
87
+ Header,
88
+ Icon,
89
+ Main
90
+ } from "element-ui";
91
+ import lang from "element-ui/lib/locale/lang/en";
92
+ import locale from "element-ui/lib/locale";
93
+ locale.use(lang);
94
+ Vue.use(Button);
95
+ Vue.use(Container);
96
+ Vue.use(Header);
97
+ Vue.use(Icon);
98
+ Vue.use(Main);
99
+
100
+ import EventBus from './EventBus'
101
+ import ExternalResourceCard from './ExternalResourceCard.vue';
102
+
103
+ const titleCase = (str) => {
104
+ return str.replace(/\w\S*/g, (t) => { return t.charAt(0).toUpperCase() + t.substr(1).toLowerCase() });
105
+ }
106
+
107
+ const capitalise = function(str){
108
+ if (str)
109
+ return str.charAt(0).toUpperCase() + str.slice(1)
110
+ return ""
111
+ }
112
+
113
+ export default {
114
+ components: { ExternalResourceCard },
115
+ name: "Tooltip",
116
+ props: {
117
+ visible: {
118
+ type: Boolean,
119
+ default: false
120
+ },
121
+ entry: {
122
+ type: Object,
123
+ default: () => ({
124
+ destinations: [],
125
+ origins: [],
126
+ components: [],
127
+ destinationsWithDatasets: [],
128
+ originsWithDatasets: [],
129
+ componentsWithDatasets: [],
130
+ resource: undefined
131
+ })
132
+ },
133
+ },
134
+ data: function() {
135
+ return {
136
+ controller: undefined,
137
+ activeSpecies: undefined,
138
+ appendToBody: false,
139
+ pubmedSearchUrl: '',
140
+ loading: false,
141
+ showToolip: false,
142
+ originDescriptions: {
143
+ 'motor': 'is the location of the initial cell body of the circuit',
144
+ 'sensory': 'is the location of the initial cell body in the PNS circuit'
145
+ },
146
+ componentsWithDatasets: [],
147
+ uberons: [{id: undefined, name: undefined}]
148
+ };
149
+ },
150
+ computed: {
151
+ resources: function(){
152
+ let resources = []
153
+ if(this.entry && this.entry.hyperlinks){
154
+ resources = this.entry.hyperlinks
155
+ }
156
+ return resources
157
+ },
158
+ originDescription: function(){
159
+ if(this.entry && this.entry.title && this.entry.title.toLowerCase().includes('motor')){
160
+ return this.originDescriptions.motor
161
+ } else {
162
+ return this.originDescriptions.sensory
163
+ }
164
+ },
165
+ provSpeciesDescription: function(){
166
+ let text = "Observed in"
167
+ this.entry.provenanceTaxonomyLabel.forEach(label => {
168
+ text += ` ${label},`
169
+ });
170
+ text = text.slice(0,-1) // remove last comma
171
+ text += " species"
172
+ return text
173
+ }
174
+ },
175
+ methods: {
176
+ titleCase: function(title){
177
+ return titleCase(title)
178
+ },
179
+ capitalise: function(text){
180
+ return capitalise(text)
181
+ },
182
+ onClose: function() {
183
+ this.$emit("onClose")
184
+ },
185
+ openUrl: function(url){
186
+ window.open(url, '_blank')
187
+ },
188
+ openAll: function(){
189
+ EventBus.$emit('onActionClick', {type:'Facets', labels: this.entry.componentsWithDatasets.map(a=>a.name)})
190
+ },
191
+ openAxons: function(){
192
+ EventBus.$emit('onActionClick', {type:'Facets', labels: this.entry.destinationsWithDatasets.map(a=>a.name)})
193
+ },
194
+ openDendrites: function(){
195
+ EventBus.$emit('onActionClick', {type:'Facets', labels: this.entry.originsWithDatasets.map(a=>a.name)})
196
+ },
197
+ pubmedSearchUrlUpdate: function (val){
198
+ this.pubmedSearchUrl = val
199
+ },
200
+ }
201
+ };
202
+ </script>
203
+
204
+ <style scoped lang="scss">
205
+ @import "~element-ui/packages/theme-chalk/src/button";
206
+ @import "~element-ui/packages/theme-chalk/src/container";
207
+ @import "~element-ui/packages/theme-chalk/src/header";
208
+ @import "~element-ui/packages/theme-chalk/src/main";
209
+
210
+ .tooltip-container {
211
+ text-align:justify;
212
+ border-radius: 4px;
213
+ box-shadow: 0 1px 2px rgba(0,0,0,.1);
214
+ pointer-events: auto;
215
+ background: #fff;
216
+ border: 1px solid $app-primary-color;
217
+ display: flex;
218
+ justify-content: center;
219
+ align-items: center;
220
+ }
221
+
222
+ .display {
223
+ width: 44px;
224
+ word-break: normal;
225
+ }
226
+
227
+ .title {
228
+ text-align: left;
229
+ width: 16em;
230
+ line-height: 1.5em !important;
231
+ font-size: 1em;
232
+ font-family: Helvetica;
233
+ font-weight: 500;
234
+ /* font-weight: bold; */
235
+ padding-bottom: 8px;
236
+ }
237
+
238
+ .block {
239
+ margin-bottom: 1.5em;
240
+ }
241
+
242
+ .pub {
243
+ width: 16rem;
244
+ }
245
+
246
+ .icon {
247
+ right: 0px;
248
+ position: absolute;
249
+ top: 10px;
250
+ }
251
+
252
+ .icon:hover {
253
+ cursor: pointer;
254
+ }
255
+
256
+ .popover-origin-help {
257
+ text-transform: none !important; // need to overide the tooltip text transform
258
+ }
259
+
260
+ .info{
261
+ transform: rotate(180deg);
262
+ color: #8300bf;
263
+ margin-left: 8px;
264
+ }
265
+
266
+ .seperator {
267
+ width:90%;
268
+ height:1px;
269
+ background-color:#bfbec2;
270
+ }
271
+
272
+ .main {
273
+ font-size: 14px;
274
+ text-align: left;
275
+ line-height: 1.5em;
276
+ font-family: Helvetica;
277
+ font-weight: 400;
278
+ /* outline: thin red solid; */
279
+ padding: 1em !important;
280
+ overflow: hidden;
281
+ min-width: 16rem;
282
+ }
283
+
284
+ .title{
285
+ font-size: 18px;
286
+ font-weight: 500;
287
+ font-weight: bold;
288
+ padding-bottom: 8px;
289
+ color: rgb(131, 0, 191);
290
+
291
+ }
292
+
293
+ .attribute-title{
294
+ font-size: 16px;
295
+ font-weight: 600;
296
+ /* font-weight: bold; */
297
+ text-transform: uppercase;
298
+ }
299
+
300
+ .attribute-content{
301
+ font-size: 14px;
302
+ font-weight: 500;
303
+ }
304
+
305
+ .popover-container {
306
+ height: 100%;
307
+ width: 100%;
308
+ }
309
+
310
+ .main {
311
+ .el-button.is-round{
312
+ border-radius: 4px;
313
+ padding: 9px 20px 10px 20px;
314
+ display: flex;
315
+ height: 36px;
316
+ }
317
+ }
318
+
319
+ .button {
320
+ margin-left: 0px !important;
321
+ margin-top: 0px !important;
322
+ font-size: 14px !important;
323
+ background-color: $app-primary-color;
324
+ color: #fff;
325
+ &+.button {
326
+ margin-top: 10px !important;
327
+ }
328
+ &:hover {
329
+ color: #fff !important;
330
+ background: #ac76c5 !important;
331
+ border: 1px solid #ac76c5 !important;
332
+ }
333
+ }
334
+
335
+ .tooltip-container{
336
+ &::after, &::before {
337
+ content: '';
338
+ display: block;
339
+ position: absolute;
340
+ width: 0;
341
+ height: 0;
342
+ border-style: solid;
343
+ flex-shrink: 0;
344
+ }
345
+ .tooltip {
346
+ &::after {
347
+ display: none;
348
+ }
349
+ &::before {
350
+ display: none;
351
+ }
352
+ }
353
+ }
354
+
355
+ .maplibregl-popup-anchor-bottom {
356
+ .tooltip-container {
357
+ &::after, &::before {
358
+ top: 100%;
359
+ border-width: 12px;
360
+ }
361
+ &::after {
362
+ margin-top:-1px;
363
+ border-color: rgb(255, 255, 255) transparent transparent transparent ;
364
+ }
365
+ &::before {
366
+ margin: 0 auto;
367
+ border-color: $app-primary-color transparent transparent transparent ;
368
+ }
369
+ }
370
+ }
371
+
372
+ .maplibregl-popup-anchor-top {
373
+ .tooltip-container {
374
+ &::after, &::before {
375
+ top: -24px;
376
+ border-width: 12px;
377
+ }
378
+ &::after {
379
+ margin-top: 1px;
380
+ border-color: transparent transparent rgb(255, 255, 255) transparent ;
381
+ }
382
+ &::before {
383
+ margin: 0 auto;
384
+ border-color: transparent transparent $app-primary-color transparent ;
385
+ }
386
+ }
387
+ }
388
+
389
+ .content-container {
390
+ overflow-y: scroll;
391
+ scrollbar-width: thin !important;
392
+ max-height: 240px;
393
+ }
394
+
395
+ .scrollbar::-webkit-scrollbar-track {
396
+ border-radius: 10px;
397
+ background-color: #f5f5f5;
398
+ }
399
+
400
+ .scrollbar::-webkit-scrollbar {
401
+ width: 12px;
402
+ right: -12px;
403
+ background-color: #f5f5f5;
404
+ }
405
+
406
+ .scrollbar::-webkit-scrollbar-thumb {
407
+ border-radius: 4px;
408
+ box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.06);
409
+ background-color: #979797;
410
+ }
411
+
412
+
413
+ /* Fix for chrome bug where under triangle pops up above one on top of it */
414
+ .selector:not(*:root), .tooltip-container::after{
415
+ top: 99.4%;
416
+ }
417
+ </style>