@webilix/ngx-helper-m3 0.0.3 → 0.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/fesm2022/webilix-ngx-helper-m3.mjs +57 -72
- package/fesm2022/webilix-ngx-helper-m3.mjs.map +1 -1
- package/lib/components/component.service.d.ts +2 -4
- package/lib/components/page-group/ngx-helper-page-group.component.d.ts +1 -4
- package/lib/components/page-group/ngx-helper-page-group.interface.d.ts +1 -2
- package/lib/components/section/ngx-helper-section-sticky.directive.d.ts +1 -0
- package/lib/components/section/ngx-helper-section.component.d.ts +3 -5
- package/lib/confirm/bottom-sheet/confirm-bottom-sheet.component.d.ts +1 -0
- package/lib/confirm/dialog/confirm-dialog.component.d.ts +1 -0
- package/lib/container/bottom-sheet/container-bottom-sheet.component.d.ts +1 -0
- package/lib/container/dialog/container-dialog.component.d.ts +1 -0
- package/lib/ngx-helper.config.d.ts +1 -7
- package/ngx-helper-m3.css +200 -0
- package/package.json +1 -1
@@ -29,10 +29,8 @@ class ComponentService {
|
|
29
29
|
};
|
30
30
|
};
|
31
31
|
return {
|
32
|
-
|
33
|
-
|
34
|
-
highlightText: config?.colors?.highlightText || 'var(--secondary)',
|
35
|
-
highlightBackground: config?.colors?.highlightBackground || 'var(--secondary-container)',
|
32
|
+
mobileWidth: config?.mobileWidth || 600,
|
33
|
+
pageGroupSidebarWidth: config?.pageGroupSidebarWidth || '200px',
|
36
34
|
stickyView: config?.stickyView
|
37
35
|
? {
|
38
36
|
top: config.stickyView.top ? getStickyView(config.stickyView.top) : undefined,
|
@@ -57,8 +55,8 @@ class NgxHelperPageGroupComponent {
|
|
57
55
|
router;
|
58
56
|
componentService;
|
59
57
|
config;
|
58
|
+
className = 'ngx-helper-m3-page-group';
|
60
59
|
display = 'none';
|
61
|
-
toolbarHeight = '32px';
|
62
60
|
pageGroup;
|
63
61
|
pageIndex = 0;
|
64
62
|
data;
|
@@ -67,8 +65,6 @@ class NgxHelperPageGroupComponent {
|
|
67
65
|
injector;
|
68
66
|
sidebarWidth;
|
69
67
|
componentConfig;
|
70
|
-
swipeStart;
|
71
|
-
swipeLeft = 0;
|
72
68
|
constructor(activatedRoute, router, componentService, config) {
|
73
69
|
this.activatedRoute = activatedRoute;
|
74
70
|
this.router = router;
|
@@ -76,9 +72,11 @@ class NgxHelperPageGroupComponent {
|
|
76
72
|
this.config = config;
|
77
73
|
}
|
78
74
|
ngOnInit() {
|
79
|
-
this.display = this.pageGroup.pages.length === 0 ? 'none' : '
|
80
|
-
|
75
|
+
this.display = this.pageGroup.pages.length === 0 ? 'none' : 'flex';
|
76
|
+
if (this.pageGroup.pages.length === 0)
|
77
|
+
return;
|
81
78
|
this.componentConfig = this.componentService.getComponentConfig(this.config);
|
79
|
+
this.sidebarWidth = this.pageGroup.sidebarWidth || this.componentConfig.pageGroupSidebarWidth;
|
82
80
|
if (this.pageIndex < 0)
|
83
81
|
this.pageIndex = 0;
|
84
82
|
else if (this.pageIndex > this.pageGroup.pages.length - 1)
|
@@ -98,10 +96,12 @@ class NgxHelperPageGroupComponent {
|
|
98
96
|
this.setInjector();
|
99
97
|
}
|
100
98
|
onResize() {
|
101
|
-
|
102
|
-
this.
|
99
|
+
this.isMobile = window.innerWidth <= this.componentConfig.mobileWidth;
|
100
|
+
this.className = `ngx-helper-m3-page-group${this.isMobile ? ' mobile-view' : ''}`;
|
103
101
|
}
|
104
102
|
setInjector() {
|
103
|
+
if (this.pageGroup.pages.length === 0)
|
104
|
+
return;
|
105
105
|
this.injector = Injector.create({
|
106
106
|
providers: [
|
107
107
|
{ provide: NGX_HELPER_PAGE_GROUP_DATA, useValue: this.data },
|
@@ -111,6 +111,8 @@ class NgxHelperPageGroupComponent {
|
|
111
111
|
});
|
112
112
|
}
|
113
113
|
setPage(index) {
|
114
|
+
if (this.pageGroup.pages.length === 0)
|
115
|
+
return;
|
114
116
|
if (this.pageIndex === index || index < 0 || index > this.pageGroup.pages.length - 1)
|
115
117
|
return;
|
116
118
|
this.pageIndex = index;
|
@@ -122,47 +124,23 @@ class NgxHelperPageGroupComponent {
|
|
122
124
|
this.router.navigate(this.pageGroup.route, { queryParams });
|
123
125
|
}
|
124
126
|
}
|
125
|
-
swipe(event, action, header, container) {
|
126
|
-
if (header.offsetWidth > container.offsetWidth)
|
127
|
-
return;
|
128
|
-
const clientX = event instanceof MouseEvent ? event.clientX : event.changedTouches[0].clientX;
|
129
|
-
switch (action) {
|
130
|
-
case 'START':
|
131
|
-
this.swipeStart = clientX - this.swipeLeft;
|
132
|
-
break;
|
133
|
-
case 'END':
|
134
|
-
this.swipeStart = undefined;
|
135
|
-
break;
|
136
|
-
case 'MOVE':
|
137
|
-
if (!this.swipeStart)
|
138
|
-
return;
|
139
|
-
let left = clientX - this.swipeStart;
|
140
|
-
if (left <= 0)
|
141
|
-
left = 0;
|
142
|
-
else if (left > container.offsetWidth - header.offsetWidth)
|
143
|
-
left = container.offsetWidth - header.offsetWidth;
|
144
|
-
this.swipeLeft = left;
|
145
|
-
container.style.left = `${left}px`;
|
146
|
-
break;
|
147
|
-
}
|
148
|
-
}
|
149
127
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxHelperPageGroupComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: ComponentService }, { token: NGX_HELPER_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
150
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: NgxHelperPageGroupComponent, isStandalone: true, selector: "ngx-helper-page-group", inputs: { pageGroup: "pageGroup", pageIndex: "pageIndex", data: "data" }, outputs: { pageIndexChanged: "pageIndexChanged" }, host: { listeners: { "window:resize": "onResize($event)" }, properties: { "
|
128
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: NgxHelperPageGroupComponent, isStandalone: true, selector: "ngx-helper-page-group", inputs: { pageGroup: "pageGroup", pageIndex: "pageIndex", data: "data" }, outputs: { pageIndexChanged: "pageIndexChanged" }, host: { listeners: { "window:resize": "onResize($event)" }, properties: { "className": "this.className", "style.display": "this.display" } }, providers: [ComponentService], usesOnChanges: true, ngImport: i0, template: "@if (pageGroup.pages.length > 0) {\n<!-- DESKTOP VIEW -->\n@if (!isMobile) {\n<aside\n [style.width]=\"sidebarWidth\"\n [style.position]=\"componentConfig.stickyView?.top ? 'sticky' : 'static'\"\n [style.top]=\"componentConfig.stickyView?.top?.desktopView || undefined\"\n>\n @for (item of pageGroup.pages; track $index) {\n <div\n class=\"page\"\n [class.active]=\"pageIndex === $index\"\n [style.cursor]=\"pageIndex === $index ? 'default' : 'pointer'\"\n (click)=\"setPage($index)\"\n >\n <!-- ICON -->\n <mat-icon>{{ item.icon }}</mat-icon>\n <div class=\"title\">{{ item.title }}</div>\n <!-- CURRENT PAGE -->\n @if (pageIndex === $index) { <mat-icon>keyboard_double_arrow_left</mat-icon> }\n </div>\n }\n</aside>\n}\n\n<!-- MOBILE VIEW -->\n@if (isMobile) {\n<nav\n [style.position]=\"componentConfig.stickyView?.top ? 'sticky' : 'static'\"\n [style.top]=\"componentConfig.stickyView?.top?.mobileView || undefined\"\n>\n @for (item of pageGroup.pages; track $index) {\n <div\n class=\"page\"\n [class.active]=\"pageIndex === $index\"\n [style.cursor]=\"pageIndex === $index ? 'default' : 'pointer'\"\n (click)=\"setPage($index)\"\n >\n <mat-icon>{{ item.icon }}</mat-icon>\n @if (pageIndex === $index) {\n <div class=\"title\">{{ item.title }}</div>\n }\n </div>\n }\n</nav>\n\n<div\n class=\"toolbar-spacer\"\n [style.position]=\"componentConfig.stickyView?.top ? 'sticky' : 'static'\"\n [style.top]=\"\n 'calc(' + (componentConfig.stickyView?.top?.mobileView || undefined) + ' + var(--ngx-helper-m3-toolbar-height))'\n \"\n></div>\n}\n\n<content>\n <!-- HEADER -->\n @if (pageGroup.header) {\n <header\n [style.position]=\"componentConfig.stickyView?.top ? 'sticky' : 'static'\"\n [style.top]=\"\n (isMobile\n ? 'calc(' +\n (componentConfig.stickyView?.top?.mobileView || undefined) +\n ' + var(--ngx-helper-m3-toolbar-height) + 1rem)'\n : componentConfig.stickyView?.top?.desktopView) || undefined\n \"\n >\n <span *ngComponentOutlet=\"pageGroup.header; injector: injector\"></span>\n <div class=\"spacer\"></div>\n </header>\n }\n <span *ngComponentOutlet=\"pageGroup.pages[pageIndex].component; injector: injector\"></span>\n</content>\n}\n", styles: [""], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
151
129
|
}
|
152
130
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxHelperPageGroupComponent, decorators: [{
|
153
131
|
type: Component,
|
154
|
-
args: [{ selector: 'ngx-helper-page-group', host: { '(window:resize)': 'onResize($event)' }, imports: [NgComponentOutlet, MatIcon], providers: [ComponentService], template: "
|
132
|
+
args: [{ selector: 'ngx-helper-page-group', host: { '(window:resize)': 'onResize($event)' }, imports: [NgComponentOutlet, MatIcon], providers: [ComponentService], template: "@if (pageGroup.pages.length > 0) {\n<!-- DESKTOP VIEW -->\n@if (!isMobile) {\n<aside\n [style.width]=\"sidebarWidth\"\n [style.position]=\"componentConfig.stickyView?.top ? 'sticky' : 'static'\"\n [style.top]=\"componentConfig.stickyView?.top?.desktopView || undefined\"\n>\n @for (item of pageGroup.pages; track $index) {\n <div\n class=\"page\"\n [class.active]=\"pageIndex === $index\"\n [style.cursor]=\"pageIndex === $index ? 'default' : 'pointer'\"\n (click)=\"setPage($index)\"\n >\n <!-- ICON -->\n <mat-icon>{{ item.icon }}</mat-icon>\n <div class=\"title\">{{ item.title }}</div>\n <!-- CURRENT PAGE -->\n @if (pageIndex === $index) { <mat-icon>keyboard_double_arrow_left</mat-icon> }\n </div>\n }\n</aside>\n}\n\n<!-- MOBILE VIEW -->\n@if (isMobile) {\n<nav\n [style.position]=\"componentConfig.stickyView?.top ? 'sticky' : 'static'\"\n [style.top]=\"componentConfig.stickyView?.top?.mobileView || undefined\"\n>\n @for (item of pageGroup.pages; track $index) {\n <div\n class=\"page\"\n [class.active]=\"pageIndex === $index\"\n [style.cursor]=\"pageIndex === $index ? 'default' : 'pointer'\"\n (click)=\"setPage($index)\"\n >\n <mat-icon>{{ item.icon }}</mat-icon>\n @if (pageIndex === $index) {\n <div class=\"title\">{{ item.title }}</div>\n }\n </div>\n }\n</nav>\n\n<div\n class=\"toolbar-spacer\"\n [style.position]=\"componentConfig.stickyView?.top ? 'sticky' : 'static'\"\n [style.top]=\"\n 'calc(' + (componentConfig.stickyView?.top?.mobileView || undefined) + ' + var(--ngx-helper-m3-toolbar-height))'\n \"\n></div>\n}\n\n<content>\n <!-- HEADER -->\n @if (pageGroup.header) {\n <header\n [style.position]=\"componentConfig.stickyView?.top ? 'sticky' : 'static'\"\n [style.top]=\"\n (isMobile\n ? 'calc(' +\n (componentConfig.stickyView?.top?.mobileView || undefined) +\n ' + var(--ngx-helper-m3-toolbar-height) + 1rem)'\n : componentConfig.stickyView?.top?.desktopView) || undefined\n \"\n >\n <span *ngComponentOutlet=\"pageGroup.header; injector: injector\"></span>\n <div class=\"spacer\"></div>\n </header>\n }\n <span *ngComponentOutlet=\"pageGroup.pages[pageIndex].component; injector: injector\"></span>\n</content>\n}\n" }]
|
155
133
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: ComponentService }, { type: undefined, decorators: [{
|
156
134
|
type: Optional
|
157
135
|
}, {
|
158
136
|
type: Inject,
|
159
137
|
args: [NGX_HELPER_CONFIG]
|
160
|
-
}] }], propDecorators: {
|
138
|
+
}] }], propDecorators: { className: [{
|
161
139
|
type: HostBinding,
|
162
|
-
args: ['
|
163
|
-
}],
|
140
|
+
args: ['className']
|
141
|
+
}], display: [{
|
164
142
|
type: HostBinding,
|
165
|
-
args: ['style
|
143
|
+
args: ['style.display']
|
166
144
|
}], pageGroup: [{
|
167
145
|
type: Input,
|
168
146
|
args: [{ required: true }]
|
@@ -182,27 +160,27 @@ class NgxHelperSectionStickyDirective {
|
|
182
160
|
ngxHelperSectionSticky;
|
183
161
|
ngxHelperSectionZIndex;
|
184
162
|
componentService = inject(ComponentService);
|
163
|
+
componentConfig;
|
185
164
|
isMobile = false;
|
186
165
|
constructor(elementRef, config) {
|
187
166
|
this.elementRef = elementRef;
|
188
167
|
this.config = config;
|
189
168
|
}
|
190
169
|
ngOnInit() {
|
170
|
+
this.componentConfig = this.componentService.getComponentConfig(this.config);
|
191
171
|
this.onResize();
|
192
172
|
}
|
193
173
|
onResize() {
|
194
|
-
|
195
|
-
this.isMobile = window.innerWidth <= mobileWidth;
|
174
|
+
this.isMobile = window.innerWidth <= this.componentConfig.mobileWidth;
|
196
175
|
this.setPosition();
|
197
176
|
}
|
198
177
|
setPosition() {
|
199
178
|
const element = this.elementRef.nativeElement;
|
200
179
|
if (!element)
|
201
180
|
return;
|
202
|
-
const config = this.componentService.getComponentConfig(this.config);
|
203
181
|
switch (this.ngxHelperSectionSticky) {
|
204
182
|
case 'TOP':
|
205
|
-
const top =
|
183
|
+
const top = this.componentConfig.stickyView?.top;
|
206
184
|
if (!top)
|
207
185
|
return;
|
208
186
|
element.style.position = 'sticky';
|
@@ -210,7 +188,7 @@ class NgxHelperSectionStickyDirective {
|
|
210
188
|
element.style.top = this.isMobile ? top.mobileView : top.desktopView;
|
211
189
|
break;
|
212
190
|
case 'BOTTOM':
|
213
|
-
const bottom =
|
191
|
+
const bottom = this.componentConfig.stickyView?.bottom;
|
214
192
|
if (!bottom)
|
215
193
|
return;
|
216
194
|
element.style.position = 'sticky';
|
@@ -245,11 +223,9 @@ class NgxHelperSectionComponent {
|
|
245
223
|
componentService;
|
246
224
|
config;
|
247
225
|
gap;
|
248
|
-
backgroundColor;
|
249
226
|
gapSize;
|
250
|
-
mobileView;
|
251
|
-
isMobile = false;
|
252
227
|
componentConfig;
|
228
|
+
isMobile = false;
|
253
229
|
constructor(componentService, config) {
|
254
230
|
this.componentService = componentService;
|
255
231
|
this.config = config;
|
@@ -257,19 +233,17 @@ class NgxHelperSectionComponent {
|
|
257
233
|
ngOnInit() {
|
258
234
|
this.componentConfig = this.componentService.getComponentConfig(this.config);
|
259
235
|
this.gap = this.gapSize || '1rem';
|
260
|
-
this.backgroundColor = this.componentConfig.background;
|
261
236
|
this.onResize();
|
262
237
|
}
|
263
238
|
onResize() {
|
264
|
-
|
265
|
-
this.isMobile = this.mobileView || window.innerWidth <= mobileWidth;
|
239
|
+
this.isMobile = window.innerWidth <= this.componentConfig.mobileWidth;
|
266
240
|
}
|
267
241
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxHelperSectionComponent, deps: [{ token: ComponentService }, { token: NGX_HELPER_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
268
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: NgxHelperSectionComponent, isStandalone: true, selector: "ngx-helper-section", inputs: { gapSize: "gapSize"
|
242
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: NgxHelperSectionComponent, isStandalone: true, selector: "ngx-helper-section", inputs: { gapSize: "gapSize" }, host: { listeners: { "window:resize": "onResize($event)" }, properties: { "style.--section-gap": "this.gap" } }, providers: [ComponentService], ngImport: i0, template: "<div class=\"columns\" [class.mobile]=\"isMobile\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:block;direction:rtl}:host .columns{display:flex;align-items:flex-start;column-gap:var(--section-gap)}:host ::ng-deep ngx-helper-section-column{flex:1;display:flex;flex-direction:column;row-gap:var(--section-gap)}:host .mobile{flex-direction:column;column-gap:0;row-gap:var(--section-gap)}:host .mobile ::ng-deep ngx-helper-section-column{width:100%!important}\n"] });
|
269
243
|
}
|
270
244
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxHelperSectionComponent, decorators: [{
|
271
245
|
type: Component,
|
272
|
-
args: [{ selector: 'ngx-helper-section', host: { '(window:resize)': 'onResize($event)' }, imports: [], providers: [ComponentService], template: "<div class=\"columns\" [class.mobile]=\"isMobile\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:block;direction:rtl}:host .columns{display:flex;align-items:flex-start;column-gap:var(--section-gap)}:host ::ng-deep ngx-helper-section-column{flex:1;display:flex;flex-direction:column;row-gap:var(--section-gap)
|
246
|
+
args: [{ selector: 'ngx-helper-section', host: { '(window:resize)': 'onResize($event)' }, imports: [], providers: [ComponentService], template: "<div class=\"columns\" [class.mobile]=\"isMobile\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:block;direction:rtl}:host .columns{display:flex;align-items:flex-start;column-gap:var(--section-gap)}:host ::ng-deep ngx-helper-section-column{flex:1;display:flex;flex-direction:column;row-gap:var(--section-gap)}:host .mobile{flex-direction:column;column-gap:0;row-gap:var(--section-gap)}:host .mobile ::ng-deep ngx-helper-section-column{width:100%!important}\n"] }]
|
273
247
|
}], ctorParameters: () => [{ type: ComponentService }, { type: undefined, decorators: [{
|
274
248
|
type: Optional
|
275
249
|
}, {
|
@@ -278,15 +252,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
|
|
278
252
|
}] }], propDecorators: { gap: [{
|
279
253
|
type: HostBinding,
|
280
254
|
args: ['style.--section-gap']
|
281
|
-
}], backgroundColor: [{
|
282
|
-
type: HostBinding,
|
283
|
-
args: ['style.--section-background-color']
|
284
255
|
}], gapSize: [{
|
285
256
|
type: Input,
|
286
257
|
args: [{ required: false }]
|
287
|
-
}], mobileView: [{
|
288
|
-
type: Input,
|
289
|
-
args: [{ required: false }]
|
290
258
|
}] } });
|
291
259
|
|
292
260
|
class NgxHelperSectionColumnComponent {
|
@@ -614,17 +582,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
|
|
614
582
|
}] });
|
615
583
|
|
616
584
|
class ConfirmDialogComponent {
|
585
|
+
className = 'ngx-helper-m3-confirm';
|
617
586
|
confirm = inject(MAT_DIALOG_DATA);
|
618
587
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: ConfirmDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
619
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: ConfirmDialogComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "selector": "confirm-dialog" } }, ngImport: i0, template: "<
|
588
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: ConfirmDialogComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "selector": "confirm-dialog" }, properties: { "className": "this.className" } }, ngImport: i0, template: "<content>\n <!-- ICON -->\n @if (confirm.icon) {\n <mat-icon>{{ confirm.icon }}</mat-icon>\n }\n\n <!-- CONTENT -->\n <div class=\"confirm\">\n <div class=\"question\">{{ confirm.question }}</div>\n <!-- DESCRIPTION -->\n @if (confirm.description) {\n <div class=\"description\">{{ confirm.description }}</div>\n }\n <!-- DATA -->\n @if (confirm.data) {\n <div class=\"data\">\n <div class=\"title\">{{ confirm.data.title }}:</div>\n <div class=\"value\">{{ confirm.data.value }}</div>\n </div>\n }\n </div>\n</content>\n\n<footer>\n <button mat-button type=\"button\" mat-dialog-close [ngClass]=\"confirm.denyClass\">\u062E\u06CC\u0631</button>\n <button mat-button type=\"button\" [mat-dialog-close]=\"true\" [ngClass]=\"confirm.confirmClass\">\u0628\u0644\u06CC</button>\n</footer>\n", styles: [""], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
620
589
|
}
|
621
590
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: ConfirmDialogComponent, decorators: [{
|
622
591
|
type: Component,
|
623
|
-
args: [{ host: { selector: 'confirm-dialog' }, imports: [NgClass, MatButtonModule, MatDialogModule, MatIconModule], template: "<
|
624
|
-
}]
|
592
|
+
args: [{ host: { selector: 'confirm-dialog' }, imports: [NgClass, MatButtonModule, MatDialogModule, MatIconModule], template: "<content>\n <!-- ICON -->\n @if (confirm.icon) {\n <mat-icon>{{ confirm.icon }}</mat-icon>\n }\n\n <!-- CONTENT -->\n <div class=\"confirm\">\n <div class=\"question\">{{ confirm.question }}</div>\n <!-- DESCRIPTION -->\n @if (confirm.description) {\n <div class=\"description\">{{ confirm.description }}</div>\n }\n <!-- DATA -->\n @if (confirm.data) {\n <div class=\"data\">\n <div class=\"title\">{{ confirm.data.title }}:</div>\n <div class=\"value\">{{ confirm.data.value }}</div>\n </div>\n }\n </div>\n</content>\n\n<footer>\n <button mat-button type=\"button\" mat-dialog-close [ngClass]=\"confirm.denyClass\">\u062E\u06CC\u0631</button>\n <button mat-button type=\"button\" [mat-dialog-close]=\"true\" [ngClass]=\"confirm.confirmClass\">\u0628\u0644\u06CC</button>\n</footer>\n" }]
|
593
|
+
}], propDecorators: { className: [{
|
594
|
+
type: HostBinding,
|
595
|
+
args: ['className']
|
596
|
+
}] } });
|
625
597
|
|
626
598
|
class ConfirmBottomSheetComponent {
|
627
599
|
matBottomSheetRef;
|
600
|
+
className = 'ngx-helper-m3-confirm';
|
628
601
|
confirm = inject(MAT_BOTTOM_SHEET_DATA);
|
629
602
|
constructor(matBottomSheetRef) {
|
630
603
|
this.matBottomSheetRef = matBottomSheetRef;
|
@@ -633,12 +606,15 @@ class ConfirmBottomSheetComponent {
|
|
633
606
|
this.matBottomSheetRef.dismiss(confirmed);
|
634
607
|
}
|
635
608
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: ConfirmBottomSheetComponent, deps: [{ token: i1$3.MatBottomSheetRef }], target: i0.ɵɵFactoryTarget.Component });
|
636
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: ConfirmBottomSheetComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "selector": "confirm-bottom-sheet" } }, ngImport: i0, template: "<content>\n <!-- ICON -->\n @if (confirm.icon) {\n <
|
609
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: ConfirmBottomSheetComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "selector": "confirm-bottom-sheet" }, properties: { "className": "this.className" } }, ngImport: i0, template: "<content>\n <!-- ICON -->\n @if (confirm.icon) {\n <mat-icon>{{ confirm.icon }}</mat-icon>\n }\n\n <!-- CONTENT -->\n <div class=\"confirm\">\n <div class=\"question\">{{ confirm.question }}</div>\n <!-- DESCRIPTION -->\n @if (confirm.description) {\n <div class=\"description\">{{ confirm.description }}</div>\n }\n <!-- DATA -->\n @if (confirm.data) {\n <div class=\"data\">\n <div class=\"title\">{{ confirm.data.title }}:</div>\n <div class=\"value\">{{ confirm.data.value }}</div>\n </div>\n }\n </div>\n</content>\n\n<footer>\n <button mat-button type=\"button\" (click)=\"close()\" [ngClass]=\"confirm.denyClass\">\u062E\u06CC\u0631</button>\n <button mat-button type=\"button\" (click)=\"close(true)\" [ngClass]=\"confirm.confirmClass\">\u0628\u0644\u06CC</button>\n</footer>\n", styles: ["::ng-deep .ngx-helper-bottom-sheet .mat-bottom-sheet-container{padding:0}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
637
610
|
}
|
638
611
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: ConfirmBottomSheetComponent, decorators: [{
|
639
612
|
type: Component,
|
640
|
-
args: [{ host: { selector: 'confirm-bottom-sheet' }, imports: [NgClass, MatButtonModule, MatIconModule], template: "<content>\n <!-- ICON -->\n @if (confirm.icon) {\n <
|
641
|
-
}], ctorParameters: () => [{ type: i1$3.MatBottomSheetRef }]
|
613
|
+
args: [{ host: { selector: 'confirm-bottom-sheet' }, imports: [NgClass, MatButtonModule, MatIconModule], template: "<content>\n <!-- ICON -->\n @if (confirm.icon) {\n <mat-icon>{{ confirm.icon }}</mat-icon>\n }\n\n <!-- CONTENT -->\n <div class=\"confirm\">\n <div class=\"question\">{{ confirm.question }}</div>\n <!-- DESCRIPTION -->\n @if (confirm.description) {\n <div class=\"description\">{{ confirm.description }}</div>\n }\n <!-- DATA -->\n @if (confirm.data) {\n <div class=\"data\">\n <div class=\"title\">{{ confirm.data.title }}:</div>\n <div class=\"value\">{{ confirm.data.value }}</div>\n </div>\n }\n </div>\n</content>\n\n<footer>\n <button mat-button type=\"button\" (click)=\"close()\" [ngClass]=\"confirm.denyClass\">\u062E\u06CC\u0631</button>\n <button mat-button type=\"button\" (click)=\"close(true)\" [ngClass]=\"confirm.confirmClass\">\u0628\u0644\u06CC</button>\n</footer>\n", styles: ["::ng-deep .ngx-helper-bottom-sheet .mat-bottom-sheet-container{padding:0}\n"] }]
|
614
|
+
}], ctorParameters: () => [{ type: i1$3.MatBottomSheetRef }], propDecorators: { className: [{
|
615
|
+
type: HostBinding,
|
616
|
+
args: ['className']
|
617
|
+
}] } });
|
642
618
|
|
643
619
|
class NgxHelperConfirmCalss {
|
644
620
|
matBottomSheet;
|
@@ -675,6 +651,7 @@ class NgxHelperConfirmCalss {
|
|
675
651
|
.open(ConfirmBottomSheetComponent, {
|
676
652
|
// DEFAULT CONFIG
|
677
653
|
direction: 'rtl',
|
654
|
+
panelClass: 'ngx-helper-bottom-sheet',
|
678
655
|
// OVERWRITE CONFIG
|
679
656
|
...config,
|
680
657
|
maxHeight: '80vh',
|
@@ -742,6 +719,7 @@ const NGX_HELPER_CONTAINER_CLOSE = new InjectionToken('NGX-HELPER-CONTAINER-CLOS
|
|
742
719
|
|
743
720
|
class ContainerDialogComponent {
|
744
721
|
matDialogRef;
|
722
|
+
className = 'ngx-helper-m3-container';
|
745
723
|
container = inject(MAT_DIALOG_DATA);
|
746
724
|
injector;
|
747
725
|
constructor(matDialogRef) {
|
@@ -763,15 +741,19 @@ class ContainerDialogComponent {
|
|
763
741
|
this.matDialogRef.close();
|
764
742
|
}
|
765
743
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: ContainerDialogComponent, deps: [{ token: i2.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
|
766
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: ContainerDialogComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "selector": "container-dialog" } }, ngImport: i0, template: "<header>\n <div class=\"title\">{{ container.title }}</div>\n @if (!container.config.hideClose) {\n <button mat-icon-button type=\"button\" (click)=\"close()\"
|
744
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: ContainerDialogComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "selector": "container-dialog" }, properties: { "className": "this.className" } }, ngImport: i0, template: "<header>\n <div class=\"title\">{{ container.title }}</div>\n @if (!container.config.hideClose) {\n <button mat-icon-button type=\"button\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n</header>\n<content [style.padding]=\"container.config.padding || '1rem'\">\n <span *ngComponentOutlet=\"container.component; injector: injector\"></span>\n</content>\n", styles: [""], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
767
745
|
}
|
768
746
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: ContainerDialogComponent, decorators: [{
|
769
747
|
type: Component,
|
770
|
-
args: [{ host: { selector: 'container-dialog' }, imports: [NgComponentOutlet, MatIconButton, MatIcon], template: "<header>\n <div class=\"title\">{{ container.title }}</div>\n @if (!container.config.hideClose) {\n <button mat-icon-button type=\"button\" (click)=\"close()\"
|
771
|
-
}], ctorParameters: () => [{ type: i2.MatDialogRef }]
|
748
|
+
args: [{ host: { selector: 'container-dialog' }, imports: [NgComponentOutlet, MatIconButton, MatIcon], template: "<header>\n <div class=\"title\">{{ container.title }}</div>\n @if (!container.config.hideClose) {\n <button mat-icon-button type=\"button\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n</header>\n<content [style.padding]=\"container.config.padding || '1rem'\">\n <span *ngComponentOutlet=\"container.component; injector: injector\"></span>\n</content>\n" }]
|
749
|
+
}], ctorParameters: () => [{ type: i2.MatDialogRef }], propDecorators: { className: [{
|
750
|
+
type: HostBinding,
|
751
|
+
args: ['className']
|
752
|
+
}] } });
|
772
753
|
|
773
754
|
class ContainerBottomSheetComponent {
|
774
755
|
matBottomSheetRef;
|
756
|
+
className = 'ngx-helper-m3-container';
|
775
757
|
container = inject(MAT_BOTTOM_SHEET_DATA);
|
776
758
|
injector;
|
777
759
|
constructor(matBottomSheetRef) {
|
@@ -793,12 +775,15 @@ class ContainerBottomSheetComponent {
|
|
793
775
|
this.matBottomSheetRef.dismiss();
|
794
776
|
}
|
795
777
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: ContainerBottomSheetComponent, deps: [{ token: i1$3.MatBottomSheetRef }], target: i0.ɵɵFactoryTarget.Component });
|
796
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: ContainerBottomSheetComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "selector": "container-bottom-sheet" } }, ngImport: i0, template: "<header>\n <div class=\"title\">{{ container.title }}</div>\n @if (!container.config.hideClose) {\n <button mat-icon-button type=\"button\" (click)=\"close()\"
|
778
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: ContainerBottomSheetComponent, isStandalone: true, selector: "ng-component", host: { attributes: { "selector": "container-bottom-sheet" }, properties: { "className": "this.className" } }, ngImport: i0, template: "<header>\n <div class=\"title\">{{ container.title }}</div>\n @if (!container.config.hideClose) {\n <button mat-icon-button type=\"button\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n</header>\n<content [style.padding]=\"container.config.padding || '1rem'\">\n <span *ngComponentOutlet=\"container.component; injector: injector\"></span>\n</content>\n", styles: ["::ng-deep .ngx-helper-bottom-sheet .mat-bottom-sheet-container{padding:0}\n"], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
797
779
|
}
|
798
780
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: ContainerBottomSheetComponent, decorators: [{
|
799
781
|
type: Component,
|
800
|
-
args: [{ host: { selector: 'container-bottom-sheet' }, imports: [NgComponentOutlet, MatIconButton, MatIcon], template: "<header>\n <div class=\"title\">{{ container.title }}</div>\n @if (!container.config.hideClose) {\n <button mat-icon-button type=\"button\" (click)=\"close()\"
|
801
|
-
}], ctorParameters: () => [{ type: i1$3.MatBottomSheetRef }]
|
782
|
+
args: [{ host: { selector: 'container-bottom-sheet' }, imports: [NgComponentOutlet, MatIconButton, MatIcon], template: "<header>\n <div class=\"title\">{{ container.title }}</div>\n @if (!container.config.hideClose) {\n <button mat-icon-button type=\"button\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n</header>\n<content [style.padding]=\"container.config.padding || '1rem'\">\n <span *ngComponentOutlet=\"container.component; injector: injector\"></span>\n</content>\n", styles: ["::ng-deep .ngx-helper-bottom-sheet .mat-bottom-sheet-container{padding:0}\n"] }]
|
783
|
+
}], ctorParameters: () => [{ type: i1$3.MatBottomSheetRef }], propDecorators: { className: [{
|
784
|
+
type: HostBinding,
|
785
|
+
args: ['className']
|
786
|
+
}] } });
|
802
787
|
|
803
788
|
class NgxHelperContainerCalss {
|
804
789
|
matBottomSheet;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"webilix-ngx-helper-m3.mjs","sources":["../../../ngx-helper-m3/src/lib/ngx-helper.config.ts","../../../ngx-helper-m3/src/lib/components/component.service.ts","../../../ngx-helper-m3/src/lib/components/page-group/ngx-helper-page-group.interface.ts","../../../ngx-helper-m3/src/lib/components/page-group/ngx-helper-page-group.component.ts","../../../ngx-helper-m3/src/lib/components/page-group/ngx-helper-page-group.component.html","../../../ngx-helper-m3/src/lib/components/section/ngx-helper-section-sticky.directive.ts","../../../ngx-helper-m3/src/lib/components/section/ngx-helper-section.component.ts","../../../ngx-helper-m3/src/lib/components/section/ngx-helper-section.component.html","../../../ngx-helper-m3/src/lib/components/section/column/ngx-helper-section-column.component.ts","../../../ngx-helper-m3/src/lib/components/section/column/ngx-helper-section-column.component.html","../../../ngx-helper-m3/src/lib/pipes/bank-card.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/date.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/duration.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/file-size.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/mobile.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/multi-line.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/number.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/period.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/price.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/safe.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/volume.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/weight.pipe.ts","../../../ngx-helper-m3/src/lib/confirm/dialog/confirm-dialog.component.ts","../../../ngx-helper-m3/src/lib/confirm/dialog/confirm-dialog.component.html","../../../ngx-helper-m3/src/lib/confirm/bottom-sheet/confirm-bottom-sheet.component.ts","../../../ngx-helper-m3/src/lib/confirm/bottom-sheet/confirm-bottom-sheet.component.html","../../../ngx-helper-m3/src/lib/confirm/confirm.service.ts","../../../ngx-helper-m3/src/lib/container/container.interface.ts","../../../ngx-helper-m3/src/lib/container/dialog/container-dialog.component.ts","../../../ngx-helper-m3/src/lib/container/dialog/container-dialog.component.html","../../../ngx-helper-m3/src/lib/container/bottom-sheet/container-bottom-sheet.component.ts","../../../ngx-helper-m3/src/lib/container/bottom-sheet/container-bottom-sheet.component.html","../../../ngx-helper-m3/src/lib/container/container.service.ts","../../../ngx-helper-m3/src/public-api.ts","../../../ngx-helper-m3/src/webilix-ngx-helper-m3.ts"],"sourcesContent":["import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders, Provider } from '@angular/core';\n\nexport interface INgxHelperConfig {\n readonly mobileWidth: number;\n readonly sidebarWidth: string;\n readonly colors: {\n readonly border?: string;\n readonly background?: string;\n readonly highlightText?: string;\n readonly highlightBackground?: string;\n };\n readonly stickyView: {\n readonly top?: string | { readonly desktopView: string; readonly mobileView: string };\n readonly bottom?: string | { readonly desktopView: string; readonly mobileView: string };\n };\n}\n\nexport const NGX_HELPER_CONFIG = new InjectionToken<Partial<INgxHelperConfig>>('NGX-HELPER-CONFIG');\n\nexport const provideNgxHelperConfig = (config: Partial<INgxHelperConfig>): EnvironmentProviders => {\n const providers: Provider[] = [{ provide: NGX_HELPER_CONFIG, useValue: config }];\n\n return makeEnvironmentProviders(providers);\n};\n","import { Injectable } from '@angular/core';\n\nimport { INgxHelperConfig } from '../ngx-helper.config';\n\nexport interface IComponentConfig {\n // COLOR\n readonly border: string;\n readonly background: string;\n readonly highlightText: string;\n readonly highlightBackground: string;\n // STICKY\n readonly stickyView?: {\n readonly top?: { readonly desktopView: string; readonly mobileView: string };\n readonly bottom?: { readonly desktopView: string; readonly mobileView: string };\n };\n}\n\n@Injectable()\nexport class ComponentService {\n getComponentConfig(config?: Partial<INgxHelperConfig>): IComponentConfig {\n const getStickyView = (\n config: string | { desktopView: string; mobileView: string },\n ): { desktopView: string; mobileView: string } => {\n return {\n desktopView: typeof config === 'string' ? config : config.desktopView,\n mobileView: typeof config === 'string' ? config : config.mobileView,\n };\n };\n\n return {\n border: config?.colors?.border || 'var(--outline-variant)',\n background: config?.colors?.background || 'var(--background)',\n highlightText: config?.colors?.highlightText || 'var(--secondary)',\n highlightBackground: config?.colors?.highlightBackground || 'var(--secondary-container)',\n\n stickyView: config?.stickyView\n ? {\n top: config.stickyView.top ? getStickyView(config.stickyView.top) : undefined,\n bottom: config.stickyView.bottom ? getStickyView(config.stickyView.bottom) : undefined,\n }\n : undefined,\n };\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ComponentType } from '@angular/cdk/portal';\n\ninterface IPage {\n readonly title: string;\n readonly component: ComponentType<any>;\n readonly icon?: string;\n}\n\nexport interface INgxHelperPageGroup {\n readonly route?: string[];\n readonly header?: ComponentType<any>;\n readonly pages: IPage[];\n\n // SETTING\n readonly mobileView?: boolean;\n readonly sidebarWidth?: string;\n}\n\nexport const NGX_HELPER_PAGE_GROUP_DATA: InjectionToken<any> = new InjectionToken('NGX-HELPER-PAGE-GROUP-DATA');\nexport const NGX_HELPER_PAGE_GROUP_INDEX: InjectionToken<number> = new InjectionToken('NGX-HELPER-PAGE-GROUP-INDEX');\nexport const NGX_HELPER_PAGE_GROUP_TITLE: InjectionToken<string> = new InjectionToken('NGX-HELPER-PAGE-GROUP-TITLE');\n","import {\n Component,\n EventEmitter,\n HostBinding,\n Inject,\n Injector,\n Input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { MatIcon } from '@angular/material/icon';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { INgxHelperConfig, NGX_HELPER_CONFIG } from '../../ngx-helper.config';\n\nimport { ComponentService, IComponentConfig } from '../component.service';\n\nimport {\n INgxHelperPageGroup,\n NGX_HELPER_PAGE_GROUP_DATA,\n NGX_HELPER_PAGE_GROUP_INDEX,\n NGX_HELPER_PAGE_GROUP_TITLE,\n} from './ngx-helper-page-group.interface';\n\n@Component({\n selector: 'ngx-helper-page-group',\n host: { '(window:resize)': 'onResize($event)' },\n imports: [NgComponentOutlet, MatIcon],\n providers: [ComponentService],\n templateUrl: './ngx-helper-page-group.component.html',\n styleUrl: './ngx-helper-page-group.component.scss',\n})\nexport class NgxHelperPageGroupComponent implements OnInit, OnChanges {\n @HostBinding('style.display') display: string = 'none';\n @HostBinding('style.--mobile-toolbar-height') private toolbarHeight: string = '32px';\n\n @Input({ required: true }) pageGroup!: INgxHelperPageGroup;\n @Input({ required: false }) pageIndex: number = 0;\n @Input({ required: false }) data?: any;\n @Output() pageIndexChanged: EventEmitter<number> = new EventEmitter<number>();\n\n public isMobile: boolean = false;\n public injector!: Injector;\n\n public sidebarWidth!: string;\n public componentConfig!: IComponentConfig;\n\n private swipeStart?: number;\n private swipeLeft: number = 0;\n\n constructor(\n private readonly activatedRoute: ActivatedRoute,\n private readonly router: Router,\n private readonly componentService: ComponentService,\n @Optional() @Inject(NGX_HELPER_CONFIG) private readonly config?: Partial<INgxHelperConfig>,\n ) {}\n\n ngOnInit(): void {\n this.display = this.pageGroup.pages.length === 0 ? 'none' : 'block';\n\n this.sidebarWidth = this.pageGroup.sidebarWidth || this.config?.sidebarWidth || '200px';\n this.componentConfig = this.componentService.getComponentConfig(this.config);\n\n if (this.pageIndex < 0) this.pageIndex = 0;\n else if (this.pageIndex > this.pageGroup.pages.length - 1) this.pageIndex = this.pageGroup.pages.length - 1;\n\n const queryParams: { [key: string]: any } = { ...this.activatedRoute.snapshot.queryParams };\n if (!!this.pageGroup.route && Helper.IS.number(+queryParams['ngx-helper-page-group'])) {\n const index: number = +queryParams['ngx-helper-page-group'];\n if (index >= 0 && index <= this.pageGroup.pages.length - 1) {\n this.pageIndex = index;\n this.pageIndexChanged.next(this.pageIndex);\n }\n }\n\n this.onResize();\n this.setInjector();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.setInjector();\n }\n\n onResize(): void {\n const mobileWidth: number = this.config?.mobileWidth || 600;\n this.isMobile = this.pageGroup.mobileView || window.innerWidth <= mobileWidth;\n }\n\n setInjector(): void {\n this.injector = Injector.create({\n providers: [\n { provide: NGX_HELPER_PAGE_GROUP_DATA, useValue: this.data },\n { provide: NGX_HELPER_PAGE_GROUP_INDEX, useValue: this.pageIndex },\n { provide: NGX_HELPER_PAGE_GROUP_TITLE, useValue: this.pageGroup.pages[this.pageIndex].title },\n ],\n });\n }\n\n setPage(index: number): void {\n if (this.pageIndex === index || index < 0 || index > this.pageGroup.pages.length - 1) return;\n\n this.pageIndex = index;\n this.pageIndexChanged.next(this.pageIndex);\n this.setInjector();\n\n if (this.pageGroup.route) {\n const queryParams: { [key: string]: any } = { ...this.activatedRoute.snapshot.queryParams };\n queryParams['ngx-helper-page-group'] = this.pageIndex.toString();\n this.router.navigate(this.pageGroup.route, { queryParams });\n }\n }\n\n swipe(\n event: MouseEvent | TouchEvent,\n action: 'START' | 'MOVE' | 'END',\n header: HTMLElement,\n container: HTMLElement,\n ): void {\n if (header.offsetWidth > container.offsetWidth) return;\n const clientX: number = event instanceof MouseEvent ? event.clientX : event.changedTouches[0].clientX;\n\n switch (action) {\n case 'START':\n this.swipeStart = clientX - this.swipeLeft;\n break;\n case 'END':\n this.swipeStart = undefined;\n\n break;\n case 'MOVE':\n if (!this.swipeStart) return;\n\n let left: number = clientX - this.swipeStart;\n\n if (left <= 0) left = 0;\n else if (left > container.offsetWidth - header.offsetWidth)\n left = container.offsetWidth - header.offsetWidth;\n\n this.swipeLeft = left;\n container.style.left = `${left}px`;\n break;\n }\n }\n}\n","<content [class.mobile]=\"isMobile\">\n <!-- DESKTOP VIEW -->\n @if (!isMobile) {\n <section\n class=\"desktop-pages\"\n [style.width]=\"sidebarWidth\"\n [style.position]=\"componentConfig.stickyView?.top ? 'sticky' : 'static'\"\n [style.top]=\"componentConfig.stickyView?.top?.desktopView || undefined\"\n >\n @for (item of pageGroup.pages; track $index) {\n <div\n class=\"page\"\n [style.color]=\"pageIndex === $index ? componentConfig.highlightText : ''\"\n [style.border-color]=\"pageIndex === $index ? componentConfig.highlightText : componentConfig.border\"\n [style.background-color]=\"pageIndex === $index ? componentConfig.highlightBackground : ''\"\n [style.cursor]=\"pageIndex === $index ? 'default' : 'pointer'\"\n (click)=\"setPage($index)\"\n >\n <!-- ICON -->\n @if (item.icon) { <mat-icon>{{ item.icon }}</mat-icon> }\n <div class=\"title\">{{ item.title }}</div>\n <!-- CURRENT PAGE -->\n @if (pageIndex === $index) { <mat-icon>keyboard_double_arrow_left</mat-icon> }\n </div>\n }\n </section>\n }\n\n <!-- MOBILE VIEW -->\n @if (isMobile) {\n <div\n class=\"mobile-pages\"\n [style.background-color]=\"componentConfig.background\"\n [style.position]=\"componentConfig.stickyView?.top ? 'sticky' : 'static'\"\n [style.top]=\"componentConfig.stickyView?.top?.mobileView || undefined\"\n (mousedown)=\"swipe($event, 'START', header, container)\"\n (mousemove)=\"swipe($event, 'MOVE', header, container)\"\n (mouseup)=\"swipe($event, 'END', header, container)\"\n (touchstart)=\"swipe($event, 'START', header, container)\"\n (touchmove)=\"swipe($event, 'MOVE', header, container)\"\n (touchend)=\"swipe($event, 'END', header, container)\"\n #header\n >\n <div class=\"pages\" #container>\n @for (item of pageGroup.pages; track $index) {\n <div\n class=\"page\"\n [style.color]=\"pageIndex === $index ? componentConfig.highlightText : ''\"\n [style.border-color]=\"pageIndex === $index ? componentConfig.highlightText : componentConfig.border\"\n [style.background-color]=\"pageIndex === $index ? componentConfig.highlightBackground : ''\"\n [style.cursor]=\"pageIndex === $index ? 'default' : 'pointer'\"\n (click)=\"setPage($index)\"\n >\n <!-- ICON -->\n @if (item.icon) { <mat-icon>{{ item.icon }}</mat-icon> }\n <div class=\"title\">{{ item.title }}</div>\n </div>\n }\n </div>\n </div>\n\n <div\n class=\"seperator\"\n [style.background-color]=\"componentConfig.background\"\n [style.position]=\"componentConfig.stickyView?.top ? 'sticky' : 'static'\"\n [style.top]=\"\n 'calc(' + (componentConfig.stickyView?.top?.mobileView || undefined) + ' + var(--mobile-toolbar-height) + 2px)'\n \"\n ></div>\n }\n\n <section class=\"content\">\n <!-- HEADER -->\n @if (pageGroup.header) {\n <div\n [style.background-color]=\"componentConfig.background\"\n [style.position]=\"componentConfig.stickyView?.top ? 'sticky' : 'static'\"\n [style.top]=\"\n (isMobile\n ? 'calc(' +\n (componentConfig.stickyView?.top?.mobileView || undefined) +\n ' + var(--mobile-toolbar-height) + 2px + 1rem)'\n : componentConfig.stickyView?.top?.desktopView) || undefined\n \"\n >\n <span *ngComponentOutlet=\"pageGroup.header; injector: injector\"></span>\n <div class=\"seperator\"></div>\n </div>\n }\n <span *ngComponentOutlet=\"pageGroup.pages[pageIndex].component; injector: injector\"></span>\n </section>\n</content>\n","import { Directive, ElementRef, inject, Inject, Input, OnInit, Optional } from '@angular/core';\n\nimport { INgxHelperConfig, NGX_HELPER_CONFIG } from '../../ngx-helper.config';\n\nimport { ComponentService } from '../component.service';\n\n@Directive({\n selector: '[ngxHelperSectionSticky]',\n host: { '(window:resize)': 'onResize($event)' },\n})\nexport class NgxHelperSectionStickyDirective implements OnInit {\n @Input({ required: true }) public ngxHelperSectionSticky!: 'TOP' | 'BOTTOM';\n @Input({ required: false }) public ngxHelperSectionZIndex?: number;\n\n private componentService = inject(ComponentService);\n private isMobile: boolean = false;\n\n constructor(\n private readonly elementRef: ElementRef,\n @Optional() @Inject(NGX_HELPER_CONFIG) private readonly config?: Partial<INgxHelperConfig>,\n ) {}\n\n ngOnInit(): void {\n this.onResize();\n }\n\n onResize(): void {\n const mobileWidth: number = this.config?.mobileWidth || 600;\n this.isMobile = window.innerWidth <= mobileWidth;\n\n this.setPosition();\n }\n\n setPosition(): void {\n const element: HTMLElement = this.elementRef.nativeElement;\n if (!element) return;\n\n const config = this.componentService.getComponentConfig(this.config);\n switch (this.ngxHelperSectionSticky) {\n case 'TOP':\n const top = config.stickyView?.top;\n if (!top) return;\n\n element.style.position = 'sticky';\n element.style.zIndex = this.ngxHelperSectionZIndex ? this.ngxHelperSectionZIndex.toString() : '1';\n element.style.top = this.isMobile ? top.mobileView : top.desktopView;\n break;\n\n case 'BOTTOM':\n const bottom = config.stickyView?.bottom;\n if (!bottom) return;\n\n element.style.position = 'sticky';\n element.style.zIndex = this.ngxHelperSectionZIndex ? this.ngxHelperSectionZIndex.toString() : '1';\n element.style.bottom = this.isMobile ? bottom.mobileView : bottom.desktopView;\n break;\n }\n }\n}\n","import { Component, HostBinding, Inject, Input, OnInit, Optional } from '@angular/core';\n\nimport { INgxHelperConfig, NGX_HELPER_CONFIG } from '../../ngx-helper.config';\n\nimport { ComponentService, IComponentConfig } from '../component.service';\n\n@Component({\n selector: 'ngx-helper-section',\n host: { '(window:resize)': 'onResize($event)' },\n imports: [],\n providers: [ComponentService],\n templateUrl: './ngx-helper-section.component.html',\n styleUrl: './ngx-helper-section.component.scss',\n})\nexport class NgxHelperSectionComponent implements OnInit {\n @HostBinding('style.--section-gap') private gap!: string;\n @HostBinding('style.--section-background-color') private backgroundColor!: string;\n\n @Input({ required: false }) gapSize?: string;\n @Input({ required: false }) mobileView?: boolean;\n\n public isMobile: boolean = false;\n public componentConfig!: IComponentConfig;\n\n constructor(\n private readonly componentService: ComponentService,\n @Optional() @Inject(NGX_HELPER_CONFIG) private readonly config?: Partial<INgxHelperConfig>,\n ) {}\n\n ngOnInit(): void {\n this.componentConfig = this.componentService.getComponentConfig(this.config);\n\n this.gap = this.gapSize || '1rem';\n this.backgroundColor = this.componentConfig.background;\n\n this.onResize();\n }\n\n onResize(): void {\n const mobileWidth: number = this.config?.mobileWidth || 600;\n this.isMobile = this.mobileView || window.innerWidth <= mobileWidth;\n }\n}\n","<div class=\"columns\" [class.mobile]=\"isMobile\">\n <ng-content></ng-content>\n</div>\n","import { Component, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\n\n@Component({\n selector: 'ngx-helper-section-column',\n imports: [],\n templateUrl: './ngx-helper-section-column.component.html',\n styleUrl: './ngx-helper-section-column.component.scss',\n})\nexport class NgxHelperSectionColumnComponent implements OnChanges {\n @HostBinding('style.flex') flexStyle: string = '1';\n @HostBinding('style.width') widthStyle: string = '*';\n\n @Input({ required: false }) flex?: number;\n @Input({ required: false }) width?: string;\n @Input({ required: false }) sticky?: 'TOP' | 'BOTTOM';\n\n ngOnChanges(changes: SimpleChanges): void {\n this.flexStyle = this.width ? 'unset' : this.flex?.toString() || '1';\n this.widthStyle = this.width || '*';\n }\n}\n","<ng-content></ng-content>\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperBankCard' })\nexport class NgxHelperBankCardPipe implements PipeTransform {\n transform(value: string, options?: { view?: 'CARD' | 'BANK'; join?: string }): string {\n if (!Helper.IS.string(value) || value === '') return '';\n\n switch (options?.view) {\n case 'BANK':\n return Helper.BANK.findCard(value)?.title || '';\n default:\n return Helper.STRING.getBankCardView(value, options?.join || '-');\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\nimport { JalaliDateTime } from '@webilix/jalali-date-time';\n\ntype Formats = string | 'FULL' | 'SHORT' | 'DATE' | 'TIME' | 'WEEK' | 'MONTH' | 'YEAR';\n\n@Pipe({ name: 'ngxHelperDate' })\nexport class NgxHelperDatePipe implements PipeTransform {\n transform(value: Date, options?: { format?: Formats; timezone?: string }): string;\n transform(value: number, options?: { format?: Formats; timezone?: string }): string;\n transform(value: any, options?: { format?: Formats; timezone?: string }): string {\n if (!value || (!Helper.IS.date(value) && !Helper.IS.number(value))) return '';\n\n const date: Date = typeof value === 'number' ? new Date(value) : value;\n const jalali = JalaliDateTime();\n const timezone: string =\n options?.timezone && jalali.timezones().includes(options?.timezone) ? options?.timezone : 'Asia/Tehran';\n\n switch (options?.format || 'DATE') {\n case 'FULL':\n return jalali.toFullText(date, { format: 'W، d N Y H:I', timezone });\n\n case 'SHORT':\n return jalali.toFullText(date, { format: 'Y/M/D', timezone });\n\n case 'DATE':\n return jalali.toFullText(date, { format: 'W، d N Y', timezone });\n\n case 'TIME':\n return jalali.toFullText(date, { format: 'H:I', timezone });\n\n case 'WEEK':\n const { from, to } = jalali.periodWeek(1, date, timezone);\n return Helper.DATE.jalaliPeriod(from, to, timezone);\n\n case 'MONTH':\n return jalali.toFullText(date, { format: 'N Y', timezone });\n\n case 'YEAR':\n return jalali.toFullText(date, { format: 'Y', timezone });\n\n default:\n return jalali.toFullText(date, { format: options?.format, timezone });\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\ntype Formats = 'TEXT' | 'FULL' | 'DAY' | 'HOUR' | 'MINUTE' | 'SECOND';\n\n@Pipe({ name: 'ngxHelperDuration' })\nexport class NgxHelperDurationPipe implements PipeTransform {\n transform(value: number, options?: { format?: Formats; english?: boolean }): string;\n transform(value: Date, options?: { format?: Formats; english?: boolean }): string;\n transform(value: { from: Date }, options?: { format?: Formats; english?: boolean }): string;\n transform(value: { to: Date }, options?: { format?: Formats; english?: boolean }): string;\n transform(value: { from: Date; to: Date }, options?: { format?: Formats; english?: boolean }): string;\n transform(value: any, options?: { format?: Formats; english?: boolean }): string {\n let seconds: number = 0;\n if (Helper.IS.number(value)) seconds = Math.abs(value);\n else if (Helper.IS.date(value)) seconds = Math.floor(Math.abs(new Date().getTime() - value.getTime()) / 1000);\n else if (Helper.IS.object(value)) {\n const from: Date = 'from' in value ? value.from : new Date();\n const to: Date = 'to' in value ? value.to : new Date();\n seconds = Math.floor(Math.abs(from.getTime() - to.getTime()) / 1000);\n }\n\n const days: number = Math.floor(seconds / (24 * 60 * 60));\n seconds -= days * (24 * 60 * 60);\n const hours: number = Math.floor(seconds / (60 * 60));\n seconds -= hours * (60 * 60);\n const minutes: number = Math.floor(seconds / 60);\n seconds -= minutes * 60;\n\n const hasDays: boolean = days !== 0;\n const time: string = [hours, minutes, seconds].map((v) => v.toString().padStart(2, '0')).join(':');\n\n switch (options?.format || 'TEXT') {\n case 'TEXT':\n const hasTime: boolean = !!hours || !!minutes || !!seconds;\n const day: string = hasDays\n ? Helper.NUMBER.format(days, 'EN') + (!!options?.english ? (days === 1 ? ' day' : ' days') : ' روز')\n : '';\n const join = hasDays && hasTime ? (!!options?.english ? ', ' : ' و ') : '';\n return (day + join + (!hasDays || hasTime ? time : '')).trim();\n\n case 'FULL':\n return (hasDays ? Helper.NUMBER.format(days, 'EN') + ':' : '') + time;\n\n case 'DAY':\n return Helper.NUMBER.format(days + (hours !== 0 || minutes !== 0 ? 1 : 0), !!options?.english ? 'EN' : 'FA');\n\n case 'HOUR':\n return Helper.NUMBER.format(days * 24 + hours + (minutes !== 0 ? 1 : 0), !!options?.english ? 'EN' : 'FA');\n\n case 'MINUTE':\n return Helper.NUMBER.format(days * 24 * 60 + hours * 60 + minutes, !!options?.english ? 'EN' : 'FA');\n\n case 'SECOND':\n return Helper.NUMBER.format(\n days * 24 * 3600 + hours * 3600 + minutes * 60 + seconds,\n !!options?.english ? 'EN' : 'FA',\n );\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperFileSize' })\nexport class NgxHelperFileSizePipe implements PipeTransform {\n transform(size: number, options?: { english?: boolean }): string {\n return Helper.NUMBER.toFileSize(size, !!options?.english ? 'EN' : 'FA');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperMobile' })\nexport class NgxHelperMobilePipe implements PipeTransform {\n transform(value: string, options?: { join?: string }): string {\n if (!Helper.IS.string(value) || value === '') return '';\n\n return Helper.STRING.getMobileView(value, options?.join || '-');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperMultiLine' })\nexport class NgxHelperMultiLinePipe implements PipeTransform {\n constructor(private readonly sanitizer: DomSanitizer) {}\n\n transform(value: string, options?: { html?: boolean }): string | SafeHtml {\n if (!Helper.IS.string(value) || value === '') return '';\n\n return options?.html\n ? this.sanitizer.bypassSecurityTrustHtml(value.replace(/(?:\\r\\n|\\r|\\n)/g, '<br />'))\n : Helper.STRING.escapeHTML(value).replace(/(?:\\r\\n|\\r|\\n)/g, '<br />');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperNumber' })\nexport class NgxHelperNumberPipe implements PipeTransform {\n transform(value: number, options?: { fractionDigits?: number; english?: boolean }): string {\n if (!Helper.IS.number(value)) return '';\n\n value = options?.fractionDigits ? +value.toFixed(options?.fractionDigits) : value;\n return Helper.NUMBER.format(value, options?.english ? 'EN' : 'FA');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperPeriod' })\nexport class NgxHelperPeriodPipe implements PipeTransform {\n transform(value: Date, options?: { timezone?: string }): string;\n transform(value: { from: Date }, options?: { timezone?: string }): string;\n transform(value: { to: Date }, options?: { timezone?: string }): string;\n transform(value: { from: Date; to: Date }, options?: { timezone?: string }): string;\n transform(value: any, options?: { timezone?: string }): string {\n const from: Date = Helper.IS.date(value) ? value : 'from' in value ? value.from : new Date();\n const to: Date = Helper.IS.date(value) ? new Date() : 'to' in value ? value.to : new Date();\n\n return Helper.DATE.jalaliPeriod(from, to, options?.timezone || '');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperPrice' })\nexport class NgxHelperPricePipe implements PipeTransform {\n transform(value: number, options?: { currency?: string; short?: boolean; english?: boolean }): string {\n if (!Helper.IS.number(value) || value < 0) return '';\n\n const getPrice = (...titles: [string, string][]): string => {\n const price: string = Helper.NUMBER.format(+value.toFixed(2), !!options?.english ? 'EN' : 'FA');\n const unit: string = titles[options?.short ? 0 : 1][options?.english ? 0 : 1];\n const currency: string = options?.currency ? ' ' + options?.currency : '';\n\n return `${price} ${unit}${currency}`;\n };\n\n if (value < 1000) return getPrice(['', ''], ['', '']);\n\n value /= 1000;\n if (value < 1000) return getPrice(['T', 'ه'], ['Thousand', 'هزار']);\n\n value /= 1000;\n if (value < 1000) return getPrice(['M', 'م'], ['Million', 'میلیون']);\n\n value /= 1000;\n return getPrice(['B', 'د'], ['Billion', 'میلیارد']);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';\n\nimport { Helper } from '@webilix/helper-library';\n\ntype Types = 'HTML' | 'STYLE' | 'SCRIPT' | 'URL' | 'RESOURCE_URL';\n\n@Pipe({ name: 'ngxHelperSafe' })\nexport class NgxHelperSafePipe implements PipeTransform {\n constructor(private readonly domSanitizer: DomSanitizer) {}\n\n transform(\n value: string,\n options?: { type?: Types },\n ): string | SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n if (!Helper.IS.string(value) || value === '') return '';\n\n switch (options?.type || 'HTML') {\n case 'STYLE':\n return this.domSanitizer.bypassSecurityTrustStyle(value);\n case 'SCRIPT':\n return this.domSanitizer.bypassSecurityTrustScript(value);\n case 'URL':\n return this.domSanitizer.bypassSecurityTrustUrl(value);\n case 'RESOURCE_URL':\n return this.domSanitizer.bypassSecurityTrustResourceUrl(value);\n case 'HTML':\n return this.domSanitizer.bypassSecurityTrustHtml(value);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperVolume' })\nexport class NgxHelperVolumePipe implements PipeTransform {\n transform(value: number, options?: { short?: boolean; english?: boolean }): string {\n if (!Helper.IS.number(value) || value < 0) return '';\n\n const getVolume = (...titles: [string, string][]): string => {\n const volume: string = Helper.NUMBER.format(+value.toFixed(2), options?.english ? 'EN' : 'FA');\n const shortIndex: number = options?.short ? 0 : 1;\n const titleIndex: number = options?.english ? 0 : 1;\n return `${volume} ${titles[shortIndex][titleIndex]}`;\n };\n\n if (value === 0) return getVolume(['', ''], ['', '']);\n\n if (value < 1000) return getVolume(['ML', 'م'], ['Milliliter', 'میلی لیتر']);\n\n value /= 1000;\n return getVolume(['L', 'ل'], ['Liter', 'لیتر']);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperWeight' })\nexport class NgxHelperWeightPipe implements PipeTransform {\n transform(value: number, options?: { short?: boolean; english?: boolean }): string {\n if (!Helper.IS.number(value) || value < 0) return '';\n\n const getWeight = (...titles: [string, string][]): string => {\n const weight: string = Helper.NUMBER.format(+value.toFixed(2), options?.english ? 'EN' : 'FA');\n const shortIndex: number = options?.short ? 0 : 1;\n const titleIndex: number = options?.english ? 0 : 1;\n return `${weight} ${titles[shortIndex][titleIndex]}`;\n };\n\n if (value === 0) return getWeight(['', ''], ['', '']);\n\n if (value < 1000) return getWeight(['G', 'گ'], ['Gram', 'گرم']);\n\n value /= 1000;\n if (value < 1000) return getWeight(['K', 'ک'], ['Kilogram', 'کیلو']);\n\n value /= 1000;\n if (value < 1000) return getWeight(['T', 'ت'], ['Tonne', 'تن']);\n\n value /= 1000;\n return getWeight(['KT', 'ه'], ['Kilotonne', 'هزار تن']);\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { NgClass } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { INgxHelperConfirm } from '../confirm.interface';\n\n@Component({\n host: { selector: 'confirm-dialog' },\n imports: [NgClass, MatButtonModule, MatDialogModule, MatIconModule],\n templateUrl: './confirm-dialog.component.html',\n styleUrl: './confirm-dialog.component.scss',\n})\nexport class ConfirmDialogComponent {\n public confirm: INgxHelperConfirm = inject(MAT_DIALOG_DATA);\n}\n","<mat-dialog-content>\n <content>\n <!-- ICON -->\n @if (confirm.icon) {\n <div class=\"icon\">\n <mat-icon>{{ confirm.icon }}</mat-icon>\n </div>\n }\n\n <!-- CONTENT -->\n <div class=\"content\">\n <div class=\"question\">{{ confirm.question }}</div>\n <!-- DESCRIPTION -->\n @if (confirm.description) {\n <div class=\"description\">{{ confirm.description }}</div>\n }\n <!-- DATA -->\n @if (confirm.data) {\n <div class=\"data\">\n <div class=\"title\">{{ confirm.data.title }}:</div>\n <div class=\"value\">{{ confirm.data.value }}</div>\n </div>\n }\n </div>\n </content>\n</mat-dialog-content>\n<mat-dialog-actions [align]=\"'end'\">\n <button mat-button type=\"button\" mat-dialog-close [ngClass]=\"confirm.denyClass\">خیر</button>\n <button mat-button type=\"button\" [mat-dialog-close]=\"true\" [ngClass]=\"confirm.confirmClass\">بلی</button>\n</mat-dialog-actions>\n","import { Component, inject } from '@angular/core';\nimport { NgClass } from '@angular/common';\n\nimport { MAT_BOTTOM_SHEET_DATA, MatBottomSheetRef } from '@angular/material/bottom-sheet';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { INgxHelperConfirm } from '../confirm.interface';\n\n@Component({\n host: { selector: 'confirm-bottom-sheet' },\n imports: [NgClass, MatButtonModule, MatIconModule],\n templateUrl: './confirm-bottom-sheet.component.html',\n styleUrl: './confirm-bottom-sheet.component.scss',\n})\nexport class ConfirmBottomSheetComponent {\n public confirm: INgxHelperConfirm = inject(MAT_BOTTOM_SHEET_DATA);\n\n constructor(private readonly matBottomSheetRef: MatBottomSheetRef<ConfirmBottomSheetComponent>) {}\n\n close(confirmed?: boolean) {\n this.matBottomSheetRef.dismiss(confirmed);\n }\n}\n","<content>\n <!-- ICON -->\n @if (confirm.icon) {\n <div class=\"icon\">\n <mat-icon>{{ confirm.icon }}</mat-icon>\n </div>\n }\n\n <!-- CONTENT -->\n <div class=\"content\">\n <div class=\"question\">{{ confirm.question }}</div>\n <!-- DESCRIPTION -->\n @if (confirm.description) {\n <div class=\"description\">{{ confirm.description }}</div>\n }\n <!-- DATA -->\n @if (confirm.data) {\n <div class=\"data\">\n <div class=\"title\">{{ confirm.data.title }}:</div>\n <div class=\"value\">{{ confirm.data.value }}</div>\n </div>\n }\n </div>\n</content>\n\n<div class=\"buttons\">\n <button mat-button type=\"button\" (click)=\"close()\" [ngClass]=\"confirm.denyClass\">خیر</button>\n <button mat-button type=\"button\" (click)=\"close(true)\" [ngClass]=\"confirm.confirmClass\">بلی</button>\n</div>\n","import { Injectable } from '@angular/core';\n\nimport { MatBottomSheet, MatBottomSheetConfig } from '@angular/material/bottom-sheet';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\n\nimport { ConfirmDialogComponent } from './dialog/confirm-dialog.component';\nimport { ConfirmBottomSheetComponent } from './bottom-sheet/confirm-bottom-sheet.component';\n\nimport { INgxHelperConfirm } from './confirm.interface';\n\ninterface IConfirmData {\n readonly title: string;\n readonly value?: string;\n}\n\ninterface IConfirmConfig {\n readonly description: string;\n readonly confirmClass: string;\n readonly denyClass: string;\n}\n\nclass NgxHelperConfirmCalss {\n constructor(\n private readonly matBottomSheet: MatBottomSheet,\n private readonly matDialog: MatDialog,\n private readonly confirm: INgxHelperConfirm,\n ) {}\n\n dialog(onConfirmed: () => void): void;\n dialog(onConfirmed: () => void, onDenied: () => void): void;\n dialog(onConfirmed: () => void, config: MatDialogConfig): void;\n dialog(onConfirmed: () => void, onDenied: () => void, config: MatDialogConfig): void;\n dialog(onConfirmed: () => void, arg1?: any, arg2?: any): void {\n const onDenied: (() => void) | undefined = typeof arg1 === 'function' ? arg1 : undefined;\n const config: MatDialogConfig = arg2 || (typeof arg1 !== 'function' ? arg1 : {});\n\n this.matDialog\n .open<any, any, boolean>(ConfirmDialogComponent, {\n // DEFAULT CONFIG\n width: 'calc(100vw - 4rem)',\n direction: 'rtl',\n enterAnimationDuration: '100ms',\n exitAnimationDuration: '100ms',\n // OVERWRITE CONFIG\n ...config,\n maxHeight: '80vh',\n // DATA\n data: this.confirm,\n })\n .afterClosed()\n .subscribe({ next: (confirmed?: boolean) => (!!confirmed ? onConfirmed() : onDenied ? onDenied() : undefined) });\n }\n\n bottomSheet(onConfirmed: () => void): void;\n bottomSheet(onConfirmed: () => void, onDenied: () => void): void;\n bottomSheet(onConfirmed: () => void, config: MatBottomSheetConfig): void;\n bottomSheet(onConfirmed: () => void, onDenied: () => void, config: MatBottomSheetConfig): void;\n bottomSheet(onConfirmed: () => void, arg1?: any, arg2?: any): void {\n const onDenied: (() => void) | undefined = typeof arg1 === 'function' ? arg1 : undefined;\n const config: MatBottomSheetConfig = arg2 || (typeof arg1 !== 'function' ? arg1 : {});\n\n this.matBottomSheet\n .open<any, any, boolean>(ConfirmBottomSheetComponent, {\n // DEFAULT CONFIG\n direction: 'rtl',\n // OVERWRITE CONFIG\n ...config,\n maxHeight: '80vh',\n // DATA\n data: this.confirm,\n })\n .afterDismissed()\n .subscribe({ next: (confirmed?: boolean) => (!!confirmed ? onConfirmed() : onDenied ? onDenied() : undefined) });\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NgxHelperConfirmService {\n constructor(private readonly matBottomSheet: MatBottomSheet, private readonly matDialog: MatDialog) {}\n\n verify(confirm: INgxHelperConfirm): NgxHelperConfirmCalss {\n return new NgxHelperConfirmCalss(this.matBottomSheet, this.matDialog, confirm);\n }\n\n active(data: IConfirmData): NgxHelperConfirmCalss;\n active(data: IConfirmData, config: Partial<IConfirmConfig>): NgxHelperConfirmCalss;\n active(data: IConfirmData, config?: Partial<IConfirmConfig>): NgxHelperConfirmCalss {\n return this.verify({\n question: `آیا میخواهید ${data.title} انتخاب شده را فعال کنید؟`,\n description: config?.description,\n data: data.value ? { title: data.title, value: data.value } : undefined,\n icon: 'check_box',\n confirmClass: config?.confirmClass,\n denyClass: config?.denyClass,\n });\n }\n\n deactive(data: IConfirmData): NgxHelperConfirmCalss;\n deactive(data: IConfirmData, config: Partial<IConfirmConfig>): NgxHelperConfirmCalss;\n deactive(data: IConfirmData, config?: Partial<IConfirmConfig>): NgxHelperConfirmCalss {\n return this.verify({\n question: `آیا میخواهید ${data.title} انتخاب شده را غیرفعال کنید؟`,\n description: config?.description,\n data: data.value ? { title: data.title, value: data.value } : undefined,\n icon: 'disabled_by_default',\n confirmClass: config?.confirmClass || 'error',\n denyClass: config?.denyClass,\n });\n }\n\n status(active: boolean, data: IConfirmData): NgxHelperConfirmCalss;\n status(active: boolean, data: IConfirmData, config: Partial<IConfirmConfig>): NgxHelperConfirmCalss;\n status(active: boolean, data: IConfirmData, config?: Partial<IConfirmConfig>): NgxHelperConfirmCalss {\n return active ? this.active(data, config || {}) : this.deactive(data, config || {});\n }\n\n delete(data: IConfirmData): NgxHelperConfirmCalss;\n delete(data: IConfirmData, config: Partial<IConfirmConfig>): NgxHelperConfirmCalss;\n delete(data: IConfirmData, config?: Partial<IConfirmConfig>): NgxHelperConfirmCalss {\n return this.verify({\n question: `آیا میخواهید ${data.title} انتخاب شده را حذف کنید؟`,\n description: config?.description,\n data: data.value ? { title: data.title, value: data.value } : undefined,\n icon: 'delete',\n confirmClass: config?.confirmClass || 'error',\n denyClass: config?.denyClass,\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface INgxHelperContainerConfig {\n data?: any;\n padding?: string;\n hideClose?: boolean;\n}\n\nexport type NgxHelperContainer = 'DIALOG' | 'BOTTOMSHEET';\n\nexport const NGX_HELPER_CONTAINER_TYPE: InjectionToken<NgxHelperContainer> = new InjectionToken('NGX-HELPER-CONTAINER-TYPE');\nexport const NGX_HELPER_CONTAINER_DATA: InjectionToken<any> = new InjectionToken<any>('NGX-HELPER-CONTAINER-DATA');\nexport const NGX_HELPER_CONTAINER_CLOSE: InjectionToken<(response?: any) => void> = new InjectionToken(\n 'NGX-HELPER-CONTAINER-CLOSE',\n);\n","import { NgComponentOutlet } from '@angular/common';\nimport { Component, inject, Injector, OnInit } from '@angular/core';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatIcon } from '@angular/material/icon';\n\nimport {\n INgxHelperContainerConfig,\n NGX_HELPER_CONTAINER_CLOSE,\n NGX_HELPER_CONTAINER_DATA,\n NGX_HELPER_CONTAINER_TYPE,\n} from '../container.interface';\n\n@Component({\n host: { selector: 'container-dialog' },\n imports: [NgComponentOutlet, MatIconButton, MatIcon],\n templateUrl: './container-dialog.component.html',\n styleUrl: './container-dialog.component.scss',\n})\nexport class ContainerDialogComponent implements OnInit {\n public container: {\n component: ComponentType<any>;\n readonly title: string;\n readonly config: INgxHelperContainerConfig;\n } = inject(MAT_DIALOG_DATA);\n\n public injector!: Injector;\n\n constructor(private readonly matDialogRef: MatDialogRef<ContainerDialogComponent>) {}\n\n ngOnInit(): void {\n this.injector = Injector.create({\n providers: [\n { provide: NGX_HELPER_CONTAINER_TYPE, useValue: 'DIALOG' },\n { provide: NGX_HELPER_CONTAINER_DATA, useValue: this.container.config.data },\n {\n provide: NGX_HELPER_CONTAINER_CLOSE,\n useFactory: () => (response?: any) => this.matDialogRef.close(response),\n },\n ],\n });\n }\n\n close(): void {\n this.matDialogRef.close();\n }\n}\n","<header>\n <div class=\"title\">{{ container.title }}</div>\n @if (!container.config.hideClose) {\n <button mat-icon-button type=\"button\" (click)=\"close()\"><mat-icon>close</mat-icon></button>\n }\n</header>\n<content [style.padding]=\"container.config.padding || '1rem'\">\n <span *ngComponentOutlet=\"container.component; injector: injector\"></span>\n</content>\n","import { NgComponentOutlet } from '@angular/common';\nimport { Component, inject, Injector, OnInit } from '@angular/core';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { MAT_BOTTOM_SHEET_DATA, MatBottomSheetRef } from '@angular/material/bottom-sheet';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\n\nimport {\n INgxHelperContainerConfig,\n NGX_HELPER_CONTAINER_CLOSE,\n NGX_HELPER_CONTAINER_DATA,\n NGX_HELPER_CONTAINER_TYPE,\n} from '../container.interface';\n\n@Component({\n host: { selector: 'container-bottom-sheet' },\n imports: [NgComponentOutlet, MatIconButton, MatIcon],\n templateUrl: './container-bottom-sheet.component.html',\n styleUrl: './container-bottom-sheet.component.scss',\n})\nexport class ContainerBottomSheetComponent implements OnInit {\n public container: {\n component: ComponentType<any>;\n readonly title: string;\n readonly config: INgxHelperContainerConfig;\n } = inject(MAT_BOTTOM_SHEET_DATA);\n\n public injector!: Injector;\n\n constructor(private readonly matBottomSheetRef: MatBottomSheetRef<ContainerBottomSheetComponent>) {}\n\n ngOnInit(): void {\n this.injector = Injector.create({\n providers: [\n { provide: NGX_HELPER_CONTAINER_TYPE, useValue: 'BOTTOMSHEET' },\n { provide: NGX_HELPER_CONTAINER_DATA, useValue: this.container.config.data },\n {\n provide: NGX_HELPER_CONTAINER_CLOSE,\n useFactory: () => (response?: any) => this.matBottomSheetRef.dismiss(response),\n },\n ],\n });\n }\n\n close(): void {\n this.matBottomSheetRef.dismiss();\n }\n}\n","<header>\n <div class=\"title\">{{ container.title }}</div>\n @if (!container.config.hideClose) {\n <button mat-icon-button type=\"button\" (click)=\"close()\"><mat-icon>close</mat-icon></button>\n }\n</header>\n<content>\n <div [style.padding]=\"container.config.padding || '1rem'\">\n <span *ngComponentOutlet=\"container.component; injector: injector\"></span>\n </div>\n</content>\n","import { Injectable } from '@angular/core';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { MatBottomSheet, MatBottomSheetConfig } from '@angular/material/bottom-sheet';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\n\nimport { ContainerDialogComponent } from './dialog/container-dialog.component';\nimport { ContainerBottomSheetComponent } from './bottom-sheet/container-bottom-sheet.component';\n\nimport { INgxHelperContainerConfig } from './container.interface';\n\ninterface IContainerData {\n readonly component: ComponentType<any>;\n readonly title: string;\n readonly config: INgxHelperContainerConfig;\n}\n\nclass NgxHelperContainerCalss {\n constructor(\n private readonly matBottomSheet: MatBottomSheet,\n private readonly matDialog: MatDialog,\n private readonly container: IContainerData,\n ) {}\n\n dialog<T>(): void;\n dialog<T>(onResponse: (response: T) => void): void;\n dialog<T>(onResponse: (response: T) => void, onDismiss: () => void): void;\n dialog<T>(onResponse: (response: T) => void, config: MatDialogConfig): void;\n dialog<T>(onResponse: (response: T) => void, onDismiss: () => void, config: MatDialogConfig): void;\n dialog<T>(arg1?: any, arg2?: any, arg3?: any): void {\n const onResponse: ((response: T) => void) | undefined = typeof arg1 === 'function' ? arg1 : undefined;\n const onDismiss: (() => void) | undefined = typeof arg2 === 'function' ? arg2 : undefined;\n const config: MatDialogConfig = arg3 || (typeof arg2 !== 'function' ? arg2 : {});\n\n this.matDialog\n .open(ContainerDialogComponent, {\n // DEFAULT CONFIG\n width: 'calc(100vw - 4rem)',\n direction: 'rtl',\n enterAnimationDuration: '100ms',\n exitAnimationDuration: '100ms',\n // OVERWRITE CONFIG\n ...config,\n maxHeight: '80vh',\n // DATA\n data: this.container,\n })\n .afterClosed()\n .subscribe({\n next: (response?: T) => {\n if (onResponse && !!response) onResponse(response);\n if (onDismiss && !response) onDismiss();\n },\n });\n }\n\n bottomSheet<T>(): void;\n bottomSheet<T>(onResponse: (result: T) => void): void;\n bottomSheet<T>(onResponse: (result: T) => void, onDismiss: () => void): void;\n bottomSheet<T>(onResponse: (result: T) => void, config: MatBottomSheetConfig): void;\n bottomSheet<T>(onResponse: (result: T) => void, onDismiss: () => void, config: MatBottomSheetConfig): void;\n bottomSheet<T>(arg1?: any, arg2?: any, arg3?: any): void {\n const onResponse: ((result: T) => void) | undefined = typeof arg1 === 'function' ? arg1 : undefined;\n const onDismiss: (() => void) | undefined = typeof arg2 === 'function' ? arg2 : undefined;\n const config: MatBottomSheetConfig = arg3 || (typeof arg2 !== 'function' ? arg2 : {});\n\n this.matBottomSheet\n .open<any, any, T>(ContainerBottomSheetComponent, {\n // DEFAULT CONFIG\n direction: 'rtl',\n panelClass: 'ngx-helper-bottom-sheet',\n // OVERWRITE CONFIG\n ...config,\n maxHeight: '80vh',\n // DATA\n data: this.container,\n })\n .afterDismissed()\n .subscribe({\n next: (response?: T) => {\n if (onResponse && !!response) onResponse(response);\n if (onDismiss && !response) onDismiss();\n },\n });\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NgxHelperContainerService {\n constructor(private readonly matBottomSheet: MatBottomSheet, private readonly matDialog: MatDialog) {}\n\n init(component: ComponentType<any>, title: string): NgxHelperContainerCalss;\n init(component: ComponentType<any>, title: string, config: INgxHelperContainerConfig): NgxHelperContainerCalss;\n init(component: ComponentType<any>, title: string, arg1?: any): NgxHelperContainerCalss {\n const config: INgxHelperContainerConfig = arg1 || {};\n\n return new NgxHelperContainerCalss(this.matBottomSheet, this.matDialog, { component, title, config });\n }\n}\n","/*\n * Public API Surface of ngx-helper-m3\n */\n\nexport * from './lib/ngx-helper.config';\n\n// COMPONENTS\nexport * from './lib/components/page-group/ngx-helper-page-group.component';\nexport * from './lib/components/page-group/ngx-helper-page-group.interface';\nexport * from './lib/components/section/ngx-helper-section-sticky.directive';\nexport * from './lib/components/section/ngx-helper-section.component';\nexport * from './lib/components/section/column/ngx-helper-section-column.component';\n\n// PIPES\nexport * from './lib/pipes/bank-card.pipe';\nexport * from './lib/pipes/date.pipe';\nexport * from './lib/pipes/duration.pipe';\nexport * from './lib/pipes/file-size.pipe';\nexport * from './lib/pipes/mobile.pipe';\nexport * from './lib/pipes/multi-line.pipe';\nexport * from './lib/pipes/number.pipe';\nexport * from './lib/pipes/period.pipe';\nexport * from './lib/pipes/price.pipe';\nexport * from './lib/pipes/safe.pipe';\nexport * from './lib/pipes/volume.pipe';\nexport * from './lib/pipes/weight.pipe';\n\n// SERVICES\nexport * from './lib/confirm/confirm.interface';\nexport * from './lib/confirm/confirm.service';\nexport * from './lib/container/container.interface';\nexport * from './lib/container/container.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"webilix-ngx-helper-m3.mjs","sources":["../../../ngx-helper-m3/src/lib/ngx-helper.config.ts","../../../ngx-helper-m3/src/lib/components/component.service.ts","../../../ngx-helper-m3/src/lib/components/page-group/ngx-helper-page-group.interface.ts","../../../ngx-helper-m3/src/lib/components/page-group/ngx-helper-page-group.component.ts","../../../ngx-helper-m3/src/lib/components/page-group/ngx-helper-page-group.component.html","../../../ngx-helper-m3/src/lib/components/section/ngx-helper-section-sticky.directive.ts","../../../ngx-helper-m3/src/lib/components/section/ngx-helper-section.component.ts","../../../ngx-helper-m3/src/lib/components/section/ngx-helper-section.component.html","../../../ngx-helper-m3/src/lib/components/section/column/ngx-helper-section-column.component.ts","../../../ngx-helper-m3/src/lib/components/section/column/ngx-helper-section-column.component.html","../../../ngx-helper-m3/src/lib/pipes/bank-card.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/date.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/duration.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/file-size.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/mobile.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/multi-line.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/number.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/period.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/price.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/safe.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/volume.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/weight.pipe.ts","../../../ngx-helper-m3/src/lib/confirm/dialog/confirm-dialog.component.ts","../../../ngx-helper-m3/src/lib/confirm/dialog/confirm-dialog.component.html","../../../ngx-helper-m3/src/lib/confirm/bottom-sheet/confirm-bottom-sheet.component.ts","../../../ngx-helper-m3/src/lib/confirm/bottom-sheet/confirm-bottom-sheet.component.html","../../../ngx-helper-m3/src/lib/confirm/confirm.service.ts","../../../ngx-helper-m3/src/lib/container/container.interface.ts","../../../ngx-helper-m3/src/lib/container/dialog/container-dialog.component.ts","../../../ngx-helper-m3/src/lib/container/dialog/container-dialog.component.html","../../../ngx-helper-m3/src/lib/container/bottom-sheet/container-bottom-sheet.component.ts","../../../ngx-helper-m3/src/lib/container/bottom-sheet/container-bottom-sheet.component.html","../../../ngx-helper-m3/src/lib/container/container.service.ts","../../../ngx-helper-m3/src/public-api.ts","../../../ngx-helper-m3/src/webilix-ngx-helper-m3.ts"],"sourcesContent":["import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders, Provider } from '@angular/core';\n\nexport interface INgxHelperConfig {\n readonly mobileWidth: number;\n\n // PAGE GROUP\n readonly pageGroupSidebarWidth: string;\n\n // STICKY\n readonly stickyView: {\n readonly top?: string | { readonly desktopView: string; readonly mobileView: string };\n readonly bottom?: string | { readonly desktopView: string; readonly mobileView: string };\n };\n}\n\nexport const NGX_HELPER_CONFIG = new InjectionToken<Partial<INgxHelperConfig>>('NGX-HELPER-CONFIG');\n\nexport const provideNgxHelperConfig = (config: Partial<INgxHelperConfig>): EnvironmentProviders => {\n const providers: Provider[] = [{ provide: NGX_HELPER_CONFIG, useValue: config }];\n\n return makeEnvironmentProviders(providers);\n};\n","import { Injectable } from '@angular/core';\n\nimport { INgxHelperConfig } from '../ngx-helper.config';\n\nexport interface IComponentConfig {\n readonly mobileWidth: number;\n readonly pageGroupSidebarWidth: string;\n readonly stickyView?: {\n readonly top?: { readonly desktopView: string; readonly mobileView: string };\n readonly bottom?: { readonly desktopView: string; readonly mobileView: string };\n };\n}\n\n@Injectable()\nexport class ComponentService {\n getComponentConfig(config?: Partial<INgxHelperConfig>): IComponentConfig {\n const getStickyView = (\n config: string | { desktopView: string; mobileView: string },\n ): { desktopView: string; mobileView: string } => {\n return {\n desktopView: typeof config === 'string' ? config : config.desktopView,\n mobileView: typeof config === 'string' ? config : config.mobileView,\n };\n };\n\n return {\n mobileWidth: config?.mobileWidth || 600,\n pageGroupSidebarWidth: config?.pageGroupSidebarWidth || '200px',\n stickyView: config?.stickyView\n ? {\n top: config.stickyView.top ? getStickyView(config.stickyView.top) : undefined,\n bottom: config.stickyView.bottom ? getStickyView(config.stickyView.bottom) : undefined,\n }\n : undefined,\n };\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ComponentType } from '@angular/cdk/portal';\n\ninterface IPage {\n readonly title: string;\n readonly icon: string;\n readonly component: ComponentType<any>;\n}\n\nexport interface INgxHelperPageGroup {\n readonly route?: string[];\n readonly header?: ComponentType<any>;\n readonly pages: IPage[];\n\n // SETTING\n readonly sidebarWidth?: string;\n}\n\nexport const NGX_HELPER_PAGE_GROUP_DATA: InjectionToken<any> = new InjectionToken('NGX-HELPER-PAGE-GROUP-DATA');\nexport const NGX_HELPER_PAGE_GROUP_INDEX: InjectionToken<number> = new InjectionToken('NGX-HELPER-PAGE-GROUP-INDEX');\nexport const NGX_HELPER_PAGE_GROUP_TITLE: InjectionToken<string> = new InjectionToken('NGX-HELPER-PAGE-GROUP-TITLE');\n","import {\n Component,\n EventEmitter,\n HostBinding,\n Inject,\n Injector,\n Input,\n OnChanges,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { MatIcon } from '@angular/material/icon';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { INgxHelperConfig, NGX_HELPER_CONFIG } from '../../ngx-helper.config';\n\nimport { ComponentService, IComponentConfig } from '../component.service';\n\nimport {\n INgxHelperPageGroup,\n NGX_HELPER_PAGE_GROUP_DATA,\n NGX_HELPER_PAGE_GROUP_INDEX,\n NGX_HELPER_PAGE_GROUP_TITLE,\n} from './ngx-helper-page-group.interface';\n\n@Component({\n selector: 'ngx-helper-page-group',\n host: { '(window:resize)': 'onResize($event)' },\n imports: [NgComponentOutlet, MatIcon],\n providers: [ComponentService],\n templateUrl: './ngx-helper-page-group.component.html',\n styleUrl: './ngx-helper-page-group.component.scss',\n})\nexport class NgxHelperPageGroupComponent implements OnInit, OnChanges {\n @HostBinding('className') private className: string = 'ngx-helper-m3-page-group';\n @HostBinding('style.display') display: string = 'none';\n\n @Input({ required: true }) pageGroup!: INgxHelperPageGroup;\n @Input({ required: false }) pageIndex: number = 0;\n @Input({ required: false }) data?: any;\n @Output() pageIndexChanged: EventEmitter<number> = new EventEmitter<number>();\n\n public isMobile: boolean = false;\n public injector!: Injector;\n\n public sidebarWidth!: string;\n public componentConfig!: IComponentConfig;\n\n constructor(\n private readonly activatedRoute: ActivatedRoute,\n private readonly router: Router,\n private readonly componentService: ComponentService,\n @Optional() @Inject(NGX_HELPER_CONFIG) private readonly config?: Partial<INgxHelperConfig>,\n ) {}\n\n ngOnInit(): void {\n this.display = this.pageGroup.pages.length === 0 ? 'none' : 'flex';\n if (this.pageGroup.pages.length === 0) return;\n\n this.componentConfig = this.componentService.getComponentConfig(this.config);\n this.sidebarWidth = this.pageGroup.sidebarWidth || this.componentConfig.pageGroupSidebarWidth;\n\n if (this.pageIndex < 0) this.pageIndex = 0;\n else if (this.pageIndex > this.pageGroup.pages.length - 1) this.pageIndex = this.pageGroup.pages.length - 1;\n\n const queryParams: { [key: string]: any } = { ...this.activatedRoute.snapshot.queryParams };\n if (!!this.pageGroup.route && Helper.IS.number(+queryParams['ngx-helper-page-group'])) {\n const index: number = +queryParams['ngx-helper-page-group'];\n if (index >= 0 && index <= this.pageGroup.pages.length - 1) {\n this.pageIndex = index;\n this.pageIndexChanged.next(this.pageIndex);\n }\n }\n\n this.onResize();\n this.setInjector();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.setInjector();\n }\n\n onResize(): void {\n this.isMobile = window.innerWidth <= this.componentConfig.mobileWidth;\n this.className = `ngx-helper-m3-page-group${this.isMobile ? ' mobile-view' : ''}`;\n }\n\n setInjector(): void {\n if (this.pageGroup.pages.length === 0) return;\n\n this.injector = Injector.create({\n providers: [\n { provide: NGX_HELPER_PAGE_GROUP_DATA, useValue: this.data },\n { provide: NGX_HELPER_PAGE_GROUP_INDEX, useValue: this.pageIndex },\n { provide: NGX_HELPER_PAGE_GROUP_TITLE, useValue: this.pageGroup.pages[this.pageIndex].title },\n ],\n });\n }\n\n setPage(index: number): void {\n if (this.pageGroup.pages.length === 0) return;\n if (this.pageIndex === index || index < 0 || index > this.pageGroup.pages.length - 1) return;\n\n this.pageIndex = index;\n this.pageIndexChanged.next(this.pageIndex);\n this.setInjector();\n\n if (this.pageGroup.route) {\n const queryParams: { [key: string]: any } = { ...this.activatedRoute.snapshot.queryParams };\n queryParams['ngx-helper-page-group'] = this.pageIndex.toString();\n this.router.navigate(this.pageGroup.route, { queryParams });\n }\n }\n}\n","@if (pageGroup.pages.length > 0) {\n<!-- DESKTOP VIEW -->\n@if (!isMobile) {\n<aside\n [style.width]=\"sidebarWidth\"\n [style.position]=\"componentConfig.stickyView?.top ? 'sticky' : 'static'\"\n [style.top]=\"componentConfig.stickyView?.top?.desktopView || undefined\"\n>\n @for (item of pageGroup.pages; track $index) {\n <div\n class=\"page\"\n [class.active]=\"pageIndex === $index\"\n [style.cursor]=\"pageIndex === $index ? 'default' : 'pointer'\"\n (click)=\"setPage($index)\"\n >\n <!-- ICON -->\n <mat-icon>{{ item.icon }}</mat-icon>\n <div class=\"title\">{{ item.title }}</div>\n <!-- CURRENT PAGE -->\n @if (pageIndex === $index) { <mat-icon>keyboard_double_arrow_left</mat-icon> }\n </div>\n }\n</aside>\n}\n\n<!-- MOBILE VIEW -->\n@if (isMobile) {\n<nav\n [style.position]=\"componentConfig.stickyView?.top ? 'sticky' : 'static'\"\n [style.top]=\"componentConfig.stickyView?.top?.mobileView || undefined\"\n>\n @for (item of pageGroup.pages; track $index) {\n <div\n class=\"page\"\n [class.active]=\"pageIndex === $index\"\n [style.cursor]=\"pageIndex === $index ? 'default' : 'pointer'\"\n (click)=\"setPage($index)\"\n >\n <mat-icon>{{ item.icon }}</mat-icon>\n @if (pageIndex === $index) {\n <div class=\"title\">{{ item.title }}</div>\n }\n </div>\n }\n</nav>\n\n<div\n class=\"toolbar-spacer\"\n [style.position]=\"componentConfig.stickyView?.top ? 'sticky' : 'static'\"\n [style.top]=\"\n 'calc(' + (componentConfig.stickyView?.top?.mobileView || undefined) + ' + var(--ngx-helper-m3-toolbar-height))'\n \"\n></div>\n}\n\n<content>\n <!-- HEADER -->\n @if (pageGroup.header) {\n <header\n [style.position]=\"componentConfig.stickyView?.top ? 'sticky' : 'static'\"\n [style.top]=\"\n (isMobile\n ? 'calc(' +\n (componentConfig.stickyView?.top?.mobileView || undefined) +\n ' + var(--ngx-helper-m3-toolbar-height) + 1rem)'\n : componentConfig.stickyView?.top?.desktopView) || undefined\n \"\n >\n <span *ngComponentOutlet=\"pageGroup.header; injector: injector\"></span>\n <div class=\"spacer\"></div>\n </header>\n }\n <span *ngComponentOutlet=\"pageGroup.pages[pageIndex].component; injector: injector\"></span>\n</content>\n}\n","import { Directive, ElementRef, inject, Inject, Input, OnInit, Optional } from '@angular/core';\n\nimport { INgxHelperConfig, NGX_HELPER_CONFIG } from '../../ngx-helper.config';\n\nimport { ComponentService, IComponentConfig } from '../component.service';\n\n@Directive({\n selector: '[ngxHelperSectionSticky]',\n host: { '(window:resize)': 'onResize($event)' },\n})\nexport class NgxHelperSectionStickyDirective implements OnInit {\n @Input({ required: true }) public ngxHelperSectionSticky!: 'TOP' | 'BOTTOM';\n @Input({ required: false }) public ngxHelperSectionZIndex?: number;\n\n private componentService = inject(ComponentService);\n private componentConfig!: IComponentConfig;\n private isMobile: boolean = false;\n\n constructor(\n private readonly elementRef: ElementRef,\n @Optional() @Inject(NGX_HELPER_CONFIG) private readonly config?: Partial<INgxHelperConfig>,\n ) {}\n\n ngOnInit(): void {\n this.componentConfig = this.componentService.getComponentConfig(this.config);\n this.onResize();\n }\n\n onResize(): void {\n this.isMobile = window.innerWidth <= this.componentConfig.mobileWidth;\n this.setPosition();\n }\n\n setPosition(): void {\n const element: HTMLElement = this.elementRef.nativeElement;\n if (!element) return;\n\n switch (this.ngxHelperSectionSticky) {\n case 'TOP':\n const top = this.componentConfig.stickyView?.top;\n if (!top) return;\n\n element.style.position = 'sticky';\n element.style.zIndex = this.ngxHelperSectionZIndex ? this.ngxHelperSectionZIndex.toString() : '1';\n element.style.top = this.isMobile ? top.mobileView : top.desktopView;\n break;\n\n case 'BOTTOM':\n const bottom = this.componentConfig.stickyView?.bottom;\n if (!bottom) return;\n\n element.style.position = 'sticky';\n element.style.zIndex = this.ngxHelperSectionZIndex ? this.ngxHelperSectionZIndex.toString() : '1';\n element.style.bottom = this.isMobile ? bottom.mobileView : bottom.desktopView;\n break;\n }\n }\n}\n","import { Component, HostBinding, Inject, Input, OnInit, Optional } from '@angular/core';\n\nimport { INgxHelperConfig, NGX_HELPER_CONFIG } from '../../ngx-helper.config';\n\nimport { ComponentService, IComponentConfig } from '../component.service';\n\n@Component({\n selector: 'ngx-helper-section',\n host: { '(window:resize)': 'onResize($event)' },\n imports: [],\n providers: [ComponentService],\n templateUrl: './ngx-helper-section.component.html',\n styleUrl: './ngx-helper-section.component.scss',\n})\nexport class NgxHelperSectionComponent implements OnInit {\n @HostBinding('style.--section-gap') private gap!: string;\n\n @Input({ required: false }) gapSize?: string;\n\n private componentConfig!: IComponentConfig;\n public isMobile: boolean = false;\n\n constructor(\n private readonly componentService: ComponentService,\n @Optional() @Inject(NGX_HELPER_CONFIG) private readonly config?: Partial<INgxHelperConfig>,\n ) {}\n\n ngOnInit(): void {\n this.componentConfig = this.componentService.getComponentConfig(this.config);\n this.gap = this.gapSize || '1rem';\n\n this.onResize();\n }\n\n onResize(): void {\n this.isMobile = window.innerWidth <= this.componentConfig.mobileWidth;\n }\n}\n","<div class=\"columns\" [class.mobile]=\"isMobile\">\n <ng-content></ng-content>\n</div>\n","import { Component, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\n\n@Component({\n selector: 'ngx-helper-section-column',\n imports: [],\n templateUrl: './ngx-helper-section-column.component.html',\n styleUrl: './ngx-helper-section-column.component.scss',\n})\nexport class NgxHelperSectionColumnComponent implements OnChanges {\n @HostBinding('style.flex') flexStyle: string = '1';\n @HostBinding('style.width') widthStyle: string = '*';\n\n @Input({ required: false }) flex?: number;\n @Input({ required: false }) width?: string;\n @Input({ required: false }) sticky?: 'TOP' | 'BOTTOM';\n\n ngOnChanges(changes: SimpleChanges): void {\n this.flexStyle = this.width ? 'unset' : this.flex?.toString() || '1';\n this.widthStyle = this.width || '*';\n }\n}\n","<ng-content></ng-content>\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperBankCard' })\nexport class NgxHelperBankCardPipe implements PipeTransform {\n transform(value: string, options?: { view?: 'CARD' | 'BANK'; join?: string }): string {\n if (!Helper.IS.string(value) || value === '') return '';\n\n switch (options?.view) {\n case 'BANK':\n return Helper.BANK.findCard(value)?.title || '';\n default:\n return Helper.STRING.getBankCardView(value, options?.join || '-');\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\nimport { JalaliDateTime } from '@webilix/jalali-date-time';\n\ntype Formats = string | 'FULL' | 'SHORT' | 'DATE' | 'TIME' | 'WEEK' | 'MONTH' | 'YEAR';\n\n@Pipe({ name: 'ngxHelperDate' })\nexport class NgxHelperDatePipe implements PipeTransform {\n transform(value: Date, options?: { format?: Formats; timezone?: string }): string;\n transform(value: number, options?: { format?: Formats; timezone?: string }): string;\n transform(value: any, options?: { format?: Formats; timezone?: string }): string {\n if (!value || (!Helper.IS.date(value) && !Helper.IS.number(value))) return '';\n\n const date: Date = typeof value === 'number' ? new Date(value) : value;\n const jalali = JalaliDateTime();\n const timezone: string =\n options?.timezone && jalali.timezones().includes(options?.timezone) ? options?.timezone : 'Asia/Tehran';\n\n switch (options?.format || 'DATE') {\n case 'FULL':\n return jalali.toFullText(date, { format: 'W، d N Y H:I', timezone });\n\n case 'SHORT':\n return jalali.toFullText(date, { format: 'Y/M/D', timezone });\n\n case 'DATE':\n return jalali.toFullText(date, { format: 'W، d N Y', timezone });\n\n case 'TIME':\n return jalali.toFullText(date, { format: 'H:I', timezone });\n\n case 'WEEK':\n const { from, to } = jalali.periodWeek(1, date, timezone);\n return Helper.DATE.jalaliPeriod(from, to, timezone);\n\n case 'MONTH':\n return jalali.toFullText(date, { format: 'N Y', timezone });\n\n case 'YEAR':\n return jalali.toFullText(date, { format: 'Y', timezone });\n\n default:\n return jalali.toFullText(date, { format: options?.format, timezone });\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\ntype Formats = 'TEXT' | 'FULL' | 'DAY' | 'HOUR' | 'MINUTE' | 'SECOND';\n\n@Pipe({ name: 'ngxHelperDuration' })\nexport class NgxHelperDurationPipe implements PipeTransform {\n transform(value: number, options?: { format?: Formats; english?: boolean }): string;\n transform(value: Date, options?: { format?: Formats; english?: boolean }): string;\n transform(value: { from: Date }, options?: { format?: Formats; english?: boolean }): string;\n transform(value: { to: Date }, options?: { format?: Formats; english?: boolean }): string;\n transform(value: { from: Date; to: Date }, options?: { format?: Formats; english?: boolean }): string;\n transform(value: any, options?: { format?: Formats; english?: boolean }): string {\n let seconds: number = 0;\n if (Helper.IS.number(value)) seconds = Math.abs(value);\n else if (Helper.IS.date(value)) seconds = Math.floor(Math.abs(new Date().getTime() - value.getTime()) / 1000);\n else if (Helper.IS.object(value)) {\n const from: Date = 'from' in value ? value.from : new Date();\n const to: Date = 'to' in value ? value.to : new Date();\n seconds = Math.floor(Math.abs(from.getTime() - to.getTime()) / 1000);\n }\n\n const days: number = Math.floor(seconds / (24 * 60 * 60));\n seconds -= days * (24 * 60 * 60);\n const hours: number = Math.floor(seconds / (60 * 60));\n seconds -= hours * (60 * 60);\n const minutes: number = Math.floor(seconds / 60);\n seconds -= minutes * 60;\n\n const hasDays: boolean = days !== 0;\n const time: string = [hours, minutes, seconds].map((v) => v.toString().padStart(2, '0')).join(':');\n\n switch (options?.format || 'TEXT') {\n case 'TEXT':\n const hasTime: boolean = !!hours || !!minutes || !!seconds;\n const day: string = hasDays\n ? Helper.NUMBER.format(days, 'EN') + (!!options?.english ? (days === 1 ? ' day' : ' days') : ' روز')\n : '';\n const join = hasDays && hasTime ? (!!options?.english ? ', ' : ' و ') : '';\n return (day + join + (!hasDays || hasTime ? time : '')).trim();\n\n case 'FULL':\n return (hasDays ? Helper.NUMBER.format(days, 'EN') + ':' : '') + time;\n\n case 'DAY':\n return Helper.NUMBER.format(days + (hours !== 0 || minutes !== 0 ? 1 : 0), !!options?.english ? 'EN' : 'FA');\n\n case 'HOUR':\n return Helper.NUMBER.format(days * 24 + hours + (minutes !== 0 ? 1 : 0), !!options?.english ? 'EN' : 'FA');\n\n case 'MINUTE':\n return Helper.NUMBER.format(days * 24 * 60 + hours * 60 + minutes, !!options?.english ? 'EN' : 'FA');\n\n case 'SECOND':\n return Helper.NUMBER.format(\n days * 24 * 3600 + hours * 3600 + minutes * 60 + seconds,\n !!options?.english ? 'EN' : 'FA',\n );\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperFileSize' })\nexport class NgxHelperFileSizePipe implements PipeTransform {\n transform(size: number, options?: { english?: boolean }): string {\n return Helper.NUMBER.toFileSize(size, !!options?.english ? 'EN' : 'FA');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperMobile' })\nexport class NgxHelperMobilePipe implements PipeTransform {\n transform(value: string, options?: { join?: string }): string {\n if (!Helper.IS.string(value) || value === '') return '';\n\n return Helper.STRING.getMobileView(value, options?.join || '-');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperMultiLine' })\nexport class NgxHelperMultiLinePipe implements PipeTransform {\n constructor(private readonly sanitizer: DomSanitizer) {}\n\n transform(value: string, options?: { html?: boolean }): string | SafeHtml {\n if (!Helper.IS.string(value) || value === '') return '';\n\n return options?.html\n ? this.sanitizer.bypassSecurityTrustHtml(value.replace(/(?:\\r\\n|\\r|\\n)/g, '<br />'))\n : Helper.STRING.escapeHTML(value).replace(/(?:\\r\\n|\\r|\\n)/g, '<br />');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperNumber' })\nexport class NgxHelperNumberPipe implements PipeTransform {\n transform(value: number, options?: { fractionDigits?: number; english?: boolean }): string {\n if (!Helper.IS.number(value)) return '';\n\n value = options?.fractionDigits ? +value.toFixed(options?.fractionDigits) : value;\n return Helper.NUMBER.format(value, options?.english ? 'EN' : 'FA');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperPeriod' })\nexport class NgxHelperPeriodPipe implements PipeTransform {\n transform(value: Date, options?: { timezone?: string }): string;\n transform(value: { from: Date }, options?: { timezone?: string }): string;\n transform(value: { to: Date }, options?: { timezone?: string }): string;\n transform(value: { from: Date; to: Date }, options?: { timezone?: string }): string;\n transform(value: any, options?: { timezone?: string }): string {\n const from: Date = Helper.IS.date(value) ? value : 'from' in value ? value.from : new Date();\n const to: Date = Helper.IS.date(value) ? new Date() : 'to' in value ? value.to : new Date();\n\n return Helper.DATE.jalaliPeriod(from, to, options?.timezone || '');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperPrice' })\nexport class NgxHelperPricePipe implements PipeTransform {\n transform(value: number, options?: { currency?: string; short?: boolean; english?: boolean }): string {\n if (!Helper.IS.number(value) || value < 0) return '';\n\n const getPrice = (...titles: [string, string][]): string => {\n const price: string = Helper.NUMBER.format(+value.toFixed(2), !!options?.english ? 'EN' : 'FA');\n const unit: string = titles[options?.short ? 0 : 1][options?.english ? 0 : 1];\n const currency: string = options?.currency ? ' ' + options?.currency : '';\n\n return `${price} ${unit}${currency}`;\n };\n\n if (value < 1000) return getPrice(['', ''], ['', '']);\n\n value /= 1000;\n if (value < 1000) return getPrice(['T', 'ه'], ['Thousand', 'هزار']);\n\n value /= 1000;\n if (value < 1000) return getPrice(['M', 'م'], ['Million', 'میلیون']);\n\n value /= 1000;\n return getPrice(['B', 'د'], ['Billion', 'میلیارد']);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';\n\nimport { Helper } from '@webilix/helper-library';\n\ntype Types = 'HTML' | 'STYLE' | 'SCRIPT' | 'URL' | 'RESOURCE_URL';\n\n@Pipe({ name: 'ngxHelperSafe' })\nexport class NgxHelperSafePipe implements PipeTransform {\n constructor(private readonly domSanitizer: DomSanitizer) {}\n\n transform(\n value: string,\n options?: { type?: Types },\n ): string | SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n if (!Helper.IS.string(value) || value === '') return '';\n\n switch (options?.type || 'HTML') {\n case 'STYLE':\n return this.domSanitizer.bypassSecurityTrustStyle(value);\n case 'SCRIPT':\n return this.domSanitizer.bypassSecurityTrustScript(value);\n case 'URL':\n return this.domSanitizer.bypassSecurityTrustUrl(value);\n case 'RESOURCE_URL':\n return this.domSanitizer.bypassSecurityTrustResourceUrl(value);\n case 'HTML':\n return this.domSanitizer.bypassSecurityTrustHtml(value);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperVolume' })\nexport class NgxHelperVolumePipe implements PipeTransform {\n transform(value: number, options?: { short?: boolean; english?: boolean }): string {\n if (!Helper.IS.number(value) || value < 0) return '';\n\n const getVolume = (...titles: [string, string][]): string => {\n const volume: string = Helper.NUMBER.format(+value.toFixed(2), options?.english ? 'EN' : 'FA');\n const shortIndex: number = options?.short ? 0 : 1;\n const titleIndex: number = options?.english ? 0 : 1;\n return `${volume} ${titles[shortIndex][titleIndex]}`;\n };\n\n if (value === 0) return getVolume(['', ''], ['', '']);\n\n if (value < 1000) return getVolume(['ML', 'م'], ['Milliliter', 'میلی لیتر']);\n\n value /= 1000;\n return getVolume(['L', 'ل'], ['Liter', 'لیتر']);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperWeight' })\nexport class NgxHelperWeightPipe implements PipeTransform {\n transform(value: number, options?: { short?: boolean; english?: boolean }): string {\n if (!Helper.IS.number(value) || value < 0) return '';\n\n const getWeight = (...titles: [string, string][]): string => {\n const weight: string = Helper.NUMBER.format(+value.toFixed(2), options?.english ? 'EN' : 'FA');\n const shortIndex: number = options?.short ? 0 : 1;\n const titleIndex: number = options?.english ? 0 : 1;\n return `${weight} ${titles[shortIndex][titleIndex]}`;\n };\n\n if (value === 0) return getWeight(['', ''], ['', '']);\n\n if (value < 1000) return getWeight(['G', 'گ'], ['Gram', 'گرم']);\n\n value /= 1000;\n if (value < 1000) return getWeight(['K', 'ک'], ['Kilogram', 'کیلو']);\n\n value /= 1000;\n if (value < 1000) return getWeight(['T', 'ت'], ['Tonne', 'تن']);\n\n value /= 1000;\n return getWeight(['KT', 'ه'], ['Kilotonne', 'هزار تن']);\n }\n}\n","import { Component, HostBinding, inject } from '@angular/core';\nimport { NgClass } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { INgxHelperConfirm } from '../confirm.interface';\n\n@Component({\n host: { selector: 'confirm-dialog' },\n imports: [NgClass, MatButtonModule, MatDialogModule, MatIconModule],\n templateUrl: './confirm-dialog.component.html',\n styleUrl: './confirm-dialog.component.scss',\n})\nexport class ConfirmDialogComponent {\n @HostBinding('className') private className: string = 'ngx-helper-m3-confirm';\n\n public confirm: INgxHelperConfirm = inject(MAT_DIALOG_DATA);\n}\n","<content>\n <!-- ICON -->\n @if (confirm.icon) {\n <mat-icon>{{ confirm.icon }}</mat-icon>\n }\n\n <!-- CONTENT -->\n <div class=\"confirm\">\n <div class=\"question\">{{ confirm.question }}</div>\n <!-- DESCRIPTION -->\n @if (confirm.description) {\n <div class=\"description\">{{ confirm.description }}</div>\n }\n <!-- DATA -->\n @if (confirm.data) {\n <div class=\"data\">\n <div class=\"title\">{{ confirm.data.title }}:</div>\n <div class=\"value\">{{ confirm.data.value }}</div>\n </div>\n }\n </div>\n</content>\n\n<footer>\n <button mat-button type=\"button\" mat-dialog-close [ngClass]=\"confirm.denyClass\">خیر</button>\n <button mat-button type=\"button\" [mat-dialog-close]=\"true\" [ngClass]=\"confirm.confirmClass\">بلی</button>\n</footer>\n","import { Component, HostBinding, inject } from '@angular/core';\nimport { NgClass } from '@angular/common';\n\nimport { MAT_BOTTOM_SHEET_DATA, MatBottomSheetRef } from '@angular/material/bottom-sheet';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { INgxHelperConfirm } from '../confirm.interface';\n\n@Component({\n host: { selector: 'confirm-bottom-sheet' },\n imports: [NgClass, MatButtonModule, MatIconModule],\n templateUrl: './confirm-bottom-sheet.component.html',\n styleUrl: './confirm-bottom-sheet.component.scss',\n})\nexport class ConfirmBottomSheetComponent {\n @HostBinding('className') private className: string = 'ngx-helper-m3-confirm';\n\n public confirm: INgxHelperConfirm = inject(MAT_BOTTOM_SHEET_DATA);\n\n constructor(private readonly matBottomSheetRef: MatBottomSheetRef<ConfirmBottomSheetComponent>) {}\n\n close(confirmed?: boolean) {\n this.matBottomSheetRef.dismiss(confirmed);\n }\n}\n","<content>\n <!-- ICON -->\n @if (confirm.icon) {\n <mat-icon>{{ confirm.icon }}</mat-icon>\n }\n\n <!-- CONTENT -->\n <div class=\"confirm\">\n <div class=\"question\">{{ confirm.question }}</div>\n <!-- DESCRIPTION -->\n @if (confirm.description) {\n <div class=\"description\">{{ confirm.description }}</div>\n }\n <!-- DATA -->\n @if (confirm.data) {\n <div class=\"data\">\n <div class=\"title\">{{ confirm.data.title }}:</div>\n <div class=\"value\">{{ confirm.data.value }}</div>\n </div>\n }\n </div>\n</content>\n\n<footer>\n <button mat-button type=\"button\" (click)=\"close()\" [ngClass]=\"confirm.denyClass\">خیر</button>\n <button mat-button type=\"button\" (click)=\"close(true)\" [ngClass]=\"confirm.confirmClass\">بلی</button>\n</footer>\n","import { Injectable } from '@angular/core';\n\nimport { MatBottomSheet, MatBottomSheetConfig } from '@angular/material/bottom-sheet';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\n\nimport { ConfirmDialogComponent } from './dialog/confirm-dialog.component';\nimport { ConfirmBottomSheetComponent } from './bottom-sheet/confirm-bottom-sheet.component';\n\nimport { INgxHelperConfirm } from './confirm.interface';\n\ninterface IConfirmData {\n readonly title: string;\n readonly value?: string;\n}\n\ninterface IConfirmConfig {\n readonly description: string;\n readonly confirmClass: string;\n readonly denyClass: string;\n}\n\nclass NgxHelperConfirmCalss {\n constructor(\n private readonly matBottomSheet: MatBottomSheet,\n private readonly matDialog: MatDialog,\n private readonly confirm: INgxHelperConfirm,\n ) {}\n\n dialog(onConfirmed: () => void): void;\n dialog(onConfirmed: () => void, onDenied: () => void): void;\n dialog(onConfirmed: () => void, config: MatDialogConfig): void;\n dialog(onConfirmed: () => void, onDenied: () => void, config: MatDialogConfig): void;\n dialog(onConfirmed: () => void, arg1?: any, arg2?: any): void {\n const onDenied: (() => void) | undefined = typeof arg1 === 'function' ? arg1 : undefined;\n const config: MatDialogConfig = arg2 || (typeof arg1 !== 'function' ? arg1 : {});\n\n this.matDialog\n .open<any, any, boolean>(ConfirmDialogComponent, {\n // DEFAULT CONFIG\n width: 'calc(100vw - 4rem)',\n direction: 'rtl',\n enterAnimationDuration: '100ms',\n exitAnimationDuration: '100ms',\n // OVERWRITE CONFIG\n ...config,\n maxHeight: '80vh',\n // DATA\n data: this.confirm,\n })\n .afterClosed()\n .subscribe({ next: (confirmed?: boolean) => (!!confirmed ? onConfirmed() : onDenied ? onDenied() : undefined) });\n }\n\n bottomSheet(onConfirmed: () => void): void;\n bottomSheet(onConfirmed: () => void, onDenied: () => void): void;\n bottomSheet(onConfirmed: () => void, config: MatBottomSheetConfig): void;\n bottomSheet(onConfirmed: () => void, onDenied: () => void, config: MatBottomSheetConfig): void;\n bottomSheet(onConfirmed: () => void, arg1?: any, arg2?: any): void {\n const onDenied: (() => void) | undefined = typeof arg1 === 'function' ? arg1 : undefined;\n const config: MatBottomSheetConfig = arg2 || (typeof arg1 !== 'function' ? arg1 : {});\n\n this.matBottomSheet\n .open<any, any, boolean>(ConfirmBottomSheetComponent, {\n // DEFAULT CONFIG\n direction: 'rtl',\n panelClass: 'ngx-helper-bottom-sheet',\n // OVERWRITE CONFIG\n ...config,\n maxHeight: '80vh',\n // DATA\n data: this.confirm,\n })\n .afterDismissed()\n .subscribe({ next: (confirmed?: boolean) => (!!confirmed ? onConfirmed() : onDenied ? onDenied() : undefined) });\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NgxHelperConfirmService {\n constructor(private readonly matBottomSheet: MatBottomSheet, private readonly matDialog: MatDialog) {}\n\n verify(confirm: INgxHelperConfirm): NgxHelperConfirmCalss {\n return new NgxHelperConfirmCalss(this.matBottomSheet, this.matDialog, confirm);\n }\n\n active(data: IConfirmData): NgxHelperConfirmCalss;\n active(data: IConfirmData, config: Partial<IConfirmConfig>): NgxHelperConfirmCalss;\n active(data: IConfirmData, config?: Partial<IConfirmConfig>): NgxHelperConfirmCalss {\n return this.verify({\n question: `آیا میخواهید ${data.title} انتخاب شده را فعال کنید؟`,\n description: config?.description,\n data: data.value ? { title: data.title, value: data.value } : undefined,\n icon: 'check_box',\n confirmClass: config?.confirmClass,\n denyClass: config?.denyClass,\n });\n }\n\n deactive(data: IConfirmData): NgxHelperConfirmCalss;\n deactive(data: IConfirmData, config: Partial<IConfirmConfig>): NgxHelperConfirmCalss;\n deactive(data: IConfirmData, config?: Partial<IConfirmConfig>): NgxHelperConfirmCalss {\n return this.verify({\n question: `آیا میخواهید ${data.title} انتخاب شده را غیرفعال کنید؟`,\n description: config?.description,\n data: data.value ? { title: data.title, value: data.value } : undefined,\n icon: 'disabled_by_default',\n confirmClass: config?.confirmClass || 'error',\n denyClass: config?.denyClass,\n });\n }\n\n status(active: boolean, data: IConfirmData): NgxHelperConfirmCalss;\n status(active: boolean, data: IConfirmData, config: Partial<IConfirmConfig>): NgxHelperConfirmCalss;\n status(active: boolean, data: IConfirmData, config?: Partial<IConfirmConfig>): NgxHelperConfirmCalss {\n return active ? this.active(data, config || {}) : this.deactive(data, config || {});\n }\n\n delete(data: IConfirmData): NgxHelperConfirmCalss;\n delete(data: IConfirmData, config: Partial<IConfirmConfig>): NgxHelperConfirmCalss;\n delete(data: IConfirmData, config?: Partial<IConfirmConfig>): NgxHelperConfirmCalss {\n return this.verify({\n question: `آیا میخواهید ${data.title} انتخاب شده را حذف کنید؟`,\n description: config?.description,\n data: data.value ? { title: data.title, value: data.value } : undefined,\n icon: 'delete',\n confirmClass: config?.confirmClass || 'error',\n denyClass: config?.denyClass,\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface INgxHelperContainerConfig {\n data?: any;\n padding?: string;\n hideClose?: boolean;\n}\n\nexport type NgxHelperContainer = 'DIALOG' | 'BOTTOMSHEET';\n\nexport const NGX_HELPER_CONTAINER_TYPE: InjectionToken<NgxHelperContainer> = new InjectionToken('NGX-HELPER-CONTAINER-TYPE');\nexport const NGX_HELPER_CONTAINER_DATA: InjectionToken<any> = new InjectionToken<any>('NGX-HELPER-CONTAINER-DATA');\nexport const NGX_HELPER_CONTAINER_CLOSE: InjectionToken<(response?: any) => void> = new InjectionToken(\n 'NGX-HELPER-CONTAINER-CLOSE',\n);\n","import { NgComponentOutlet } from '@angular/common';\nimport { Component, HostBinding, inject, Injector, OnInit } from '@angular/core';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatIcon } from '@angular/material/icon';\n\nimport {\n INgxHelperContainerConfig,\n NGX_HELPER_CONTAINER_CLOSE,\n NGX_HELPER_CONTAINER_DATA,\n NGX_HELPER_CONTAINER_TYPE,\n} from '../container.interface';\n\n@Component({\n host: { selector: 'container-dialog' },\n imports: [NgComponentOutlet, MatIconButton, MatIcon],\n templateUrl: './container-dialog.component.html',\n styleUrl: './container-dialog.component.scss',\n})\nexport class ContainerDialogComponent implements OnInit {\n @HostBinding('className') private className: string = 'ngx-helper-m3-container';\n\n public container: {\n component: ComponentType<any>;\n readonly title: string;\n readonly config: INgxHelperContainerConfig;\n } = inject(MAT_DIALOG_DATA);\n\n public injector!: Injector;\n\n constructor(private readonly matDialogRef: MatDialogRef<ContainerDialogComponent>) {}\n\n ngOnInit(): void {\n this.injector = Injector.create({\n providers: [\n { provide: NGX_HELPER_CONTAINER_TYPE, useValue: 'DIALOG' },\n { provide: NGX_HELPER_CONTAINER_DATA, useValue: this.container.config.data },\n {\n provide: NGX_HELPER_CONTAINER_CLOSE,\n useFactory: () => (response?: any) => this.matDialogRef.close(response),\n },\n ],\n });\n }\n\n close(): void {\n this.matDialogRef.close();\n }\n}\n","<header>\n <div class=\"title\">{{ container.title }}</div>\n @if (!container.config.hideClose) {\n <button mat-icon-button type=\"button\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n</header>\n<content [style.padding]=\"container.config.padding || '1rem'\">\n <span *ngComponentOutlet=\"container.component; injector: injector\"></span>\n</content>\n","import { NgComponentOutlet } from '@angular/common';\nimport { Component, HostBinding, inject, Injector, OnInit } from '@angular/core';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { MAT_BOTTOM_SHEET_DATA, MatBottomSheetRef } from '@angular/material/bottom-sheet';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\n\nimport {\n INgxHelperContainerConfig,\n NGX_HELPER_CONTAINER_CLOSE,\n NGX_HELPER_CONTAINER_DATA,\n NGX_HELPER_CONTAINER_TYPE,\n} from '../container.interface';\n\n@Component({\n host: { selector: 'container-bottom-sheet' },\n imports: [NgComponentOutlet, MatIconButton, MatIcon],\n templateUrl: './container-bottom-sheet.component.html',\n styleUrl: './container-bottom-sheet.component.scss',\n})\nexport class ContainerBottomSheetComponent implements OnInit {\n @HostBinding('className') private className: string = 'ngx-helper-m3-container';\n\n public container: {\n component: ComponentType<any>;\n readonly title: string;\n readonly config: INgxHelperContainerConfig;\n } = inject(MAT_BOTTOM_SHEET_DATA);\n\n public injector!: Injector;\n\n constructor(private readonly matBottomSheetRef: MatBottomSheetRef<ContainerBottomSheetComponent>) {}\n\n ngOnInit(): void {\n this.injector = Injector.create({\n providers: [\n { provide: NGX_HELPER_CONTAINER_TYPE, useValue: 'BOTTOMSHEET' },\n { provide: NGX_HELPER_CONTAINER_DATA, useValue: this.container.config.data },\n {\n provide: NGX_HELPER_CONTAINER_CLOSE,\n useFactory: () => (response?: any) => this.matBottomSheetRef.dismiss(response),\n },\n ],\n });\n }\n\n close(): void {\n this.matBottomSheetRef.dismiss();\n }\n}\n","<header>\n <div class=\"title\">{{ container.title }}</div>\n @if (!container.config.hideClose) {\n <button mat-icon-button type=\"button\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n</header>\n<content [style.padding]=\"container.config.padding || '1rem'\">\n <span *ngComponentOutlet=\"container.component; injector: injector\"></span>\n</content>\n","import { Injectable } from '@angular/core';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { MatBottomSheet, MatBottomSheetConfig } from '@angular/material/bottom-sheet';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\n\nimport { ContainerDialogComponent } from './dialog/container-dialog.component';\nimport { ContainerBottomSheetComponent } from './bottom-sheet/container-bottom-sheet.component';\n\nimport { INgxHelperContainerConfig } from './container.interface';\n\ninterface IContainerData {\n readonly component: ComponentType<any>;\n readonly title: string;\n readonly config: INgxHelperContainerConfig;\n}\n\nclass NgxHelperContainerCalss {\n constructor(\n private readonly matBottomSheet: MatBottomSheet,\n private readonly matDialog: MatDialog,\n private readonly container: IContainerData,\n ) {}\n\n dialog<T>(): void;\n dialog<T>(onResponse: (response: T) => void): void;\n dialog<T>(onResponse: (response: T) => void, onDismiss: () => void): void;\n dialog<T>(onResponse: (response: T) => void, config: MatDialogConfig): void;\n dialog<T>(onResponse: (response: T) => void, onDismiss: () => void, config: MatDialogConfig): void;\n dialog<T>(arg1?: any, arg2?: any, arg3?: any): void {\n const onResponse: ((response: T) => void) | undefined = typeof arg1 === 'function' ? arg1 : undefined;\n const onDismiss: (() => void) | undefined = typeof arg2 === 'function' ? arg2 : undefined;\n const config: MatDialogConfig = arg3 || (typeof arg2 !== 'function' ? arg2 : {});\n\n this.matDialog\n .open(ContainerDialogComponent, {\n // DEFAULT CONFIG\n width: 'calc(100vw - 4rem)',\n direction: 'rtl',\n enterAnimationDuration: '100ms',\n exitAnimationDuration: '100ms',\n // OVERWRITE CONFIG\n ...config,\n maxHeight: '80vh',\n // DATA\n data: this.container,\n })\n .afterClosed()\n .subscribe({\n next: (response?: T) => {\n if (onResponse && !!response) onResponse(response);\n if (onDismiss && !response) onDismiss();\n },\n });\n }\n\n bottomSheet<T>(): void;\n bottomSheet<T>(onResponse: (result: T) => void): void;\n bottomSheet<T>(onResponse: (result: T) => void, onDismiss: () => void): void;\n bottomSheet<T>(onResponse: (result: T) => void, config: MatBottomSheetConfig): void;\n bottomSheet<T>(onResponse: (result: T) => void, onDismiss: () => void, config: MatBottomSheetConfig): void;\n bottomSheet<T>(arg1?: any, arg2?: any, arg3?: any): void {\n const onResponse: ((result: T) => void) | undefined = typeof arg1 === 'function' ? arg1 : undefined;\n const onDismiss: (() => void) | undefined = typeof arg2 === 'function' ? arg2 : undefined;\n const config: MatBottomSheetConfig = arg3 || (typeof arg2 !== 'function' ? arg2 : {});\n\n this.matBottomSheet\n .open<any, any, T>(ContainerBottomSheetComponent, {\n // DEFAULT CONFIG\n direction: 'rtl',\n panelClass: 'ngx-helper-bottom-sheet',\n // OVERWRITE CONFIG\n ...config,\n maxHeight: '80vh',\n // DATA\n data: this.container,\n })\n .afterDismissed()\n .subscribe({\n next: (response?: T) => {\n if (onResponse && !!response) onResponse(response);\n if (onDismiss && !response) onDismiss();\n },\n });\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NgxHelperContainerService {\n constructor(private readonly matBottomSheet: MatBottomSheet, private readonly matDialog: MatDialog) {}\n\n init(component: ComponentType<any>, title: string): NgxHelperContainerCalss;\n init(component: ComponentType<any>, title: string, config: INgxHelperContainerConfig): NgxHelperContainerCalss;\n init(component: ComponentType<any>, title: string, arg1?: any): NgxHelperContainerCalss {\n const config: INgxHelperContainerConfig = arg1 || {};\n\n return new NgxHelperContainerCalss(this.matBottomSheet, this.matDialog, { component, title, config });\n }\n}\n","/*\n * Public API Surface of ngx-helper-m3\n */\n\nexport * from './lib/ngx-helper.config';\n\n// COMPONENTS\nexport * from './lib/components/page-group/ngx-helper-page-group.component';\nexport * from './lib/components/page-group/ngx-helper-page-group.interface';\nexport * from './lib/components/section/ngx-helper-section-sticky.directive';\nexport * from './lib/components/section/ngx-helper-section.component';\nexport * from './lib/components/section/column/ngx-helper-section-column.component';\n\n// PIPES\nexport * from './lib/pipes/bank-card.pipe';\nexport * from './lib/pipes/date.pipe';\nexport * from './lib/pipes/duration.pipe';\nexport * from './lib/pipes/file-size.pipe';\nexport * from './lib/pipes/mobile.pipe';\nexport * from './lib/pipes/multi-line.pipe';\nexport * from './lib/pipes/number.pipe';\nexport * from './lib/pipes/period.pipe';\nexport * from './lib/pipes/price.pipe';\nexport * from './lib/pipes/safe.pipe';\nexport * from './lib/pipes/volume.pipe';\nexport * from './lib/pipes/weight.pipe';\n\n// SERVICES\nexport * from './lib/confirm/confirm.interface';\nexport * from './lib/confirm/confirm.service';\nexport * from './lib/container/container.interface';\nexport * from './lib/container/container.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
@@ -1,10 +1,8 @@
|
|
1
1
|
import { INgxHelperConfig } from '../ngx-helper.config';
|
2
2
|
import * as i0 from "@angular/core";
|
3
3
|
export interface IComponentConfig {
|
4
|
-
readonly
|
5
|
-
readonly
|
6
|
-
readonly highlightText: string;
|
7
|
-
readonly highlightBackground: string;
|
4
|
+
readonly mobileWidth: number;
|
5
|
+
readonly pageGroupSidebarWidth: string;
|
8
6
|
readonly stickyView?: {
|
9
7
|
readonly top?: {
|
10
8
|
readonly desktopView: string;
|
@@ -9,8 +9,8 @@ export declare class NgxHelperPageGroupComponent implements OnInit, OnChanges {
|
|
9
9
|
private readonly router;
|
10
10
|
private readonly componentService;
|
11
11
|
private readonly config?;
|
12
|
+
private className;
|
12
13
|
display: string;
|
13
|
-
private toolbarHeight;
|
14
14
|
pageGroup: INgxHelperPageGroup;
|
15
15
|
pageIndex: number;
|
16
16
|
data?: any;
|
@@ -19,15 +19,12 @@ export declare class NgxHelperPageGroupComponent implements OnInit, OnChanges {
|
|
19
19
|
injector: Injector;
|
20
20
|
sidebarWidth: string;
|
21
21
|
componentConfig: IComponentConfig;
|
22
|
-
private swipeStart?;
|
23
|
-
private swipeLeft;
|
24
22
|
constructor(activatedRoute: ActivatedRoute, router: Router, componentService: ComponentService, config?: Partial<INgxHelperConfig> | undefined);
|
25
23
|
ngOnInit(): void;
|
26
24
|
ngOnChanges(changes: SimpleChanges): void;
|
27
25
|
onResize(): void;
|
28
26
|
setInjector(): void;
|
29
27
|
setPage(index: number): void;
|
30
|
-
swipe(event: MouseEvent | TouchEvent, action: 'START' | 'MOVE' | 'END', header: HTMLElement, container: HTMLElement): void;
|
31
28
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgxHelperPageGroupComponent, [null, null, null, { optional: true; }]>;
|
32
29
|
static ɵcmp: i0.ɵɵComponentDeclaration<NgxHelperPageGroupComponent, "ngx-helper-page-group", never, { "pageGroup": { "alias": "pageGroup"; "required": true; }; "pageIndex": { "alias": "pageIndex"; "required": false; }; "data": { "alias": "data"; "required": false; }; }, { "pageIndexChanged": "pageIndexChanged"; }, never, never, true, never>;
|
33
30
|
}
|
@@ -2,14 +2,13 @@ import { InjectionToken } from '@angular/core';
|
|
2
2
|
import { ComponentType } from '@angular/cdk/portal';
|
3
3
|
interface IPage {
|
4
4
|
readonly title: string;
|
5
|
+
readonly icon: string;
|
5
6
|
readonly component: ComponentType<any>;
|
6
|
-
readonly icon?: string;
|
7
7
|
}
|
8
8
|
export interface INgxHelperPageGroup {
|
9
9
|
readonly route?: string[];
|
10
10
|
readonly header?: ComponentType<any>;
|
11
11
|
readonly pages: IPage[];
|
12
|
-
readonly mobileView?: boolean;
|
13
12
|
readonly sidebarWidth?: string;
|
14
13
|
}
|
15
14
|
export declare const NGX_HELPER_PAGE_GROUP_DATA: InjectionToken<any>;
|
@@ -7,6 +7,7 @@ export declare class NgxHelperSectionStickyDirective implements OnInit {
|
|
7
7
|
ngxHelperSectionSticky: 'TOP' | 'BOTTOM';
|
8
8
|
ngxHelperSectionZIndex?: number;
|
9
9
|
private componentService;
|
10
|
+
private componentConfig;
|
10
11
|
private isMobile;
|
11
12
|
constructor(elementRef: ElementRef, config?: Partial<INgxHelperConfig> | undefined);
|
12
13
|
ngOnInit(): void;
|
@@ -1,19 +1,17 @@
|
|
1
1
|
import { OnInit } from '@angular/core';
|
2
2
|
import { INgxHelperConfig } from '../../ngx-helper.config';
|
3
|
-
import { ComponentService
|
3
|
+
import { ComponentService } from '../component.service';
|
4
4
|
import * as i0 from "@angular/core";
|
5
5
|
export declare class NgxHelperSectionComponent implements OnInit {
|
6
6
|
private readonly componentService;
|
7
7
|
private readonly config?;
|
8
8
|
private gap;
|
9
|
-
private backgroundColor;
|
10
9
|
gapSize?: string;
|
11
|
-
|
10
|
+
private componentConfig;
|
12
11
|
isMobile: boolean;
|
13
|
-
componentConfig: IComponentConfig;
|
14
12
|
constructor(componentService: ComponentService, config?: Partial<INgxHelperConfig> | undefined);
|
15
13
|
ngOnInit(): void;
|
16
14
|
onResize(): void;
|
17
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgxHelperSectionComponent, [null, { optional: true; }]>;
|
18
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NgxHelperSectionComponent, "ngx-helper-section", never, { "gapSize": { "alias": "gapSize"; "required": false; };
|
16
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgxHelperSectionComponent, "ngx-helper-section", never, { "gapSize": { "alias": "gapSize"; "required": false; }; }, {}, never, ["*"], true, never>;
|
19
17
|
}
|
@@ -3,6 +3,7 @@ import { INgxHelperConfirm } from '../confirm.interface';
|
|
3
3
|
import * as i0 from "@angular/core";
|
4
4
|
export declare class ConfirmBottomSheetComponent {
|
5
5
|
private readonly matBottomSheetRef;
|
6
|
+
private className;
|
6
7
|
confirm: INgxHelperConfirm;
|
7
8
|
constructor(matBottomSheetRef: MatBottomSheetRef<ConfirmBottomSheetComponent>);
|
8
9
|
close(confirmed?: boolean): void;
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import { INgxHelperConfirm } from '../confirm.interface';
|
2
2
|
import * as i0 from "@angular/core";
|
3
3
|
export declare class ConfirmDialogComponent {
|
4
|
+
private className;
|
4
5
|
confirm: INgxHelperConfirm;
|
5
6
|
static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmDialogComponent, never>;
|
6
7
|
static ɵcmp: i0.ɵɵComponentDeclaration<ConfirmDialogComponent, "ng-component", never, {}, {}, never, never, true, never>;
|
@@ -5,6 +5,7 @@ import { INgxHelperContainerConfig } from '../container.interface';
|
|
5
5
|
import * as i0 from "@angular/core";
|
6
6
|
export declare class ContainerBottomSheetComponent implements OnInit {
|
7
7
|
private readonly matBottomSheetRef;
|
8
|
+
private className;
|
8
9
|
container: {
|
9
10
|
component: ComponentType<any>;
|
10
11
|
readonly title: string;
|
@@ -5,6 +5,7 @@ import { INgxHelperContainerConfig } from '../container.interface';
|
|
5
5
|
import * as i0 from "@angular/core";
|
6
6
|
export declare class ContainerDialogComponent implements OnInit {
|
7
7
|
private readonly matDialogRef;
|
8
|
+
private className;
|
8
9
|
container: {
|
9
10
|
component: ComponentType<any>;
|
10
11
|
readonly title: string;
|
@@ -1,13 +1,7 @@
|
|
1
1
|
import { EnvironmentProviders, InjectionToken } from '@angular/core';
|
2
2
|
export interface INgxHelperConfig {
|
3
3
|
readonly mobileWidth: number;
|
4
|
-
readonly
|
5
|
-
readonly colors: {
|
6
|
-
readonly border?: string;
|
7
|
-
readonly background?: string;
|
8
|
-
readonly highlightText?: string;
|
9
|
-
readonly highlightBackground?: string;
|
10
|
-
};
|
4
|
+
readonly pageGroupSidebarWidth: string;
|
11
5
|
readonly stickyView: {
|
12
6
|
readonly top?: string | {
|
13
7
|
readonly desktopView: string;
|
@@ -0,0 +1,200 @@
|
|
1
|
+
/* GLOBAL VALUES */
|
2
|
+
:root {
|
3
|
+
--ngx-helper-m3-font-small: 90%;
|
4
|
+
--ngx-helper-m3-font-large: 115%;
|
5
|
+
|
6
|
+
--ngx-helper-m3-toolbar-height: 40px;
|
7
|
+
}
|
8
|
+
|
9
|
+
/* NGX HELPER CONFIRM */
|
10
|
+
.ngx-helper-m3-confirm {
|
11
|
+
display: block;
|
12
|
+
margin: 1.5rem 1.5rem 1rem 1.5rem;
|
13
|
+
|
14
|
+
content {
|
15
|
+
display: flex;
|
16
|
+
align-items: flex-start;
|
17
|
+
column-gap: 1rem;
|
18
|
+
|
19
|
+
mat-icon {
|
20
|
+
font-size: 200%;
|
21
|
+
}
|
22
|
+
|
23
|
+
.confirm {
|
24
|
+
flex: 1;
|
25
|
+
|
26
|
+
.question {
|
27
|
+
text-align: justify;
|
28
|
+
}
|
29
|
+
|
30
|
+
.description {
|
31
|
+
text-align: justify;
|
32
|
+
font-size: var(--ngx-helper-m3-font-small);
|
33
|
+
}
|
34
|
+
|
35
|
+
.data {
|
36
|
+
display: flex;
|
37
|
+
align-items: center;
|
38
|
+
column-gap: 1rem;
|
39
|
+
font-size: var(--ngx-helper-m3-font-small);
|
40
|
+
margin-top: 1rem;
|
41
|
+
}
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
45
|
+
footer {
|
46
|
+
display: flex;
|
47
|
+
align-items: center;
|
48
|
+
justify-content: flex-end;
|
49
|
+
column-gap: 1rem;
|
50
|
+
margin-top: 1rem;
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
/* NGX HELPER CONTAINER */
|
55
|
+
.ngx-helper-m3-container {
|
56
|
+
display: block;
|
57
|
+
max-height: 80vh;
|
58
|
+
overflow: hidden;
|
59
|
+
|
60
|
+
header {
|
61
|
+
display: flex;
|
62
|
+
align-items: center;
|
63
|
+
|
64
|
+
height: 65px;
|
65
|
+
line-height: 65px;
|
66
|
+
font-size: var(--ngx-helper-m3-font-large);
|
67
|
+
padding: 0 0.5rem;
|
68
|
+
border-bottom: 1px solid var(--outline-variant);
|
69
|
+
background-color: var(--surface-container-high);
|
70
|
+
|
71
|
+
.title {
|
72
|
+
flex: 1;
|
73
|
+
padding-right: 0.5rem;
|
74
|
+
}
|
75
|
+
}
|
76
|
+
|
77
|
+
content {
|
78
|
+
display: block;
|
79
|
+
max-height: calc(80vh - 67px);
|
80
|
+
overflow: auto;
|
81
|
+
box-sizing: border-box;
|
82
|
+
}
|
83
|
+
}
|
84
|
+
|
85
|
+
/* NGX HELPER PAGE GROUP */
|
86
|
+
.ngx-helper-m3-page-group {
|
87
|
+
direction: rtl;
|
88
|
+
display: flex;
|
89
|
+
align-items: flex-start;
|
90
|
+
column-gap: 1rem;
|
91
|
+
|
92
|
+
aside {
|
93
|
+
display: flex;
|
94
|
+
flex-direction: column;
|
95
|
+
row-gap: 1rem;
|
96
|
+
|
97
|
+
box-sizing: border-box;
|
98
|
+
padding: 1rem;
|
99
|
+
background-color: var(--surface-container-high);
|
100
|
+
|
101
|
+
.page {
|
102
|
+
display: flex;
|
103
|
+
align-items: center;
|
104
|
+
column-gap: 0.5rem;
|
105
|
+
|
106
|
+
padding: 0.5rem 0.75rem;
|
107
|
+
transition: all 0.3s ease-in-out;
|
108
|
+
|
109
|
+
.title {
|
110
|
+
flex: 1;
|
111
|
+
|
112
|
+
white-space: nowrap;
|
113
|
+
overflow: hidden;
|
114
|
+
text-overflow: ellipsis;
|
115
|
+
}
|
116
|
+
|
117
|
+
mat-icon {
|
118
|
+
font-size: 120%;
|
119
|
+
}
|
120
|
+
}
|
121
|
+
|
122
|
+
.active {
|
123
|
+
border-radius: 4px;
|
124
|
+
color: var(--on-primary);
|
125
|
+
background-color: var(--primary);
|
126
|
+
}
|
127
|
+
}
|
128
|
+
|
129
|
+
content {
|
130
|
+
flex: 1;
|
131
|
+
display: block;
|
132
|
+
|
133
|
+
header {
|
134
|
+
background-color: var(--background);
|
135
|
+
|
136
|
+
.spacer {
|
137
|
+
z-index: 2;
|
138
|
+
height: 1rem;
|
139
|
+
width: 100%;
|
140
|
+
}
|
141
|
+
}
|
142
|
+
}
|
143
|
+
}
|
144
|
+
|
145
|
+
.ngx-helper-m3-page-group.mobile-view {
|
146
|
+
flex-direction: column;
|
147
|
+
column-gap: 0;
|
148
|
+
|
149
|
+
nav {
|
150
|
+
display: flex;
|
151
|
+
align-items: center;
|
152
|
+
|
153
|
+
box-sizing: border-box;
|
154
|
+
background-color: var(--surface-container-high);
|
155
|
+
height: calc(var(--ngx-helper-m3-toolbar-height));
|
156
|
+
overflow: hidden;
|
157
|
+
width: 100%;
|
158
|
+
z-index: 2;
|
159
|
+
|
160
|
+
.page {
|
161
|
+
display: flex;
|
162
|
+
align-items: center;
|
163
|
+
column-gap: 0.25rem;
|
164
|
+
|
165
|
+
padding: 0 1rem;
|
166
|
+
height: var(--ngx-helper-m3-toolbar-height);
|
167
|
+
transition: all 0.3s ease-in-out;
|
168
|
+
|
169
|
+
.title {
|
170
|
+
flex: 1;
|
171
|
+
font-size: var(--ngx-helper-m3-font-small);
|
172
|
+
white-space: nowrap;
|
173
|
+
overflow: hidden;
|
174
|
+
text-overflow: ellipsis;
|
175
|
+
}
|
176
|
+
}
|
177
|
+
|
178
|
+
.active {
|
179
|
+
flex: 1;
|
180
|
+
width: 0;
|
181
|
+
color: var(--on-primary);
|
182
|
+
background-color: var(--primary);
|
183
|
+
|
184
|
+
mat-icon {
|
185
|
+
font-size: 120%;
|
186
|
+
}
|
187
|
+
}
|
188
|
+
}
|
189
|
+
|
190
|
+
.toolbar-spacer {
|
191
|
+
height: 1rem;
|
192
|
+
width: 100%;
|
193
|
+
background-color: var(--background);
|
194
|
+
}
|
195
|
+
|
196
|
+
content {
|
197
|
+
flex: none;
|
198
|
+
width: 100%;
|
199
|
+
}
|
200
|
+
}
|