pixel-react-excel-sheet 1.0.38 → 1.0.40

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 (150) hide show
  1. package/lib/components/Button/Button.d.ts +2 -2
  2. package/lib/components/Charts/DashboardDonutChart/types.d.ts +3 -0
  3. package/lib/components/Charts/LineChart/types.d.ts +1 -0
  4. package/lib/components/ChooseFile/ChooseFile.d.ts +3 -2
  5. package/lib/components/Comment/Comments.d.ts +1 -1
  6. package/lib/components/Comment/type.d.ts +3 -3
  7. package/lib/components/ConditionalDropdown/types.d.ts +4 -0
  8. package/lib/components/DatePicker/types.d.ts +2 -0
  9. package/lib/components/Drawer/Types.d.ts +3 -0
  10. package/lib/components/Excel/ExcelFile/ExcelFile.d.ts +11 -10
  11. package/lib/components/Excel/ExcelFile/ExcelFileComponents/ActiveCell.d.ts +10 -0
  12. package/lib/components/Excel/ExcelFile/ExcelFileComponents/DataViewer.d.ts +1 -1
  13. package/lib/components/Excel/ExcelFile/ExcelFileComponents/Spreadsheet.d.ts +9 -0
  14. package/lib/components/Excel/ExcelFile/ExcelFileComponents/types.d.ts +0 -3
  15. package/lib/components/Excel/Types.d.ts +15 -11
  16. package/lib/components/FF_Captcha/Recaptcha.d.ts +2 -1
  17. package/lib/components/FF_Captcha/types.d.ts +11 -2
  18. package/lib/components/Input/types.d.ts +4 -0
  19. package/lib/components/LabelEditTextField/types.d.ts +2 -0
  20. package/lib/components/MobileSkin/MobileSkin.d.ts +5 -0
  21. package/lib/components/MobileSkin/MobileSkinInterface.d.ts +13 -0
  22. package/lib/components/MobileSkin/index.d.ts +1 -0
  23. package/lib/components/MobileSkin/types.d.ts +32 -0
  24. package/lib/components/Search/Search.d.ts +1 -1
  25. package/lib/components/Search/types.d.ts +1 -0
  26. package/lib/components/Select/components/types.d.ts +3 -2
  27. package/lib/components/Select/types.d.ts +10 -2
  28. package/lib/components/SequentialConnectingBranch/components/Branches/Branches.d.ts +1 -1
  29. package/lib/components/SequentialConnectingBranch/components/Branches/types.d.ts +1 -0
  30. package/lib/components/SequentialConnectingBranch/components/ConnectingBranches/ConnectingBranches.d.ts +1 -1
  31. package/lib/components/SequentialConnectingBranch/components/ConnectingBranches/types.d.ts +1 -0
  32. package/lib/components/SequentialConnectingBranch/types.d.ts +1 -0
  33. package/lib/components/TableTree/types.d.ts +4 -4
  34. package/lib/components/Tabs/types.d.ts +1 -0
  35. package/lib/index.d.ts +96 -40
  36. package/lib/index.esm.js +4816 -1669
  37. package/lib/index.esm.js.map +1 -1
  38. package/lib/index.js +4829 -1669
  39. package/lib/index.js.map +1 -1
  40. package/lib/tsconfig.tsbuildinfo +1 -1
  41. package/lib/utils/formData/ConvertFormDataToObject.d.ts +1 -0
  42. package/lib/utils/keyBoardActionUtil/UseKeyboardActions.d.ts +2 -0
  43. package/lib/utils/keyBoardActionUtil/types.d.ts +4 -0
  44. package/lib/validations/regex.d.ts +11 -1
  45. package/package.json +6 -1
  46. package/src/assets/Themes/BaseTheme.scss +3 -1
  47. package/src/assets/Themes/DarkTheme.scss +10 -1
  48. package/src/assets/icons/clear_cache.svg +5 -0
  49. package/src/assets/icons/external_user.svg +13 -0
  50. package/src/assets/icons/group_user.svg +12 -0
  51. package/src/assets/icons/single_user.svg +12 -0
  52. package/src/assets/icons/test_freshers_logo.svg +8 -0
  53. package/src/assets/icons/unfollow_icon.svg +3 -0
  54. package/src/components/AllProjectsDropdown/AllProjectsDropdown.scss +7 -45
  55. package/src/components/AllProjectsDropdown/AllProjectsDropdown.stories.tsx +5 -0
  56. package/src/components/AllProjectsDropdown/AllProjectsDropdown.tsx +76 -64
  57. package/src/components/Button/Button.scss +0 -1
  58. package/src/components/Button/Button.tsx +3 -4
  59. package/src/components/Charts/DashboardDonutChart/DashboardDonutChart.stories.tsx +38 -6
  60. package/src/components/Charts/DashboardDonutChart/DashboardDonutChart.tsx +10 -4
  61. package/src/components/Charts/DashboardDonutChart/types.ts +4 -1
  62. package/src/components/Charts/LineChart/LineChart.stories.tsx +27 -88
  63. package/src/components/Charts/LineChart/LineChart.tsx +138 -42
  64. package/src/components/Charts/LineChart/types.ts +1 -0
  65. package/src/components/Charts/MultiRadialChart/MultiRadialChart.scss +3 -3
  66. package/src/components/Charts/MultiRadialChart/MultiRadialChart.tsx +47 -43
  67. package/src/components/ChooseFile/ChooseFile.tsx +3 -4
  68. package/src/components/Comment/Comments.scss +0 -1
  69. package/src/components/Comment/Comments.stories.tsx +22 -4
  70. package/src/components/Comment/Comments.tsx +20 -1
  71. package/src/components/Comment/type.ts +3 -3
  72. package/src/components/ConditionalDropdown/ConditionalDropdown.stories.tsx +1 -0
  73. package/src/components/ConditionalDropdown/ConditionalDropdown.tsx +2 -1
  74. package/src/components/ConditionalDropdown/types.ts +4 -0
  75. package/src/components/DatePicker/DatePicker.scss +307 -2
  76. package/src/components/DatePicker/DatePicker.tsx +27 -19
  77. package/src/components/DatePicker/types.ts +4 -0
  78. package/src/components/Drawer/Drawer.stories.tsx +1 -1
  79. package/src/components/Drawer/Types.ts +4 -2
  80. package/src/components/Editor/Editor.scss +23 -18
  81. package/src/components/Editor/Editor.tsx +2 -2
  82. package/src/components/Excel/ExcelContextMenu/ExcelContextMenu.tsx +6 -3
  83. package/src/components/Excel/ExcelFile/ExcelFile.scss +45 -41
  84. package/src/components/Excel/ExcelFile/ExcelFile.tsx +70 -64
  85. package/src/components/Excel/ExcelFile/ExcelFileComponents/ActiveCell.tsx +29 -1
  86. package/src/components/Excel/ExcelFile/ExcelFileComponents/Cell.tsx +1 -37
  87. package/src/components/Excel/ExcelFile/ExcelFileComponents/DataViewer.tsx +1 -40
  88. package/src/components/Excel/ExcelFile/ExcelFileComponents/Spreadsheet.scss +3 -3
  89. package/src/components/Excel/ExcelFile/ExcelFileComponents/Spreadsheet.tsx +14 -1
  90. package/src/components/Excel/ExcelFile/ExcelFileComponents/reducer.ts +3 -0
  91. package/src/components/Excel/ExcelFile/ExcelFileComponents/reducerFunctions.ts +8 -74
  92. package/src/components/Excel/ExcelFile/ExcelFileComponents/types.ts +0 -5
  93. package/src/components/Excel/ExcelFile.stories.tsx +116 -125
  94. package/src/components/Excel/ExcelToolBar/ExcelToolBar.tsx +10 -11
  95. package/src/components/Excel/Types.ts +18 -16
  96. package/src/components/FF_Captcha/Recaptcha.tsx +19 -9
  97. package/src/components/FF_Captcha/types.ts +12 -4
  98. package/src/components/Icon/Icon.stories.tsx +56 -8
  99. package/src/components/Icon/iconList.ts +13 -1
  100. package/src/components/Input/Input.stories.tsx +12 -0
  101. package/src/components/Input/Input.tsx +3 -1
  102. package/src/components/Input/types.ts +4 -0
  103. package/src/components/InputWithDropdown/types.ts +1 -1
  104. package/src/components/LabelEditTextField/LabelEditTextField.scss +4 -0
  105. package/src/components/LabelEditTextField/LabelEditTextField.stories.tsx +2 -1
  106. package/src/components/LabelEditTextField/LabelEditTextField.tsx +14 -10
  107. package/src/components/LabelEditTextField/types.ts +2 -0
  108. package/src/components/LazyLoad/LazyLoad.stories.tsx +1 -0
  109. package/src/components/LazyLoad/LazyLoading.tsx +10 -1
  110. package/src/components/MachineInputField/MachineInputField.scss +5 -1
  111. package/src/components/MachineInputField/MachineInputField.tsx +1 -0
  112. package/src/components/MobileSkin/MobileSkin.scss +67 -0
  113. package/src/components/MobileSkin/MobileSkin.stories.tsx +93 -0
  114. package/src/components/MobileSkin/MobileSkin.tsx +89 -0
  115. package/src/components/MobileSkin/MobileSkinInterface.ts +13 -0
  116. package/src/components/MobileSkin/index.ts +1 -0
  117. package/src/components/MobileSkin/types.ts +32 -0
  118. package/src/components/Modal/Modal.stories.tsx +7 -0
  119. package/src/components/Modal/Modal.tsx +17 -20
  120. package/src/components/Search/Search.scss +8 -0
  121. package/src/components/Search/Search.tsx +17 -6
  122. package/src/components/Search/types.ts +1 -0
  123. package/src/components/Select/Select.stories.tsx +85 -0
  124. package/src/components/Select/Select.tsx +10 -2
  125. package/src/components/Select/components/Dropdown.tsx +23 -15
  126. package/src/components/Select/components/types.ts +3 -2
  127. package/src/components/Select/types.ts +12 -2
  128. package/src/components/SequentialConnectingBranch/SequentialConnectingBranch.tsx +2 -0
  129. package/src/components/SequentialConnectingBranch/components/Branches/Branches.tsx +65 -57
  130. package/src/components/SequentialConnectingBranch/components/Branches/types.ts +1 -0
  131. package/src/components/SequentialConnectingBranch/components/ConnectingBranches/ConnectingBranches.tsx +2 -0
  132. package/src/components/SequentialConnectingBranch/components/ConnectingBranches/types.ts +1 -0
  133. package/src/components/SequentialConnectingBranch/types.ts +5 -1
  134. package/src/components/TableTree/Components/TableCell.tsx +3 -3
  135. package/src/components/TableTree/TableTree.scss +0 -7
  136. package/src/components/TableTree/TableTree.tsx +3 -22
  137. package/src/components/TableTree/types.ts +4 -4
  138. package/src/components/Tabs/Tabs.scss +19 -0
  139. package/src/components/Tabs/Tabs.tsx +9 -0
  140. package/src/components/Tabs/types.ts +1 -0
  141. package/src/index.ts +27 -0
  142. package/src/utils/formData/ConvertFormDataToObject.stories.tsx +27 -0
  143. package/src/utils/formData/ConvertFormDataToObject.ts +14 -0
  144. package/src/utils/getExtension/getExtension.stories.tsx +1 -0
  145. package/src/utils/keyBoardActionUtil/UseKeyboardAction.stories.tsx +53 -0
  146. package/src/utils/keyBoardActionUtil/UseKeyboardActions.tsx +20 -0
  147. package/src/utils/keyBoardActionUtil/types.ts +4 -0
  148. package/src/validations/regex.stories.tsx +63 -0
  149. package/src/validations/regex.ts +34 -0
  150. package/src/assets/images/photo.png +0 -0
