@evergis/react 4.0.57 → 4.0.59

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.
@@ -1,3 +1,3 @@
1
1
  import { FC } from 'react';
2
2
  import { ContainerProps } from '../../types';
3
- export declare const FeatureCardGradientHeader: FC<ContainerProps>;
3
+ export declare const FeatureCardBackgroundHeader: FC<ContainerProps>;
@@ -1,5 +1,5 @@
1
1
  export declare const HeaderIcon: import('styled-components').StyledComponent<"div", any, import('@evergis/uilib-gl').FlexProps, never>;
2
- export declare const GradientHeaderWrapper: import('styled-components').StyledComponent<"div", any, {
2
+ export declare const BackgroundHeaderWrapper: import('styled-components').StyledComponent<"div", any, {
3
3
  $fontColor?: string;
4
4
  $bgColor?: string;
5
5
  $height?: number;
@@ -6,6 +6,7 @@ export declare const FeatureTitleContainer: import('styled-components').StyledCo
6
6
  clickable?: boolean;
7
7
  }, never>;
8
8
  export declare const Header: import('styled-components').StyledComponent<"div", any, import('@evergis/uilib-gl').FlexProps & {
9
+ $overlay?: string;
9
10
  $isRow?: boolean;
10
11
  }, never>;
11
12
  export declare const DefaultHeaderWrapper: import('styled-components').StyledComponent<"div", any, {
@@ -3,5 +3,5 @@ export * from './DashboardDefaultHeader';
3
3
  export * from './DashboardDefaultHeader/styled';
4
4
  export * from './FeatureCardDefaultHeader';
5
5
  export * from './FeatureCardDefaultHeader/styled';
6
- export * from './FeatureCardGradientHeader';
6
+ export * from './FeatureCardBackgroundHeader';
7
7
  export * from './FeatureCardSlideshowHeader';
@@ -91,6 +91,7 @@ export interface ConfigOptions {
91
91
  separator?: string;
92
92
  lineBreak?: string;
93
93
  image?: string;
94
+ overlay?: string;
94
95
  bgColor?: string;
95
96
  noBg?: boolean;
96
97
  center?: boolean;
@@ -346,7 +347,7 @@ export declare enum ContainerTemplate {
346
347
  export declare enum HeaderTemplate {
347
348
  Default = "Default",
348
349
  Slideshow = "Slideshow",
349
- Gradient = "Gradient"
350
+ Background = "Background"
350
351
  }
351
352
  export interface GetRenderElementProps extends Omit<ContainerProps, "renderElement"> {
352
353
  expandedContainers?: Record<string, boolean>;
package/dist/index.js CHANGED
@@ -3405,7 +3405,7 @@ exports.HeaderTemplate = void 0;
3405
3405
  (function (HeaderTemplate) {
3406
3406
  HeaderTemplate["Default"] = "Default";
3407
3407
  HeaderTemplate["Slideshow"] = "Slideshow";
3408
- HeaderTemplate["Gradient"] = "Gradient";
3408
+ HeaderTemplate["Background"] = "Background";
3409
3409
  })(exports.HeaderTemplate || (exports.HeaderTemplate = {}));
3410
3410
  exports.WidgetType = void 0;
3411
3411
  (function (WidgetType) {
@@ -3838,8 +3838,12 @@ const formatAttributeValue = ({ t, type, value, stringFormat, noUnits = false })
3838
3838
  return formatPointValue({ t, stringFormat, value: coordinates });
3839
3839
  }
3840
3840
  if (type === api.AttributeType.DateTime) {
3841
- if (!stringFormat?.format || isNilValue)
3841
+ if (isNilValue) {
3842
3842
  return null;
3843
+ }
3844
+ if (!stringFormat?.format) {
3845
+ return value;
3846
+ }
3843
3847
  return formatDateValue(stringFormat, value);
3844
3848
  }
3845
3849
  if ([
@@ -8743,6 +8747,21 @@ const RowHeaderMixin = styled.css `
8743
8747
  max-width: calc(100% - 3.8rem);
8744
8748
  }
8745
8749
  `;
8750
+ const OverlayHeaderMixin = (overlay) => styled.css `
8751
+ &&& {
8752
+ :after {
8753
+ content: "";
8754
+ z-index: 2;
8755
+ position: absolute;
8756
+ top: 0;
8757
+ left: 0;
8758
+ width: 100%;
8759
+ height: 100%;
8760
+ background: ${overlay};
8761
+ pointer-events: none;
8762
+ }
8763
+ }
8764
+ `;
8746
8765
  const Header = styled(uilibGl.Flex) `
8747
8766
  z-index: 1;
8748
8767
  position: relative;
@@ -8753,6 +8772,8 @@ const Header = styled(uilibGl.Flex) `
8753
8772
  overflow: hidden;
8754
8773
 
8755
8774
  ${({ $isRow }) => $isRow && RowHeaderMixin};
8775
+
8776
+ ${({ $overlay }) => $overlay && OverlayHeaderMixin($overlay)};
8756
8777
  `;
8757
8778
  const DefaultHeaderWrapper = styled.div `
8758
8779
  width: ${({ withPadding }) => (withPadding ? "100%" : "calc(100% + 1rem)")};
@@ -8863,8 +8884,8 @@ const FeatureCardDefaultHeader = ({ noFeature }) => {
8863
8884
  const { config } = useWidgetConfig(exports.WidgetType.FeatureCard);
8864
8885
  const { header } = config || {};
8865
8886
  const { options } = header || {};
8866
- const { themeName, withPadding, column, height } = options || {};
8867
- return (jsxRuntime.jsx(DefaultHeaderWrapper, { withPadding: withPadding, height: height, children: jsxRuntime.jsx(uilibGl.ThemeProvider, { theme: getThemeByName(themeName), children: jsxRuntime.jsx(Header, { "$isRow": !column, children: jsxRuntime.jsxs(HeaderFrontView, { isDefault: !column, children: [jsxRuntime.jsxs(HeaderContainer, { children: [jsxRuntime.jsx(HeaderLayerIcon, {}), jsxRuntime.jsx(HeaderTitle, { noFeature: noFeature })] }), jsxRuntime.jsx(FeatureCardButtons, {})] }) }) }) }));
8887
+ const { themeName, withPadding, column, height, overlay } = options || {};
8888
+ return (jsxRuntime.jsx(DefaultHeaderWrapper, { withPadding: withPadding, height: height, children: jsxRuntime.jsx(uilibGl.ThemeProvider, { theme: getThemeByName(themeName), children: jsxRuntime.jsx(Header, { "$overlay": overlay, "$isRow": !column, children: jsxRuntime.jsxs(HeaderFrontView, { isDefault: !column, children: [jsxRuntime.jsxs(HeaderContainer, { children: [jsxRuntime.jsx(HeaderLayerIcon, {}), jsxRuntime.jsx(HeaderTitle, { noFeature: noFeature })] }), jsxRuntime.jsx(FeatureCardButtons, {})] }) }) }) }));
8868
8889
  };
8869
8890
 
8870
8891
  const HeaderWrapperMixin = styled.css `
@@ -8941,10 +8962,10 @@ const BottomBlurHeaderMixin = styled.css `
8941
8962
  &::after {
8942
8963
  content: "";
8943
8964
  position: absolute;
8944
- left: 0;
8965
+ top: 0;
8945
8966
  right: 0;
8946
8967
  bottom: 0;
8947
- height: 2rem;
8968
+ left: 0;
8948
8969
  z-index: 11;
8949
8970
  pointer-events: none;
8950
8971
  background: ${({ theme: { palette } }) => palette.background};
@@ -8957,7 +8978,7 @@ const BottomBlurHeaderMixin = styled.css `
8957
8978
  z-index: 12;
8958
8979
  }
8959
8980
  `;
8960
- const GradientHeaderWrapper = styled.div `
8981
+ const BackgroundHeaderWrapper = styled.div `
8961
8982
  ${Header} {
8962
8983
  width: calc(100% + 1rem);
8963
8984
  height: ${({ $height }) => $height ? `${$height}px` : "auto"};
@@ -8976,24 +8997,6 @@ const GradientHeaderWrapper = styled.div `
8976
8997
  ${({ $bottomBlur }) => $bottomBlur && BottomBlurHeaderMixin};
8977
8998
  `;
8978
8999
 
8979
- const FeatureCardGradientHeader = () => {
8980
- const { config } = useWidgetConfig(exports.WidgetType.FeatureCard);
8981
- const { header } = config || {};
8982
- const { options } = header || {};
8983
- const { fontColor, bgColor, height, bigIcon, withPadding, bottomBlur, themeName, column } = options || {};
8984
- const renderElement = useHeaderRender(header);
8985
- return (jsxRuntime.jsx(GradientHeaderWrapper, { "$fontColor": fontColor, "$bgColor": bgColor, "$height": height, "$bigIcon": bigIcon, "$withPadding": withPadding, "$bottomBlur": bottomBlur, children: jsxRuntime.jsx(uilibGl.ThemeProvider, { theme: getThemeByName(themeName), children: jsxRuntime.jsxs(Header, { "$isRow": !column, children: [jsxRuntime.jsxs(HeaderFrontView, { children: [jsxRuntime.jsxs(HeaderContainer, { column: column, children: [jsxRuntime.jsx(HeaderLayerIcon, {}), jsxRuntime.jsx(FeatureCardTitle, { title: renderElement({
8986
- id: "title",
8987
- wrap: false,
8988
- }), description: renderElement({
8989
- id: "description",
8990
- wrap: false,
8991
- }) })] }), jsxRuntime.jsx(FeatureCardButtons, {})] }), jsxRuntime.jsx(HeaderIcon, { children: renderElement({
8992
- id: "icon",
8993
- wrap: false,
8994
- }) })] }) }) }));
8995
- };
8996
-
8997
9000
  const ImageContainerButton = styled(uilibGl.FlatButton) `
8998
9001
  min-height: 1.5rem;
8999
9002
  border-radius: ${({ theme: { borderRadius } }) => borderRadius.large};
@@ -9108,6 +9111,7 @@ const SmallPreviewRight = styled(SmallPreviewControl).attrs(() => ({
9108
9111
  `;
9109
9112
  const imgSlideShowMixin = styled.css `
9110
9113
  &:nth-child(${({ prevIndex }) => prevIndex}) {
9114
+ visibility: visible;
9111
9115
  z-index: 2;
9112
9116
  position: absolute;
9113
9117
  top: 0;
@@ -9115,6 +9119,7 @@ const imgSlideShowMixin = styled.css `
9115
9119
  right: 0;
9116
9120
  bottom: 0;
9117
9121
  opacity: 0;
9122
+ pointer-events: none;
9118
9123
 
9119
9124
  animation-duration: 0.25s;
9120
9125
  animation-name: fadeOut;
@@ -9156,6 +9161,7 @@ const SmallPreviewContainer$1 = styled.div `
9156
9161
  }
9157
9162
 
9158
9163
  img {
9164
+ visibility: hidden;
9159
9165
  z-index: 0;
9160
9166
  cursor: pointer;
9161
9167
  position: absolute;
@@ -9168,6 +9174,7 @@ const SmallPreviewContainer$1 = styled.div `
9168
9174
  object-fit: cover;
9169
9175
 
9170
9176
  &:nth-child(${({ currentIndex }) => currentIndex}) {
9177
+ visibility: visible;
9171
9178
  z-index: 1;
9172
9179
  }
9173
9180
 
@@ -9182,7 +9189,7 @@ const NoLiveSnapshot = () => {
9182
9189
 
9183
9190
  const SmallPreview = ({ images, totalCount, currentIndex, isLoading, setCurrentIndex, onClick, onNextPage }) => {
9184
9191
  const { t } = useGlobalContext();
9185
- const [prevIndex, setPrevIndex] = React.useState(currentIndex + 1);
9192
+ const [prevIndex, setPrevIndex] = React.useState(currentIndex);
9186
9193
  const isPrevDisabled = currentIndex === 0;
9187
9194
  const total = totalCount || images?.length || 0;
9188
9195
  const isNextDisabled = currentIndex === total - 1;
@@ -9201,7 +9208,7 @@ const SmallPreview = ({ images, totalCount, currentIndex, isLoading, setCurrentI
9201
9208
  onNextPage();
9202
9209
  }
9203
9210
  }, [currentIndex, images, isNextDisabled, onNextPage, setCurrentIndex]);
9204
- return (jsxRuntime.jsxs(SmallPreviewContainer$1, { currentIndex: currentIndex + 1, prevIndex: prevIndex + 1, children: [isLoading && jsxRuntime.jsx(uilibGl.LinearProgress, {}), images.length > 1 && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(SmallPreviewLeft, { "$isDisabled": isPrevDisabled, onClick: prev }), jsxRuntime.jsx(SmallPreviewRight, { "$isDisabled": isNextDisabled, onClick: next }), jsxRuntime.jsx(SmallPreviewCounter, { children: jsxRuntime.jsxs("div", { children: [currentIndex + 1, " ", t("of", { ns: "dashboard", defaultValue: "из" }), " ", total] }) })] })), jsxRuntime.jsx(SmallPreviewImages, { onClick: onClick, children: images.map(image => (jsxRuntime.jsx("img", { src: image.src, alt: "" }, image.src))) })] }));
9211
+ return (jsxRuntime.jsxs(SmallPreviewContainer$1, { currentIndex: currentIndex + 1, prevIndex: prevIndex + 1, children: [isLoading && jsxRuntime.jsx(uilibGl.LinearProgress, {}), images.length > 1 && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(SmallPreviewLeft, { "$isDisabled": isPrevDisabled, onClick: prev }), jsxRuntime.jsx(SmallPreviewRight, { "$isDisabled": isNextDisabled, onClick: next }), jsxRuntime.jsx(SmallPreviewCounter, { children: jsxRuntime.jsxs("div", { children: [currentIndex + 1, " ", t("of", { ns: "dashboard", defaultValue: "из" }), " ", total] }) })] })), jsxRuntime.jsx(SmallPreviewImages, { onClick: onClick, children: images.map((image, index) => (jsxRuntime.jsx("img", { src: image.src, alt: "" }, index))) })] }));
9205
9212
  };
9206
9213
 
9207
9214
  // const DEFAULT_ARCHIVED_PERIOD = "#24h";
@@ -9776,7 +9783,7 @@ const ElementSlideshow = ({ elementConfig, type, renderElement }) => {
9776
9783
  const { images } = useElementSlideshow({ type, elementConfig });
9777
9784
  const handleOpenGallery = React.useCallback(() => setPreviewIndex(currentIndex), [currentIndex]);
9778
9785
  const handleCloseGallery = React.useCallback(() => setPreviewIndex(null), []);
9779
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ExpandableTitle, { elementConfig: elementConfig, type: type, renderElement: renderElement }), isVisible && (jsxRuntime.jsxs(SmallPreviewContainer, { children: [jsxRuntime.jsx(SmallPreview, { images: images, currentIndex: currentIndex, setCurrentIndex: setCurrentIndex, onClick: handleOpenGallery }), previewIndex !== null && (jsxRuntime.jsx(uilibGl.Preview, { images: images, initialIndex: previewIndex, isOpen: previewIndex !== null, onClose: handleCloseGallery }, previewIndex))] }))] }));
9786
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ExpandableTitle, { elementConfig: elementConfig, type: type, renderElement: renderElement }), isVisible && (jsxRuntime.jsxs(SmallPreviewContainer, { children: [jsxRuntime.jsx(SmallPreview, { images: images, currentIndex: currentIndex, setCurrentIndex: setCurrentIndex, onClick: handleOpenGallery }), previewIndex !== null && (jsxRuntime.jsx(uilibGl.Preview, { images: images, initialIndex: previewIndex, isOpen: true, onClose: handleCloseGallery }, previewIndex))] }))] }));
9780
9787
  };
