pixel-react-excel-sheet 1.0.11 → 1.0.13

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 (252) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/lib/1fb4472b34e4fe07.css +1 -0
  3. package/lib/components/Accordion/Accordion.d.ts +1 -1
  4. package/lib/components/Accordion/types.d.ts +12 -0
  5. package/lib/components/AddVariables/AddVariables.d.ts +5 -0
  6. package/lib/components/AddVariables/index.d.ts +1 -0
  7. package/lib/components/AddVariables/types.d.ts +35 -0
  8. package/lib/components/AppHeader/types.d.ts +2 -0
  9. package/lib/components/AttachImage/AttachImage.d.ts +1 -6
  10. package/lib/components/AttachImage/types.d.ts +8 -0
  11. package/lib/components/Avatar/types.d.ts +9 -1
  12. package/lib/components/Charts/BarChart/BarChart.d.ts +1 -0
  13. package/lib/components/Charts/DashboardDonutChart/types.d.ts +6 -0
  14. package/lib/components/Checkbox/types.d.ts +4 -0
  15. package/lib/components/Comment/Comments.d.ts +4 -0
  16. package/lib/components/Comment/comment/Comment.d.ts +11 -0
  17. package/lib/components/Comment/comment/useNode.d.ts +7 -0
  18. package/lib/components/Comment/index.d.ts +1 -0
  19. package/lib/components/Comment/type.d.ts +25 -0
  20. package/lib/components/CreateVariable/CreateVariableSlider.d.ts +5 -0
  21. package/lib/components/CreateVariable/index.d.ts +1 -0
  22. package/lib/components/CreateVariable/types.d.ts +56 -0
  23. package/lib/components/Drawer/Types.d.ts +13 -0
  24. package/lib/components/Editor/constants.d.ts +1 -1
  25. package/lib/components/Editor/types.d.ts +10 -2
  26. package/lib/components/Excel/ExcelFile/ExcelFileComponents/actions.d.ts +8 -1
  27. package/lib/components/Excel/ExcelFile/ExcelFileComponents/reducerFunctions.d.ts +2 -0
  28. package/lib/components/Excel/ExcelFile/ExcelFileComponents/types.d.ts +13 -6
  29. package/lib/components/FileDropzone/RadioFilePreview.d.ts +4 -0
  30. package/lib/components/FileDropzone/types.d.ts +61 -0
  31. package/lib/components/IconButton/IconButton.d.ts +1 -2
  32. package/lib/components/IconButton/types.d.ts +1 -0
  33. package/lib/components/Input/Input.d.ts +1 -1
  34. package/lib/components/MenuOption/types.d.ts +3 -2
  35. package/lib/components/MiniModal/types.d.ts +7 -0
  36. package/lib/components/MultiSelect/MultiSelect.d.ts +1 -1
  37. package/lib/components/PhoneInput/PhoneInput.d.ts +6 -0
  38. package/lib/components/PhoneInput/index.d.ts +1 -0
  39. package/lib/components/PhoneInput/types.d.ts +10 -0
  40. package/lib/components/PopUpModal/types.d.ts +1 -0
  41. package/lib/components/Search/Search.d.ts +1 -1
  42. package/lib/components/Search/types.d.ts +4 -0
  43. package/lib/components/Select/components/types.d.ts +1 -0
  44. package/lib/components/Select/types.d.ts +2 -0
  45. package/lib/components/Table/Types.d.ts +1 -1
  46. package/lib/components/TableTree/Components/TableBody.d.ts +4 -0
  47. package/lib/components/TableTree/Components/TableCell.d.ts +4 -0
  48. package/lib/components/TableTree/Components/TableHead.d.ts +4 -0
  49. package/lib/components/TableTree/Components/TableRow.d.ts +4 -0
  50. package/lib/components/TableTree/Utils/getAllChildIds.d.ts +1 -0
  51. package/lib/components/TableTree/types.d.ts +38 -5
  52. package/lib/components/TableWithAccordion/TableWithAccordion.d.ts +5 -0
  53. package/lib/components/TableWithAccordion/data.d.ts +8 -0
  54. package/lib/components/TableWithAccordion/index.d.ts +1 -0
  55. package/lib/components/TableWithAccordion/types.d.ts +67 -0
  56. package/lib/components/Tabs/types.d.ts +1 -0
  57. package/lib/index.d.ts +395 -39
  58. package/lib/index.esm.js +3859 -1017
  59. package/lib/index.esm.js.map +1 -1
  60. package/lib/index.js +3866 -1016
  61. package/lib/index.js.map +1 -1
  62. package/lib/tsconfig.tsbuildinfo +1 -1
  63. package/lib/utils/FormatString/FormatString.d.ts +1 -0
  64. package/lib/utils/checkDuplicates/checkDuplicates.d.ts +1 -0
  65. package/package.json +2 -1
  66. package/src/StyleGuide/ColorPalette/colorPaletteList.ts +15 -0
  67. package/src/assets/Themes/BaseTheme.scss +16 -0
  68. package/src/assets/Themes/DarkTheme.scss +71 -42
  69. package/src/assets/icons/add_file.svg +4 -17
  70. package/src/assets/icons/add_variable.svg +11 -0
  71. package/src/assets/icons/authorization.svg +4 -0
  72. package/src/assets/icons/authorization_icon.svg +1 -0
  73. package/src/assets/icons/backward.svg +10 -0
  74. package/src/assets/icons/capture_icon.svg +3 -0
  75. package/src/assets/icons/depends_on_script.svg +7 -0
  76. package/src/assets/icons/download_file_icon.svg +2 -9
  77. package/src/assets/icons/email_group.svg +3 -0
  78. package/src/assets/icons/executions_icon.svg +3 -0
  79. package/src/assets/icons/forward.svg +3 -0
  80. package/src/assets/icons/labels.svg +8 -0
  81. package/src/assets/icons/machine_disable_icon.svg +18 -0
  82. package/src/assets/icons/machine_enable_icon.svg +10 -0
  83. package/src/assets/icons/parameters.svg +3 -0
  84. package/src/assets/icons/pre_post_condition.svg +8 -0
  85. package/src/assets/icons/program_element.svg +8 -0
  86. package/src/assets/icons/project_status_icon.svg +10 -0
  87. package/src/assets/icons/refresh_icon.svg +4 -0
  88. package/src/assets/icons/rotate_icon.svg +10 -0
  89. package/src/assets/icons/suites_icon.svg +3 -0
  90. package/src/assets/icons/swipe_icon.svg +9 -0
  91. package/src/assets/icons/tap_icon.svg +4 -0
  92. package/src/assets/icons/test_data.svg +5 -0
  93. package/src/assets/icons/test_data_set.svg +7 -0
  94. package/src/assets/icons/variable_set.svg +5 -0
  95. package/src/assets/icons/window_maximize.svg +1 -2
  96. package/src/assets/icons/window_restore.svg +4 -0
  97. package/src/assets/styles/_colors.scss +0 -1
  98. package/src/components/Accordion/Accordion.stories.tsx +4 -0
  99. package/src/components/Accordion/Accordion.tsx +7 -1
  100. package/src/components/Accordion/types.ts +12 -0
  101. package/src/components/AddVariables/AddVariables.scss +14 -0
  102. package/src/components/AddVariables/AddVariables.stories.tsx +44 -0
  103. package/src/components/AddVariables/AddVariables.tsx +113 -0
  104. package/src/components/AddVariables/index.ts +1 -0
  105. package/src/components/AddVariables/types.ts +36 -0
  106. package/src/components/AllProjectsDropdown/AllProjectsDropdown.scss +1 -1
  107. package/src/components/AppHeader/AppHeader.scss +40 -1
  108. package/src/components/AppHeader/AppHeader.stories.tsx +133 -5
  109. package/src/components/AppHeader/AppHeader.tsx +111 -112
  110. package/src/components/AppHeader/types.ts +10 -9
  111. package/src/components/AttachImage/AttachImage.stories.tsx +2 -0
  112. package/src/components/AttachImage/AttachImage.tsx +5 -9
  113. package/src/components/AttachImage/types.ts +25 -18
  114. package/src/components/Avatar/Avatar.scss +4 -0
  115. package/src/components/Avatar/Avatar.stories.tsx +38 -18
  116. package/src/components/Avatar/Avatar.tsx +19 -3
  117. package/src/components/Avatar/types.ts +9 -1
  118. package/src/components/Charts/BarChart/BarChart.scss +4 -1
  119. package/src/components/Charts/BarChart/BarChart.tsx +23 -9
  120. package/src/components/Charts/DashboardDonutChart/DashboardDonutChart.scss +10 -3
  121. package/src/components/Charts/DashboardDonutChart/DashboardDonutChart.stories.tsx +2 -1
  122. package/src/components/Charts/DashboardDonutChart/DashboardDonutChart.tsx +54 -25
  123. package/src/components/Charts/DashboardDonutChart/types.ts +7 -1
  124. package/src/components/Charts/DonutChart/DonutChart.tsx +8 -3
  125. package/src/components/Charts/LineChart/LineChart.scss +13 -9
  126. package/src/components/Charts/LineChart/LineChart.tsx +6 -2
  127. package/src/components/Charts/RadialChart/RadialChart.scss +4 -0
  128. package/src/components/Charts/RadialChart/RadialChart.tsx +51 -45
  129. package/src/components/Checkbox/Checkbox.scss +57 -0
  130. package/src/components/Checkbox/Checkbox.stories.tsx +91 -15
  131. package/src/components/Checkbox/Checkbox.tsx +4 -1
  132. package/src/components/Checkbox/types.ts +4 -0
  133. package/src/components/Comment/Comments.scss +166 -0
  134. package/src/components/Comment/Comments.stories.tsx +212 -0
  135. package/src/components/Comment/Comments.tsx +51 -0
  136. package/src/components/Comment/comment/Comment.tsx +206 -0
  137. package/src/components/Comment/comment/useNode.ts +51 -0
  138. package/src/components/Comment/index.ts +1 -0
  139. package/src/components/Comment/type.ts +36 -0
  140. package/src/components/CreateVariable/CreateVariableSlider.scss +18 -0
  141. package/src/components/CreateVariable/CreateVariableSlider.stories.tsx +66 -0
  142. package/src/components/CreateVariable/CreateVariableSlider.tsx +95 -0
  143. package/src/components/CreateVariable/index.ts +1 -0
  144. package/src/components/CreateVariable/types.ts +58 -0
  145. package/src/components/DatePicker/DatePicker.scss +11 -0
  146. package/src/components/DatePicker/DatePicker.stories.tsx +19 -0
  147. package/src/components/DatePicker/DatePicker.tsx +73 -22
  148. package/src/components/Drawer/Drawer.scss +3 -2
  149. package/src/components/Drawer/Drawer.stories.tsx +0 -1
  150. package/src/components/Drawer/Drawer.tsx +4 -1
  151. package/src/components/Drawer/Types.ts +13 -0
  152. package/src/components/Editor/Editor.stories.tsx +2 -2
  153. package/src/components/Editor/Editor.tsx +4 -2
  154. package/src/components/Editor/VariableDropdown.scss +8 -2
  155. package/src/components/Editor/VariableDropdown.tsx +15 -7
  156. package/src/components/Editor/constants.ts +1 -1
  157. package/src/components/Editor/types.ts +12 -2
  158. package/src/components/Excel/ExcelFile/ExcelFile.scss +0 -1
  159. package/src/components/Excel/ExcelFile/ExcelFile.tsx +41 -25
  160. package/src/components/Excel/ExcelFile/ExcelFileComponents/ActiveCell.tsx +12 -0
  161. package/src/components/Excel/ExcelFile/ExcelFileComponents/Cell.tsx +2 -34
  162. package/src/components/Excel/ExcelFile/ExcelFileComponents/FloatingRect.tsx +26 -1
  163. package/src/components/Excel/ExcelFile/ExcelFileComponents/Spreadsheet.scss +24 -22
  164. package/src/components/Excel/ExcelFile/ExcelFileComponents/Spreadsheet.tsx +1 -3
  165. package/src/components/Excel/ExcelFile/ExcelFileComponents/actions.ts +13 -0
  166. package/src/components/Excel/ExcelFile/ExcelFileComponents/reducer.ts +53 -26
  167. package/src/components/Excel/ExcelFile/ExcelFileComponents/reducerFunctions.ts +81 -14
  168. package/src/components/Excel/ExcelFile/ExcelFileComponents/types.ts +17 -6
  169. package/src/components/Excel/ExcelFile.stories.tsx +4 -4
  170. package/src/components/Excel/ExcelToolBar/ExcelToolBar.tsx +36 -19
  171. package/src/components/Excel/dataConversion.ts +43 -20
  172. package/src/components/FieldSet/FieldSet.scss +2 -1
  173. package/src/components/FieldSet/FieldSet.stories.tsx +2 -1
  174. package/src/components/FileDropzone/Dropzone.tsx +76 -28
  175. package/src/components/FileDropzone/FileDropzone.scss +30 -3
  176. package/src/components/FileDropzone/FileDropzone.stories.tsx +125 -4
  177. package/src/components/FileDropzone/FileDropzone.tsx +46 -13
  178. package/src/components/FileDropzone/RadioFilePreview.tsx +76 -0
  179. package/src/components/FileDropzone/types.ts +73 -0
  180. package/src/components/Icon/iconList.ts +47 -2
  181. package/src/components/IconButton/IconButton.scss +11 -11
  182. package/src/components/IconButton/IconButton.stories.tsx +1 -0
  183. package/src/components/IconButton/IconButton.tsx +6 -8
  184. package/src/components/IconButton/types.ts +2 -1
  185. package/src/components/IconRadioGroup/IconRadioGroup.scss +2 -1
  186. package/src/components/Input/Input.scss +137 -125
  187. package/src/components/Input/Input.tsx +110 -93
  188. package/src/components/InputWithDropdown/InputWithDropdown.scss +9 -2
  189. package/src/components/InputWithDropdown/types.ts +3 -3
  190. package/src/components/LabelEditTextField/LabelEditTextField.tsx +1 -1
  191. package/src/components/MenuOption/MenuOption.stories.tsx +4 -3
  192. package/src/components/MenuOption/MenuOption.tsx +1 -1
  193. package/src/components/MenuOption/types.ts +4 -2
  194. package/src/components/MiniModal/MiniModal.scss +0 -4
  195. package/src/components/MiniModal/MiniModal.stories.tsx +3 -2
  196. package/src/components/MiniModal/MiniModal.tsx +28 -10
  197. package/src/components/MiniModal/types.ts +7 -0
  198. package/src/components/Modal/Modal.stories.tsx +2 -1
  199. package/src/components/ModulesChip/ModuleChip.scss +21 -8
  200. package/src/components/ModulesChip/ModuleChip.stories.tsx +2 -2
  201. package/src/components/ModulesChip/ModuleChip.tsx +6 -9
  202. package/src/components/MultiSelect/Dropdown.tsx +12 -5
  203. package/src/components/MultiSelect/MultiSelect.scss +29 -0
  204. package/src/components/MultiSelect/MultiSelect.stories.tsx +31 -14
  205. package/src/components/MultiSelect/MultiSelect.tsx +32 -21
  206. package/src/components/PhoneInput/PhoneInput.d.ts +3 -0
  207. package/src/components/PhoneInput/PhoneInput.stories.tsx +95 -0
  208. package/src/components/PhoneInput/PhoneInput.tsx +90 -0
  209. package/src/components/PhoneInput/index.ts +1 -0
  210. package/src/components/PhoneInput/phoneInput.scss +3 -0
  211. package/src/components/PhoneInput/types.ts +10 -0
  212. package/src/components/PopUpModal/PopUpModal.stories.tsx +14 -13
  213. package/src/components/PopUpModal/PopUpModal.tsx +2 -1
  214. package/src/components/PopUpModal/types.ts +14 -13
  215. package/src/components/Search/Search.stories.tsx +28 -9
  216. package/src/components/Search/Search.tsx +32 -29
  217. package/src/components/Search/types.ts +4 -0
  218. package/src/components/Select/Select.scss +20 -0
  219. package/src/components/Select/Select.stories.tsx +50 -1
  220. package/src/components/Select/Select.tsx +34 -7
  221. package/src/components/Select/components/Dropdown.scss +9 -0
  222. package/src/components/Select/components/Dropdown.tsx +20 -6
  223. package/src/components/Select/components/types.ts +1 -0
  224. package/src/components/Select/types.ts +12 -2
  225. package/src/components/Table/Table.scss +6 -5
  226. package/src/components/Table/Types.ts +1 -1
  227. package/src/components/TableTree/Components/TableBody.tsx +35 -0
  228. package/src/components/TableTree/Components/TableCell.tsx +59 -0
  229. package/src/components/TableTree/Components/TableHead.tsx +39 -0
  230. package/src/components/TableTree/Components/TableRow.tsx +37 -0
  231. package/src/components/TableTree/TableTree.scss +8 -5
  232. package/src/components/TableTree/TableTree.tsx +16 -46
  233. package/src/components/TableTree/Utils/getAllChildIds.ts +12 -0
  234. package/src/components/TableTree/Utils/renderSpaces.ts +0 -0
  235. package/src/components/TableTree/types.ts +43 -5
  236. package/src/components/TableWithAccordion/TableWithAccordion.scss +54 -0
  237. package/src/components/TableWithAccordion/TableWithAccordion.stories.tsx +94 -0
  238. package/src/components/TableWithAccordion/TableWithAccordion.tsx +174 -0
  239. package/src/components/TableWithAccordion/data.ts +37 -0
  240. package/src/components/TableWithAccordion/index.ts +1 -0
  241. package/src/components/TableWithAccordion/types.ts +70 -0
  242. package/src/components/Tabs/Tabs.scss +58 -5
  243. package/src/components/Tabs/Tabs.stories.tsx +31 -12
  244. package/src/components/Tabs/Tabs.tsx +27 -18
  245. package/src/components/Tabs/types.ts +1 -1
  246. package/src/components/TextArea/Textarea.stories.tsx +1 -1
  247. package/src/hooks/useFileDropzone.tsx +2 -1
  248. package/src/index.ts +18 -1
  249. package/src/utils/FormatString/FormatString.stories.tsx +58 -0
  250. package/src/utils/FormatString/FormatString.tsx +41 -0
  251. package/src/utils/checkDuplicates/CheckDuplicates.stories.tsx +40 -0
  252. package/src/utils/checkDuplicates/checkDuplicates.ts +13 -0
