@topconsultnpm/sdkui-react 6.19.0-dev2.1 → 6.19.0-test.1

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 (122) hide show
  1. package/lib/assets/IconsS4t/add.svg +12 -12
  2. package/lib/assets/IconsS4t/aggiorna.svg +18 -18
  3. package/lib/assets/IconsS4t/bookmark.svg +42 -42
  4. package/lib/assets/IconsS4t/cancella.svg +15 -15
  5. package/lib/assets/IconsS4t/check-box.svg +19 -19
  6. package/lib/assets/IconsS4t/down-arrow-signBook.svg +40 -40
  7. package/lib/assets/IconsS4t/down.svg +28 -28
  8. package/lib/assets/IconsS4t/edit-file.svg +19 -19
  9. package/lib/assets/IconsS4t/edita.svg +32 -32
  10. package/lib/assets/IconsS4t/firma.svg +19 -19
  11. package/lib/assets/IconsS4t/icona_download.svg +16 -16
  12. package/lib/assets/IconsS4t/info.svg +51 -51
  13. package/lib/assets/IconsS4t/left.svg +20 -20
  14. package/lib/assets/IconsS4t/line.svg +40 -40
  15. package/lib/assets/IconsS4t/more.svg +19 -19
  16. package/lib/assets/IconsS4t/plus.svg +23 -23
  17. package/lib/assets/IconsS4t/printer.svg +49 -49
  18. package/lib/assets/IconsS4t/radio-on-button.svg +25 -25
  19. package/lib/assets/IconsS4t/rectangle.svg +41 -41
  20. package/lib/assets/IconsS4t/redo.svg +19 -19
  21. package/lib/assets/IconsS4t/right-arrow-signBook-finish.svg +40 -40
  22. package/lib/assets/IconsS4t/right-arrow-signBook.svg +40 -40
  23. package/lib/assets/IconsS4t/right.svg +22 -22
  24. package/lib/assets/IconsS4t/searchbar.svg +21 -21
  25. package/lib/assets/IconsS4t/text-box.svg +36 -36
  26. package/lib/assets/IconsS4t/tick.svg +8 -8
  27. package/lib/assets/IconsS4t/trash-white.svg +10 -10
  28. package/lib/assets/IconsS4t/undo.svg +19 -19
  29. package/lib/assets/IconsS4t/up.svg +32 -32
  30. package/lib/assets/IconsS4t/video-streaming.svg +2 -2
  31. package/lib/assets/IconsS4t/zoom-in.svg +58 -58
  32. package/lib/assets/IconsS4t/zoom-out.svg +56 -56
  33. package/lib/assets/icomoon.svg +96 -96
  34. package/lib/assets/italy.svg +16 -16
  35. package/lib/assets/six.svg +3 -3
  36. package/lib/assets/thumbnails/index.ts +39 -39
  37. package/lib/assets/topmedia-six.svg +65 -65
  38. package/lib/assets/topmeida-six-bianco.svg +65 -65
  39. package/lib/components/base/Styled.js +302 -302
  40. package/lib/components/base/TMAccordion.js +43 -43
  41. package/lib/components/base/TMAreaManager.js +23 -23
  42. package/lib/components/base/TMButton.js +130 -130
  43. package/lib/components/base/TMClosableList.js +46 -46
  44. package/lib/components/base/TMConfirm.js +20 -20
  45. package/lib/components/base/TMContextMenu.js +4 -4
  46. package/lib/components/base/TMContextMenuOLD.js +25 -25
  47. package/lib/components/base/TMCounterBar.js +32 -32
  48. package/lib/components/base/TMCounterContainer.js +30 -30
  49. package/lib/components/base/TMCustomButton.js +7 -7
  50. package/lib/components/base/TMDropDownMenu.js +24 -24
  51. package/lib/components/base/TMFileManagerUtils.js +19 -19
  52. package/lib/components/base/TMFloatingToolbar.js +34 -34
  53. package/lib/components/base/TMLayout.js +44 -44
  54. package/lib/components/base/TMList.js +34 -34
  55. package/lib/components/base/TMModal.js +31 -31
  56. package/lib/components/base/TMPanel.js +57 -57
  57. package/lib/components/base/TMPopUp.js +114 -114
  58. package/lib/components/base/TMProgressBar.js +20 -20
  59. package/lib/components/base/TMResizableMenu.js +28 -28
  60. package/lib/components/base/TMRightSidebar.js +40 -40
  61. package/lib/components/base/TMSpinner.js +121 -121
  62. package/lib/components/base/TMTab.js +11 -11
  63. package/lib/components/base/TMToggleButton.js +36 -36
  64. package/lib/components/base/TMToolbarCard.js +35 -35
  65. package/lib/components/base/TMTreeView.js +16 -16
  66. package/lib/components/base/TMUserAvatar.js +7 -7
  67. package/lib/components/base/TMWaitPanel.js +22 -22
  68. package/lib/components/choosers/TMCultureIDPicker.js +35 -35
  69. package/lib/components/choosers/TMDataListItemPicker.js +54 -54
  70. package/lib/components/editors/TMCheckBox.js +24 -24
  71. package/lib/components/editors/TMDropDown.js +43 -43
  72. package/lib/components/editors/TMEditorStyled.js +71 -71
  73. package/lib/components/editors/TMHtmlContentDisplay.js +16 -16
  74. package/lib/components/editors/TMLocalizedTextBox.js +31 -31
  75. package/lib/components/editors/TMMetadataValues.js +17 -17
  76. package/lib/components/editors/TMRadioButton.js +39 -39
  77. package/lib/components/editors/TMSummary.js +39 -39
  78. package/lib/components/editors/TMTextArea.js +12 -12
  79. package/lib/components/editors/TMTextBox.js +19 -19
  80. package/lib/components/features/assistant/ToppyHelpCenter.js +114 -114
  81. package/lib/components/features/blog/TMBlogCommentForm.js +3 -3
  82. package/lib/components/features/documents/TMDcmtIcon.js +8 -8
  83. package/lib/components/features/documents/TMDcmtPreview.js +30 -30
  84. package/lib/components/features/documents/TMFileUploader.js +21 -21
  85. package/lib/components/features/search/TMSavedQuerySelector.js +51 -51
  86. package/lib/components/features/search/TMSearchQueryEditor.js +13 -13
  87. package/lib/components/features/search/TMSearchQueryPanel.js +30 -30
  88. package/lib/components/features/search/TMSearchResult.js +3 -3
  89. package/lib/components/features/search/TMTreeSelector.js +66 -66
  90. package/lib/components/features/tasks/TMTaskForm.js +31 -31
  91. package/lib/components/features/wg/TMWGsCopyMoveForm.js +9 -9
  92. package/lib/components/features/workflow/TMWorkflowPopup.js +41 -41
  93. package/lib/components/features/workflow/diagram/ConnectionComponent.js +29 -29
  94. package/lib/components/features/workflow/diagram/ConnectionForm.js +10 -10
  95. package/lib/components/features/workflow/diagram/DiagramItemComponent.js +57 -57
  96. package/lib/components/features/workflow/diagram/DiagramItemForm.js +29 -29
  97. package/lib/components/features/workflow/diagram/DiagramItemSvgContent.js +12 -12
  98. package/lib/components/features/workflow/diagram/RecipientList.js +38 -38
  99. package/lib/components/features/workflow/diagram/WFDiagram.js +278 -278
  100. package/lib/components/features/workflow/diagram/WorkitemRecipientsEditor.js +4 -4
  101. package/lib/components/forms/Login/Chooser.js +35 -35
  102. package/lib/components/forms/Login/Menu.js +22 -22
  103. package/lib/components/forms/Login/SelectBox.js +46 -46
  104. package/lib/components/forms/Login/TMLoginForm.js +14 -14
  105. package/lib/components/forms/Login/TextBox.js +57 -57
  106. package/lib/components/grids/TMBlogsPostUtils.js +5 -5
  107. package/lib/components/grids/TMRecentsManager.js +50 -50
  108. package/lib/components/grids/TMValidationItemsList.js +48 -48
  109. package/lib/components/layout/panelManager/TMPanelManagerContainer.js +12 -12
  110. package/lib/components/layout/panelManager/TMPanelManagerToolbar.js +34 -34
  111. package/lib/components/query/TMQueryEditor.js +17 -17
  112. package/lib/components/query/TMQuerySummary.js +12 -12
  113. package/lib/components/sidebar/TMCommandsPanel.js +10 -10
  114. package/lib/components/sidebar/TMHeader.js +307 -307
  115. package/lib/components/sidebar/TMSidebar.js +24 -24
  116. package/lib/components/sidebar/TMSidebarItem.js +21 -21
  117. package/lib/components/wizard/TMStepIndicator.js +102 -102
  118. package/lib/components/wizard/TMWizard.js +29 -29
  119. package/lib/helper/TMIcons.js +1 -1
  120. package/lib/helper/TMToppyMessage.js +30 -30
  121. package/lib/helper/TMUtils.js +37 -37
  122. package/package.json +54 -54
