@topconsultnpm/sdkui-react 6.20.0-dev1.111 → 6.20.0-dev1.113

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.
@@ -103,6 +103,8 @@ export const MenuItem = styled.div `
103
103
  transition: all 0.15s ease;
104
104
  position: relative;
105
105
  user-select: none;
106
+ -webkit-touch-callout: none;
107
+ -webkit-user-select: none;
106
108
  font-size: var(--base-font-size, 13px);
107
109
  color: ${props => props.$disabled ? '#999' : '#1a1a1a'};
108
110
  font-weight: 500;
@@ -131,6 +131,7 @@ const TMFloatingMenuBar = ({ containerRef, contextMenuItems = [], isConstrained
131
131
  isDragging: false,
132
132
  isConfigMode: false,
133
133
  orientation: initialConfig.orientation,
134
+ verticalDirection: 'down',
134
135
  items: [],
135
136
  draggedItemIndex: null,
136
137
  });
@@ -138,8 +139,10 @@ const TMFloatingMenuBar = ({ containerRef, contextMenuItems = [], isConstrained
138
139
  const dragOffset = useRef({ x: 0, y: 0 });
139
140
  const [dragOverIndex, setDragOverIndex] = useState(null);
140
141
  const [pixelPosition, setPixelPosition] = useState({ x: 0, y: 0 }); // Calculated pixel position
142
+ const [isOrientationChanging, setIsOrientationChanging] = useState(false); // Hide bar during orientation transition
141
143
  const containerSizeRef = useRef({ width: 0, height: 0 });
142
144
  const stateSnapshot = useRef(null);
145
+ const positionBeforeOrientationChange = useRef(null);
143
146
  const floatingBarItemIds = useRef(new Set());
144
147
  const floatingBarItemNames = useRef(new Set());
145
148
  useEffect(() => {
@@ -549,6 +552,7 @@ const TMFloatingMenuBar = ({ containerRef, contextMenuItems = [], isConstrained
549
552
  stateSnapshot.current = {
550
553
  items: [...s.items],
551
554
  orientation: s.orientation,
555
+ verticalDirection: s.verticalDirection,
552
556
  position: { ...s.position },
553
557
  };
554
558
  return { ...s, isConfigMode: true };
@@ -617,6 +621,7 @@ const TMFloatingMenuBar = ({ containerRef, contextMenuItems = [], isConstrained
617
621
  ...s,
618
622
  items: [...stateSnapshot.current.items],
619
623
  orientation: stateSnapshot.current.orientation,
624
+ verticalDirection: stateSnapshot.current.verticalDirection,
620
625
  position: { ...stateSnapshot.current.position },
621
626
  isConfigMode: true,
622
627
  }));
@@ -638,6 +643,7 @@ const TMFloatingMenuBar = ({ containerRef, contextMenuItems = [], isConstrained
638
643
  ...s,
639
644
  items: [...stateSnapshot.current.items],
640
645
  orientation: stateSnapshot.current.orientation,
646
+ verticalDirection: stateSnapshot.current.verticalDirection,
641
647
  position: { ...stateSnapshot.current.position },
642
648
  isConfigMode: false,
643
649
  }));
@@ -662,6 +668,7 @@ const TMFloatingMenuBar = ({ containerRef, contextMenuItems = [], isConstrained
662
668
  ...s,
663
669
  items: [...stateSnapshot.current.items],
664
670
  orientation: stateSnapshot.current.orientation,
671
+ verticalDirection: stateSnapshot.current.verticalDirection,
665
672
  position: { ...stateSnapshot.current.position },
666
673
  isConfigMode: false,
667
674
  }));
@@ -672,24 +679,89 @@ const TMFloatingMenuBar = ({ containerRef, contextMenuItems = [], isConstrained
672
679
  };
673
680
  const toggleOrientation = () => {
674
681
  const newOrientation = state.orientation === 'horizontal' ? 'vertical' : 'horizontal';
682
+ // Hide the bar during transition to prevent flicker
683
+ setIsOrientationChanging(true);
684
+ // When switching from vertical back to horizontal, restore the original position
685
+ if (state.orientation === 'vertical' && newOrientation === 'horizontal') {
686
+ if (positionBeforeOrientationChange.current) {
687
+ const savedPosition = positionBeforeOrientationChange.current.position;
688
+ const savedPixelPosition = positionBeforeOrientationChange.current.pixelPosition;
689
+ setPixelPosition(savedPixelPosition);
690
+ setState(s => ({
691
+ ...s,
692
+ orientation: newOrientation,
693
+ verticalDirection: 'down',
694
+ position: savedPosition,
695
+ }));
696
+ positionBeforeOrientationChange.current = null;
697
+ // Show the bar after the state has been applied
698
+ requestAnimationFrame(() => {
699
+ setIsOrientationChanging(false);
700
+ });
701
+ return;
702
+ }
703
+ }
704
+ // When switching to vertical, save current position and check if we need to expand upward
675
705
  if (state.orientation === 'horizontal' && newOrientation === 'vertical') {
706
+ // Save the current position before changing orientation
707
+ positionBeforeOrientationChange.current = {
708
+ position: { ...state.position },
709
+ pixelPosition: { ...pixelPosition },
710
+ };
676
711
  if (floatingRef.current) {
677
712
  const floating = floatingRef.current.getBoundingClientRect();
678
- const screenHeight = window.innerHeight;
679
- if (floating.width > screenHeight - 70) {
713
+ const containerHeight = isConstrained && containerRef.current
714
+ ? containerRef.current.getBoundingClientRect().height
715
+ : window.innerHeight;
716
+ // Estimate vertical height (horizontal width becomes vertical height)
717
+ const estimatedVerticalHeight = floating.width;
718
+ if (estimatedVerticalHeight > containerHeight - 70) {
680
719
  ShowAlert({
681
720
  mode: 'warning',
682
721
  title: 'Troppi elementi',
683
722
  message: 'Ci sono troppi elementi nella barra mobile per la modalità verticale.',
684
723
  duration: 4000,
685
724
  });
725
+ positionBeforeOrientationChange.current = null; // Clear saved position since we're not changing
726
+ setIsOrientationChanging(false); // Show bar again since we're not changing
727
+ return;
728
+ }
729
+ // Check if we're in the bottom part of the screen and don't have enough space below
730
+ const spaceBelow = containerHeight - floating.bottom;
731
+ const spaceAbove = floating.top;
732
+ const needsVerticalSpace = estimatedVerticalHeight - floating.height; // Additional space needed
733
+ // If not enough space below but enough space above, expand upward
734
+ if (spaceBelow < needsVerticalSpace && spaceAbove >= needsVerticalSpace) {
735
+ // Calculate the new Y position so the bottom of the bar stays at the same place
736
+ const currentBottom = pixelPosition.y + floating.height;
737
+ const newPixelY = currentBottom - estimatedVerticalHeight;
738
+ setState(s => ({
739
+ ...s,
740
+ orientation: newOrientation,
741
+ verticalDirection: 'up',
742
+ }));
743
+ // Update pixel position and percentage after orientation change
744
+ requestAnimationFrame(() => {
745
+ requestAnimationFrame(() => {
746
+ const newY = Math.max(0, newPixelY);
747
+ setPixelPosition(prev => ({ ...prev, y: newY }));
748
+ const newPercentY = pixelsToPercent(newY, containerHeight);
749
+ setState(s => ({
750
+ ...s,
751
+ position: { ...s.position, y: newPercentY },
752
+ }));
753
+ setIsOrientationChanging(false); // Show bar after position is set
754
+ });
755
+ });
686
756
  return;
687
757
  }
688
758
  }
689
759
  }
760
+ // Default case: just change orientation without special positioning
690
761
  setState(s => ({
691
762
  ...s,
692
763
  orientation: newOrientation,
764
+ verticalDirection: 'down',
693
765
  }));
694
766
  requestAnimationFrame(() => {
695
767
  requestAnimationFrame(() => {
@@ -715,6 +787,7 @@ const TMFloatingMenuBar = ({ containerRef, contextMenuItems = [], isConstrained
715
787
  }));
716
788
  }
717
789
  }
790
+ setIsOrientationChanging(false); // Show bar after position is set
718
791
  });
719
792
  });
720
793
  };
@@ -778,7 +851,7 @@ const TMFloatingMenuBar = ({ containerRef, contextMenuItems = [], isConstrained
778
851
  setState(s => ({ ...s, draggedItemIndex: null }));
779
852
  setDragOverIndex(null);
780
853
  };
781
- return (_jsxs(_Fragment, { children: [_jsx(S.Overlay, { "$visible": state.isConfigMode }), _jsxs(S.FloatingContainer, { ref: floatingRef, "$x": pixelPosition.x, "$y": pixelPosition.y, "$orientation": state.orientation, "$isDragging": state.isDragging, "$isConfigMode": state.isConfigMode, "$isConstrained": isConstrained, "$bgColor": bgColor, onContextMenu: (e) => e.preventDefault(), children: [!state.isConfigMode ? (_jsx(ContextMenu, { items: [
854
+ return (_jsxs(_Fragment, { children: [_jsx(S.Overlay, { "$visible": state.isConfigMode }), _jsxs(S.FloatingContainer, { ref: floatingRef, "$x": pixelPosition.x, "$y": pixelPosition.y, "$orientation": state.orientation, "$verticalDirection": state.verticalDirection, "$isDragging": state.isDragging, "$isConfigMode": state.isConfigMode, "$isConstrained": isConstrained, "$isHidden": isOrientationChanging, "$bgColor": bgColor, onContextMenu: (e) => e.preventDefault(), children: [!state.isConfigMode ? (_jsx(ContextMenu, { items: [
782
855
  ...(!disbaleConfigMode ? [{
783
856
  name: SDKUI_Localizator.Configure,
784
857
  onClick: () => {
@@ -7,17 +7,21 @@ export declare const FloatingContainer: import("styled-components/dist/types").I
7
7
  $x: number;
8
8
  $y: number;
9
9
  $orientation: "horizontal" | "vertical";
10
+ $verticalDirection: "down" | "up";
10
11
  $isDragging: boolean;
11
12
  $isConfigMode: boolean;
12
13
  $isConstrained?: boolean;
14
+ $isHidden?: boolean;
13
15
  $bgColor?: string;
14
16
  }>, {
15
17
  $x: number;
16
18
  $y: number;
17
19
  $orientation: "horizontal" | "vertical";
20
+ $verticalDirection: "down" | "up";
18
21
  $isDragging: boolean;
19
22
  $isConfigMode: boolean;
20
23
  $isConstrained?: boolean;
24
+ $isHidden?: boolean;
21
25
  $bgColor?: string;
22
26
  }>> & string;
23
27
  export declare const GripHandle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
@@ -39,7 +39,8 @@ export const FloatingContainer = styled.div.attrs(props => ({
39
39
  position: ${props => props.$isConstrained ? 'absolute' : 'fixed'};
40
40
  z-index: ${props => props.$isConfigMode ? 9999 : 1500};
41
41
  display: flex;
42
- flex-direction: ${props => props.$orientation === 'horizontal' ? 'row' : 'column'};
42
+ visibility: ${props => props.$isHidden ? 'hidden' : 'visible'};
43
+ flex-direction: ${props => props.$orientation === 'horizontal' ? 'row' : (props.$verticalDirection === 'up' ? 'column-reverse' : 'column')};
43
44
  align-items: center;
44
45
  background: ${props => props.$bgColor || 'linear-gradient(135deg, #0071BC 0%, #1B1464 100%)'};
45
46
  border: 1px solid #667eea;
@@ -50,6 +51,8 @@ export const FloatingContainer = styled.div.attrs(props => ({
50
51
  0 6px 16px rgba(0, 0, 0, 0.2);
51
52
  cursor: ${props => props.$isDragging ? 'grabbing' : 'default'};
52
53
  user-select: none;
54
+ -webkit-touch-callout: none;
55
+ -webkit-user-select: none;
53
56
  animation: ${props => props.$isConfigMode && css `${shake} 0.3s ease-in-out`};
54
57
  transition: none;
55
58
 
@@ -31,6 +31,7 @@ export interface TMFloatingMenuBarState {
31
31
  isDragging: boolean;
32
32
  isConfigMode: boolean;
33
33
  orientation: 'horizontal' | 'vertical';
34
+ verticalDirection: 'down' | 'up';
34
35
  items: TMFloatingMenuItem[];
35
36
  draggedItemIndex: number | null;
36
37
  }
@@ -61,6 +61,8 @@ const StyledIconButton = styled.button.withConfig({ shouldForwardProp: prop => !
61
61
  background-color: transparent;
62
62
  color: ${props => !props.disabled ? getColor(props.color) : 'rgb(180, 180, 180)'};
63
63
  user-select: none;
64
+ -webkit-touch-callout: none;
65
+ -webkit-user-select: none;
64
66
  `;