9781
9788
 
9782
9789
  const ElementSvg = React.memo(({ type, elementConfig, ...rest }) => {
@@ -9830,7 +9837,8 @@ const SlideshowHeaderWrapper = styled.div `
9830
9837
  position: absolute;
9831
9838
  top: 0;
9832
9839
  left: 0;
9833
- width: 100%;
9840
+ right: 0;
9841
+ pointer-events: none;
9834
9842
  }
9835
9843
 
9836
9844
  :before {
@@ -9879,16 +9887,42 @@ const HeaderSlideshow = styled.div `
9879
9887
  min-height: inherit;
9880
9888
  object-position: center;
9881
9889
  object-fit: cover;
9890
+ transition: transform 0.3s ease;
9891
+ }
9892
+
9893
+ &:hover img {
9894
+ transform: scale(1.1);
9882
9895
  }
9883
9896
  `;
9884
9897
 
9898
+ const FeatureCardBackgroundHeader = () => {
9899
+ const { config } = useWidgetConfig(exports.WidgetType.FeatureCard);
9900
+ const { header } = config || {};
9901
+ const { options } = header || {};
9902
+ const { fontColor, bgColor, height, overlay, bigIcon, withPadding, bottomBlur, themeName, column } = options || {};
9903
+ const renderElement = useHeaderRender(header);
9904
+ return (jsxRuntime.jsx(BackgroundHeaderWrapper, { "$fontColor": fontColor, "$bgColor": bgColor, "$height": height, "$bigIcon": bigIcon, "$withPadding": withPadding, "$bottomBlur": bottomBlur, children: jsxRuntime.jsx(uilibGl.ThemeProvider, { theme: getThemeByName(themeName), children: jsxRuntime.jsxs(Header, { "$overlay": overlay, "$isRow": !column, children: [jsxRuntime.jsxs(HeaderFrontView, { children: [jsxRuntime.jsxs(HeaderContainer, { column: column, children: [jsxRuntime.jsx(HeaderLayerIcon, {}), jsxRuntime.jsx(FeatureCardTitle, { title: renderElement({
9905
+ id: "title",
9906
+ wrap: false,
9907
+ }), description: renderElement({
9908
+ id: "description",
9909
+ wrap: false,
9910
+ }) })] }), jsxRuntime.jsx(FeatureCardButtons, {})] }), jsxRuntime.jsx(ImageContainerBg, { children: renderElement({
9911
+ id: "bgImage",
9912
+ wrap: false,
9913
+ }) }), jsxRuntime.jsx(HeaderIcon, { children: renderElement({
9914
+ id: "icon",
9915
+ wrap: false,
9916
+ }) })] }) }) }));
9917
+ };
9918
+
9885
9919
  const FeatureCardSlideshowHeader = () => {
9886
9920
  const { config } = useWidgetConfig(exports.WidgetType.FeatureCard);
9887
9921
  const { header } = config || {};
9888
9922
  const { options } = header || {};
9889
- const { height, fontColor, withPadding, themeName, column } = options || {};
9923
+ const { height, fontColor, withPadding, themeName, column, overlay } = options || {};
9890
9924
  const renderElement = useHeaderRender(header);
9891
- return (jsxRuntime.jsx(SlideshowHeaderWrapper, { fontColor: fontColor, withPadding: withPadding, height: height, big: true, children: jsxRuntime.jsx(uilibGl.ThemeProvider, { theme: getThemeByName(themeName), children: jsxRuntime.jsxs(Header, { "$isRow": !column, children: [jsxRuntime.jsxs(HeaderFrontView, { children: [jsxRuntime.jsxs(HeaderContainer, { column: column, children: [jsxRuntime.jsx(HeaderLayerIcon, {}), jsxRuntime.jsx(FeatureCardTitle, { title: renderElement({
9925
+ return (jsxRuntime.jsx(SlideshowHeaderWrapper, { fontColor: fontColor, withPadding: withPadding, height: height, big: true, children: jsxRuntime.jsx(uilibGl.ThemeProvider, { theme: getThemeByName(themeName), children: jsxRuntime.jsxs(Header, { "$overlay": overlay, "$isRow": !column, children: [jsxRuntime.jsxs(HeaderFrontView, { children: [jsxRuntime.jsxs(HeaderContainer, { column: column, children: [jsxRuntime.jsx(HeaderLayerIcon, {}), jsxRuntime.jsx(FeatureCardTitle, { title: renderElement({
9892
9926
  id: "title",
9893
9927
  wrap: false,
9894
9928
  }), description: renderElement({
@@ -10330,8 +10364,8 @@ const getFeatureCardHeader = (templateName) => {
10330
10364
  switch (templateName) {
10331
10365
  case exports.HeaderTemplate.Slideshow:
10332
10366
  return FeatureCardSlideshowHeader;
10333
- case exports.HeaderTemplate.Gradient:
10334
- return FeatureCardGradientHeader;
10367
+ case exports.HeaderTemplate.Background:
10368
+ return FeatureCardBackgroundHeader;
10335
10369
  case exports.HeaderTemplate.Default:
10336
10370
  default:
10337
10371
  return FeatureCardDefaultHeader;
@@ -13504,10 +13538,10 @@ exports.FEATURE_CARD_DEFAULT_COLORS = FEATURE_CARD_DEFAULT_COLORS;
13504
13538
  exports.FEATURE_CARD_OTHER_COLOR = FEATURE_CARD_OTHER_COLOR;
13505
13539
  exports.FILTERED_VALUE_OPACITY = FILTERED_VALUE_OPACITY;
13506
13540
  exports.FILTER_PREFIX = FILTER_PREFIX;
13541
+ exports.FeatureCardBackgroundHeader = FeatureCardBackgroundHeader;
13507
13542
  exports.FeatureCardButtons = FeatureCardButtons;
13508
13543
  exports.FeatureCardContext = FeatureCardContext;
13509
13544
  exports.FeatureCardDefaultHeader = FeatureCardDefaultHeader;
13510
- exports.FeatureCardGradientHeader = FeatureCardGradientHeader;
13511
13545
  exports.FeatureCardHeader = FeatureCardHeader;
13512
13546
  exports.FeatureCardProvider = FeatureCardProvider;
13513
13547
  exports.FeatureCardSlideshowHeader = FeatureCardSlideshowHeader;