@@ -3,39 +3,39 @@ import React, { useCallback } from 'react';
3
3
  import { ArrowSymbol } from './interfaces';
4
4
  import styled, { css } from 'styled-components';
5
5
  import { getConnectionColor } from './workflowHelpers';
6
- const StyledPath = styled.path ` // Aggiungi $isTemporary
7
- fill: none;
8
- stroke: ${props => getConnectionColor(props.$outputStatus)};
9
- stroke-width: ${props => props.$isSelected ? 3 : 1};
10
- cursor: pointer;
11
- transition: stroke-width 0.1s ease-in-out;
12
- pointer-events: stroke;
13
-
14
- ${props => props.$isTemporary && css `
15
- stroke: #888;
16
- stroke-dasharray: 5 5;
17
- opacity: 0.5;
18
- `}
6
+ const StyledPath = styled.path ` // Aggiungi $isTemporary
7
+ fill: none;
8
+ stroke: ${props => getConnectionColor(props.$outputStatus)};
9
+ stroke-width: ${props => props.$isSelected ? 3 : 1};
10
+ cursor: pointer;
11
+ transition: stroke-width 0.1s ease-in-out;
12
+ pointer-events: stroke;
13
+
14
+ ${props => props.$isTemporary && css `
15
+ stroke: #888;
16
+ stroke-dasharray: 5 5;
17
+ opacity: 0.5;
18
+ `}
19
19
  `;
20
20
  // Path invisibile e più spesso per migliorare l'area di click
21
- const StyledPathHitArea = styled.path `
22
- fill: none;
23
- stroke: transparent;
24
- stroke-width: 10;
25
- cursor: pointer;
26
- pointer-events: stroke;
21
+ const StyledPathHitArea = styled.path `
22
+ fill: none;
23
+ stroke: transparent;
24
+ stroke-width: 10;
25
+ cursor: pointer;
26
+ pointer-events: stroke;
27
27
  `;
