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.
Files changed (26) hide show
  1. package/dist/components/index.js +1578 -1443
  2. package/dist/pages/index.js +80 -33
  3. package/dist/utils/index.js +4 -0
  4. package/package.json +1 -1
  5. package/src/@daf/hooks/useTimeFilter.js +1 -1
  6. package/src/@daf/pages/Dashboards/ConflictManagement/components/RisksWidget/components/ProblemSolver/index.js +1 -1
  7. package/src/@daf/pages/Dashboards/SelfAssesment/components/ProductionSites/index.jsx +2 -1
  8. package/src/@daf/pages/Dashboards/SelfAssesment/index.jsx +3 -2
  9. package/src/@daf/pages/ResetPassword/index.jsx +228 -0
  10. package/src/@daf/pages/Summary/Activities/PlantingCycle/components/CommunityParticipation/JobsTimeline/index.jsx +7 -15
  11. package/src/@daf/pages/Summary/Activities/PlantingCycle/components/CycleOutcomes/PlantingActivitiesTimeline.jsx +6 -0
  12. package/src/@daf/pages/Summary/Activities/PlantingCycle/components/CycleOutcomes/RestoredArea.jsx +1 -0
  13. package/src/@daf/pages/Summary/Operator/components/Governance/config.js +1 -1
  14. package/src/@daf/pages/Summary/Operator/components/TradeRelationships/helper.js +1 -0
  15. package/src/@daf/pages/Summary/Operator/components/TradeRelationships/index.js +10 -6
  16. package/src/@daf/utils/timeFilterUtils.js +43 -14
  17. package/src/constants/locales/en/translation.js +2 -0
  18. package/src/constants/locales/fr/translation.js +1 -0
  19. package/src/constants/locales/sp/translation.js +1 -0
  20. package/src/index.js +6 -1
  21. package/build/favicon.ico +0 -0
  22. package/build/logo192.png +0 -0
  23. package/build/logo512.png +0 -0
  24. package/build/manifest.json +0 -25
  25. package/build/robots.txt +0 -3
  26. package/dist/style/datastake/mapbox-gl.css +0 -330
@@ -7,6 +7,7 @@ const selectOptions = [
7
7
  { label: "Daily", value: "daily" },
8
8
  { label: "Weekly", value: "weekly" },
9
9
  { label: "Monthly", value: "monthly" },
10
+ { label: "Yearly", value: "yearly" },
10
11
  ];
11
12
 
12
13
  const RestoredArea = ({
@@ -18,7 +18,7 @@ export const IconNodesConfig = {
18
18
  emptyName: "no-management",
19
19
  },
20
20
  shareholders: {
21
- name: "Stakeholders",
21
+ name: "Shareholders",
22
22
  icon: "PercentCircle",
23
23
  order: 4,
24
24
  emptyName: "no-stakeholders",
@@ -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
- renderTooltipItems={(data) => [
72
- {
73
- label: "Volume",
74
- value: data?.volume || "--",
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
- return timeFilter === "monthly"
34
- ? "months"
35
- : timeFilter === "daily"
36
- ? "days"
37
- : "weeks";
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, filter === "daily" ? "day" : filter === "weekly" ? "week" : "month")) {
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 W#)
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",
@@ -1,4 +1,5 @@
1
1
  const fr = {
2
+ "Operating Sites": "Sites d’Exploitation",
2
3
  "Identified Mine Sites": "Sites miniers identifiés",
3
4
  "Associated Documents": "Documents associés",
4
5
  "Male": "Masculin",
@@ -1,4 +1,5 @@
1
1
  const sp = {
2
+ "Operating Sites": "Sitios de Operación",
2
3
  "Identified Mine Sites": "Sitios mineros identificados",
3
4
  "Associated Documents": "Documentos asociados",
4
5
  "Male": "Masculino",
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
@@ -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,3 +0,0 @@
1
- # https://www.robotstxt.org/robotstxt.html
2
- User-agent: *
3
- Disallow:
@@ -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
- }