ng-ipa-library 0.7.5 → 0.7.6
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/karma.conf.js +44 -0
- package/ng-package.json +43 -0
- package/package.json +24 -31
- package/src/lib/core/components/loading/loading.component.html +3 -0
- package/src/lib/core/components/loading/loading.component.scss +3 -0
- package/src/lib/core/components/loading/loading.component.ts +23 -0
- package/src/lib/core/interceptors/error.interceptor.ts +61 -0
- package/src/lib/core/interceptors/loading.interceptor.ts +69 -0
- package/src/lib/core/interceptors/token.interceptor.ts +77 -0
- package/src/lib/core/services/auth.service.ts +48 -0
- package/src/lib/core/services/error.service.ts +19 -0
- package/src/lib/core/services/loader.service.ts +21 -0
- package/src/lib/generate-form/generate-form.component.html +85 -0
- package/src/lib/generate-form/generate-form.component.scss +0 -0
- package/src/lib/generate-form/generate-form.component.ts +119 -0
- package/src/lib/ipa-form/datepicker/datepicker.component.html +21 -0
- package/src/lib/ipa-form/datepicker/datepicker.component.scss +13 -0
- package/src/lib/ipa-form/datepicker/datepicker.component.ts +67 -0
- package/src/lib/ipa-form/datepicker/gregorian-datepicker/gregorian-datepicker.component.ts +15 -0
- package/src/lib/ipa-form/datepicker/gregorian-datepicker/gregorian18n.ts +38 -0
- package/src/lib/ipa-form/datepicker/hijri-datepicker/IslamicI18n.ts +38 -0
- package/src/lib/ipa-form/datepicker/hijri-datepicker/hijri-datepicker.component.ts +14 -0
- package/src/lib/ipa-form/dropdown-input/dropdown-input.component.html +22 -0
- package/src/lib/ipa-form/dropdown-input/dropdown-input.component.scss +0 -0
- package/src/lib/ipa-form/dropdown-input/dropdown-input.component.ts +68 -0
- package/src/lib/ipa-form/file-upload/file-upload.component.html +37 -0
- package/src/lib/ipa-form/file-upload/file-upload.component.scss +45 -0
- package/src/lib/ipa-form/file-upload/file-upload.component.ts +109 -0
- package/src/lib/ipa-form/ipa-form.service.ts +294 -0
- package/src/lib/ipa-form/recaptcha/recaptcha.component.html +3 -0
- package/src/lib/ipa-form/recaptcha/recaptcha.component.scss +0 -0
- package/src/lib/ipa-form/recaptcha/recaptcha.component.ts +42 -0
- package/src/lib/ipa-form/text-input/text-input.component.html +10 -0
- package/src/lib/ipa-form/text-input/text-input.component.scss +0 -0
- package/src/lib/ipa-form/text-input/text-input.component.ts +69 -0
- package/src/lib/ipa-form/textarea-input/textarea-input.component.html +11 -0
- package/src/lib/ipa-form/textarea-input/textarea-input.component.scss +0 -0
- package/src/lib/ipa-form/textarea-input/textarea-input.component.ts +69 -0
- package/{lib/models/apiException.d.ts → src/lib/models/apiException.ts} +2 -1
- package/src/lib/models/apiResponse.ts +4 -0
- package/src/lib/models/breadcrumbs.model.ts +4 -0
- package/src/lib/models/decodedToken.model.ts +6 -0
- package/src/lib/models/exceptionUrl.model.ts +4 -0
- package/src/lib/models/generateForm.model.ts +29 -0
- package/src/lib/models/pagedResult.ts +4 -0
- package/src/lib/models/user.model.ts +7 -0
- package/src/lib/ng-ipa-library.component.ts +15 -0
- package/src/lib/ng-ipa-library.module.ts +63 -0
- package/src/lib/pipes/hijri-date.pipe.ts +15 -0
- package/src/lib/pipes/pipes.module.ts +8 -0
- package/src/lib/services/breadcrumbs.service.ts +189 -0
- package/src/lib/services/common.service.ts +63 -0
- package/src/lib/share-button/share-button.component.html +3 -0
- package/src/lib/share-button/share-button.component.scss +0 -0
- package/src/lib/share-button/share-button.component.ts +23 -0
- package/src/lib/share-button/share-button.module.ts +32 -0
- package/{public-api.d.ts → src/public-api.ts} +16 -1
- package/src/test.ts +26 -0
- package/tsconfig.lib.json +20 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +17 -0
- package/bundles/ng-ipa-library.umd.js +0 -2098
- package/bundles/ng-ipa-library.umd.js.map +0 -1
- package/esm2015/lib/core/components/loading/loading.component.js +0 -27
- package/esm2015/lib/core/interceptors/error.interceptor.js +0 -46
- package/esm2015/lib/core/interceptors/loading.interceptor.js +0 -58
- package/esm2015/lib/core/interceptors/token.interceptor.js +0 -69
- package/esm2015/lib/core/services/auth.service.js +0 -48
- package/esm2015/lib/core/services/error.service.js +0 -22
- package/esm2015/lib/core/services/loader.service.js +0 -24
- package/esm2015/lib/generate-form/generate-form.component.js +0 -120
- package/esm2015/lib/ipa-form/datepicker/datepicker.component.js +0 -70
- package/esm2015/lib/ipa-form/datepicker/gregorian-datepicker/gregorian-datepicker.component.js +0 -28
- package/esm2015/lib/ipa-form/datepicker/gregorian-datepicker/gregorian18n.js +0 -38
- package/esm2015/lib/ipa-form/datepicker/hijri-datepicker/IslamicI18n.js +0 -38
- package/esm2015/lib/ipa-form/datepicker/hijri-datepicker/hijri-datepicker.component.js +0 -28
- package/esm2015/lib/ipa-form/dropdown-input/dropdown-input.component.js +0 -81
- package/esm2015/lib/ipa-form/file-upload/file-upload.component.js +0 -128
- package/esm2015/lib/ipa-form/ipa-form.service.js +0 -251
- package/esm2015/lib/ipa-form/recaptcha/recaptcha.component.js +0 -59
- package/esm2015/lib/ipa-form/text-input/text-input.component.js +0 -76
- package/esm2015/lib/ipa-form/textarea-input/textarea-input.component.js +0 -73
- package/esm2015/lib/models/apiException.js +0 -2
- package/esm2015/lib/models/apiResponse.js +0 -2
- package/esm2015/lib/models/breadcrumbs.model.js +0 -2
- package/esm2015/lib/models/decodedToken.model.js +0 -2
- package/esm2015/lib/models/exceptionUrl.model.js +0 -2
- package/esm2015/lib/models/generateForm.model.js +0 -2
- package/esm2015/lib/models/pagedResult.js +0 -2
- package/esm2015/lib/models/user.model.js +0 -2
- package/esm2015/lib/ng-ipa-library.module.js +0 -109
- package/esm2015/lib/pipes/hijri-date.pipe.js +0 -18
- package/esm2015/lib/pipes/pipes.module.js +0 -16
- package/esm2015/lib/services/breadcrumbs.service.js +0 -151
- package/esm2015/lib/services/common.service.js +0 -66
- package/esm2015/lib/share-button/share-button.component.js +0 -37
- package/esm2015/lib/share-button/share-button.module.js +0 -52
- package/esm2015/ng-ipa-library.js +0 -5
- package/esm2015/public-api.js +0 -40
- package/fesm2015/ng-ipa-library.js +0 -1630
- package/fesm2015/ng-ipa-library.js.map +0 -1
- package/lib/core/components/loading/loading.component.d.ts +0 -12
- package/lib/core/interceptors/error.interceptor.d.ts +0 -14
- package/lib/core/interceptors/loading.interceptor.d.ts +0 -14
- package/lib/core/interceptors/token.interceptor.d.ts +0 -15
- package/lib/core/services/auth.service.d.ts +0 -15
- package/lib/core/services/error.service.d.ts +0 -10
- package/lib/core/services/loader.service.d.ts +0 -12
- package/lib/generate-form/generate-form.component.d.ts +0 -32
- package/lib/ipa-form/datepicker/datepicker.component.d.ts +0 -31
- package/lib/ipa-form/datepicker/gregorian-datepicker/gregorian-datepicker.component.d.ts +0 -6
- package/lib/ipa-form/datepicker/gregorian-datepicker/gregorian18n.d.ts +0 -11
- package/lib/ipa-form/datepicker/hijri-datepicker/IslamicI18n.d.ts +0 -11
- package/lib/ipa-form/datepicker/hijri-datepicker/hijri-datepicker.component.d.ts +0 -6
- package/lib/ipa-form/dropdown-input/dropdown-input.component.d.ts +0 -31
- package/lib/ipa-form/file-upload/file-upload.component.d.ts +0 -36
- package/lib/ipa-form/ipa-form.service.d.ts +0 -49
- package/lib/ipa-form/recaptcha/recaptcha.component.d.ts +0 -22
- package/lib/ipa-form/text-input/text-input.component.d.ts +0 -30
- package/lib/ipa-form/textarea-input/textarea-input.component.d.ts +0 -29
- package/lib/models/apiResponse.d.ts +0 -4
- package/lib/models/breadcrumbs.model.d.ts +0 -4
- package/lib/models/decodedToken.model.d.ts +0 -6
- package/lib/models/exceptionUrl.model.d.ts +0 -4
- package/lib/models/generateForm.model.d.ts +0 -27
- package/lib/models/pagedResult.d.ts +0 -4
- package/lib/models/user.model.d.ts +0 -7
- package/lib/ng-ipa-library.module.d.ts +0 -25
- package/lib/pipes/hijri-date.pipe.d.ts +0 -7
- package/lib/pipes/pipes.module.d.ts +0 -7
- package/lib/services/breadcrumbs.service.d.ts +0 -18
- package/lib/services/common.service.d.ts +0 -8
- package/lib/share-button/share-button.component.d.ts +0 -11
- package/lib/share-button/share-button.module.d.ts +0 -13
- package/ng-ipa-library.d.ts +0 -5
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Breadcrumbs } from '../models/breadcrumbs.model';
|
|
3
|
+
|
|
4
|
+
@Injectable({
|
|
5
|
+
providedIn: 'root',
|
|
6
|
+
})
|
|
7
|
+
export class BreadcrumbsService {
|
|
8
|
+
constructor() {}
|
|
9
|
+
|
|
10
|
+
setPageTitle(text: string) {
|
|
11
|
+
const titleEl = document.querySelector('.sub-section-title');
|
|
12
|
+
if (titleEl) {
|
|
13
|
+
titleEl.textContent = text;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
setMainPageTitle(text: string, url: string) {
|
|
18
|
+
const div = document.getElementsByClassName('main-section-title');
|
|
19
|
+
if (div && div.length > 0) {
|
|
20
|
+
div[0].innerHTML = `<a id="site-url" href="${url}">${text}</a>`;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
addBreadcrumb(
|
|
25
|
+
nodeName: string,
|
|
26
|
+
spanClasses = 'bc-current',
|
|
27
|
+
linkClasses = 'bc-node'
|
|
28
|
+
) {
|
|
29
|
+
const spans = document.getElementById('ctl00_path')?.children;
|
|
30
|
+
//get last child
|
|
31
|
+
const lastIndex = spans?.item(spans.length - 1) as HTMLSpanElement;
|
|
32
|
+
const innerHTML = lastIndex.innerHTML;
|
|
33
|
+
lastIndex.innerHTML = '';
|
|
34
|
+
lastIndex.classList.remove(...['bc-current']);
|
|
35
|
+
//add new link
|
|
36
|
+
lastIndex.appendChild(
|
|
37
|
+
this.createLink(innerHTML, location.pathname, linkClasses)
|
|
38
|
+
);
|
|
39
|
+
//add new span and empty span
|
|
40
|
+
const newSpan = this.createSpan(nodeName, spanClasses);
|
|
41
|
+
const emptySpan = document.createElement('span');
|
|
42
|
+
lastIndex.after(...[emptySpan, newSpan]);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
addBreadcrumbList(
|
|
46
|
+
nodeList: Breadcrumbs[],
|
|
47
|
+
spanClasses = 'bc-current',
|
|
48
|
+
linkClasses = 'bc-node'
|
|
49
|
+
) {
|
|
50
|
+
const spans = document.getElementById('ctl00_path')?.childNodes;
|
|
51
|
+
//get last child
|
|
52
|
+
const lastSpan = spans?.item(spans.length - 1) as HTMLSpanElement;
|
|
53
|
+
const innerHTML = lastSpan.innerHTML;
|
|
54
|
+
lastSpan.classList.remove(...[spanClasses]);
|
|
55
|
+
lastSpan.innerHTML = '';
|
|
56
|
+
//add new link
|
|
57
|
+
lastSpan.appendChild(
|
|
58
|
+
this.createLink(innerHTML, location.pathname, linkClasses)
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
for (let i = 0; i < nodeList.length; i++) {
|
|
62
|
+
const lastIndex = spans?.item(spans.length - 1) as HTMLSpanElement;
|
|
63
|
+
if (nodeList[i].nodeUrl) {
|
|
64
|
+
const newSpan = document.createElement('span');
|
|
65
|
+
newSpan.appendChild(
|
|
66
|
+
this.createLink(
|
|
67
|
+
nodeList[i].nodeName,
|
|
68
|
+
nodeList[i].nodeUrl,
|
|
69
|
+
linkClasses
|
|
70
|
+
)
|
|
71
|
+
);
|
|
72
|
+
const emptySpan = document.createElement('span');
|
|
73
|
+
lastIndex.after(...[emptySpan, newSpan]);
|
|
74
|
+
} else {
|
|
75
|
+
const newSpan = this.createSpan(nodeList[i].nodeName, spanClasses);
|
|
76
|
+
const emptySpan = document.createElement('span');
|
|
77
|
+
lastIndex.after(...[emptySpan, newSpan]);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
createBreadcrumbs(
|
|
83
|
+
nodeList: Breadcrumbs[],
|
|
84
|
+
spanClasses = 'bc-current',
|
|
85
|
+
linkClasses = 'bc-node'
|
|
86
|
+
) {
|
|
87
|
+
const currentSpan = document.getElementById(
|
|
88
|
+
'ctl00_path'
|
|
89
|
+
) as HTMLSpanElement;
|
|
90
|
+
currentSpan.innerHTML = '';
|
|
91
|
+
const newSpan = document.createElement('span');
|
|
92
|
+
currentSpan?.appendChild(newSpan);
|
|
93
|
+
newSpan.appendChild(
|
|
94
|
+
this.createLink(nodeList[0].nodeName, nodeList[0].nodeUrl, linkClasses)
|
|
95
|
+
);
|
|
96
|
+
const spans = currentSpan?.children;
|
|
97
|
+
for (let i = 1; i < nodeList.length; i++) {
|
|
98
|
+
const lastIndex = spans?.item(spans.length - 1) as HTMLSpanElement;
|
|
99
|
+
if (nodeList[i].nodeUrl) {
|
|
100
|
+
const newSpan = document.createElement('span');
|
|
101
|
+
newSpan.appendChild(
|
|
102
|
+
this.createLink(
|
|
103
|
+
nodeList[i].nodeName,
|
|
104
|
+
nodeList[i].nodeUrl,
|
|
105
|
+
linkClasses
|
|
106
|
+
)
|
|
107
|
+
);
|
|
108
|
+
const emptySpan = document.createElement('span');
|
|
109
|
+
lastIndex?.after(...[emptySpan, newSpan]);
|
|
110
|
+
} else {
|
|
111
|
+
const newSpan = this.createSpan(nodeList[i].nodeName, spanClasses);
|
|
112
|
+
const emptySpan = document.createElement('span');
|
|
113
|
+
lastIndex.after(...[emptySpan, newSpan]);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
removeLastBreadcrumb() {
|
|
119
|
+
const spans = document.getElementById('ctl00_path')?.children;
|
|
120
|
+
spans?.item(spans.length - 1)?.remove();
|
|
121
|
+
spans?.item(spans.length - 1)?.remove();
|
|
122
|
+
this.setCurrentNode(spans);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
removeBreadcrumbByNodeName(nodeName: string) {
|
|
126
|
+
const spans = document.getElementById('ctl00_path')
|
|
127
|
+
?.children as HTMLCollection;
|
|
128
|
+
let index = -1;
|
|
129
|
+
for (let i = 0; i < spans.length; i++) {
|
|
130
|
+
const span = spans.item(i);
|
|
131
|
+
if (span?.textContent?.trim() === nodeName) {
|
|
132
|
+
index = i;
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
const lastNode = spans.length - 1 === index;
|
|
137
|
+
if (index !== -1 && !lastNode) {
|
|
138
|
+
spans?.item(index)?.remove();
|
|
139
|
+
spans?.item(index)?.remove();
|
|
140
|
+
} else {
|
|
141
|
+
spans?.item(index)?.remove();
|
|
142
|
+
spans?.item(index - 1)?.remove();
|
|
143
|
+
}
|
|
144
|
+
if (lastNode) {
|
|
145
|
+
this.setCurrentNode(spans);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
removeLastBreadcrumbsByLength(length: number) {
|
|
150
|
+
const spans = document.getElementById('ctl00_path')
|
|
151
|
+
?.children as HTMLCollection;
|
|
152
|
+
while (length > 0) {
|
|
153
|
+
spans?.item(spans.length - 1)?.remove();
|
|
154
|
+
spans?.item(spans.length - 1)?.remove();
|
|
155
|
+
length--;
|
|
156
|
+
}
|
|
157
|
+
if (spans.length > 0) {
|
|
158
|
+
this.setCurrentNode(spans);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
private createLink(
|
|
163
|
+
innerHTML: string,
|
|
164
|
+
href: string | null,
|
|
165
|
+
classes: string
|
|
166
|
+
): HTMLAnchorElement {
|
|
167
|
+
const link = document.createElement('a');
|
|
168
|
+
link.innerHTML = ' ' + innerHTML;
|
|
169
|
+
link.href = href ?? '';
|
|
170
|
+
link.classList.add(...[classes]);
|
|
171
|
+
return link;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
private createSpan(innerHTML: string, classes: string): HTMLSpanElement {
|
|
175
|
+
const span = document.createElement('span');
|
|
176
|
+
span.classList.add(...[classes]);
|
|
177
|
+
span.innerHTML = ' ' + innerHTML;
|
|
178
|
+
return span;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
private setCurrentNode(spans?: HTMLCollection) {
|
|
182
|
+
const lastSpan = spans?.item(spans.length - 1) as HTMLSpanElement;
|
|
183
|
+
const lastSpanLink = spans
|
|
184
|
+
?.item(spans.length - 1)
|
|
185
|
+
?.children.item(0) as HTMLAnchorElement;
|
|
186
|
+
lastSpan?.classList.add(...['bc-current']);
|
|
187
|
+
lastSpan.innerHTML = lastSpanLink.innerHTML;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
|
|
3
|
+
@Injectable({
|
|
4
|
+
providedIn: 'root',
|
|
5
|
+
})
|
|
6
|
+
export class CommonService {
|
|
7
|
+
constructor() {}
|
|
8
|
+
|
|
9
|
+
print(element: string, title: string, classes?: string) {
|
|
10
|
+
const styles = this.getElementTag('style');
|
|
11
|
+
const linkes = this.getElementTag('link');
|
|
12
|
+
const scripts = this.getElementTag('script');
|
|
13
|
+
|
|
14
|
+
const printContents = document.getElementById(element)?.innerHTML;
|
|
15
|
+
const popupWin = window.open('', '', 'top=0,left=0,height=100%,width=auto');
|
|
16
|
+
const data = `
|
|
17
|
+
<!DOCTYPE html>
|
|
18
|
+
<head>
|
|
19
|
+
<title> ${title} </title>
|
|
20
|
+
<meta charset="utf-8">
|
|
21
|
+
${linkes}
|
|
22
|
+
${styles}
|
|
23
|
+
<style>
|
|
24
|
+
@media print {
|
|
25
|
+
.noPrint{
|
|
26
|
+
display: none !important;
|
|
27
|
+
}
|
|
28
|
+
body {
|
|
29
|
+
direction: rtl;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
</style>
|
|
33
|
+
</head>
|
|
34
|
+
<body class="${classes}">
|
|
35
|
+
${printContents}
|
|
36
|
+
${scripts}
|
|
37
|
+
</body>
|
|
38
|
+
|
|
39
|
+
</html>`;
|
|
40
|
+
popupWin?.document.open();
|
|
41
|
+
popupWin?.document.write(data);
|
|
42
|
+
popupWin?.document.close();
|
|
43
|
+
popupWin?.focus();
|
|
44
|
+
popupWin?.addEventListener('focus', () => {
|
|
45
|
+
setTimeout(() => {
|
|
46
|
+
if (popupWin.document.hasFocus()) {
|
|
47
|
+
popupWin.print();
|
|
48
|
+
popupWin.close();
|
|
49
|
+
}
|
|
50
|
+
}, 1000);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
private getElementTag(tag: keyof HTMLElementTagNameMap): string {
|
|
55
|
+
const html: string[] = [];
|
|
56
|
+
const elements = document.getElementsByTagName(tag);
|
|
57
|
+
for (let index = 0; index < elements.length; index++) {
|
|
58
|
+
html.push(elements[index].outerHTML);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return html.join('\r\n');
|
|
62
|
+
}
|
|
63
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Component, AfterViewInit, Input } from '@angular/core';
|
|
2
|
+
|
|
3
|
+
@Component({
|
|
4
|
+
selector: 'ipa-share-button',
|
|
5
|
+
templateUrl: './share-button.component.html',
|
|
6
|
+
styleUrls: ['./share-button.component.scss'],
|
|
7
|
+
})
|
|
8
|
+
export class ShareButtonComponent implements AfterViewInit {
|
|
9
|
+
@Input() title = '';
|
|
10
|
+
@Input() description = '';
|
|
11
|
+
@Input() btnLabel = '';
|
|
12
|
+
constructor() {}
|
|
13
|
+
ngAfterViewInit(): void {
|
|
14
|
+
const elements = document.getElementsByClassName('sb-show-icon');
|
|
15
|
+
elements[0].setAttribute('type', 'button');
|
|
16
|
+
elements[0].setAttribute('id', 'IPAShareBtn');
|
|
17
|
+
const label = document.createElement('label');
|
|
18
|
+
label.innerHTML = this.btnLabel;
|
|
19
|
+
label.classList.add('sm-share-title');
|
|
20
|
+
label.classList.add('me-1');
|
|
21
|
+
elements[0].before(label);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { OverlayModule } from '@angular/cdk/overlay';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import {
|
|
4
|
+
FaIconLibrary,
|
|
5
|
+
FontAwesomeModule,
|
|
6
|
+
} from '@fortawesome/angular-fontawesome';
|
|
7
|
+
import { fas } from '@fortawesome/free-solid-svg-icons';
|
|
8
|
+
import { ShareIconsModule } from 'ngx-sharebuttons/icons';
|
|
9
|
+
import { ShareButtonsPopupModule } from 'ngx-sharebuttons/popup';
|
|
10
|
+
import { ShareButtonComponent } from './share-button.component';
|
|
11
|
+
|
|
12
|
+
@NgModule({
|
|
13
|
+
declarations: [ShareButtonComponent],
|
|
14
|
+
imports: [
|
|
15
|
+
ShareIconsModule,
|
|
16
|
+
ShareButtonsPopupModule,
|
|
17
|
+
OverlayModule,
|
|
18
|
+
FontAwesomeModule,
|
|
19
|
+
],
|
|
20
|
+
exports: [
|
|
21
|
+
ShareButtonComponent,
|
|
22
|
+
ShareIconsModule,
|
|
23
|
+
ShareButtonsPopupModule,
|
|
24
|
+
OverlayModule,
|
|
25
|
+
FontAwesomeModule,
|
|
26
|
+
]
|
|
27
|
+
})
|
|
28
|
+
export class ShareButtonModule {
|
|
29
|
+
constructor(library: FaIconLibrary) {
|
|
30
|
+
library.addIconPacks(fas);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of ipa-library
|
|
3
|
+
*/
|
|
4
|
+
// module
|
|
1
5
|
export * from './lib/ng-ipa-library.module';
|
|
2
6
|
export * from 'ngx-toastr';
|
|
3
|
-
export * from '@ng-select/ng-select';
|
|
4
7
|
export * from './lib/pipes/pipes.module';
|
|
5
8
|
export * from './lib/share-button/share-button.module';
|
|
9
|
+
|
|
10
|
+
// core components
|
|
6
11
|
export * from './lib/core/components/loading/loading.component';
|
|
12
|
+
|
|
13
|
+
// form components
|
|
7
14
|
export * from './lib/ipa-form/text-input/text-input.component';
|
|
8
15
|
export * from './lib/ipa-form/textarea-input/textarea-input.component';
|
|
9
16
|
export * from './lib/ipa-form/dropdown-input/dropdown-input.component';
|
|
@@ -13,16 +20,24 @@ export * from './lib/ipa-form/datepicker/gregorian-datepicker/gregorian-datepick
|
|
|
13
20
|
export * from './lib/ipa-form/recaptcha/recaptcha.component';
|
|
14
21
|
export * from './lib/generate-form/generate-form.component';
|
|
15
22
|
export * from './lib/share-button/share-button.component';
|
|
23
|
+
|
|
24
|
+
// interceptors
|
|
16
25
|
export * from './lib/core/interceptors/loading.interceptor';
|
|
17
26
|
export * from './lib/core/interceptors/error.interceptor';
|
|
18
27
|
export * from './lib/core/interceptors/token.interceptor';
|
|
28
|
+
|
|
29
|
+
// services
|
|
19
30
|
export * from './lib/core/services/loader.service';
|
|
20
31
|
export * from './lib/core/services/auth.service';
|
|
21
32
|
export * from './lib/ipa-form/ipa-form.service';
|
|
22
33
|
export * from './lib/core/services/error.service';
|
|
23
34
|
export * from './lib/services/breadcrumbs.service';
|
|
24
35
|
export * from './lib/services/common.service';
|
|
36
|
+
|
|
37
|
+
//pipes
|
|
25
38
|
export * from './lib/pipes/hijri-date.pipe';
|
|
39
|
+
|
|
40
|
+
//models
|
|
26
41
|
export * from './lib/models/pagedResult';
|
|
27
42
|
export * from './lib/models/apiException';
|
|
28
43
|
export * from './lib/models/apiResponse';
|
package/src/test.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
|
|
2
|
+
|
|
3
|
+
import 'zone.js';
|
|
4
|
+
import 'zone.js/testing';
|
|
5
|
+
import { getTestBed } from '@angular/core/testing';
|
|
6
|
+
import {
|
|
7
|
+
BrowserDynamicTestingModule,
|
|
8
|
+
platformBrowserDynamicTesting
|
|
9
|
+
} from '@angular/platform-browser-dynamic/testing';
|
|
10
|
+
|
|
11
|
+
declare const require: {
|
|
12
|
+
context(path: string, deep?: boolean, filter?: RegExp): {
|
|
13
|
+
keys(): string[];
|
|
14
|
+
<T>(id: string): T;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
// First, initialize the Angular testing environment.
|
|
19
|
+
getTestBed().initTestEnvironment(
|
|
20
|
+
BrowserDynamicTestingModule,
|
|
21
|
+
platformBrowserDynamicTesting()
|
|
22
|
+
);
|
|
23
|
+
// Then we find all the tests.
|
|
24
|
+
const context = require.context('./', true, /\.spec\.ts$/);
|
|
25
|
+
// And load the modules.
|
|
26
|
+
context.keys().map(context);
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
+
"target": "es2015",
|
|
7
|
+
"declaration": true,
|
|
8
|
+
"declarationMap": true,
|
|
9
|
+
"inlineSources": true,
|
|
10
|
+
"types": [],
|
|
11
|
+
"lib": [
|
|
12
|
+
"dom",
|
|
13
|
+
"es2018"
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
"exclude": [
|
|
17
|
+
"src/test.ts",
|
|
18
|
+
"**/*.spec.ts"
|
|
19
|
+
]
|
|
20
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
+
"files": [
|
|
11
|
+
"src/test.ts"
|
|
12
|
+
],
|
|
13
|
+
"include": [
|
|
14
|
+
"**/*.spec.ts",
|
|
15
|
+
"**/*.d.ts"
|
|
16
|
+
]
|
|
17
|
+
}
|