28
- const StyledArrow = styled.path `
29
- fill: ${props => props.$color};
30
- stroke: ${props => props.$color};
31
- stroke-width: 1;
32
- pointer-events: none;
28
+ const StyledArrow = styled.path `
29
+ fill: ${props => props.$color};
30
+ stroke: ${props => props.$color};
31
+ stroke-width: 1;
32
+ pointer-events: none;
33
33
  `;
34
- const StyledSquareConnector = styled.rect `
35
- fill: #007bff;
36
- stroke: #007bff;
37
- stroke-width: 1;
38
- pointer-events: all;
34
+ const StyledSquareConnector = styled.rect `
35
+ fill: #007bff;
36
+ stroke: #007bff;
37
+ stroke-width: 1;
38
+ pointer-events: all;
39
39
  `;
40
40
  const ConnectionComponent = ({ connection, isSelected, sourcePoint, sinkPoint, isTemporary, onClick, onDoubleClick, onConnectionEndpointMouseDown }) => {
41
41
  const connectionColor = getConnectionColor(connection.OutputStatus);
@@ -7,17 +7,17 @@ import TMModal from '../../../base/TMModal';
7
7
  import { TMColors } from '../../../../utils/theme';
8
8
  import { CultureIDs, WorkItemStatus } from '@topconsultnpm/sdk-ts';
9
9
  import TMLocalizedTextBox from '../../../editors/TMLocalizedTextBox';
10
- const FormContainer = styled.div `
11
- display: flex;
12
- flex-direction: column;
13
- gap: 5px;
14
- padding: 10px;
10
+ const FormContainer = styled.div `
11
+ display: flex;
12
+ flex-direction: column;
13
+ gap: 5px;
14
+ padding: 10px;
15
15
  `;
16
- const ModalFooter = styled.div `
17
- display: flex;
18
- justify-content: flex-end;
19
- gap: 10px;
20
- margin-top: 20px;
16
+ const ModalFooter = styled.div `
17
+ display: flex;
18
+ justify-content: flex-end;
19
+ gap: 10px;
20
+ margin-top: 20px;
21
21
  `;
22
22
  const WORKITEMSTATUS_DATASOURCE = [
23
23
  { value: WorkItemStatus.New, display: SDKUI_Localizator.WorkItemStatus_New },
@@ -5,82 +5,82 @@ import styled, { keyframes, css } from 'styled-components';
5
5
  import DiagramItemSvgContent from './DiagramItemSvgContent';
6
6
  import { calculateDiagramItemFullDimensions, FONT_SIZE, MAX_ITEM_WIDTH, MAX_LINES, PADDING_HORIZONTAL, PADDING_TOP, SPACING_SVG_TEXT, SVG_ICON_SIZE, wrapText } from './workflowHelpers';
7
7
  import { DataListCacheService } from '@topconsultnpm/sdk-ts';
8
- const blink = keyframes `
9
- 0%, 100% { opacity: 1; }
10
- 50% { opacity: 0.4; }
8
+ const blink = keyframes `
9
+ 0%, 100% { opacity: 1; }
10
+ 50% { opacity: 0.4; }
11
11
  `;
12
- const pulseAnimation = keyframes `
13
- 0% {
14
- transform: scale(1);
15
- }
16
- 50% {
17
- transform: scale(1.1);
18
- }
19
- 100% {
20
- transform: scale(1);
21
- }
12
+ const pulseAnimation = keyframes `
13
+ 0% {
14
+ transform: scale(1);
15
+ }
16
+ 50% {
17
+ transform: scale(1.1);
18
+ }
19
+ 100% {
20
+ transform: scale(1);
21
+ }
22
22
  `;
23
- const bounceAnimation = keyframes `
24
- 0%, 20%, 50%, 80%, 100% {
25
- transform: translateY(0);
26
- }
27
- 40% {
28
- transform: translateY(-10px);
29
- }
30
- 60% {
31
- transform: translateY(-5px);
32
- }
23
+ const bounceAnimation = keyframes `
24
+ 0%, 20%, 50%, 80%, 100% {
25
+ transform: translateY(0);
26
+ }
27
+ 40% {
28
+ transform: translateY(-10px);
29
+ }
30
+ 60% {
31
+ transform: translateY(-5px);
32
+ }
33
33
  `;
34
- const AnimatingGroup = styled.g `
34
+ const AnimatingGroup = styled.g `
35
35
  ${({ $isCurrent }) => $isCurrent &&
36
- css `
37
- animation: ${pulseAnimation} 1.5s infinite;
38
- `}
36
+ css `
37
+ animation: ${pulseAnimation} 1.5s infinite;
38
+ `}
39
39
  `;
40
- const StyledDiagramItem = styled.g `
41
- cursor: ${props => (props.$isReadOnly ? 'default' : (props.$isDragging ? 'grabbing' : 'grab'))};
42
- filter: ${props => (props.$isSelected || props.$isDragging || props.$isHovered ? 'drop-shadow(2px 4px 6px rgba(0,0,0,0.4))' : 'none')};
43
-
44
- & .item-main-shape {
45
- fill: transparent;
40
+ const StyledDiagramItem = styled.g `
41
+ cursor: ${props => (props.$isReadOnly ? 'default' : (props.$isDragging ? 'grabbing' : 'grab'))};
42
+ filter: ${props => (props.$isSelected || props.$isDragging || props.$isHovered ? 'drop-shadow(2px 4px 6px rgba(0,0,0,0.4))' : 'none')};
43
+
44
+ & .item-main-shape {
45
+ fill: transparent;
46
46
  stroke: ${props => {
47
47
  if (props.$isDragging)
48
48
  return '#ffc107';
49
49
  if (props.$isSelected)
50
50
  return '#007bff';
51
51
  return 'none';
52
- }};
52
+ }};
53
53
  stroke-width: ${props => {
54
54
  if (props.$isDragging)
55
55
  return 2;
56
56
  if (props.$isSelected)
57
57
  return 2;
58
58
  return 1;
59
- }};
60
- transition: stroke 0.2s ease-in-out, stroke-width 0.2s ease-in-out;
61
- }
62
-
63
- & .item-text {
64
- font-size: 11px;
65
- fill: #333;
66
- text-anchor: middle;
67
- user-select: none;
68
- pointer-events: none;
69
- }
59
+ }};
60
+ transition: stroke 0.2s ease-in-out, stroke-width 0.2s ease-in-out;
61
+ }
62
+
63
+ & .item-text {
64
+ font-size: 11px;
65
+ fill: #333;
66
+ text-anchor: middle;
67
+ user-select: none;
68
+ pointer-events: none;
69
+ }
70
70
  `;
71
- const Connector = styled.circle `
72
- fill: transparent;
73
- stroke: blue;
74
- stroke-width: 1;
75
- cursor: ${props => (props.$isReadOnly ? 'default' : 'crosshair')};
76
- opacity: ${props => (props.$isVisible ? 1 : 0)};
77
- transition: opacity 0.2s ease-in-out;
71
+ const Connector = styled.circle `
72
+ fill: transparent;
73
+ stroke: blue;
74
+ stroke-width: 1;
75
+ cursor: ${props => (props.$isReadOnly ? 'default' : 'crosshair')};
76
+ opacity: ${props => (props.$isVisible ? 1 : 0)};
77
+ transition: opacity 0.2s ease-in-out;
78
78
  `;
