datastake-daf 0.6.362 → 0.6.364

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.
@@ -51378,6 +51378,7 @@ function NameNode({
51378
51378
  token
51379
51379
  } = useToken$7();
51380
51380
  const translateFN = typeof data?.t === "function" ? data.t : key => key;
51381
+ const isPdf = data?.isPdf;
51381
51382
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
51382
51383
  children: [/*#__PURE__*/jsxRuntime.jsx(react.Handle, {
51383
51384
  type: "source",
@@ -51396,6 +51397,7 @@ function NameNode({
51396
51397
  opacity: 0
51397
51398
  }
51398
51399
  }), /*#__PURE__*/jsxRuntime.jsxs(Style$d, {
51400
+ $isPdf: isPdf,
51399
51401
  style: {
51400
51402
  opacity: data.isEmpty ? 0.5 : 1
51401
51403
  },
@@ -51446,7 +51448,7 @@ function NameNode({
51446
51448
  }
51447
51449
  })
51448
51450
  }) : null]
51449
- }), /*#__PURE__*/jsxRuntime.jsx("div", {
51451
+ }), !isPdf && /*#__PURE__*/jsxRuntime.jsx("div", {
51450
51452
  style: {
51451
51453
  marginLeft: "auto"
51452
51454
  },
@@ -51483,27 +51485,32 @@ function NameNode({
51483
51485
  });
51484
51486
  }
51485
51487
  const Style$d = dt.div`
51486
- width: ${NAME_CARD_WIDTH}px;
51487
- display: flex;
51488
- background: white;
51489
- border-radius: 8px;
51490
- box-shadow: 0px 3.76px 10.03px 0px #00000014;
51491
- box-shadow: 0px 1.88px 3.76px -2.51px #0000001f;
51492
- overflow: hidden;
51493
- box-shadow: 0px 5.64px 17.56px 5.02px #0000000d;
51488
+ width: ${NAME_CARD_WIDTH}px;
51489
+ display: flex;
51490
+ background: white;
51491
+ border-radius: 8px;
51492
+ /* Box-shadows for screen */
51493
+ box-shadow: 0px 3.76px 10.03px 0px #00000014;
51494
+ box-shadow: 0px 1.88px 3.76px -2.51px #0000001f;
51495
+ overflow: hidden;
51496
+ box-shadow: 0px 5.64px 17.56px 5.02px #0000000d;
51497
+ /* Ensure borders/colors survive PDF rendering */
51498
+ border: ${props => props.$isPdf ? '1px solid var(--base-gray-30)' : 'none'};
51499
+ -webkit-print-color-adjust: exact;
51500
+ print-color-adjust: exact;
51494
51501
 
51495
- .left {
51496
- width: 32px;
51497
- background: red;
51498
- border-top-left-radius: 12px;
51499
- border-bottom-left-radius: 12px;
51500
- }
51502
+ .left {
51503
+ width: 32px;
51504
+ background: red;
51505
+ border-top-left-radius: 12px;
51506
+ border-bottom-left-radius: 12px;
51507
+ }
51501
51508
 
51502
- .right {
51503
- padding: 16px 12px;
51504
- width: 100%
51505
- border-bottom: 1px solid var(--base-gray-30);
51506
- }
51509
+ .right {
51510
+ padding: 16px 12px;
51511
+ width: 100%;
51512
+ border-bottom: 1px solid var(--base-gray-30);
51513
+ }
51507
51514
  `;
51508
51515
 
51509
51516
  const Style$c = dt.div`
@@ -52078,6 +52085,7 @@ const BaseGraph = /*#__PURE__*/React.forwardRef(function BaseGraph({
52078
52085
  t,
52079
52086
  withDuration = true,
52080
52087
  onFilterChange,
52088
+ isPdf,
52081
52089
  ...props
52082
52090
  }, ref) {
52083
52091
  const {
@@ -52134,7 +52142,7 @@ const BaseGraph = /*#__PURE__*/React.forwardRef(function BaseGraph({
52134
52142
  duration: withDuration ? 300 : undefined
52135
52143
  },
52136
52144
  ...props,
52137
- children: /*#__PURE__*/jsxRuntime.jsxs(react.Controls, {
52145
+ children: !isPdf && /*#__PURE__*/jsxRuntime.jsxs(react.Controls, {
52138
52146
  position: "bottom-right",
52139
52147
  showFitView: false,
52140
52148
  showInteractive: false,
@@ -52651,7 +52659,8 @@ function positionDataNodes(_ref2) {
52651
52659
  total,
52652
52660
  mainNode,
52653
52661
  type,
52654
- hasContent
52662
+ hasContent,
52663
+ isPdf
52655
52664
  } = _ref2;
52656
52665
  const DATA_NODE_WIDTH = DATA_NODE_SIZE[type].width;
52657
52666
  const DATA_NODE_HEIGHT = DATA_NODE_SIZE[type].height;
@@ -52677,7 +52686,7 @@ function positionDataNodes(_ref2) {
52677
52686
  const startY = iconNodeCenterY - totalHeight / 2;
52678
52687
  const END_Y = startY + totalHeight;
52679
52688
  const yOffset = index * MIN_SPACE_REQUIRED;
52680
- let yPosition = startY + yOffset;
52689
+ let yPosition = startY + yOffset + (isPdf ? 50 : 0);
52681
52690
  if (isAboveMainNode && END_Y >= mainNode.position.y + DATA_NODE_HEIGHT / 2) {
52682
52691
  yPosition = mainNode.position.y + DATA_NODE_HEIGHT / 2 - totalHeight + yOffset;
52683
52692
  } else if (!isAboveMainNode && startY < mainNode.position.y + DATA_NODE_HEIGHT / 2) {
@@ -52868,6 +52877,7 @@ function StakeholderMappings(_ref3) {
52868
52877
  isLeftSide: node.data.order % 2 !== 0,
52869
52878
  isAboveMainNode: node.data.order <= 2,
52870
52879
  iconNode: node,
52880
+ isPdf: true,
52871
52881
  index: 0,
52872
52882
  total: 1,
52873
52883
  mainNode,
@@ -52966,7 +52976,8 @@ function StakeholderMappings(_ref3) {
52966
52976
  duration: 300
52967
52977
  });
52968
52978
  },
52969
- ref: reactFlowWrapper
52979
+ ref: reactFlowWrapper,
52980
+ isPdf: isPdf
52970
52981
  });
52971
52982
  }
52972
52983
  var index$1 = withProvider(StakeholderMappings);
@@ -54005,6 +54016,13 @@ function AddUserModal({
54005
54016
  }
54006
54017
  }
54007
54018
  })
54019
+ }), accountUsed && /*#__PURE__*/jsxRuntime.jsx(antd.Alert, {
54020
+ message: t("FB00001"),
54021
+ type: "error",
54022
+ className: "mb-2",
54023
+ showIcon: true,
54024
+ closable: true,
54025
+ onClose: () => setAccountUsed(false)
54008
54026
  }), /*#__PURE__*/jsxRuntime.jsx(antd.Form.Item, {
54009
54027
  name: "role",
54010
54028
  label: t("Role"),
@@ -56876,6 +56894,13 @@ function NewUser({
56876
56894
  }
56877
56895
  }
56878
56896
  })
56897
+ }), accountUsed && /*#__PURE__*/jsxRuntime.jsx(antd.Alert, {
56898
+ message: t("FB00001"),
56899
+ type: "error",
56900
+ className: "mb-2",
56901
+ showIcon: true,
56902
+ closable: true,
56903
+ onClose: () => setAccountUsed(false)
56879
56904
  }), /*#__PURE__*/jsxRuntime.jsx(antd.Form.Item, {
56880
56905
  name: "role",
56881
56906
  label: t("Role"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "datastake-daf",
3
- "version": "0.6.362",
3
+ "version": "0.6.364",
4
4
  "dependencies": {
5
5
  "@ant-design/icons": "^5.2.5",
6
6
  "@antv/g2": "^5.1.1",
@@ -457,6 +457,34 @@ export const Pdf = {
457
457
  showBackground: true,
458
458
  isPercentage: true,
459
459
  shouldSeperateLegendName: true,
460
+ formattedXAxis: (s) => {
461
+ if (!s) return "";
462
+
463
+ const limit = 20;
464
+ let result = "";
465
+ let line = "";
466
+
467
+ for (let word of s.split(" ")) {
468
+ if ((line + word).length <= limit) {
469
+ line += (line ? " " : "") + word;
470
+ } else if (word.length > limit) {
471
+ // break long word with hyphen
472
+ while (word.length > limit) {
473
+ result += word.slice(0, limit - 1) + "-\n";
474
+ word = word.slice(limit - 1);
475
+ }
476
+ line = word;
477
+ } else {
478
+ // move current line into result
479
+ if (line) result += line + "\n";
480
+ line = word;
481
+ }
482
+ }
483
+
484
+ if (line) result += line;
485
+
486
+ return result;
487
+ },
460
488
  },
461
489
  render: (args) => {
462
490
  return <Widget title="Pdf Column Chart" className={"with-border-header"}>
@@ -72,6 +72,7 @@ function positionDataNodes({
72
72
  mainNode,
73
73
  type,
74
74
  hasContent,
75
+ isPdf,
75
76
  }) {
76
77
  const DATA_NODE_WIDTH = DATA_NODE_SIZE[type].width;
77
78
  const DATA_NODE_HEIGHT = DATA_NODE_SIZE[type].height;
@@ -104,7 +105,7 @@ function positionDataNodes({
104
105
 
105
106
  const yOffset = index * MIN_SPACE_REQUIRED;
106
107
 
107
- let yPosition = startY + yOffset;
108
+ let yPosition = startY + yOffset + (isPdf ? 50 : 0);
108
109
 
109
110
  if (isAboveMainNode && END_Y >= mainNode.position.y + DATA_NODE_HEIGHT / 2) {
110
111
  yPosition = mainNode.position.y + DATA_NODE_HEIGHT / 2 - totalHeight + yOffset;
@@ -325,6 +326,7 @@ function StakeholderMappings({
325
326
  isLeftSide: node.data.order % 2 !== 0,
326
327
  isAboveMainNode: node.data.order <= 2,
327
328
  iconNode: node,
329
+ isPdf: true,
328
330
  index: 0,
329
331
  total: 1,
330
332
  mainNode,
@@ -444,6 +446,7 @@ function StakeholderMappings({
444
446
  });
445
447
  }}
446
448
  ref={reactFlowWrapper}
449
+ isPdf={isPdf}
447
450
  />
448
451
  );
449
452
  }
@@ -32,6 +32,7 @@ const BaseGraph = forwardRef(function BaseGraph(
32
32
  t,
33
33
  withDuration = true,
34
34
  onFilterChange,
35
+ isPdf,
35
36
  ...props
36
37
  },
37
38
  ref,
@@ -87,43 +88,45 @@ const BaseGraph = forwardRef(function BaseGraph(
87
88
  }}
88
89
  {...props}
89
90
  >
90
- <Controls position="bottom-right" showFitView={false} showInteractive={false}>
91
- <ControlButton
92
- onClick={() => {
93
- fitView({
94
- padding: 0.1,
95
- nodes: [...nodesToFit],
96
- duration: withDuration ? 300 : undefined,
97
- });
98
- }}
99
- >
100
- <AimOutlined height={20} width={20} />
101
- </ControlButton>
102
- <ControlButton
103
- onClick={() => {
104
- const viewport = getViewport();
105
- setViewport({
106
- x: viewport.x,
107
- y: viewport.y + 20,
108
- zoom: viewport.zoom,
109
- });
110
- }}
111
- >
112
- <UpOutlined height={20} width={20}></UpOutlined>
113
- </ControlButton>
114
- <ControlButton
115
- onClick={() => {
116
- const viewport = getViewport();
117
- setViewport({
118
- x: viewport.x,
119
- y: viewport.y - 20,
120
- zoom: viewport.zoom,
121
- });
122
- }}
123
- >
124
- <DownOutlined height={20} width={20}></DownOutlined>
125
- </ControlButton>
126
- </Controls>
91
+ {!isPdf && (
92
+ <Controls position="bottom-right" showFitView={false} showInteractive={false}>
93
+ <ControlButton
94
+ onClick={() => {
95
+ fitView({
96
+ padding: 0.1,
97
+ nodes: [...nodesToFit],
98
+ duration: withDuration ? 300 : undefined,
99
+ });
100
+ }}
101
+ >
102
+ <AimOutlined height={20} width={20} />
103
+ </ControlButton>
104
+ <ControlButton
105
+ onClick={() => {
106
+ const viewport = getViewport();
107
+ setViewport({
108
+ x: viewport.x,
109
+ y: viewport.y + 20,
110
+ zoom: viewport.zoom,
111
+ });
112
+ }}
113
+ >
114
+ <UpOutlined height={20} width={20}></UpOutlined>
115
+ </ControlButton>
116
+ <ControlButton
117
+ onClick={() => {
118
+ const viewport = getViewport();
119
+ setViewport({
120
+ x: viewport.x,
121
+ y: viewport.y - 20,
122
+ zoom: viewport.zoom,
123
+ });
124
+ }}
125
+ >
126
+ <DownOutlined height={20} width={20}></DownOutlined>
127
+ </ControlButton>
128
+ </Controls>
129
+ )}
127
130
  </ReactFlow>
128
131
  </div>
129
132
  </ComponentWithFocus>
@@ -13,6 +13,8 @@ const { useToken } = theme;
13
13
  export default function NameNode({ data }) {
14
14
  const { token } = useToken();
15
15
  const translateFN = typeof data?.t === "function" ? data.t : (key) => key;
16
+ const isPdf = data?.isPdf;
17
+
16
18
  return (
17
19
  <>
18
20
  <Handle
@@ -34,6 +36,7 @@ export default function NameNode({ data }) {
34
36
  }}
35
37
  />
36
38
  <Style
39
+ $isPdf={isPdf}
37
40
  style={{
38
41
  opacity: data.isEmpty ? 0.5 : 1,
39
42
  }}
@@ -95,19 +98,21 @@ export default function NameNode({ data }) {
95
98
  ) : null}
96
99
  </div>
97
100
 
98
- <div
99
- style={{
100
- marginLeft: "auto",
101
- }}
102
- className="go-to"
103
- onClick={() => {
104
- if (typeof data.onClick === "function") {
105
- data.onClick();
106
- }
107
- }}
108
- >
109
- <CustomIcon height={14} width={14} name="LinkNewTab" />
110
- </div>
101
+ {!isPdf && (
102
+ <div
103
+ style={{
104
+ marginLeft: "auto",
105
+ }}
106
+ className="go-to"
107
+ onClick={() => {
108
+ if (typeof data.onClick === "function") {
109
+ data.onClick();
110
+ }
111
+ }}
112
+ >
113
+ <CustomIcon height={14} width={14} name="LinkNewTab" />
114
+ </div>
115
+ )}
111
116
  </div>
112
117
  </Style>
113
118
  <Handle
@@ -129,25 +134,30 @@ export default function NameNode({ data }) {
129
134
  }
130
135
 
131
136
  const Style = styled.div`
132
- width: ${NAME_CARD_WIDTH}px;
133
- display: flex;
134
- background: white;
135
- border-radius: 8px;
136
- box-shadow: 0px 3.76px 10.03px 0px #00000014;
137
- box-shadow: 0px 1.88px 3.76px -2.51px #0000001f;
138
- overflow: hidden;
139
- box-shadow: 0px 5.64px 17.56px 5.02px #0000000d;
137
+ width: ${NAME_CARD_WIDTH}px;
138
+ display: flex;
139
+ background: white;
140
+ border-radius: 8px;
141
+ /* Box-shadows for screen */
142
+ box-shadow: 0px 3.76px 10.03px 0px #00000014;
143
+ box-shadow: 0px 1.88px 3.76px -2.51px #0000001f;
144
+ overflow: hidden;
145
+ box-shadow: 0px 5.64px 17.56px 5.02px #0000000d;
146
+ /* Ensure borders/colors survive PDF rendering */
147
+ border: ${(props) => (props.$isPdf ? '1px solid var(--base-gray-30)' : 'none')};
148
+ -webkit-print-color-adjust: exact;
149
+ print-color-adjust: exact;
140
150
 
141
- .left {
142
- width: 32px;
143
- background: red;
144
- border-top-left-radius: 12px;
145
- border-bottom-left-radius: 12px;
146
- }
151
+ .left {
152
+ width: 32px;
153
+ background: red;
154
+ border-top-left-radius: 12px;
155
+ border-bottom-left-radius: 12px;
156
+ }
147
157
 
148
- .right {
149
- padding: 16px 12px;
150
- width: 100%
151
- border-bottom: 1px solid var(--base-gray-30);
152
- }
158
+ .right {
159
+ padding: 16px 12px;
160
+ width: 100%;
161
+ border-bottom: 1px solid var(--base-gray-30);
162
+ }
153
163
  `;
@@ -55,7 +55,7 @@ export default function AddUserModal({ isOpen, defaultData = {}, userRoles = [],
55
55
  }}
56
56
  />
57
57
  </Form.Item>
58
- {/* {accountUsed && (
58
+ {accountUsed && (
59
59
  <Alert
60
60
  message={t("FB00001")}
61
61
  type="error"
@@ -64,7 +64,7 @@ export default function AddUserModal({ isOpen, defaultData = {}, userRoles = [],
64
64
  closable
65
65
  onClose={() => setAccountUsed(false)}
66
66
  />
67
- )} */}
67
+ )}
68
68
 
69
69
  <Form.Item name="role" label={t("Role")} rules={[{ required: true }]}>
70
70
  <Select
@@ -45,7 +45,7 @@ export default function NewUser({ t, isOpen, onClose, defaultData, userRoles = [
45
45
  }}
46
46
  />
47
47
  </Form.Item>
48
- {/* {accountUsed && (
48
+ {accountUsed && (
49
49
  <Alert
50
50
  message={t("FB00001")}
51
51
  type="error"
@@ -54,7 +54,7 @@ export default function NewUser({ t, isOpen, onClose, defaultData, userRoles = [
54
54
  closable
55
55
  onClose={() => setAccountUsed(false)}
56
56
  />
57
- )} */}
57
+ )}
58
58
 
59
59
  <Form.Item name="role" label={t("Role")} rules={[{ required: true }]}>
60
60
  <Select
@@ -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
- }