65
67
  const StyledTextButton = styled.button.withConfig({ shouldForwardProp: prop => !['text'].includes(prop) }) `
66
68
  font-size: ${props => props.fontSize};
@@ -79,6 +81,8 @@ const StyledTextButton = styled.button.withConfig({ shouldForwardProp: prop => !
79
81
  background-color: transparent;
80
82
  color: ${props => !props.disabled ? getColor(props.color) : 'rgb(231, 231, 231)'};
81
83
  user-select: none;
84
+ -webkit-touch-callout: none;
85
+ -webkit-user-select: none;
82
86
  transition: ease 200ms;
83
87
  &:hover {
84
88
  background-color: rgb(241, 241, 241);
@@ -118,6 +122,8 @@ const StyledAdvancedButton = styled.button `
118
122
  overflow: hidden;
119
123
  color: ${({ $isPrimaryOutline }) => $isPrimaryOutline ? TMColors.primaryColor : 'white'};
120
124
  user-select: none;
125
+ -webkit-touch-callout: none;
126
+ -webkit-user-select: none;
121
127
  border: ${({ $isPrimaryOutline }) => $isPrimaryOutline ? `1px solid ${TMColors.primaryColor}` : 'none'};
122
128
  background: ${({ $isPrimaryOutline }) => $isPrimaryOutline ? 'white' : 'unset'};
