@dropi/ui-components 1.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 (393) hide show
  1. package/.gitignore +13 -0
  2. package/CONTRIBUTING.md +188 -0
  3. package/MIGRATION_STEPS.md +39 -0
  4. package/PUBLISH_CHECKLIST.md +97 -0
  5. package/QUICK_START.md +108 -0
  6. package/README.md +146 -0
  7. package/jest.config.ts +21 -0
  8. package/ng-package.json +8 -0
  9. package/package.json +66 -0
  10. package/project.json +48 -0
  11. package/publish.sh +113 -0
  12. package/src/components-source/accordion/accordion-item/accordion-item.component.html +12 -0
  13. package/src/components-source/accordion/accordion-item/accordion-item.component.scss +47 -0
  14. package/src/components-source/accordion/accordion-item/accordion-item.component.spec.ts +122 -0
  15. package/src/components-source/accordion/accordion-item/accordion-item.component.ts +42 -0
  16. package/src/components-source/accordion/accordion.component.html +3 -0
  17. package/src/components-source/accordion/accordion.component.scss +5 -0
  18. package/src/components-source/accordion/accordion.component.spec.ts +243 -0
  19. package/src/components-source/accordion/accordion.component.stories.ts +111 -0
  20. package/src/components-source/accordion/accordion.component.ts +43 -0
  21. package/src/components-source/alert/alert.component.html +28 -0
  22. package/src/components-source/alert/alert.component.scss +154 -0
  23. package/src/components-source/alert/alert.component.spec.ts +185 -0
  24. package/src/components-source/alert/alert.component.stories.ts +310 -0
  25. package/src/components-source/alert/alert.component.ts +203 -0
  26. package/src/components-source/alert-legacy/alert.component.html +21 -0
  27. package/src/components-source/alert-legacy/alert.component.scss +42 -0
  28. package/src/components-source/alert-legacy/alert.component.spec.ts +159 -0
  29. package/src/components-source/alert-legacy/alert.component.ts +33 -0
  30. package/src/components-source/alert-modal/alert-modal.component.html +124 -0
  31. package/src/components-source/alert-modal/alert-modal.component.scss +203 -0
  32. package/src/components-source/alert-modal/alert-modal.component.spec.ts +557 -0
  33. package/src/components-source/alert-modal/alert-modal.component.stories.ts +295 -0
  34. package/src/components-source/alert-modal/alert-modal.component.ts +294 -0
  35. package/src/components-source/alert-modal/services/template-alert-modal.service.ts +75 -0
  36. package/src/components-source/badge/badge.component.html +49 -0
  37. package/src/components-source/badge/badge.component.scss +57 -0
  38. package/src/components-source/badge/badge.component.spec.ts +181 -0
  39. package/src/components-source/badge/badge.component.ts +21 -0
  40. package/src/components-source/breadcrumb/breadcrumb.component.html +5 -0
  41. package/src/components-source/breadcrumb/breadcrumb.component.scss +46 -0
  42. package/src/components-source/breadcrumb/breadcrumb.component.spec.ts +279 -0
  43. package/src/components-source/breadcrumb/breadcrumb.component.ts +24 -0
  44. package/src/components-source/card-product/card-product.component.html +173 -0
  45. package/src/components-source/card-product/card-product.component.spec.ts +601 -0
  46. package/src/components-source/card-product/card-product.component.stories.ts +322 -0
  47. package/src/components-source/card-product/card-product.component.ts +1101 -0
  48. package/src/components-source/card-section/card-section.component.html +22 -0
  49. package/src/components-source/card-section/card-section.component.scss +14 -0
  50. package/src/components-source/card-section/card-section.component.spec.ts +333 -0
  51. package/src/components-source/card-section/card-section.component.stories.ts +141 -0
  52. package/src/components-source/card-section/card-section.component.ts +35 -0
  53. package/src/components-source/checkbox-selection-list/checkbox-selection-list.component.html +38 -0
  54. package/src/components-source/checkbox-selection-list/checkbox-selection-list.component.scss +147 -0
  55. package/src/components-source/checkbox-selection-list/checkbox-selection-list.component.spec.ts +555 -0
  56. package/src/components-source/checkbox-selection-list/checkbox-selection-list.component.stories.ts +157 -0
  57. package/src/components-source/checkbox-selection-list/checkbox-selection-list.component.ts +219 -0
  58. package/src/components-source/city-selector/city-selector.component.html +22 -0
  59. package/src/components-source/city-selector/city-selector.component.scss +1 -0
  60. package/src/components-source/city-selector/city-selector.component.spec.ts +278 -0
  61. package/src/components-source/city-selector/city-selector.component.stories.ts +200 -0
  62. package/src/components-source/city-selector/city-selector.component.ts +151 -0
  63. package/src/components-source/color-picker/color-picker.component.html +54 -0
  64. package/src/components-source/color-picker/color-picker.component.scss +203 -0
  65. package/src/components-source/color-picker/color-picker.component.spec.ts +148 -0
  66. package/src/components-source/color-picker/color-picker.component.stories.ts +70 -0
  67. package/src/components-source/color-picker/color-picker.component.ts +353 -0
  68. package/src/components-source/country-flags/country-flags.component.html +10 -0
  69. package/src/components-source/country-flags/country-flags.component.scss +34 -0
  70. package/src/components-source/country-flags/country-flags.component.spec.ts +78 -0
  71. package/src/components-source/country-flags/country-flags.component.ts +18 -0
  72. package/src/components-source/date-picker/date-picker.component.html +35 -0
  73. package/src/components-source/date-picker/date-picker.component.scss +388 -0
  74. package/src/components-source/date-picker/date-picker.component.spec.ts +510 -0
  75. package/src/components-source/date-picker/date-picker.component.stories.ts +444 -0
  76. package/src/components-source/date-picker/date-picker.component.ts +313 -0
  77. package/src/components-source/date-picker/date-picker.stories.spec.ts +150 -0
  78. package/src/components-source/date-picker-range/date-picker-range.component.html +45 -0
  79. package/src/components-source/date-picker-range/date-picker-range.component.scss +229 -0
  80. package/src/components-source/date-picker-range/date-picker-range.component.spec.ts +555 -0
  81. package/src/components-source/date-picker-range/date-picker-range.component.ts +254 -0
  82. package/src/components-source/dropi-avatars/dropi-avatars.component.html +17 -0
  83. package/src/components-source/dropi-avatars/dropi-avatars.component.scss +58 -0
  84. package/src/components-source/dropi-avatars/dropi-avatars.component.spec.ts +403 -0
  85. package/src/components-source/dropi-avatars/dropi-avatars.component.ts +24 -0
  86. package/src/components-source/dropi-badge/dropi-badge.component.html +12 -0
  87. package/src/components-source/dropi-badge/dropi-badge.component.scss +50 -0
  88. package/src/components-source/dropi-badge/dropi-badge.component.spec.ts +108 -0
  89. package/src/components-source/dropi-badge/dropi-badge.component.stories.ts +140 -0
  90. package/src/components-source/dropi-badge/dropi-badge.component.ts +39 -0
  91. package/src/components-source/dropi-banner-external/dropi-banner-external.component.html +67 -0
  92. package/src/components-source/dropi-banner-external/dropi-banner-external.component.scss +46 -0
  93. package/src/components-source/dropi-banner-external/dropi-banner-external.component.spec.ts +170 -0
  94. package/src/components-source/dropi-banner-external/dropi-banner-external.component.stories.ts +203 -0
  95. package/src/components-source/dropi-banner-external/dropi-banner-external.component.ts +204 -0
  96. package/src/components-source/dropi-breadcrumb/dropi-breadcrumb.component.html +65 -0
  97. package/src/components-source/dropi-breadcrumb/dropi-breadcrumb.component.scss +65 -0
  98. package/src/components-source/dropi-breadcrumb/dropi-breadcrumb.component.spec.ts +125 -0
  99. package/src/components-source/dropi-breadcrumb/dropi-breadcrumb.component.ts +38 -0
  100. package/src/components-source/dropi-breadcrumb/dropi-breadcrumb.stories.ts +133 -0
  101. package/src/components-source/dropi-button/dropi-button.component.html +37 -0
  102. package/src/components-source/dropi-button/dropi-button.component.scss +266 -0
  103. package/src/components-source/dropi-button/dropi-button.component.spec.ts +264 -0
  104. package/src/components-source/dropi-button/dropi-button.component.stories.ts +221 -0
  105. package/src/components-source/dropi-button/dropi-button.component.ts +82 -0
  106. package/src/components-source/dropi-card-checkbox/dropi-card-checkbox.component.html +24 -0
  107. package/src/components-source/dropi-card-checkbox/dropi-card-checkbox.component.scss +85 -0
  108. package/src/components-source/dropi-card-checkbox/dropi-card-checkbox.component.spec.ts +157 -0
  109. package/src/components-source/dropi-card-checkbox/dropi-card-checkbox.component.stories.ts +209 -0
  110. package/src/components-source/dropi-card-checkbox/dropi-card-checkbox.component.ts +41 -0
  111. package/src/components-source/dropi-carousel/dropi-carousel.component.html +57 -0
  112. package/src/components-source/dropi-carousel/dropi-carousel.component.scss +156 -0
  113. package/src/components-source/dropi-carousel/dropi-carousel.component.spec.ts +224 -0
  114. package/src/components-source/dropi-carousel/dropi-carousel.component.ts +266 -0
  115. package/src/components-source/dropi-carousel/dropi-carousel.stories.ts +365 -0
  116. package/src/components-source/dropi-checkbox/dropi-checkbox.component.css +39 -0
  117. package/src/components-source/dropi-checkbox/dropi-checkbox.component.html +18 -0
  118. package/src/components-source/dropi-checkbox/dropi-checkbox.component.spec.ts +155 -0
  119. package/src/components-source/dropi-checkbox/dropi-checkbox.component.stories.ts +101 -0
  120. package/src/components-source/dropi-checkbox/dropi-checkbox.component.ts +25 -0
  121. package/src/components-source/dropi-chips/dropi-chips.component.html +10 -0
  122. package/src/components-source/dropi-chips/dropi-chips.component.scss +54 -0
  123. package/src/components-source/dropi-chips/dropi-chips.component.spec.ts +356 -0
  124. package/src/components-source/dropi-chips/dropi-chips.component.stories.ts +275 -0
  125. package/src/components-source/dropi-chips/dropi-chips.component.ts +100 -0
  126. package/src/components-source/dropi-country-selector/countries.data.ts +239 -0
  127. package/src/components-source/dropi-country-selector/dropi-country-selector.component.html +59 -0
  128. package/src/components-source/dropi-country-selector/dropi-country-selector.component.scss +126 -0
  129. package/src/components-source/dropi-country-selector/dropi-country-selector.component.spec.ts +244 -0
  130. package/src/components-source/dropi-country-selector/dropi-country-selector.component.stories.ts +117 -0
  131. package/src/components-source/dropi-country-selector/dropi-country-selector.component.ts +179 -0
  132. package/src/components-source/dropi-drawer/dropi-drawer.component.html +23 -0
  133. package/src/components-source/dropi-drawer/dropi-drawer.component.scss +88 -0
  134. package/src/components-source/dropi-drawer/dropi-drawer.component.spec.ts +84 -0
  135. package/src/components-source/dropi-drawer/dropi-drawer.component.ts +90 -0
  136. package/src/components-source/dropi-dropdown/dropi-dropdown.component.html +30 -0
  137. package/src/components-source/dropi-dropdown/dropi-dropdown.component.scss +58 -0
  138. package/src/components-source/dropi-dropdown/dropi-dropdown.component.spec.ts +213 -0
  139. package/src/components-source/dropi-dropdown/dropi-dropdown.component.stories.ts +143 -0
  140. package/src/components-source/dropi-dropdown/dropi-dropdown.component.ts +53 -0
  141. package/src/components-source/dropi-favorite-button/dropi-favorite-button.component.html +23 -0
  142. package/src/components-source/dropi-favorite-button/dropi-favorite-button.component.scss +21 -0
  143. package/src/components-source/dropi-favorite-button/dropi-favorite-button.component.spec.ts +240 -0
  144. package/src/components-source/dropi-favorite-button/dropi-favorite-button.component.ts +31 -0
  145. package/src/components-source/dropi-file-upload/card-view/card-view.component.html +154 -0
  146. package/src/components-source/dropi-file-upload/card-view/card-view.component.scss +118 -0
  147. package/src/components-source/dropi-file-upload/card-view/card-view.component.ts +72 -0
  148. package/src/components-source/dropi-file-upload/drop-zone/drop-zone.coment.stories.ts +179 -0
  149. package/src/components-source/dropi-file-upload/drop-zone/drop-zone.component.html +111 -0
  150. package/src/components-source/dropi-file-upload/drop-zone/drop-zone.component.scss +90 -0
  151. package/src/components-source/dropi-file-upload/drop-zone/drop-zone.component.ts +172 -0
  152. package/src/components-source/dropi-file-upload/dropi-file-upload.component.html +42 -0
  153. package/src/components-source/dropi-file-upload/dropi-file-upload.component.scss +31 -0
  154. package/src/components-source/dropi-file-upload/dropi-file-upload.component.spec.ts +398 -0
  155. package/src/components-source/dropi-file-upload/dropi-file-upload.component.stories.ts +139 -0
  156. package/src/components-source/dropi-file-upload/dropi-file-upload.component.ts +329 -0
  157. package/src/components-source/dropi-file-upload/file-list/file-list.component.html +51 -0
  158. package/src/components-source/dropi-file-upload/file-list/file-list.component.scss +60 -0
  159. package/src/components-source/dropi-file-upload/file-list/file-list.component.ts +84 -0
  160. package/src/components-source/dropi-file-upload/grid-view/grid-view.component.html +77 -0
  161. package/src/components-source/dropi-file-upload/grid-view/grid-view.component.scss +85 -0
  162. package/src/components-source/dropi-file-upload/grid-view/grid-view.component.ts +35 -0
  163. package/src/components-source/dropi-ilustration-icon/dropi-ilustration-icon.component.html +38 -0
  164. package/src/components-source/dropi-ilustration-icon/dropi-ilustration-icon.component.scss +59 -0
  165. package/src/components-source/dropi-ilustration-icon/dropi-ilustration-icon.component.spec.ts +214 -0
  166. package/src/components-source/dropi-ilustration-icon/dropi-ilustration-icon.component.ts +65 -0
  167. package/src/components-source/dropi-image-overlay/dropi-image-overlay.component.html +54 -0
  168. package/src/components-source/dropi-image-overlay/dropi-image-overlay.component.scss +210 -0
  169. package/src/components-source/dropi-image-overlay/dropi-image-overlay.component.spec.ts +145 -0
  170. package/src/components-source/dropi-image-overlay/dropi-image-overlay.component.ts +76 -0
  171. package/src/components-source/dropi-image-overlay/dropi-image-overlay.stories.ts +267 -0
  172. package/src/components-source/dropi-languages-selector/dropi-languages-selector.component.html +17 -0
  173. package/src/components-source/dropi-languages-selector/dropi-languages-selector.component.scss +82 -0
  174. package/src/components-source/dropi-languages-selector/dropi-languages-selector.component.spec.ts +152 -0
  175. package/src/components-source/dropi-languages-selector/dropi-languages-selector.component.ts +41 -0
  176. package/src/components-source/dropi-logo/dropi-logo.component.html +3 -0
  177. package/src/components-source/dropi-logo/dropi-logo.component.scss +20 -0
  178. package/src/components-source/dropi-logo/dropi-logo.component.spec.ts +274 -0
  179. package/src/components-source/dropi-logo/dropi-logo.component.ts +24 -0
  180. package/src/components-source/dropi-modal/dropi-modal-stack.service.ts +75 -0
  181. package/src/components-source/dropi-modal/dropi-modal.component.html +55 -0
  182. package/src/components-source/dropi-modal/dropi-modal.component.scss +274 -0
  183. package/src/components-source/dropi-modal/dropi-modal.component.spec.ts +46 -0
  184. package/src/components-source/dropi-modal/dropi-modal.component.stories.ts +392 -0
  185. package/src/components-source/dropi-modal/dropi-modal.component.ts +392 -0
  186. package/src/components-source/dropi-modal/p-template.directive.ts +11 -0
  187. package/src/components-source/dropi-navbar/dropi-navbar.component.html +41 -0
  188. package/src/components-source/dropi-navbar/dropi-navbar.component.scss +227 -0
  189. package/src/components-source/dropi-navbar/dropi-navbar.component.spec.ts +110 -0
  190. package/src/components-source/dropi-navbar/dropi-navbar.component.ts +52 -0
  191. package/src/components-source/dropi-paginator/dropi-paginator.component.html +64 -0
  192. package/src/components-source/dropi-paginator/dropi-paginator.component.scss +43 -0
  193. package/src/components-source/dropi-paginator/dropi-paginator.component.spec.ts +285 -0
  194. package/src/components-source/dropi-paginator/dropi-paginator.component.stories.ts +345 -0
  195. package/src/components-source/dropi-paginator/dropi-paginator.component.ts +85 -0
  196. package/src/components-source/dropi-phone-input/dropi-phone-input.component.html +93 -0
  197. package/src/components-source/dropi-phone-input/dropi-phone-input.component.scss +224 -0
  198. package/src/components-source/dropi-phone-input/dropi-phone-input.component.spec.ts +376 -0
  199. package/src/components-source/dropi-phone-input/dropi-phone-input.component.ts +203 -0
  200. package/src/components-source/dropi-phone-input/numeric-input.directive.ts +17 -0
  201. package/src/components-source/dropi-radio-button/dropi-radio-button.component.html +8 -0
  202. package/src/components-source/dropi-radio-button/dropi-radio-button.component.scss +33 -0
  203. package/src/components-source/dropi-radio-button/dropi-radio-button.component.spec.ts +225 -0
  204. package/src/components-source/dropi-radio-button/dropi-radio-button.component.ts +48 -0
  205. package/src/components-source/dropi-search/dropi-search.component.html +124 -0
  206. package/src/components-source/dropi-search/dropi-search.component.scss +116 -0
  207. package/src/components-source/dropi-search/dropi-search.component.spec.ts +483 -0
  208. package/src/components-source/dropi-search/dropi-search.component.stories.ts +267 -0
  209. package/src/components-source/dropi-search/dropi-search.component.ts +230 -0
  210. package/src/components-source/dropi-select/dropi-select.component.html +158 -0
  211. package/src/components-source/dropi-select/dropi-select.component.scss +275 -0
  212. package/src/components-source/dropi-select/dropi-select.component.spec.ts +386 -0
  213. package/src/components-source/dropi-select/dropi-select.component.stories.ts +686 -0
  214. package/src/components-source/dropi-select/dropi-select.component.ts +465 -0
  215. package/src/components-source/dropi-skeleton/dropi-skeleton.component.html +10 -0
  216. package/src/components-source/dropi-skeleton/dropi-skeleton.component.scss +28 -0
  217. package/src/components-source/dropi-skeleton/dropi-skeleton.component.spec.ts +273 -0
  218. package/src/components-source/dropi-skeleton/dropi-skeleton.component.stories.ts +145 -0
  219. package/src/components-source/dropi-skeleton/dropi-skeleton.component.ts +30 -0
  220. package/src/components-source/dropi-steps/dropi-steps.component.html +29 -0
  221. package/src/components-source/dropi-steps/dropi-steps.component.scss +110 -0
  222. package/src/components-source/dropi-steps/dropi-steps.component.spec.ts +228 -0
  223. package/src/components-source/dropi-steps/dropi-steps.component.stories.ts +231 -0
  224. package/src/components-source/dropi-steps/dropi-steps.component.ts +98 -0
  225. package/src/components-source/dropi-switch/dropi-switch.component.html +4 -0
  226. package/src/components-source/dropi-switch/dropi-switch.component.scss +50 -0
  227. package/src/components-source/dropi-switch/dropi-switch.component.spec.ts +105 -0
  228. package/src/components-source/dropi-switch/dropi-switch.component.stories.ts +106 -0
  229. package/src/components-source/dropi-switch/dropi-switch.component.ts +22 -0
  230. package/src/components-source/dropi-table/dropi-table.component.html +395 -0
  231. package/src/components-source/dropi-table/dropi-table.component.scss +506 -0
  232. package/src/components-source/dropi-table/dropi-table.component.spec.ts +578 -0
  233. package/src/components-source/dropi-table/dropi-table.component.stories.ts +313 -0
  234. package/src/components-source/dropi-table/dropi-table.component.ts +580 -0
  235. package/src/components-source/dropi-tag/dropi-tag.component.html +17 -0
  236. package/src/components-source/dropi-tag/dropi-tag.component.scss +50 -0
  237. package/src/components-source/dropi-tag/dropi-tag.component.spec.ts +267 -0
  238. package/src/components-source/dropi-tag/dropi-tag.component.stories.ts +290 -0
  239. package/src/components-source/dropi-tag/dropi-tag.component.ts +92 -0
  240. package/src/components-source/dropi-text-area/droip-text-area.component.stories.ts +138 -0
  241. package/src/components-source/dropi-text-area/dropi-text-area.component.html +63 -0
  242. package/src/components-source/dropi-text-area/dropi-text-area.component.scss +106 -0
  243. package/src/components-source/dropi-text-area/dropi-text-area.component.spec.ts +507 -0
  244. package/src/components-source/dropi-text-area/dropi-text-area.component.ts +80 -0
  245. package/src/components-source/dropi-tooltip/dropi-tooltip.component.html +70 -0
  246. package/src/components-source/dropi-tooltip/dropi-tooltip.component.scss +250 -0
  247. package/src/components-source/dropi-tooltip/dropi-tooltip.component.spec.ts +423 -0
  248. package/src/components-source/dropi-tooltip/dropi-tooltip.component.ts +153 -0
  249. package/src/components-source/dropi-youtube-lazy-video/dropi-youtube-lazy-video.component.html +20 -0
  250. package/src/components-source/dropi-youtube-lazy-video/dropi-youtube-lazy-video.component.scss +63 -0
  251. package/src/components-source/dropi-youtube-lazy-video/dropi-youtube-lazy-video.component.spec.ts +121 -0
  252. package/src/components-source/dropi-youtube-lazy-video/dropi-youtube-lazy-video.component.ts +43 -0
  253. package/src/components-source/dropi-youtube-lazy-video/dropi-youtube-lazy-video.stories.ts +125 -0
  254. package/src/components-source/empty-state/empty-state.component.html +30 -0
  255. package/src/components-source/empty-state/empty-state.component.scss +76 -0
  256. package/src/components-source/empty-state/empty-state.component.spec.ts +244 -0
  257. package/src/components-source/empty-state/empty-state.component.stories.ts +198 -0
  258. package/src/components-source/empty-state/empty-state.component.ts +34 -0
  259. package/src/components-source/file-upload-progress-bar/file-upload-progress-bar.component.html +81 -0
  260. package/src/components-source/file-upload-progress-bar/file-upload-progress-bar.component.scss +86 -0
  261. package/src/components-source/file-upload-progress-bar/file-upload-progress-bar.component.spec.ts +27 -0
  262. package/src/components-source/file-upload-progress-bar/file-upload-progress-bar.component.stories.ts +149 -0
  263. package/src/components-source/file-upload-progress-bar/file-upload-progress-bar.component.ts +89 -0
  264. package/src/components-source/foundations/dropi-border-radius-demo/dropi-border-radius-demo.component.scss +32 -0
  265. package/src/components-source/foundations/dropi-border-radius-demo/dropi-border-radius-demo.component.ts +17 -0
  266. package/src/components-source/foundations/foundations.component.html +183 -0
  267. package/src/components-source/foundations/foundations.component.scss +31 -0
  268. package/src/components-source/foundations/foundations.component.ts +26 -0
  269. package/src/components-source/icon/icon-names.const.ts +270 -0
  270. package/src/components-source/icon/icon.component.html +3 -0
  271. package/src/components-source/icon/icon.component.scss +4 -0
  272. package/src/components-source/icon/icon.component.spec.ts +304 -0
  273. package/src/components-source/icon/icon.component.ts +53 -0
  274. package/src/components-source/index.ts +89 -0
  275. package/src/components-source/input/input.component.html +97 -0
  276. package/src/components-source/input/input.component.scss +149 -0
  277. package/src/components-source/input/input.component.spec.ts +243 -0
  278. package/src/components-source/input/input.component.stories.ts +269 -0
  279. package/src/components-source/input/input.component.ts +119 -0
  280. package/src/components-source/lottie-loader/lottie-loader.component.html +16 -0
  281. package/src/components-source/lottie-loader/lottie-loader.component.scss +32 -0
  282. package/src/components-source/lottie-loader/lottie-loader.component.spec.ts +103 -0
  283. package/src/components-source/lottie-loader/lottie-loader.component.ts +20 -0
  284. package/src/components-source/otp-send-code/mock-otp-services.ts +214 -0
  285. package/src/components-source/otp-send-code/otp-send-code.component.html +151 -0
  286. package/src/components-source/otp-send-code/otp-send-code.component.scss +156 -0
  287. package/src/components-source/otp-send-code/otp-send-code.component.spec.ts +419 -0
  288. package/src/components-source/otp-send-code/otp-send-code.component.stories.ts +190 -0
  289. package/src/components-source/otp-send-code/otp-send-code.component.ts +659 -0
  290. package/src/components-source/radio-selection-list/radio-selection-list.component.html +107 -0
  291. package/src/components-source/radio-selection-list/radio-selection-list.component.scss +280 -0
  292. package/src/components-source/radio-selection-list/radio-selection-list.component.spec.ts +243 -0
  293. package/src/components-source/radio-selection-list/radio-selection-list.component.stories.ts +313 -0
  294. package/src/components-source/radio-selection-list/radio-selection-list.component.ts +143 -0
  295. package/src/components-source/read-more/read-more.component.html +14 -0
  296. package/src/components-source/read-more/read-more.component.scss +16 -0
  297. package/src/components-source/read-more/read-more.component.spec.ts +272 -0
  298. package/src/components-source/read-more/read-more.component.stories.ts +131 -0
  299. package/src/components-source/read-more/read-more.component.ts +88 -0
  300. package/src/components-source/sidebar/sidebar.component.html +42 -0
  301. package/src/components-source/sidebar/sidebar.component.scss +70 -0
  302. package/src/components-source/sidebar/sidebar.component.spec.ts +354 -0
  303. package/src/components-source/sidebar/sidebar.component.stories.ts +145 -0
  304. package/src/components-source/sidebar/sidebar.component.ts +105 -0
  305. package/src/components-source/simple-stepper/simple-stepper.component.html +17 -0
  306. package/src/components-source/simple-stepper/simple-stepper.component.scss +117 -0
  307. package/src/components-source/simple-stepper/simple-stepper.component.spec.ts +348 -0
  308. package/src/components-source/simple-stepper/simple-stepper.component.stories.ts +104 -0
  309. package/src/components-source/simple-stepper/simple-stepper.component.ts +69 -0
  310. package/src/components-source/storybook-doc-components/avatars-storybook/avatars-storybook.component.html +192 -0
  311. package/src/components-source/storybook-doc-components/avatars-storybook/avatars-storybook.component.scss +15 -0
  312. package/src/components-source/storybook-doc-components/avatars-storybook/avatars-storybook.component.ts +17 -0
  313. package/src/components-source/storybook-doc-components/border-radius-storybook/border-radius-storybook.component.html +22 -0
  314. package/src/components-source/storybook-doc-components/border-radius-storybook/border-radius-storybook.component.scss +0 -0
  315. package/src/components-source/storybook-doc-components/border-radius-storybook/border-radius-storybook.component.ts +54 -0
  316. package/src/components-source/storybook-doc-components/breakpoints-and-grids-storybook/breakpoints-and-grids-storybook.component.css +81 -0
  317. package/src/components-source/storybook-doc-components/breakpoints-and-grids-storybook/breakpoints-and-grids-storybook.component.html +143 -0
  318. package/src/components-source/storybook-doc-components/breakpoints-and-grids-storybook/breakpoints-and-grids-storybook.component.ts +97 -0
  319. package/src/components-source/storybook-doc-components/colors-storybook/colors-storybook.component.css +10 -0
  320. package/src/components-source/storybook-doc-components/colors-storybook/colors-storybook.component.html +63 -0
  321. package/src/components-source/storybook-doc-components/colors-storybook/colors-storybook.component.ts +542 -0
  322. package/src/components-source/storybook-doc-components/dropi-modal/dropi-modal.component.html +132 -0
  323. package/src/components-source/storybook-doc-components/dropi-modal/dropi-modal.component.scss +15 -0
  324. package/src/components-source/storybook-doc-components/dropi-modal/dropi-modal.component.ts +67 -0
  325. package/src/components-source/storybook-doc-components/dropi-toast/dropi-toast.component.html +156 -0
  326. package/src/components-source/storybook-doc-components/dropi-toast/dropi-toast.component.scss +13 -0
  327. package/src/components-source/storybook-doc-components/dropi-toast/dropi-toast.component.ts +55 -0
  328. package/src/components-source/storybook-doc-components/flags-storybook/flags-storybook.component.css +0 -0
  329. package/src/components-source/storybook-doc-components/flags-storybook/flags-storybook.component.html +99 -0
  330. package/src/components-source/storybook-doc-components/flags-storybook/flags-storybook.component.ts +19 -0
  331. package/src/components-source/storybook-doc-components/icons-storybook/icons-storybook.component.css +82 -0
  332. package/src/components-source/storybook-doc-components/icons-storybook/icons-storybook.component.html +111 -0
  333. package/src/components-source/storybook-doc-components/icons-storybook/icons-storybook.component.ts +196 -0
  334. package/src/components-source/storybook-doc-components/logo-storybook/logo-foundations.component.ts +19 -0
  335. package/src/components-source/storybook-doc-components/logo-storybook/logo-storybook.component.css +0 -0
  336. package/src/components-source/storybook-doc-components/logo-storybook/logo-storybook.component.html +104 -0
  337. package/src/components-source/storybook-doc-components/lustration-storybook/lustration-storybook.component.css +0 -0
  338. package/src/components-source/storybook-doc-components/lustration-storybook/lustration-storybook.component.html +218 -0
  339. package/src/components-source/storybook-doc-components/lustration-storybook/lustration-storybook.component.ts +20 -0
  340. package/src/components-source/storybook-doc-components/shadow-storybook/shadow-storybook.component.html +21 -0
  341. package/src/components-source/storybook-doc-components/shadow-storybook/shadow-storybook.component.scss +0 -0
  342. package/src/components-source/storybook-doc-components/shadow-storybook/shadow-storybook.component.ts +66 -0
  343. package/src/components-source/storybook-doc-components/spacing-storybook/spacing-storybook.component.html +33 -0
  344. package/src/components-source/storybook-doc-components/spacing-storybook/spacing-storybook.component.scss +0 -0
  345. package/src/components-source/storybook-doc-components/spacing-storybook/spacing-storybook.component.ts +37 -0
  346. package/src/components-source/storybook-doc-components/story-page/story-page.component.html +74 -0
  347. package/src/components-source/storybook-doc-components/story-page/story-page.component.scss +103 -0
  348. package/src/components-source/storybook-doc-components/story-page/story-page.component.ts +424 -0
  349. package/src/components-source/storybook-doc-components/template-breakpoint-storybook/template-breakpoint-storybook.component.html +35 -0
  350. package/src/components-source/storybook-doc-components/template-breakpoint-storybook/template-breakpoint-storybook.component.scss +64 -0
  351. package/src/components-source/storybook-doc-components/template-breakpoint-storybook/template-breakpoint-storybook.component.ts +71 -0
  352. package/src/components-source/storybook-doc-components/tillte-table-documentation/tillte-table-documentation.component.html +44 -0
  353. package/src/components-source/storybook-doc-components/tillte-table-documentation/tillte-table-documentation.component.scss +270 -0
  354. package/src/components-source/storybook-doc-components/tillte-table-documentation/tillte-table-documentation.component.ts +153 -0
  355. package/src/components-source/tabs/tabs.component.html +26 -0
  356. package/src/components-source/tabs/tabs.component.scss +62 -0
  357. package/src/components-source/tabs/tabs.component.spec.ts +212 -0
  358. package/src/components-source/tabs/tabs.component.stories.ts +203 -0
  359. package/src/components-source/tabs/tabs.component.ts +138 -0
  360. package/src/components-source/tag-type-product/tag-type-product.component.html +1 -0
  361. package/src/components-source/tag-type-product/tag-type-product.component.scss +10 -0
  362. package/src/components-source/tag-type-product/tag-type-product.component.spec.ts +38 -0
  363. package/src/components-source/tag-type-product/tag-type-product.component.ts +9 -0
  364. package/src/components-source/toast/toast.component.html +37 -0
  365. package/src/components-source/toast/toast.component.scss +142 -0
  366. package/src/components-source/toast/toast.component.spec.ts +368 -0
  367. package/src/components-source/toast/toast.component.ts +59 -0
  368. package/src/components-source/toast/toast.stories.ts +69 -0
  369. package/src/components-source/tooltip/tooltip.component.html +46 -0
  370. package/src/components-source/tooltip/tooltip.component.scss +44 -0
  371. package/src/components-source/tooltip/tooltip.component.spec.ts +327 -0
  372. package/src/components-source/tooltip/tooltip.component.ts +24 -0
  373. package/src/components-source/ui-dropi.module.ts +125 -0
  374. package/src/components-source/ui-inventory.json +1138 -0
  375. package/src/components-source/vertical-steps/vertical-steps.component.html +35 -0
  376. package/src/components-source/vertical-steps/vertical-steps.component.scss +143 -0
  377. package/src/components-source/vertical-steps/vertical-steps.component.spec.ts +121 -0
  378. package/src/components-source/vertical-steps/vertical-steps.component.stories.ts +216 -0
  379. package/src/components-source/vertical-steps/vertical-steps.component.ts +151 -0
  380. package/src/index.ts +31 -0
  381. package/src/lib/bootstrap.ts +28 -0
  382. package/src/lib/dropi-ui-elements/dropi-ui-elements.component.html +1 -0
  383. package/src/lib/dropi-ui-elements/dropi-ui-elements.component.scss +0 -0
  384. package/src/lib/dropi-ui-elements/dropi-ui-elements.component.spec.ts +21 -0
  385. package/src/lib/dropi-ui-elements/dropi-ui-elements.component.ts +9 -0
  386. package/src/lib/elements-registry.ts +66 -0
  387. package/src/lib/elements.module.ts +22 -0
  388. package/src/styles.scss +152 -0
  389. package/src/test-setup.ts +6 -0
  390. package/tsconfig.json +28 -0
  391. package/tsconfig.lib.json +18 -0
  392. package/tsconfig.lib.prod.json +9 -0
  393. package/tsconfig.spec.json +12 -0