@@ -0,0 +1,113 @@
1
+ import { checkEmpty } from '../../utils/checkEmpty/checkEmpty';
2
+ import VariableDropdown from '../Editor/VariableDropdown';
3
+ import Icon from '../Icon';
4
+ import Input from '../Input';
5
+ import { AddVariableProps, dynamicObject } from './types';
6
+ import './AddVariables.scss';
7
+ import React, { useState, useRef, useEffect } from 'react';
8
+
9
+ const AddVariables: React.FC<AddVariableProps> = ({
10
+ label = '',
11
+ variableList = [],
12
+ placeholder = 'Enter text',
13
+ onChange,
14
+ onCreateVariableClick,
15
+ value = '',
16
+ dropdownWidth = 'inherit',
17
+ }) => {
18
+ const [showDropdown, setShowDropdown] = useState<boolean>(false);
19
+ const [cursorPosition, setCursorPosition] = useState<number | null>(null);
20
+ const [showCreateVariableIcon, setShowCreateVariableIcon] =
21
+ useState<boolean>(false);
22
+ const inputRef = useRef<HTMLInputElement>(null);
23
+
24
+ useEffect(() => {
25
+ if (cursorPosition !== null && inputRef.current) {
26
+ inputRef.current.setSelectionRange(cursorPosition, cursorPosition);
27
+ inputRef.current.focus();
28
+ }
29
+ }, [cursorPosition]);
30
+
31
+ const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
32
+ const value = event.target.value;
33
+ onChange?.(value);
34
+
35
+ // Show dropdown only if the last character typed is `$`
36
+ const cursorPos = inputRef.current?.selectionStart || 0;
37
+ const isDollarTyped = value[cursorPos - 1] === '$';
38
+
39
+ if (isDollarTyped) {
40
+ setShowDropdown(true);
41
+ } else {
42
+ setShowDropdown(false); // Close if it's a space or other characters
43
+ }
44
+ if (value?.includes('$')) {
45
+ setShowCreateVariableIcon(false);
46
+ } else {
47
+ setShowCreateVariableIcon(true);
48
+ }
49
+ };
50
+
51
+ const handleDropdownClick = (item: dynamicObject) => {
52
+ if (inputRef.current) {
53
+ const { selectionStart, selectionEnd } = inputRef.current;
54
+ const dollarSyntax = `{${
55
+ item.type === 'LOCAL'
56
+ ? 'LV'
57
+ : item.type === 'GLOBAL'
58
+ ? 'GV'
59
+ : item.type === 'GROUP'
60
+ ? 'SG'
61
+ : 'PEV'
62
+ }_${item.name}}`;
63
+
64
+ const newValue =
65
+ value.slice(0, selectionStart || 0) +
66
+ dollarSyntax +
67
+ value.slice(selectionEnd || 0);
68
+
69
+ onChange(newValue);
70
+ setCursorPosition((selectionStart || 0) + dollarSyntax.length);
71
+
72
+ // Close the dropdown after inserting the variable
73
+ setShowDropdown(false);
74
+ onChange?.(newValue);
75
+ }
76
+ };
77
+
78
+ return (
79
+ <div className="ff-add-variable-container">
80
+ <div className="ff-add-variable-input">
81
+ <Input
82
+ name="add_variable"
83
+ ref={inputRef}
84
+ type="text"
85
+ value={value}
86
+ onChange={handleChange}
87
+ variant="primary"
88
+ label={label}
89
+ placeholder={placeholder}
90
+ />
91
+ {!checkEmpty(value) && showCreateVariableIcon && (
92
+ <Icon
93
+ onClick={onCreateVariableClick}
94
+ name="add_variable"
95
+ width={24}
96
+ height={24}
97
+ hoverEffect
98
+ />
99
+ )}
100
+ </div>
101
+ {showDropdown && (
102
+ <VariableDropdown
103
+ position="relative"
104
+ width={dropdownWidth}
105
+ optionsList={variableList}
106
+ onSelectVariable={handleDropdownClick}
107
+ />
108
+ )}
109
+ </div>
110
+ );
111
+ };
112
+
113
+ export default AddVariables;
@@ -0,0 +1 @@
1
+ export { default } from './AddVariables';
@@ -0,0 +1,36 @@
1
+ export type dynamicObject = {
2
+ [key: string]: any;
3
+ };
4
+
5
+ export interface AddVariableProps {
6
+ /**
7
+ * Label for the field
8
+ */
9
+ label?: string;
10
+ /**
11
+ * List of variables
12
+ */
13
+ variableList?: dynamicObject[];
14
+ /**
15
+ * Place holder for the input field
16
+ */
17
+ placeholder?: string;
18
+ /**
19
+ * Function to handle input change
20
+ * @param value
21
+ * @returns
22
+ */
23
+ onChange: (value: string) => void;
24
+ /**
25
+ * Function to handle create variable icon click
26
+ */
27
+ onCreateVariableClick?: () => void;
28
+ /**
29
+ * Value of the input field
30
+ */
31
+ value: string;
32
+ /**
33
+ * Width of the dropdown
34
+ */
35
+ dropdownWidth?: string;
36
+ }
@@ -7,7 +7,7 @@
7
7
  .ff-all-project-dropdown {
8
8
  width: fit-content;
9
9
  border-radius: 16px;
10
- background-color: var(--ff-all-projects-default-color);
10
+ // background-color: var(--ff-all-projects-default-color);
11
11
  color: var(--expandable-menu-default-bg);
12
12
  line-height: 18px;
13
13
  @include mixins.center-content();
@@ -17,6 +17,7 @@
17
17
  .ff-app-header-nav-bar {
18
18
  display: flex;
19
19
  align-items: center;
20
+ justify-content: center;
20
21
  background-color: var(--brand-color);
21
22
  transform: translateY(12px);
22
23
  border-radius: 20px;
@@ -32,6 +33,10 @@
32
33
  cursor: pointer;
33
34
  display: flex;
34
35
  position: relative;
36
+ flex: 1 1 auto;
37
+ overflow: hidden;
38
+ transition: flex-grow 1s ease, opacity 1s ease, max-width 1s ease;
39
+ max-width: 100px; /* Initial max-width */
35
40
  &:not(.ff-app-header-nav-bar-item--selected):hover::after {
36
41
  animation: oscillate-border-width 0.5s ease-in-out forwards;
37
42
  }
@@ -54,7 +59,9 @@
54
59
  padding: 3px;
55
60
  background-color: var(--primary-icon-color);
56
61
  border-radius: 20px;
57
- transition: width 3s ease-in-out;
62
+ flex-grow: 12; /* Increase size on hover */
63
+ max-width: 550px;
64
+ opacity: 1;
58
65
  .ff-app-header-nav-bar-item-label {
59
66
  box-shadow: 0px 4px 4px 0px #00000040 inset;
60
67
  background: linear-gradient(
@@ -114,6 +121,7 @@
114
121
  .ff-app-header-quickmenu-container {
115
122
  display: flex;
116
123
  align-items: center;
124
+ overflow: hidden;
117
125
  .ff-app-header-nav-bar-quickmenu-item {
118
126
  margin-right: 6px;
119
127
  .ff-tooltip-container {
@@ -136,6 +144,15 @@
136
144
  }
137
145
  }
138
146
  }
147
+ .ff-app-header-nav-bar-item--selected
148
+ .ff-app-header-quickmenu-container {
149
+ animation: quickmenu-expand 1s ease forwards;
150
+ }
151
+
152
+ .ff-app-header-nav-bar-item:not(.ff-app-header-nav-bar-item--selected)
153
+ .ff-app-header-quickmenu-container {
154
+ animation: quickmenu-collapse 1s ease forwards;
155
+ }
139
156
  }
140
157
  .more-menu {
141
158
  width: 40px;
@@ -174,3 +191,25 @@
174
191
  left: 25%;
175
192
  }
176
193
  }
194
+
195
+ @keyframes quickmenu-expand {
196
+ from {
197
+ max-height: 0;
198
+ opacity: 0;
199
+ }
200
+ to {
201
+ max-height: 500px; /* Ensure this value covers the full height of your quick menu */
202
+ opacity: 1;
203
+ }
204
+ }
205
+
206
+ @keyframes quickmenu-collapse {
207
+ from {
208
+ max-height: 500px;
209
+ opacity: 1;
210
+ }
211
+ to {
212
+ max-height: 0;
213
+ opacity: 0;
214
+ }
215
+ }
@@ -4,6 +4,7 @@ import {
4
4
  appHeaderMenuItemProps,
5
5
  appHeaderSubMenuItemProps,
6
6
  appHeaderQuickMenuItemProps,
7
+ appHeaderHiddenMenuItemProps,
7
8
  } from './types';
8
9
  import Icon from '../Icon';
9
10
  import React, { useState } from 'react';
@@ -135,6 +136,27 @@ const headerMenuItems = [
135
136
  icon: 'approval_pending',
136
137
  },
137
138
  ],
139
+ quickMenuItems: [
140
+ { label: 'Elements', path: '#elements', iconName: 'element' },
141
+ {
142
+ label: 'Project Elements',
143
+ path: '#project-element',
144
+ iconName: 'project_element',
145
+ },
146
+ { label: 'Test Data', path: '#test-data', iconName: 'test_data' },
147
+ { label: 'Variables', path: '#variable', iconName: 'variable' },
148
+ { label: 'Parameters', path: '#parameters', iconName: 'parameters' },
149
+ {
150
+ label: 'Data Provider',
151
+ path: '#data-provider',
152
+ iconName: 'data_provider',
153
+ },
154
+ {
155
+ label: 'Web Service',
156
+ path: '#web-service',
157
+ iconName: 'web_service_icon',
158
+ },
159
+ ],
138
160
  },