@@ -31,7 +31,7 @@ interface WorkData {
31
31
  value: string;
32
32
 
33
33
  /** Styling options for the cell */
34
- style: BackendStyle;
34
+ styles: BackendStyle; //TODO remove 's' for Style
35
35
  type?: boolean;
36
36
  }
37
37
 
@@ -43,7 +43,7 @@ type BackendStyle = {
43
43
  color: string;
44
44
  backgroundColor: string;
45
45
  borderColor: string;
46
- underline:string;
46
+ underline: string;
47
47
  border: {
48
48
  top: string;
49
49
  bottom: string;
@@ -79,20 +79,6 @@ interface ContextOption {
79
79
  value: ContextAction[];
80
80
  }
81
81
 
82
- interface ContextMenuState {
83
- /** Whether the context menu is visible */
84
- visible: boolean;
85
-
86
- /** X-coordinate position for the context menu */
87
- x: number;
88
-
89
- /** Y-coordinate position for the context menu */
90
- y: number;
91
-
92
- /** Type of the context menu ('cell', 'row', 'column', or 'sheet_options') */
93
- type: 'cell' | 'row' | 'column' | 'sheet_options' | null;
94
- }
95
-
96
82
  interface SelectedCell {
97
83
  /** The row index of the selected cell */
98
84
  row: number;
@@ -112,6 +98,22 @@ interface ColorContainer {
112
98
  borderColor: string;
113
99
  }
114
100
 
101
+ interface ContextMenuState {
102
+ open: boolean;
103
+ position: {
104
+ x: number;
105
+ y: number;
106
+ };
107
+ options: optionsType[];
108
+ }
109
+
110
+ interface optionsType {
111
+ label: string;
112
+ value: string;
113
+ iconName: string;
114
+ action: () => void;
115
+ }
116
+
115
117
  interface SelectedValue {
116
118
  /** The value inside the selected cell */
117
119
  value: string;
@@ -1,14 +1,27 @@
1
- import { useState, forwardRef } from 'react';
1
+ import React, { useState, forwardRef, ComponentType, Ref } from 'react';
2
2
  import ReCAPTCHA from 'react-google-recaptcha';
3
3
  import { RecaptchaProps } from './types';
4
4
  import './Recaptcha.scss';
5
5
  import classNames from 'classnames';
6
6
  import Typography from '../Typography';
7
-
7
+ // Extend the props to include React.RefAttributes
8
+ const FixedReCAPTCHA = ReCAPTCHA as unknown as ComponentType<
9
+ {
10
+ sitekey: string;
11
+ onChange: (token: string | null) => void;
12
+ className?: string;
13
+ theme?: 'light' | 'dark';
14
+ size?: 'compact' | 'normal' | 'invisible';
15
+ tabindex?: number;
16
+ badge?: 'bottomright' | 'bottomleft' | 'inline';
17
+ } & React.RefAttributes<ReCAPTCHA>
18
+ >;
8
19
  const Recaptcha = forwardRef<ReCAPTCHA, RecaptchaProps>(
9
- ({ onVerify, className = '', error: externalError, sitekey, ...props }, ref) => {
20
+ (
21
+ { onVerify, className = '', error: externalError, sitekey, ...props },
22
+ ref: Ref<ReCAPTCHA>
23
+ ) => {
10
24
  const [internalError, setInternalError] = useState<string | null>(null);
11
-
12
25
  const handleChange = (token: string | null) => {
13
26
  if (token) {
14
27
  setInternalError(null);
@@ -17,12 +30,10 @@ const Recaptcha = forwardRef<ReCAPTCHA, RecaptchaProps>(
17
30
  setInternalError('Please complete the CAPTCHA');
18
31
  }
19
32
  };
20
-
21
33
  const error = externalError || internalError;
22
-
23
34
  return (
24
35
  <div className={classNames('ff-recaptcha-wrapper', className)}>
25
- <ReCAPTCHA
36
+ <FixedReCAPTCHA
26
37
  ref={ref}
27
38
  sitekey={sitekey}
28
39
  onChange={handleChange}
@@ -37,5 +48,4 @@ const Recaptcha = forwardRef<ReCAPTCHA, RecaptchaProps>(
37
48
  );
38
49
  }
39
50
  );
40
-
41
- export default Recaptcha;
51
+ export default Recaptcha;
@@ -1,7 +1,16 @@
1
1
  import { ComponentProps } from 'react';
2
- import ReCAPTCHA from 'react-google-recaptcha';
3
-
4
- export interface RecaptchaProps extends Omit<ComponentProps<typeof ReCAPTCHA>, 'onChange'> {
2
+ // Fix ReCAPTCHA type by casting to a compatible type
3
+ type FixedReCAPTCHA = React.ComponentType<{
4
+ sitekey: string;
5
+ onChange: (token: string | null) => void;
6
+ className?: string;
7
+ theme?: 'light' | 'dark';
8
+ size?: 'compact' | 'normal' | 'invisible';
9
+ tabindex?: number;
10
+ badge?: 'bottomright' | 'bottomleft' | 'inline';
11
+ }>;
12
+ export interface RecaptchaProps
13
+ extends Omit<ComponentProps<FixedReCAPTCHA>, 'onChange'> {
5
14
  /**
6
15
  * Callback function that receives the verification token
7
16
  */
@@ -19,4 +28,3 @@ export interface RecaptchaProps extends Omit<ComponentProps<typeof ReCAPTCHA>, '
19
28
  */
20
29
  sitekey: string;
21
30
  }
22
-
@@ -1,6 +1,7 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react';
2
2
  import Icon from './Icon';
3
3
  import Components from './iconList';
4
+ import React, { useState } from 'react';
4
5
 
5
6
  const meta: Meta<typeof Icon> = {
6
7
  title: 'Components/Icon',
@@ -25,16 +26,63 @@ export const Icons: Story = {
25
26
 
26
27
  export const AllIcons: Story = {
27
28
  render: () => {
29
+ const [searchTerm, setSearchTerm] = useState('');
30
+
31
+ const filteredIcons = Object.keys(Components).filter((iconName) =>
32
+ iconName.toLowerCase().includes(searchTerm.toLowerCase())
33
+ );
34
+
28
35
  return (
29
- <div className="group-icons">
30
- {Object.keys(Components).map((iconName) => {
31
- return (
32
- <div key={iconName}>
36
+ <div>
37
+ <input
38
+ type="text"
39
+ placeholder="Search icons..."
40
+ value={searchTerm}
41
+ onChange={(e) => setSearchTerm(e.target.value)}
42
+ style={{
43
+ marginBottom: '16px',
44
+ padding: '8px',
45
+ width: '100%',
46
+ boxSizing: 'border-box',
47
+ }}
48
+ />
49
+ <div
50
+ className="group-icons"
51
+ style={{
52
+ display: 'flex',
53
+ gap: 8,
54
+ flexWrap: 'wrap',
55
+ alignItems: 'center',
56
+ justifyContent: 'center',
57
+ }}
58
+ >
59
+ {filteredIcons.map((iconName) => (
60
+ <div
61
+ key={iconName}
62
+ style={{
63
+ border: '1px solid var(--brand-color)',
64
+ width: '30%',
65
+ display: 'flex',
66
+ alignItems: 'center',
67
+ justifyContent: 'center',
68
+ flexDirection: 'column',
69
+ }}
70
+ >
33
71
  <Icon name={iconName} height={40} width={40} />
34
- <center title={iconName}>{iconName}</center>
72
+ <p
73
+ style={{
74
+ whiteSpace: 'nowrap',
75
+ textOverflow: 'ellipsis',
76
+ overflow: 'hidden',
77
+ width: '160px',
78
+ }}
79
+ title={iconName}
80
+ >
81
+ {iconName}
82
+ </p>
35
83
  </div>
36
- );
37
- })}
84
+ ))}
85
+ </div>
38
86
  </div>
39
87
  );
40
88
  },
@@ -62,4 +110,4 @@ export const DarkVariantIcons: Story = {
62
110
  },
63
111
  };
64
112
 
65
- export default meta;
113
+ export default meta;
@@ -127,6 +127,7 @@ import LabelPlusIcon from '../../assets/icons/label_plus.svg?react';
127
127
  import Drag from '../../assets/icons/drag_icon.svg?react';
128
128
  import BackwardIcon from '../../assets/icons/backward_icon.svg?react';
129
129
  import ForwardIcon from '../../assets/icons/forward_icon.svg?react';
130
+ import ClearCache from '../../assets/icons/clear_cache.svg?react';
130
131
  import Reload from '../../assets/icons/reload.svg?react';
131
132
  import WindowMaximize from '../../assets/icons/window_maximize.svg?react';
132
133
  import WindowRestore from '../../assets/icons/window_restore.svg?react';
@@ -253,6 +254,11 @@ import suitesIcon from '../../assets/icons/suites_icon.svg?react';
253
254
  import executionsIcon from '../../assets/icons/executions_icon.svg?react';
254
255
  import ImportIcon from '../../assets/icons/import_icon.svg?react';
255
256
  import Settings from '../../assets/icons/settings.svg?react';
257
+ import UnfollowIcon from '../../assets/icons/unfollow_icon.svg?react';
258
+ import ExternalUser from '../../assets/icons/external_user.svg?react';
259
+ import SingleUser from '../../assets/icons/single_user.svg?react';
260
+ import GroupUser from '../../assets/icons/group_user.svg?react';
261
+ import TestFreshersLogo from '../../assets/icons/test_freshers_logo.svg?react';
256
262
 
257
263
  Components['success'] = ToastSuccessIcon;
258
264
  Components['alert'] = Alert;
@@ -379,6 +385,7 @@ Components['browser_stack_icon'] = BrowserStack;
379
385
  Components['run_icon'] = Run;
380
386
  Components['backward_icon'] = BackwardIcon;
381
387
  Components['forward_icon'] = ForwardIcon;
388
+ Components['clear_cache'] = ClearCache;
382
389
  Components['reload'] = Reload;
383
390
  Components['window_maximize'] = WindowMaximize;
384
391
  Components['window_restore'] = WindowRestore;
@@ -500,6 +507,11 @@ Components['machine_disable_icon'] = machineDisableIcon;
500
507
  Components['executions_icon'] = executionsIcon;
501
508
  Components['suites_icon'] = suitesIcon;
502
509
  Components['import_icon'] = ImportIcon;
503
- Components['settings'] = Settings
510
+ Components['settings'] = Settings;
511
+ Components['test_freshers_logo']=TestFreshersLogo;
512
+ Components['unfollow_icon']=UnfollowIcon
513
+ Components['external_user'] = ExternalUser;
514
+ Components['single_user'] = SingleUser;
515
+ Components['group_user'] = GroupUser;
504
516
 
505
517
  export default Components;
@@ -51,6 +51,18 @@ export const DisabledWithValue: Story = {
51
51
  },
52
52
  };
53
53
 
54
+ export const AutoFocusInput: Story = {
55
+ args: {
56
+ ...defaultArgs,
57
+ label: 'Name',
58
+ variant: 'primary',
59
+ type: 'text',
60
+ value: '',
61
+ required: true,
62
+ autoFocus: true,
63
+ },
64
+ };
65
+
54
66
  export const WithoutLabel: Story = {
55
67
  render: () => {
56
68
  const [value, setValue] = useState('');
@@ -23,6 +23,7 @@ const Input = forwardRef<HTMLInputElement, InputProps>(
23
23
  onBlur,
24
24
  onFocus,
25
25
  autoComplete = 'off',
26
+ autoFocus = false,
26
27
  minValue = -Infinity,
27
28
  maxValue = Infinity,
28
29
  transparentBackground = false,
@@ -48,13 +49,13 @@ const Input = forwardRef<HTMLInputElement, InputProps>(
48
49
  >
49
50
  {isLabelRequired && (
50
51
  <label
51
- htmlFor={name}
52
52
  className={classNames(
53
53
  `ff-input-label-container ff-input-label-container--${size}`,
54
54
  {
55
55
  'ff-input-label-container--danger': !!error,
56
56
  }
57
57
  )}
58
+ htmlFor={name}
58
59
  >
59
60
  {required && <span className="required-asterisk">*</span>}
60
61
  <span
@@ -97,6 +98,7 @@ const Input = forwardRef<HTMLInputElement, InputProps>(
97
98
  onFocus={onFocus}
98
99
  onBlur={onBlur}
99
100
  autoComplete={autoComplete}
101
+ autoFocus={autoFocus}
100
102
  min={minValue}
101
103
  max={maxValue}
102
104
  {...props}
@@ -65,6 +65,10 @@ export interface InputProps {
65
65
  * if on, suggestion popup will be displayed
66
66
  */
67
67
  autoComplete?: 'on' | 'off';
68
+ /**
69
+ * if true, input field is in autofocus state
70
+ */
71
+ autoFocus?: boolean;
68
72
  /**
69
73
  * minimum and maximum values for the number type input field and their functions
70
74
  */
@@ -15,7 +15,7 @@ export interface InputWithDropdownProps {
15
15
  * Label | field label to be displayed
16
16
  */
17
17
  label?: string;
18
-
18
+
19
19
  /**
20
20
  * value | input field value
21
21
  */
@@ -88,3 +88,7 @@
88
88
  color: var(--label-edit-error-text);
89
89
  }
90
90
  }
91
+ .custom-edit-text-field {
92
+ height: 10px;
93
+ width: 100px;
94
+ }
@@ -187,11 +187,12 @@ export const openLabelEditTextField: Story = {
187
187
  confirmAction={handleConfirmAction}
188
188
  onInputChange={handleInputChange}
189
189
  isOpen={true}
190
+ className="custom-edit-text-field"
191
+ showText={false}
190
192
  customError="text is too long"
191
193
  customErrorCondition={demoText?.length > 10}
192
194
  />
193
195
  );
194
196
  },
195
197
  };
196
-
197
198
  export default meta;
@@ -30,6 +30,7 @@ const LabelEditTextField: FC<LabelEditTextFieldTypes> = ({
30
30
  label,
31
31
  placeholder,
32
32
  text,
33
+ showText = true,
33
34
  highlightText,
34
35
  customError,
35
36
  confirmIcon,
@@ -39,6 +40,7 @@ const LabelEditTextField: FC<LabelEditTextFieldTypes> = ({
39
40
  onInputChange,
40
41
  dropdownData = [],
41
42
  // width,
43
+ className,
42
44
  height,
43
45
  isOpen = false,
44
46
  confirmAction,
@@ -182,7 +184,7 @@ const LabelEditTextField: FC<LabelEditTextFieldTypes> = ({
182
184
  placeholder={placeholder ? placeholder : ''}
183
185
  value={inputValue}
184
186
  onChange={handleTextFieldChange}
185
- className={`
187
+ className={`${className}
186
188
 
187
189
  ${isTextFieldModified ? 'modified' : ''}`}
188
190
  />
@@ -203,7 +205,7 @@ const LabelEditTextField: FC<LabelEditTextFieldTypes> = ({
203
205
  placeholder={placeholder ? placeholder : ''}
204
206
  value={inputValue}
205
207
  onChange={handleTextFieldChange}
206
- className={`
208
+ className={`${className}
207
209
 
208
210
  ${isTextFieldModified ? 'modified' : ''}`}
209
211
  />
@@ -241,14 +243,16 @@ const LabelEditTextField: FC<LabelEditTextFieldTypes> = ({
241
243
  title={tooltip?.tooltipTitle ? tooltip?.tooltipTitle : ''}
242
244
  placement={'bottom'}
243
245
  >
244
- <span
245
- className="display-text"
246
- onDoubleClick={handleDoubleClick}
247
- role="button"
248
- onClick={handleClick}
249
- >
250
- <HighlightText text={inputValue} highlight={highlightText} />
251
- </span>
246
+ {showText && (
247
+ <span
248
+ className="display-text"
249
+ onDoubleClick={handleDoubleClick}
250
+ role="button"
251
+ onClick={handleClick}
252
+ >
253
+ <HighlightText text={inputValue} highlight={highlightText} />
254
+ </span>
255
+ )}
252
256
  </Tooltip>
253
257
  )}
254
258
  {showError && isEditing && (
@@ -17,6 +17,7 @@ export interface LabelEditTextFieldTypes {
17
17
  label?: string;
18
18
  /** Initial text displayed in the input field. */
19
19
  text?: string;
20
+ showText?: boolean;
20
21
  /** Text to be highlighted within the displayed text, if provided. */
21
22
  highlightText?: string;
22
23
  /** Custom error message to be displayed, if applicable. */
@@ -42,6 +43,7 @@ export interface LabelEditTextFieldTypes {
42
43
  onClick?: () => void;
43
44
  /** Function called when every input character got changed */
44
45
  onInputChange?: (newInputValue: string) => void;
46
+ className?: string;
45
47
  tooltip?: {
46
48
  tooltipTitle?: string;
47
49
  tooltipPlacement?: string;
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  import { Meta, StoryObj } from '@storybook/react';
2
3
  import LazyLoading from './LazyLoading';
3
4
 
@@ -1,5 +1,14 @@
1
+ import React, { ComponentType } from 'react';
1
2
  import LazyLoad from './LazyLoad';
2
- const { FixedSizeList } = LazyLoad;
3
+ const { FixedSizeList: _FixedSizeList } = LazyLoad;
4
+
5
+ const FixedSizeList = _FixedSizeList as unknown as ComponentType<{
6
+ height: number;
7
+ itemCount: number;
8
+ itemSize: number;
9
+ width: number;
10
+ children: (props: { index: number; style: React.CSSProperties }) => JSX.Element;
11
+ }>;
3
12
  const Row = ({
4
13
  index,
5
14
  style,
@@ -15,6 +15,10 @@
15
15
  align-items: center;
16
16
  justify-content: space-between;
17
17
 
18
+ &:hover {
19
+ border-color: var(--ff-connecting-branch-color);
20
+ }
21
+
18
22
  .ff-machine-icon-text-wrapper,
19
23
  .ff-machine-icon-text-wrapper-reverse {
20
24
  display: flex;
@@ -47,7 +51,7 @@
47
51
  position: absolute;
48
52
  top: -6px;
49
53
  left: 8px;
50
- background-color: var(--ff-machine-input-field-border-color);
54
+ background-color: var(--ff-machine-input-field-label-color);
51
55
  border-radius: 4px;
52
56
  padding: 1px 2px;
53
57
  height: 12px;
@@ -20,6 +20,7 @@ const MachineInputField = ({
20
20
  sauceLabs: 'sause_lab',
21
21
  lambdaTest: 'lambda_icon',
22
22
  mac: 'mac_icon',
23
+ mac_icon: 'mac_icon',
23
24
  android: 'android_icon',
24
25
  linux: 'linux',
25
26
  'google chrome': 'chrome_icon',
@@ -0,0 +1,67 @@
1
+ @use '../../assets/styles/fonts';
2
+ @use '../../assets/styles/mixins' as *;
3
+
4
+ .ff-mobileskin-wrapper {
5
+ @include center-content;
6
+ flex-direction: column;
7
+
8
+ &.portrait {
9
+ gap: 30px;
10
+ }
11
+
12
+ &.landscape {
13
+ gap: 38px;
14
+ }
15
+
16
+ .ff-mobileskin-container {
17
+ @extend .ff-mobileskin-wrapper;
18
+ .ff-mobile-container {
19
+ @include center-content;
20
+ border: 8px solid var(--text-color);
21
+ border-radius: 30px;
22
+ position: relative;
23
+ overflow: hidden;
24
+
25
+ &::-webkit-scrollbar {
26
+ width: 0;
27
+ height: 0;
28
+ }
29
+
30
+ &::-webkit-scrollbar-thumb {
31
+ background-color: transparent;
32
+ }
33
+ .ff-mobile-image-container {
34
+ @include center-content;
35
+ overflow: hidden;
36
+ }
37
+ }
38
+ }
39
+
40
+ .ff-notch {
41
+ background-color: var(--text-color);
42
+ border-radius: 24px;
43
+ position: absolute;
44
+ &.android-notch {
45
+ border-radius: 50%;
46
+ }
47
+ }
48
+ .ff-nav-bar {
49
+ height: 32px;
50
+ padding: 8px;
51
+ display: flex;
52
+ justify-content: space-evenly;
53
+ align-items: center;
54
+ border: 1px solid var(--brand-color);
55
+ border-radius: 24px;
56
+ }
57
+ .ff-nav-bar-icon {
58
+ height: 16px;
59
+ padding: 8px;
60
+ border-right: 1px solid var(--brand-color);
61
+ @include center-content;
62
+
63
+ &.last-icon {
64
+ border-right: none;
65
+ }
66
+ }
67
+ }
@@ -0,0 +1,93 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import MobileSkin from './MobileSkin';
3
+
4
+ const meta: Meta<typeof MobileSkin> = {
5
+ title: 'Components/MobileSkin',
6
+ component: MobileSkin,
7
+ parameters: {
8
+ layout: 'padded',
9
+ },
10
+ tags: ['autodocs'],
11
+ };
12
+
13
+ const navBarIcons = [
14
+ {
15
+ title: 'Forward',
16
+ name: 'right_arrow_icon',
17
+ onClick: () => {},
18
+ height: 16,
19
+ width: 16,
20
+ },
21
+ {
22
+ title: 'Backward',
23
+ name: 'left_arrow_icon',
24
+ onClick: () => {},
25
+ height: 16,
26
+ width: 16,
27
+ },
28
+ {
29
+ title: 'Refresh',
30
+ name: 'refresh_icon',
31
+ onClick: () => {},
32
+ height: 16,
33
+ width: 16,
34
+ },
35
+ {
36
+ title: 'Capture',
37
+ name: 'minimize_script',
38
+ onClick: () => {},
39
+ height: 16,
40
+ width: 16,
41
+ },
42
+ {
43
+ title: 'Rotate',
44
+ name: 'replace_icon',
45
+ onClick: () => {},
46
+ height: 16,
47
+ width: 16,
48
+ },
49
+ ];
50
+ const randomImage: string =
51
+ 'https://plus.unsplash.com/premium_photo-1664303228186-a61e7dc91597?q=80&w=1384&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D';
52
+
53
+ type Story = StoryObj<typeof MobileSkin>;
54
+
55
+ const defaultArgs = {
56
+ navBarIcons: navBarIcons,
57
+ mobileWidth: 220,
58
+ mobileHeight: 448,
59
+ children: randomImage,
60
+ };
61
+
62
+ export const iosPortraitView: Story = {
63
+ args: {
64
+ ...defaultArgs,
65
+ orientation: 'portrait',
66
+ type: 'ios',
67
+ },
68
+ };
69
+
70
+ export const iosLandscapeView: Story = {
71
+ args: {
72
+ ...defaultArgs,
73
+ orientation: 'landscape',
74
+ type: 'ios',
75
+ },
76
+ };
77
+
78
+ export const androidPortraitView: Story = {
79
+ args: {
80
+ ...defaultArgs,
81
+ orientation: 'portrait',
82
+ type: 'android',
83
+ },
84
+ };
85
+
86
+ export const androidLandscapeView: Story = {
87
+ args: {
88
+ ...defaultArgs,
89
+ orientation: 'landscape',
90
+ type: 'android',
91
+ },
92
+ };
93
+ export default meta;