@@ -0,0 +1,269 @@
1
+ import { type Meta, type StoryObj } from '@storybook/angular';
2
+ import { moduleMetadata } from '@storybook/angular';
3
+ import { InputComponent } from './input.component';
4
+ import { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';
5
+ import { SettingsService } from '@app/services/setting.service';
6
+ import { LOCALE_ID } from '@angular/core';
7
+ import { registerLocaleData } from '@angular/common';
8
+ import localeEsCo from '@angular/common/locales/es-CO';
9
+
10
+ registerLocaleData(localeEsCo);
11
+
12
+ const mockSettingsService = {
13
+ dropi_loginResult: {
14
+ configurations: [
15
+ {
16
+ official_currency: 'COP',
17
+ digits_info_currency: '1.0-0',
18
+ },
19
+ ],
20
+ },
21
+ };
22
+
23
+ /**
24
+ * # Input Component
25
+ *
26
+ * A flexible and feature-rich text input component for forms.
27
+ * Supports various input types including text, password, money, and numeric inputs.
28
+ *
29
+ * ## Features
30
+ * - **Form integration**: Works seamlessly with Angular Reactive Forms
31
+ * - **Input types**: Standard text, password with toggle visibility, money with currency formatting
32
+ * - **Validation**: Built-in error display for form validation
33
+ * - **Helper text**: Optional helper text below the input
34
+ * - **Icons**: Support for prefix icons with customizable colors
35
+ * - **Labels**: Fixed or floating label options
36
+ *
37
+ * ## Usage
38
+ * ```html
39
+ * <app-input
40
+ * [inputProperties]="{
41
+ * label: 'Email',
42
+ * placeholder: 'Enter your email',
43
+ * formControl: emailControl,
44
+ * maxLength: 100
45
+ * }"
46
+ * [disabled]="false"
47
+ * [fixedLabel]="true">
48
+ * </app-input>
49
+ * ```
50
+ */
51
+ const meta: Meta<InputComponent> = {
52
+ title: 'UI Dropi/Input',
53
+ component: InputComponent,
54
+ decorators: [
55
+ moduleMetadata({
56
+ imports: [ReactiveFormsModule],
57
+ providers: [
58
+ { provide: SettingsService, useValue: mockSettingsService },
59
+ { provide: LOCALE_ID, useValue: 'es-Co' },
60
+ ],
61
+ }),
62
+ ],
63
+ tags: ['autodocs'],
64
+ parameters: {
65
+ layout: 'centered',
66
+ docs: {
67
+ description: {
68
+ component: `
69
+ A flexible and feature-rich text input component for forms.
70
+ Supports various input types including text, password, money, and numeric inputs.
71
+
72
+ ### Key Features
73
+ - **Form integration**: Works seamlessly with Angular Reactive Forms
74
+ - **Input types**: Standard text, password with toggle visibility, money with currency formatting
75
+ - **Validation**: Built-in error display for form validation
76
+ - **Helper text**: Optional helper text below the input
77
+ - **Icons**: Support for prefix icons with customizable colors
78
+ - **Labels**: Fixed or floating label options
79
+ `,
80
+ },
81
+ },
82
+ },
83
+ argTypes: {
84
+ inputProperties: {
85
+ control: 'object',
86
+ description:
87
+ 'Configuration object containing all input properties (label, placeholder, formControl, etc.)',
88
+ table: {
89
+ type: { summary: 'InputProperties' },
90
+ },
91
+ },
92
+ disabled: {
93
+ control: 'boolean',
94
+ description: 'Disables the input field when set to true',
95
+ table: {
96
+ type: { summary: 'boolean' },
97
+ defaultValue: { summary: 'false' },
98
+ },
99
+ },
100
+ fixedLabel: {
101
+ control: 'boolean',
102
+ description: 'When true, the label stays fixed above the input instead of floating',
103
+ table: {
104
+ type: { summary: 'boolean' },
105
+ defaultValue: { summary: 'false' },
106
+ },
107
+ },
108
+ },
109
+ };
110
+
111
+ export default meta;
112
+ type Story = StoryObj<InputComponent>;
113
+
114
+ const createStory = (args: any, storyDescription?: string): Story => ({
115
+ render: () => ({
116
+ props: args,
117
+ template: `
118
+ <app-input [inputProperties]="inputProperties" [fixedLabel]="fixedLabel" [disabled]="disabled"></app-input>
119
+ `,
120
+ }),
121
+ args,
122
+ parameters: {
123
+ design: {
124
+ type: 'figma',
125
+ url: 'https://www.figma.com/design/ONiVQJJ2qrJ6tmJnpNrrKE/%5BWEB%5D-components?node-id=2-391&p=f&t=zaCu6dbCrR66dwZb-0',
126
+ },
127
+ docs: {
128
+ description: {
129
+ story: storyDescription,
130
+ },
131
+ },
132
+ },
133
+ });
134
+
135
+ const invalidControl = new FormControl('', Validators.required);
136
+ invalidControl.markAsTouched();
137
+ invalidControl.markAsDirty();
138
+
139
+ /** Default input with label and placeholder */
140
+ export const Default = createStory(
141
+ {
142
+ inputProperties: {
143
+ label: 'Example label',
144
+ placeholder: 'Example placeholder',
145
+ formControl: new FormControl('', Validators.required),
146
+ isPasswordInput: false,
147
+ isMoneyInput: false,
148
+ maxLength: 10,
149
+ },
150
+ disabled: false,
151
+ fixedLabel: true,
152
+ },
153
+ 'Basic input field with a fixed label and placeholder text.',
154
+ );
155
+
156
+ /** Required input field */
157
+ export const Required = createStory(
158
+ {
159
+ inputProperties: {
160
+ ...Default.args.inputProperties,
161
+ formControl: new FormControl('', Validators.required),
162
+ },
163
+ disabled: false,
164
+ },
165
+ 'Input field marked as required. Shows validation error when left empty and touched.',
166
+ );
167
+
168
+ /** Disabled input field */
169
+ export const Disabled = createStory(
170
+ {
171
+ inputProperties: {
172
+ ...Default.args.inputProperties,
173
+ formControl: new FormControl('Example value'),
174
+ textHelper: 'Example helper for input',
175
+ },
176
+ disabled: true,
177
+ },
178
+ 'Input field in disabled state. Users cannot interact with or modify the value.',
179
+ );
180
+
181
+ /** Input with validation errors */
182
+ export const WithErrors = createStory(
183
+ {
184
+ inputProperties: {
185
+ ...Default.args.inputProperties,
186
+ formControl: invalidControl,
187
+ icon: 'Heart-solid',
188
+ iconColor: 'Primary-Primary-500',
189
+ textHelper: 'Example helper for input',
190
+ },
191
+ disabled: false,
192
+ fixedLabel: true,
193
+ },
194
+ 'Input field showing validation error state. The error appears when the field is touched and invalid.',
195
+ );
196
+
197
+ /** Input with prefix icon */
198
+ export const WithIcon = createStory(
199
+ {
200
+ inputProperties: {
201
+ ...Default.args.inputProperties,
202
+ formControl: new FormControl('Dropi'),
203
+ icon: 'Heart-solid',
204
+ iconColor: 'Primary-Primary-500',
205
+ },
206
+ disabled: false,
207
+ },
208
+ 'Input field with a prefix icon. Icons help users understand the expected input type.',
209
+ );
210
+
211
+ /** Input with helper text */
212
+ export const WithHelper = createStory(
213
+ {
214
+ inputProperties: { ...WithIcon.args.inputProperties, textHelper: 'Example helper for input' },
215
+ disabled: false,
216
+ },
217
+ 'Input field with helper text below. Use helper text to provide additional context or instructions.',
218
+ );
219
+
220
+ /** Currency/Money input with formatting */
221
+ export const MoneyInput = createStory(
222
+ {
223
+ inputProperties: {
224
+ ...Default.args.inputProperties,
225
+ formControl: new FormControl('100000'),
226
+ isMoneyInput: true,
227
+ maxLength: null,
228
+ },
229
+ disabled: false,
230
+ },
231
+ 'Money input that automatically formats values with currency symbol and thousand separators.',
232
+ );
233
+
234
+ /** Thousand separator input without currency symbol */
235
+ export const ThousandSeparatorInput = createStory(
236
+ {
237
+ inputProperties: {
238
+ ...Default.args.inputProperties,
239
+ formControl: new FormControl('100000'),
240
+ isThousandSeparator: true,
241
+ maxLength: null,
242
+ },
243
+ disabled: false,
244
+ },
245
+ 'Numeric input with thousand separators but without currency symbol. Useful for quantities or IDs.',
246
+ );
247
+
248
+ /** Password input with visibility toggle */
249
+ export const PasswordInput = createStory(
250
+ {
251
+ inputProperties: {
252
+ ...Default.args.inputProperties,
253
+ isPasswordInput: true,
254
+ textHelper: 'Example helper for password input',
255
+ },
256
+ disabled: false,
257
+ fixedLabel: true,
258
+ },
259
+ 'Password input with toggle button to show/hide the password. Includes strength indicator.',
260
+ );
261
+
262
+ /** Numeric-only input */
263
+ export const NumericInput = createStory(
264
+ {
265
+ inputProperties: { ...Default.args.inputProperties, isNumericInput: true },
266
+ disabled: false,
267
+ },
268
+ 'Input that only accepts numeric characters. Useful for phone numbers, quantities, etc.',
269
+ );
@@ -0,0 +1,119 @@
1
+ import { Component, Input, OnChanges, OnInit, SimpleChanges, SimpleChange } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { InputProperties } from '@app/utilities/interfaces/ui/input-interface';
4
+ import { Validators, ReactiveFormsModule } from '@angular/forms';
5
+ import { IconComponent } from '../icon/icon.component';
6
+ import { ThousandSeparatorDirective } from '@app/utilities/directives/thousand-separator.directive';
7
+ import { TranslateModule } from '@ngx-translate/core';
8
+ import { OnlyNumbersDirective } from '@app/utilities/directives/only-numbers.directive';
9
+ import { OnlyLettersDirective } from '@app/utilities/directives/only-letters.directive';
10
+
11
+ @Component({
12
+ selector: 'app-input',
13
+ standalone: true,
14
+ imports: [
15
+ CommonModule,
16
+ ReactiveFormsModule,
17
+ IconComponent,
18
+ ThousandSeparatorDirective,
19
+ TranslateModule,
20
+ OnlyNumbersDirective,
21
+ OnlyLettersDirective,
22
+ ],
23
+ templateUrl: './input.component.html',
24
+ styleUrls: ['./input.component.scss'],
25
+ })
26
+ export class InputComponent implements OnInit, OnChanges {
27
+ /**
28
+ * Define las propiedades necesarias para un campo de entrada (`input`).
29
+ *
30
+ * Cada campo debe contener las siguientes propiedades:
31
+ * - `formControl`: Control de formulario asociado al campo.
32
+ * - `label`: Texto descriptivo que se mostrará como etiqueta.
33
+ * - `placeholder`: Texto de ejemplo dentro del campo.
34
+ * - `maxLength`: Número máximo de caracteres permitidos.
35
+ *
36
+ * Propiedades opcionales:
37
+ * - `textHelper`: Texto de ayuda que se mostrará debajo del campo.
38
+ * - `icon`: Nombre del icono a mostrar dentro del input.
39
+ * - `iconColor`: Color aplicado al icono del input.
40
+ * - `isMoneyInput`: Indica si debe aplicarse una directiva para separar valores.
41
+ * - `isPasswordInput: Indica si el input debe tener comportamiento de campo de contraseña`
42
+ * - `isNumericInput: Indica si el input solo acepta caracteres numericos`
43
+ * @type {InputProperties}
44
+ */
45
+ @Input() public inputProperties: InputProperties;
46
+ /**
47
+ * Indica si se debe mostrar deshabilitiado el input.
48
+ *
49
+ * Valor por defecto: `false`.
50
+ *
51
+ * @type {boolean}
52
+ */
53
+ @Input() public disabled: boolean = false;
54
+ /**
55
+ * Indica si se debe mostrar el asterisco de obligatorio basado en si es requerido el formControl
56
+ *
57
+ * Valor por defecto: `true`.
58
+ *
59
+ * @type {boolean}
60
+ */
61
+ @Input() public showObligatoryAsterisk: boolean = true;
62
+
63
+ /**
64
+ * Indica si se debe mostrar el label fijo en la parte superior del input
65
+ *
66
+ * Valor por defecto: `false`.
67
+ *
68
+ * @type {boolean}
69
+ */
70
+ @Input() public fixedLabel: boolean = false;
71
+ /**
72
+ * Indica si se debe mostrar el asterisco de obligatorio basado en si es requerido el formControl y si showObligatoryAsterisk es true
73
+ *
74
+ * Valor por defecto: `false`.
75
+ *
76
+ * @type {boolean}
77
+ */
78
+ public showAsterisk: boolean = false;
79
+ /**
80
+ * Indica si se debe ocultar los caracteres dentro del input
81
+ *
82
+ * Valor por defecto: `false`.
83
+ *
84
+ * @type {boolean}
85
+ */
86
+ public showPassword: boolean = false;
87
+
88
+ ngOnInit() {
89
+ this.validateDisabled();
90
+ this.addObligatoryAsterisk();
91
+ }
92
+
93
+ ngOnChanges(changes: SimpleChanges): void {
94
+ if (changes['disabled']) {
95
+ const disabledChange = changes['disabled'];
96
+ }
97
+ }
98
+
99
+ addObligatoryAsterisk() {
100
+ this.showAsterisk =
101
+ this.showObligatoryAsterisk &&
102
+ this.inputProperties.formControl.hasValidator(Validators.required);
103
+ }
104
+
105
+ isRequired() {
106
+ return this.inputProperties.formControl.hasValidator(Validators.required);
107
+ }
108
+
109
+ validateDisabled() {
110
+ if (this.disabled) {
111
+ this.inputProperties.formControl.disable();
112
+ }
113
+ }
114
+
115
+ showOrHidePassword() {
116
+ if (this.disabled || this.inputProperties.formControl.disabled) return;
117
+ this.showPassword = !this.showPassword;
118
+ }
119
+ }
@@ -0,0 +1,16 @@
1
+ <div class="loader-container" *ngIf="visible">
2
+ <div class="lottie-animation">
3
+ <dotlottie-player
4
+ [src]="loadingAnimation"
5
+ background="transparent"
6
+ speed="1"
7
+ style="width: 200px; height: auto"
8
+ loop
9
+ autoplay
10
+ ></dotlottie-player>
11
+ </div>
12
+ <div class="loader-text">
13
+ <h3>{{ title }}</h3>
14
+ <p>{{ message }}</p>
15
+ </div>
16
+ </div>
@@ -0,0 +1,32 @@
1
+ .loader-container {
2
+ display: flex;
3
+ flex-direction: column;
4
+ justify-content: center;
5
+ align-items: center;
6
+ gap: 8px;
7
+ width: 100%;
8
+ height: 100%;
9
+ }
10
+
11
+ .lottie-animation {
12
+ width: 80%;
13
+ max-width: 200px;
14
+ display: flex;
15
+ justify-content: center;
16
+ }
17
+
18
+ .loader-text {
19
+ text-align: center;
20
+
21
+ h3 {
22
+ color: var(--Gray-Gray-1, #1f2937);
23
+ font-size: 16px; // reducido de 19px a 16px
24
+ font-weight: 500;
25
+ }
26
+
27
+ p {
28
+ color: var(--Gray-Gray-2, #74798d);
29
+ font-size: 12px; // reducido de 14px a 12px
30
+ margin-top: 6px;
31
+ }
32
+ }
@@ -0,0 +1,103 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+ import { LottieLoaderComponent } from './lottie-loader.component';
3
+
4
+ describe('LottieLoaderComponent', () => {
5
+ let component: LottieLoaderComponent;
6
+ let fixture: ComponentFixture<LottieLoaderComponent>;
7
+
8
+ beforeEach(async () => {
9
+ await TestBed.configureTestingModule({
10
+ imports: [LottieLoaderComponent],
11
+ }).compileComponents();
12
+
13
+ fixture = TestBed.createComponent(LottieLoaderComponent);
14
+ component = fixture.componentInstance;
15
+ fixture.detectChanges();
16
+ });
17
+
18
+ describe('Inicialización del componente', () => {
19
+ it('should create', () => {
20
+ expect(component).toBeTruthy();
21
+ });
22
+
23
+ it('should initialize with default values', () => {
24
+ expect(component.visible).toBe(true);
25
+ expect(component.loadingAnimation).toBe('/assets/lottie-files/loading.json');
26
+ expect(component.title).toBe('Cargando...');
27
+ expect(component.message).toBe('Por favor, espere un momento');
28
+ });
29
+ });
30
+
31
+ describe('Propiedad visible', () => {
32
+ it('should accept true value', () => {
33
+ component.visible = true;
34
+ expect(component.visible).toBe(true);
35
+ });
36
+
37
+ it('should accept false value', () => {
38
+ component.visible = false;
39
+ expect(component.visible).toBe(false);
40
+ });
41
+ });
42
+
43
+ describe('Propiedad loadingAnimation', () => {
44
+ it('should accept custom animation path', () => {
45
+ component.loadingAnimation = '/assets/lottie-files/custom.json';
46
+ expect(component.loadingAnimation).toBe('/assets/lottie-files/custom.json');
47
+ });
48
+ });
49
+
50
+ describe('Propiedad title', () => {
51
+ it('should accept custom title', () => {
52
+ component.title = 'Custom Loading Title';
53
+ expect(component.title).toBe('Custom Loading Title');
54
+ });
55
+
56
+ it('should accept empty string', () => {
57
+ component.title = '';
58
+ expect(component.title).toBe('');
59
+ });
60
+ });
61
+
62
+ describe('Propiedad message', () => {
63
+ it('should accept custom message', () => {
64
+ component.message = 'Custom loading message';
65
+ expect(component.message).toBe('Custom loading message');
66
+ });
67
+
68
+ it('should accept empty string', () => {
69
+ component.message = '';
70
+ expect(component.message).toBe('');
71
+ });
72
+ });
73
+
74
+ describe('ngOnInit', () => {
75
+ it('should be called on initialization', () => {
76
+ const spy = jest.spyOn(component, 'ngOnInit');
77
+ component.ngOnInit();
78
+ expect(spy).toHaveBeenCalled();
79
+ });
80
+ });
81
+
82
+ describe('Combinaciones de propiedades', () => {
83
+ it('should work with all custom properties', () => {
84
+ component.visible = true;
85
+ component.loadingAnimation = '/custom/path.json';
86
+ component.title = 'Processing';
87
+ component.message = 'Please wait while we process your request';
88
+
89
+ fixture.detectChanges();
90
+
91
+ expect(component.visible).toBe(true);
92
+ expect(component.loadingAnimation).toBe('/custom/path.json');
93
+ expect(component.title).toBe('Processing');
94
+ expect(component.message).toBe('Please wait while we process your request');
95
+ });
96
+
97
+ it('should hide when visible is false', () => {
98
+ component.visible = false;
99
+ fixture.detectChanges();
100
+ expect(component.visible).toBe(false);
101
+ });
102
+ });
103
+ });
@@ -0,0 +1,20 @@
1
+ import { Component, Input, OnInit } from '@angular/core';
2
+ import { NgIf } from '@angular/common';
3
+
4
+ @Component({
5
+ selector: 'app-lottie-loader',
6
+ templateUrl: './lottie-loader.component.html',
7
+ styleUrls: ['./lottie-loader.component.scss'],
8
+ standalone: true,
9
+ imports: [NgIf]
10
+ })
11
+ export class LottieLoaderComponent implements OnInit {
12
+ @Input() visible: boolean = true;
13
+ @Input() loadingAnimation: string = '/assets/lottie-files/loading.json';
14
+ @Input() title: string = 'Cargando...';
15
+ @Input() message: string = 'Por favor, espere un momento';
16
+
17
+ constructor() {}
18
+
19
+ ngOnInit(): void {}
20
+ }