79
- const ConnectorHitArea = styled.circle `
80
- fill: transparent;
81
- cursor: ${props => (props.$isReadOnly ? 'default' : 'crosshair')};
82
- opacity: 0;
83
- pointer-events: all;
79
+ const ConnectorHitArea = styled.circle `
80
+ fill: transparent;
81
+ cursor: ${props => (props.$isReadOnly ? 'default' : 'crosshair')};
82
+ opacity: 0;
83
+ pointer-events: all;
84
84
  `;
85
85
  const DiagramItemComponent = ({ wf, item, isSelected, isCurrent, readOnly, onClick, onDrag, onDragEnd, onConnectorMouseDown, onConnectorMouseUp, onDimensionsChange, onDoubleClick, }) => {
86
86
  const diagramItemRef = useRef(null);
@@ -27,39 +27,39 @@ import RecipientList, { WorkItemActorTypes } from './RecipientList';
27
27
  import TMRadioButton from '../../../editors/TMRadioButton';
28
28
  import TMVilViewer from '../../../base/TMVilViewer';
29
29
  import { DiagramItemProps, wfDiagramItemValidator } from './workflowHelpers';
30
- const FormContainer = styled.div `
31
- display: flex;
32
- flex-direction: column;
33
- gap: 5px;
34
- padding: 10px;
30
+ const FormContainer = styled.div `
31
+ display: flex;
32
+ flex-direction: column;
33
+ gap: 5px;
34
+ padding: 10px;
35
35
  `;