139
161
  ],
140
162
  },
@@ -162,6 +184,42 @@ const headerMenuItems = [
162
184
  icon: 'approval_pending',
163
185
  },
164
186
  ],
187
+ quickMenuItems: [
188
+ { label: 'Elements', path: '#elements', iconName: 'element' },
189
+ {
190
+ label: 'Project Elements',
191
+ path: '#project-element',
192
+ iconName: 'project_element',
193
+ },
194
+ { label: 'Step Groups', path: '#step-group', iconName: 'step_group' },
195
+ { label: 'Test Data', path: '#test-data', iconName: 'test_data' },
196
+ { label: 'Variables', path: '#variable', iconName: 'variable' },
197
+ {
198
+ label: 'Pre-post Conditions',
199
+ path: '#pre-post-conditions',
200
+ iconName: 'pre_post_condition',
201
+ },
202
+ {
203
+ label: 'Data Provider',
204
+ path: '#data-provider',
205
+ iconName: 'data_provider',
206
+ },
207
+ {
208
+ label: 'Depends on script',
209
+ path: '#depends-on-script',
210
+ iconName: 'depends_on_script',
211
+ },
212
+ {
213
+ label: 'Web Service',
214
+ path: '#web-service',
215
+ iconName: 'web_service_icon',
216
+ },
217
+ {
218
+ label: 'Authorization',
219
+ path: '#authorization',
220
+ iconName: 'authorization_icon',
221
+ },
222
+ ],
165
223
  },
