datastake-daf 0.6.212 → 0.6.213
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 +60 -51
- package/package.json +1 -1
- package/src/@daf/core/components/Dashboard/Widget/ImageCarousel/components/CustomArrowButton/index.js +11 -0
- package/src/@daf/core/components/Dashboard/Widget/ImageCarousel/index.jsx +39 -45
- package/src/@daf/core/components/Dashboard/Widget/ImageCarousel/style.js +7 -4
- package/src/@daf/core/components/Dashboard/Widget/ProjectWidget/ProjectWidget.stories.jsx +66 -86
- package/src/styles/components/_analysisView.scss +2 -30
- package/.env +0 -8
- package/.vscode/settings.json +0 -13
package/dist/components/index.js
CHANGED
|
@@ -21300,19 +21300,29 @@ function CustomArrowButton({
|
|
|
21300
21300
|
}
|
|
21301
21301
|
});
|
|
21302
21302
|
}
|
|
21303
|
+
CustomArrowButton.propTypes = {
|
|
21304
|
+
icon: PropTypes__default["default"].node.isRequired,
|
|
21305
|
+
onClick: PropTypes__default["default"].func,
|
|
21306
|
+
isLeft: PropTypes__default["default"].bool,
|
|
21307
|
+
iconColor: PropTypes__default["default"].string,
|
|
21308
|
+
hoverIconColor: PropTypes__default["default"].string
|
|
21309
|
+
};
|
|
21303
21310
|
|
|
21304
21311
|
const StyledCarouselWrapper = dt.div`
|
|
21305
21312
|
position: relative;
|
|
21306
21313
|
|
|
21307
21314
|
.ant-carousel .slick-dots li button {
|
|
21308
|
-
background: ${props => props.inactiveDotColor} !important;
|
|
21309
|
-
opacity: 1 !important;
|
|
21315
|
+
background: ${props => props.inactiveDotColor} !important;
|
|
21310
21316
|
}
|
|
21311
|
-
|
|
21317
|
+
|
|
21312
21318
|
.ant-carousel .slick-dots li.slick-active button {
|
|
21319
|
+
background: ${props => props.activeDotColor} !important;
|
|
21320
|
+
}
|
|
21321
|
+
|
|
21322
|
+
.ant-carousel .slick-dots li.slick-active::after {
|
|
21313
21323
|
background: ${props => props.activeDotColor} !important;
|
|
21314
|
-
opacity: 1 !important;
|
|
21315
21324
|
}
|
|
21325
|
+
|
|
21316
21326
|
`;
|
|
21317
21327
|
|
|
21318
21328
|
const _excluded$d = ["title", "images", "height", "fallback", "activeDotColor", "inactiveDotColor", "arrowIconColor", "arrowHoverIconColor", "customArrows"];
|
|
@@ -21343,58 +21353,46 @@ function ImageCarousel(_ref) {
|
|
|
21343
21353
|
var _carouselRef$current2;
|
|
21344
21354
|
(_carouselRef$current2 = carouselRef.current) === null || _carouselRef$current2 === void 0 || _carouselRef$current2.next();
|
|
21345
21355
|
};
|
|
21346
|
-
|
|
21347
|
-
// Check if images array is empty or invalid
|
|
21348
|
-
const hasImages = images && images.length > 0;
|
|
21349
21356
|
return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
21350
21357
|
children: [/*#__PURE__*/jsxRuntime.jsxs(StyledCarouselWrapper, {
|
|
21351
21358
|
activeDotColor: activeDotColor,
|
|
21352
21359
|
inactiveDotColor: inactiveDotColor,
|
|
21353
|
-
children: [/*#__PURE__*/jsxRuntime.jsx(CarouselWidget,
|
|
21354
|
-
title: title
|
|
21355
|
-
|
|
21356
|
-
|
|
21357
|
-
|
|
21360
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(CarouselWidget, {
|
|
21361
|
+
title: title,
|
|
21362
|
+
arrows: false
|
|
21363
|
+
// ref={carouselRef}
|
|
21364
|
+
,
|
|
21358
21365
|
afterChange: handleCarouselChange,
|
|
21359
|
-
infinite:
|
|
21360
|
-
dots:
|
|
21361
|
-
children:
|
|
21362
|
-
|
|
21363
|
-
|
|
21364
|
-
|
|
21365
|
-
|
|
21366
|
-
|
|
21367
|
-
|
|
21368
|
-
|
|
21369
|
-
|
|
21370
|
-
|
|
21371
|
-
|
|
21372
|
-
|
|
21373
|
-
|
|
21374
|
-
|
|
21375
|
-
|
|
21376
|
-
|
|
21377
|
-
|
|
21378
|
-
|
|
21379
|
-
|
|
21380
|
-
|
|
21381
|
-
|
|
21382
|
-
|
|
21383
|
-
|
|
21384
|
-
|
|
21385
|
-
|
|
21386
|
-
src: "/assets/images/no-image.svg",
|
|
21387
|
-
alt: "No images available",
|
|
21388
|
-
height: height,
|
|
21389
|
-
width: "100%",
|
|
21390
|
-
fallback: fallback,
|
|
21391
|
-
preview: false,
|
|
21392
|
-
style: {
|
|
21393
|
-
objectFit: "contain"
|
|
21394
|
-
}
|
|
21366
|
+
infinite: true,
|
|
21367
|
+
dots: false,
|
|
21368
|
+
children: /*#__PURE__*/jsxRuntime.jsx(antd.Carousel, _objectSpread2(_objectSpread2({
|
|
21369
|
+
ref: carouselRef,
|
|
21370
|
+
afterChange: handleCarouselChange
|
|
21371
|
+
}, rest), {}, {
|
|
21372
|
+
infinite: true,
|
|
21373
|
+
children: images.map((image, index) => {
|
|
21374
|
+
const imageSrc = typeof image === "string" ? image : image.src;
|
|
21375
|
+
const imageAlt = typeof image === "string" ? "".concat(title, " - Image ").concat(index + 1) : image.alt;
|
|
21376
|
+
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
21377
|
+
children: /*#__PURE__*/jsxRuntime.jsx(antd.Image, {
|
|
21378
|
+
src: imageSrc,
|
|
21379
|
+
alt: imageAlt,
|
|
21380
|
+
height: height,
|
|
21381
|
+
width: "100%",
|
|
21382
|
+
fallback: fallback,
|
|
21383
|
+
loading: "lazy",
|
|
21384
|
+
preview: {
|
|
21385
|
+
visible: false
|
|
21386
|
+
},
|
|
21387
|
+
onClick: () => {
|
|
21388
|
+
setCurrent(index);
|
|
21389
|
+
setPreviewVisible(true);
|
|
21390
|
+
}
|
|
21391
|
+
})
|
|
21392
|
+
}, imageSrc);
|
|
21395
21393
|
})
|
|
21396
|
-
})
|
|
21397
|
-
})
|
|
21394
|
+
}))
|
|
21395
|
+
}), customArrows && images && images.length > 1 && /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
21398
21396
|
children: [/*#__PURE__*/jsxRuntime.jsx(CustomArrowButton, {
|
|
21399
21397
|
icon: /*#__PURE__*/jsxRuntime.jsx(Icons.LeftOutlined, {}),
|
|
21400
21398
|
onClick: goToPrevious,
|
|
@@ -21408,7 +21406,7 @@ function ImageCarousel(_ref) {
|
|
|
21408
21406
|
hoverIconColor: arrowHoverIconColor
|
|
21409
21407
|
})]
|
|
21410
21408
|
})]
|
|
21411
|
-
}),
|
|
21409
|
+
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
21412
21410
|
style: {
|
|
21413
21411
|
display: "none"
|
|
21414
21412
|
},
|
|
@@ -21435,6 +21433,17 @@ function ImageCarousel(_ref) {
|
|
|
21435
21433
|
})]
|
|
21436
21434
|
});
|
|
21437
21435
|
}
|
|
21436
|
+
ImageCarousel.propTypes = {
|
|
21437
|
+
title: PropTypes__default["default"].string.isRequired,
|
|
21438
|
+
images: PropTypes__default["default"].array.isRequired,
|
|
21439
|
+
height: PropTypes__default["default"].number,
|
|
21440
|
+
fallback: PropTypes__default["default"].string,
|
|
21441
|
+
activeDotColor: PropTypes__default["default"].string,
|
|
21442
|
+
inactiveDotColor: PropTypes__default["default"].string,
|
|
21443
|
+
arrowIconColor: PropTypes__default["default"].string,
|
|
21444
|
+
arrowHoverIconColor: PropTypes__default["default"].string,
|
|
21445
|
+
customArrows: PropTypes__default["default"].bool
|
|
21446
|
+
};
|
|
21438
21447
|
|
|
21439
21448
|
var Style$w = dt.div`
|
|
21440
21449
|
border: 1px solid var(--base-gray-40);
|
package/package.json
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import React from "react";
|
|
1
2
|
import { Button } from "antd";
|
|
2
3
|
import { useState } from "react";
|
|
4
|
+
import PropTypes from "prop-types";
|
|
3
5
|
|
|
4
6
|
function CustomArrowButton({
|
|
5
7
|
icon,
|
|
@@ -49,4 +51,13 @@ function CustomArrowButton({
|
|
|
49
51
|
)
|
|
50
52
|
}
|
|
51
53
|
|
|
54
|
+
CustomArrowButton.propTypes = {
|
|
55
|
+
icon: PropTypes.node.isRequired,
|
|
56
|
+
onClick: PropTypes.func,
|
|
57
|
+
isLeft: PropTypes.bool,
|
|
58
|
+
iconColor: PropTypes.string,
|
|
59
|
+
hoverIconColor: PropTypes.string,
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
|
|
52
63
|
export default CustomArrowButton
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React, { useState, useRef } from "react";
|
|
2
|
-
import styled from "styled-components";
|
|
3
2
|
import CarouselWidget from "../CarouselWidget/index.jsx";
|
|
4
|
-
import { Image, Carousel
|
|
3
|
+
import { Image, Carousel } from "antd";
|
|
5
4
|
import { LeftOutlined, RightOutlined } from "@ant-design/icons";
|
|
6
5
|
import CustomArrowButton from "./components/CustomArrowButton/index.js";
|
|
7
6
|
import { StyledCarouselWrapper } from "./style.js";
|
|
7
|
+
import PropTypes from "prop-types";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* @typedef {Object} ImageObject
|
|
@@ -44,6 +44,7 @@ import { StyledCarouselWrapper } from "./style.js";
|
|
|
44
44
|
* @param {string} [props.inactiveDotColor="rgba(255, 255, 255, 0.3)"] - Color of inactive dots
|
|
45
45
|
* @param {string} [props.arrowIconColor="#666"] - Default color of arrow icons
|
|
46
46
|
* @param {string} [props.arrowHoverIconColor="#1890ff"] - Color of arrow icons on hover
|
|
47
|
+
* @param {boolean} [props.customArrows=false] - Whether to show custom navigation arrows
|
|
47
48
|
* @param {Object} [props.rest] - Additional props passed to the underlying CarouselWidget component
|
|
48
49
|
*
|
|
49
50
|
* @features
|
|
@@ -91,8 +92,6 @@ function ImageCarousel({
|
|
|
91
92
|
carouselRef.current?.next();
|
|
92
93
|
};
|
|
93
94
|
|
|
94
|
-
// Check if images array is empty or invalid
|
|
95
|
-
const hasImages = images && images.length > 0;
|
|
96
95
|
|
|
97
96
|
return (
|
|
98
97
|
<>
|
|
@@ -102,14 +101,14 @@ function ImageCarousel({
|
|
|
102
101
|
>
|
|
103
102
|
<CarouselWidget
|
|
104
103
|
title={title}
|
|
105
|
-
{...rest}
|
|
106
104
|
arrows={false}
|
|
107
|
-
ref={carouselRef}
|
|
105
|
+
// ref={carouselRef}
|
|
108
106
|
afterChange={handleCarouselChange}
|
|
109
|
-
infinite
|
|
110
|
-
dots={
|
|
107
|
+
infinite
|
|
108
|
+
dots={false}
|
|
111
109
|
>
|
|
112
|
-
|
|
110
|
+
<Carousel ref={carouselRef} afterChange={handleCarouselChange} {...rest} infinite>
|
|
111
|
+
{images.map((image, index) => {
|
|
113
112
|
const imageSrc = typeof image === "string" ? image : image.src;
|
|
114
113
|
const imageAlt =
|
|
115
114
|
typeof image === "string"
|
|
@@ -135,25 +134,11 @@ function ImageCarousel({
|
|
|
135
134
|
/>
|
|
136
135
|
</div>
|
|
137
136
|
);
|
|
138
|
-
})
|
|
139
|
-
|
|
140
|
-
<div>
|
|
141
|
-
<Image
|
|
142
|
-
src="/assets/images/no-image.svg"
|
|
143
|
-
alt="No images available"
|
|
144
|
-
height={height}
|
|
145
|
-
width="100%"
|
|
146
|
-
fallback={fallback}
|
|
147
|
-
preview={false}
|
|
148
|
-
style={{
|
|
149
|
-
objectFit: "contain",
|
|
150
|
-
}}
|
|
151
|
-
/>
|
|
152
|
-
</div>
|
|
153
|
-
)}
|
|
137
|
+
})}
|
|
138
|
+
</Carousel>
|
|
154
139
|
</CarouselWidget>
|
|
155
140
|
|
|
156
|
-
{
|
|
141
|
+
{customArrows && images && images.length > 1 && (
|
|
157
142
|
<>
|
|
158
143
|
<CustomArrowButton
|
|
159
144
|
icon={<LeftOutlined />}
|
|
@@ -172,21 +157,19 @@ function ImageCarousel({
|
|
|
172
157
|
)}
|
|
173
158
|
</StyledCarouselWrapper>
|
|
174
159
|
|
|
175
|
-
{
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
>
|
|
189
|
-
{images.map((image, index) => {
|
|
160
|
+
<div style={{ display: "none" }}>
|
|
161
|
+
<Image.PreviewGroup
|
|
162
|
+
preview={{
|
|
163
|
+
visible: previewVisible,
|
|
164
|
+
current,
|
|
165
|
+
onVisibleChange: (vis) => setPreviewVisible(vis),
|
|
166
|
+
onChange: (idx) => {
|
|
167
|
+
setCurrent(idx);
|
|
168
|
+
carouselRef.current?.goTo(idx);
|
|
169
|
+
},
|
|
170
|
+
}}
|
|
171
|
+
>
|
|
172
|
+
{images.map((image, index) => {
|
|
190
173
|
const imageSrc = typeof image === "string" ? image : image.src;
|
|
191
174
|
const imageAlt =
|
|
192
175
|
typeof image === "string"
|
|
@@ -194,12 +177,23 @@ function ImageCarousel({
|
|
|
194
177
|
: image.alt;
|
|
195
178
|
|
|
196
179
|
return <Image key={imageSrc} src={imageSrc} alt={imageAlt} />;
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
)}
|
|
180
|
+
})}
|
|
181
|
+
</Image.PreviewGroup>
|
|
182
|
+
</div>
|
|
201
183
|
</>
|
|
202
184
|
);
|
|
203
185
|
}
|
|
204
186
|
|
|
187
|
+
ImageCarousel.propTypes = {
|
|
188
|
+
title: PropTypes.string.isRequired,
|
|
189
|
+
images: PropTypes.array.isRequired,
|
|
190
|
+
height: PropTypes.number,
|
|
191
|
+
fallback: PropTypes.string,
|
|
192
|
+
activeDotColor: PropTypes.string,
|
|
193
|
+
inactiveDotColor: PropTypes.string,
|
|
194
|
+
arrowIconColor: PropTypes.string,
|
|
195
|
+
arrowHoverIconColor: PropTypes.string,
|
|
196
|
+
customArrows: PropTypes.bool,
|
|
197
|
+
};
|
|
198
|
+
|
|
205
199
|
export default ImageCarousel;
|
|
@@ -4,12 +4,15 @@ export const StyledCarouselWrapper = styled.div`
|
|
|
4
4
|
position: relative;
|
|
5
5
|
|
|
6
6
|
.ant-carousel .slick-dots li button {
|
|
7
|
-
background: ${props => props.inactiveDotColor} !important;
|
|
8
|
-
opacity: 1 !important;
|
|
7
|
+
background: ${props => props.inactiveDotColor} !important;
|
|
9
8
|
}
|
|
10
|
-
|
|
9
|
+
|
|
11
10
|
.ant-carousel .slick-dots li.slick-active button {
|
|
11
|
+
background: ${props => props.activeDotColor} !important;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.ant-carousel .slick-dots li.slick-active::after {
|
|
12
15
|
background: ${props => props.activeDotColor} !important;
|
|
13
|
-
opacity: 1 !important;
|
|
14
16
|
}
|
|
17
|
+
|
|
15
18
|
`;
|
|
@@ -2,96 +2,76 @@ import ProjectWidget from "./index.jsx";
|
|
|
2
2
|
import ThemeLayout from "../../../ThemeLayout/index.jsx";
|
|
3
3
|
import Widget from "../index.jsx";
|
|
4
4
|
import DashboardLayout from "../../DashboardLayout/index.jsx";
|
|
5
|
-
import DafHEader from "../../../Header/index.jsx";
|
|
6
5
|
export default {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
6
|
+
title: "Dashboard/Widgets/ProjectWidget",
|
|
7
|
+
component: ProjectWidget,
|
|
8
|
+
tags: ["autodocs"],
|
|
9
|
+
decorators: [
|
|
10
|
+
(Story) => (
|
|
11
|
+
<div style={{ margin: "3em" }}>
|
|
12
|
+
<ThemeLayout>
|
|
13
|
+
<Story />
|
|
14
|
+
</ThemeLayout>
|
|
15
|
+
</div>
|
|
16
|
+
),
|
|
17
|
+
],
|
|
19
18
|
};
|
|
20
19
|
|
|
21
20
|
export const Primary = {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
>
|
|
58
|
-
<section
|
|
59
|
-
style={{
|
|
60
|
-
overflowX: "auto",
|
|
61
|
-
maxWidth: "100%",
|
|
62
|
-
}}
|
|
63
|
-
>
|
|
64
|
-
<Widget title="Project Catalogue" className="with-border-header">
|
|
65
|
-
<section className="nowrap horizontal-scroll" style={{}}>
|
|
66
|
-
<ProjectWidget {...args} title="ALL SDGS" />
|
|
21
|
+
name: "ProjectWidget",
|
|
22
|
+
args: {
|
|
23
|
+
onLinkClick: () => {},
|
|
24
|
+
linkIcon: "Link",
|
|
25
|
+
sdgList: [
|
|
26
|
+
"noPoverty",
|
|
27
|
+
"zeroHunger",
|
|
28
|
+
"goodHealthWellbeing",
|
|
29
|
+
"qualityEducation",
|
|
30
|
+
"genderEquality",
|
|
31
|
+
"cleanWaterSanitation",
|
|
32
|
+
"affordableCleanEnergy",
|
|
33
|
+
"decentWorkEconomicGrowth",
|
|
34
|
+
"industryInnovationInfrastructure",
|
|
35
|
+
"reducedInequalities",
|
|
36
|
+
"sustainableCitiesCommunities",
|
|
37
|
+
"responsibleConsumptionProduction",
|
|
38
|
+
"climateAction",
|
|
39
|
+
"lifeBelowWater",
|
|
40
|
+
"lifeOnLand",
|
|
41
|
+
"peaceJusticeStrongInstitutions",
|
|
42
|
+
"partnershipsForGoals",
|
|
43
|
+
],
|
|
44
|
+
items: [
|
|
45
|
+
{ label: "Item 1", render: () => <span>Value 1</span> },
|
|
46
|
+
{ label: "Item 2", render: () => <span>Value 2</span> },
|
|
47
|
+
{ label: "Item 3", render: () => <span>Value 3</span> },
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
render: (args) => {
|
|
51
|
+
return (
|
|
52
|
+
<DashboardLayout>
|
|
53
|
+
<Widget title="Project Catalogue" className="with-border-header">
|
|
54
|
+
<section>
|
|
55
|
+
<ProjectWidget {...args} title="ALL SDGS" />
|
|
67
56
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
57
|
+
<ProjectWidget
|
|
58
|
+
{...args}
|
|
59
|
+
title="SOME SDGS"
|
|
60
|
+
sdgList={["noPoverty", "lifeBelowWater"]}
|
|
61
|
+
image="data:image/jpeg;base64,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"
|
|
62
|
+
/>
|
|
74
63
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
</Widget>
|
|
89
|
-
</section>
|
|
90
|
-
|
|
91
|
-
<section>
|
|
92
|
-
<Widget title="FUCK"></Widget>
|
|
93
|
-
</section>
|
|
94
|
-
</DashboardLayout>
|
|
95
|
-
);
|
|
96
|
-
},
|
|
64
|
+
<ProjectWidget
|
|
65
|
+
{...args}
|
|
66
|
+
sdgList={[]}
|
|
67
|
+
title="No SDGS"
|
|
68
|
+
image={
|
|
69
|
+
"https://static0.srcdn.com/wordpress/wp-content/uploads/2023/03/the-main-characters-of-the-hangover-in-an-elevator.jpg"
|
|
70
|
+
}
|
|
71
|
+
/>
|
|
72
|
+
</section>
|
|
73
|
+
</Widget>
|
|
74
|
+
</DashboardLayout>
|
|
75
|
+
);
|
|
76
|
+
},
|
|
97
77
|
};
|
|
@@ -191,7 +191,7 @@
|
|
|
191
191
|
.content {
|
|
192
192
|
width: 100%;
|
|
193
193
|
flex: 1;
|
|
194
|
-
|
|
194
|
+
overflow: auto;
|
|
195
195
|
display: flex;
|
|
196
196
|
|
|
197
197
|
.view-content {
|
|
@@ -301,7 +301,6 @@
|
|
|
301
301
|
.daf-analysis-layout {
|
|
302
302
|
display: flex;
|
|
303
303
|
flex-direction: column;
|
|
304
|
-
overflow-x: hidden; // Dont make the page overflow
|
|
305
304
|
|
|
306
305
|
.go-select-cont {
|
|
307
306
|
padding: var(--size-lg);
|
|
@@ -356,7 +355,6 @@
|
|
|
356
355
|
display: flex;
|
|
357
356
|
flex-wrap: wrap;
|
|
358
357
|
gap: var(--size-lg);
|
|
359
|
-
|
|
360
358
|
//FUTURE ILVI - remove this
|
|
361
359
|
@media (max-width: 850px) {
|
|
362
360
|
flex-direction: column;
|
|
@@ -366,7 +364,6 @@
|
|
|
366
364
|
.widget {
|
|
367
365
|
flex: 1;
|
|
368
366
|
|
|
369
|
-
|
|
370
367
|
&.dds-widget {
|
|
371
368
|
min-width: 400px;
|
|
372
369
|
}
|
|
@@ -377,31 +374,6 @@
|
|
|
377
374
|
flex-wrap: nowrap;
|
|
378
375
|
}
|
|
379
376
|
|
|
380
|
-
.horizontal-scroll {
|
|
381
|
-
overflow-x: auto;
|
|
382
|
-
overflow-y: hidden;
|
|
383
|
-
scrollbar-width: thin;
|
|
384
|
-
scrollbar-color: #c1c1c1 #f1f1f1;
|
|
385
|
-
|
|
386
|
-
&::-webkit-scrollbar {
|
|
387
|
-
height: 8px;
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
&::-webkit-scrollbar-track {
|
|
391
|
-
background: #f1f1f1;
|
|
392
|
-
border-radius: 4px;
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
&::-webkit-scrollbar-thumb {
|
|
396
|
-
background: #c1c1c1;
|
|
397
|
-
border-radius: 4px;
|
|
398
|
-
|
|
399
|
-
&:hover {
|
|
400
|
-
background: #a8a8a8;
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
|
|
405
377
|
&.own-data-collapsed {
|
|
406
378
|
.overflow-section {
|
|
407
379
|
max-width: calc(100vw - 48px - 250px);
|
|
@@ -526,4 +498,4 @@
|
|
|
526
498
|
}
|
|
527
499
|
}
|
|
528
500
|
}
|
|
529
|
-
}
|
|
501
|
+
}
|
package/.env
DELETED
package/.vscode/settings.json
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"cSpell.words": ["cukura"],
|
|
3
|
-
"files.autoSave": "afterDelay",
|
|
4
|
-
"editor.wordWrap": "on",
|
|
5
|
-
"editor.autoClosingBrackets": "always",
|
|
6
|
-
"editor.autoClosingComments": "always",
|
|
7
|
-
"editor.autoClosingQuotes": "always",
|
|
8
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
9
|
-
"editor.formatOnPaste": true,
|
|
10
|
-
"editor.formatOnSave": true,
|
|
11
|
-
"notebook.defaultFormatter": "esbenp.prettier-vscode",
|
|
12
|
-
"javascript.format.semicolons": "insert"
|
|
13
|
-
}
|