36
- const FlexContainer = styled.div `
37
- display: flex;
38
- align-items: center;
39
- gap: 20px;
36
+ const FlexContainer = styled.div `
37
+ display: flex;
38
+ align-items: center;
39
+ gap: 20px;
40
40
  `;
41
- const BoxContainer = styled.div `
42
- flex: 1;
43
- border: 1px solid #ccc;
44
- border-radius: 5px;
45
- padding: 10px;
46
- min-width: 300px;
47
- position: relative;
41
+ const BoxContainer = styled.div `
42
+ flex: 1;
43
+ border: 1px solid #ccc;
44
+ border-radius: 5px;
45
+ padding: 10px;
46
+ min-width: 300px;
47
+ position: relative;
48
48
  `;
49
- const HeaderContainer = styled.div `
50
- display: flex;
51
- justify-content: space-between;
52
- align-items: center;
53
- position: relative;
54
- margin-bottom: 10px;
55
- font-weight: 600;
49
+ const HeaderContainer = styled.div `
50
+ display: flex;
51
+ justify-content: space-between;
52
+ align-items: center;
53
+ position: relative;
54
+ margin-bottom: 10px;
55
+ font-weight: 600;
56
56
  `;
57
- const ButtonsContainer = styled.div `
58
- display: flex;
59
- justify-content: center;
60
- gap: 10px;
61
- margin-top: auto;
62
- padding-top: 20px;
57
+ const ButtonsContainer = styled.div `
58
+ display: flex;
59
+ justify-content: center;
60
+ gap: 10px;
61
+ margin-top: auto;
62
+ padding-top: 20px;
63
63
  `;
