angular-dumb-lib 0.0.2 → 0.0.5
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/ng-package.json +7 -0
- package/package.json +3 -16
- package/src/lib/angular-dumb-lib.component.spec.ts +21 -0
- package/src/lib/angular-dumb-lib.component.ts +15 -0
- package/src/lib/angular-dumb-lib.module.ts +19 -0
- package/src/lib/angular-dumb-lib.service.spec.ts +16 -0
- package/src/lib/angular-dumb-lib.service.ts +9 -0
- package/src/lib/components/atoms/button/button.component.html +15 -0
- package/src/lib/components/atoms/button/button.component.scss +76 -0
- package/src/lib/components/atoms/button/button.component.ts +33 -0
- package/src/lib/components/atoms/datetime-picker/datetime-picker.component.html +7 -0
- package/src/lib/components/atoms/datetime-picker/datetime-picker.component.scss +24 -0
- package/src/lib/components/atoms/datetime-picker/datetime-picker.component.ts +59 -0
- package/src/lib/components/atoms/file-selection/file-selection.component.html +24 -0
- package/src/lib/components/atoms/file-selection/file-selection.component.scss +35 -0
- package/src/lib/components/atoms/file-selection/file-selection.component.ts +86 -0
- package/src/lib/components/atoms/input/input.component.html +28 -0
- package/src/lib/components/atoms/input/input.component.scss +64 -0
- package/src/lib/components/atoms/input/input.component.ts +57 -0
- package/src/lib/components/atoms/loading/loading.component.html +3 -0
- package/src/lib/components/atoms/loading/loading.component.scss +36 -0
- package/src/lib/components/atoms/loading/loading.component.ts +21 -0
- package/src/lib/components/atoms/selection/selection.component.html +38 -0
- package/src/lib/components/atoms/selection/selection.component.scss +65 -0
- package/src/lib/components/atoms/selection/selection.component.ts +84 -0
- package/src/lib/components/atoms/slider/slider.component.html +14 -0
- package/src/lib/components/atoms/slider/slider.component.scss +50 -0
- package/src/lib/components/atoms/slider/slider.component.ts +37 -0
- package/src/lib/components/atoms/tags/tags.component.html +25 -0
- package/src/lib/components/atoms/tags/tags.component.scss +58 -0
- package/src/lib/components/atoms/tags/tags.component.ts +62 -0
- package/src/lib/components/molecules/cards/cards.component.html +12 -0
- package/src/lib/components/molecules/cards/cards.component.scss +14 -0
- package/src/lib/components/molecules/cards/cards.component.ts +19 -0
- package/src/lib/components/molecules/content-design/content-design.component.html +14 -0
- package/src/lib/components/molecules/content-design/content-design.component.scss +68 -0
- package/src/lib/components/molecules/content-design/content-design.component.ts +32 -0
- package/src/lib/components/molecules/form/form.component.html +22 -0
- package/src/lib/components/molecules/form/form.component.scss +17 -0
- package/src/lib/components/molecules/form/form.component.ts +64 -0
- package/src/lib/components/molecules/modal/modal.component.html +16 -0
- package/src/lib/components/molecules/modal/modal.component.scss +83 -0
- package/src/lib/components/molecules/modal/modal.component.ts +48 -0
- package/src/lib/components/molecules/paginator/paginator.component.html +25 -0
- package/src/lib/components/molecules/paginator/paginator.component.scss +27 -0
- package/src/lib/components/molecules/paginator/paginator.component.ts +126 -0
- package/src/lib/components/molecules/table/table.component.html +45 -0
- package/src/lib/components/molecules/table/table.component.scss +169 -0
- package/src/lib/components/molecules/table/table.component.ts +40 -0
- package/src/lib/components/pages/footer/footer.component.html +32 -0
- package/src/lib/components/pages/footer/footer.component.scss +69 -0
- package/src/lib/components/pages/footer/footer.component.ts +16 -0
- package/src/lib/components/pages/login/login.component.html +10 -0
- package/src/lib/components/pages/login/login.component.scss +32 -0
- package/src/lib/components/pages/login/login.component.ts +32 -0
- package/src/lib/components/pages/menu/menu.component.html +18 -0
- package/src/lib/components/pages/menu/menu.component.scss +87 -0
- package/src/lib/components/pages/menu/menu.component.ts +26 -0
- package/src/lib/components/pages/version/version.component.html +3 -0
- package/src/lib/components/pages/version/version.component.scss +0 -0
- package/src/lib/components/pages/version/version.component.ts +28 -0
- package/src/lib/shared/constants/constant.ts +7 -0
- package/src/lib/shared/enums/enum.ts +68 -0
- package/src/lib/shared/interfaces/interface.ts +64 -0
- package/{public-api.d.ts → src/public-api.ts} +5 -1
- package/tsconfig.lib.json +14 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +14 -0
- package/esm2022/angular-dumb-lib.mjs +0 -5
- package/esm2022/lib/angular-dumb-lib.component.mjs +0 -20
- package/esm2022/lib/angular-dumb-lib.module.mjs +0 -32
- package/esm2022/lib/angular-dumb-lib.service.mjs +0 -15
- package/esm2022/lib/components/atoms/button/button.component.mjs +0 -34
- package/esm2022/lib/components/atoms/input/input.component.mjs +0 -57
- package/esm2022/lib/components/molecules/content-design/content-design.component.mjs +0 -32
- package/esm2022/lib/shared/enums/enum.mjs +0 -69
- package/esm2022/lib/shared/interfaces/interface.mjs +0 -2
- package/esm2022/public-api.mjs +0 -10
- package/fesm2022/angular-dumb-lib.mjs +0 -243
- package/fesm2022/angular-dumb-lib.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/angular-dumb-lib.component.d.ts +0 -5
- package/lib/angular-dumb-lib.module.d.ts +0 -9
- package/lib/angular-dumb-lib.service.d.ts +0 -6
- package/lib/components/atoms/button/button.component.d.ts +0 -12
- package/lib/components/atoms/input/input.component.d.ts +0 -19
- package/lib/components/molecules/content-design/content-design.component.d.ts +0 -12
- package/lib/shared/enums/enum.d.ts +0 -59
- package/lib/shared/interfaces/interface.d.ts +0 -58
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
.footer {
|
|
2
|
+
background-color: #333;
|
|
3
|
+
color: #fff;
|
|
4
|
+
padding: 20px 0;
|
|
5
|
+
text-align: center;
|
|
6
|
+
font-family: 'Roboto', sans-serif;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.footer-container {
|
|
10
|
+
display: flex;
|
|
11
|
+
justify-content: space-around;
|
|
12
|
+
flex-wrap: wrap;
|
|
13
|
+
max-width: 1200px;
|
|
14
|
+
margin: 0 auto;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.footer-section {
|
|
18
|
+
flex: 1;
|
|
19
|
+
margin: 15px;
|
|
20
|
+
min-width: 200px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.footer-section h3 {
|
|
24
|
+
margin-bottom: 15px;
|
|
25
|
+
font-size: 18px;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.footer-section p,
|
|
29
|
+
.footer-section ul,
|
|
30
|
+
.footer-section a {
|
|
31
|
+
font-size: 14px;
|
|
32
|
+
color: #ccc;
|
|
33
|
+
text-decoration: none;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.footer-section ul {
|
|
37
|
+
list-style: none;
|
|
38
|
+
padding: 0;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.footer-section ul li {
|
|
42
|
+
margin: 5px 0;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.footer-section ul li a:hover {
|
|
46
|
+
color: #fff;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.social-icons {
|
|
50
|
+
margin-top: 10px;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.social-icons a {
|
|
54
|
+
display: inline-block;
|
|
55
|
+
color: #ccc;
|
|
56
|
+
margin: 0 10px;
|
|
57
|
+
font-size: 20px;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.social-icons a:hover {
|
|
61
|
+
color: #fff;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.footer-bottom {
|
|
65
|
+
margin-top: 20px;
|
|
66
|
+
border-top: 1px solid #444;
|
|
67
|
+
padding-top: 10px;
|
|
68
|
+
font-size: 12px;
|
|
69
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Component, OnInit } from '@angular/core';
|
|
2
|
+
|
|
3
|
+
@Component({
|
|
4
|
+
selector: 'app-footer',
|
|
5
|
+
standalone: true,
|
|
6
|
+
templateUrl: './footer.component.html',
|
|
7
|
+
styleUrls: ['./footer.component.scss']
|
|
8
|
+
})
|
|
9
|
+
export class FooterComponent implements OnInit {
|
|
10
|
+
|
|
11
|
+
constructor() { }
|
|
12
|
+
|
|
13
|
+
ngOnInit() {
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
.login-button {
|
|
2
|
+
width: 100%;
|
|
3
|
+
align-items: center;
|
|
4
|
+
justify-content: center;
|
|
5
|
+
display: flex;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.login-page {
|
|
9
|
+
height: 100%;
|
|
10
|
+
width: 100%;
|
|
11
|
+
flex-direction: row;
|
|
12
|
+
display: flex;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.icon-area {
|
|
16
|
+
width: 38%;
|
|
17
|
+
background-color: #2a76d7;
|
|
18
|
+
height: 100%;
|
|
19
|
+
display: flex;;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.icon {
|
|
23
|
+
width: 100%;
|
|
24
|
+
align-items: center;
|
|
25
|
+
justify-content: center;
|
|
26
|
+
display: flex;
|
|
27
|
+
span {
|
|
28
|
+
color: white;
|
|
29
|
+
font-size: xxx-large;
|
|
30
|
+
font-family: fantasy;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, Input, OnInit, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';
|
|
3
|
+
|
|
4
|
+
@Component({
|
|
5
|
+
selector: 'app-login',
|
|
6
|
+
standalone: true,
|
|
7
|
+
templateUrl: './login.component.html',
|
|
8
|
+
styleUrls: ['./login.component.scss'],
|
|
9
|
+
imports: [CommonModule]
|
|
10
|
+
})
|
|
11
|
+
export class LoginComponent implements OnInit {
|
|
12
|
+
// Input property to accept a TemplateRef from the parent component
|
|
13
|
+
@Input() buttonTemplate!: TemplateRef<any>;
|
|
14
|
+
@ViewChild('buttonContainer', { read: ViewContainerRef }) buttonContainer!: ViewContainerRef;
|
|
15
|
+
|
|
16
|
+
constructor() {
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
ngOnInit(): void {
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// After the view initializes, we render the button
|
|
23
|
+
ngAfterViewInit(): void {
|
|
24
|
+
// Clear any existing content in the container
|
|
25
|
+
this.buttonContainer.clear();
|
|
26
|
+
|
|
27
|
+
// Render the provided button template inside the container
|
|
28
|
+
if (this.buttonTemplate) {
|
|
29
|
+
this.buttonContainer.createEmbeddedView(this.buttonTemplate);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<nav class="menu" [ngClass]="{'vertical': isVertical, 'horizontal': !isVertical}">
|
|
2
|
+
<div class="logo">
|
|
3
|
+
<img src="{{logoUrl}}" alt="Logo" />
|
|
4
|
+
</div>
|
|
5
|
+
<ul>
|
|
6
|
+
<li *ngFor="let item of menuItems">
|
|
7
|
+
<a [href]="item.route">{{ item.label }}</a>
|
|
8
|
+
</li>
|
|
9
|
+
</ul>
|
|
10
|
+
<div class="actions">
|
|
11
|
+
<div class="language">
|
|
12
|
+
<span class="material-icons" aria-hidden="true">language</span>
|
|
13
|
+
</div>
|
|
14
|
+
<div class="login">
|
|
15
|
+
<span class="material-icons" aria-hidden="true">person</span>
|
|
16
|
+
</div>
|
|
17
|
+
</div>
|
|
18
|
+
</nav>
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: flex;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.menu {
|
|
6
|
+
background-color: #f8f9fa;
|
|
7
|
+
padding: 10px;
|
|
8
|
+
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
|
|
9
|
+
|
|
10
|
+
&.vertical {
|
|
11
|
+
display: flex;
|
|
12
|
+
justify-content: space-between;
|
|
13
|
+
flex-direction: column;
|
|
14
|
+
width: 200px;
|
|
15
|
+
|
|
16
|
+
ul {
|
|
17
|
+
list-style-type: none;
|
|
18
|
+
padding: 0;
|
|
19
|
+
height: 100%;
|
|
20
|
+
|
|
21
|
+
li {
|
|
22
|
+
padding: 8px 0;
|
|
23
|
+
|
|
24
|
+
&:hover {
|
|
25
|
+
background-color: #e9ecef;
|
|
26
|
+
cursor: pointer;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.actions {
|
|
32
|
+
display: flex;
|
|
33
|
+
flex-direction: column;
|
|
34
|
+
align-items: baseline;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
&.horizontal {
|
|
39
|
+
display: flex;
|
|
40
|
+
flex-direction: row;
|
|
41
|
+
width: 100%;
|
|
42
|
+
height: 80px;
|
|
43
|
+
|
|
44
|
+
ul {
|
|
45
|
+
display: flex;
|
|
46
|
+
list-style-type: none;
|
|
47
|
+
padding: 0;
|
|
48
|
+
margin: 0;
|
|
49
|
+
flex-grow: 1;
|
|
50
|
+
align-items: center;
|
|
51
|
+
|
|
52
|
+
li {
|
|
53
|
+
padding: 8px 16px; /* Adjust for horizontal spacing */
|
|
54
|
+
|
|
55
|
+
&:hover {
|
|
56
|
+
background-color: #e9ecef;
|
|
57
|
+
cursor: pointer;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.logo {
|
|
64
|
+
img {
|
|
65
|
+
width: 100%;
|
|
66
|
+
height: 100%; /* Maintain aspect ratio */
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.actions {
|
|
71
|
+
display: flex;
|
|
72
|
+
align-items: center;
|
|
73
|
+
|
|
74
|
+
.language,
|
|
75
|
+
.login {
|
|
76
|
+
margin-left: 10px;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
a {
|
|
82
|
+
text-decoration: none; // Remove the underline from links
|
|
83
|
+
color: inherit; // Inherit color from parent element
|
|
84
|
+
display: block; // Make the link block-level so it fills the entire list item
|
|
85
|
+
padding: 10px; // Add some padding for clickable area
|
|
86
|
+
transition: background-color 0.3s ease; // Optional: smooth background color transition
|
|
87
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Component, Input, OnInit } from '@angular/core';
|
|
2
|
+
import { IMenuItem } from '../../../shared/interfaces/interface';
|
|
3
|
+
import { MenuDirection } from '../../../shared/enums/enum';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
|
|
6
|
+
@Component({
|
|
7
|
+
selector: 'app-menu',
|
|
8
|
+
standalone: true,
|
|
9
|
+
templateUrl: './menu.component.html',
|
|
10
|
+
styleUrls: ['./menu.component.scss'],
|
|
11
|
+
imports: [CommonModule]
|
|
12
|
+
})
|
|
13
|
+
export class MenuComponent implements OnInit {
|
|
14
|
+
@Input() menuItems: IMenuItem[] = [];
|
|
15
|
+
@Input() logoUrl: string = "";
|
|
16
|
+
@Input() direction: MenuDirection = MenuDirection.horizontal;
|
|
17
|
+
|
|
18
|
+
constructor() { }
|
|
19
|
+
|
|
20
|
+
ngOnInit() {
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
get isVertical(): boolean {
|
|
24
|
+
return this.direction === MenuDirection.vertical;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, OnInit } from '@angular/core';
|
|
3
|
+
import { ContentDesignComponent } from 'angular-dumb-lib';
|
|
4
|
+
import { IContentDesign } from '../../../shared/interfaces/interface';
|
|
5
|
+
import { ContentDirection } from '../../../shared/enums/enum';
|
|
6
|
+
|
|
7
|
+
@Component({
|
|
8
|
+
selector: 'app-version',
|
|
9
|
+
standalone: true,
|
|
10
|
+
templateUrl: './version.component.html',
|
|
11
|
+
styleUrls: ['./version.component.scss'],
|
|
12
|
+
imports: [CommonModule, ContentDesignComponent]
|
|
13
|
+
})
|
|
14
|
+
export class VersionComponent implements OnInit {
|
|
15
|
+
content: IContentDesign;
|
|
16
|
+
constructor() {
|
|
17
|
+
this.content = {
|
|
18
|
+
title: 'Card 2 Title',
|
|
19
|
+
content: 'This is an example of left-aligned content.',
|
|
20
|
+
coverImage: 'https://via.placeholder.com/150',
|
|
21
|
+
contentDirection: ContentDirection.right,
|
|
22
|
+
template: null
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
ngOnInit() {
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { InputType } from "../enums/enum";
|
|
2
|
+
|
|
3
|
+
export const textualInputTypes: InputType[] =
|
|
4
|
+
[InputType.text, InputType.password, InputType.email, InputType.url,
|
|
5
|
+
InputType.tel, InputType.search, InputType.number, InputType.range,
|
|
6
|
+
InputType.hidden, InputType.textarea, InputType.richText, InputType.image];
|
|
7
|
+
export const selectionInputTypes: InputType[] = [InputType.checkbox, InputType.radio, InputType.select]
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
|
|
2
|
+
export enum DesignType {
|
|
3
|
+
normal = 'normal',
|
|
4
|
+
contrast = 'contrast'
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export enum ButtonType {
|
|
8
|
+
submit = 'submit',
|
|
9
|
+
button = 'button'
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export enum InputGroupType {
|
|
13
|
+
textual = 'textual',
|
|
14
|
+
datetime = 'datetime',
|
|
15
|
+
selection = 'selection',
|
|
16
|
+
file = 'file'
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export enum InputDirection {
|
|
20
|
+
horizontal = 'horizontal',
|
|
21
|
+
vertical = 'vertical'
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export enum InputType {
|
|
25
|
+
image = 'image',
|
|
26
|
+
text = 'text',
|
|
27
|
+
richText = 'richText',
|
|
28
|
+
password = 'password',
|
|
29
|
+
email = 'email',
|
|
30
|
+
url = 'url',
|
|
31
|
+
tel = 'tel',
|
|
32
|
+
search = 'search',
|
|
33
|
+
number = 'number',
|
|
34
|
+
range = 'range',
|
|
35
|
+
hidden = 'hidden',
|
|
36
|
+
textarea = 'textarea',
|
|
37
|
+
datetime = 'datetime',
|
|
38
|
+
checkbox = 'checkbox',
|
|
39
|
+
radio = 'radio',
|
|
40
|
+
select = 'select',
|
|
41
|
+
file = 'file'
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export enum ContentDirection {
|
|
45
|
+
left = 'left',
|
|
46
|
+
right = 'right',
|
|
47
|
+
up = 'up',
|
|
48
|
+
down = 'down'
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export enum SelectionType {
|
|
52
|
+
dropdown = 'dropdown',
|
|
53
|
+
radio = 'radio',
|
|
54
|
+
checkbox = 'checkbox'
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export enum LoadingSize {
|
|
58
|
+
Xbig = 'xbig',
|
|
59
|
+
Big = 'big',
|
|
60
|
+
Medium = 'medium',
|
|
61
|
+
Small = 'small',
|
|
62
|
+
Xsmall = 'xsmall'
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export enum MenuDirection {
|
|
66
|
+
vertical = 'vertical',
|
|
67
|
+
horizontal = 'horizontal'
|
|
68
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { TemplateRef } from "@angular/core";
|
|
2
|
+
import { ButtonType, ContentDirection, DesignType, InputDirection, InputType } from "../enums/enum";
|
|
3
|
+
|
|
4
|
+
export interface IButtonConfig {
|
|
5
|
+
isDisabled?: boolean;
|
|
6
|
+
isActive?: boolean;
|
|
7
|
+
designType?: DesignType;
|
|
8
|
+
label?: string;
|
|
9
|
+
iconValue?: string;
|
|
10
|
+
type?: ButtonType;
|
|
11
|
+
action?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface IInputConfig {
|
|
15
|
+
required: boolean;
|
|
16
|
+
label?: string;
|
|
17
|
+
name: string;
|
|
18
|
+
placeholder?: string;
|
|
19
|
+
type?: InputType; // Optional, defaults to InputType.text
|
|
20
|
+
direction?: InputDirection; // Optional, defaults to InputDirection.vertical
|
|
21
|
+
isValid?: boolean;
|
|
22
|
+
options?: IDropdownOption[];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface IContentDesign {
|
|
26
|
+
name?: string;
|
|
27
|
+
coverImage?: string;
|
|
28
|
+
issuedDate?: string;
|
|
29
|
+
title?: string;
|
|
30
|
+
contentDirection?: ContentDirection;
|
|
31
|
+
content?: string;
|
|
32
|
+
template: TemplateRef<unknown> | null;
|
|
33
|
+
button?: IButtonConfig;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface IDropdownOption {
|
|
37
|
+
label: string; // The display label of the option
|
|
38
|
+
value: any; // The underlying value of the option
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export interface IMenuItem {
|
|
42
|
+
label: string,
|
|
43
|
+
route: string
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface IModalEvent {
|
|
47
|
+
isDialog: boolean;
|
|
48
|
+
isModalVisible: boolean;
|
|
49
|
+
template: TemplateRef<unknown> | null;
|
|
50
|
+
title: string;
|
|
51
|
+
params?: { [key: string]: any };
|
|
52
|
+
onOk?: ()=> void;
|
|
53
|
+
onCancel?: ()=> void;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export interface IPaginator {
|
|
57
|
+
itemsPerPage: number;
|
|
58
|
+
selectedPage: number;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export interface IDataColumnConfig {
|
|
62
|
+
field: string;
|
|
63
|
+
name: string
|
|
64
|
+
}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of angular-dumb-lib
|
|
3
|
+
*/
|
|
4
|
+
|
|
1
5
|
export * from './lib/angular-dumb-lib.service';
|
|
2
6
|
export * from './lib/angular-dumb-lib.component';
|
|
3
7
|
export * from './lib/angular-dumb-lib.module';
|
|
4
8
|
export * from './lib/components/atoms/button/button.component';
|
|
5
9
|
export * from './lib/components/atoms/input/input.component';
|
|
6
|
-
export * from './lib/components/molecules/content-design/content-design.component'
|
|
10
|
+
export * from './lib/components/molecules/content-design/content-design.component'
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
|
2
|
+
{
|
|
3
|
+
"extends": "../../tsconfig.json",
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"outDir": "../../out-tsc/lib",
|
|
6
|
+
"declaration": true,
|
|
7
|
+
"declarationMap": true,
|
|
8
|
+
"inlineSources": true,
|
|
9
|
+
"types": []
|
|
10
|
+
},
|
|
11
|
+
"exclude": [
|
|
12
|
+
"**/*.spec.ts"
|
|
13
|
+
]
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
|
2
|
+
{
|
|
3
|
+
"extends": "../../tsconfig.json",
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"outDir": "../../out-tsc/spec",
|
|
6
|
+
"types": [
|
|
7
|
+
"jasmine"
|
|
8
|
+
]
|
|
9
|
+
},
|
|
10
|
+
"include": [
|
|
11
|
+
"**/*.spec.ts",
|
|
12
|
+
"**/*.d.ts"
|
|
13
|
+
]
|
|
14
|
+
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1kdW1iLWxpYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZHVtYi1saWIvc3JjL2FuZ3VsYXItZHVtYi1saWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
class AngularDumbLibComponent {
|
|
4
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDumbLibComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AngularDumbLibComponent, selector: "lib-angular-dumb-lib", ngImport: i0, template: `
|
|
6
|
-
<p>
|
|
7
|
-
angular-dumb-lib works!
|
|
8
|
-
</p>
|
|
9
|
-
`, isInline: true }); }
|
|
10
|
-
}
|
|
11
|
-
export { AngularDumbLibComponent };
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDumbLibComponent, decorators: [{
|
|
13
|
-
type: Component,
|
|
14
|
-
args: [{ selector: 'lib-angular-dumb-lib', template: `
|
|
15
|
-
<p>
|
|
16
|
-
angular-dumb-lib works!
|
|
17
|
-
</p>
|
|
18
|
-
` }]
|
|
19
|
-
}] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1kdW1iLWxpYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWR1bWItbGliL3NyYy9saWIvYW5ndWxhci1kdW1iLWxpYi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFMUMsTUFVYSx1QkFBdUI7K0dBQXZCLHVCQUF1QjttR0FBdkIsdUJBQXVCLDREQVJ4Qjs7OztHQUlUOztTQUlVLHVCQUF1Qjs0RkFBdkIsdUJBQXVCO2tCQVZuQyxTQUFTOytCQUNFLHNCQUFzQixZQUN0Qjs7OztHQUlUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1hbmd1bGFyLWR1bWItbGliJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8cD5cbiAgICAgIGFuZ3VsYXItZHVtYi1saWIgd29ya3MhXG4gICAgPC9wPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFyRHVtYkxpYkNvbXBvbmVudCB7XG5cbn1cbiJdfQ==
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { AngularDumbLibComponent } from './angular-dumb-lib.component';
|
|
3
|
-
import { CommonModule } from '@angular/common';
|
|
4
|
-
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
class AngularDumbLibModule {
|
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDumbLibModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: AngularDumbLibModule, declarations: [AngularDumbLibComponent], imports: [CommonModule,
|
|
9
|
-
FormsModule,
|
|
10
|
-
ReactiveFormsModule], exports: [AngularDumbLibComponent] }); }
|
|
11
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDumbLibModule, imports: [CommonModule,
|
|
12
|
-
FormsModule,
|
|
13
|
-
ReactiveFormsModule] }); }
|
|
14
|
-
}
|
|
15
|
-
export { AngularDumbLibModule };
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDumbLibModule, decorators: [{
|
|
17
|
-
type: NgModule,
|
|
18
|
-
args: [{
|
|
19
|
-
declarations: [
|
|
20
|
-
AngularDumbLibComponent,
|
|
21
|
-
],
|
|
22
|
-
imports: [
|
|
23
|
-
CommonModule,
|
|
24
|
-
FormsModule,
|
|
25
|
-
ReactiveFormsModule,
|
|
26
|
-
],
|
|
27
|
-
exports: [
|
|
28
|
-
AngularDumbLibComponent,
|
|
29
|
-
]
|
|
30
|
-
}]
|
|
31
|
-
}] });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1kdW1iLWxpYi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWR1bWItbGliL3NyYy9saWIvYW5ndWxhci1kdW1iLWxpYi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUVsRSxNQWFhLG9CQUFvQjsrR0FBcEIsb0JBQW9CO2dIQUFwQixvQkFBb0IsaUJBWDdCLHVCQUF1QixhQUd2QixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQixhQUduQix1QkFBdUI7Z0hBR2Qsb0JBQW9CLFlBUjdCLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1COztTQU1WLG9CQUFvQjs0RkFBcEIsb0JBQW9CO2tCQWJoQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWix1QkFBdUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3FCQUNwQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsdUJBQXVCO3FCQUN4QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFuZ3VsYXJEdW1iTGliQ29tcG9uZW50IH0gZnJvbSAnLi9hbmd1bGFyLWR1bWItbGliLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIEFuZ3VsYXJEdW1iTGliQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgQW5ndWxhckR1bWJMaWJDb21wb25lbnQsXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5ndWxhckR1bWJMaWJNb2R1bGUgeyB9XHJcbiJdfQ==
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
class AngularDumbLibService {
|
|
4
|
-
constructor() { }
|
|
5
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDumbLibService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDumbLibService, providedIn: 'root' }); }
|
|
7
|
-
}
|
|
8
|
-
export { AngularDumbLibService };
|
|
9
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDumbLibService, decorators: [{
|
|
10
|
-
type: Injectable,
|
|
11
|
-
args: [{
|
|
12
|
-
providedIn: 'root'
|
|
13
|
-
}]
|
|
14
|
-
}], ctorParameters: function () { return []; } });
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1kdW1iLWxpYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1kdW1iLWxpYi9zcmMvbGliL2FuZ3VsYXItZHVtYi1saWIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQyxNQUdhLHFCQUFxQjtJQUVoQyxnQkFBZ0IsQ0FBQzsrR0FGTixxQkFBcUI7bUhBQXJCLHFCQUFxQixjQUZwQixNQUFNOztTQUVQLHFCQUFxQjs0RkFBckIscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQW5ndWxhckR1bWJMaWJTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxufVxuIl19
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { ButtonType, DesignType } from '../../../shared/enums/enum';
|
|
3
|
-
import { CommonModule } from '@angular/common';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/common";
|
|
6
|
-
class ButtonComponent {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.clickEvent = new EventEmitter();
|
|
9
|
-
}
|
|
10
|
-
ngOnInit() {
|
|
11
|
-
this.config = {
|
|
12
|
-
isDisabled: false,
|
|
13
|
-
isActive: false,
|
|
14
|
-
designType: DesignType.normal,
|
|
15
|
-
type: ButtonType.submit,
|
|
16
|
-
...this.config,
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
onButtonClick() {
|
|
20
|
-
this.clickEvent.emit();
|
|
21
|
-
}
|
|
22
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ButtonComponent, isStandalone: true, selector: "app-button", inputs: { config: "config" }, outputs: { clickEvent: "clickEvent" }, ngImport: i0, template: "<button\r\n type=\"{{config.type}}\"\r\n class=\"btn btn-primary\"\r\n [disabled]=\"config.isDisabled\"\r\n [ngClass]=\"{'active': config.isActive,\r\n 'normal': config.designType === 'normal',\r\n 'contrast': config.designType === 'contrast'}\"\r\n (click)=\"onButtonClick()\">\r\n <div class=\"button-content\">\r\n <ng-container *ngIf=\"config.iconValue\">\r\n <i class=\"material-icons\" data-toggle=\"tooltip\" title=\"Delete\">{{config.iconValue}}</i>\r\n </ng-container>\r\n <span>{{ config.label }}</span>\r\n </div>\r\n</button>\r\n", styles: ["button.btn.btn-primary{padding:.5rem 1rem;border:none;border-radius:.25rem;cursor:pointer;height:3rem}button.btn.btn-primary .button-content{display:flex;flex-direction:row;justify-content:center;align-items:center;height:100%}button.btn.btn-primary:disabled{background-color:#ccc!important;color:#666!important;cursor:not-allowed!important;border-color:#666!important}button.btn.btn-primary.normal{background-color:#007bff;color:#fff}button.btn.btn-primary.normal:hover:not(:disabled){background-color:#0056d2}button.btn.btn-primary.contrast{color:#007bff;border:1px solid #4A90E2}button.btn.btn-primary.contrast:hover:not(:disabled){background-color:#e6f0fa;color:#1a1a1a}button.btn.btn-primary.active{background-color:#003d99;color:#fff}button.btn.btn-primary.active:hover:not(:disabled){background-color:#0056d2;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
24
|
-
}
|
|
25
|
-
export { ButtonComponent };
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
27
|
-
type: Component,
|
|
28
|
-
args: [{ selector: 'app-button', standalone: true, imports: [CommonModule], template: "<button\r\n type=\"{{config.type}}\"\r\n class=\"btn btn-primary\"\r\n [disabled]=\"config.isDisabled\"\r\n [ngClass]=\"{'active': config.isActive,\r\n 'normal': config.designType === 'normal',\r\n 'contrast': config.designType === 'contrast'}\"\r\n (click)=\"onButtonClick()\">\r\n <div class=\"button-content\">\r\n <ng-container *ngIf=\"config.iconValue\">\r\n <i class=\"material-icons\" data-toggle=\"tooltip\" title=\"Delete\">{{config.iconValue}}</i>\r\n </ng-container>\r\n <span>{{ config.label }}</span>\r\n </div>\r\n</button>\r\n", styles: ["button.btn.btn-primary{padding:.5rem 1rem;border:none;border-radius:.25rem;cursor:pointer;height:3rem}button.btn.btn-primary .button-content{display:flex;flex-direction:row;justify-content:center;align-items:center;height:100%}button.btn.btn-primary:disabled{background-color:#ccc!important;color:#666!important;cursor:not-allowed!important;border-color:#666!important}button.btn.btn-primary.normal{background-color:#007bff;color:#fff}button.btn.btn-primary.normal:hover:not(:disabled){background-color:#0056d2}button.btn.btn-primary.contrast{color:#007bff;border:1px solid #4A90E2}button.btn.btn-primary.contrast:hover:not(:disabled){background-color:#e6f0fa;color:#1a1a1a}button.btn.btn-primary.active{background-color:#003d99;color:#fff}button.btn.btn-primary.active:hover:not(:disabled){background-color:#0056d2;color:#fff}\n"] }]
|
|
29
|
-
}], ctorParameters: function () { return []; }, propDecorators: { config: [{
|
|
30
|
-
type: Input
|
|
31
|
-
}], clickEvent: [{
|
|
32
|
-
type: Output
|
|
33
|
-
}] } });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZHVtYi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1kdW1iLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFFL0MsTUFPYSxlQUFlO0lBSzFCO1FBRlUsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFaEMsQ0FBQztJQUVqQixRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsVUFBVSxFQUFFLFVBQVUsQ0FBQyxNQUFNO1lBQzdCLElBQUksRUFBRSxVQUFVLENBQUMsTUFBTTtZQUN2QixHQUFHLElBQUksQ0FBQyxNQUFNO1NBQ2YsQ0FBQTtJQUNILENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDOytHQW5CVSxlQUFlO21HQUFmLGVBQWUsMklDWjVCLGdsQkFlQSxzM0JETFksWUFBWTs7U0FFWCxlQUFlOzRGQUFmLGVBQWU7a0JBUDNCLFNBQVM7K0JBQ0UsWUFBWSxjQUNWLElBQUksV0FHUCxDQUFDLFlBQVksQ0FBQzswRUFHZCxNQUFNO3NCQUFkLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQnV0dG9uVHlwZSwgRGVzaWduVHlwZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9lbnVtcy9lbnVtJztcclxuaW1wb3J0IHsgSUJ1dHRvbkNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9pbnRlcmZhY2VzL2ludGVyZmFjZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1idXR0b24nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYnV0dG9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgY29uZmlnITogSUJ1dHRvbkNvbmZpZztcclxuXHJcbiAgQE91dHB1dCgpIGNsaWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jb25maWcgPSB7XHJcbiAgICAgIGlzRGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgIGRlc2lnblR5cGU6IERlc2lnblR5cGUubm9ybWFsLFxyXG4gICAgICB0eXBlOiBCdXR0b25UeXBlLnN1Ym1pdCxcclxuICAgICAgLi4udGhpcy5jb25maWcsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkJ1dHRvbkNsaWNrKCkge1xyXG4gICAgdGhpcy5jbGlja0V2ZW50LmVtaXQoKTtcclxuICB9XHJcbn1cclxuIiwiPGJ1dHRvblxyXG4gIHR5cGU9XCJ7e2NvbmZpZy50eXBlfX1cIlxyXG4gIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcclxuICBbZGlzYWJsZWRdPVwiY29uZmlnLmlzRGlzYWJsZWRcIlxyXG4gIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogY29uZmlnLmlzQWN0aXZlLFxyXG4gICAgICAgICAgICAnbm9ybWFsJzogY29uZmlnLmRlc2lnblR5cGUgPT09ICdub3JtYWwnLFxyXG4gICAgICAgICAgICAnY29udHJhc3QnOiBjb25maWcuZGVzaWduVHlwZSA9PT0gJ2NvbnRyYXN0J31cIlxyXG4gIChjbGljayk9XCJvbkJ1dHRvbkNsaWNrKClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGVudFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLmljb25WYWx1ZVwiPlxyXG4gICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCIgZGF0YS10b2dnbGU9XCJ0b29sdGlwXCIgdGl0bGU9XCJEZWxldGVcIj57e2NvbmZpZy5pY29uVmFsdWV9fTwvaT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPHNwYW4+e3sgY29uZmlnLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbjwvYnV0dG9uPlxyXG4iXX0=
|