166
224
  {
167
225
  label: 'Executions',
@@ -183,6 +241,24 @@ const headerMenuItems = [
183
241
  icon: 'approval_pending',
184
242
  },
185
243
  ],
244
+ quickMenuItems: [
245
+ {
246
+ label: 'Test Data Set',
247
+ path: '#test-data-set',
248
+ iconName: 'test_data_set',
249
+ },
250
+ {
251
+ label: 'Variable Set',
252
+ path: '#variable-set',
253
+ iconName: 'variable_set',
254
+ },
255
+ {
256
+ label: 'Email Group',
257
+ path: '#email-group',
258
+ iconName: 'email_group',
259
+ },
260
+ { label: 'Labels', path: '#labels', iconName: 'label_icon' },
261
+ ],
186
262
  },
187
263
  {
188
264
  label: 'Scheduled Executions',
@@ -198,11 +274,8 @@ const headerMenuItems = [
198
274
  label: 'Rest API',
199
275
  path: '/webservice/restapi',
200
276
  quickMenuItems: [
201
- {
202
- label: 'variables',
203
- path: '/webservice/restapi/variable',
204
- iconName: 'variable',
205
- },
277
+ { label: 'Variables', path: '#variable', iconName: 'variable' },
278
+ { label: 'History', path: '#history', iconName: 'history' },
206
279
  ],
207
280
  },
208
281
  {
@@ -309,6 +382,24 @@ const headerMenuItems = [
309
382
  icon: 'configuration',
310
383
  },
311
384
  ],
385
+ quickMenuItems: [
386
+ { label: 'Variables', path: '#variable', iconName: 'variable' },
387
+ {
388
+ label: 'Data Provider',
389
+ path: '#data-provider',
390
+ iconName: 'data_provider',
391
+ },
392
+ {
393
+ label: 'Depends on script',
394
+ path: '#depends-on-script',
395
+ iconName: 'depends_on_script',
396
+ },
397
+ {
398
+ label: 'Web Service',
399
+ path: '#web-service',
400
+ iconName: 'web_service_icon',
401
+ },
402
+ ],
312
403
  },