123
129
  `;
@@ -49,6 +49,8 @@ const StyledClosabelIcon = styled.div `
49
49
  justify-content: flex-start;
50
50
  padding: 2px;
51
51
  user-select: none;
52
+ -webkit-touch-callout: none;
53
+ -webkit-user-select: none;
52
54
  `;
53
55
  const StyledClosableItemsCount = styled.div `
54
56
  /* color: ${Colors.primary}; */
@@ -56,6 +58,8 @@ const StyledClosableItemsCount = styled.div `
56
58
  cursor: pointer;
57
59
  margin-right: 5px;
58
60
  user-select: none;
61
+ -webkit-touch-callout: none;
62
+ -webkit-user-select: none;
59
63
  `;
60
64
  const TMClosableList = ({ dataSource, visibility = false, label, inline = false, hasPadding = true }) => {
61
65
  const [status, setStatus] = useState(visibility);
@@ -12,6 +12,8 @@ const StyledContent = styled.div `
12
12
  opacity: ${props => props.$disabled ? 0.4 : 1};
13
13
  pointer-events: ${props => props.$disabled ? 'none' : ''};
14
14
  user-select: none;
15
+ -webkit-touch-callout: none;
16
+ -webkit-user-select: none;
15
17
  display: flex;
16
18
  align-items: center;
17
19
 
@@ -65,6 +65,8 @@ const StyledPanelContent = styled.div `
65
65
  justify-content: space-between;
66
66
  position: relative;
67
67
  user-select: none;
68
+ -webkit-touch-callout: none;
69
+ -webkit-user-select: none;
68
70
  outline: none;
69
71
  &:focus {
70
72
  outline: none;
@@ -31,6 +31,8 @@ const StyledExeptionToolbar = styled.div `
31
31
  gap: 5px;
32
32
  padding: 5px;
33
33
  user-select: none;
34
+ -webkit-touch-callout: none;
35
+ -webkit-user-select: none;
34
36
  border-top: 1px solid #f3f3f3;
35
37
  /* background-color: ${TMColors.primary_container}; */
36
38
  background-color: white;
@@ -45,6 +47,8 @@ const StyledMessageToolbar = styled.div `
45
47
  gap: clamp(2px, 1vw, 5px);
46
48
  padding: clamp(3px, 1vw, 5px);
47
49
  user-select: none;
50
+ -webkit-touch-callout: none;
51
+ -webkit-user-select: none;
48
52
  border-top: 1px solid #f3f3f3;
49
53
  background-color: #ffffff;
50
54
  z-index: 1;
@@ -69,6 +73,8 @@ const TabContextContainer = styled.div `
69
73
  border-radius: 5px;
70
74
  overflow: auto;
71
75
  user-select: none;
76
+ -webkit-touch-callout: none;
77
+ -webkit-user-select: none;
72
78
  position: relative;
73
79
  `;
74
80
  const StyledAppVersionText = styled.p `
@@ -42,6 +42,8 @@ const StyledSearchCardContent = styled.div `
42
42
 
43
43
  position: relative;
44
44
  user-select: none;
45
+ -webkit-touch-callout: none;
46
+ -webkit-user-select: none;
45
47
  `;
46
48
  const TMToolbarCard = ({ items = [], onItemClick, selectedItem, showPanel, color = TMColors.colorHeader, backgroundColor = TMColors.backgroundColorHeader, backgroundColorContainer, children, showHeader = true, title, totalItems, displayedItemsCount, toolbar, padding = '3px', onBack, onClose, onHeaderDoubleClick }) => {
47
49
  return (_jsxs(StyledSearchCard, { children: [showHeader && _jsx(StyledSearchCardHeader, { "$backgroundColor": backgroundColor, "$color": color, onDoubleClick: () => { if (onHeaderDoubleClick)
@@ -16,6 +16,8 @@ const StyledCheckBoxLabel = styled.div `
16
16
  color: ${props => !props.$disabled ? props.$isModifiedWhen ? TMColors.isModified : props.$labelColor ? props.$labelColor : TMColors.text_normal : TMColors.disabled};
17
17
  font-size: ${props => props.$fontSize};
18
18
  user-select: none;
19
+ -webkit-touch-callout: none;
20
+ -webkit-user-select: none;
19
21
  &:focus{
20
22
  outline: none;
21
23
  background-image: linear-gradient(white, #E4E9F7);
@@ -48,6 +48,8 @@ export const StyledEditorIcon = styled.div `
48
48
  margin-right: 2px;
49
49
  font-size: 18px;
50
50
  user-select: none;
51
+ -webkit-touch-callout: none;
52
+ -webkit-user-select: none;
51
53
  transform: translateY(18px);
52
54
  `;
53
55
  export const StyledEditorLabel = styled.div `
@@ -55,6 +57,8 @@ export const StyledEditorLabel = styled.div `
55
57
  color:${props => !props.$disabled ? props.$isFocused ? TMColors.primary : props.$color ? props.$color : TMColors.label_normal : TMColors.disabled};
56
58
  padding: 0 3px;
57
59
  user-select: none;
60
+ -webkit-touch-callout: none;
61
+ -webkit-user-select: none;
58
62
  transform: ${props => props.$labelPosition === 'left' && 'translateY(5px)'};
59
63
  width: max-content;
60
64
  transform: translate(10px, 6px);
@@ -39,6 +39,8 @@ const StyledradioButtonLabel = styled.label `
39
39
  font-size: ${props => props.$fontSize};
40
40
  color: ${props => !props.$disabled ? props.$isModifiedWhen ? TMColors.isModified : TMColors.text_normal : TMColors.disabled};
41
41
  user-select: none;
42
+ -webkit-touch-callout: none;
43
+ -webkit-user-select: none;
42
44
  width: 100%;
43
45
  cursor: ${props => !props.$disabled && 'pointer'};
44
46
  &:focus{
@@ -67,6 +67,8 @@ const TMToppyButton = styled.div.attrs((props) => ({
67
67
  padding: 0;
68
68
  outline: none;
69
69
  user-select: none;
70
+ -webkit-touch-callout: none;
71
+ -webkit-user-select: none;
70
72
  transition: background-color 0.3s ease, border 0.3s ease, border-radius 0.3s ease, box-shadow 0.3s ease, width 0.3s ease, height 0.3s ease;
71
73
 
72
74
  img {
@@ -87,6 +87,6 @@ const TMDcmtBlog = ({ tid, did, isVisible, fetchBlogDataTrigger, allTasks = [],
87
87
  }, externalBlogPost: externalBlogPost, resetExternalBlogPost: resetExternalBlogPost, allTasks: allTasks, getAllTasks: getAllTasks, deleteTaskByIdsCallback: deleteTaskByIdsCallback, addTaskCallback: addTaskCallback, editTaskCallback: editTaskCallback, handleNavigateToWGs: handleNavigateToWGs, handleNavigateToDossiers: handleNavigateToDossiers, afterTaskSaved: refreshCallback }) }) }) }), (showCommentForm && tid && did) && _jsx(TMBlogCommentForm, { context: { engine: 'SearchEngine', object: { tid, did } }, onClose: () => setShowCommentForm(false), refreshCallback: refreshCallback, participants: [], showAttachmentsSection: false, allArchivedDocumentsFileItems: [], onFilterCreated: handleFilterCreated })] }));
88
88
  };
89
89
  export default TMDcmtBlog;
90
- const StyledContainer = styled.div ` user-select: none; overflow: hidden; background-color: #ffffff; width: calc(100%); height: calc(100%); display: flex; gap: 10px; `;
90
+ const StyledContainer = styled.div ` user-select: none; -webkit-touch-callout: none; -webkit-user-select: none; overflow: hidden; background-color: #ffffff; width: calc(100%); height: calc(100%); display: flex; gap: 10px; `;
91
91
  const StyledSectionContainer = styled.div ` width: 100%; height: 100%; display:flex; flex-direction: column; `;
92
92
  const StyledBoardContainer = styled.div `width: 100%; height: 100%;`;
@@ -405,7 +405,7 @@ const StyledPreviewContainer = styled.div `display: flex; justify-content: cente
405
405
  export const StyledHeaderIcon = styled.div ` color: ${props => props.$color}; cursor: pointer; display: flex; align-items: center; justify-content: center; &:hover{ color: white ; transition: 200ms ease; } `;
406
406
  export const StyledPanelStatusContainer = styled.div ` width: 100%; height: 100%; padding: 20px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 20px; `;
407
407
  const StyledPreviewNotAvailable = styled.div ` display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; `;
408
- const ImageContainer = styled.div ` width: calc(100% - 20px); height: 100%; left:10px; position: absolute; top:50px; overflow: hidden; background: #f5f5f5; touch-action: none; user-select: none; cursor: ${({ $cursor }) => $cursor ?? 'default'}; `;
408
+ const ImageContainer = styled.div ` width: calc(100% - 20px); height: 100%; left:10px; position: absolute; top:50px; overflow: hidden; background: #f5f5f5; touch-action: none; user-select: none; -webkit-touch-callout: none; -webkit-user-select: none; cursor: ${({ $cursor }) => $cursor ?? 'default'}; `;
409
409
  const TopToolbar = styled.div ` position: absolute; top: 0; width: 100%; height: 40px; background-color: #e4e4e4; display: flex; justify-content: center; align-items: center; z-index: 10; `;
410
410
  const ToolbarCenter = styled.div ` display: flex; align-items: center; gap: 12px;`;
411
411
  const ToolbarIconButton = styled.button ` background: #f0f0f0; border: none; color: #313131; font-size: 18px; cursor: pointer; display: flex; align-items: center; justify-content: center; height: 32px; width: 32px; padding: 0; border-radius: 50px; &:hover{ background-color: #c4c4c4; } &:disabled { color: #c2c2c2; cursor: not-allowed; } `;
@@ -427,6 +427,8 @@ export const StyledToppyText = styled.p `
427
427
  color: #2559A5;
428
428
  font-size: 1rem;
429
429
  user-select: none;
430
+ -webkit-touch-callout: none;
431
+ -webkit-user-select: none;
430
432
  margin: 0;
431
433
  display: -webkit-box;
432
434
  -webkit-box-orient: vertical;
@@ -70,6 +70,8 @@ const StyledDiagramItem = styled.g `
70
70
  fill: #333;
71
71
  text-anchor: middle;
72
72
  user-select: none;
73
+ -webkit-touch-callout: none;
74
+ -webkit-user-select: none;
73
75
  pointer-events: none;
74
76
  }
75
77
  `;
@@ -14,6 +14,8 @@ const StyledValidationItemsTabs = styled.div `
14
14
  border-bottom: 1px solid $primary;
15
15
  width: 100%;
16
16
  user-select: none;
17
+ -webkit-touch-callout: none;
18
+ -webkit-user-select: none;
17
19
  background-color: ${TMColors.primary};
18
20
  z-index: 20;
19
21
  border-top: 1px solid #122C4C;
@@ -44,12 +46,16 @@ const StyledMessageIcon = styled.div `
44
46
  const StyledMessageResultType = styled.div `
45
47
  width: 50px;
46
48
  user-select: none;
49
+ -webkit-touch-callout: none;
50
+ -webkit-user-select: none;
47
51
  margin-right: 20px;
48
52
  `;
49
53
  const StyledMessageElement = styled.div `
50
54
  width: 150px;
51
55
  text-align: left;
52
56
  user-select: none;
57
+ -webkit-touch-callout: none;
58
+ -webkit-user-select: none;
53
59
  margin-right: 20px;
54
60
  `;
55
61
  const StyledMessageText = styled.div `
@@ -985,6 +985,8 @@ const StyledContent = styled.div `
985
985
  opacity: ${props => props.$disabled ? 0.4 : 1};
986
986
  pointer-events: ${props => props.$disabled ? 'none' : ''};
987
987
  user-select: none;
988
+ -webkit-touch-callout: none;
989
+ -webkit-user-select: none;
988
990
  display: flex;
989
991
  align-items: center;
990
992
 
@@ -400,6 +400,8 @@ const AppMenuButton = styled.div `
400
400
  cursor: pointer;
401
401
  box-shadow: 0 2px 8px #2459a41a;
402
402
  user-select: none;
403
+ -webkit-touch-callout: none;
404
+ -webkit-user-select: none;
403
405
  gap: 5px;
404
406
  transition:
405
407
  transform 0.18s cubic-bezier(.4,0,.2,1),
@@ -445,6 +447,8 @@ const UserAvatar = styled.div `
445
447
  font-weight: 600;
446
448
  letter-spacing: 0.5px;
447
449
  user-select: none;
450
+ -webkit-touch-callout: none;
451
+ -webkit-user-select: none;
448
452
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
449
453
  `;
450
454
  const UserAvatarLarge = styled(UserAvatar) `
@@ -21,6 +21,8 @@ const StyledTMSidebarItemContainer = styled.div `
21
21
  position: relative;
22
22
  transition: background-color 200ms ease;
23
23
  user-select: none;
24
+ -webkit-touch-callout: none;
25
+ -webkit-user-select: none;
24
26
  background-color: ${props => props.$isSelected ? 'rgba(255,255,255,0.35)' : 'transparent'};
25
27
 
26
28
  p {
@@ -19,6 +19,8 @@ const StyledToppyText = styled.div `
19
19
  color: #2559A5;
20
20
  font-size: 1rem;
21
21
  user-select: none;
22
+ -webkit-touch-callout: none;
23
+ -webkit-user-select: none;
22
24
  margin: 0;
23
25
  display: -webkit-box;
24
26
  -webkit-box-orient: vertical;
@@ -35,6 +37,8 @@ const StyledToppyImage = styled.img `
35
37
  height: auto;
36
38
  display: block;
37
39
  user-select: none;
40
+ -webkit-touch-callout: none;
41
+ -webkit-user-select: none;
38
42
  `;
39
43
  const TMToppyMessage = (props) => {
40
44
  const { message, titleTooltip, maxWidth } = props;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@topconsultnpm/sdkui-react",
3
- "version": "6.20.0-dev1.111",
3
+ "version": "6.20.0-dev1.113",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1",