pixel-react 1.0.8 → 1.1.0
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.
- package/lib/components/AllProjectsDropdown/AllProjectsDropdown.d.ts +3 -0
- package/lib/components/AllProjectsDropdown/AllProjectsDropdown.stories.d.ts +6 -0
- package/lib/components/AllProjectsDropdown/index.d.ts +1 -0
- package/lib/components/AppHeader/AppHeader.d.ts +4 -0
- package/lib/components/AppHeader/AppHeader.stories.d.ts +7 -0
- package/lib/components/AppHeader/index.d.ts +1 -0
- package/lib/components/AppHeader/types.d.ts +26 -0
- package/lib/components/Input/types.d.ts +1 -1
- package/lib/components/InputWithDropdown/types.d.ts +1 -1
- package/lib/components/Modal/types.d.ts +2 -0
- package/lib/components/MultiSelect/MultiSelect.d.ts +1 -1
- package/lib/components/MultiSelect/MultiSelect.stories.d.ts +1 -0
- package/lib/components/MultiSelect/MultiSelectTypes.d.ts +3 -0
- package/lib/index.d.ts +67 -4
- package/lib/index.esm.js +440 -89
- package/lib/index.esm.js.map +1 -1
- package/lib/index.js +442 -88
- package/lib/index.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/assets/Themes/BaseTheme.scss +5 -0
- package/src/assets/Themes/DarkTheme.scss +3 -0
- package/src/assets/icons/all_projects.svg +3 -0
- package/src/assets/icons/android_icon.svg +6 -0
- package/src/assets/icons/download_icon.svg +4 -0
- package/src/assets/icons/fireflink_icon.svg +4 -0
- package/src/assets/icons/fireflink_logo.svg +13 -0
- package/src/assets/icons/mobile_icon.svg +3 -0
- package/src/assets/icons/ms_dynamic.svg +4 -0
- package/src/assets/icons/sales_force.svg +7 -0
- package/src/assets/icons/switch_license_icon.svg +123 -0
- package/src/assets/icons/vertical_separator.svg +3 -0
- package/src/assets/icons/web&mobile_icon.svg +3 -0
- package/src/assets/icons/web_icon.svg +3 -0
- package/src/assets/styles/_colors.scss +2 -1
- package/src/components/AllProjectsDropdown/AllProjectsDropdown.scss +70 -0
- package/src/components/AllProjectsDropdown/AllProjectsDropdown.stories.tsx +21 -0
- package/src/components/AllProjectsDropdown/AllProjectsDropdown.tsx +148 -0
- package/src/components/AllProjectsDropdown/index.ts +1 -0
- package/src/components/AppHeader/AppHeader.scss +67 -0
- package/src/components/AppHeader/AppHeader.stories.tsx +156 -0
- package/src/components/AppHeader/AppHeader.tsx +124 -0
- package/src/components/AppHeader/index.ts +1 -0
- package/src/components/AppHeader/types.ts +27 -0
- package/src/components/Icon/iconList.ts +26 -0
- package/src/components/IconButton/IconButton.scss +2 -1
- package/src/components/Input/types.ts +1 -1
- package/src/components/InputWithDropdown/types.ts +1 -3
- package/src/components/Modal/Modal.stories.tsx +6 -2
- package/src/components/Modal/Modal.tsx +6 -2
- package/src/components/Modal/modal.scss +6 -4
- package/src/components/Modal/types.ts +2 -0
- package/src/components/MultiSelect/MultiSelect.scss +8 -1
- package/src/components/MultiSelect/MultiSelect.stories.tsx +26 -0
- package/src/components/MultiSelect/MultiSelect.tsx +68 -12
- package/src/components/MultiSelect/MultiSelectTypes.ts +3 -0
- package/src/components/Select/Select.scss +1 -1
- package/src/index.ts +7 -0
@@ -0,0 +1,148 @@
|
|
1
|
+
import { useState } from 'react';
|
2
|
+
import Icon from '../Icon';
|
3
|
+
import Typography from '../Typography';
|
4
|
+
import ffid from '../../utils/ffID/ffid';
|
5
|
+
import { truncateText } from '../../utils/truncateText/truncateText';
|
6
|
+
import './AllProjectsDropdown.scss';
|
7
|
+
import classNames from 'classnames';
|
8
|
+
|
9
|
+
const AllProjectsDropdown = () => {
|
10
|
+
const [showOptions, setShowOptions] = useState(false);
|
11
|
+
const [selectedOptions, setSelectedOptions] = useState({
|
12
|
+
label: 'All Projects',
|
13
|
+
value: 'All Projects',
|
14
|
+
iconName: 'all_projects',
|
15
|
+
});
|
16
|
+
const [search, setSearch] = useState(true);
|
17
|
+
|
18
|
+
let options = [
|
19
|
+
{
|
20
|
+
label: 'All Projects',
|
21
|
+
value: 'All Projects',
|
22
|
+
iconName: 'all_projects',
|
23
|
+
},
|
24
|
+
{
|
25
|
+
label: 'Pantaloon Project',
|
26
|
+
value: 'Pantaloon Web Project',
|
27
|
+
iconName: 'web_icon',
|
28
|
+
},
|
29
|
+
{
|
30
|
+
label: 'Mobile Project',
|
31
|
+
value: 'Mobile Project',
|
32
|
+
iconName: 'mobile_icon',
|
33
|
+
},
|
34
|
+
{
|
35
|
+
label: 'Web & Mobile Project',
|
36
|
+
value: 'Web & Mobile Project',
|
37
|
+
iconName: 'web&mobile_icon',
|
38
|
+
},
|
39
|
+
{
|
40
|
+
label: 'Sales Force',
|
41
|
+
value: 'Sales Force',
|
42
|
+
iconName: 'sales_force',
|
43
|
+
},
|
44
|
+
{
|
45
|
+
label: 'MS Dynamic',
|
46
|
+
value: 'MS Dynamic',
|
47
|
+
iconName: 'ms_dynamic',
|
48
|
+
},
|
49
|
+
{
|
50
|
+
label: 'Web Service',
|
51
|
+
value: 'Web Service',
|
52
|
+
iconName: '',
|
53
|
+
},
|
54
|
+
];
|
55
|
+
|
56
|
+
const handleSelect = () => {
|
57
|
+
setShowOptions(!showOptions);
|
58
|
+
};
|
59
|
+
|
60
|
+
const handleSelectOption = (option: {
|
61
|
+
label: string;
|
62
|
+
value: string;
|
63
|
+
iconName: string;
|
64
|
+
}) => {
|
65
|
+
setSelectedOptions(option);
|
66
|
+
setShowOptions(false);
|
67
|
+
};
|
68
|
+
|
69
|
+
const handleInput = () => {
|
70
|
+
setSearch(false);
|
71
|
+
};
|
72
|
+
|
73
|
+
return (
|
74
|
+
<div className={classNames('ff-all-project')}>
|
75
|
+
<div
|
76
|
+
onClick={handleSelect}
|
77
|
+
className={classNames('ff-all-project-dropdown')}
|
78
|
+
>
|
79
|
+
<Typography
|
80
|
+
as={'div'}
|
81
|
+
lineHeight={'18px'}
|
82
|
+
fontSize={12}
|
83
|
+
fontWeight={'regular'}
|
84
|
+
className={classNames('projects-label')}
|
85
|
+
>
|
86
|
+
{truncateText(selectedOptions.label, 12)}
|
87
|
+
</Typography>
|
88
|
+
<div className={classNames('label-icon')}>
|
89
|
+
<Icon
|
90
|
+
name="arrows_down_icon"
|
91
|
+
color="var(--primary-icon-color)"
|
92
|
+
height={8}
|
93
|
+
width={8}
|
94
|
+
/>
|
95
|
+
</div>
|
96
|
+
</div>
|
97
|
+
{showOptions && (
|
98
|
+
<div className={classNames('ff-dropdown')}>
|
99
|
+
<div className={classNames('ff-search')}>
|
100
|
+
{search && <Icon name="search" height={8} width={8} />}
|
101
|
+
<input
|
102
|
+
type="text"
|
103
|
+
placeholder="Search Project"
|
104
|
+
onClick={() => handleInput()}
|
105
|
+
/>
|
106
|
+
</div>
|
107
|
+
<div
|
108
|
+
className={classNames(
|
109
|
+
'option-card',
|
110
|
+
`${options.length > 4 ? 'scroll' : ''}`
|
111
|
+
)}
|
112
|
+
>
|
113
|
+
{options.map((option) => (
|
114
|
+
<div
|
115
|
+
key={ffid()}
|
116
|
+
onClick={() => handleSelectOption(option)}
|
117
|
+
className={classNames(
|
118
|
+
'projects-options',
|
119
|
+
`${
|
120
|
+
option.label === 'All Projects' ? 'all-projects-option' : ''
|
121
|
+
}`
|
122
|
+
)}
|
123
|
+
>
|
124
|
+
<div className={classNames('projects-icons')}>
|
125
|
+
<Icon
|
126
|
+
name={option.iconName}
|
127
|
+
height={12}
|
128
|
+
width={12}
|
129
|
+
color={
|
130
|
+
option.label === 'All Projects'
|
131
|
+
? 'var(--secondary-icon-color)'
|
132
|
+
: 'var(--primary-icon-color);'
|
133
|
+
}
|
134
|
+
/>
|
135
|
+
</div>
|
136
|
+
<Typography key={ffid()} as={'div'} lineHeight={'30px'}>
|
137
|
+
{option.label}
|
138
|
+
</Typography>
|
139
|
+
</div>
|
140
|
+
))}
|
141
|
+
</div>
|
142
|
+
</div>
|
143
|
+
)}
|
144
|
+
</div>
|
145
|
+
);
|
146
|
+
};
|
147
|
+
|
148
|
+
export default AllProjectsDropdown;
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default } from './AllProjectsDropdown';
|
@@ -0,0 +1,67 @@
|
|
1
|
+
.ff-app-header {
|
2
|
+
display: flex;
|
3
|
+
justify-content: space-between;
|
4
|
+
background-color: var(--brand-color);
|
5
|
+
padding-left: 8px;
|
6
|
+
border-top-left-radius: 8px;
|
7
|
+
border-top-right-radius: 8px;
|
8
|
+
.ff-app-header-logo-icon {
|
9
|
+
padding: 8px;
|
10
|
+
height: 24px;
|
11
|
+
}
|
12
|
+
.ff-app-header-nav-bar {
|
13
|
+
display: flex;
|
14
|
+
align-items: center;
|
15
|
+
background-color: var(--brand-color);
|
16
|
+
transform: translateY(12px);
|
17
|
+
border-radius: 20px;
|
18
|
+
padding: 5px;
|
19
|
+
.ff-app-header-nav-bar-items {
|
20
|
+
display: flex;
|
21
|
+
align-items: center;
|
22
|
+
.ff-app-header-nav-bar-item {
|
23
|
+
margin-left: 8px;
|
24
|
+
color: var(--ff-header-text-color);
|
25
|
+
cursor: pointer;
|
26
|
+
display: flex;
|
27
|
+
&--selected {
|
28
|
+
padding: 3px;
|
29
|
+
background-color: var(--primary-icon-color);
|
30
|
+
border-radius: 20px;
|
31
|
+
.ff-app-header-nav-bar-item-label {
|
32
|
+
background-color: var(--brand-color);
|
33
|
+
border-radius: 20px;
|
34
|
+
padding: 4px 8px;
|
35
|
+
}
|
36
|
+
}
|
37
|
+
.ff-app-header-submenu-container {
|
38
|
+
display: flex;
|
39
|
+
.ff-app-header-nav-bar-submenu-item {
|
40
|
+
color: var(--ff-header-submenu-text-color);
|
41
|
+
align-content: center;
|
42
|
+
padding-left: 8px;
|
43
|
+
&--selected{
|
44
|
+
color: var(--ff-header-submenu-highlight-text-color);
|
45
|
+
}
|
46
|
+
}
|
47
|
+
.ff-app-header-quickmenu-container {
|
48
|
+
display: flex;
|
49
|
+
align-items: center;
|
50
|
+
}
|
51
|
+
}
|
52
|
+
}
|
53
|
+
}
|
54
|
+
.ff-app-header-more-icon {
|
55
|
+
svg {
|
56
|
+
path {
|
57
|
+
fill: var(--primary-icon-color);
|
58
|
+
}
|
59
|
+
cursor: pointer;
|
60
|
+
}
|
61
|
+
}
|
62
|
+
}
|
63
|
+
.ff-app-header-right-content {
|
64
|
+
height: 24px;
|
65
|
+
padding: 8px;
|
66
|
+
}
|
67
|
+
}
|
@@ -0,0 +1,156 @@
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
2
|
+
import AppHeader from './AppHeader';
|
3
|
+
import Icon from '../Icon';
|
4
|
+
import { useState } from 'react';
|
5
|
+
|
6
|
+
const meta: Meta<typeof AppHeader> = {
|
7
|
+
title: 'Components/AppHeader',
|
8
|
+
component: AppHeader,
|
9
|
+
parameters: {
|
10
|
+
layout: 'centered',
|
11
|
+
},
|
12
|
+
tags: ['autodocs'],
|
13
|
+
};
|
14
|
+
|
15
|
+
type Story = StoryObj<typeof AppHeader>;
|
16
|
+
const defaultArgs = {
|
17
|
+
logoIconName: 'fireflink_icon',
|
18
|
+
rightContent: (
|
19
|
+
<div>
|
20
|
+
<Icon name="logo" />
|
21
|
+
</div>
|
22
|
+
),
|
23
|
+
};
|
24
|
+
|
25
|
+
const headerMenuItems = [
|
26
|
+
{
|
27
|
+
menuName: 'Dashboard',
|
28
|
+
subMenuItems: [],
|
29
|
+
},
|
30
|
+
{
|
31
|
+
menuName: 'Repo',
|
32
|
+
subMenuItems: [
|
33
|
+
{
|
34
|
+
subMenuName: 'Elements',
|
35
|
+
quickMenuItems: [],
|
36
|
+
},
|
37
|
+
{
|
38
|
+
subMenuName: 'Program Elements',
|
39
|
+
quickMenuItems: [],
|
40
|
+
},
|
41
|
+
{
|
42
|
+
subMenuName: 'Step Groups',
|
43
|
+
quickMenuItems: [
|
44
|
+
{
|
45
|
+
quickMenuName: 'Success Icon',
|
46
|
+
quickMenuIconName: 'success',
|
47
|
+
},
|
48
|
+
{
|
49
|
+
quickMenuName: 'Warning Icon',
|
50
|
+
quickMenuIconName: 'warning',
|
51
|
+
},
|
52
|
+
{
|
53
|
+
quickMenuName: 'Info Icon',
|
54
|
+
quickMenuIconName: 'info',
|
55
|
+
},
|
56
|
+
],
|
57
|
+
},
|
58
|
+
],
|
59
|
+
},
|
60
|
+
{
|
61
|
+
menuName: 'Test Data',
|
62
|
+
subMenuItems: [],
|
63
|
+
},
|
64
|
+
{
|
65
|
+
menuName: 'Test Dev',
|
66
|
+
subMenuItems: [
|
67
|
+
{
|
68
|
+
subMenuName: 'Scripts',
|
69
|
+
quickMenuItems: [
|
70
|
+
{
|
71
|
+
quickMenuName: 'Delete Icon',
|
72
|
+
quickMenuIconName: 'delete',
|
73
|
+
},
|
74
|
+
{
|
75
|
+
quickMenuName: 'Details Icon',
|
76
|
+
quickMenuIconName: 'details',
|
77
|
+
},
|
78
|
+
{
|
79
|
+
quickMenuName: 'Sun Icon',
|
80
|
+
quickMenuIconName: 'sun_icon',
|
81
|
+
},
|
82
|
+
{
|
83
|
+
quickMenuName: 'Moon Stars Icon',
|
84
|
+
quickMenuIconName: 'moon_stars_icon',
|
85
|
+
},
|
86
|
+
{
|
87
|
+
quickMenuName: 'Impact List Icon',
|
88
|
+
quickMenuIconName: 'impactList',
|
89
|
+
},
|
90
|
+
],
|
91
|
+
},
|
92
|
+
{
|
93
|
+
subMenuName: 'Executions',
|
94
|
+
quickMenuItems: [],
|
95
|
+
},
|
96
|
+
],
|
97
|
+
},
|
98
|
+
];
|
99
|
+
const headerHiddenMenuItems = ['Configuration', 'Approval Request'];
|
100
|
+
const headerRightSideContent = (
|
101
|
+
<div>
|
102
|
+
<Icon name="logo" />
|
103
|
+
</div>
|
104
|
+
);
|
105
|
+
|
106
|
+
export const SampleAppHeader: Story = {
|
107
|
+
args: {
|
108
|
+
...defaultArgs,
|
109
|
+
rightContent: (
|
110
|
+
<div>
|
111
|
+
<Icon name="logo" />
|
112
|
+
</div>
|
113
|
+
),
|
114
|
+
appHeaderMenuItems: headerMenuItems,
|
115
|
+
appHeaderHiddenMenuItems: headerHiddenMenuItems,
|
116
|
+
selectedMenu: 'Repo',
|
117
|
+
},
|
118
|
+
};
|
119
|
+
export const Controlled: Story = {
|
120
|
+
render: () => {
|
121
|
+
const [selectedMenuItem, setSelectedMenuItem] = useState('Test Data');
|
122
|
+
const [selectedSubMenuItem, setSelectedSubMenuItem] = useState('');
|
123
|
+
const [selectedQuickMenuItem, setSelectedQuickMenuItem] = useState('');
|
124
|
+
const handleMenuClick = (item: string) => {
|
125
|
+
setSelectedMenuItem(item);
|
126
|
+
};
|
127
|
+
const handleSubMenuClick = (item: string) => {
|
128
|
+
setSelectedSubMenuItem(item);
|
129
|
+
};
|
130
|
+
const handleQuickMenuClick = (item: string) => {
|
131
|
+
setSelectedQuickMenuItem(item);
|
132
|
+
};
|
133
|
+
|
134
|
+
return (
|
135
|
+
<>
|
136
|
+
<div>
|
137
|
+
<AppHeader
|
138
|
+
logoIconName="fireflink_icon"
|
139
|
+
rightContent={headerRightSideContent}
|
140
|
+
appHeaderMenuItems={headerMenuItems}
|
141
|
+
appHeaderHiddenMenuItems={headerHiddenMenuItems}
|
142
|
+
projectsList={[]}
|
143
|
+
selectedMenu={selectedMenuItem}
|
144
|
+
selectedSubMenu={selectedSubMenuItem}
|
145
|
+
selectedQuickMenu={selectedQuickMenuItem}
|
146
|
+
onMenuClick={handleMenuClick}
|
147
|
+
onSubMenuClick={handleSubMenuClick}
|
148
|
+
onQuickMenuClick={handleQuickMenuClick}
|
149
|
+
/>
|
150
|
+
</div>
|
151
|
+
</>
|
152
|
+
);
|
153
|
+
},
|
154
|
+
};
|
155
|
+
|
156
|
+
export default meta;
|
@@ -0,0 +1,124 @@
|
|
1
|
+
import { AppHeaderProps } from './types';
|
2
|
+
import Icon from '../Icon';
|
3
|
+
import './AppHeader.scss';
|
4
|
+
import classNames from 'classnames';
|
5
|
+
import Typography from '../Typography';
|
6
|
+
|
7
|
+
const AppHeader: React.FC<AppHeaderProps> = ({
|
8
|
+
logoIconName = 'fireflink_icon',
|
9
|
+
rightContent,
|
10
|
+
appHeaderMenuItems,
|
11
|
+
selectedMenu,
|
12
|
+
selectedSubMenu,
|
13
|
+
selectedQuickMenu,
|
14
|
+
onMenuClick = () => {},
|
15
|
+
onSubMenuClick = () => {},
|
16
|
+
onQuickMenuClick = () => {},
|
17
|
+
}) => {
|
18
|
+
return (
|
19
|
+
<>
|
20
|
+
<div className="ff-app-header">
|
21
|
+
<div className="ff-app-header-logo-icon">
|
22
|
+
<Icon color="" name={logoIconName} height={24} width={21} />
|
23
|
+
</div>
|
24
|
+
<div className="ff-app-header-nav-bar">
|
25
|
+
<div>All projects</div>
|
26
|
+
<div className="ff-app-header-nav-bar-items fontSm">
|
27
|
+
{appHeaderMenuItems.map((menuItem) => {
|
28
|
+
return (
|
29
|
+
<div
|
30
|
+
className={classNames('ff-app-header-nav-bar-item', {
|
31
|
+
['ff-app-header-nav-bar-item--selected']:
|
32
|
+
menuItem.menuName === selectedMenu,
|
33
|
+
})}
|
34
|
+
key={menuItem.menuName}
|
35
|
+
onClick={() => onMenuClick(menuItem.menuName)}
|
36
|
+
>
|
37
|
+
<Typography
|
38
|
+
as="div"
|
39
|
+
className="ff-app-header-nav-bar-item-label"
|
40
|
+
lineHeight="18px"
|
41
|
+
>
|
42
|
+
{menuItem.menuName}
|
43
|
+
</Typography>
|
44
|
+
{menuItem.menuName === selectedMenu &&
|
45
|
+
menuItem?.subMenuItems &&
|
46
|
+
menuItem.subMenuItems.map((subMenuItem) => {
|
47
|
+
return (
|
48
|
+
<div
|
49
|
+
key={subMenuItem.subMenuName}
|
50
|
+
onClick={() =>
|
51
|
+
onSubMenuClick(subMenuItem.subMenuName)
|
52
|
+
}
|
53
|
+
className="ff-app-header-submenu-container"
|
54
|
+
>
|
55
|
+
<Typography
|
56
|
+
as="div"
|
57
|
+
className={classNames(
|
58
|
+
'ff-app-header-nav-bar-submenu-item',
|
59
|
+
{
|
60
|
+
['ff-app-header-nav-bar-submenu-item--selected']:
|
61
|
+
subMenuItem.subMenuName === selectedSubMenu,
|
62
|
+
}
|
63
|
+
)}
|
64
|
+
lineHeight="18px"
|
65
|
+
>
|
66
|
+
{subMenuItem.subMenuName}
|
67
|
+
</Typography>
|
68
|
+
{subMenuItem.subMenuName === selectedSubMenu &&
|
69
|
+
subMenuItem?.quickMenuItems && (
|
70
|
+
<div className="ff-app-header-quickmenu-container">
|
71
|
+
<div>
|
72
|
+
<Icon name="vertical_separator" />
|
73
|
+
</div>
|
74
|
+
{subMenuItem.quickMenuItems.map(
|
75
|
+
(quickMenuItem) => {
|
76
|
+
return (
|
77
|
+
<>
|
78
|
+
<div
|
79
|
+
key={quickMenuItem.quickMenuIconName}
|
80
|
+
onClick={() =>
|
81
|
+
onQuickMenuClick(
|
82
|
+
quickMenuItem.quickMenuName
|
83
|
+
)
|
84
|
+
}
|
85
|
+
className={classNames(
|
86
|
+
'ff-app-header-nav-bar-quickmenu-item',
|
87
|
+
{
|
88
|
+
['ff-app-header-nav-bar-quickmenu-item--selected']:
|
89
|
+
quickMenuItem.quickMenuName ===
|
90
|
+
selectedQuickMenu,
|
91
|
+
}
|
92
|
+
)}
|
93
|
+
>
|
94
|
+
<Icon
|
95
|
+
name={
|
96
|
+
quickMenuItem.quickMenuIconName
|
97
|
+
}
|
98
|
+
height={24}
|
99
|
+
width={24}
|
100
|
+
/>
|
101
|
+
</div>
|
102
|
+
</>
|
103
|
+
);
|
104
|
+
}
|
105
|
+
)}
|
106
|
+
</div>
|
107
|
+
)}
|
108
|
+
</div>
|
109
|
+
);
|
110
|
+
})}
|
111
|
+
</div>
|
112
|
+
);
|
113
|
+
})}
|
114
|
+
</div>
|
115
|
+
<div>
|
116
|
+
<Icon name="more" className="ff-app-header-more-icon" />
|
117
|
+
</div>
|
118
|
+
</div>
|
119
|
+
<div className="ff-app-header-right-content">{rightContent}</div>
|
120
|
+
</div>
|
121
|
+
</>
|
122
|
+
);
|
123
|
+
};
|
124
|
+
export default AppHeader;
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default } from "./AppHeader";
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import { ReactNode } from 'react';
|
2
|
+
|
3
|
+
export interface AppHeaderProps {
|
4
|
+
logoIconName: string;
|
5
|
+
rightContent: ReactNode;
|
6
|
+
projectsList: string[];
|
7
|
+
appHeaderMenuItems: appHeaderMenuItemProps[];
|
8
|
+
appHeaderHiddenMenuItems: string[];
|
9
|
+
selectedMenu: string;
|
10
|
+
selectedSubMenu : string;
|
11
|
+
selectedQuickMenu : string;
|
12
|
+
onMenuClick ?: (text: any) => void;
|
13
|
+
onSubMenuClick ?: (text: any) => void;
|
14
|
+
onQuickMenuClick ?: (text: any) => void;
|
15
|
+
}
|
16
|
+
export interface appHeaderMenuItemProps {
|
17
|
+
menuName: string;
|
18
|
+
subMenuItems: appHeaderSubMenuItemProps[];
|
19
|
+
}
|
20
|
+
export interface appHeaderSubMenuItemProps {
|
21
|
+
subMenuName: string;
|
22
|
+
quickMenuItems: appHeaderQuickMenuItemProps[];
|
23
|
+
}
|
24
|
+
export interface appHeaderQuickMenuItemProps {
|
25
|
+
quickMenuName: string;
|
26
|
+
quickMenuIconName: string;
|
27
|
+
}
|
@@ -26,6 +26,7 @@ import MoonStarsIcon from '../../assets/icons/moon_stars.svg?react';
|
|
26
26
|
import SunIcon from '../../assets/icons/sun_icon.svg?react';
|
27
27
|
import CheckMarkIcon from '../../assets/icons/check_mark.svg?react';
|
28
28
|
import WrongMarkIcon from '../../assets/icons/wrong_mark.svg?react';
|
29
|
+
import FireflinkIcon from '../../assets/Icons/fireflink_icon.svg?react';
|
29
30
|
import Tick from '../../assets/Icons/tick_icon.svg?react';
|
30
31
|
import Search from '../../assets/icons/search.svg?react';
|
31
32
|
import Filter from '../../assets/icons/filter.svg?react';
|
@@ -45,6 +46,7 @@ import ImpactListIcon from '../../assets/icons/impactList.svg?react';
|
|
45
46
|
import InfoIcon from '../../assets/icons/info_icon.svg?react';
|
46
47
|
import CalendarIcon from '../../assets/icons/calendar_icon.svg?react';
|
47
48
|
import HideIcon from '../../assets/icons/hide_icon.svg?react';
|
49
|
+
import VerticalSeparator from '../../assets/icons/vertical_separator.svg?react';
|
48
50
|
import CollapseIcon from '../../assets/icons/collapse-icon.svg?react';
|
49
51
|
import ExpandIcon from '../../assets/icons/expand-icon.svg?react';
|
50
52
|
import CopyIcon from '../../assets/icons/copy-icon.svg?react';
|
@@ -52,6 +54,17 @@ import DownloadFile from '../../assets/icons/download-icon.svg?react';
|
|
52
54
|
import RefreshIcon from '../../assets/icons/refresh-icon.svg?react';
|
53
55
|
import LicenseInfo from '../../assets/icons/license_info.svg?react';
|
54
56
|
import LicenseWarning from '../../assets/icons/license_warning.svg?react';
|
57
|
+
import DownloadIcon from '../../assets/icons/download_icon.svg?react';
|
58
|
+
import WebIcon from '../../assets/icons/web_icon.svg?react';
|
59
|
+
import WebMobileIcon from '../../assets/icons/web&mobile_icon.svg?react';
|
60
|
+
import MobileIcon from '../../assets/icons/mobile_icon.svg?react';
|
61
|
+
import SalesForceIcon from '../../assets/icons/sales_force.svg?react';
|
62
|
+
import MSDynamicIcon from '../../assets/icons/ms_dynamic.svg?react';
|
63
|
+
import AllProjectsIcon from '../../assets/icons/all_projects.svg?react';
|
64
|
+
import AndroidIcon from '../../assets/icons/android_icon.svg?react';
|
65
|
+
|
66
|
+
import SwitchLicenseIcon from '../../assets/icons/switch_license_icon.svg?react';
|
67
|
+
import FireflinkLogo from '../../assets/icons/fireflink_logo.svg?react';
|
55
68
|
//icons
|
56
69
|
Components['delete_info'] = DeleteInfoIcon;
|
57
70
|
Components['success'] = ToastSuccessIcon;
|
@@ -78,6 +91,7 @@ Components['moon_stars_icon'] = MoonStarsIcon;
|
|
78
91
|
Components['sun_icon'] = SunIcon;
|
79
92
|
Components['check_mark'] = CheckMarkIcon;
|
80
93
|
Components['wrong_mark'] = WrongMarkIcon;
|
94
|
+
Components['fireflink_icon'] = FireflinkIcon;
|
81
95
|
Components['tick'] = Tick;
|
82
96
|
Components['arrow_right'] = ArrowRight;
|
83
97
|
Components['search'] = Search;
|
@@ -97,6 +111,7 @@ Components['add_variable'] = AddVariable;
|
|
97
111
|
Components['info'] = InfoIcon;
|
98
112
|
Components['calendar_icon'] = CalendarIcon;
|
99
113
|
Components['hide_icon'] = HideIcon;
|
114
|
+
Components['vertical_separator'] = VerticalSeparator;
|
100
115
|
Components['collapse_icon'] = CollapseIcon;
|
101
116
|
Components['refresh_icon'] = RefreshIcon;
|
102
117
|
Components['download_file'] = DownloadFile;
|
@@ -104,5 +119,16 @@ Components['copy_icon'] = CopyIcon;
|
|
104
119
|
Components['expand_icon'] = ExpandIcon;
|
105
120
|
Components['license_info'] = LicenseInfo;
|
106
121
|
Components['license_warning'] = LicenseWarning;
|
122
|
+
Components['download_icon'] = DownloadIcon;
|
123
|
+
Components['web_icon'] = WebIcon;
|
124
|
+
Components['web&mobile_icon'] = WebMobileIcon;
|
125
|
+
Components['mobile_icon'] = MobileIcon;
|
126
|
+
Components['sales_force'] = SalesForceIcon;
|
127
|
+
Components['ms_dynamic'] = MSDynamicIcon;
|
128
|
+
Components['all_projects'] = AllProjectsIcon;
|
129
|
+
Components['android_icon'] = AndroidIcon;
|
130
|
+
|
131
|
+
Components['select_license'] = SwitchLicenseIcon;
|
132
|
+
Components['fireflink-logo'] = FireflinkLogo;
|
107
133
|
|
108
134
|
export default Components;
|
@@ -21,8 +21,8 @@
|
|
21
21
|
}
|
22
22
|
.icon-name {
|
23
23
|
min-width: 33px;
|
24
|
-
min-height: 20px;
|
25
24
|
color: var(--primary-icon-color);
|
25
|
+
@include mixins.center-content();
|
26
26
|
}
|
27
27
|
&:hover {
|
28
28
|
border: 1px solid var(--secondary-icon-color);
|
@@ -32,6 +32,7 @@
|
|
32
32
|
min-height: 20px;
|
33
33
|
font-weight: 600;
|
34
34
|
color: var(--secondary-icon-color);
|
35
|
+
@include mixins.center-content();
|
35
36
|
}
|
36
37
|
.ff-icon-color {
|
37
38
|
path {
|
@@ -14,7 +14,7 @@ export interface InputWithDropdownProps {
|
|
14
14
|
/**
|
15
15
|
* Label | field label to be displayed
|
16
16
|
*/
|
17
|
-
label
|
17
|
+
label?: string;
|
18
18
|
|
19
19
|
/**
|
20
20
|
* value | input field value
|
@@ -26,8 +26,6 @@ export interface InputWithDropdownProps {
|
|
26
26
|
*/
|
27
27
|
variant?: 'default' | 'primary';
|
28
28
|
|
29
|
-
|
30
|
-
|
31
29
|
/**
|
32
30
|
* error | If true, error message will be displayed
|
33
31
|
*/
|
@@ -22,8 +22,10 @@ export const DefaultModalStory: Story = {
|
|
22
22
|
isHeaderDisplayed: true,
|
23
23
|
headerContent: <h2>title</h2>,
|
24
24
|
children: <h2>Hello</h2>,
|
25
|
-
isFooterDisplayed:true,
|
25
|
+
isFooterDisplayed: true,
|
26
26
|
footerContent: <Button variant="primary" label="continue" />,
|
27
|
+
customWidth: '660px',
|
28
|
+
customHeight: 'auto',
|
27
29
|
},
|
28
30
|
};
|
29
31
|
|
@@ -52,7 +54,9 @@ export const Controlled: Story = {
|
|
52
54
|
children={<div>Hello</div>}
|
53
55
|
ariaHideApp={true}
|
54
56
|
isFooterDisplayed={true}
|
55
|
-
footerContent={<Button variant="primary" label=
|
57
|
+
footerContent={<Button variant="primary" label="continue" />}
|
58
|
+
customWidth="660px"
|
59
|
+
customHeight="auto"
|
56
60
|
/>
|
57
61
|
)}
|
58
62
|
</>
|