Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
portal-apps-manage
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Registry
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
angular
portal-apps-manage
Commits
f83d7aee
Commit
f83d7aee
authored
Sep 14, 2025
by
Ooh-Ao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
รูป
parent
b6f8fc29
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
500 additions
and
221 deletions
+500
-221
dashboard-viewer.component.html
...nagement/dashboard-viewer/dashboard-viewer.component.html
+35
-63
dashboard-viewer.component.scss
...nagement/dashboard-viewer/dashboard-viewer.component.scss
+457
-150
home.component.ts
src/app/portal-manage/home/home.component.ts
+4
-4
header.component.html
src/app/shared/components/header/header.component.html
+4
-4
permission.png
src/assets/images/logoallHR/permission.png
+0
-0
No files found.
src/app/portal-manage/dashboard-management/dashboard-viewer/dashboard-viewer.component.html
View file @
f83d7aee
...
...
@@ -8,69 +8,41 @@
</div>
</div>
<!-- Dashboard Viewer Container -->
<div
*
ngIf=
"dashboardData"
class=
"viewer-container"
>
<!-- Enhanced Header -->
<div
class=
"viewer-header"
>
<div
class=
"viewer-header-content"
>
<div
class=
"viewer-header-flex"
>
<div
class=
"viewer-title-section"
>
<div
class=
"viewer-icon"
>
<i
class=
"bi bi-eye"
></i>
</div>
<div
class=
"viewer-title-content"
>
<h1>
{{ dashboardData.thName }}
</h1>
<p>
Dashboard Viewer
</p>
</div>
</div>
<div>
<button
(
click
)="
goBack
()"
class=
"viewer-back-btn"
>
<i
class=
"bi bi-arrow-left"
></i>
Back
</button>
</div>
</div>
</div>
</div>
<!-- Dashboard Content -->
<div
class=
"viewer-content-area"
>
<div
class=
"viewer-content-card"
>
<div
class=
"viewer-layout-container"
>
<ejs-dashboardlayout
id=
'dashboard_viewer'
#
viewerLayout
[
cellSpacing
]="
cellSpacing
"
[
columns
]="
columns
"
[
allowResizing
]="
false
"
[
allowDragging
]="
false
"
class=
"dashboard-viewer-layout"
<!-- Dashboard Viewer Container - Clean Layout -->
<div
*
ngIf=
"dashboardData"
class=
"viewer-container-clean"
>
<!-- Dashboard Content Only -->
<div
class=
"viewer-content-clean"
>
<ejs-dashboardlayout
id=
'dashboard_viewer'
#
viewerLayout
[
cellSpacing
]="
cellSpacing
"
[
columns
]="
columns
"
[
allowResizing
]="
false
"
[
allowDragging
]="
false
"
[
allowFloating
]="
false
"
[
showGridLines
]="
false
"
class=
"dashboard-viewer-layout-clean"
>
<e-panels>
<e-panel
*
ngFor=
"let panel of panels"
[
row
]="
panel
.
row
"
[
col
]="
panel
.
col
"
[
sizeX
]="
panel
.
sizeX
"
[
sizeY
]="
panel
.
sizeY
"
[
id
]="
panel
.
id
"
class=
"widget-panel-clean"
>
<e-panels>
<e-panel
*
ngFor=
"let panel of panels"
[
row
]="
panel
.
row
"
[
col
]="
panel
.
col
"
[
sizeX
]="
panel
.
sizeX
"
[
sizeY
]="
panel
.
sizeY
"
[
id
]="
panel
.
id
"
class=
"widget-panel"
>
<ng-template
#
header
>
<!-- Clean header for viewer -->
</ng-template>
<ng-template
#
content
>
<div
class=
"widget-content"
>
<ng-container
[
ngComponentOutlet
]="
panel
.
componentType
"
[
ngComponentOutletInputs
]="
panel
.
componentInputs
"
></ng-container>
</div>
</ng-template>
</e-panel>
</e-panels>
</ejs-dashboardlayout>
</div>
</div>
<ng-template
#
header
>
<!-- No header -->
</ng-template>
<ng-template
#
content
>
<div
class=
"widget-content-clean"
>
<ng-container
[
ngComponentOutlet
]="
panel
.
componentType
"
[
ngComponentOutletInputs
]="
panel
.
componentInputs
"
></ng-container>
</div>
</ng-template>
</e-panel>
</e-panels>
</ejs-dashboardlayout>
</div>
</div>
src/app/portal-manage/dashboard-management/dashboard-viewer/dashboard-viewer.component.scss
View file @
f83d7aee
/*
Enhanced
Dashboard Viewer Styles */
/*
Modern
Dashboard Viewer Styles */
/* Error Message */
.error-message
{
background-color
:
#fef2f2
;
border
:
1px
solid
#fecaca
;
color
:
#dc2626
;
padding
:
0
.75rem
1rem
;
border-radius
:
0
.5rem
;
margin-bottom
:
1rem
;
margin
:
0
1rem
1rem
1rem
;
}
.error-message-content
{
display
:
flex
;
align-items
:
center
;
}
.error-icon
{
margin-right
:
0
.5rem
;
}
.error-text
{
font-weight
:
500
;
/* Clean Container - No Header, No Borders */
.viewer-container-clean
{
width
:
100vw
;
height
:
100vh
;
margin
:
0
;
padding
:
0
;
background
:
transparent
;
overflow
:
hidden
;
position
:
relative
;
}
.error-description
{
margin-left
:
0
.25rem
;
.viewer-content-clean
{
width
:
100%
;
height
:
100%
;
padding
:
0
;
margin
:
0
;
background
:
transparent
;
}
/*
Layout Classes
*/
/*
Original Container
*/
.viewer-container
{
min-height
:
100vh
;
background
:
linear-gradient
(
to
bottom
right
,
#f8fafc
,
#e0e7ff
);
background
:
linear-gradient
(
135deg
,
#667eea
0%
,
#764ba2
100%
);
position
:
relative
;
overflow
:
hidden
;
}
/* Header Styles */
.viewer-header
{
background
:
white
;
box-shadow
:
0
10px
15px
-3px
rgba
(
0
,
0
,
0
,
0
.1
)
,
0
4px
6px
-2px
rgba
(
0
,
0
,
0
,
0
.05
);
border-bottom
:
1px
solid
#e5e7eb
;
background
:
rgba
(
255
,
255
,
255
,
0
.95
);
-webkit-backdrop-filter
:
blur
(
10px
);
backdrop-filter
:
blur
(
10px
);
border-bottom
:
1px
solid
rgba
(
255
,
255
,
255
,
0
.2
);
box-shadow
:
0
4px
20px
rgba
(
0
,
0
,
0
,
0
.1
);
position
:
sticky
;
top
:
0
;
z-index
:
100
;
}
.viewer-header-content
{
max-width
:
80rem
;
max-width
:
1400px
;
margin
:
0
auto
;
padding
:
0
1
rem
;
padding
:
0
2
rem
;
}
.viewer-header-flex
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
justify-content
:
space-between
;
padding
:
1
.5rem
0
;
gap
:
2rem
;
}
.viewer-title-section
{
...
...
@@ -63,108 +60,167 @@
}
.viewer-icon
{
padding
:
0
.75rem
;
background-color
:
#dbeafe
;
border-radius
:
0
.5rem
;
width
:
3rem
;
height
:
3rem
;
background
:
linear-gradient
(
135deg
,
#667eea
0%
,
#764ba2
100%
);
border-radius
:
12px
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
color
:
white
;
font-size
:
1
.5rem
;
box-shadow
:
0
4px
15px
rgba
(
102
,
126
,
234
,
0
.4
);
}
.viewer-icon
i
{
color
:
#3b82f6
;
font-size
:
2rem
;
}
.viewer-title-content
{
h1
{
font-size
:
1
.75rem
;
font-weight
:
700
;
color
:
#1a202c
;
margin
:
0
;
line-height
:
1
.2
;
}
.viewer-title-content
h1
{
font-size
:
1
.875rem
;
font-weight
:
700
;
color
:
#111827
;
margin
:
0
;
p
{
font-size
:
0
.9rem
;
color
:
#64748b
;
margin
:
0
.25rem
0
0
0
;
font-weight
:
500
;
}
}
.viewer-
title-content
p
{
color
:
#6b7280
;
margin
:
0
;
margin-top
:
0
.25
rem
;
.viewer-
actions
{
display
:
flex
;
align-items
:
center
;
gap
:
1
rem
;
}
.viewer-back-btn
{
display
:
inline-
flex
;
display
:
flex
;
align-items
:
center
;
padding
:
0
.5rem
1rem
;
background-color
:
#6b7280
;
gap
:
0
.5rem
;
padding
:
0
.75rem
1
.5rem
;
background
:
linear-gradient
(
135deg
,
#667eea
0%
,
#764ba2
100%
);
color
:
white
;
font-size
:
0
.875rem
;
font-weight
:
500
;
border-radius
:
0
.5rem
;
box-shadow
:
0
1px
2px
0
rgba
(
0
,
0
,
0
,
0
.05
);
transition
:
all
0
.2s
ease-in-out
;
border
:
none
;
border-radius
:
8px
;
font-weight
:
600
;
font-size
:
0
.9rem
;
cursor
:
pointer
;
text-decoration
:
none
;
transition
:
all
0
.3s
ease
;
box-shadow
:
0
4px
15px
rgba
(
102
,
126
,
234
,
0
.3
);
&
:hover
{
background-color
:
#4b5563
;
transform
:
translateY
(
-1px
);
box-shadow
:
0
4px
6px
-1px
rgba
(
0
,
0
,
0
,
0
.1
)
,
0
2px
4px
-1px
rgba
(
0
,
0
,
0
,
0
.06
);
transform
:
translateY
(
-2px
);
box-shadow
:
0
8px
25px
rgba
(
102
,
126
,
234
,
0
.4
);
}
&
:focus
{
outline
:
none
;
box-shadow
:
0
0
0
3px
rgba
(
107
,
114
,
128
,
0
.5
);
&
:active
{
transform
:
translateY
(
0
);
}
i
{
margin-right
:
0
.5
rem
;
font-size
:
1
rem
;
}
}
/* Content Area */
.viewer-content-area
{
max-width
:
80rem
;
padding
:
2rem
;
max-width
:
1400px
;
margin
:
0
auto
;
padding
:
1
.5rem
1rem
;
width
:
100%
;
}
.viewer-content-card
{
background
:
white
;
border-radius
:
0
.75rem
;
box-shadow
:
0
10px
15px
-3px
rgba
(
0
,
0
,
0
,
0
.1
)
,
0
4px
6px
-2px
rgba
(
0
,
0
,
0
,
0
.05
);
border
:
1px
solid
#e5e7eb
;
max-height
:
calc
(
100vh
-
200px
);
background
:
rgba
(
255
,
255
,
255
,
0
.95
);
-webkit-backdrop-filter
:
blur
(
10px
);
backdrop-filter
:
blur
(
10px
);
border-radius
:
20px
;
box-shadow
:
0
20px
40px
rgba
(
0
,
0
,
0
,
0
.1
);
border
:
1px
solid
rgba
(
255
,
255
,
255
,
0
.2
);
overflow
:
hidden
;
position
:
relative
;
z-index
:
1
;
min-height
:
600px
;
}
.viewer-layout-container
{
overflow
:
auto
;
max-height
:
calc
(
100vh
-
250px
);
position
:
relative
;
z-index
:
1
;
padding
:
2rem
;
}
/* Dashboard Viewer Layout */
.dashboard-viewer-layout
{
position
:
relative
;
z-index
:
1
;
width
:
100%
;
height
:
100%
;
max-width
:
100%
;
overflow
:
hidden
;
/* Clean Dashboard Layout - No Borders, No Shadows */
.dashboard-viewer-layout-clean
{
width
:
100%
!
important
;
height
:
100%
!
important
;
margin
:
0
;
padding
:
0
;
background
:
transparent
;
.e-panel
{
border
:
none
!
important
;
box-shadow
:
none
!
important
;
border-radius
:
0
!
important
;
background
:
transparent
!
important
;
transition
:
none
!
important
;
margin
:
0
!
important
;
padding
:
0
!
important
;
overflow
:
visible
!
important
;
&
:hover
{
transform
:
none
!
important
;
box-shadow
:
none
!
important
;
border
:
none
!
important
;
}
&
:
:
before
{
display
:
none
!
important
;
}
}
.e-panel-header
{
display
:
none
!
important
;
}
.e-panel-content
{
border
:
none
!
important
;
border-radius
:
0
!
important
;
background
:
transparent
!
important
;
padding
:
0
!
important
;
margin
:
0
!
important
;
overflow
:
visible
!
important
;
}
}
/* Original Dashboard Layout */
.dashboard-viewer-layout
{
.e-panel
{
background
:
white
;
border-radius
:
12px
;
box-shadow
:
0
4px
6px
-1px
rgba
(
0
,
0
,
0
,
0
.1
)
,
0
2px
4px
-1px
rgba
(
0
,
0
,
0
,
0
.06
);
border
:
1px
solid
#e5e7eb
;
transition
:
all
0
.3s
ease
;
overflow
:
hidden
;
border-radius
:
16px
;
box-shadow
:
0
8px
32px
rgba
(
0
,
0
,
0
,
0
.08
);
border
:
1px
solid
rgba
(
0
,
0
,
0
,
0
.05
);
transition
:
all
0
.4s
cubic-bezier
(
0
.4
,
0
,
0
.2
,
1
);
position
:
relative
;
z-index
:
2
;
max-width
:
100%
;
overflow
:
hidden
;
&
:
:
before
{
content
:
''
;
position
:
absolute
;
top
:
0
;
left
:
0
;
right
:
0
;
height
:
4px
;
background
:
linear-gradient
(
135deg
,
#667eea
0%
,
#764ba2
100%
);
opacity
:
0
;
transition
:
opacity
0
.3s
ease
;
}
&
:hover
{
box-shadow
:
0
10px
15px
-3px
rgba
(
0
,
0
,
0
,
0
.1
)
,
0
4px
6px
-2px
rgba
(
0
,
0
,
0
,
0
.05
);
transform
:
translateY
(
-1px
);
z-index
:
3
;
transform
:
translateY
(
-4px
);
box-shadow
:
0
20px
40px
rgba
(
0
,
0
,
0
,
0
.15
);
border-color
:
rgba
(
102
,
126
,
234
,
0
.2
);
&
:
:
before
{
opacity
:
1
;
}
}
}
...
...
@@ -173,66 +229,170 @@
}
.e-panel-content
{
padding
:
0
;
border-radius
:
12px
;
border-radius
:
0
0
16px
16px
;
overflow
:
hidden
;
position
:
relative
;
z-index
:
2
;
max-width
:
100%
;
background
:
white
;
}
}
/* Syncfusion DashboardLayout Override for Viewer */
/* Clean Widget Content - No Padding */
.widget-content-clean
{
height
:
100%
;
width
:
100%
;
margin
:
0
;
padding
:
0
;
background
:
transparent
;
>
*
{
height
:
100%
;
width
:
100%
;
margin
:
0
;
padding
:
0
;
background
:
transparent
;
}
}
/* Original Widget Content */
.widget-content
{
height
:
100%
;
width
:
100%
;
padding
:
1
.5rem
;
>
*
{
height
:
100%
;
width
:
100%
;
}
}
/* Clean Widget Panel - No Styling */
.widget-panel-clean
{
.e-panel
{
background
:
transparent
!
important
;
border
:
none
!
important
;
border-radius
:
0
!
important
;
overflow
:
visible
!
important
;
transition
:
none
!
important
;
margin
:
0
!
important
;
padding
:
0
!
important
;
&
:hover
{
border
:
none
!
important
;
box-shadow
:
none
!
important
;
transform
:
none
!
important
;
}
}
}
/* Original Widget Panel Enhancements */
.widget-panel
{
.e-panel
{
background
:
white
;
border
:
1px
solid
rgba
(
0
,
0
,
0
,
0
.05
);
border-radius
:
16px
;
overflow
:
hidden
;
transition
:
all
0
.4s
cubic-bezier
(
0
.4
,
0
,
0
.2
,
1
);
&
:hover
{
border-color
:
rgba
(
102
,
126
,
234
,
0
.3
);
box-shadow
:
0
20px
40px
rgba
(
0
,
0
,
0
,
0
.15
);
}
}
}
/* Syncfusion Overrides */
::ng-deep
{
/* Clean Layout Overrides */
#dashboard_viewer
.e-dashboardlayout.dashboard-viewer-layout-clean
{
width
:
100vw
!
important
;
height
:
100vh
!
important
;
max-height
:
100vh
!
important
;
overflow
:
hidden
!
important
;
margin
:
0
!
important
;
padding
:
0
!
important
;
background
:
transparent
!
important
;
.e-panel
{
border
:
none
!
important
;
box-shadow
:
none
!
important
;
border-radius
:
0
!
important
;
background
:
transparent
!
important
;
margin
:
0
!
important
;
padding
:
0
!
important
;
overflow
:
visible
!
important
;
}
.e-panel-content
{
border
:
none
!
important
;
border-radius
:
0
!
important
;
background
:
transparent
!
important
;
padding
:
0
!
important
;
margin
:
0
!
important
;
overflow
:
visible
!
important
;
}
}
/* Original Layout Overrides */
#dashboard_viewer
.e-dashboardlayout
{
width
:
100%
!
important
;
height
:
auto
!
important
;
max-height
:
calc
(
100vh
-
3
00px
)
!
important
;
max-height
:
calc
(
100vh
-
2
00px
)
!
important
;
overflow
:
auto
!
important
;
position
:
relative
!
important
;
z-index
:
1
!
important
;
background
:
transparent
!
important
;
.e-panel
{
max-width
:
100%
!
important
;
overflow
:
hidden
!
important
;
position
:
relative
!
important
;
z-index
:
2
!
important
;
&
:hover
{
z-index
:
3
!
important
;
}
background
:
white
!
important
;
}
.e-panel-content
{
overflow
:
hidden
!
important
;
max-width
:
100%
!
important
;
background
:
white
!
important
;
}
}
}
/* Widget Content Styling */
.widget-content
{
height
:
100%
;
width
:
100%
;
/* Error Message */
.error-message
{
background
:
linear-gradient
(
135deg
,
#fee2e2
0%
,
#fecaca
100%
);
border
:
1px
solid
#f87171
;
color
:
#dc2626
;
padding
:
1rem
1
.5rem
;
border-radius
:
12px
;
margin
:
2rem
;
box-shadow
:
0
4px
15px
rgba
(
220
,
38
,
38
,
0
.1
);
}
// Ensure widgets fill the panel properly
>
*
{
height
:
100%
;
width
:
100%
;
}
.error-message-content
{
display
:
flex
;
align-items
:
center
;
gap
:
0
.75rem
;
}
/* Smooth Animations */
.dashboard-viewer-container
{
width
:
100%
;
height
:
100%
;
animation
:
fadeIn
0
.5s
ease-in-out
;
.error-icon
{
font-size
:
1
.25rem
;
color
:
#dc2626
;
}
@keyframes
fadeIn
{
.error-text
{
font-weight
:
600
;
font-size
:
0
.9rem
;
}
.error-description
{
font-size
:
0
.9rem
;
opacity
:
0
.9
;
}
/* Animations */
@keyframes
fadeInUp
{
from
{
opacity
:
0
;
transform
:
translateY
(
2
0px
);
transform
:
translateY
(
3
0px
);
}
to
{
opacity
:
1
;
...
...
@@ -240,18 +400,93 @@
}
}
@keyframes
slideInRight
{
from
{
opacity
:
0
;
transform
:
translateX
(
30px
);
}
to
{
opacity
:
1
;
transform
:
translateX
(
0
);
}
}
.viewer-container
{
animation
:
fadeInUp
0
.6s
ease-out
;
}
.viewer-header
{
animation
:
slideInRight
0
.8s
ease-out
;
}
.viewer-content-card
{
animation
:
fadeInUp
1s
ease-out
;
}
/* Loading States */
.loading-shimmer
{
background
:
linear-gradient
(
90deg
,
#f0f0f0
25%
,
#e0e0e0
50%
,
#f0f0f0
75%
);
background-size
:
200%
100%
;
animation
:
shimmer
2s
infinite
;
}
@keyframes
shimmer
{
0
%
{
background-position
:
-200%
0
;
}
100
%
{
background-position
:
200%
0
;
}
}
/* Global Clean Styles */
.viewer-container-clean
{
*
{
box-sizing
:
border-box
;
}
// Reset any inherited styles
h1
,
h2
,
h3
,
h4
,
h5
,
h6
,
p
,
div
,
span
{
margin
:
0
;
padding
:
0
;
}
// Ensure no scrollbars
overflow
:
hidden
!
important
;
// Remove any default margins/padding
&
>
*
{
margin
:
0
!
important
;
padding
:
0
!
important
;
}
}
/* Body and HTML styles for clean layout */
::ng-deep
{
body
{
margin
:
0
!
important
;
padding
:
0
!
important
;
overflow
:
hidden
!
important
;
background
:
transparent
!
important
;
}
html
{
margin
:
0
!
important
;
padding
:
0
!
important
;
height
:
100%
!
important
;
width
:
100%
!
important
;
overflow
:
hidden
!
important
;
}
}
/* Responsive Design */
@media
(
max-width
:
1
024
px
)
{
@media
(
max-width
:
1
200
px
)
{
.viewer-header-content
{
padding
:
0
0
.7
5rem
;
padding
:
0
1
.
5rem
;
}
.viewer-
header-flex
{
padding
:
1
rem
0
;
.viewer-
content-area
{
padding
:
1
.5rem
;
}
.viewer-
title-content
h1
{
font-size
:
1
.5rem
;
.viewer-
layout-container
{
padding
:
1
.5rem
;
}
}
...
...
@@ -267,59 +502,131 @@
justify-content
:
center
;
}
.viewer-title-content
h1
{
font-size
:
1
.25rem
;
.viewer-title-content
{
text-align
:
center
;
h1
{
font-size
:
1
.5rem
;
}
}
.viewer-back-btn
{
width
:
100%
;
.viewer-actions
{
justify-content
:
center
;
}
.viewer-content-
card
{
max-height
:
calc
(
100vh
-
150px
)
;
.viewer-content-
area
{
padding
:
1rem
;
}
.viewer-layout-container
{
max-height
:
calc
(
100vh
-
200px
);
padding
:
1rem
;
}
.viewer-content-card
{
border-radius
:
16px
;
}
.dashboard-viewer-layout
{
.e-panel
{
margin
:
4
px
;
border-radius
:
8
px
;
margin
:
8
px
;
border-radius
:
12
px
;
}
}
/
/ Syncfusion overrides for mobile viewer
::ng-deep
{
#dashboard_viewer
.e-dashboardlayout
{
ma
x-height
:
calc
(
100vh
-
250px
)
!
important
;
/
* Clean layout responsive */
.dashboard-viewer-layout-clean
{
.e-panel
{
ma
rgin
:
0
!
important
;
}
}
}
@media
(
max-width
:
480px
)
{
.viewer-header-content
{
padding
:
0
0
.5rem
;
padding
:
0
1rem
;
}
.viewer-title-content
{
h1
{
font-size
:
1
.25rem
;
}
p
{
font-size
:
0
.8rem
;
}
}
.viewer-title-content
h1
{
font-size
:
1
.125rem
;
.viewer-icon
{
width
:
2
.5rem
;
height
:
2
.5rem
;
font-size
:
1
.25rem
;
}
.viewer-title-content
p
{
font-size
:
0
.8rem
;
.viewer-back-btn
{
padding
:
0
.625rem
1
.25rem
;
font-size
:
0
.85rem
;
}
}
/* Print Styles */
@media
print
{
.viewer-header
{
display
:
none
!
important
;
}
.viewer-content-card
{
box-shadow
:
none
!
important
;
border
:
1px
solid
#ccc
!
important
;
border-radius
:
0
!
important
;
}
.dashboard-viewer-layout
{
.e-panel
{
box-shadow
:
none
;
border
:
1px
solid
#ccc
;
box-shadow
:
none
!
important
;
border
:
1px
solid
#ccc
!
important
;
page-break-inside
:
avoid
;
}
}
}
/* Dark Mode Support */
@media
(
prefers-color-scheme
:
dark
)
{
.viewer-container
{
background
:
linear-gradient
(
135deg
,
#1a202c
0%
,
#2d3748
100%
);
}
.viewer-header
{
background
:
rgba
(
26
,
32
,
44
,
0
.95
);
border-bottom-color
:
rgba
(
255
,
255
,
255
,
0
.1
);
}
.viewer-title-content
{
h1
{
color
:
#f7fafc
;
}
p
{
color
:
#a0aec0
;
}
}
.viewer-content-card
{
background
:
rgba
(
26
,
32
,
44
,
0
.95
);
border-color
:
rgba
(
255
,
255
,
255
,
0
.1
);
}
.dashboard-viewer-layout
{
.e-panel
{
background
:
#2d3748
;
border-color
:
rgba
(
255
,
255
,
255
,
0
.1
);
}
.e-panel-content
{
background
:
#2d3748
;
}
}
.widget-content
{
background
:
#2d3748
;
}
}
src/app/portal-manage/home/home.component.ts
View file @
f83d7aee
...
...
@@ -291,7 +291,7 @@ export class HomeComponent implements OnInit {
name
:
'meeting-booking'
,
displayName
:
'Meeting Booking'
,
description
:
'ระบบจองห้องประชุม'
,
icon
:
'./assets/images/
icons/calendar
.png'
,
icon
:
'./assets/images/
logoallHR/booking
.png'
,
path
:
'/portal-manage/meeting-booking'
,
isVisible
:
true
,
category
:
'services'
,
...
...
@@ -303,7 +303,7 @@ export class HomeComponent implements OnInit {
name
:
'permission-management'
,
displayName
:
'Permission Management'
,
description
:
'ระบบจัดการสิทธิ์และบทบาท'
,
icon
:
'./assets/images/
icons/widget
.png'
,
icon
:
'./assets/images/
logoallHR/permission
.png'
,
path
:
'/portal-manage/permission-management'
,
isVisible
:
true
,
category
:
'system'
,
...
...
@@ -316,7 +316,7 @@ export class HomeComponent implements OnInit {
name
:
'dashboard-management'
,
displayName
:
'Dashboard Management'
,
description
:
'ระบบจัดการแดชบอร์ด และคลังวิดเจ็ต'
,
icon
:
'./assets/images/
icons/dashboard.png
'
,
icon
:
'./assets/images/
logoallHR/widget.webp
'
,
path
:
'/portal-manage/dashboard-management'
,
isVisible
:
true
,
category
:
'system'
,
...
...
@@ -327,7 +327,7 @@ export class HomeComponent implements OnInit {
name
:
'my-portal'
,
displayName
:
'my-Portal'
,
description
:
'ระบบจัดการเอกสารและเมนูกลางสำหรับแอปพลิเคชันต่างๆ'
,
icon
:
'./assets/images/
icons/portal.png
'
,
icon
:
'./assets/images/
logoallHR/portal.webp
'
,
path
:
'/portal-manage/my-portal'
,
isVisible
:
true
,
category
:
'system'
,
...
...
src/app/shared/components/header/header.component.html
View file @
f83d7aee
...
...
@@ -387,7 +387,7 @@
<div
class=
""
>
<a
routerLink=
"/portal-manage/meeting-booking"
class=
"p-3 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20"
>
<img
src=
"./assets/images/
icons/calendar
.png"
alt=
"Meeting Booking"
<img
src=
"./assets/images/
logoallHR/booking
.png"
alt=
"Meeting Booking"
class=
"leading-[1.5] text-2xl !h-[1.5rem] align-middle flex justify-center mx-auto"
>
<div
class=
"text-[0.7rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50 mt-1"
>
Meeting
</div>
</a>
...
...
@@ -397,7 +397,7 @@
<div
class=
""
>
<a
routerLink=
"/portal-manage/my-portal"
class=
"p-3 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20"
>
<img
src=
"./assets/images/
icons/portal.png
"
alt=
"my-Portal"
<img
src=
"./assets/images/
logoallHR/portal.webp
"
alt=
"my-Portal"
class=
"leading-[1.5] text-2xl !h-[1.5rem] align-middle flex justify-center mx-auto"
>
<div
class=
"text-[0.7rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50 mt-1"
>
my-Portal
</div>
</a>
...
...
@@ -407,7 +407,7 @@
<div
class=
""
>
<a
routerLink=
"/portal-manage/permission-management"
class=
"p-3 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20"
>
<img
src=
"./assets/images/
icons/widget
.png"
alt=
"Permission Management"
<img
src=
"./assets/images/
logoallHR/permission
.png"
alt=
"Permission Management"
class=
"leading-[1.5] text-2xl !h-[1.5rem] align-middle flex justify-center mx-auto"
>
<div
class=
"text-[0.7rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50 mt-1"
>
Permission
</div>
</a>
...
...
@@ -417,7 +417,7 @@
<div
class=
""
>
<a
routerLink=
"/portal-manage/dashboard-management"
class=
"p-3 items-center related-app block text-center rounded-sm hover:bg-gray-50 dark:hover:bg-black/20"
>
<img
src=
"./assets/images/
icons/dashboard.png
"
alt=
"Dashboard Management"
<img
src=
"./assets/images/
logoallHR/widget.webp
"
alt=
"Dashboard Management"
class=
"leading-[1.5] text-2xl !h-[1.5rem] align-middle flex justify-center mx-auto"
>
<div
class=
"text-[0.7rem] text-defaulttextcolor dark:text-[#8c9097] dark:text-white/50 mt-1"
>
Dashboard Mgt
</div>
</a>
...
...
src/assets/images/logoallHR/permission.png
0 → 100644
View file @
f83d7aee
11.9 KB
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment