@tacdaed/fragments 1.0.0-beta.2 → 1.0.0-beta.3

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 (248) hide show
  1. package/README.md +3 -3
  2. package/fesm2022/tacdaed-fragments.mjs +8928 -0
  3. package/fesm2022/tacdaed-fragments.mjs.map +1 -0
  4. package/index.d.ts +3929 -0
  5. package/package.json +29 -22
  6. package/ng-package.json +0 -25
  7. package/src/lib/components/accordion/accordion.component.html +0 -103
  8. package/src/lib/components/accordion/accordion.component.scss +0 -382
  9. package/src/lib/components/accordion/accordion.component.spec.ts +0 -147
  10. package/src/lib/components/accordion/accordion.component.ts +0 -211
  11. package/src/lib/components/accordion/accordion.type.ts +0 -82
  12. package/src/lib/components/breadcrumb/breadcrumb.component.html +0 -43
  13. package/src/lib/components/breadcrumb/breadcrumb.component.scss +0 -112
  14. package/src/lib/components/breadcrumb/breadcrumb.component.spec.ts +0 -33
  15. package/src/lib/components/breadcrumb/breadcrumb.component.ts +0 -103
  16. package/src/lib/components/breadcrumb/breadcrumb.interface.ts +0 -7
  17. package/src/lib/components/button/button.component.html +0 -57
  18. package/src/lib/components/button/button.component.scss +0 -445
  19. package/src/lib/components/button/button.component.spec.ts +0 -99
  20. package/src/lib/components/button/button.component.ts +0 -143
  21. package/src/lib/components/button/button.type.ts +0 -7
  22. package/src/lib/components/card/card.component.html +0 -44
  23. package/src/lib/components/card/card.component.scss +0 -114
  24. package/src/lib/components/card/card.component.spec.ts +0 -65
  25. package/src/lib/components/card/card.component.ts +0 -21
  26. package/src/lib/components/card/card.type.ts +0 -3
  27. package/src/lib/components/code-block/code-block.component.html +0 -55
  28. package/src/lib/components/code-block/code-block.component.scss +0 -122
  29. package/src/lib/components/code-block/code-block.component.spec.ts +0 -81
  30. package/src/lib/components/code-block/code-block.component.ts +0 -302
  31. package/src/lib/components/code-block/code-block.interface.ts +0 -28
  32. package/src/lib/components/code-block/code-block.type.ts +0 -73
  33. package/src/lib/components/decorative/sparkle-field/sparkle-field.component.html +0 -14
  34. package/src/lib/components/decorative/sparkle-field/sparkle-field.component.scss +0 -20
  35. package/src/lib/components/decorative/sparkle-field/sparkle-field.component.spec.ts +0 -38
  36. package/src/lib/components/decorative/sparkle-field/sparkle-field.component.ts +0 -181
  37. package/src/lib/components/input/input-base.ts +0 -187
  38. package/src/lib/components/input/input-calendar/input-calendar.component.html +0 -76
  39. package/src/lib/components/input/input-calendar/input-calendar.component.scss +0 -179
  40. package/src/lib/components/input/input-calendar/input-calendar.component.spec.ts +0 -44
  41. package/src/lib/components/input/input-calendar/input-calendar.component.ts +0 -299
  42. package/src/lib/components/input/input-checkbox/input-checkbox.component.html +0 -37
  43. package/src/lib/components/input/input-checkbox/input-checkbox.component.scss +0 -128
  44. package/src/lib/components/input/input-checkbox/input-checkbox.component.spec.ts +0 -43
  45. package/src/lib/components/input/input-checkbox/input-checkbox.component.ts +0 -112
  46. package/src/lib/components/input/input-checkbox-group/input-checkbox-group.component.html +0 -43
  47. package/src/lib/components/input/input-checkbox-group/input-checkbox-group.component.scss +0 -140
  48. package/src/lib/components/input/input-checkbox-group/input-checkbox-group.component.spec.ts +0 -62
  49. package/src/lib/components/input/input-checkbox-group/input-checkbox-group.component.ts +0 -136
  50. package/src/lib/components/input/input-clock-picker/input-clock-picker.component.html +0 -81
  51. package/src/lib/components/input/input-clock-picker/input-clock-picker.component.scss +0 -228
  52. package/src/lib/components/input/input-clock-picker/input-clock-picker.component.spec.ts +0 -62
  53. package/src/lib/components/input/input-clock-picker/input-clock-picker.component.ts +0 -178
  54. package/src/lib/components/input/input-consts.ts +0 -132
  55. package/src/lib/components/input/input-date/input-date-validators.ts +0 -41
  56. package/src/lib/components/input/input-date/input-date.component.html +0 -41
  57. package/src/lib/components/input/input-date/input-date.component.scss +0 -95
  58. package/src/lib/components/input/input-date/input-date.component.spec.ts +0 -43
  59. package/src/lib/components/input/input-date/input-date.component.ts +0 -359
  60. package/src/lib/components/input/input-date-time/input-date-time.component.html +0 -70
  61. package/src/lib/components/input/input-date-time/input-date-time.component.scss +0 -133
  62. package/src/lib/components/input/input-date-time/input-date-time.component.spec.ts +0 -36
  63. package/src/lib/components/input/input-date-time/input-date-time.component.ts +0 -387
  64. package/src/lib/components/input/input-file-upload/input-file-upload.component.html +0 -89
  65. package/src/lib/components/input/input-file-upload/input-file-upload.component.scss +0 -171
  66. package/src/lib/components/input/input-file-upload/input-file-upload.component.spec.ts +0 -43
  67. package/src/lib/components/input/input-file-upload/input-file-upload.component.ts +0 -351
  68. package/src/lib/components/input/input-interface.ts +0 -8
  69. package/src/lib/components/input/input-number/input-number-validators.ts +0 -0
  70. package/src/lib/components/input/input-number/input-number.component.html +0 -51
  71. package/src/lib/components/input/input-number/input-number.component.scss +0 -140
  72. package/src/lib/components/input/input-number/input-number.component.spec.ts +0 -44
  73. package/src/lib/components/input/input-number/input-number.component.ts +0 -343
  74. package/src/lib/components/input/input-radio-group/input-radio-group.component.html +0 -44
  75. package/src/lib/components/input/input-radio-group/input-radio-group.component.scss +0 -139
  76. package/src/lib/components/input/input-radio-group/input-radio-group.component.spec.ts +0 -58
  77. package/src/lib/components/input/input-radio-group/input-radio-group.component.ts +0 -132
  78. package/src/lib/components/input/input-slider/input-slider.component.html +0 -111
  79. package/src/lib/components/input/input-slider/input-slider.component.scss +0 -203
  80. package/src/lib/components/input/input-slider/input-slider.component.spec.ts +0 -46
  81. package/src/lib/components/input/input-slider/input-slider.component.ts +0 -410
  82. package/src/lib/components/input/input-text/input-text-validators.ts +0 -67
  83. package/src/lib/components/input/input-text/input-text.component.html +0 -71
  84. package/src/lib/components/input/input-text/input-text.component.scss +0 -118
  85. package/src/lib/components/input/input-text/input-text.component.spec.ts +0 -55
  86. package/src/lib/components/input/input-text/input-text.component.ts +0 -215
  87. package/src/lib/components/input/input-time/input-time-validators.ts +0 -42
  88. package/src/lib/components/input/input-time/input-time.component.html +0 -92
  89. package/src/lib/components/input/input-time/input-time.component.scss +0 -191
  90. package/src/lib/components/input/input-time/input-time.component.spec.ts +0 -39
  91. package/src/lib/components/input/input-time/input-time.component.ts +0 -691
  92. package/src/lib/components/input/input-toggle-switch/input-toggle-switch.component.html +0 -36
  93. package/src/lib/components/input/input-toggle-switch/input-toggle-switch.component.scss +0 -121
  94. package/src/lib/components/input/input-toggle-switch/input-toggle-switch.component.spec.ts +0 -54
  95. package/src/lib/components/input/input-toggle-switch/input-toggle-switch.component.ts +0 -117
  96. package/src/lib/components/input/input-type.ts +0 -18
  97. package/src/lib/components/input/input-validation/input-validation.component.html +0 -19
  98. package/src/lib/components/input/input-validation/input-validation.component.scss +0 -39
  99. package/src/lib/components/input/input-validation/input-validation.component.spec.ts +0 -45
  100. package/src/lib/components/input/input-validation/input-validation.component.ts +0 -13
  101. package/src/lib/components/input/input.pipe.ts +0 -14
  102. package/src/lib/components/layout/container/container.component.html +0 -1
  103. package/src/lib/components/layout/container/container.component.scss +0 -33
  104. package/src/lib/components/layout/container/container.component.ts +0 -32
  105. package/src/lib/components/layout/container/container.type.ts +0 -1
  106. package/src/lib/components/layout/divider/divider.component.html +0 -1
  107. package/src/lib/components/layout/divider/divider.component.scss +0 -60
  108. package/src/lib/components/layout/divider/divider.component.ts +0 -38
  109. package/src/lib/components/layout/divider/divider.type.ts +0 -2
  110. package/src/lib/components/layout/section/section.component.html +0 -21
  111. package/src/lib/components/layout/section/section.component.scss +0 -43
  112. package/src/lib/components/layout/section/section.component.ts +0 -33
  113. package/src/lib/components/layout/section/section.type.ts +0 -2
  114. package/src/lib/components/layout/separator/separator.component.html +0 -9
  115. package/src/lib/components/layout/separator/separator.component.scss +0 -52
  116. package/src/lib/components/layout/separator/separator.component.ts +0 -25
  117. package/src/lib/components/layout/separator/separator.type.ts +0 -1
  118. package/src/lib/components/loader/content-blur/content-blur.component.html +0 -13
  119. package/src/lib/components/loader/content-blur/content-blur.component.scss +0 -43
  120. package/src/lib/components/loader/content-blur/content-blur.component.spec.ts +0 -42
  121. package/src/lib/components/loader/content-blur/content-blur.component.ts +0 -34
  122. package/src/lib/components/loader/loader.type.ts +0 -2
  123. package/src/lib/components/loader/progress-bar/progress-bar.component.html +0 -26
  124. package/src/lib/components/loader/progress-bar/progress-bar.component.scss +0 -151
  125. package/src/lib/components/loader/progress-bar/progress-bar.component.spec.ts +0 -47
  126. package/src/lib/components/loader/progress-bar/progress-bar.component.ts +0 -28
  127. package/src/lib/components/loader/progress-bar/progress-bar.type.ts +0 -8
  128. package/src/lib/components/loader/pulse-loader/pulse-loader.component.html +0 -12
  129. package/src/lib/components/loader/pulse-loader/pulse-loader.component.scss +0 -202
  130. package/src/lib/components/loader/pulse-loader/pulse-loader.component.spec.ts +0 -55
  131. package/src/lib/components/loader/pulse-loader/pulse-loader.component.ts +0 -73
  132. package/src/lib/components/loader/pulse-loader/pulse-loader.type.ts +0 -6
  133. package/src/lib/components/loader/skeleton-loader/skeleton-loader.component.html +0 -13
  134. package/src/lib/components/loader/skeleton-loader/skeleton-loader.component.scss +0 -113
  135. package/src/lib/components/loader/skeleton-loader/skeleton-loader.component.spec.ts +0 -37
  136. package/src/lib/components/loader/skeleton-loader/skeleton-loader.component.ts +0 -51
  137. package/src/lib/components/loader/skeleton-loader/skeleton-loader.type.ts +0 -6
  138. package/src/lib/components/loader/spinner/spinner.component.html +0 -20
  139. package/src/lib/components/loader/spinner/spinner.component.scss +0 -137
  140. package/src/lib/components/loader/spinner/spinner.component.spec.ts +0 -43
  141. package/src/lib/components/loader/spinner/spinner.component.ts +0 -32
  142. package/src/lib/components/loader/spinner/spinner.type.ts +0 -6
  143. package/src/lib/components/modal/modal.component.html +0 -47
  144. package/src/lib/components/modal/modal.component.scss +0 -139
  145. package/src/lib/components/modal/modal.component.spec.ts +0 -60
  146. package/src/lib/components/modal/modal.component.ts +0 -83
  147. package/src/lib/components/modal/modal.type.ts +0 -9
  148. package/src/lib/components/morph/blob-moph/blob-moprh.component.spec.ts +0 -79
  149. package/src/lib/components/morph/blob-moph/blob-moprh.component.ts +0 -96
  150. package/src/lib/components/morph/blob-moph/blob-morph.component.html +0 -34
  151. package/src/lib/components/morph/blob-moph/blob-morph.component.scss +0 -7
  152. package/src/lib/components/morph/morph.abstract.ts +0 -13
  153. package/src/lib/components/pagination/pagination.interface.ts +0 -4
  154. package/src/lib/components/pagination/small-pagination/small-pagination.component.html +0 -61
  155. package/src/lib/components/pagination/small-pagination/small-pagination.component.scss +0 -187
  156. package/src/lib/components/pagination/small-pagination/small-pagination.component.spec.ts +0 -88
  157. package/src/lib/components/pagination/small-pagination/small-pagination.component.ts +0 -177
  158. package/src/lib/components/selection-lists/multi-select/multi-select.component.html +0 -170
  159. package/src/lib/components/selection-lists/multi-select/multi-select.component.scss +0 -312
  160. package/src/lib/components/selection-lists/multi-select/multi-select.component.spec.ts +0 -61
  161. package/src/lib/components/selection-lists/multi-select/multi-select.component.ts +0 -372
  162. package/src/lib/components/selection-lists/selection-list/selection-list.component.html +0 -125
  163. package/src/lib/components/selection-lists/selection-list/selection-list.component.scss +0 -267
  164. package/src/lib/components/selection-lists/selection-list/selection-list.component.spec.ts +0 -66
  165. package/src/lib/components/selection-lists/selection-list/selection-list.component.ts +0 -315
  166. package/src/lib/components/selection-lists/selection-lists-base.ts +0 -35
  167. package/src/lib/components/selection-lists/selection-lists-const.ts +0 -17
  168. package/src/lib/components/selection-lists/selection-lists-interface.ts +0 -7
  169. package/src/lib/components/selection-lists/selection-lists.type.ts +0 -1
  170. package/src/lib/components/side-nav/side-nav.component.html +0 -101
  171. package/src/lib/components/side-nav/side-nav.component.scss +0 -295
  172. package/src/lib/components/side-nav/side-nav.component.spec.ts +0 -0
  173. package/src/lib/components/side-nav/side-nav.component.ts +0 -18
  174. package/src/lib/components/side-nav/side-nav.type.ts +0 -28
  175. package/src/lib/components/snackbar/snackbar.component.html +0 -33
  176. package/src/lib/components/snackbar/snackbar.component.scss +0 -195
  177. package/src/lib/components/snackbar/snackbar.component.ts +0 -112
  178. package/src/lib/components/snackbar/snackbar.type.ts +0 -27
  179. package/src/lib/components/status/chip/chip.component.html +0 -51
  180. package/src/lib/components/status/chip/chip.component.scss +0 -149
  181. package/src/lib/components/status/chip/chip.component.spec.ts +0 -62
  182. package/src/lib/components/status/chip/chip.component.ts +0 -83
  183. package/src/lib/components/status/chip/chip.type.ts +0 -42
  184. package/src/lib/components/status/directives/badge/badge.directive.spec.ts +0 -60
  185. package/src/lib/components/status/directives/badge/badge.directive.ts +0 -190
  186. package/src/lib/components/status/directives/badge/badge.interface.ts +0 -19
  187. package/src/lib/components/status/pill/pill.component.html +0 -40
  188. package/src/lib/components/status/pill/pill.component.scss +0 -113
  189. package/src/lib/components/status/pill/pill.component.spec.ts +0 -47
  190. package/src/lib/components/status/pill/pill.component.ts +0 -83
  191. package/src/lib/components/status/pill/pill.type.ts +0 -42
  192. package/src/lib/components/status/status.interface.ts +0 -57
  193. package/src/lib/components/status/status.type.ts +0 -62
  194. package/src/lib/components/status/tag/tag.component.html +0 -39
  195. package/src/lib/components/status/tag/tag.component.scss +0 -140
  196. package/src/lib/components/status/tag/tag.component.spec.ts +0 -47
  197. package/src/lib/components/status/tag/tag.component.ts +0 -83
  198. package/src/lib/components/status/tag/tag.type.ts +0 -42
  199. package/src/lib/components/stepper/stepper.component.html +0 -83
  200. package/src/lib/components/stepper/stepper.component.scss +0 -196
  201. package/src/lib/components/stepper/stepper.component.ts +0 -482
  202. package/src/lib/components/stepper/stepper.type.ts +0 -60
  203. package/src/lib/components/table/table.component.html +0 -438
  204. package/src/lib/components/table/table.component.scss +0 -259
  205. package/src/lib/components/table/table.component.spec.ts +0 -117
  206. package/src/lib/components/table/table.component.ts +0 -215
  207. package/src/lib/components/table/table.enum.ts +0 -4
  208. package/src/lib/components/table/table.function.ts +0 -47
  209. package/src/lib/components/table/table.interface.ts +0 -143
  210. package/src/lib/components/table/table.pipe.ts +0 -62
  211. package/src/lib/components/table/table.type.ts +0 -15
  212. package/src/lib/components/tabs/tabs.component.html +0 -88
  213. package/src/lib/components/tabs/tabs.component.scss +0 -305
  214. package/src/lib/components/tabs/tabs.component.spec.ts +0 -94
  215. package/src/lib/components/tabs/tabs.component.ts +0 -282
  216. package/src/lib/components/tabs/tabs.type.ts +0 -81
  217. package/src/lib/components/title-bar/title-bar.component.html +0 -21
  218. package/src/lib/components/title-bar/title-bar.component.scss +0 -139
  219. package/src/lib/components/title-bar/title-bar.component.spec.ts +0 -44
  220. package/src/lib/components/title-bar/title-bar.component.ts +0 -13
  221. package/src/lib/components/toast/toast.component.html +0 -36
  222. package/src/lib/components/toast/toast.component.scss +0 -241
  223. package/src/lib/components/toast/toast.component.ts +0 -165
  224. package/src/lib/components/toast/toast.type.ts +0 -37
  225. package/src/lib/components/toast-stack/toast-stack.component.html +0 -30
  226. package/src/lib/components/toast-stack/toast-stack.component.scss +0 -35
  227. package/src/lib/components/toast-stack/toast-stack.component.ts +0 -51
  228. package/src/lib/consts/country-prefix.ts +0 -244
  229. package/src/lib/directives/tooltip/popover.directive.ts +0 -274
  230. package/src/lib/directives/tooltip/tooltip.directive.spec.ts +0 -86
  231. package/src/lib/directives/tooltip/tooltip.directive.ts +0 -234
  232. package/src/lib/directives/tooltip/tooltip.interface.ts +0 -29
  233. package/src/lib/directives/tooltip/tooltip.type.ts +0 -9
  234. package/src/lib/interfaces/common.interfaces.ts +0 -4
  235. package/src/lib/pipes/chunk.pipe.ts +0 -16
  236. package/src/lib/pipes/safe-html.pipe.ts +0 -14
  237. package/src/lib/pipes/sanitize-html.pipe.ts +0 -23
  238. package/src/lib/types/base.types.ts +0 -23
  239. package/src/lib/types/common.types.ts +0 -98
  240. package/src/lib/types/form.types.ts +0 -5
  241. package/src/lib/utils/common.utils.ts +0 -53
  242. package/src/lib/utils/date.utils.ts +0 -474
  243. package/src/lib/utils/number.utils.ts +0 -16
  244. package/src/lib/utils/uuid.utils.ts +0 -39
  245. package/src/public-api.ts +0 -114
  246. package/tsconfig.lib.json +0 -17
  247. package/tsconfig.lib.prod.json +0 -10
  248. package/tsconfig.spec.json +0 -9
@@ -1,202 +0,0 @@
1
- @use './../../../../../assets/styles/scss/variables' as *;
2
-
3
- :host {
4
- display: block;
5
-
6
- .frg-pulse-loader {
7
- position: relative;
8
- display: inline-flex;
9
- flex-direction: column;
10
- align-items: center;
11
- justify-content: center;
12
- width: $frg-loader-size-md;
13
- color: $frg-loader-color-primary;
14
- isolation: isolate;
15
- overflow: visible;
16
-
17
- &__core {
18
- position: relative;
19
- width: 35%;
20
- aspect-ratio: 1;
21
- background-color: currentColor;
22
- border-radius: 50%;
23
- z-index: 2;
24
- box-shadow: 0 0 8px currentColor;
25
-
26
- &::before,
27
- &::after {
28
- content: '';
29
- position: absolute;
30
- inset: 0;
31
- border-radius: 50%;
32
- background-color: currentColor;
33
- opacity: 0.5;
34
- z-index: -1;
35
- filter: blur(0.5px);
36
- transform: scale(1);
37
- transform-origin: center;
38
- animation: frg-dual-pulse 1.4s cubic-bezier(0.4, 0, 0.3, 1) infinite;
39
- }
40
-
41
- &::after {
42
- animation-delay: 0.7s;
43
- }
44
- }
45
-
46
- &__percent {
47
- margin-top: 0.6rem;
48
- font-weight: 600;
49
- color: currentColor;
50
- z-index: 3;
51
- text-align: center;
52
- pointer-events: none;
53
- user-select: none;
54
- opacity: 0.95;
55
- transition: opacity 0.3s ease;
56
- text-shadow: 0 0 3px rgba(0, 0, 0, 0.25);
57
- }
58
-
59
- &--small {
60
- width: $frg-loader-size-sm;
61
-
62
- .frg-pulse-loader__core {
63
- width: 45%;
64
-
65
- &::before,
66
- &::after {
67
- animation-duration: 1.2s;
68
- }
69
- }
70
-
71
- .frg-pulse-loader__percent {
72
- font-size: $font-size-sm;
73
- margin-top: 1rem;
74
- }
75
- }
76
-
77
- &--medium {
78
- width: calc($frg-loader-size-md * 1.25);
79
-
80
- .frg-pulse-loader__core {
81
- width: 35%;
82
- }
83
-
84
- .frg-pulse-loader__percent {
85
- font-size: $font-size-md;
86
- margin-top: 1.5rem;
87
- }
88
- }
89
-
90
- &--large {
91
- width: calc($frg-loader-size-lg * 1.5);
92
-
93
- .frg-pulse-loader__core {
94
- width: 30%;
95
- box-shadow: 0 0 14px currentColor;
96
-
97
- &::before,
98
- &::after {
99
- animation-duration: 1.6s;
100
- }
101
- }
102
-
103
- .frg-pulse-loader__percent {
104
- font-size: $font-size-lg;
105
- margin-top: 2rem;
106
- }
107
- }
108
-
109
- &--primary { color: $frg-loader-color-primary; }
110
- &--secondary { color: $frg-loader-color-secondary; }
111
- &--tertiary { color: $frg-loader-color-tertiary; }
112
-
113
- &--secondary,
114
- &--tertiary {
115
- .frg-pulse-loader__percent {
116
- text-shadow: 0 0 2px rgba(255, 255, 255, 0.5);
117
- opacity: 1;
118
- }
119
- }
120
-
121
- &--light {
122
- color: $frg-loader-color-light;
123
-
124
- .frg-pulse-loader__percent {
125
- text-shadow: 0 0 3px rgba(0, 0, 0, 0.4);
126
- }
127
- }
128
-
129
- &--dark {
130
- color: $frg-loader-color-dark;
131
-
132
- .frg-pulse-loader__percent {
133
- text-shadow: 0 0 3px rgba(255, 255, 255, 0.25);
134
- }
135
- }
136
-
137
- &--overlay {
138
- position: fixed;
139
- top: 0;
140
- left: 0;
141
- width: 100vw;
142
- height: 100vh;
143
- display: flex;
144
- align-items: center;
145
- justify-content: center;
146
- background: rgba($color-light-neutral, 0.6);
147
- z-index: 9999;
148
- backdrop-filter: blur(0.2rem);
149
-
150
- &.frg-pulse-loader--small .frg-pulse-loader__core {
151
- width: $frg-loader-size-sm;
152
- }
153
-
154
- &.frg-pulse-loader--medium .frg-pulse-loader__core {
155
- width: $frg-loader-size-md;
156
- }
157
-
158
- &.frg-pulse-loader--large .frg-pulse-loader__core {
159
- width: $frg-loader-size-lg;
160
- }
161
-
162
- &.frg-pulse-loader--small .frg-pulse-loader__percent {
163
- margin-top: calc($frg-loader-size-sm * 1.25);
164
- }
165
-
166
- &.frg-pulse-loader--medium .frg-pulse-loader__percent {
167
- margin-top: calc($frg-loader-size-md * 1.25);
168
- }
169
-
170
- &.frg-pulse-loader--large .frg-pulse-loader__percent {
171
- margin-top: calc($frg-loader-size-lg * 1.25);
172
- }
173
- }
174
-
175
- &--overlay-item {
176
- position: absolute;
177
- inset: 0;
178
- display: flex;
179
- align-items: center;
180
- justify-content: center;
181
- z-index: 1;
182
- }
183
- }
184
-
185
- @keyframes frg-dual-pulse {
186
- 0% {
187
- transform: scale(1);
188
- opacity: 0.5;
189
- filter: blur(0);
190
- }
191
- 60% {
192
- transform: scale(3);
193
- opacity: 0.25;
194
- filter: blur(0.5px);
195
- }
196
- 100% {
197
- transform: scale(4);
198
- opacity: 0;
199
- filter: blur(1px);
200
- }
201
- }
202
- }
@@ -1,55 +0,0 @@
1
- import { ComponentFixture, TestBed } from '@angular/core/testing';
2
- import { SimpleChange } from '@angular/core';
3
- import { By } from '@angular/platform-browser';
4
- import { PulseLoaderComponent } from './pulse-loader.component';
5
-
6
- describe('PulseLoaderComponent', () => {
7
- let fixture: ComponentFixture<PulseLoaderComponent>;
8
- let component: PulseLoaderComponent;
9
-
10
- beforeEach(async () => {
11
- await TestBed.configureTestingModule({
12
- imports: [PulseLoaderComponent]
13
- }).compileComponents();
14
-
15
- fixture = TestBed.createComponent(PulseLoaderComponent);
16
- component = fixture.componentInstance;
17
- });
18
-
19
- afterEach(() => {
20
- document.body.style.overflow = '';
21
- });
22
-
23
- it('renders percentage when enabled', () => {
24
- component.showPercentage = true;
25
- component.progress = 42;
26
-
27
- fixture.detectChanges();
28
-
29
- const label = fixture.debugElement.query(By.css('.frg-pulse-loader__percent'));
30
- expect(label.nativeElement.textContent).toContain('42%');
31
- });
32
-
33
- it('applies size and style classes', () => {
34
- component.size = 'large';
35
- component.styleType = 'secondary';
36
-
37
- fixture.detectChanges();
38
-
39
- const output = fixture.debugElement.query(By.css('output'));
40
- expect(output.nativeElement.classList).toContain('frg-pulse-loader--large');
41
- expect(output.nativeElement.classList).toContain('frg-pulse-loader--secondary');
42
- });
43
-
44
- it('toggles body scroll when overlay changes', () => {
45
- component.isOverlay = true;
46
- component.ngOnChanges({
47
- isOverlay: new SimpleChange(false, true, false)
48
- });
49
-
50
- expect(document.body.style.overflow).toBe('hidden');
51
-
52
- component.ngOnDestroy();
53
- expect(document.body.style.overflow).toBe('');
54
- });
55
- });
@@ -1,73 +0,0 @@
1
- import { NgClass } from '@angular/common';
2
- import { Component, Input, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
3
- import { TPulseLoaderSize, TPulseLoaderType } from './pulse-loader.type';
4
-
5
- /**
6
- * Component representing a pulse loader with customizable size, style, and progress display.
7
- * Usage example:
8
- * ```html
9
- * <frg-pulse-loader [progress]="progressValue" [styleType]="'primary'" [size]="'medium'" [showPercentage]="true"></frg-pulse-loader>
10
- * ```
11
- */
12
- @Component({
13
- selector: 'frg-pulse-loader',
14
- standalone: true,
15
- imports: [NgClass],
16
- templateUrl: './pulse-loader.component.html',
17
- styleUrls: ['./pulse-loader.component.scss'],
18
- })
19
- export class PulseLoaderComponent implements OnChanges, OnDestroy {
20
- /**
21
- * ARIA label for accessibility purposes.
22
- * Default is 'Loading...'.
23
- */
24
- @Input() ariaLabel: string = 'Loading...';
25
- @Input() isOverlay = false;
26
- @Input() isOverlayItem = false;
27
- /**
28
- * The current progress value (0-100) to be displayed by the loader.
29
- */
30
- @Input() progress: number = 0;
31
- /**
32
- * The style type of the loader, affecting its color scheme.
33
- * Options: 'primary', 'secondary', 'tertiary', 'success', 'warning', 'danger', 'info', 'light', 'dark'
34
- */
35
- @Input() styleType: TPulseLoaderType = 'primary';
36
- /**
37
- * The size of the loader.
38
- * Options: 'small', 'medium', 'large'
39
- */
40
- @Input() size: TPulseLoaderSize = 'medium';
41
- /**
42
- * Whether to display the percentage text inside the loader.
43
- * Default is false.
44
- */
45
- @Input() showPercentage: boolean = false;
46
-
47
- /**
48
- * Gets the CSS classes for the loader based on its size and style type.
49
- */
50
- public get classes() {
51
- return {
52
- 'frg-pulse-loader': true,
53
- [`frg-pulse-loader--${this.size}`]: true,
54
- [`frg-pulse-loader--${this.styleType}`]: true,
55
- 'frg-pulse-loader--overlay': this.isOverlay,
56
- 'frg-pulse-loader--overlay-item': this.isOverlayItem,
57
- };
58
- }
59
-
60
- ngOnChanges(changes: SimpleChanges): void {
61
- if (changes['isOverlay']) {
62
- this.toggleBodyScroll(this.isOverlay);
63
- }
64
- }
65
-
66
- ngOnDestroy(): void {
67
- this.toggleBodyScroll(false);
68
- }
69
-
70
- private toggleBodyScroll(disable: boolean): void {
71
- document.body.style.overflow = disable ? 'hidden' : '';
72
- }
73
- }
@@ -1,6 +0,0 @@
1
- import { TBaseSize } from "../../../types/base.types";
2
- import { TBaseLoaderStyle } from "../loader.type";
3
-
4
- export type TPulseLoaderSize = TBaseSize;
5
-
6
- export type TPulseLoaderType = TBaseLoaderStyle;
@@ -1,13 +0,0 @@
1
- <div
2
- class="skeleton-root"
3
- [style.width]="isCircle ? size : width"
4
- [style.height]="isCircle ? size : (isMultiRow ? null : height)"
5
- >
6
- @if (rows <= 1) {
7
- <div class="skeleton-block" [style.height]="height"></div>
8
- } @else {
9
- @for (_ of rowArray; let i = $index; track i) {
10
- <div class="skeleton-block" [style.height]="height"></div>
11
- }
12
- }
13
- </div>
@@ -1,113 +0,0 @@
1
- @use './../../../../../assets/styles/scss/variables' as *;
2
-
3
- :host {
4
- display: inline-block;
5
-
6
- .skeleton-root {
7
- display: flex;
8
- flex-direction: column;
9
- gap: 0.5rem;
10
- width: 100%;
11
- }
12
-
13
- .skeleton-block {
14
- width: 100%;
15
- height: 1rem;
16
- border-radius: 6px;
17
- background: linear-gradient(
18
- 90deg,
19
- #e0e0e0 0%,
20
- #f5f5f5 50%,
21
- #e0e0e0 100%
22
- );
23
- background-size: 200% 100%;
24
- }
25
-
26
- &.circle {
27
- .skeleton-root {
28
- width: auto;
29
- height: auto;
30
- }
31
-
32
- .skeleton-block {
33
- border-radius: 50%;
34
- width: 100%;
35
- height: 100%;
36
- aspect-ratio: 1 / 1;
37
- }
38
- }
39
-
40
- &.animated .skeleton-block {
41
- animation: shimmer 1.4s linear infinite;
42
- }
43
-
44
- &.skeleton--primary .skeleton-block {
45
- background: linear-gradient(
46
- 90deg,
47
- $color-primary-dark 0%,
48
- $color-primary-light 50%,
49
- $color-primary-dark 100%
50
- );
51
- background-size: 200% 100%;
52
- background-position: 0 0;
53
- }
54
-
55
- &.skeleton--secondary .skeleton-block {
56
- background: linear-gradient(
57
- 90deg,
58
- $color-secondary-dark 0%,
59
- $color-secondary-light 50%,
60
- $color-secondary-dark 100%
61
- );
62
- background-size: 200% 100%;
63
- background-position: 0 0;
64
- }
65
-
66
- &.skeleton--tertiary .skeleton-block {
67
- background: linear-gradient(
68
- 90deg,
69
- $color-tertiary-dark 0%,
70
- $color-tertiary-light 50%,
71
- $color-tertiary-dark 100%
72
- );
73
- background-size: 200% 100%;
74
- background-position: 0 0;
75
- }
76
-
77
- &.skeleton--dark .skeleton-block {
78
- background: linear-gradient(
79
- 90deg,
80
- $color-dark-neutral 0%,
81
- $color-dark 50%,
82
- $color-dark-neutral 100%
83
- );
84
- background-size: 200% 100%;
85
- background-position: 0 0;
86
- }
87
-
88
- &.skeleton--light .skeleton-block {
89
- background: linear-gradient(
90
- 90deg,
91
- $color-light-soft 0%,
92
- $color-light 50%,
93
- $color-light-soft 100%
94
- );
95
- background-size: 200% 100%;
96
- background-position: 0 0;
97
- }
98
-
99
- @keyframes shimmer {
100
- 0% {
101
- background-position: -200% 0;
102
- }
103
- 100% {
104
- background-position: 200% 0;
105
- }
106
- }
107
-
108
- @media (prefers-reduced-motion: reduce) {
109
- &.animated .skeleton-block {
110
- animation: none;
111
- }
112
- }
113
- }
@@ -1,37 +0,0 @@
1
- import { ComponentFixture, TestBed } from '@angular/core/testing';
2
- import { By } from '@angular/platform-browser';
3
- import { SkeletonLoaderComponent } from './skeleton-loader.component';
4
-
5
- describe('SkeletonLoaderComponent', () => {
6
- let fixture: ComponentFixture<SkeletonLoaderComponent>;
7
- let component: SkeletonLoaderComponent;
8
-
9
- beforeEach(async () => {
10
- await TestBed.configureTestingModule({
11
- imports: [SkeletonLoaderComponent]
12
- }).compileComponents();
13
-
14
- fixture = TestBed.createComponent(SkeletonLoaderComponent);
15
- component = fixture.componentInstance;
16
- });
17
-
18
- it('renders the requested number of rows', () => {
19
- component.rows = 3;
20
-
21
- fixture.detectChanges();
22
-
23
- const blocks = fixture.debugElement.queryAll(By.css('.skeleton-block'));
24
- expect(blocks.length).toBe(3);
25
- });
26
-
27
- it('applies circle class when shape is circle', () => {
28
- component.shape = 'circle';
29
- component.animated = false;
30
-
31
- fixture.detectChanges();
32
-
33
- const host = fixture.debugElement.nativeElement as HTMLElement;
34
- expect(host.classList).toContain('circle');
35
- expect(host.classList).not.toContain('animated');
36
- });
37
- });
@@ -1,51 +0,0 @@
1
- import { Component, HostBinding, Input } from '@angular/core';
2
- import { TSkeletonLoaderType } from './skeleton-loader.type';
3
-
4
- @Component({
5
- selector: 'frg-skeleton-loader',
6
- standalone: true,
7
- templateUrl: './skeleton-loader.component.html',
8
- styleUrls: ['./skeleton-loader.component.scss'],
9
- })
10
- export class SkeletonLoaderComponent {
11
- /** Enables shimmer animation */
12
- @Input() animated = true;
13
-
14
- /** Rectangle height for a single row */
15
- @Input() height?: string;
16
-
17
- /** Number of skeleton rows (for multi-line placeholders) */
18
- @Input() rows = 1;
19
-
20
- /** Shape of the skeleton: rectangle or circle */
21
- @Input() shape: 'rect' | 'circle' = 'rect';
22
-
23
- /** Circle size (sets both width & height) */
24
- @Input() size?: string;
25
-
26
- /** Style type (color scheme) */
27
- @Input() styleType: TSkeletonLoaderType = 'default';
28
-
29
- /** Rectangle width (ignored for circle unless explicitly given) */
30
- @Input() width?: string;
31
-
32
- @HostBinding('class')
33
- get hostClasses(): string {
34
- const classes = ['skeleton', `skeleton--${this.styleType}`];
35
- if (this.shape === 'circle') classes.push('circle');
36
- if (this.animated) classes.push('animated');
37
- return classes.join(' ');
38
- }
39
-
40
- get rowArray() {
41
- return Array.from({ length: this.rows });
42
- }
43
-
44
- get isMultiRow() {
45
- return this.rows > 1;
46
- }
47
-
48
- get isCircle() {
49
- return this.shape === 'circle';
50
- }
51
- }
@@ -1,6 +0,0 @@
1
- import { TBaseSize } from "../../../types/base.types";
2
- import { TBaseLoaderStyle } from "../loader.type";
3
-
4
- export type TSkeletonLoaderSize = TBaseSize | 'full';
5
-
6
- export type TSkeletonLoaderType = TBaseLoaderStyle | 'default';
@@ -1,20 +0,0 @@
1
- <output class="frg-spinner" aria-label="{{label}}"
2
- [ngClass]="{
3
- 'frg-spinner--xs' : size === 'extra-small',
4
- 'frg-spinner--sm' : size === 'small',
5
- 'frg-spinner--md' : size === 'medium',
6
- 'frg-spinner--lg' : size === 'large',
7
- 'frg-spinner--xl' : size === 'extra-large',
8
- 'frg-spinner--primary': styleType === 'primary',
9
- 'frg-spinner--secondary': styleType === 'secondary',
10
- 'frg-spinner--tertiary': styleType === 'tertiary',
11
- 'frg-spinner--dark': styleType === 'dark',
12
- 'frg-spinner--light': styleType === 'light',
13
- 'frg-spinner--center': isCentered,
14
- 'frg-spinner--overlay': isOverlay,
15
- 'frg-spinner--overlay-item': isOverlayItem
16
- }"
17
- >
18
- <div class="frg-spinner__circle" aria-hidden="true"></div>
19
- <span class="sr-only">{{label}}</span>
20
- </output>