@tacdaed/fragments 1.0.0-beta.0 → 1.0.0-beta.2
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/README.md +2 -18
- package/ng-package.json +25 -0
- package/package.json +22 -29
- package/src/lib/components/accordion/accordion.component.html +103 -0
- package/src/lib/components/accordion/accordion.component.scss +382 -0
- package/src/lib/components/accordion/accordion.component.spec.ts +147 -0
- package/src/lib/components/accordion/accordion.component.ts +211 -0
- package/src/lib/components/accordion/accordion.type.ts +82 -0
- package/src/lib/components/breadcrumb/breadcrumb.component.html +43 -0
- package/src/lib/components/breadcrumb/breadcrumb.component.scss +112 -0
- package/src/lib/components/breadcrumb/breadcrumb.component.spec.ts +33 -0
- package/src/lib/components/breadcrumb/breadcrumb.component.ts +103 -0
- package/src/lib/components/breadcrumb/breadcrumb.interface.ts +7 -0
- package/src/lib/components/button/button.component.html +57 -0
- package/src/lib/components/button/button.component.scss +445 -0
- package/src/lib/components/button/button.component.spec.ts +99 -0
- package/src/lib/components/button/button.component.ts +143 -0
- package/src/lib/components/button/button.type.ts +7 -0
- package/src/lib/components/card/card.component.html +44 -0
- package/src/lib/components/card/card.component.scss +114 -0
- package/src/lib/components/card/card.component.spec.ts +65 -0
- package/src/lib/components/card/card.component.ts +21 -0
- package/src/lib/components/card/card.type.ts +3 -0
- package/src/lib/components/code-block/code-block.component.html +55 -0
- package/src/lib/components/code-block/code-block.component.scss +122 -0
- package/src/lib/components/code-block/code-block.component.spec.ts +81 -0
- package/src/lib/components/code-block/code-block.component.ts +302 -0
- package/src/lib/components/code-block/code-block.interface.ts +28 -0
- package/src/lib/components/code-block/code-block.type.ts +73 -0
- package/src/lib/components/decorative/sparkle-field/sparkle-field.component.html +14 -0
- package/src/lib/components/decorative/sparkle-field/sparkle-field.component.scss +20 -0
- package/src/lib/components/decorative/sparkle-field/sparkle-field.component.spec.ts +38 -0
- package/src/lib/components/decorative/sparkle-field/sparkle-field.component.ts +181 -0
- package/src/lib/components/input/input-base.ts +187 -0
- package/src/lib/components/input/input-calendar/input-calendar.component.html +76 -0
- package/src/lib/components/input/input-calendar/input-calendar.component.scss +179 -0
- package/src/lib/components/input/input-calendar/input-calendar.component.spec.ts +44 -0
- package/src/lib/components/input/input-calendar/input-calendar.component.ts +299 -0
- package/src/lib/components/input/input-checkbox/input-checkbox.component.html +37 -0
- package/src/lib/components/input/input-checkbox/input-checkbox.component.scss +128 -0
- package/src/lib/components/input/input-checkbox/input-checkbox.component.spec.ts +43 -0
- package/src/lib/components/input/input-checkbox/input-checkbox.component.ts +112 -0
- package/src/lib/components/input/input-checkbox-group/input-checkbox-group.component.html +43 -0
- package/src/lib/components/input/input-checkbox-group/input-checkbox-group.component.scss +140 -0
- package/src/lib/components/input/input-checkbox-group/input-checkbox-group.component.spec.ts +62 -0
- package/src/lib/components/input/input-checkbox-group/input-checkbox-group.component.ts +136 -0
- package/src/lib/components/input/input-clock-picker/input-clock-picker.component.html +81 -0
- package/src/lib/components/input/input-clock-picker/input-clock-picker.component.scss +228 -0
- package/src/lib/components/input/input-clock-picker/input-clock-picker.component.spec.ts +62 -0
- package/src/lib/components/input/input-clock-picker/input-clock-picker.component.ts +178 -0
- package/src/lib/components/input/input-consts.ts +132 -0
- package/src/lib/components/input/input-date/input-date-validators.ts +41 -0
- package/src/lib/components/input/input-date/input-date.component.html +41 -0
- package/src/lib/components/input/input-date/input-date.component.scss +95 -0
- package/src/lib/components/input/input-date/input-date.component.spec.ts +43 -0
- package/src/lib/components/input/input-date/input-date.component.ts +359 -0
- package/src/lib/components/input/input-date-time/input-date-time.component.html +70 -0
- package/src/lib/components/input/input-date-time/input-date-time.component.scss +133 -0
- package/src/lib/components/input/input-date-time/input-date-time.component.spec.ts +36 -0
- package/src/lib/components/input/input-date-time/input-date-time.component.ts +387 -0
- package/src/lib/components/input/input-file-upload/input-file-upload.component.html +89 -0
- package/src/lib/components/input/input-file-upload/input-file-upload.component.scss +171 -0
- package/src/lib/components/input/input-file-upload/input-file-upload.component.spec.ts +43 -0
- package/src/lib/components/input/input-file-upload/input-file-upload.component.ts +351 -0
- package/src/lib/components/input/input-interface.ts +8 -0
- package/src/lib/components/input/input-number/input-number-validators.ts +0 -0
- package/src/lib/components/input/input-number/input-number.component.html +51 -0
- package/src/lib/components/input/input-number/input-number.component.scss +140 -0
- package/src/lib/components/input/input-number/input-number.component.spec.ts +44 -0
- package/src/lib/components/input/input-number/input-number.component.ts +343 -0
- package/src/lib/components/input/input-radio-group/input-radio-group.component.html +44 -0
- package/src/lib/components/input/input-radio-group/input-radio-group.component.scss +139 -0
- package/src/lib/components/input/input-radio-group/input-radio-group.component.spec.ts +58 -0
- package/src/lib/components/input/input-radio-group/input-radio-group.component.ts +132 -0
- package/src/lib/components/input/input-slider/input-slider.component.html +111 -0
- package/src/lib/components/input/input-slider/input-slider.component.scss +203 -0
- package/src/lib/components/input/input-slider/input-slider.component.spec.ts +46 -0
- package/src/lib/components/input/input-slider/input-slider.component.ts +410 -0
- package/src/lib/components/input/input-text/input-text-validators.ts +67 -0
- package/src/lib/components/input/input-text/input-text.component.html +71 -0
- package/src/lib/components/input/input-text/input-text.component.scss +118 -0
- package/src/lib/components/input/input-text/input-text.component.spec.ts +55 -0
- package/src/lib/components/input/input-text/input-text.component.ts +215 -0
- package/src/lib/components/input/input-time/input-time-validators.ts +42 -0
- package/src/lib/components/input/input-time/input-time.component.html +92 -0
- package/src/lib/components/input/input-time/input-time.component.scss +191 -0
- package/src/lib/components/input/input-time/input-time.component.spec.ts +39 -0
- package/src/lib/components/input/input-time/input-time.component.ts +691 -0
- package/src/lib/components/input/input-toggle-switch/input-toggle-switch.component.html +36 -0
- package/src/lib/components/input/input-toggle-switch/input-toggle-switch.component.scss +121 -0
- package/src/lib/components/input/input-toggle-switch/input-toggle-switch.component.spec.ts +54 -0
- package/src/lib/components/input/input-toggle-switch/input-toggle-switch.component.ts +117 -0
- package/src/lib/components/input/input-type.ts +18 -0
- package/src/lib/components/input/input-validation/input-validation.component.html +19 -0
- package/src/lib/components/input/input-validation/input-validation.component.scss +39 -0
- package/src/lib/components/input/input-validation/input-validation.component.spec.ts +45 -0
- package/src/lib/components/input/input-validation/input-validation.component.ts +13 -0
- package/src/lib/components/input/input.pipe.ts +14 -0
- package/src/lib/components/layout/container/container.component.html +1 -0
- package/src/lib/components/layout/container/container.component.scss +33 -0
- package/src/lib/components/layout/container/container.component.ts +32 -0
- package/src/lib/components/layout/container/container.type.ts +1 -0
- package/src/lib/components/layout/divider/divider.component.html +1 -0
- package/src/lib/components/layout/divider/divider.component.scss +60 -0
- package/src/lib/components/layout/divider/divider.component.ts +38 -0
- package/src/lib/components/layout/divider/divider.type.ts +2 -0
- package/src/lib/components/layout/section/section.component.html +21 -0
- package/src/lib/components/layout/section/section.component.scss +43 -0
- package/src/lib/components/layout/section/section.component.ts +33 -0
- package/src/lib/components/layout/section/section.type.ts +2 -0
- package/src/lib/components/layout/separator/separator.component.html +9 -0
- package/src/lib/components/layout/separator/separator.component.scss +52 -0
- package/src/lib/components/layout/separator/separator.component.ts +25 -0
- package/src/lib/components/layout/separator/separator.type.ts +1 -0
- package/src/lib/components/loader/content-blur/content-blur.component.html +13 -0
- package/src/lib/components/loader/content-blur/content-blur.component.scss +43 -0
- package/src/lib/components/loader/content-blur/content-blur.component.spec.ts +42 -0
- package/src/lib/components/loader/content-blur/content-blur.component.ts +34 -0
- package/src/lib/components/loader/loader.type.ts +2 -0
- package/src/lib/components/loader/progress-bar/progress-bar.component.html +26 -0
- package/src/lib/components/loader/progress-bar/progress-bar.component.scss +151 -0
- package/src/lib/components/loader/progress-bar/progress-bar.component.spec.ts +47 -0
- package/src/lib/components/loader/progress-bar/progress-bar.component.ts +28 -0
- package/src/lib/components/loader/progress-bar/progress-bar.type.ts +8 -0
- package/src/lib/components/loader/pulse-loader/pulse-loader.component.html +12 -0
- package/src/lib/components/loader/pulse-loader/pulse-loader.component.scss +202 -0
- package/src/lib/components/loader/pulse-loader/pulse-loader.component.spec.ts +55 -0
- package/src/lib/components/loader/pulse-loader/pulse-loader.component.ts +73 -0
- package/src/lib/components/loader/pulse-loader/pulse-loader.type.ts +6 -0
- package/src/lib/components/loader/skeleton-loader/skeleton-loader.component.html +13 -0
- package/src/lib/components/loader/skeleton-loader/skeleton-loader.component.scss +113 -0
- package/src/lib/components/loader/skeleton-loader/skeleton-loader.component.spec.ts +37 -0
- package/src/lib/components/loader/skeleton-loader/skeleton-loader.component.ts +51 -0
- package/src/lib/components/loader/skeleton-loader/skeleton-loader.type.ts +6 -0
- package/src/lib/components/loader/spinner/spinner.component.html +20 -0
- package/src/lib/components/loader/spinner/spinner.component.scss +137 -0
- package/src/lib/components/loader/spinner/spinner.component.spec.ts +43 -0
- package/src/lib/components/loader/spinner/spinner.component.ts +32 -0
- package/src/lib/components/loader/spinner/spinner.type.ts +6 -0
- package/src/lib/components/modal/modal.component.html +47 -0
- package/src/lib/components/modal/modal.component.scss +139 -0
- package/src/lib/components/modal/modal.component.spec.ts +60 -0
- package/src/lib/components/modal/modal.component.ts +83 -0
- package/src/lib/components/modal/modal.type.ts +9 -0
- package/src/lib/components/morph/blob-moph/blob-moprh.component.spec.ts +79 -0
- package/src/lib/components/morph/blob-moph/blob-moprh.component.ts +96 -0
- package/src/lib/components/morph/blob-moph/blob-morph.component.html +34 -0
- package/src/lib/components/morph/blob-moph/blob-morph.component.scss +7 -0
- package/src/lib/components/morph/morph.abstract.ts +13 -0
- package/src/lib/components/pagination/pagination.interface.ts +4 -0
- package/src/lib/components/pagination/small-pagination/small-pagination.component.html +61 -0
- package/src/lib/components/pagination/small-pagination/small-pagination.component.scss +187 -0
- package/src/lib/components/pagination/small-pagination/small-pagination.component.spec.ts +88 -0
- package/src/lib/components/pagination/small-pagination/small-pagination.component.ts +177 -0
- package/src/lib/components/selection-lists/multi-select/multi-select.component.html +170 -0
- package/src/lib/components/selection-lists/multi-select/multi-select.component.scss +312 -0
- package/src/lib/components/selection-lists/multi-select/multi-select.component.spec.ts +61 -0
- package/src/lib/components/selection-lists/multi-select/multi-select.component.ts +372 -0
- package/src/lib/components/selection-lists/selection-list/selection-list.component.html +125 -0
- package/src/lib/components/selection-lists/selection-list/selection-list.component.scss +267 -0
- package/src/lib/components/selection-lists/selection-list/selection-list.component.spec.ts +66 -0
- package/src/lib/components/selection-lists/selection-list/selection-list.component.ts +315 -0
- package/src/lib/components/selection-lists/selection-lists-base.ts +35 -0
- package/src/lib/components/selection-lists/selection-lists-const.ts +17 -0
- package/src/lib/components/selection-lists/selection-lists-interface.ts +7 -0
- package/src/lib/components/selection-lists/selection-lists.type.ts +1 -0
- package/src/lib/components/side-nav/side-nav.component.html +101 -0
- package/src/lib/components/side-nav/side-nav.component.scss +295 -0
- package/src/lib/components/side-nav/side-nav.component.spec.ts +0 -0
- package/src/lib/components/side-nav/side-nav.component.ts +18 -0
- package/src/lib/components/side-nav/side-nav.type.ts +28 -0
- package/src/lib/components/snackbar/snackbar.component.html +33 -0
- package/src/lib/components/snackbar/snackbar.component.scss +195 -0
- package/src/lib/components/snackbar/snackbar.component.ts +112 -0
- package/src/lib/components/snackbar/snackbar.type.ts +27 -0
- package/src/lib/components/status/chip/chip.component.html +51 -0
- package/src/lib/components/status/chip/chip.component.scss +149 -0
- package/src/lib/components/status/chip/chip.component.spec.ts +62 -0
- package/src/lib/components/status/chip/chip.component.ts +83 -0
- package/src/lib/components/status/chip/chip.type.ts +42 -0
- package/src/lib/components/status/directives/badge/badge.directive.spec.ts +60 -0
- package/src/lib/components/status/directives/badge/badge.directive.ts +190 -0
- package/src/lib/components/status/directives/badge/badge.interface.ts +19 -0
- package/src/lib/components/status/pill/pill.component.html +40 -0
- package/src/lib/components/status/pill/pill.component.scss +113 -0
- package/src/lib/components/status/pill/pill.component.spec.ts +47 -0
- package/src/lib/components/status/pill/pill.component.ts +83 -0
- package/src/lib/components/status/pill/pill.type.ts +42 -0
- package/src/lib/components/status/status.interface.ts +57 -0
- package/src/lib/components/status/status.type.ts +62 -0
- package/src/lib/components/status/tag/tag.component.html +39 -0
- package/src/lib/components/status/tag/tag.component.scss +140 -0
- package/src/lib/components/status/tag/tag.component.spec.ts +47 -0
- package/src/lib/components/status/tag/tag.component.ts +83 -0
- package/src/lib/components/status/tag/tag.type.ts +42 -0
- package/src/lib/components/stepper/stepper.component.html +83 -0
- package/src/lib/components/stepper/stepper.component.scss +196 -0
- package/src/lib/components/stepper/stepper.component.ts +482 -0
- package/src/lib/components/stepper/stepper.type.ts +60 -0
- package/src/lib/components/table/table.component.html +438 -0
- package/src/lib/components/table/table.component.scss +259 -0
- package/src/lib/components/table/table.component.spec.ts +117 -0
- package/src/lib/components/table/table.component.ts +215 -0
- package/src/lib/components/table/table.enum.ts +4 -0
- package/src/lib/components/table/table.function.ts +47 -0
- package/src/lib/components/table/table.interface.ts +143 -0
- package/src/lib/components/table/table.pipe.ts +62 -0
- package/src/lib/components/table/table.type.ts +15 -0
- package/src/lib/components/tabs/tabs.component.html +88 -0
- package/src/lib/components/tabs/tabs.component.scss +305 -0
- package/src/lib/components/tabs/tabs.component.spec.ts +94 -0
- package/src/lib/components/tabs/tabs.component.ts +282 -0
- package/src/lib/components/tabs/tabs.type.ts +81 -0
- package/src/lib/components/title-bar/title-bar.component.html +21 -0
- package/src/lib/components/title-bar/title-bar.component.scss +139 -0
- package/src/lib/components/title-bar/title-bar.component.spec.ts +44 -0
- package/src/lib/components/title-bar/title-bar.component.ts +13 -0
- package/src/lib/components/toast/toast.component.html +36 -0
- package/src/lib/components/toast/toast.component.scss +241 -0
- package/src/lib/components/toast/toast.component.ts +165 -0
- package/src/lib/components/toast/toast.type.ts +37 -0
- package/src/lib/components/toast-stack/toast-stack.component.html +30 -0
- package/src/lib/components/toast-stack/toast-stack.component.scss +35 -0
- package/src/lib/components/toast-stack/toast-stack.component.ts +51 -0
- package/src/lib/consts/country-prefix.ts +244 -0
- package/src/lib/directives/tooltip/popover.directive.ts +274 -0
- package/src/lib/directives/tooltip/tooltip.directive.spec.ts +86 -0
- package/src/lib/directives/tooltip/tooltip.directive.ts +234 -0
- package/src/lib/directives/tooltip/tooltip.interface.ts +29 -0
- package/src/lib/directives/tooltip/tooltip.type.ts +9 -0
- package/src/lib/interfaces/common.interfaces.ts +4 -0
- package/src/lib/pipes/chunk.pipe.ts +16 -0
- package/src/lib/pipes/safe-html.pipe.ts +14 -0
- package/src/lib/pipes/sanitize-html.pipe.ts +23 -0
- package/src/lib/types/base.types.ts +23 -0
- package/src/lib/types/common.types.ts +98 -0
- package/src/lib/types/form.types.ts +5 -0
- package/src/lib/utils/common.utils.ts +53 -0
- package/src/lib/utils/date.utils.ts +474 -0
- package/src/lib/utils/number.utils.ts +16 -0
- package/src/lib/utils/uuid.utils.ts +39 -0
- package/src/public-api.ts +114 -0
- package/tsconfig.lib.json +17 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +9 -0
- package/fesm2022/fragments.mjs +0 -8928
- package/fesm2022/fragments.mjs.map +0 -1
- package/index.d.ts +0 -3929
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { NgClass } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleChanges } from '@angular/core';
|
|
3
|
+
import { ToastCloseEvent, TToastCloseReason, TToastPosition, TToastSize, TToastStyle } from './toast.type';
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: 'frg-toast',
|
|
7
|
+
imports: [NgClass],
|
|
8
|
+
templateUrl: './toast.component.html',
|
|
9
|
+
styleUrl: './toast.component.scss'
|
|
10
|
+
})
|
|
11
|
+
export class ToastComponent implements OnChanges, OnDestroy {
|
|
12
|
+
@Input() open: boolean = false;
|
|
13
|
+
@Input() title: string = '';
|
|
14
|
+
@Input() message: string = '';
|
|
15
|
+
@Input() styleType: TToastStyle = 'primary';
|
|
16
|
+
@Input() position: TToastPosition = 'top-right';
|
|
17
|
+
@Input() size: TToastSize = 'medium';
|
|
18
|
+
@Input() autoClose: boolean = false;
|
|
19
|
+
@Input() duration: number = 4000;
|
|
20
|
+
@Input() hasCloseButton: boolean = true;
|
|
21
|
+
@Input() stacked: boolean = false;
|
|
22
|
+
@Input() closing: boolean = false;
|
|
23
|
+
@Input() motionDuration: number = 200;
|
|
24
|
+
@Input() ariaLabel: string = 'Notification';
|
|
25
|
+
|
|
26
|
+
@Output() closed = new EventEmitter<ToastCloseEvent>();
|
|
27
|
+
|
|
28
|
+
private closeTimerId: ReturnType<typeof setTimeout> | null = null;
|
|
29
|
+
private enterTimerId: ReturnType<typeof setTimeout> | null = null;
|
|
30
|
+
private leaveTimerId: ReturnType<typeof setTimeout> | null = null;
|
|
31
|
+
|
|
32
|
+
protected isRendered = false;
|
|
33
|
+
protected isEntering = false;
|
|
34
|
+
protected isClosing = false;
|
|
35
|
+
|
|
36
|
+
get statusIconClass(): string | null {
|
|
37
|
+
switch (this.styleType) {
|
|
38
|
+
case 'info':
|
|
39
|
+
return 'fas fa-info-circle';
|
|
40
|
+
case 'success':
|
|
41
|
+
return 'fas fa-check-circle';
|
|
42
|
+
case 'warning':
|
|
43
|
+
return 'fas fa-exclamation-triangle';
|
|
44
|
+
case 'danger':
|
|
45
|
+
return 'fas fa-times-circle';
|
|
46
|
+
default:
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
get toastClassMap() {
|
|
52
|
+
return {
|
|
53
|
+
'frg-toast--stacked': this.stacked,
|
|
54
|
+
'frg-toast--top-left': this.position === 'top-left',
|
|
55
|
+
'frg-toast--top-right': this.position === 'top-right',
|
|
56
|
+
'frg-toast--bottom-left': this.position === 'bottom-left',
|
|
57
|
+
'frg-toast--bottom-right': this.position === 'bottom-right',
|
|
58
|
+
'frg-toast--size-small': this.size === 'small',
|
|
59
|
+
'frg-toast--size-medium': this.size === 'medium',
|
|
60
|
+
'frg-toast--size-large': this.size === 'large',
|
|
61
|
+
'frg-toast--enter': this.isEntering,
|
|
62
|
+
'frg-toast--leave': this.isClosing || this.closing,
|
|
63
|
+
'frg-toast--primary': this.styleType === 'primary',
|
|
64
|
+
'frg-toast--secondary': this.styleType === 'secondary',
|
|
65
|
+
'frg-toast--tertiary': this.styleType === 'tertiary',
|
|
66
|
+
'frg-toast--dark': this.styleType === 'dark',
|
|
67
|
+
'frg-toast--light': this.styleType === 'light',
|
|
68
|
+
'frg-toast--info': this.styleType === 'info',
|
|
69
|
+
'frg-toast--success': this.styleType === 'success',
|
|
70
|
+
'frg-toast--warning': this.styleType === 'warning',
|
|
71
|
+
'frg-toast--danger': this.styleType === 'danger',
|
|
72
|
+
'frg-toast--default': this.styleType === 'default'
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
ngOnChanges(changes: SimpleChanges): void {
|
|
77
|
+
if (changes['open']) {
|
|
78
|
+
if (this.open) {
|
|
79
|
+
this.openToast();
|
|
80
|
+
} else {
|
|
81
|
+
this.closeToast();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (changes['open'] || changes['autoClose'] || changes['duration']) {
|
|
85
|
+
this.syncAutoClose();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
ngOnDestroy(): void {
|
|
90
|
+
this.clearCloseTimer();
|
|
91
|
+
this.clearEnterTimer();
|
|
92
|
+
this.clearLeaveTimer();
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
onCloseClick(): void {
|
|
96
|
+
this.requestClose('close-button');
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
private syncAutoClose(): void {
|
|
100
|
+
this.clearCloseTimer();
|
|
101
|
+
|
|
102
|
+
if (!this.open || !this.autoClose || this.duration <= 0) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
this.closeTimerId = setTimeout(() => {
|
|
107
|
+
this.requestClose('timeout');
|
|
108
|
+
}, this.duration);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
private requestClose(reason: TToastCloseReason): void {
|
|
112
|
+
if (!this.open) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
this.clearCloseTimer();
|
|
116
|
+
this.closed.emit({ reason });
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
private clearCloseTimer(): void {
|
|
120
|
+
if (this.closeTimerId) {
|
|
121
|
+
clearTimeout(this.closeTimerId);
|
|
122
|
+
this.closeTimerId = null;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
private openToast(): void {
|
|
127
|
+
this.isRendered = true;
|
|
128
|
+
this.isClosing = false;
|
|
129
|
+
this.startEnterAnimation();
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
private closeToast(): void {
|
|
133
|
+
if (!this.isRendered) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
this.isClosing = true;
|
|
137
|
+
this.clearLeaveTimer();
|
|
138
|
+
this.leaveTimerId = setTimeout(() => {
|
|
139
|
+
this.isClosing = false;
|
|
140
|
+
this.isRendered = false;
|
|
141
|
+
}, this.motionDuration);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
private startEnterAnimation(): void {
|
|
145
|
+
this.clearEnterTimer();
|
|
146
|
+
this.isEntering = true;
|
|
147
|
+
this.enterTimerId = setTimeout(() => {
|
|
148
|
+
this.isEntering = false;
|
|
149
|
+
}, this.motionDuration);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
private clearEnterTimer(): void {
|
|
153
|
+
if (this.enterTimerId) {
|
|
154
|
+
clearTimeout(this.enterTimerId);
|
|
155
|
+
this.enterTimerId = null;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
private clearLeaveTimer(): void {
|
|
160
|
+
if (this.leaveTimerId) {
|
|
161
|
+
clearTimeout(this.leaveTimerId);
|
|
162
|
+
this.leaveTimerId = null;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { TBaseSize, TBaseStyle } from '../../types/base.types';
|
|
2
|
+
|
|
3
|
+
export type TToastStyle = Exclude<
|
|
4
|
+
TBaseStyle,
|
|
5
|
+
| 'outline-primary'
|
|
6
|
+
| 'outline-secondary'
|
|
7
|
+
| 'outline-tertiary'
|
|
8
|
+
| 'outline-dark'
|
|
9
|
+
| 'outline-light'
|
|
10
|
+
| 'outline-info'
|
|
11
|
+
| 'outline-success'
|
|
12
|
+
| 'outline-warning'
|
|
13
|
+
| 'outline-danger'
|
|
14
|
+
>;
|
|
15
|
+
export type TToastPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
16
|
+
export type TToastCloseReason = 'close-button' | 'timeout' | 'programmatic';
|
|
17
|
+
export type TToastSize = TBaseSize;
|
|
18
|
+
|
|
19
|
+
export interface ToastCloseEvent {
|
|
20
|
+
reason: TToastCloseReason;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface ToastStackItem {
|
|
24
|
+
id: string;
|
|
25
|
+
title?: string;
|
|
26
|
+
message?: string;
|
|
27
|
+
styleType?: TToastStyle;
|
|
28
|
+
size?: TToastSize;
|
|
29
|
+
autoClose?: boolean;
|
|
30
|
+
duration?: number;
|
|
31
|
+
hasCloseButton?: boolean;
|
|
32
|
+
ariaLabel?: string;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface ToastStackCloseEvent extends ToastCloseEvent {
|
|
36
|
+
id: string;
|
|
37
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
@if (visibleToasts.length) {
|
|
2
|
+
<div
|
|
3
|
+
class="frg-toast-stack"
|
|
4
|
+
[ngClass]="{
|
|
5
|
+
'frg-toast-stack--top-left': position === 'top-left',
|
|
6
|
+
'frg-toast-stack--top-right': position === 'top-right',
|
|
7
|
+
'frg-toast-stack--bottom-left': position === 'bottom-left',
|
|
8
|
+
'frg-toast-stack--bottom-right': position === 'bottom-right'
|
|
9
|
+
}"
|
|
10
|
+
>
|
|
11
|
+
@for (toast of visibleToasts; track toast.id) {
|
|
12
|
+
<frg-toast
|
|
13
|
+
[open]="true"
|
|
14
|
+
[title]="toast.title || ''"
|
|
15
|
+
[message]="toast.message || ''"
|
|
16
|
+
[styleType]="toast.styleType || 'primary'"
|
|
17
|
+
[size]="toast.size || 'medium'"
|
|
18
|
+
[autoClose]="toast.autoClose ?? false"
|
|
19
|
+
[duration]="toast.duration ?? 4000"
|
|
20
|
+
[hasCloseButton]="toast.hasCloseButton ?? true"
|
|
21
|
+
[ariaLabel]="toast.ariaLabel || 'Notification'"
|
|
22
|
+
[stacked]="true"
|
|
23
|
+
[closing]="isClosing(toast.id)"
|
|
24
|
+
[position]="position"
|
|
25
|
+
[motionDuration]="motionDuration"
|
|
26
|
+
(closed)="onToastClosed(toast.id, $event)"
|
|
27
|
+
></frg-toast>
|
|
28
|
+
}
|
|
29
|
+
</div>
|
|
30
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
@use '../../../../assets/styles/scss/variables' as *;
|
|
2
|
+
|
|
3
|
+
:host {
|
|
4
|
+
display: block;
|
|
5
|
+
|
|
6
|
+
.frg-toast-stack {
|
|
7
|
+
position: fixed;
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: column;
|
|
10
|
+
gap: 0.75rem;
|
|
11
|
+
z-index: 1100;
|
|
12
|
+
min-width: 18rem;
|
|
13
|
+
max-width: 24rem;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.frg-toast-stack--top-left {
|
|
17
|
+
top: 1.5rem;
|
|
18
|
+
left: 1.5rem;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.frg-toast-stack--top-right {
|
|
22
|
+
top: 1.5rem;
|
|
23
|
+
right: 1.5rem;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.frg-toast-stack--bottom-left {
|
|
27
|
+
bottom: 1.5rem;
|
|
28
|
+
left: 1.5rem;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.frg-toast-stack--bottom-right {
|
|
32
|
+
bottom: 1.5rem;
|
|
33
|
+
right: 1.5rem;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { NgClass } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';
|
|
3
|
+
import { ToastComponent } from '../toast/toast.component';
|
|
4
|
+
import { ToastCloseEvent, ToastStackCloseEvent, ToastStackItem, TToastPosition } from '../toast/toast.type';
|
|
5
|
+
|
|
6
|
+
@Component({
|
|
7
|
+
selector: 'frg-toast-stack',
|
|
8
|
+
imports: [NgClass, ToastComponent],
|
|
9
|
+
templateUrl: './toast-stack.component.html',
|
|
10
|
+
styleUrl: './toast-stack.component.scss'
|
|
11
|
+
})
|
|
12
|
+
export class ToastStackComponent implements OnChanges {
|
|
13
|
+
@Input() toasts: ToastStackItem[] = [];
|
|
14
|
+
@Input() position: TToastPosition = 'top-right';
|
|
15
|
+
@Input() maxVisible: number = 4;
|
|
16
|
+
@Input() motionDuration: number = 200;
|
|
17
|
+
|
|
18
|
+
@Output() closed = new EventEmitter<ToastStackCloseEvent>();
|
|
19
|
+
|
|
20
|
+
private closingIds = new Set<string>();
|
|
21
|
+
|
|
22
|
+
get visibleToasts(): ToastStackItem[] {
|
|
23
|
+
return this.toasts.slice(0, this.maxVisible);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
ngOnChanges(changes: SimpleChanges): void {
|
|
27
|
+
if (changes['toasts']) {
|
|
28
|
+
const ids = new Set(this.toasts.map((toast) => toast.id));
|
|
29
|
+
this.closingIds.forEach((id) => {
|
|
30
|
+
if (!ids.has(id)) {
|
|
31
|
+
this.closingIds.delete(id);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
onToastClosed(id: string, event: ToastCloseEvent): void {
|
|
38
|
+
if (this.closingIds.has(id)) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
this.closingIds.add(id);
|
|
42
|
+
setTimeout(() => {
|
|
43
|
+
this.closingIds.delete(id);
|
|
44
|
+
this.closed.emit({ id, reason: event.reason });
|
|
45
|
+
}, this.motionDuration);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
isClosing(id: string): boolean {
|
|
49
|
+
return this.closingIds.has(id);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
export const TELEPHONE_COUNTRY_PREFIX: { name: string; dial_code: string; code: string }[] = [
|
|
2
|
+
{ name: 'Afghanistan', dial_code: '+93', code: 'AF' },
|
|
3
|
+
{ name: 'Aland Islands', dial_code: '+358', code: 'AX' },
|
|
4
|
+
{ name: 'Albania', dial_code: '+355', code: 'AL' },
|
|
5
|
+
{ name: 'Algeria', dial_code: '+213', code: 'DZ' },
|
|
6
|
+
{ name: 'AmericanSamoa', dial_code: '+1684', code: 'AS' },
|
|
7
|
+
{ name: 'Andorra', dial_code: '+376', code: 'AD' },
|
|
8
|
+
{ name: 'Angola', dial_code: '+244', code: 'AO' },
|
|
9
|
+
{ name: 'Anguilla', dial_code: '+1264', code: 'AI' },
|
|
10
|
+
{ name: 'Antarctica', dial_code: '+672', code: 'AQ' },
|
|
11
|
+
{ name: 'Antigua and Barbuda', dial_code: '+1268', code: 'AG' },
|
|
12
|
+
{ name: 'Argentina', dial_code: '+54', code: 'AR' },
|
|
13
|
+
{ name: 'Armenia', dial_code: '+374', code: 'AM' },
|
|
14
|
+
{ name: 'Aruba', dial_code: '+297', code: 'AW' },
|
|
15
|
+
{ name: 'Australia', dial_code: '+61', code: 'AU' },
|
|
16
|
+
{ name: 'Austria', dial_code: '+43', code: 'AT' },
|
|
17
|
+
{ name: 'Azerbaijan', dial_code: '+994', code: 'AZ' },
|
|
18
|
+
{ name: 'Bahamas', dial_code: '+1242', code: 'BS' },
|
|
19
|
+
{ name: 'Bahrain', dial_code: '+973', code: 'BH' },
|
|
20
|
+
{ name: 'Bangladesh', dial_code: '+880', code: 'BD' },
|
|
21
|
+
{ name: 'Barbados', dial_code: '+1246', code: 'BB' },
|
|
22
|
+
{ name: 'Belarus', dial_code: '+375', code: 'BY' },
|
|
23
|
+
{ name: 'Belgium', dial_code: '+32', code: 'BE' },
|
|
24
|
+
{ name: 'Belize', dial_code: '+501', code: 'BZ' },
|
|
25
|
+
{ name: 'Benin', dial_code: '+229', code: 'BJ' },
|
|
26
|
+
{ name: 'Bermuda', dial_code: '+1441', code: 'BM' },
|
|
27
|
+
{ name: 'Bhutan', dial_code: '+975', code: 'BT' },
|
|
28
|
+
{ name: 'Bolivia, Plurinational State of', dial_code: '+591', code: 'BO' },
|
|
29
|
+
{ name: 'Bosnia and Herzegovina', dial_code: '+387', code: 'BA' },
|
|
30
|
+
{ name: 'Botswana', dial_code: '+267', code: 'BW' },
|
|
31
|
+
{ name: 'Brazil', dial_code: '+55', code: 'BR' },
|
|
32
|
+
{ name: 'British Indian Ocean Territory', dial_code: '+246', code: 'IO' },
|
|
33
|
+
{ name: 'Brunei Darussalam', dial_code: '+673', code: 'BN' },
|
|
34
|
+
{ name: 'Bulgaria', dial_code: '+359', code: 'BG' },
|
|
35
|
+
{ name: 'Burkina Faso', dial_code: '+226', code: 'BF' },
|
|
36
|
+
{ name: 'Burundi', dial_code: '+257', code: 'BI' },
|
|
37
|
+
{ name: 'Cambodia', dial_code: '+855', code: 'KH' },
|
|
38
|
+
{ name: 'Cameroon', dial_code: '+237', code: 'CM' },
|
|
39
|
+
{ name: 'Canada', dial_code: '+1', code: 'CA' },
|
|
40
|
+
{ name: 'Cape Verde', dial_code: '+238', code: 'CV' },
|
|
41
|
+
{ name: 'Cayman Islands', dial_code: '+1345', code: 'KY' },
|
|
42
|
+
{ name: 'Central African Republic', dial_code: '+236', code: 'CF' },
|
|
43
|
+
{ name: 'Chad', dial_code: '+235', code: 'TD' },
|
|
44
|
+
{ name: 'Chile', dial_code: '+56', code: 'CL' },
|
|
45
|
+
{ name: 'China', dial_code: '+86', code: 'CN' },
|
|
46
|
+
{ name: 'Christmas Island', dial_code: '+61', code: 'CX' },
|
|
47
|
+
{ name: 'Cocos (Keeling) Islands', dial_code: '+61', code: 'CC' },
|
|
48
|
+
{ name: 'Colombia', dial_code: '+57', code: 'CO' },
|
|
49
|
+
{ name: 'Comoros', dial_code: '+269', code: 'KM' },
|
|
50
|
+
{ name: 'Congo', dial_code: '+242', code: 'CG' },
|
|
51
|
+
{ name: 'Congo, The Democratic Republic of the Congo', dial_code: '+243', code: 'CD' },
|
|
52
|
+
{ name: 'Cook Islands', dial_code: '+682', code: 'CK' },
|
|
53
|
+
{ name: 'Costa Rica', dial_code: '+506', code: 'CR' },
|
|
54
|
+
{ name: "Cote d'Ivoire", dial_code: '+225', code: 'CI' },
|
|
55
|
+
{ name: 'Croatia', dial_code: '+385', code: 'HR' },
|
|
56
|
+
{ name: 'Cuba', dial_code: '+53', code: 'CU' },
|
|
57
|
+
{ name: 'Cyprus', dial_code: '+357', code: 'CY' },
|
|
58
|
+
{ name: 'Czech Republic', dial_code: '+420', code: 'CZ' },
|
|
59
|
+
{ name: 'Denmark', dial_code: '+45', code: 'DK' },
|
|
60
|
+
{ name: 'Djibouti', dial_code: '+253', code: 'DJ' },
|
|
61
|
+
{ name: 'Dominica', dial_code: '+1767', code: 'DM' },
|
|
62
|
+
{ name: 'Dominican Republic', dial_code: '+1849', code: 'DO' },
|
|
63
|
+
{ name: 'Ecuador', dial_code: '+593', code: 'EC' },
|
|
64
|
+
{ name: 'Egypt', dial_code: '+20', code: 'EG' },
|
|
65
|
+
{ name: 'El Salvador', dial_code: '+503', code: 'SV' },
|
|
66
|
+
{ name: 'Equatorial Guinea', dial_code: '+240', code: 'GQ' },
|
|
67
|
+
{ name: 'Eritrea', dial_code: '+291', code: 'ER' },
|
|
68
|
+
{ name: 'Estonia', dial_code: '+372', code: 'EE' },
|
|
69
|
+
{ name: 'Ethiopia', dial_code: '+251', code: 'ET' },
|
|
70
|
+
{ name: 'Falkland Islands (Malvinas)', dial_code: '+500', code: 'FK' },
|
|
71
|
+
{ name: 'Faroe Islands', dial_code: '+298', code: 'FO' },
|
|
72
|
+
{ name: 'Fiji', dial_code: '+679', code: 'FJ' },
|
|
73
|
+
{ name: 'Finland', dial_code: '+358', code: 'FI' },
|
|
74
|
+
{ name: 'France', dial_code: '+33', code: 'FR' },
|
|
75
|
+
{ name: 'French Guiana', dial_code: '+594', code: 'GF' },
|
|
76
|
+
{ name: 'French Polynesia', dial_code: '+689', code: 'PF' },
|
|
77
|
+
{ name: 'Gabon', dial_code: '+241', code: 'GA' },
|
|
78
|
+
{ name: 'Gambia', dial_code: '+220', code: 'GM' },
|
|
79
|
+
{ name: 'Georgia', dial_code: '+995', code: 'GE' },
|
|
80
|
+
{ name: 'Germany', dial_code: '+49', code: 'DE' },
|
|
81
|
+
{ name: 'Ghana', dial_code: '+233', code: 'GH' },
|
|
82
|
+
{ name: 'Gibraltar', dial_code: '+350', code: 'GI' },
|
|
83
|
+
{ name: 'Greece', dial_code: '+30', code: 'GR' },
|
|
84
|
+
{ name: 'Greenland', dial_code: '+299', code: 'GL' },
|
|
85
|
+
{ name: 'Grenada', dial_code: '+1473', code: 'GD' },
|
|
86
|
+
{ name: 'Guadeloupe', dial_code: '+590', code: 'GP' },
|
|
87
|
+
{ name: 'Guam', dial_code: '+1671', code: 'GU' },
|
|
88
|
+
{ name: 'Guatemala', dial_code: '+502', code: 'GT' },
|
|
89
|
+
{ name: 'Guernsey', dial_code: '+44', code: 'GG' },
|
|
90
|
+
{ name: 'Guinea', dial_code: '+224', code: 'GN' },
|
|
91
|
+
{ name: 'Guinea-Bissau', dial_code: '+245', code: 'GW' },
|
|
92
|
+
{ name: 'Guyana', dial_code: '+595', code: 'GY' },
|
|
93
|
+
{ name: 'Haiti', dial_code: '+509', code: 'HT' },
|
|
94
|
+
{ name: 'Holy See (Vatican City State)', dial_code: '+379', code: 'VA' },
|
|
95
|
+
{ name: 'Honduras', dial_code: '+504', code: 'HN' },
|
|
96
|
+
{ name: 'Hong Kong', dial_code: '+852', code: 'HK' },
|
|
97
|
+
{ name: 'Hungary', dial_code: '+36', code: 'HU' },
|
|
98
|
+
{ name: 'Iceland', dial_code: '+354', code: 'IS' },
|
|
99
|
+
{ name: 'India', dial_code: '+91', code: 'IN' },
|
|
100
|
+
{ name: 'Indonesia', dial_code: '+62', code: 'ID' },
|
|
101
|
+
{ name: 'Iran, Islamic Republic of Persian Gulf', dial_code: '+98', code: 'IR' },
|
|
102
|
+
{ name: 'Iraq', dial_code: '+964', code: 'IQ' },
|
|
103
|
+
{ name: 'Ireland', dial_code: '+353', code: 'IE' },
|
|
104
|
+
{ name: 'Isle of Man', dial_code: '+44', code: 'IM' },
|
|
105
|
+
{ name: 'Israel', dial_code: '+972', code: 'IL' },
|
|
106
|
+
{ name: 'Italy', dial_code: '+39', code: 'IT' },
|
|
107
|
+
{ name: 'Jamaica', dial_code: '+1876', code: 'JM' },
|
|
108
|
+
{ name: 'Japan', dial_code: '+81', code: 'JP' },
|
|
109
|
+
{ name: 'Jersey', dial_code: '+44', code: 'JE' },
|
|
110
|
+
{ name: 'Jordan', dial_code: '+962', code: 'JO' },
|
|
111
|
+
{ name: 'Kazakhstan', dial_code: '+77', code: 'KZ' },
|
|
112
|
+
{ name: 'Kenya', dial_code: '+254', code: 'KE' },
|
|
113
|
+
{ name: 'Kiribati', dial_code: '+686', code: 'KI' },
|
|
114
|
+
{ name: "Korea, Democratic People's Republic of Korea", dial_code: '+850', code: 'KP' },
|
|
115
|
+
{ name: 'Korea, Republic of South Korea', dial_code: '+82', code: 'KR' },
|
|
116
|
+
{ name: 'Kuwait', dial_code: '+965', code: 'KW' },
|
|
117
|
+
{ name: 'Kyrgyzstan', dial_code: '+996', code: 'KG' },
|
|
118
|
+
{ name: 'Laos', dial_code: '+856', code: 'LA' },
|
|
119
|
+
{ name: 'Latvia', dial_code: '+371', code: 'LV' },
|
|
120
|
+
{ name: 'Lebanon', dial_code: '+961', code: 'LB' },
|
|
121
|
+
{ name: 'Lesotho', dial_code: '+266', code: 'LS' },
|
|
122
|
+
{ name: 'Liberia', dial_code: '+231', code: 'LR' },
|
|
123
|
+
{ name: 'Libyan Arab Jamahiriya', dial_code: '+218', code: 'LY' },
|
|
124
|
+
{ name: 'Liechtenstein', dial_code: '+423', code: 'LI' },
|
|
125
|
+
{ name: 'Lithuania', dial_code: '+370', code: 'LT' },
|
|
126
|
+
{ name: 'Luxembourg', dial_code: '+352', code: 'LU' },
|
|
127
|
+
{ name: 'Macao', dial_code: '+853', code: 'MO' },
|
|
128
|
+
{ name: 'Macedonia', dial_code: '+389', code: 'MK' },
|
|
129
|
+
{ name: 'Madagascar', dial_code: '+261', code: 'MG' },
|
|
130
|
+
{ name: 'Malawi', dial_code: '+265', code: 'MW' },
|
|
131
|
+
{ name: 'Malaysia', dial_code: '+60', code: 'MY' },
|
|
132
|
+
{ name: 'Maldives', dial_code: '+960', code: 'MV' },
|
|
133
|
+
{ name: 'Mali', dial_code: '+223', code: 'ML' },
|
|
134
|
+
{ name: 'Malta', dial_code: '+356', code: 'MT' },
|
|
135
|
+
{ name: 'Marshall Islands', dial_code: '+692', code: 'MH' },
|
|
136
|
+
{ name: 'Martinique', dial_code: '+596', code: 'MQ' },
|
|
137
|
+
{ name: 'Mauritania', dial_code: '+222', code: 'MR' },
|
|
138
|
+
{ name: 'Mauritius', dial_code: '+230', code: 'MU' },
|
|
139
|
+
{ name: 'Mayotte', dial_code: '+262', code: 'YT' },
|
|
140
|
+
{ name: 'Mexico', dial_code: '+52', code: 'MX' },
|
|
141
|
+
{ name: 'Micronesia, Federated States of Micronesia', dial_code: '+691', code: 'FM' },
|
|
142
|
+
{ name: 'Moldova', dial_code: '+373', code: 'MD' },
|
|
143
|
+
{ name: 'Monaco', dial_code: '+377', code: 'MC' },
|
|
144
|
+
{ name: 'Mongolia', dial_code: '+976', code: 'MN' },
|
|
145
|
+
{ name: 'Montenegro', dial_code: '+382', code: 'ME' },
|
|
146
|
+
{ name: 'Montserrat', dial_code: '+1664', code: 'MS' },
|
|
147
|
+
{ name: 'Morocco', dial_code: '+212', code: 'MA' },
|
|
148
|
+
{ name: 'Mozambique', dial_code: '+258', code: 'MZ' },
|
|
149
|
+
{ name: 'Myanmar', dial_code: '+95', code: 'MM' },
|
|
150
|
+
{ name: 'Namibia', dial_code: '+264', code: 'NA' },
|
|
151
|
+
{ name: 'Nauru', dial_code: '+674', code: 'NR' },
|
|
152
|
+
{ name: 'Nepal', dial_code: '+977', code: 'NP' },
|
|
153
|
+
{ name: 'Netherlands', dial_code: '+31', code: 'NL' },
|
|
154
|
+
{ name: 'Netherlands Antilles', dial_code: '+599', code: 'AN' },
|
|
155
|
+
{ name: 'New Caledonia', dial_code: '+687', code: 'NC' },
|
|
156
|
+
{ name: 'New Zealand', dial_code: '+64', code: 'NZ' },
|
|
157
|
+
{ name: 'Nicaragua', dial_code: '+505', code: 'NI' },
|
|
158
|
+
{ name: 'Niger', dial_code: '+227', code: 'NE' },
|
|
159
|
+
{ name: 'Nigeria', dial_code: '+234', code: 'NG' },
|
|
160
|
+
{ name: 'Niue', dial_code: '+683', code: 'NU' },
|
|
161
|
+
{ name: 'Norfolk Island', dial_code: '+672', code: 'NF' },
|
|
162
|
+
{ name: 'Northern Mariana Islands', dial_code: '+1670', code: 'MP' },
|
|
163
|
+
{ name: 'Norway', dial_code: '+47', code: 'NO' },
|
|
164
|
+
{ name: 'Oman', dial_code: '+968', code: 'OM' },
|
|
165
|
+
{ name: 'Pakistan', dial_code: '+92', code: 'PK' },
|
|
166
|
+
{ name: 'Palau', dial_code: '+680', code: 'PW' },
|
|
167
|
+
{ name: 'Palestinian Territory, Occupied', dial_code: '+970', code: 'PS' },
|
|
168
|
+
{ name: 'Panama', dial_code: '+507', code: 'PA' },
|
|
169
|
+
{ name: 'Papua New Guinea', dial_code: '+675', code: 'PG' },
|
|
170
|
+
{ name: 'Paraguay', dial_code: '+595', code: 'PY' },
|
|
171
|
+
{ name: 'Peru', dial_code: '+51', code: 'PE' },
|
|
172
|
+
{ name: 'Philippines', dial_code: '+63', code: 'PH' },
|
|
173
|
+
{ name: 'Pitcairn', dial_code: '+872', code: 'PN' },
|
|
174
|
+
{ name: 'Poland', dial_code: '+48', code: 'PL' },
|
|
175
|
+
{ name: 'Portugal', dial_code: '+351', code: 'PT' },
|
|
176
|
+
{ name: 'Puerto Rico', dial_code: '+1939', code: 'PR' },
|
|
177
|
+
{ name: 'Qatar', dial_code: '+974', code: 'QA' },
|
|
178
|
+
{ name: 'Romania', dial_code: '+40', code: 'RO' },
|
|
179
|
+
{ name: 'Russia', dial_code: '+7', code: 'RU' },
|
|
180
|
+
{ name: 'Rwanda', dial_code: '+250', code: 'RW' },
|
|
181
|
+
{ name: 'Reunion', dial_code: '+262', code: 'RE' },
|
|
182
|
+
{ name: 'Saint Barthelemy', dial_code: '+590', code: 'BL' },
|
|
183
|
+
{ name: 'Saint Helena, Ascension and Tristan Da Cunha', dial_code: '+290', code: 'SH' },
|
|
184
|
+
{ name: 'Saint Kitts and Nevis', dial_code: '+1869', code: 'KN' },
|
|
185
|
+
{ name: 'Saint Lucia', dial_code: '+1758', code: 'LC' },
|
|
186
|
+
{ name: 'Saint Martin', dial_code: '+590', code: 'MF' },
|
|
187
|
+
{ name: 'Saint Pierre and Miquelon', dial_code: '+508', code: 'PM' },
|
|
188
|
+
{ name: 'Saint Vincent and the Grenadines', dial_code: '+1784', code: 'VC' },
|
|
189
|
+
{ name: 'Samoa', dial_code: '+685', code: 'WS' },
|
|
190
|
+
{ name: 'San Marino', dial_code: '+378', code: 'SM' },
|
|
191
|
+
{ name: 'Sao Tome and Principe', dial_code: '+239', code: 'ST' },
|
|
192
|
+
{ name: 'Saudi Arabia', dial_code: '+966', code: 'SA' },
|
|
193
|
+
{ name: 'Senegal', dial_code: '+221', code: 'SN' },
|
|
194
|
+
{ name: 'Serbia', dial_code: '+381', code: 'RS' },
|
|
195
|
+
{ name: 'Seychelles', dial_code: '+248', code: 'SC' },
|
|
196
|
+
{ name: 'Sierra Leone', dial_code: '+232', code: 'SL' },
|
|
197
|
+
{ name: 'Singapore', dial_code: '+65', code: 'SG' },
|
|
198
|
+
{ name: 'Slovakia', dial_code: '+421', code: 'SK' },
|
|
199
|
+
{ name: 'Slovenia', dial_code: '+386', code: 'SI' },
|
|
200
|
+
{ name: 'Solomon Islands', dial_code: '+677', code: 'SB' },
|
|
201
|
+
{ name: 'Somalia', dial_code: '+252', code: 'SO' },
|
|
202
|
+
{ name: 'South Africa', dial_code: '+27', code: 'ZA' },
|
|
203
|
+
{ name: 'South Sudan', dial_code: '+211', code: 'SS' },
|
|
204
|
+
{ name: 'South Georgia and the South Sandwich Islands', dial_code: '+500', code: 'GS' },
|
|
205
|
+
{ name: 'Spain', dial_code: '+34', code: 'ES' },
|
|
206
|
+
{ name: 'Sri Lanka', dial_code: '+94', code: 'LK' },
|
|
207
|
+
{ name: 'Sudan', dial_code: '+249', code: 'SD' },
|
|
208
|
+
{ name: 'Suriname', dial_code: '+597', code: 'SR' },
|
|
209
|
+
{ name: 'Svalbard and Jan Mayen', dial_code: '+47', code: 'SJ' },
|
|
210
|
+
{ name: 'Swaziland', dial_code: '+268', code: 'SZ' },
|
|
211
|
+
{ name: 'Sweden', dial_code: '+46', code: 'SE' },
|
|
212
|
+
{ name: 'Switzerland', dial_code: '+41', code: 'CH' },
|
|
213
|
+
{ name: 'Syrian Arab Republic', dial_code: '+963', code: 'SY' },
|
|
214
|
+
{ name: 'Taiwan', dial_code: '+886', code: 'TW' },
|
|
215
|
+
{ name: 'Tajikistan', dial_code: '+992', code: 'TJ' },
|
|
216
|
+
{ name: 'Tanzania, United Republic of Tanzania', dial_code: '+255', code: 'TZ' },
|
|
217
|
+
{ name: 'Thailand', dial_code: '+66', code: 'TH' },
|
|
218
|
+
{ name: 'Timor-Leste', dial_code: '+670', code: 'TL' },
|
|
219
|
+
{ name: 'Togo', dial_code: '+228', code: 'TG' },
|
|
220
|
+
{ name: 'Tokelau', dial_code: '+690', code: 'TK' },
|
|
221
|
+
{ name: 'Tonga', dial_code: '+676', code: 'TO' },
|
|
222
|
+
{ name: 'Trinidad and Tobago', dial_code: '+1868', code: 'TT' },
|
|
223
|
+
{ name: 'Tunisia', dial_code: '+216', code: 'TN' },
|
|
224
|
+
{ name: 'Turkey', dial_code: '+90', code: 'TR' },
|
|
225
|
+
{ name: 'Turkmenistan', dial_code: '+993', code: 'TM' },
|
|
226
|
+
{ name: 'Turks and Caicos Islands', dial_code: '+1649', code: 'TC' },
|
|
227
|
+
{ name: 'Tuvalu', dial_code: '+688', code: 'TV' },
|
|
228
|
+
{ name: 'Uganda', dial_code: '+256', code: 'UG' },
|
|
229
|
+
{ name: 'Ukraine', dial_code: '+380', code: 'UA' },
|
|
230
|
+
{ name: 'United Arab Emirates', dial_code: '+971', code: 'AE' },
|
|
231
|
+
{ name: 'United Kingdom', dial_code: '+44', code: 'GB' },
|
|
232
|
+
{ name: 'United States', dial_code: '+1', code: 'US' },
|
|
233
|
+
{ name: 'Uruguay', dial_code: '+598', code: 'UY' },
|
|
234
|
+
{ name: 'Uzbekistan', dial_code: '+998', code: 'UZ' },
|
|
235
|
+
{ name: 'Vanuatu', dial_code: '+678', code: 'VU' },
|
|
236
|
+
{ name: 'Venezuela, Bolivarian Republic of Venezuela', dial_code: '+58', code: 'VE' },
|
|
237
|
+
{ name: 'Vietnam', dial_code: '+84', code: 'VN' },
|
|
238
|
+
{ name: 'Virgin Islands, British', dial_code: '+1284', code: 'VG' },
|
|
239
|
+
{ name: 'Virgin Islands, U.S.', dial_code: '+1340', code: 'VI' },
|
|
240
|
+
{ name: 'Wallis and Futuna', dial_code: '+681', code: 'WF' },
|
|
241
|
+
{ name: 'Yemen', dial_code: '+967', code: 'YE' },
|
|
242
|
+
{ name: 'Zambia', dial_code: '+260', code: 'ZM' },
|
|
243
|
+
{ name: 'Zimbabwe', dial_code: '+263', code: 'ZW' }
|
|
244
|
+
];
|