sdga-ui 1.0.3 → 1.0.4
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/.github/workflows/deploy.yml +57 -0
- package/.github/workflows/publish.yml +2 -4
- package/README.md +8 -0
- package/css/dga-ui.css +60 -30
- package/css/dga-ui.css.map +1 -1
- package/demo-angular/.editorconfig +17 -0
- package/demo-angular/.vscode/extensions.json +4 -0
- package/demo-angular/.vscode/launch.json +20 -0
- package/demo-angular/.vscode/tasks.json +42 -0
- package/demo-angular/README.md +59 -0
- package/demo-angular/angular.json +90 -0
- package/demo-angular/package-lock.json +10459 -0
- package/demo-angular/package.json +50 -0
- package/demo-angular/public/.nojekyll +0 -0
- package/demo-angular/public/favicon.ico +0 -0
- package/demo-angular/public/i18n/ar.json +239 -0
- package/demo-angular/public/i18n/en.json +239 -0
- package/demo-angular/src/app/app.config.ts +20 -0
- package/demo-angular/src/app/app.html +52 -0
- package/demo-angular/src/app/app.routes.ts +45 -0
- package/demo-angular/src/app/app.scss +430 -0
- package/demo-angular/src/app/app.spec.ts +23 -0
- package/demo-angular/src/app/app.ts +88 -0
- package/demo-angular/src/app/shared/code-example/code-example.component.html +30 -0
- package/demo-angular/src/app/shared/code-example/code-example.component.scss +183 -0
- package/demo-angular/src/app/shared/code-example/code-example.component.ts +78 -0
- package/demo-angular/src/app/views/alerts/alerts.component.html +155 -0
- package/demo-angular/src/app/views/alerts/alerts.component.scss +3 -0
- package/demo-angular/src/app/views/alerts/alerts.component.ts +134 -0
- package/demo-angular/src/app/views/bootstrap/bootstrap.component.html +14 -0
- package/demo-angular/src/app/views/bootstrap/bootstrap.component.scss +91 -0
- package/demo-angular/src/app/views/bootstrap/bootstrap.component.ts +23 -0
- package/demo-angular/src/app/views/buttons/buttons.component.html +289 -0
- package/demo-angular/src/app/views/buttons/buttons.component.scss +14 -0
- package/demo-angular/src/app/views/buttons/buttons.component.ts +155 -0
- package/demo-angular/src/app/views/cards/cards.component.html +156 -0
- package/demo-angular/src/app/views/cards/cards.component.html.backup +156 -0
- package/demo-angular/src/app/views/cards/cards.component.scss +11 -0
- package/demo-angular/src/app/views/cards/cards.component.ts +194 -0
- package/demo-angular/src/app/views/forms/forms.component.html +347 -0
- package/demo-angular/src/app/views/forms/forms.component.scss +3 -0
- package/demo-angular/src/app/views/forms/forms.component.ts +222 -0
- package/demo-angular/src/app/views/home/home.component.html +38 -0
- package/demo-angular/src/app/views/home/home.component.scss +35 -0
- package/demo-angular/src/app/views/home/home.component.ts +12 -0
- package/demo-angular/src/app/views/links/links.component.html +140 -0
- package/demo-angular/src/app/views/links/links.component.scss +60 -0
- package/demo-angular/src/app/views/links/links.component.ts +123 -0
- package/demo-angular/src/app/views/tables/tables.component.html +289 -0
- package/demo-angular/src/app/views/tables/tables.component.scss +3 -0
- package/demo-angular/src/app/views/tables/tables.component.ts +278 -0
- package/demo-angular/src/app/views/toasts/toasts.component.html +201 -0
- package/demo-angular/src/app/views/toasts/toasts.component.scss +0 -0
- package/demo-angular/src/app/views/toasts/toasts.component.ts +182 -0
- package/demo-angular/src/index.html +14 -0
- package/demo-angular/src/main.ts +6 -0
- package/demo-angular/src/styles.scss +4 -0
- package/demo-angular/tsconfig.app.json +15 -0
- package/demo-angular/tsconfig.json +33 -0
- package/demo-angular/tsconfig.spec.json +15 -0
- package/package.json +4 -5
- package/theme/components/_accordion.scss +1 -1
- package/theme/components/_buttons.scss +6 -6
- package/theme/components/_content.scss +3 -3
- package/theme/components/_dropdowns.scss +1 -1
- package/theme/components/_forms-check.scss +1 -1
- package/theme/components/_forms-inputs.scss +1 -1
- package/theme/components/_list-group.scss +1 -1
- package/theme/components/_modals.scss +1 -1
- package/theme/components/_navigation.scss +2 -2
- package/theme/components/_overlays.scss +2 -2
- package/theme/components/_pagination.scss +1 -1
- package/theme/components/_popovers.scss +1 -1
- package/theme/components/_toasts.scss +1 -1
- package/theme/customizations/_cards.scss +3 -3
- package/theme/customizations/_links.scss +72 -24
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
+
import { RouterLink } from '@angular/router';
|
|
3
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: 'app-home',
|
|
7
|
+
imports: [RouterLink, TranslateModule],
|
|
8
|
+
templateUrl: './home.component.html',
|
|
9
|
+
styleUrl: './home.component.scss',
|
|
10
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
11
|
+
})
|
|
12
|
+
export class HomeComponent {}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
<div class="container py-5">
|
|
2
|
+
<h1 class="display-4 mb-4">{{ 'links.title' | translate }}</h1>
|
|
3
|
+
<p class="lead mb-5">{{ 'links.subtitle' | translate }}</p>
|
|
4
|
+
|
|
5
|
+
<section class="demo-section mb-5">
|
|
6
|
+
<h2>{{ 'links.section_basic' | translate }}</h2>
|
|
7
|
+
<div class="d-flex flex-column gap-3">
|
|
8
|
+
<div>
|
|
9
|
+
<a href="javascript:void(0);" class="link-primary">{{ 'links.primary_link' | translate }}</a>
|
|
10
|
+
</div>
|
|
11
|
+
<div>
|
|
12
|
+
<a href="javascript:void(0);" class="link-secondary">{{ 'links.secondary_link' | translate }}</a>
|
|
13
|
+
</div>
|
|
14
|
+
<div>
|
|
15
|
+
<a href="javascript:void(0);" class="link-success">{{ 'links.success_link' | translate }}</a>
|
|
16
|
+
</div>
|
|
17
|
+
<div>
|
|
18
|
+
<a href="javascript:void(0);" class="link-danger">{{ 'links.danger_link' | translate }}</a>
|
|
19
|
+
</div>
|
|
20
|
+
<div>
|
|
21
|
+
<a href="javascript:void(0);" class="link-warning">{{ 'links.warning_link' | translate }}</a>
|
|
22
|
+
</div>
|
|
23
|
+
<div>
|
|
24
|
+
<a href="javascript:void(0);" class="link-info">{{ 'links.info_link' | translate }}</a>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
<app-code-example [htmlCode]="basicLinksCode"></app-code-example>
|
|
28
|
+
</section>
|
|
29
|
+
|
|
30
|
+
<section class="demo-section mb-5">
|
|
31
|
+
<h2>{{ 'links.section_underline' | translate }}</h2>
|
|
32
|
+
<div class="d-flex flex-column gap-3">
|
|
33
|
+
<div>
|
|
34
|
+
<a href="javascript:void(0);" class="link-underline">{{ 'links.underline_link' | translate }}</a>
|
|
35
|
+
</div>
|
|
36
|
+
<div>
|
|
37
|
+
<a href="javascript:void(0);" class="link-underline-opacity-0">{{ 'links.no_underline' | translate }}</a>
|
|
38
|
+
</div>
|
|
39
|
+
<div>
|
|
40
|
+
<a href="javascript:void(0);" class="link-underline-opacity-25">{{ 'links.underline_25' | translate }}</a>
|
|
41
|
+
</div>
|
|
42
|
+
<div>
|
|
43
|
+
<a href="javascript:void(0);" class="link-underline-opacity-50">{{ 'links.underline_50' | translate }}</a>
|
|
44
|
+
</div>
|
|
45
|
+
<div>
|
|
46
|
+
<a href="javascript:void(0);" class="link-underline-opacity-75">{{ 'links.underline_75' | translate }}</a>
|
|
47
|
+
</div>
|
|
48
|
+
<div>
|
|
49
|
+
<a href="javascript:void(0);" class="link-underline-opacity-100">{{ 'links.underline_100' | translate }}</a>
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
<app-code-example [htmlCode]="underlineLinksCode"></app-code-example>
|
|
53
|
+
</section>
|
|
54
|
+
|
|
55
|
+
<section class="demo-section mb-5">
|
|
56
|
+
<h2>{{ 'links.section_hover' | translate }}</h2>
|
|
57
|
+
<div class="d-flex flex-column gap-3">
|
|
58
|
+
<div>
|
|
59
|
+
<a href="javascript:void(0);" class="link-primary link-underline-opacity-0 link-underline-opacity-100-hover">{{ 'links.hover_underline' | translate }}</a>
|
|
60
|
+
</div>
|
|
61
|
+
<div>
|
|
62
|
+
<a href="javascript:void(0);" class="link-secondary link-underline-opacity-100 link-underline-opacity-0-hover">{{ 'links.hover_remove' | translate }}</a>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
<app-code-example [htmlCode]="hoverLinksCode"></app-code-example>
|
|
66
|
+
</section>
|
|
67
|
+
|
|
68
|
+
<section class="demo-section mb-5">
|
|
69
|
+
<h2>{{ 'links.section_offset' | translate }}</h2>
|
|
70
|
+
<div class="d-flex flex-column gap-3">
|
|
71
|
+
<div>
|
|
72
|
+
<a href="javascript:void(0);" class="link-offset-1">{{ 'links.offset_1' | translate }}</a>
|
|
73
|
+
</div>
|
|
74
|
+
<div>
|
|
75
|
+
<a href="javascript:void(0);" class="link-offset-2">{{ 'links.offset_2' | translate }}</a>
|
|
76
|
+
</div>
|
|
77
|
+
<div>
|
|
78
|
+
<a href="javascript:void(0);" class="link-offset-3">{{ 'links.offset_3' | translate }}</a>
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
<app-code-example [htmlCode]="offsetLinksCode"></app-code-example>
|
|
82
|
+
|
|
83
|
+
<h3 class="mt-4 mb-3">Combining Offset with Hover Effects</h3>
|
|
84
|
+
<div class="d-flex flex-column gap-3">
|
|
85
|
+
<div>
|
|
86
|
+
<a href="javascript:void(0);" class="link-offset-2 link-offset-3-hover link-underline link-underline-opacity-0 link-underline-opacity-75-hover">
|
|
87
|
+
Link with changing offset on hover
|
|
88
|
+
</a>
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
<app-code-example [htmlCode]="offsetHoverCode"></app-code-example>
|
|
92
|
+
</section>
|
|
93
|
+
|
|
94
|
+
<section class="demo-section mb-5">
|
|
95
|
+
<h2>{{ 'links.section_icons' | translate }}</h2>
|
|
96
|
+
<div class="d-flex flex-column gap-3">
|
|
97
|
+
<div>
|
|
98
|
+
<a href="javascript:void(0);" class="link-primary">
|
|
99
|
+
<i class="hgi hgi-stroke hgi-link-01 me-2"></i>
|
|
100
|
+
{{ 'links.link_with_icon' | translate }}
|
|
101
|
+
</a>
|
|
102
|
+
</div>
|
|
103
|
+
<div>
|
|
104
|
+
<a href="javascript:void(0);" class="link-secondary">
|
|
105
|
+
{{ 'links.external_link' | translate }}
|
|
106
|
+
<i class="hgi hgi-stroke hgi-link-external-01 ms-2"></i>
|
|
107
|
+
</a>
|
|
108
|
+
</div>
|
|
109
|
+
<div>
|
|
110
|
+
<a href="javascript:void(0);" class="link-success">
|
|
111
|
+
<i class="hgi hgi-stroke hgi-arrow-right-01 me-2"></i>
|
|
112
|
+
{{ 'links.arrow_link' | translate }}
|
|
113
|
+
</a>
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
<app-code-example [htmlCode]="iconLinksCode"></app-code-example>
|
|
117
|
+
</section>
|
|
118
|
+
|
|
119
|
+
<section class="demo-section">
|
|
120
|
+
<h2>{{ 'links.section_custom' | translate }}</h2>
|
|
121
|
+
|
|
122
|
+
<h3 class="h5 mb-3">Subtle Link</h3>
|
|
123
|
+
<div class="mb-3">
|
|
124
|
+
<a href="javascript:void(0);" class="custom-link-subtle">{{ 'links.subtle_link' | translate }}</a>
|
|
125
|
+
</div>
|
|
126
|
+
<app-code-example [htmlCode]="subtleLinkCode" [scssCode]="subtleLinkScss"></app-code-example>
|
|
127
|
+
|
|
128
|
+
<h3 class="h5 mb-3 mt-4">Bold Link</h3>
|
|
129
|
+
<div class="mb-3">
|
|
130
|
+
<a href="javascript:void(0);" class="custom-link-bold">{{ 'links.bold_link' | translate }}</a>
|
|
131
|
+
</div>
|
|
132
|
+
<app-code-example [htmlCode]="boldLinkCode" [scssCode]="boldLinkScss"></app-code-example>
|
|
133
|
+
|
|
134
|
+
<h3 class="h5 mb-3 mt-4">Decorated Link</h3>
|
|
135
|
+
<div class="mb-3">
|
|
136
|
+
<a href="javascript:void(0);" class="custom-link-decorated">{{ 'links.decorated_link' | translate }}</a>
|
|
137
|
+
</div>
|
|
138
|
+
<app-code-example [htmlCode]="decoratedLinkCode" [scssCode]="decoratedLinkScss"></app-code-example>
|
|
139
|
+
</section>
|
|
140
|
+
</div>
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// Links Component Styles
|
|
2
|
+
|
|
3
|
+
.demo-section {
|
|
4
|
+
margin-bottom: 3rem;
|
|
5
|
+
|
|
6
|
+
h2 {
|
|
7
|
+
margin-bottom: 1.5rem;
|
|
8
|
+
padding-bottom: 0.5rem;
|
|
9
|
+
border-bottom: 1px solid var(--dga-border-color);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
a {
|
|
13
|
+
font-size: 1rem;
|
|
14
|
+
transition: all 0.2s ease;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Custom link styles
|
|
19
|
+
.custom-link-subtle {
|
|
20
|
+
color: var(--dga-neutral-600);
|
|
21
|
+
text-decoration: none;
|
|
22
|
+
|
|
23
|
+
&:hover {
|
|
24
|
+
color: var(--dga-primary);
|
|
25
|
+
text-decoration: underline;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.custom-link-bold {
|
|
30
|
+
color: var(--dga-primary);
|
|
31
|
+
font-weight: 600;
|
|
32
|
+
text-decoration: none;
|
|
33
|
+
|
|
34
|
+
&:hover {
|
|
35
|
+
color: var(--dga-primary-dark);
|
|
36
|
+
text-decoration: underline;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.custom-link-decorated {
|
|
41
|
+
color: var(--dga-secondary);
|
|
42
|
+
text-decoration: none;
|
|
43
|
+
position: relative;
|
|
44
|
+
padding-bottom: 2px;
|
|
45
|
+
|
|
46
|
+
&::after {
|
|
47
|
+
content: '';
|
|
48
|
+
position: absolute;
|
|
49
|
+
bottom: 0;
|
|
50
|
+
left: 0;
|
|
51
|
+
width: 0;
|
|
52
|
+
height: 2px;
|
|
53
|
+
background-color: var(--dga-secondary);
|
|
54
|
+
transition: width 0.3s ease;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
&:hover::after {
|
|
58
|
+
width: 100%;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
4
|
+
import { CodeExampleComponent } from '../../shared/code-example/code-example.component';
|
|
5
|
+
|
|
6
|
+
@Component({
|
|
7
|
+
selector: 'app-links',
|
|
8
|
+
imports: [CommonModule, TranslateModule, CodeExampleComponent],
|
|
9
|
+
templateUrl: './links.component.html',
|
|
10
|
+
styleUrl: './links.component.scss'
|
|
11
|
+
})
|
|
12
|
+
export class LinksComponent {
|
|
13
|
+
// Basic link colors
|
|
14
|
+
basicLinksCode = `<a href="#" class="link-primary">Primary link</a>
|
|
15
|
+
<a href="#" class="link-secondary">Secondary link</a>
|
|
16
|
+
<a href="#" class="link-success">Success link</a>
|
|
17
|
+
<a href="#" class="link-danger">Danger link</a>
|
|
18
|
+
<a href="#" class="link-warning">Warning link</a>
|
|
19
|
+
<a href="#" class="link-info">Info link</a>`;
|
|
20
|
+
|
|
21
|
+
// Underline utilities with opacity variants
|
|
22
|
+
underlineLinksCode = `<!-- Default underline -->
|
|
23
|
+
<a href="#" class="link-underline">Link with underline</a>
|
|
24
|
+
|
|
25
|
+
<!-- Opacity variants -->
|
|
26
|
+
<a href="#" class="link-underline-opacity-0">No underline (opacity 0)</a>
|
|
27
|
+
<a href="#" class="link-underline-opacity-25">25% underline opacity</a>
|
|
28
|
+
<a href="#" class="link-underline-opacity-50">50% underline opacity</a>
|
|
29
|
+
<a href="#" class="link-underline-opacity-75">75% underline opacity</a>
|
|
30
|
+
<a href="#" class="link-underline-opacity-100">100% underline opacity</a>`;
|
|
31
|
+
|
|
32
|
+
// Hover underline effects
|
|
33
|
+
hoverLinksCode = `<!-- Show underline on hover -->
|
|
34
|
+
<a href="#" class="link-primary link-underline-opacity-0 link-underline-opacity-100-hover">
|
|
35
|
+
Underline appears on hover
|
|
36
|
+
</a>
|
|
37
|
+
|
|
38
|
+
<!-- Hide underline on hover -->
|
|
39
|
+
<a href="#" class="link-secondary link-underline-opacity-100 link-underline-opacity-0-hover">
|
|
40
|
+
Underline disappears on hover
|
|
41
|
+
</a>`;
|
|
42
|
+
|
|
43
|
+
// Underline offset utilities
|
|
44
|
+
offsetLinksCode = `<a href="#" class="link-offset-1">Link with offset 1</a>
|
|
45
|
+
<a href="#" class="link-offset-2">Link with offset 2</a>
|
|
46
|
+
<a href="#" class="link-offset-3">Link with offset 3</a>`;
|
|
47
|
+
|
|
48
|
+
// Combined offset and hover
|
|
49
|
+
offsetHoverCode = `<a href="#" class="link-offset-2 link-offset-3-hover link-underline link-underline-opacity-0 link-underline-opacity-75-hover">
|
|
50
|
+
Link with offset that changes on hover
|
|
51
|
+
</a>`;
|
|
52
|
+
|
|
53
|
+
// Links with icons
|
|
54
|
+
iconLinksCode = `<!-- Icon before text -->
|
|
55
|
+
<a href="#" class="link-primary">
|
|
56
|
+
<i class="hgi hgi-stroke hgi-link-01 me-2"></i>
|
|
57
|
+
Link with leading icon
|
|
58
|
+
</a>
|
|
59
|
+
|
|
60
|
+
<!-- Icon after text -->
|
|
61
|
+
<a href="#" class="link-secondary">
|
|
62
|
+
External link
|
|
63
|
+
<i class="hgi hgi-stroke hgi-link-external-01 ms-2"></i>
|
|
64
|
+
</a>
|
|
65
|
+
|
|
66
|
+
<!-- Icon with arrow -->
|
|
67
|
+
<a href="#" class="link-success">
|
|
68
|
+
<i class="hgi hgi-stroke hgi-arrow-right-01 me-2"></i>
|
|
69
|
+
Arrow link
|
|
70
|
+
</a>`;
|
|
71
|
+
|
|
72
|
+
// Custom link styles - subtle
|
|
73
|
+
subtleLinkCode = `<a href="#" class="custom-link-subtle">Subtle link style</a>`;
|
|
74
|
+
|
|
75
|
+
subtleLinkScss = `.custom-link-subtle {
|
|
76
|
+
color: var(--dga-neutral-600);
|
|
77
|
+
text-decoration: none;
|
|
78
|
+
|
|
79
|
+
&:hover {
|
|
80
|
+
color: var(--dga-primary);
|
|
81
|
+
text-decoration: underline;
|
|
82
|
+
}
|
|
83
|
+
}`;
|
|
84
|
+
|
|
85
|
+
// Custom link styles - bold
|
|
86
|
+
boldLinkCode = `<a href="#" class="custom-link-bold">Bold link style</a>`;
|
|
87
|
+
|
|
88
|
+
boldLinkScss = `.custom-link-bold {
|
|
89
|
+
color: var(--dga-primary);
|
|
90
|
+
font-weight: 600;
|
|
91
|
+
text-decoration: none;
|
|
92
|
+
|
|
93
|
+
&:hover {
|
|
94
|
+
color: var(--dga-primary-dark);
|
|
95
|
+
text-decoration: underline;
|
|
96
|
+
}
|
|
97
|
+
}`;
|
|
98
|
+
|
|
99
|
+
// Custom link styles - decorated
|
|
100
|
+
decoratedLinkCode = `<a href="#" class="custom-link-decorated">Decorated link with animated underline</a>`;
|
|
101
|
+
|
|
102
|
+
decoratedLinkScss = `.custom-link-decorated {
|
|
103
|
+
color: var(--dga-secondary);
|
|
104
|
+
text-decoration: none;
|
|
105
|
+
position: relative;
|
|
106
|
+
padding-bottom: 2px;
|
|
107
|
+
|
|
108
|
+
&::after {
|
|
109
|
+
content: '';
|
|
110
|
+
position: absolute;
|
|
111
|
+
bottom: 0;
|
|
112
|
+
left: 0;
|
|
113
|
+
width: 0;
|
|
114
|
+
height: 2px;
|
|
115
|
+
background-color: var(--dga-secondary);
|
|
116
|
+
transition: width 0.3s ease;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
&:hover::after {
|
|
120
|
+
width: 100%;
|
|
121
|
+
}
|
|
122
|
+
}`;
|
|
123
|
+
}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
<div class="container py-5">
|
|
2
|
+
<h1 class="display-4 mb-4">{{ 'tables.title' | translate }}</h1>
|
|
3
|
+
<p class="lead mb-5">{{ 'tables.subtitle' | translate }}</p>
|
|
4
|
+
|
|
5
|
+
<section class="demo-section">
|
|
6
|
+
<h2>{{ 'tables.section_default' | translate }}</h2>
|
|
7
|
+
<p class="mb-4">Default table with checkboxes and link integration. The table includes checkbox inputs in the first column for row selection and links in data cells.</p>
|
|
8
|
+
|
|
9
|
+
<div class="table-responsive">
|
|
10
|
+
<table class="table">
|
|
11
|
+
<thead>
|
|
12
|
+
<tr>
|
|
13
|
+
<th scope="col" style="width: 3.25rem;"><input type="checkbox"
|
|
14
|
+
class="form-check-input form-check-input-sm ripple" id="chkDemoMd"></th>
|
|
15
|
+
<th scope="col">First</th>
|
|
16
|
+
<th scope="col">Last</th>
|
|
17
|
+
<th scope="col">Handle</th>
|
|
18
|
+
</tr>
|
|
19
|
+
</thead>
|
|
20
|
+
<tbody>
|
|
21
|
+
<tr>
|
|
22
|
+
<th scope="row"><input type="checkbox" class="form-check-input form-check-input-sm ripple"
|
|
23
|
+
id="chkNeutralMd"></th>
|
|
24
|
+
<td><a href="javascript:void(0);">Mark</a></td>
|
|
25
|
+
<td>Otto</td>
|
|
26
|
+
<td>@mdo</td>
|
|
27
|
+
</tr>
|
|
28
|
+
<tr>
|
|
29
|
+
<th scope="row"><input type="checkbox" class="form-check-input form-check-input-sm ripple" id="chkDemoMd">
|
|
30
|
+
</th>
|
|
31
|
+
<td><a href="javascript:void(0);">Jacob</a></td>
|
|
32
|
+
<td>Thornton</td>
|
|
33
|
+
<td>@fat</td>
|
|
34
|
+
</tr>
|
|
35
|
+
<tr>
|
|
36
|
+
<th scope="row"><input type="checkbox" class="form-check-input form-check-input-sm ripple" id="chkDemoMd">
|
|
37
|
+
</th>
|
|
38
|
+
<td><a href="javascript:void(0);">John</a></td>
|
|
39
|
+
<td>Doe</td>
|
|
40
|
+
<td>@social</td>
|
|
41
|
+
</tr>
|
|
42
|
+
</tbody>
|
|
43
|
+
</table>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<app-code-example [htmlCode]="defaultTableCode" title="Default Table with Checkboxes"></app-code-example>
|
|
47
|
+
</section>
|
|
48
|
+
|
|
49
|
+
<section class="demo-section">
|
|
50
|
+
<h2>Side-Borderless Table</h2>
|
|
51
|
+
<p class="mb-4">Table without left and right borders using the <code>side-borderless</code> class. This creates a cleaner look by removing the side borders while maintaining horizontal dividers.</p>
|
|
52
|
+
|
|
53
|
+
<div class="table-responsive">
|
|
54
|
+
<table class="table side-borderless">
|
|
55
|
+
<thead>
|
|
56
|
+
<tr>
|
|
57
|
+
<th scope="col" style="width: 3.25rem;"><input type="checkbox"
|
|
58
|
+
class="form-check-input form-check-input-sm ripple" id="chkDemoMd"></th>
|
|
59
|
+
<th scope="col">First</th>
|
|
60
|
+
<th scope="col">Last</th>
|
|
61
|
+
<th scope="col">Handle</th>
|
|
62
|
+
</tr>
|
|
63
|
+
</thead>
|
|
64
|
+
<tbody>
|
|
65
|
+
<tr>
|
|
66
|
+
<th scope="row"><input type="checkbox" class="form-check-input form-check-input-sm ripple" id="chkDemoMd">
|
|
67
|
+
</th>
|
|
68
|
+
<td><a href="javascript:void(0);">Mark</a></td>
|
|
69
|
+
<td>Otto</td>
|
|
70
|
+
<td>@mdo</td>
|
|
71
|
+
</tr>
|
|
72
|
+
<tr>
|
|
73
|
+
<th scope="row"><input type="checkbox" class="form-check-input form-check-input-sm ripple" id="chkDemoMd">
|
|
74
|
+
</th>
|
|
75
|
+
<td><a href="javascript:void(0);">Jacob</a></td>
|
|
76
|
+
<td>Thornton</td>
|
|
77
|
+
<td>@fat</td>
|
|
78
|
+
</tr>
|
|
79
|
+
<tr>
|
|
80
|
+
<th scope="row"><input type="checkbox" class="form-check-input form-check-input-sm ripple" id="chkDemoMd">
|
|
81
|
+
</th>
|
|
82
|
+
<td><a href="javascript:void(0);">John</a></td>
|
|
83
|
+
<td>Doe</td>
|
|
84
|
+
<td>@social</td>
|
|
85
|
+
</tr>
|
|
86
|
+
</tbody>
|
|
87
|
+
</table>
|
|
88
|
+
</div>
|
|
89
|
+
|
|
90
|
+
<app-code-example [htmlCode]="sideBorderlessTableCode" title="Side-Borderless Table"></app-code-example>
|
|
91
|
+
</section>
|
|
92
|
+
|
|
93
|
+
<section class="demo-section">
|
|
94
|
+
<h2>Striped Table</h2>
|
|
95
|
+
<p class="mb-4">Table with alternating row colors using the <code>table-striped</code> class. This improves readability by creating visual separation between rows.</p>
|
|
96
|
+
|
|
97
|
+
<div class="table-responsive">
|
|
98
|
+
<table class="table table-striped">
|
|
99
|
+
<thead>
|
|
100
|
+
<tr>
|
|
101
|
+
<th scope="col" style="width: 3.25rem;"><input type="checkbox"
|
|
102
|
+
class="form-check-input form-check-input-sm ripple" id="chkDemoMd"></th>
|
|
103
|
+
<th scope="col">First</th>
|
|
104
|
+
<th scope="col">Last</th>
|
|
105
|
+
<th scope="col">Handle</th>
|
|
106
|
+
</tr>
|
|
107
|
+
</thead>
|
|
108
|
+
<tbody>
|
|
109
|
+
<tr>
|
|
110
|
+
<th scope="row"><input type="checkbox" class="form-check-input form-check-input-sm ripple" id="chkDemoMd">
|
|
111
|
+
</th>
|
|
112
|
+
<td><a href="javascript:void(0);">Mark</a></td>
|
|
113
|
+
<td>Otto</td>
|
|
114
|
+
<td>@mdo</td>
|
|
115
|
+
</tr>
|
|
116
|
+
<tr>
|
|
117
|
+
<th scope="row"><input type="checkbox" class="form-check-input form-check-input-sm ripple" id="chkDemoMd">
|
|
118
|
+
</th>
|
|
119
|
+
<td><a href="javascript:void(0);">Jacob</a></td>
|
|
120
|
+
<td>Thornton</td>
|
|
121
|
+
<td>@fat</td>
|
|
122
|
+
</tr>
|
|
123
|
+
<tr>
|
|
124
|
+
<th scope="row"><input type="checkbox" class="form-check-input form-check-input-sm ripple" id="chkDemoMd">
|
|
125
|
+
</th>
|
|
126
|
+
<td><a href="javascript:void(0);">John</a></td>
|
|
127
|
+
<td>Doe</td>
|
|
128
|
+
<td>@social</td>
|
|
129
|
+
</tr>
|
|
130
|
+
</tbody>
|
|
131
|
+
</table>
|
|
132
|
+
</div>
|
|
133
|
+
|
|
134
|
+
<app-code-example [htmlCode]="stripedTableCode" title="Striped Table"></app-code-example>
|
|
135
|
+
</section>
|
|
136
|
+
|
|
137
|
+
<section class="demo-section">
|
|
138
|
+
<h2>Striped + Side-Borderless Table</h2>
|
|
139
|
+
<p class="mb-4">Combination of striped rows and side-borderless styling using <code>table-striped side-borderless</code> classes. This creates a modern, clean appearance with enhanced readability.</p>
|
|
140
|
+
|
|
141
|
+
<div class="table-responsive">
|
|
142
|
+
<table class="table table-striped side-borderless">
|
|
143
|
+
<thead>
|
|
144
|
+
<tr>
|
|
145
|
+
<th scope="col" style="width: 3.25rem;"><input type="checkbox"
|
|
146
|
+
class="form-check-input form-check-input-sm ripple" id="chkDemoMd"></th>
|
|
147
|
+
<th scope="col">First</th>
|
|
148
|
+
<th scope="col">Last</th>
|
|
149
|
+
<th scope="col">Handle</th>
|
|
150
|
+
</tr>
|
|
151
|
+
</thead>
|
|
152
|
+
<tbody>
|
|
153
|
+
<tr>
|
|
154
|
+
<th scope="row"><input type="checkbox" class="form-check-input form-check-input-sm ripple" id="chkDemoMd">
|
|
155
|
+
</th>
|
|
156
|
+
<td><a href="javascript:void(0);">Mark</a></td>
|
|
157
|
+
<td>Otto</td>
|
|
158
|
+
<td>@mdo</td>
|
|
159
|
+
</tr>
|
|
160
|
+
<tr>
|
|
161
|
+
<th scope="row"><input type="checkbox" class="form-check-input form-check-input-sm ripple" id="chkDemoMd">
|
|
162
|
+
</th>
|
|
163
|
+
<td><a href="javascript:void(0);">Jacob</a></td>
|
|
164
|
+
<td>Thornton</td>
|
|
165
|
+
<td>@fat</td>
|
|
166
|
+
</tr>
|
|
167
|
+
<tr>
|
|
168
|
+
<th scope="row"><input type="checkbox" class="form-check-input form-check-input-sm ripple" id="chkDemoMd">
|
|
169
|
+
</th>
|
|
170
|
+
<td><a href="javascript:void(0);">John</a></td>
|
|
171
|
+
<td>Doe</td>
|
|
172
|
+
<td>@social</td>
|
|
173
|
+
</tr>
|
|
174
|
+
</tbody>
|
|
175
|
+
</table>
|
|
176
|
+
</div>
|
|
177
|
+
|
|
178
|
+
<app-code-example [htmlCode]="stripedSideBorderlessTableCode" title="Striped + Side-Borderless Table"></app-code-example>
|
|
179
|
+
</section>
|
|
180
|
+
|
|
181
|
+
<section class="demo-section">
|
|
182
|
+
<h2>Table with Links</h2>
|
|
183
|
+
<p class="mb-4">Comprehensive example showing multiple link types within table cells. Includes links for names, email addresses (mailto:), and action links.</p>
|
|
184
|
+
|
|
185
|
+
<div class="table-responsive">
|
|
186
|
+
<table class="table">
|
|
187
|
+
<thead>
|
|
188
|
+
<tr>
|
|
189
|
+
<th scope="col">ID</th>
|
|
190
|
+
<th scope="col">Name</th>
|
|
191
|
+
<th scope="col">Email</th>
|
|
192
|
+
<th scope="col">Department</th>
|
|
193
|
+
<th scope="col">Actions</th>
|
|
194
|
+
</tr>
|
|
195
|
+
</thead>
|
|
196
|
+
<tbody>
|
|
197
|
+
<tr>
|
|
198
|
+
<th scope="row">1</th>
|
|
199
|
+
<td><a href="javascript:void(0);">John Doe</a></td>
|
|
200
|
+
<td><a href="mailto:john.doe@example.com">john.doe@example.com</a></td>
|
|
201
|
+
<td>Engineering</td>
|
|
202
|
+
<td>
|
|
203
|
+
<a href="javascript:void(0);">Edit</a> |
|
|
204
|
+
<a href="javascript:void(0);">Delete</a>
|
|
205
|
+
</td>
|
|
206
|
+
</tr>
|
|
207
|
+
<tr>
|
|
208
|
+
<th scope="row">2</th>
|
|
209
|
+
<td><a href="javascript:void(0);">Jane Smith</a></td>
|
|
210
|
+
<td><a href="mailto:jane.smith@example.com">jane.smith@example.com</a></td>
|
|
211
|
+
<td>Marketing</td>
|
|
212
|
+
<td>
|
|
213
|
+
<a href="javascript:void(0);">Edit</a> |
|
|
214
|
+
<a href="javascript:void(0);">Delete</a>
|
|
215
|
+
</td>
|
|
216
|
+
</tr>
|
|
217
|
+
<tr>
|
|
218
|
+
<th scope="row">3</th>
|
|
219
|
+
<td><a href="javascript:void(0);">Mike Johnson</a></td>
|
|
220
|
+
<td><a href="mailto:mike.johnson@example.com">mike.johnson@example.com</a></td>
|
|
221
|
+
<td>Sales</td>
|
|
222
|
+
<td>
|
|
223
|
+
<a href="javascript:void(0);">Edit</a> |
|
|
224
|
+
<a href="javascript:void(0);">Delete</a>
|
|
225
|
+
</td>
|
|
226
|
+
</tr>
|
|
227
|
+
</tbody>
|
|
228
|
+
</table>
|
|
229
|
+
</div>
|
|
230
|
+
|
|
231
|
+
<app-code-example [htmlCode]="tableWithLinksCode" title="Table with Links in Cells"></app-code-example>
|
|
232
|
+
</section>
|
|
233
|
+
|
|
234
|
+
<section class="demo-section">
|
|
235
|
+
<h2>Responsive Table</h2>
|
|
236
|
+
<p class="mb-4">Table wrapped in <code>table-responsive</code> div to enable horizontal scrolling on smaller screens. Essential for tables with many columns to maintain usability on mobile devices.</p>
|
|
237
|
+
|
|
238
|
+
<div class="table-responsive">
|
|
239
|
+
<table class="table">
|
|
240
|
+
<thead>
|
|
241
|
+
<tr>
|
|
242
|
+
<th scope="col">ID</th>
|
|
243
|
+
<th scope="col">First Name</th>
|
|
244
|
+
<th scope="col">Last Name</th>
|
|
245
|
+
<th scope="col">Email</th>
|
|
246
|
+
<th scope="col">Department</th>
|
|
247
|
+
<th scope="col">Position</th>
|
|
248
|
+
<th scope="col">Hire Date</th>
|
|
249
|
+
<th scope="col">Status</th>
|
|
250
|
+
</tr>
|
|
251
|
+
</thead>
|
|
252
|
+
<tbody>
|
|
253
|
+
<tr>
|
|
254
|
+
<th scope="row">1</th>
|
|
255
|
+
<td>John</td>
|
|
256
|
+
<td>Doe</td>
|
|
257
|
+
<td>john.doe@example.com</td>
|
|
258
|
+
<td>Engineering</td>
|
|
259
|
+
<td>Senior Developer</td>
|
|
260
|
+
<td>2020-01-15</td>
|
|
261
|
+
<td>Active</td>
|
|
262
|
+
</tr>
|
|
263
|
+
<tr>
|
|
264
|
+
<th scope="row">2</th>
|
|
265
|
+
<td>Jane</td>
|
|
266
|
+
<td>Smith</td>
|
|
267
|
+
<td>jane.smith@example.com</td>
|
|
268
|
+
<td>Marketing</td>
|
|
269
|
+
<td>Marketing Manager</td>
|
|
270
|
+
<td>2019-06-20</td>
|
|
271
|
+
<td>Active</td>
|
|
272
|
+
</tr>
|
|
273
|
+
<tr>
|
|
274
|
+
<th scope="row">3</th>
|
|
275
|
+
<td>Mike</td>
|
|
276
|
+
<td>Johnson</td>
|
|
277
|
+
<td>mike.johnson@example.com</td>
|
|
278
|
+
<td>Sales</td>
|
|
279
|
+
<td>Sales Representative</td>
|
|
280
|
+
<td>2021-03-10</td>
|
|
281
|
+
<td>Active</td>
|
|
282
|
+
</tr>
|
|
283
|
+
</tbody>
|
|
284
|
+
</table>
|
|
285
|
+
</div>
|
|
286
|
+
|
|
287
|
+
<app-code-example [htmlCode]="responsiveTableCode" title="Responsive Table Wrapper"></app-code-example>
|
|
288
|
+
</section>
|
|
289
|
+
</div>
|