@duyanhdev/mvp-ifs-ui-kit 21.0.0

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.
Files changed (170) hide show
  1. package/.editorconfig +16 -0
  2. package/.gitmodules +3 -0
  3. package/.postcssrc.json +5 -0
  4. package/.prettierignore +14 -0
  5. package/.prettierrc.json +29 -0
  6. package/LICENSE.md +21 -0
  7. package/README.md +59 -0
  8. package/angular.json +98 -0
  9. package/eslint.config.js +89 -0
  10. package/package.json +59 -0
  11. package/public/demo/images/flag/flag_placeholder.png +0 -0
  12. package/public/demo/images/footer-image.gif +0 -0
  13. package/public/demo/images/galleria/galleria1.jpg +0 -0
  14. package/public/demo/images/galleria/galleria10.jpg +0 -0
  15. package/public/demo/images/galleria/galleria10s.jpg +0 -0
  16. package/public/demo/images/galleria/galleria11.jpg +0 -0
  17. package/public/demo/images/galleria/galleria11s.jpg +0 -0
  18. package/public/demo/images/galleria/galleria12.jpg +0 -0
  19. package/public/demo/images/galleria/galleria12s.jpg +0 -0
  20. package/public/demo/images/galleria/galleria13.jpg +0 -0
  21. package/public/demo/images/galleria/galleria13s.jpg +0 -0
  22. package/public/demo/images/galleria/galleria14.jpg +0 -0
  23. package/public/demo/images/galleria/galleria14s.jpg +0 -0
  24. package/public/demo/images/galleria/galleria15.jpg +0 -0
  25. package/public/demo/images/galleria/galleria15s.jpg +0 -0
  26. package/public/demo/images/galleria/galleria1s.jpg +0 -0
  27. package/public/demo/images/galleria/galleria2.jpg +0 -0
  28. package/public/demo/images/galleria/galleria2s.jpg +0 -0
  29. package/public/demo/images/galleria/galleria3.jpg +0 -0
  30. package/public/demo/images/galleria/galleria3s.jpg +0 -0
  31. package/public/demo/images/galleria/galleria4.jpg +0 -0
  32. package/public/demo/images/galleria/galleria4s.jpg +0 -0
  33. package/public/demo/images/galleria/galleria5.jpg +0 -0
  34. package/public/demo/images/galleria/galleria5s.jpg +0 -0
  35. package/public/demo/images/galleria/galleria6.jpg +0 -0
  36. package/public/demo/images/galleria/galleria6s.jpg +0 -0
  37. package/public/demo/images/galleria/galleria7.jpg +0 -0
  38. package/public/demo/images/galleria/galleria7s.jpg +0 -0
  39. package/public/demo/images/galleria/galleria8.jpg +0 -0
  40. package/public/demo/images/galleria/galleria8s.jpg +0 -0
  41. package/public/demo/images/galleria/galleria9.jpg +0 -0
  42. package/public/demo/images/galleria/galleria9s.jpg +0 -0
  43. package/public/demo/images/product/bamboo-watch.jpg +0 -0
  44. package/public/demo/images/product/black-watch.jpg +0 -0
  45. package/public/demo/images/product/blue-band.jpg +0 -0
  46. package/public/demo/images/product/blue-t-shirt.jpg +0 -0
  47. package/public/demo/images/product/bracelet.jpg +0 -0
  48. package/public/demo/images/product/brown-purse.jpg +0 -0
  49. package/public/demo/images/product/chakra-bracelet.jpg +0 -0
  50. package/public/demo/images/product/galaxy-earrings.jpg +0 -0
  51. package/public/demo/images/product/game-controller.jpg +0 -0
  52. package/public/demo/images/product/gaming-set.jpg +0 -0
  53. package/public/demo/images/product/gold-phone-case.jpg +0 -0
  54. package/public/demo/images/product/green-earbuds.jpg +0 -0
  55. package/public/demo/images/product/green-t-shirt.jpg +0 -0
  56. package/public/demo/images/product/grey-t-shirt.jpg +0 -0
  57. package/public/demo/images/product/headphones.jpg +0 -0
  58. package/public/demo/images/product/light-green-t-shirt.jpg +0 -0
  59. package/public/demo/images/product/lime-band.jpg +0 -0
  60. package/public/demo/images/product/mini-speakers.jpg +0 -0
  61. package/public/demo/images/product/painted-phone-case.jpg +0 -0
  62. package/public/demo/images/product/pink-band.jpg +0 -0
  63. package/public/demo/images/product/pink-purse.jpg +0 -0
  64. package/public/demo/images/product/product-placeholder.svg +10 -0
  65. package/public/demo/images/product/purple-band.jpg +0 -0
  66. package/public/demo/images/product/purple-gemstone-necklace.jpg +0 -0
  67. package/public/demo/images/product/purple-t-shirt.jpg +0 -0
  68. package/public/demo/images/product/shoes.jpg +0 -0
  69. package/public/demo/images/product/sneakers.jpg +0 -0
  70. package/public/demo/images/product/teal-t-shirt.jpg +0 -0
  71. package/public/demo/images/product/yellow-earbuds.jpg +0 -0
  72. package/public/demo/images/product/yoga-mat.jpg +0 -0
  73. package/public/demo/images/product/yoga-set.jpg +0 -0
  74. package/src/app/layout/component/configurator/app.configurator.html +48 -0
  75. package/src/app/layout/component/configurator/app.configurator.ts +396 -0
  76. package/src/app/layout/component/floatingconfigurator/app.floatingconfigurator.ts +31 -0
  77. package/src/app/layout/component/footer/app.footer.scss +52 -0
  78. package/src/app/layout/component/footer/app.footer.ts +26 -0
  79. package/src/app/layout/component/layout/app.layout.ts +50 -0
  80. package/src/app/layout/component/menu/app.menu.html +7 -0
  81. package/src/app/layout/component/menu/app.menu.scss +13 -0
  82. package/src/app/layout/component/menu/app.menu.ts +90 -0
  83. package/src/app/layout/component/menuitem/app.menuitem.html +56 -0
  84. package/src/app/layout/component/menuitem/app.menuitem.scss +218 -0
  85. package/src/app/layout/component/menuitem/app.menuitem.ts +126 -0
  86. package/src/app/layout/component/sidebar/app.sidebar.html +3 -0
  87. package/src/app/layout/component/sidebar/app.sidebar.scss +0 -0
  88. package/src/app/layout/component/sidebar/app.sidebar.ts +106 -0
  89. package/src/app/layout/component/topbar/app.topbar.html +190 -0
  90. package/src/app/layout/component/topbar/app.topbar.scss +8 -0
  91. package/src/app/layout/component/topbar/app.topbar.ts +68 -0
  92. package/src/app/layout/service/layout.service.ts +117 -0
  93. package/src/app/pages/auth/access.ts +32 -0
  94. package/src/app/pages/auth/auth.routes.ts +10 -0
  95. package/src/app/pages/auth/error.ts +32 -0
  96. package/src/app/pages/auth/login.ts +71 -0
  97. package/src/app/pages/crud/crud.ts +387 -0
  98. package/src/app/pages/dashboard/dashboard.css +778 -0
  99. package/src/app/pages/dashboard/dashboard.html +191 -0
  100. package/src/app/pages/dashboard/dashboard.ts +348 -0
  101. package/src/app/pages/documentation/documentation.ts +73 -0
  102. package/src/app/pages/empty/empty.ts +11 -0
  103. package/src/app/pages/landing/components/featureswidget.ts +139 -0
  104. package/src/app/pages/landing/components/footerwidget.ts +73 -0
  105. package/src/app/pages/landing/components/herowidget.ts +25 -0
  106. package/src/app/pages/landing/components/highlightswidget.ts +46 -0
  107. package/src/app/pages/landing/components/pricingwidget.ts +119 -0
  108. package/src/app/pages/landing/components/topbarwidget.component.ts +68 -0
  109. package/src/app/pages/landing/landing.ts +31 -0
  110. package/src/app/pages/notfound/notfound.ts +68 -0
  111. package/src/app/pages/pages.routes.ts +17 -0
  112. package/src/app/pages/profile/profile.html +57 -0
  113. package/src/app/pages/profile/profile.scss +145 -0
  114. package/src/app/pages/profile/profile.ts +19 -0
  115. package/src/app/pages/service/country.service.ts +255 -0
  116. package/src/app/pages/service/customer.service.ts +9057 -0
  117. package/src/app/pages/service/icon.service.ts +23 -0
  118. package/src/app/pages/service/node.service.ts +816 -0
  119. package/src/app/pages/service/photo.service.ts +103 -0
  120. package/src/app/pages/service/product.service.ts +1322 -0
  121. package/src/app/pages/tickets/tickets-create/tickets-create.html +140 -0
  122. package/src/app/pages/tickets/tickets-create/tickets-create.scss +617 -0
  123. package/src/app/pages/tickets/tickets-create/tickets-create.ts +104 -0
  124. package/src/app/pages/tickets/tickets-list/ticket-list.html +150 -0
  125. package/src/app/pages/tickets/tickets-list/ticket-list.scss +392 -0
  126. package/src/app/pages/tickets/tickets-list/ticket-list.ts +178 -0
  127. package/src/app/pages/uikit/buttondemo.ts +254 -0
  128. package/src/app/pages/uikit/chartdemo.ts +290 -0
  129. package/src/app/pages/uikit/filedemo.ts +52 -0
  130. package/src/app/pages/uikit/formlayoutdemo.ts +129 -0
  131. package/src/app/pages/uikit/inputdemo.ts +339 -0
  132. package/src/app/pages/uikit/listdemo.ts +217 -0
  133. package/src/app/pages/uikit/mediademo.ts +1021 -0
  134. package/src/app/pages/uikit/menudemo.ts +540 -0
  135. package/src/app/pages/uikit/messagesdemo.ts +101 -0
  136. package/src/app/pages/uikit/miscdemo.ts +192 -0
  137. package/src/app/pages/uikit/overlaydemo.ts +235 -0
  138. package/src/app/pages/uikit/panelsdemo.ts +235 -0
  139. package/src/app/pages/uikit/tabledemo.ts +568 -0
  140. package/src/app/pages/uikit/timelinedemo.ts +141 -0
  141. package/src/app/pages/uikit/treedemo.ts +75 -0
  142. package/src/app/pages/uikit/uikit.routes.ts +35 -0
  143. package/src/app.component.ts +22 -0
  144. package/src/app.config.ts +23 -0
  145. package/src/app.routes.ts +23 -0
  146. package/src/assets/demo/code.scss +17 -0
  147. package/src/assets/demo/demo.scss +2 -0
  148. package/src/assets/demo/flags/flags.css +984 -0
  149. package/src/assets/layout/_core.scss +24 -0
  150. package/src/assets/layout/_footer.scss +8 -0
  151. package/src/assets/layout/_main.scss +21 -0
  152. package/src/assets/layout/_menu.scss +159 -0
  153. package/src/assets/layout/_mixins.scss +15 -0
  154. package/src/assets/layout/_preloading.scss +47 -0
  155. package/src/assets/layout/_responsive.scss +111 -0
  156. package/src/assets/layout/_topbar.scss +201 -0
  157. package/src/assets/layout/_typography.scss +68 -0
  158. package/src/assets/layout/_utils.scss +25 -0
  159. package/src/assets/layout/layout.scss +13 -0
  160. package/src/assets/layout/variables/_common.scss +21 -0
  161. package/src/assets/layout/variables/_dark.scss +5 -0
  162. package/src/assets/layout/variables/_light.scss +5 -0
  163. package/src/assets/styles.scss +4 -0
  164. package/src/assets/tailwind.css +32 -0
  165. package/src/index.html +15 -0
  166. package/src/main.ts +5 -0
  167. package/tsconfig.app.json +15 -0
  168. package/tsconfig.json +33 -0
  169. package/tsconfig.spec.json +15 -0
  170. package/vercel.json +9 -0
