datastake-daf 0.6.838 → 0.6.840
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/components/index.js +1578 -1443
- package/dist/pages/index.js +80 -33
- package/dist/utils/index.js +4 -0
- package/package.json +1 -1
- package/src/@daf/hooks/useTimeFilter.js +1 -1
- package/src/@daf/pages/Dashboards/ConflictManagement/components/RisksWidget/components/ProblemSolver/index.js +1 -1
- package/src/@daf/pages/Dashboards/SelfAssesment/components/ProductionSites/index.jsx +2 -1
- package/src/@daf/pages/Dashboards/SelfAssesment/index.jsx +3 -2
- package/src/@daf/pages/ResetPassword/index.jsx +228 -0
- package/src/@daf/pages/Summary/Activities/PlantingCycle/components/CommunityParticipation/JobsTimeline/index.jsx +7 -15
- package/src/@daf/pages/Summary/Activities/PlantingCycle/components/CycleOutcomes/PlantingActivitiesTimeline.jsx +6 -0
- package/src/@daf/pages/Summary/Activities/PlantingCycle/components/CycleOutcomes/RestoredArea.jsx +1 -0
- package/src/@daf/pages/Summary/Operator/components/Governance/config.js +1 -1
- package/src/@daf/pages/Summary/Operator/components/TradeRelationships/helper.js +1 -0
- package/src/@daf/pages/Summary/Operator/components/TradeRelationships/index.js +10 -6
- package/src/@daf/utils/timeFilterUtils.js +43 -14
- package/src/constants/locales/en/translation.js +2 -0
- package/src/constants/locales/fr/translation.js +1 -0
- package/src/constants/locales/sp/translation.js +1 -0
- package/src/index.js +6 -1
- package/build/favicon.ico +0 -0
- package/build/logo192.png +0 -0
- package/build/logo512.png +0 -0
- package/build/manifest.json +0 -25
- package/build/robots.txt +0 -3
- package/dist/style/datastake/mapbox-gl.css +0 -330
|
@@ -82,6 +82,7 @@ export const mapItem = (data, options, goTo, getRedirectLink, operatorData = {},
|
|
|
82
82
|
value: data.country || operatorData?.country,
|
|
83
83
|
},
|
|
84
84
|
totalSources: data.sources ?? 0,
|
|
85
|
+
product: data?.product || "",
|
|
85
86
|
volume: data?.volume || "",
|
|
86
87
|
onClick: function () {
|
|
87
88
|
if (data.type === "mineSite") {
|
|
@@ -68,12 +68,16 @@ const TradeRelationships = ({
|
|
|
68
68
|
getTotal={(c) => {
|
|
69
69
|
return c.totalSources || 0;
|
|
70
70
|
}}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
71
|
+
renderTooltipItems={(data) => [
|
|
72
|
+
{
|
|
73
|
+
label: "Product",
|
|
74
|
+
value: data?.product || "--",
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
label: "Volume",
|
|
78
|
+
value: data?.volume || "--",
|
|
79
|
+
},
|
|
80
|
+
]}
|
|
77
81
|
maxZoom={1.2}
|
|
78
82
|
minZoom={0.4}
|
|
79
83
|
tooltipTitle="Trade"
|
|
@@ -6,18 +6,19 @@ import { renderNumber } from './numbers.js';
|
|
|
6
6
|
* Formats a date based on the time filter
|
|
7
7
|
* @param {dayjs.Dayjs} date - The date to format
|
|
8
8
|
* @param {boolean} breakLine - Whether to add a line break (for tooltips)
|
|
9
|
-
* @param {string} timeFilter - The time filter ('daily', 'weekly', 'monthly')
|
|
9
|
+
* @param {string} timeFilter - The time filter ('daily', 'weekly', 'monthly', 'yearly')
|
|
10
10
|
* @returns {string} Formatted date string
|
|
11
11
|
*/
|
|
12
12
|
export const getFormatDate = (date, breakLine = false, timeFilter = 'monthly') => {
|
|
13
13
|
switch (timeFilter) {
|
|
14
14
|
case "daily":
|
|
15
15
|
return date.format("DD/MM");
|
|
16
|
-
case "weekly"
|
|
16
|
+
case "weekly":
|
|
17
17
|
return `W${renderNumber(date.week())}`;
|
|
18
|
+
case "yearly":
|
|
19
|
+
return date.format("YYYY");
|
|
18
20
|
default:
|
|
19
21
|
// Monthly format: "Dec 24", "Jan 25", etc.
|
|
20
|
-
|
|
21
22
|
return breakLine
|
|
22
23
|
? `${capitalize(date.format("MMM"))}\n${date.format("YY")}`
|
|
23
24
|
: `${capitalize(date.format("MMM"))} ${date.format("YY")}`;
|
|
@@ -26,15 +27,20 @@ export const getFormatDate = (date, breakLine = false, timeFilter = 'monthly') =
|
|
|
26
27
|
|
|
27
28
|
/**
|
|
28
29
|
* Gets the time quantity string for dayjs operations
|
|
29
|
-
* @param {string} timeFilter - The time filter ('daily', 'weekly', 'monthly')
|
|
30
|
-
* @returns {string} Time quantity string ('days', 'weeks', 'months')
|
|
30
|
+
* @param {string} timeFilter - The time filter ('daily', 'weekly', 'monthly', 'yearly')
|
|
31
|
+
* @returns {string} Time quantity string ('days', 'weeks', 'months', 'years')
|
|
31
32
|
*/
|
|
32
33
|
export const getTimeQuantity = (timeFilter = 'monthly') => {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
switch (timeFilter) {
|
|
35
|
+
case "daily":
|
|
36
|
+
return "days";
|
|
37
|
+
case "weekly":
|
|
38
|
+
return "weeks";
|
|
39
|
+
case "yearly":
|
|
40
|
+
return "years";
|
|
41
|
+
default:
|
|
42
|
+
return "months";
|
|
43
|
+
}
|
|
38
44
|
};
|
|
39
45
|
|
|
40
46
|
/**
|
|
@@ -62,6 +68,9 @@ export const getPreviousGraphData = (dates, startDate, timeFilter, valueField =
|
|
|
62
68
|
case "weekly":
|
|
63
69
|
isBeforeStart = date.isBefore(startDate, 'week');
|
|
64
70
|
break;
|
|
71
|
+
case "yearly":
|
|
72
|
+
isBeforeStart = date.isBefore(startDate, 'year');
|
|
73
|
+
break;
|
|
65
74
|
default:
|
|
66
75
|
isBeforeStart = date.isBefore(startDate, 'month');
|
|
67
76
|
break;
|
|
@@ -86,7 +95,7 @@ export const getPreviousGraphData = (dates, startDate, timeFilter, valueField =
|
|
|
86
95
|
* Processes chart data with time filtering support
|
|
87
96
|
* @param {Object} params - Parameters object
|
|
88
97
|
* @param {Array} params.mainData - Array of data objects with date and value fields
|
|
89
|
-
* @param {string} params.timeFilter - Time filter ('daily', 'weekly', 'monthly')
|
|
98
|
+
* @param {string} params.timeFilter - Time filter ('daily', 'weekly', 'monthly', 'yearly')
|
|
90
99
|
* @param {Object} params.filters - Optional filters object with timeframe
|
|
91
100
|
* @param {boolean} params.isCumulative - Whether to calculate cumulative values (default: false)
|
|
92
101
|
* @param {string} params.valueField - Field name to extract value from (default: 'total', also checks 'count', 'jobs', 'value')
|
|
@@ -114,6 +123,9 @@ export const processChartDateData = ({
|
|
|
114
123
|
} else if (filter === "weekly") {
|
|
115
124
|
start = start.startOf('week');
|
|
116
125
|
end = end.startOf('week');
|
|
126
|
+
} else if (filter === "yearly") {
|
|
127
|
+
start = start.startOf('year');
|
|
128
|
+
end = end.startOf('year');
|
|
117
129
|
} else {
|
|
118
130
|
start = start.startOf('month');
|
|
119
131
|
end = end.startOf('month');
|
|
@@ -133,9 +145,20 @@ export const processChartDateData = ({
|
|
|
133
145
|
cumulativeScore = hasPreviousData ? previousCumulativeScore : 0;
|
|
134
146
|
}
|
|
135
147
|
|
|
148
|
+
// Get the period unit for comparison
|
|
149
|
+
const getPeriodUnit = (f) => {
|
|
150
|
+
switch (f) {
|
|
151
|
+
case "daily": return "day";
|
|
152
|
+
case "weekly": return "week";
|
|
153
|
+
case "yearly": return "year";
|
|
154
|
+
default: return "month";
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
const periodUnit = getPeriodUnit(filter);
|
|
158
|
+
|
|
136
159
|
// Loop until we reach the end date
|
|
137
160
|
let currentDate = start.clone();
|
|
138
|
-
while (currentDate.isBefore(end) || currentDate.isSame(end,
|
|
161
|
+
while (currentDate.isBefore(end) || currentDate.isSame(end, periodUnit)) {
|
|
139
162
|
// Filter data points that fall within this period
|
|
140
163
|
const score = isEmpty ? 0 : dates
|
|
141
164
|
.filter((d) => {
|
|
@@ -146,6 +169,8 @@ export const processChartDateData = ({
|
|
|
146
169
|
case "weekly":
|
|
147
170
|
return dayjs(d.date, "YYYY-MM-DD").week() === currentDate.week() &&
|
|
148
171
|
dayjs(d.date, "YYYY-MM-DD").year() === currentDate.year();
|
|
172
|
+
case "yearly":
|
|
173
|
+
return dayjs(d.date, "YYYY-MM-DD").year() === currentDate.year();
|
|
149
174
|
default:
|
|
150
175
|
return (
|
|
151
176
|
dayjs(d.date, "YYYY-MM-DD").format("YYYY-MM") ===
|
|
@@ -187,7 +212,7 @@ export const processChartDateData = ({
|
|
|
187
212
|
export const formatDateAxis = (label, getFormatDateFn) => {
|
|
188
213
|
if (!label) return label;
|
|
189
214
|
|
|
190
|
-
// Check if label is already in the correct format (MMM YY, DD/MM, or
|
|
215
|
+
// Check if label is already in the correct format (MMM YY, DD/MM, W#, or YYYY)
|
|
191
216
|
// If it matches our format patterns, return as-is
|
|
192
217
|
if (typeof label === 'string') {
|
|
193
218
|
// Check for MMM YY format (e.g., "Dec 24", "Jan 25")
|
|
@@ -202,6 +227,10 @@ export const formatDateAxis = (label, getFormatDateFn) => {
|
|
|
202
227
|
if (/^W\d+$/.test(label)) {
|
|
203
228
|
return label;
|
|
204
229
|
}
|
|
230
|
+
// Check for YYYY format (e.g., "2024", "2025")
|
|
231
|
+
if (/^\d{4}$/.test(label)) {
|
|
232
|
+
return label;
|
|
233
|
+
}
|
|
205
234
|
}
|
|
206
235
|
|
|
207
236
|
// Otherwise, try to parse and format it
|
|
@@ -209,7 +238,7 @@ export const formatDateAxis = (label, getFormatDateFn) => {
|
|
|
209
238
|
|
|
210
239
|
// If first attempt fails, try parsing as ISO date string
|
|
211
240
|
if (!date.isValid() && typeof label === 'string') {
|
|
212
|
-
date = dayjs(label, ['YYYY-MM-DD', 'YYYY-MM', 'MMM YY', 'MMM YYYY', 'DD/MM'], true);
|
|
241
|
+
date = dayjs(label, ['YYYY-MM-DD', 'YYYY-MM', 'YYYY', 'MMM YY', 'MMM YYYY', 'DD/MM'], true);
|
|
213
242
|
}
|
|
214
243
|
|
|
215
244
|
// If it's a valid date, format it using getFormatDate
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const en = {
|
|
2
|
+
"Operating Sites": "Operating Sites",
|
|
2
3
|
"Identified Mine Sites": "Identified Mine Sites",
|
|
3
4
|
"Associated Documents": "Associated Documents",
|
|
4
5
|
"Male": "Male",
|
|
@@ -27,6 +28,7 @@ const en = {
|
|
|
27
28
|
"events": "Events",
|
|
28
29
|
"merge-locations": "Merge Locations",
|
|
29
30
|
"edit-account": "Edit Account",
|
|
31
|
+
"testimonials": "Testimonials",
|
|
30
32
|
"Are-you-sure-you-want-to-remove-the-user-from-this-account?": "Are you sure you want to remove the user from this account?",
|
|
31
33
|
"The-user-will-lose-access-to-the-application-and-to-all-data-created-for-this-account.": "The user will lose access to the application and to all data created for this account.",
|
|
32
34
|
"merge": "Merge",
|
package/src/index.js
CHANGED
|
@@ -209,4 +209,9 @@ export { default as SettingsView } from "./@daf/core/components/Screens/Settings
|
|
|
209
209
|
export { default as SettingsEdit } from "./@daf/core/components/Screens/Settings/Edit/index.js";
|
|
210
210
|
export { default as SettingsHeader } from "./@daf/core/components/Screens/Settings/components/Header/index.js";
|
|
211
211
|
export { default as SettingsMenu } from "./@daf/core/components/Screens/Settings/components/Menu/index.js";
|
|
212
|
-
export { INPUT_TYPES, ACTIVE_FORM_KEY, PLACEHOLDER, getDefaultActiveForm } from "./@daf/core/components/Screens/Settings/config.js";
|
|
212
|
+
export { INPUT_TYPES, ACTIVE_FORM_KEY, PLACEHOLDER, getDefaultActiveForm } from "./@daf/core/components/Screens/Settings/config.js";
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
// Reset Password
|
|
217
|
+
// export { default as ResetPassword } from "./@daf/pages/ResetPassword/index.jsx";
|
package/build/favicon.ico
DELETED
|
Binary file
|
package/build/logo192.png
DELETED
|
Binary file
|
package/build/logo512.png
DELETED
|
Binary file
|
package/build/manifest.json
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"short_name": "React App",
|
|
3
|
-
"name": "Create React App Sample",
|
|
4
|
-
"icons": [
|
|
5
|
-
{
|
|
6
|
-
"src": "favicon.ico",
|
|
7
|
-
"sizes": "64x64 32x32 24x24 16x16",
|
|
8
|
-
"type": "image/x-icon"
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
"src": "logo192.png",
|
|
12
|
-
"type": "image/png",
|
|
13
|
-
"sizes": "192x192"
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
"src": "logo512.png",
|
|
17
|
-
"type": "image/png",
|
|
18
|
-
"sizes": "512x512"
|
|
19
|
-
}
|
|
20
|
-
],
|
|
21
|
-
"start_url": ".",
|
|
22
|
-
"display": "standalone",
|
|
23
|
-
"theme_color": "#000000",
|
|
24
|
-
"background_color": "#ffffff"
|
|
25
|
-
}
|
package/build/robots.txt
DELETED
|
@@ -1,330 +0,0 @@
|
|
|
1
|
-
/* Isolated Mapbox GL CSS - Scoped to prevent Leaflet conflicts */
|
|
2
|
-
|
|
3
|
-
/* Mapbox GL Core Styles - Scoped with .mapbox-gl-scope */
|
|
4
|
-
.mapbox-gl-scope .mapboxgl-map {
|
|
5
|
-
font: 12px/20px Helvetica Neue, Arial, Helvetica, sans-serif;
|
|
6
|
-
overflow: hidden;
|
|
7
|
-
position: relative;
|
|
8
|
-
-webkit-tap-highlight-color: rgb(0 0 0/0);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
.mapbox-gl-scope .mapboxgl-canvas {
|
|
12
|
-
left: 0;
|
|
13
|
-
position: absolute;
|
|
14
|
-
top: 0;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
.mapbox-gl-scope .mapboxgl-map:-webkit-full-screen {
|
|
18
|
-
height: 100%;
|
|
19
|
-
width: 100%;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
.mapbox-gl-scope .mapboxgl-canary {
|
|
23
|
-
background-color: salmon;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
.mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-interactive,
|
|
27
|
-
.mapbox-gl-scope .mapboxgl-ctrl-group button.mapboxgl-ctrl-compass {
|
|
28
|
-
cursor: grab;
|
|
29
|
-
-webkit-user-select: none;
|
|
30
|
-
user-select: none;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-interactive.mapboxgl-track-pointer {
|
|
34
|
-
cursor: pointer;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
.mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-interactive:active,
|
|
38
|
-
.mapbox-gl-scope .mapboxgl-ctrl-group button.mapboxgl-ctrl-compass:active {
|
|
39
|
-
cursor: grabbing;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
.mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate,
|
|
43
|
-
.mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate .mapboxgl-canvas {
|
|
44
|
-
touch-action: pan-x pan-y;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
.mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-touch-drag-pan,
|
|
48
|
-
.mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-touch-drag-pan .mapboxgl-canvas {
|
|
49
|
-
touch-action: pinch-zoom;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
.mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan,
|
|
53
|
-
.mapbox-gl-scope .mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan .mapboxgl-canvas {
|
|
54
|
-
touch-action: none;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/* Control positioning */
|
|
58
|
-
.mapbox-gl-scope .mapboxgl-ctrl-bottom,
|
|
59
|
-
.mapbox-gl-scope .mapboxgl-ctrl-bottom-left,
|
|
60
|
-
.mapbox-gl-scope .mapboxgl-ctrl-bottom-right,
|
|
61
|
-
.mapbox-gl-scope .mapboxgl-ctrl-left,
|
|
62
|
-
.mapbox-gl-scope .mapboxgl-ctrl-right,
|
|
63
|
-
.mapbox-gl-scope .mapboxgl-ctrl-top,
|
|
64
|
-
.mapbox-gl-scope .mapboxgl-ctrl-top-left,
|
|
65
|
-
.mapbox-gl-scope .mapboxgl-ctrl-top-right {
|
|
66
|
-
pointer-events: none;
|
|
67
|
-
position: absolute;
|
|
68
|
-
z-index: 2;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
.mapbox-gl-scope .mapboxgl-ctrl-top-left {
|
|
72
|
-
left: 0;
|
|
73
|
-
top: 0;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
.mapbox-gl-scope .mapboxgl-ctrl-top {
|
|
77
|
-
left: 50%;
|
|
78
|
-
top: 0;
|
|
79
|
-
transform: translateX(-50%);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
.mapbox-gl-scope .mapboxgl-ctrl-top-right {
|
|
83
|
-
right: 0;
|
|
84
|
-
top: 0;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
.mapbox-gl-scope .mapboxgl-ctrl-right {
|
|
88
|
-
right: 0;
|
|
89
|
-
top: 50%;
|
|
90
|
-
transform: translateY(-50%);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
.mapbox-gl-scope .mapboxgl-ctrl-bottom-right {
|
|
94
|
-
bottom: 0;
|
|
95
|
-
right: 0;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
.mapbox-gl-scope .mapboxgl-ctrl-bottom {
|
|
99
|
-
bottom: 0;
|
|
100
|
-
left: 50%;
|
|
101
|
-
transform: translateX(-50%);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
.mapbox-gl-scope .mapboxgl-ctrl-bottom-left {
|
|
105
|
-
bottom: 0;
|
|
106
|
-
left: 0;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
.mapbox-gl-scope .mapboxgl-ctrl-left {
|
|
110
|
-
left: 0;
|
|
111
|
-
top: 50%;
|
|
112
|
-
transform: translateY(-50%);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
.mapbox-gl-scope .mapboxgl-ctrl {
|
|
116
|
-
clear: both;
|
|
117
|
-
pointer-events: auto;
|
|
118
|
-
transform: translate(0);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
.mapbox-gl-scope .mapboxgl-ctrl-top-left .mapboxgl-ctrl {
|
|
122
|
-
float: left;
|
|
123
|
-
margin: 10px 0 0 10px;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
.mapbox-gl-scope .mapboxgl-ctrl-top .mapboxgl-ctrl {
|
|
127
|
-
float: left;
|
|
128
|
-
margin: 10px 0;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
.mapbox-gl-scope .mapboxgl-ctrl-top-right .mapboxgl-ctrl {
|
|
132
|
-
float: right;
|
|
133
|
-
margin: 10px 10px 0 0;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
.mapbox-gl-scope .mapboxgl-ctrl-bottom-right .mapboxgl-ctrl,
|
|
137
|
-
.mapbox-gl-scope .mapboxgl-ctrl-right .mapboxgl-ctrl {
|
|
138
|
-
float: right;
|
|
139
|
-
margin: 0 10px 10px 0;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
.mapbox-gl-scope .mapboxgl-ctrl-bottom .mapboxgl-ctrl {
|
|
143
|
-
float: left;
|
|
144
|
-
margin: 10px 0;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
.mapbox-gl-scope .mapboxgl-ctrl-bottom-left .mapboxgl-ctrl,
|
|
148
|
-
.mapbox-gl-scope .mapboxgl-ctrl-left .mapboxgl-ctrl {
|
|
149
|
-
float: left;
|
|
150
|
-
margin: 0 0 10px 10px;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/* Control group styling */
|
|
154
|
-
.mapbox-gl-scope .mapboxgl-ctrl-group {
|
|
155
|
-
background: #fff;
|
|
156
|
-
border-radius: 4px;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
.mapbox-gl-scope .mapboxgl-ctrl-group:not(:empty) {
|
|
160
|
-
box-shadow: 0 0 0 2px #0000001a;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
.mapbox-gl-scope .mapboxgl-ctrl-group button {
|
|
164
|
-
background-color: initial;
|
|
165
|
-
border: 0;
|
|
166
|
-
box-sizing: border-box;
|
|
167
|
-
cursor: pointer;
|
|
168
|
-
display: block;
|
|
169
|
-
height: 29px;
|
|
170
|
-
outline: none;
|
|
171
|
-
overflow: hidden;
|
|
172
|
-
padding: 0;
|
|
173
|
-
width: 29px;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
.mapbox-gl-scope .mapboxgl-ctrl-group button+button {
|
|
177
|
-
border-top: 1px solid #ddd;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
.mapbox-gl-scope .mapboxgl-ctrl button .mapboxgl-ctrl-icon {
|
|
181
|
-
background-position: 50%;
|
|
182
|
-
background-repeat: no-repeat;
|
|
183
|
-
display: block;
|
|
184
|
-
height: 100%;
|
|
185
|
-
width: 100%;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
.mapbox-gl-scope .mapboxgl-ctrl-attrib-button:focus,
|
|
189
|
-
.mapbox-gl-scope .mapboxgl-ctrl-group button:focus {
|
|
190
|
-
box-shadow: 0 0 2px 2px #0096ff;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
.mapbox-gl-scope .mapboxgl-ctrl button:disabled {
|
|
194
|
-
cursor: not-allowed;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
.mapbox-gl-scope .mapboxgl-ctrl button:disabled .mapboxgl-ctrl-icon {
|
|
198
|
-
opacity: .25;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
.mapbox-gl-scope .mapboxgl-ctrl-group button:first-child {
|
|
202
|
-
border-radius: 4px 4px 0 0;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
.mapbox-gl-scope .mapboxgl-ctrl-group button:last-child {
|
|
206
|
-
border-radius: 0 0 4px 4px;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
.mapbox-gl-scope .mapboxgl-ctrl-group button:only-child {
|
|
210
|
-
border-radius: inherit;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
.mapbox-gl-scope .mapboxgl-ctrl button:not(:disabled):hover {
|
|
214
|
-
background-color: #0000000d;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
/* Marker styles */
|
|
218
|
-
.mapbox-gl-scope .mapboxgl-marker {
|
|
219
|
-
position: absolute;
|
|
220
|
-
z-index: 1;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
.mapbox-gl-scope .mapboxgl-marker svg {
|
|
224
|
-
display: block;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
/* Popup styles */
|
|
228
|
-
.mapbox-gl-scope .mapboxgl-popup {
|
|
229
|
-
position: absolute;
|
|
230
|
-
text-align: center;
|
|
231
|
-
margin-bottom: 20px;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
.mapbox-gl-scope .mapboxgl-popup-content-wrapper {
|
|
235
|
-
padding: 1px;
|
|
236
|
-
text-align: left;
|
|
237
|
-
border-radius: 12px;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
.mapbox-gl-scope .mapboxgl-popup-content {
|
|
241
|
-
margin: 13px 24px 13px 20px;
|
|
242
|
-
line-height: 1.3;
|
|
243
|
-
font-size: 13px;
|
|
244
|
-
min-height: 1px;
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
.mapbox-gl-scope .mapboxgl-popup-content p {
|
|
248
|
-
margin: 17px 0;
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
.mapbox-gl-scope .mapboxgl-popup-tip-container {
|
|
252
|
-
width: 40px;
|
|
253
|
-
height: 20px;
|
|
254
|
-
position: absolute;
|
|
255
|
-
left: 50%;
|
|
256
|
-
margin-top: -1px;
|
|
257
|
-
margin-left: -20px;
|
|
258
|
-
overflow: hidden;
|
|
259
|
-
pointer-events: none;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
.mapbox-gl-scope .mapboxgl-popup-tip {
|
|
263
|
-
width: 17px;
|
|
264
|
-
height: 17px;
|
|
265
|
-
padding: 1px;
|
|
266
|
-
margin: -10px auto 0;
|
|
267
|
-
pointer-events: auto;
|
|
268
|
-
-webkit-transform: rotate(45deg);
|
|
269
|
-
-moz-transform: rotate(45deg);
|
|
270
|
-
-ms-transform: rotate(45deg);
|
|
271
|
-
transform: rotate(45deg);
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
.mapbox-gl-scope .mapboxgl-popup-content-wrapper,
|
|
275
|
-
.mapbox-gl-scope .mapboxgl-popup-tip {
|
|
276
|
-
background: white;
|
|
277
|
-
color: #333;
|
|
278
|
-
box-shadow: 0 3px 14px rgba(0, 0, 0, 0.4);
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
.mapbox-gl-scope .mapboxgl-popup-close-button {
|
|
282
|
-
position: absolute;
|
|
283
|
-
top: 0;
|
|
284
|
-
right: 0;
|
|
285
|
-
border: none;
|
|
286
|
-
text-align: center;
|
|
287
|
-
width: 24px;
|
|
288
|
-
height: 24px;
|
|
289
|
-
font: 16px/24px Tahoma, Verdana, sans-serif;
|
|
290
|
-
color: #757575;
|
|
291
|
-
text-decoration: none;
|
|
292
|
-
background: transparent;
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
.mapbox-gl-scope .mapboxgl-popup-close-button:hover,
|
|
296
|
-
.mapbox-gl-scope .mapboxgl-popup-close-button:focus {
|
|
297
|
-
color: #585858;
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
/* Attribution */
|
|
301
|
-
.mapbox-gl-scope .mapboxgl-ctrl-attribution {
|
|
302
|
-
background: #fff;
|
|
303
|
-
background: rgba(255, 255, 255, 0.8);
|
|
304
|
-
margin: 0;
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
.mapbox-gl-scope .mapboxgl-ctrl-attribution,
|
|
308
|
-
.mapbox-gl-scope .mapboxgl-ctrl-scale-line {
|
|
309
|
-
padding: 0 5px;
|
|
310
|
-
color: #333;
|
|
311
|
-
line-height: 1.4;
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
.mapbox-gl-scope .mapboxgl-ctrl-attribution a {
|
|
315
|
-
text-decoration: none;
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
.mapbox-gl-scope .mapboxgl-ctrl-attribution a:hover,
|
|
319
|
-
.mapbox-gl-scope .mapboxgl-ctrl-attribution a:focus {
|
|
320
|
-
text-decoration: underline;
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
/* Hide attribution by default */
|
|
324
|
-
.mapbox-gl-scope .mapboxgl-ctrl-attribution {
|
|
325
|
-
display: none !important;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
.mapbox-gl-scope .mapboxgl-ctrl-logo {
|
|
329
|
-
display: none !important;
|
|
330
|
-
}
|