313
404
  {
314
405
  label: 'Elements',
@@ -335,6 +426,20 @@ const headerMenuItems = [
335
426
  icon: 'configuration',
336
427
  },
337
428
  ],
429
+ quickMenuItems: [
430
+ { label: 'Parameters', path: '#parameters', iconName: 'parameters' },
431
+ { label: 'Variables', path: '#variable', iconName: 'variable' },
432
+ {
433
+ label: 'Data Provider',
434
+ path: '#data-provider',
435
+ iconName: 'data_provider',
436
+ },
437
+ {
438
+ label: 'Web Service',
439
+ path: '#web-service',
440
+ iconName: 'web_service_icon',
441
+ },
442
+ ],
338
443
  },
339
444
  {
340
445
  label: 'Variables',
@@ -376,6 +481,9 @@ export const Controlled: Story = {
376
481
  const [selectedMenuItem, setSelectedMenuItem] = useState('Projects');
377
482
  const [selectedSubMenuItem, setSelectedSubMenuItem] = useState('');
378
483
  const [selectedQuickMenuItem, setSelectedQuickMenuItem] = useState('');
484
+ const [selectedHiddenMenuItems, setSelectedHiddenMenuItems] = useState<
485
+ appHeaderHiddenMenuItemProps[]
486
+ >([]);
379
487
  const [selectedProject, setSelectedProject] = useState({
380
488
  label: 'All Projects',
381
489
  value: 'All Projects',
@@ -384,9 +492,27 @@ export const Controlled: Story = {
384
492
  const handleMenuClick = (item: appHeaderMenuItemProps) => {
385
493
  setSelectedMenuItem(item.label);
386
494
  };
495
+
387
496
  const handleSubMenuClick = (item: appHeaderSubMenuItemProps) => {
388
497
  setSelectedSubMenuItem(item.label);
498
+ const selectedMainMenu = headerMenuItems.find(
499
+ (menu) => menu.label === selectedMenuItem
500
+ );
501
+
502
+ if (selectedMainMenu?.subMenuItems) {
503
+ const selectedSubMenu = selectedMainMenu.subMenuItems.find(
504
+ (subMenu) => subMenu.label === item.label
505
+ ) as appHeaderSubMenuItemProps;
506
+ let hiddenMenuArray: appHeaderHiddenMenuItemProps[] = [];
507
+ if (selectedSubMenu?.hiddenMenuItems) {
508
+ hiddenMenuArray = selectedSubMenu.hiddenMenuItems;
509
+ console.log('Hidden menu items:', hiddenMenuArray);
510
+ }
511
+ setSelectedHiddenMenuItems(hiddenMenuArray);
512
+ console.log('Selected main menu:', selectedSubMenu);
513
+ }
389
514
  };
515
+
390
516
  const handleQuickMenuClick = (item: appHeaderQuickMenuItemProps) => {
391
517
  setSelectedQuickMenuItem(item.iconName);
392
518
  };
@@ -401,10 +527,12 @@ export const Controlled: Story = {
401
527
  <>
402
528
  <div>
403
529
  <AppHeader
530
+ width='1120px'
404
531
  logoIconName="fireflink_icon"
405
532
  leftContent={headerRightSideContent}
406
533
  rightContent={headerRightSideContent}
407
534
  appHeaderMenuItems={headerMenuItems}
535
+ appHeaderHiddenMenuItems={selectedHiddenMenuItems}
408
536
  projectsList={projectList}
409
537
  selectedMenu={selectedMenuItem}
410
538
  selectedSubMenu={selectedSubMenuItem}