@@ -0,0 +1,192 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component } from '@angular/core';
3
+ import { AvatarModule } from 'primeng/avatar';
4
+ import { AvatarGroupModule } from 'primeng/avatargroup';
5
+ import { BadgeModule } from 'primeng/badge';
6
+ import { ButtonModule } from 'primeng/button';
7
+ import { ChipModule } from 'primeng/chip';
8
+ import { OverlayBadgeModule } from 'primeng/overlaybadge';
9
+ import { ProgressBarModule } from 'primeng/progressbar';
10
+ import { ScrollPanelModule } from 'primeng/scrollpanel';
11
+ import { ScrollTopModule } from 'primeng/scrolltop';
12
+ import { SkeletonModule } from 'primeng/skeleton';
13
+ import { TagModule } from 'primeng/tag';
14
+
15
+ @Component({
16
+ selector: 'app-misc-demo',
17
+ standalone: true,
18
+ imports: [CommonModule, ProgressBarModule, BadgeModule, AvatarModule, ScrollPanelModule, TagModule, ChipModule, ButtonModule, SkeletonModule, AvatarGroupModule, ScrollTopModule, OverlayBadgeModule],
19
+ template: `
20
+ <div class="card">
21
+ <div class="font-semibold text-xl mb-4">ProgressBar</div>
22
+ <div class="flex flex-col md:flex-row gap-4">
23
+ <div class="md:w-1/2">
24
+ <p-progressbar [value]="value" [showValue]="true"></p-progressbar>
25
+ </div>
26
+ <div class="md:w-1/2">
27
+ <p-progressbar [value]="50" [showValue]="false"></p-progressbar>
28
+ </div>
29
+ </div>
30
+ </div>
31
+
32
+ <div class="flex flex-col md:flex-row gap-8">
33
+ <div class="md:w-1/2">
34
+ <div class="card">
35
+ <div class="font-semibold text-xl mb-4">Badge</div>
36
+ <div class="flex gap-2">
37
+ <p-badge value="2"></p-badge>
38
+ <p-badge value="8" severity="success"></p-badge>
39
+ <p-badge value="4" severity="info"></p-badge>
40
+ <p-badge value="12" severity="warn"></p-badge>
41
+ <p-badge value="3" severity="danger"></p-badge>
42
+ </div>
43
+
44
+ <div class="font-semibold my-4">Overlay</div>
45
+ <div class="flex gap-6">
46
+ <p-overlaybadge value="2">
47
+ <i class="pi pi-bell" style="font-size: 2rem"></i>
48
+ </p-overlaybadge>
49
+ <p-overlaybadge value="4" severity="danger">
50
+ <i class="pi pi-calendar" style="font-size: 2rem"></i>
51
+ </p-overlaybadge>
52
+ <p-overlaybadge severity="danger">
53
+ <i class="pi pi-envelope" style="font-size: 2rem"></i>
54
+ </p-overlaybadge>
55
+ </div>
56
+
57
+ <div class="font-semibold my-4">Button</div>
58
+ <div class="flex gap-2">
59
+ <p-button label="Emails" badge="8"></p-button>
60
+ <p-button label="Messages" icon="pi pi-users" severity="warn" badge="8" badgeSeverity="danger"></p-button>
61
+ </div>
62
+
63
+ <div class="font-semibold my-4">Sizes</div>
64
+ <div class="flex items-start gap-2">
65
+ <p-badge [value]="2"></p-badge>
66
+ <p-badge [value]="4" badgeSize="large" severity="warn"></p-badge>
67
+ <p-badge [value]="6" badgeSize="xlarge" severity="success"></p-badge>
68
+ </div>
69
+ </div>
70
+
71
+ <div class="card">
72
+ <div class="font-semibold text-xl mb-4">Avatar</div>
73
+ <div class="font-semibold mb-4">Group</div>
74
+ <p-avatargroup styleClass="mb-4">
75
+ <p-avatar image="https://primefaces.org/cdn/primeng/images/demo/avatar/amyelsner.png" size="large" shape="circle"></p-avatar>
76
+ <p-avatar image="https://primefaces.org/cdn/primeng/images/demo/avatar/asiyajavayant.png" size="large" shape="circle"></p-avatar>
77
+ <p-avatar image="https://primefaces.org/cdn/primeng/images/demo/avatar/onyamalimba.png" size="large" shape="circle"></p-avatar>
78
+ <p-avatar image="https://primefaces.org/cdn/primeng/images/demo/avatar/ionibowcher.png" size="large" shape="circle"></p-avatar>
79
+ <p-avatar image="https://primefaces.org/cdn/primeng/images/demo/avatar/xuxuefeng.png" size="large" shape="circle"></p-avatar>
80
+ <p-avatar label="+2" shape="circle" size="large" [style]="{ 'background-color': '#9c27b0', color: '#ffffff' }"></p-avatar>
81
+ </p-avatargroup>
82
+
83
+ <div class="font-semibold my-4">Label - Circle</div>
84
+ <p-avatar class="mr-2" label="P" size="xlarge" shape="circle"></p-avatar>
85
+ <p-avatar class="mr-2" label="V" size="large" [style]="{ 'background-color': '#2196F3', color: '#ffffff' }" shape="circle"></p-avatar>
86
+ <p-avatar class="mr-2" label="U" [style]="{ 'background-color': '#9c27b0', color: '#ffffff' }" shape="circle"></p-avatar>
87
+
88
+ <div class="font-semibold my-4">Icon - Badge</div>
89
+ <p-overlaybadge value="4" severity="danger" class="inline-flex">
90
+ <p-avatar label="U" size="xlarge" />
91
+ </p-overlaybadge>
92
+ </div>
93
+
94
+ <div class="card">
95
+ <div class="font-semibold text-xl mb-4">Skeleton</div>
96
+ <div class="rounded-border border border-surface p-6">
97
+ <div class="flex mb-4">
98
+ <p-skeleton shape="circle" size="4rem" styleClass="mr-2"></p-skeleton>
99
+ <div>
100
+ <p-skeleton width="10rem" styleClass="mb-2"></p-skeleton>
101
+ <p-skeleton width="5rem" styleClass="mb-2"></p-skeleton>
102
+ <p-skeleton height=".5rem"></p-skeleton>
103
+ </div>
104
+ </div>
105
+ <p-skeleton width="100%" height="150px"></p-skeleton>
106
+ <div class="flex justify-between mt-4">
107
+ <p-skeleton width="4rem" height="2rem"></p-skeleton>
108
+ <p-skeleton width="4rem" height="2rem"></p-skeleton>
109
+ </div>
110
+ </div>
111
+ </div>
112
+ </div>
113
+ <div class="md:w-1/2">
114
+ <div class="card">
115
+ <div class="font-semibold text-xl mb-4">Tag</div>
116
+ <div class="font-semibold mb-4">Default</div>
117
+ <div class="flex gap-2">
118
+ <p-tag value="Primary"></p-tag>
119
+ <p-tag severity="success" value="Success"></p-tag>
120
+ <p-tag severity="info" value="Info"></p-tag>
121
+ <p-tag severity="warn" value="Warning"></p-tag>
122
+ <p-tag severity="danger" value="Danger"></p-tag>
123
+ </div>
124
+
125
+ <div class="font-semibold my-4">Pills</div>
126
+ <div class="flex gap-2">
127
+ <p-tag value="Primary" [rounded]="true"></p-tag>
128
+ <p-tag severity="success" value="Success" [rounded]="true"></p-tag>
129
+ <p-tag severity="info" value="Info" [rounded]="true"></p-tag>
130
+ <p-tag severity="warn" value="Warning" [rounded]="true"></p-tag>
131
+ <p-tag severity="danger" value="Danger" [rounded]="true"></p-tag>
132
+ </div>
133
+
134
+ <div class="font-semibold my-4">Icons</div>
135
+ <div class="flex gap-2">
136
+ <p-tag icon="pi pi-user" value="Primary"></p-tag>
137
+ <p-tag icon="pi pi-check" severity="success" value="Success"></p-tag>
138
+ <p-tag icon="pi pi-info-circle" severity="info" value="Info"></p-tag>
139
+ <p-tag icon="pi pi-exclamation-triangle" severity="warn" value="Warning"></p-tag>
140
+ <p-tag icon="pi pi-times" severity="danger" value="Danger"></p-tag>
141
+ </div>
142
+ </div>
143
+
144
+ <div class="card">
145
+ <div class="font-semibold text-xl mb-4">Chip</div>
146
+ <div class="font-semibold mb-4">Basic</div>
147
+ <div class="flex items-center flex-col sm:flex-row">
148
+ <p-chip label="Action" styleClass="m-1"></p-chip>
149
+ <p-chip label="Comedy" styleClass="m-1"></p-chip>
150
+ <p-chip label="Mystery" styleClass="m-1"></p-chip>
151
+ <p-chip label="Thriller" styleClass="m-1" [removable]="true"></p-chip>
152
+ </div>
153
+
154
+ <div class="font-semibold my-4">Icon</div>
155
+ <div class="flex items-center flex-col sm:flex-row">
156
+ <p-chip label="Apple" icon="pi pi-apple" styleClass="m-1"></p-chip>
157
+ <p-chip label="Facebook" icon="pi pi-facebook" styleClass="m-1"></p-chip>
158
+ <p-chip label="Google" icon="pi pi-google" styleClass="m-1"></p-chip>
159
+ <p-chip label="Microsoft" icon="pi pi-microsoft" styleClass="m-1" [removable]="true"></p-chip>
160
+ </div>
161
+
162
+ <div class="font-semibold my-4">Image</div>
163
+ <div class="flex items-center flex-col sm:flex-row">
164
+ <p-chip label="Amy Elsner" image="https://primefaces.org/cdn/primeng/images/demo/avatar/amyelsner.png" styleClass="m-1"></p-chip>
165
+ <p-chip label="Asiya Javayant" image="https://primefaces.org/cdn/primeng/images/demo/avatar/asiyajavayant.png" styleClass="m-1"></p-chip>
166
+ <p-chip label="Onyama Limba" image="https://primefaces.org/cdn/primeng/images/demo/avatar/onyamalimba.png" styleClass="m-1"></p-chip>
167
+ <p-chip label="Xuxue Feng" image="https://primefaces.org/cdn/primeng/images/demo/avatar/xuxuefeng.png" styleClass="m-1" [removable]="true"></p-chip>
168
+ </div>
169
+ </div>
170
+ </div>
171
+ </div>
172
+ `
173
+ })
174
+ export class MiscDemo {
175
+ value = 0;
176
+
177
+ interval: any;
178
+
179
+ ngOnInit() {
180
+ this.interval = setInterval(() => {
181
+ this.value = this.value + Math.floor(Math.random() * 10) + 1;
182
+ if (this.value >= 100) {
183
+ this.value = 100;
184
+ clearInterval(this.interval);
185
+ }
186
+ }, 2000);
187
+ }
188
+
189
+ ngOnDestroy() {
190
+ clearInterval(this.interval);
191
+ }
192
+ }
@@ -0,0 +1,235 @@
1
+ import {Component, OnInit} from '@angular/core';
2
+ import {ConfirmationService, MessageService} from 'primeng/api';
3
+ import {ButtonModule} from 'primeng/button';
4
+ import {DialogModule} from 'primeng/dialog';
5
+ import {ToastModule} from 'primeng/toast';
6
+ import {DrawerModule} from 'primeng/drawer';
7
+ import {Popover, PopoverModule} from 'primeng/popover';
8
+ import {ConfirmPopupModule} from 'primeng/confirmpopup';
9
+ import {InputTextModule} from 'primeng/inputtext';
10
+ import {FormsModule} from '@angular/forms';
11
+ import {TooltipModule} from 'primeng/tooltip';
12
+ import {TableModule} from 'primeng/table';
13
+ import {Product, ProductService} from '@/app/pages/service/product.service';
14
+
15
+ @Component({
16
+ selector: 'app-overlay-demo',
17
+ standalone: true,
18
+ imports: [ToastModule, DialogModule, ButtonModule, DrawerModule, PopoverModule, ConfirmPopupModule, InputTextModule, FormsModule, TooltipModule, TableModule, ToastModule],
19
+ template: `<div class="flex flex-col md:flex-row gap-8">
20
+ <div class="md:w-1/2">
21
+ <div class="card">
22
+ <div class="font-semibold text-xl mb-4">Dialog</div>
23
+ <p-dialog header="Dialog" [(visible)]="display" [breakpoints]="{ '960px': '75vw' }" [style]="{ width: '30vw' }" [modal]="true">
24
+ <p class="leading-normal m-0">
25
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
26
+ consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
27
+ </p>
28
+ <ng-template #footer>
29
+ <p-button label="Save" (click)="close()" />
30
+ </ng-template>
31
+ </p-dialog>
32
+ <p-button label="Show" [style]="{ width: 'auto' }" (click)="open()" />
33
+ </div>
34
+
35
+ <div class="card">
36
+ <div class="font-semibold text-xl mb-4">Popover</div>
37
+ <div class="flex flex-wrap gap-2">
38
+ <p-button type="button" label="Show" (click)="toggleDataTable(op2, $event)" />
39
+ <p-popover #op2 id="overlay_panel" [style]="{ width: '450px' }">
40
+ <p-table [value]="products" selectionMode="single" [(selection)]="selectedProduct" dataKey="id" [rows]="5" [paginator]="true" (onRowSelect)="onProductSelect(op2, $event)">
41
+ <ng-template #header>
42
+ <tr>
43
+ <th pSortableColumn="name" style="width: 33%;">
44
+ Name
45
+ <p-sortIcon field="name" />
46
+ </th>
47
+ <th style="width: 33%;">Image</th>
48
+ <th pSortableColumn="price" style="width: 33%;">
49
+ Price
50
+ <p-sortIcon field="price" />
51
+ </th>
52
+ </tr>
53
+ </ng-template>
54
+ <ng-template #body let-product>
55
+ <tr [pSelectableRow]="product">
56
+ <td>{{ product.name }}</td>
57
+ <td>
58
+ <img [src]="'/demo/images/product/' + product.image" [alt]="product.name" class="w-16 shadow-sm" />
59
+ </td>
60
+ <td>{{ product.price }}</td>
61
+ </tr>
62
+ </ng-template>
63
+ </p-table>
64
+ </p-popover>
65
+ <p-toast />
66
+ </div>
67
+ </div>
68
+
69
+ <div class="card">
70
+ <div class="font-semibold text-xl mb-4">Tooltip</div>
71
+ <div class="inline-flex gap-4">
72
+ <input pInputText type="text" placeholder="Username" pTooltip="Your username" />
73
+ <p-button type="button" label="Save" pTooltip="Click to proceed" />
74
+ </div>
75
+ </div>
76
+ </div>
77
+ <div class="md:w-1/2">
78
+ <div class="card">
79
+ <div class="font-semibold text-xl mb-4">Drawer</div>
80
+ <p-drawer [(visible)]="visibleLeft" header="Drawer">
81
+ <p>
82
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
83
+ consequat.
84
+ </p>
85
+ </p-drawer>
86
+
87
+ <p-drawer [(visible)]="visibleRight" header="Drawer" position="right">
88
+ <p>
89
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
90
+ consequat.
91
+ </p>
92
+ </p-drawer>
93
+
94
+ <p-drawer [(visible)]="visibleTop" header="Drawer" position="top">
95
+ <p>
96
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
97
+ consequat.
98
+ </p>
99
+ </p-drawer>
100
+
101
+ <p-drawer [(visible)]="visibleBottom" header="Drawer" position="bottom">
102
+ <p>
103
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
104
+ consequat.
105
+ </p>
106
+ </p-drawer>
107
+
108
+ <p-drawer [(visible)]="visibleFull" header="Drawer" position="full">
109
+ <p>
110
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
111
+ consequat.
112
+ </p>
113
+ </p-drawer>
114
+
115
+ <p-button icon="pi pi-arrow-right" (click)="visibleLeft = true" [style]="{ marginRight: '0.25em' }" />
116
+ <p-button icon="pi pi-arrow-left" (click)="visibleRight = true" [style]="{ marginRight: '0.25em' }" />
117
+ <p-button icon="pi pi-arrow-down" (click)="visibleTop = true" [style]="{ marginRight: '0.25em' }" />
118
+ <p-button icon="pi pi-arrow-up" (click)="visibleBottom = true" [style]="{ marginRight: '0.25em' }" />
119
+ <p-button icon="pi pi-external-link" (click)="visibleFull = true" />
120
+ </div>
121
+
122
+ <div class="card">
123
+ <div class="font-semibold text-xl mb-4">ConfirmPopup</div>
124
+ <p-confirmpopup key="confirm2"></p-confirmpopup>
125
+ <p-button #popup (click)="confirm($event)" icon="pi pi-check" label="Confirm" class="mr-2"></p-button>
126
+ </div>
127
+
128
+ <div class="card">
129
+ <div class="font-semibold text-xl mb-4">ConfirmDialog</div>
130
+ <p-button label="Delete" icon="pi pi-trash" severity="danger" [style]="{ width: 'auto' }" (click)="openConfirmation()" />
131
+ <p-dialog header="Confirmation" [(visible)]="displayConfirmation" [style]="{ width: '350px' }" [modal]="true">
132
+ <div class="flex items-center justify-center">
133
+ <i class="pi pi-exclamation-triangle mr-6" style="font-size: 2rem"> </i>
134
+ <span>Are you sure you want to proceed?</span>
135
+ </div>
136
+ <ng-template #footer>
137
+ <p-button label="No" icon="pi pi-times" (click)="closeConfirmation()" text severity="secondary" />
138
+ <p-button label="Yes" icon="pi pi-check" (click)="closeConfirmation()" severity="danger" outlined autofocus />
139
+ </ng-template>
140
+ </p-dialog>
141
+ </div>
142
+ </div>
143
+ </div>`,
144
+ providers: [ConfirmationService, MessageService, ProductService]
145
+ })
146
+ export class OverlayDemo implements OnInit {
147
+ display: boolean = false;
148
+
149
+ products: Product[] = [];
150
+
151
+ visibleLeft: boolean = false;
152
+
153
+ visibleRight: boolean = false;
154
+
155
+ visibleTop: boolean = false;
156
+
157
+ visibleBottom: boolean = false;
158
+
159
+ visibleFull: boolean = false;
160
+
161
+ displayConfirmation: boolean = false;
162
+
163
+ selectedProduct!: Product;
164
+
165
+ constructor(
166
+ private productService: ProductService,
167
+ private confirmationService: ConfirmationService,
168
+ private messageService: MessageService
169
+ ) {}
170
+
171
+ ngOnInit() {
172
+ this.productService.getProductsSmall().then((products) => (this.products = products));
173
+ }
174
+
175
+ confirm(event: Event) {
176
+ this.confirmationService.confirm({
177
+ key: 'confirm2',
178
+ target: event.target || new EventTarget(),
179
+ message: 'Are you sure that you want to proceed?',
180
+ icon: 'pi pi-exclamation-triangle',
181
+ rejectButtonProps: {
182
+ label: 'Cancel',
183
+ severity: 'secondary',
184
+ outlined: true
185
+ },
186
+ acceptButtonProps: {
187
+ label: 'Save'
188
+ },
189
+ accept: () => {
190
+ this.messageService.add({
191
+ severity: 'info',
192
+ summary: 'Confirmed',
193
+ detail: 'You have accepted'
194
+ });
195
+ },
196
+ reject: () => {
197
+ this.messageService.add({
198
+ severity: 'error',
199
+ summary: 'Rejected',
200
+ detail: 'You have rejected'
201
+ });
202
+ }
203
+ });
204
+ }
205
+
206
+ open() {
207
+ this.display = true;
208
+ }
209
+
210
+ close() {
211
+ this.display = false;
212
+ }
213
+
214
+ toggleDataTable(op: Popover, event: any) {
215
+ op.toggle(event);
216
+ }
217
+
218
+ onProductSelect(op: Popover, event: any) {
219
+ op.hide();
220
+ this.messageService.add({
221
+ severity: 'info',
222
+ summary: 'Product Selected',
223
+ detail: event?.data.name,
224
+ life: 3000
225
+ });
226
+ }
227
+
228
+ openConfirmation() {
229
+ this.displayConfirmation = true;
230
+ }
231
+
232
+ closeConfirmation() {
233
+ this.displayConfirmation = false;
234
+ }
235
+ }