64
64
  const SET_RULE_DATASOURCE = [
65
65
  { value: WorkItemSetRules.Ands_AND_Ors, display: "Ands_AND_Ors" },
@@ -3,18 +3,18 @@ import { DiagramItemTypes } from './interfaces'; // Assicurati che il percorso s
3
3
  import styled from 'styled-components';
4
4
  import { TMImageLibrary } from '../../../../helper';
5
5
  // Stili per il contenitore SVG nella toolbox per centrare l'elemento
6
- const StyledToolboxSvgContainer = styled.div `
7
- width: 100%;
8
- height: 100%;
9
- display: flex;
10
- align-items: center;
11
- justify-content: center;
12
- overflow: hidden; // Previene lo scroll se l'SVG è leggermente più grande
13
- svg {
14
- max-width: 100%;
15
- max-height: 100%;
16
- display: block; // Rimuove spazi extra sotto l'SVG
17
- }
6
+ const StyledToolboxSvgContainer = styled.div `
7
+ width: 100%;
8
+ height: 100%;
9
+ display: flex;
10
+ align-items: center;
11
+ justify-content: center;
12
+ overflow: hidden; // Previene lo scroll se l'SVG è leggermente più grande
13
+ svg {
14
+ max-width: 100%;
15
+ max-height: 100%;
16
+ display: block; // Rimuove spazi extra sotto l'SVG
17
+ }
18
18
  `;
19
19
  const DiagramItemSvgContent = ({ itemType, width, height, isToolboxPreview = false, statusData }) => {
20
20
  const PADDING = 10;
@@ -23,47 +23,47 @@ export var WorkItemActorTypes;
23
23
  WorkItemActorTypes[WorkItemActorTypes["FXID"] = 5] = "FXID";
24
24
  WorkItemActorTypes[WorkItemActorTypes["STID"] = 6] = "STID";
25
25
  })(WorkItemActorTypes || (WorkItemActorTypes = {}));
26
- const RecipientsColumn = styled.div `
27
- flex: 1;
28
- border: 1px solid #ccc;
29
- border-radius: 5px;
30
- padding: 10px;
31
- min-width: 300px;
32
- position: relative;
26
+ const RecipientsColumn = styled.div `
27
+ flex: 1;
28
+ border: 1px solid #ccc;
29
+ border-radius: 5px;
30
+ padding: 10px;
31
+ min-width: 300px;
32
+ position: relative;
33
33
  `;
34
- const HeaderContainer = styled.div `
35
- display: flex;
36
- justify-content: space-between;
37
- align-items: center;
38
- position: relative;
39
- margin-bottom: 10px;
34
+ const HeaderContainer = styled.div `
35
+ display: flex;
36
+ justify-content: space-between;
37
+ align-items: center;
38
+ position: relative;
39
+ margin-bottom: 10px;
40
40
  `;
41
- const RecipientItem = styled.div `
42
- display: flex;
43
- align-items: center;
44
- gap: 5px;
45
- padding: 2px 5px;
46
- border-radius: 3px;
47
-
48
- background-color: ${props => props.$isSelected ? '#e6f7ff' : 'transparent'};
49
- border: ${props => props.$isSelected ? '1px solid #91d5ff' : '1px solid transparent'};
41
+ const RecipientItem = styled.div `
42
+ display: flex;
43
+ align-items: center;
44
+ gap: 5px;
45
+ padding: 2px 5px;
46
+ border-radius: 3px;
47
+
48
+ background-color: ${props => props.$isSelected ? '#e6f7ff' : 'transparent'};
49
+ border: ${props => props.$isSelected ? '1px solid #91d5ff' : '1px solid transparent'};
50
50
  `;
51
- const FloatingMenu = styled.div `
52
- position: absolute;
53
- top: 100%; /* Si apre sotto il bottone */
54
- right: 0; /* Allinea il bordo destro del menu con quello del genitore */
55
- background-color: white;
56
- border: 1px solid #ccc;
57
- border-radius: 5px;
58
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
59
- z-index: 10;
60
- display: flex;
61
- flex-direction: column; /* Disposizione verticale */
62
- gap: 5px;
63
- padding: 5px;
64
- min-width: 150px;
65
- transform: translateY(5px);
66
- align-items: center; /* Centra i pulsanti orizzontalmente */
51
+ const FloatingMenu = styled.div `
52
+ position: absolute;
53
+ top: 100%; /* Si apre sotto il bottone */
54
+ right: 0; /* Allinea il bordo destro del menu con quello del genitore */
55
+ background-color: white;
56
+ border: 1px solid #ccc;
57
+ border-radius: 5px;
58
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
59
+ z-index: 10;
60
+ display: flex;
61
+ flex-direction: column; /* Disposizione verticale */
62
+ gap: 5px;
63
+ padding: 5px;
64
+ min-width: 150px;
65
+ transform: translateY(5px);
66
+ align-items: center; /* Centra i pulsanti orizzontalmente */
67
67
  `;
68
68
  // FloatingMenuButton wrapper component to avoid circular dependency
69
69
  const FloatingMenuButton = (props) => {