@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,53 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
3
+ import { DropiCheckboxComponent } from '../dropi-checkbox/dropi-checkbox.component';
4
+ import { DropiAvatarsComponent } from '../dropi-avatars/dropi-avatars.component';
5
+ import { CarrierImageUrl } from '@app/utilities/pipes/carrier-image-url.pipe';
6
+
7
+ @Component({
8
+ selector: 'app-dropi-dropdown',
9
+ templateUrl: './dropi-dropdown.component.html',
10
+ styleUrls: ['./dropi-dropdown.component.scss'],
11
+ standalone: true,
12
+ imports: [CommonModule, DropiCheckboxComponent, DropiAvatarsComponent, CarrierImageUrl],
13
+ })
14
+ export class DropiDropdownComponent {
15
+ // altura en px o en rem o en cualquier medida
16
+ @Input() height = '';
17
+
18
+ //array de objets que se envian al dropdown
19
+ @Input() options = [];
20
+
21
+ //valor iterable a mostrar del model
22
+ @Input() valueModel = 'name';
23
+
24
+ @Input() isInSelect: boolean = false;
25
+
26
+ //tipo de la estructura del dropdown
27
+ @Input() parameters: {
28
+ type: 'checkbox';
29
+ icon: string;
30
+ iconCurrier: boolean;
31
+ };
32
+
33
+ @Output() modelChange = new EventEmitter<string[]>();
34
+
35
+ constructor() {
36
+ this.parameters = {
37
+ type: 'checkbox',
38
+ icon: '',
39
+ iconCurrier: false,
40
+ };
41
+ }
42
+
43
+ toggleValue(checkValue: boolean, value: any, index: number) {
44
+ this.options[index].checked = checkValue;
45
+ const seletedValues = this.options.filter((option) => option.checked);
46
+ this.modelChange.emit(seletedValues);
47
+ }
48
+
49
+ resetChecks() {
50
+ this.options.forEach((option) => (option['checked'] = false));
51
+ this.modelChange.emit([]);
52
+ }
53
+ }
@@ -0,0 +1,23 @@
1
+ <button
2
+ class="dropi-favorite-button"
3
+ [ngClass]="{ 'is-favorite': isFavorite }"
4
+ ngbTooltip="{{ isFavorite ? 'Remover de favoritos' : 'Añadir a favoritos' }}"
5
+ (click)="toggle()"
6
+ (mouseenter)="onMouseEnter()"
7
+ (mouseleave)="onMouseLeave()"
8
+ >
9
+ <app-icon
10
+ *ngIf="!isFavorite && !isHovered"
11
+ name="Heart"
12
+ width="19px"
13
+ height="19px"
14
+ color="Gray-Gray-800"
15
+ ></app-icon>
16
+ <app-icon
17
+ *ngIf="isFavorite || isHovered"
18
+ name="Heart-solid"
19
+ width="19px"
20
+ height="19px"
21
+ color="Primary-Primary-500"
22
+ ></app-icon>
23
+ </button>
@@ -0,0 +1,21 @@
1
+ .dropi-favorite-button {
2
+ border-radius: 8px;
3
+ border: 1px solid var(--Gray-Gray-200);
4
+ background: var(--Neutral-White);
5
+ appearance: none;
6
+ width: 37px;
7
+ height: 37px;
8
+ display: flex;
9
+ flex-direction: column;
10
+ justify-content: center;
11
+ align-items: center;
12
+ transition: all 0.2s ease-in-out;
13
+ will-change: auto;
14
+ app-icon {
15
+ display: grid;
16
+ }
17
+ &:hover,
18
+ &.is-favorite {
19
+ background: var(--Gray-gray-50, #f5f6f8);
20
+ }
21
+ }
@@ -0,0 +1,240 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+ import { By } from '@angular/platform-browser';
3
+ import { DebugElement } from '@angular/core';
4
+ import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';
5
+ import { DropiFavoriteButtonComponent } from './dropi-favorite-button.component';
6
+ import { IconComponent } from '../icon/icon.component';
7
+
8
+ describe('DropiFavoriteButtonComponent', () => {
9
+ let component: DropiFavoriteButtonComponent;
10
+ let fixture: ComponentFixture<DropiFavoriteButtonComponent>;
11
+ let debugElement: DebugElement;
12
+
13
+ beforeEach(async () => {
14
+ await TestBed.configureTestingModule({
15
+ imports: [DropiFavoriteButtonComponent, IconComponent, NgbTooltipModule],
16
+ }).compileComponents();
17
+
18
+ fixture = TestBed.createComponent(DropiFavoriteButtonComponent);
19
+ component = fixture.componentInstance;
20
+ debugElement = fixture.debugElement;
21
+ fixture.detectChanges();
22
+ });
23
+
24
+ describe('Inicialización del componente', () => {
25
+ it('should create', () => {
26
+ // Verifica que el componente se crea correctamente
27
+ expect(component).toBeTruthy();
28
+ });
29
+
30
+ it('should initialize with default values', () => {
31
+ // Verifica los valores por defecto del botón favorito
32
+ expect(component.isFavorite).toBe(false);
33
+ expect(component.isHovered).toBe(false);
34
+ });
35
+
36
+ it('should accept isFavorite input', () => {
37
+ // Verifica que acepta el input isFavorite
38
+ component.isFavorite = true;
39
+ fixture.detectChanges();
40
+ expect(component.isFavorite).toBe(true);
41
+ });
42
+ });
43
+
44
+ describe('Funcionalidad de toggle', () => {
45
+ it('should toggle from false to true', () => {
46
+ // Verifica que alterna de false a true
47
+ component.isFavorite = false;
48
+ jest.spyOn(component.toggleFavorite, 'emit');
49
+
50
+ component.toggle();
51
+
52
+ expect(component.isFavorite).toBe(true);
53
+ expect(component.toggleFavorite.emit).toHaveBeenCalledWith(true);
54
+ });
55
+
56
+ it('should toggle from true to false', () => {
57
+ // Verifica que alterna de true a false
58
+ component.isFavorite = true;
59
+ jest.spyOn(component.toggleFavorite, 'emit');
60
+
61
+ component.toggle();
62
+
63
+ expect(component.isFavorite).toBe(false);
64
+ expect(component.toggleFavorite.emit).toHaveBeenCalledWith(false);
65
+ });
66
+
67
+ it('should emit toggleFavorite event with correct value', () => {
68
+ // Verifica que emite el evento toggleFavorite con el valor correcto
69
+ jest.spyOn(component.toggleFavorite, 'emit');
70
+ const initialState = component.isFavorite;
71
+
72
+ component.toggle();
73
+
74
+ expect(component.toggleFavorite.emit).toHaveBeenCalledWith(!initialState);
75
+ });
76
+
77
+ it('should handle multiple toggles correctly', () => {
78
+ // Verifica que maneja múltiples alternaciones correctamente
79
+ jest.spyOn(component.toggleFavorite, 'emit');
80
+ const initialState = component.isFavorite;
81
+
82
+ // Primera alternación
83
+ component.toggle();
84
+ expect(component.isFavorite).toBe(!initialState);
85
+
86
+ // Segunda alternación (debería volver al estado inicial)
87
+ component.toggle();
88
+ expect(component.isFavorite).toBe(initialState);
89
+
90
+ // Verificar que se emitió dos veces
91
+ expect(component.toggleFavorite.emit).toHaveBeenCalledTimes(2);
92
+ });
93
+ });
94
+
95
+ describe('Estados de hover', () => {
96
+ it('should set isHovered to true on mouse enter', () => {
97
+ // Verifica que establece isHovered a true al entrar el mouse
98
+ component.onMouseEnter();
99
+ expect(component.isHovered).toBe(true);
100
+ });
101
+
102
+ it('should set isHovered to false on mouse leave', () => {
103
+ // Verifica que establece isHovered a false al salir el mouse
104
+ component.isHovered = true;
105
+ component.onMouseLeave();
106
+ expect(component.isHovered).toBe(false);
107
+ });
108
+
109
+ it('should handle mouse enter and leave sequence', () => {
110
+ // Verifica que maneja correctamente la secuencia de entrar y salir con el mouse
111
+ expect(component.isHovered).toBe(false);
112
+
113
+ component.onMouseEnter();
114
+ expect(component.isHovered).toBe(true);
115
+
116
+ component.onMouseLeave();
117
+ expect(component.isHovered).toBe(false);
118
+ });
119
+ });
120
+
121
+ describe('Integración de estados', () => {
122
+ it('should maintain hover state independently of favorite state', () => {
123
+ // Verifica que mantiene el estado hover independiente del estado favorito
124
+ component.isFavorite = false;
125
+ component.onMouseEnter();
126
+
127
+ expect(component.isFavorite).toBe(false);
128
+ expect(component.isHovered).toBe(true);
129
+
130
+ component.toggle();
131
+
132
+ expect(component.isFavorite).toBe(true);
133
+ expect(component.isHovered).toBe(true);
134
+ });
135
+
136
+ it('should handle toggle while hovered', () => {
137
+ // Verifica que maneja el toggle mientras está en hover
138
+ jest.spyOn(component.toggleFavorite, 'emit');
139
+
140
+ component.onMouseEnter();
141
+ component.toggle();
142
+
143
+ expect(component.isHovered).toBe(true);
144
+ expect(component.isFavorite).toBe(true);
145
+ expect(component.toggleFavorite.emit).toHaveBeenCalledWith(true);
146
+ });
147
+ });
148
+
149
+ describe('Integración completa', () => {
150
+ it('should work with complete favorite button configuration', () => {
151
+ component.isFavorite = false;
152
+
153
+ const emitSpy = jest.spyOn(component.toggleFavorite, 'emit');
154
+
155
+ component.toggle();
156
+
157
+ expect(component.isFavorite).toBe(true);
158
+ expect(emitSpy).toHaveBeenCalledWith(true);
159
+
160
+ component.toggle();
161
+
162
+ expect(component.isFavorite).toBe(false);
163
+ expect(emitSpy).toHaveBeenCalledWith(false);
164
+ });
165
+
166
+ it('should handle rapid toggles correctly', () => {
167
+ const emitSpy = jest.spyOn(component.toggleFavorite, 'emit');
168
+
169
+ component.toggle();
170
+ component.toggle();
171
+ component.toggle();
172
+
173
+ expect(emitSpy).toHaveBeenCalledTimes(3);
174
+ // Verifica el último valor emitido
175
+ const lastCall = emitSpy.mock.calls[emitSpy.mock.calls.length - 1];
176
+ expect(lastCall[0]).toBe(true);
177
+ });
178
+ });
179
+
180
+ describe('Casos edge', () => {
181
+ it('should handle rapid mouse events', () => {
182
+ // Verifica que maneja eventos rápidos del mouse
183
+ component.onMouseEnter();
184
+ component.onMouseLeave();
185
+ component.onMouseEnter();
186
+ component.onMouseLeave();
187
+
188
+ expect(component.isHovered).toBe(false);
189
+ });
190
+
191
+ it('should handle rapid toggles', () => {
192
+ // Verifica que maneja alternaciones rápidas
193
+ jest.spyOn(component.toggleFavorite, 'emit');
194
+
195
+ component.toggle();
196
+ component.toggle();
197
+ component.toggle();
198
+
199
+ expect(component.toggleFavorite.emit).toHaveBeenCalledTimes(3);
200
+ expect(component.isFavorite).toBe(true); // Started false, toggled 3 times
201
+ });
202
+
203
+ it('should maintain state consistency', () => {
204
+ // Verifica que mantiene consistencia de estado
205
+ const initialFavoriteState = component.isFavorite;
206
+ const initialHoverState = component.isHovered;
207
+
208
+ // Realizar varias operaciones
209
+ component.onMouseEnter();
210
+ component.toggle();
211
+ component.onMouseLeave();
212
+ component.toggle();
213
+
214
+ // Verificar que los estados son válidos
215
+ expect(typeof component.isFavorite).toBe('boolean');
216
+ expect(typeof component.isHovered).toBe('boolean');
217
+ expect(component.isFavorite).toBe(initialFavoriteState); // Dos toggles = estado inicial
218
+ expect(component.isHovered).toBe(false); // Mouse leave = false
219
+ });
220
+ });
221
+
222
+ describe('Eventos de salida', () => {
223
+ it('should have toggleFavorite EventEmitter', () => {
224
+ // Verifica que tiene el EventEmitter toggleFavorite
225
+ expect(component.toggleFavorite).toBeDefined();
226
+ expect(typeof component.toggleFavorite.emit).toBe('function');
227
+ });
228
+
229
+ it('should emit boolean values only', () => {
230
+ // Verifica que solo emite valores booleanos
231
+ const emitSpy = jest.spyOn(component.toggleFavorite, 'emit');
232
+
233
+ component.toggle();
234
+
235
+ const lastCall = emitSpy.mock.calls[emitSpy.mock.calls.length - 1];
236
+ const emittedValue = lastCall[0];
237
+ expect(typeof emittedValue).toBe('boolean');
238
+ });
239
+ });
240
+ });
@@ -0,0 +1,31 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { IconComponent } from '../icon/icon.component';
4
+ import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';
5
+
6
+ @Component({
7
+ selector: 'dropi-favorite-button',
8
+ standalone: true,
9
+ imports: [CommonModule, IconComponent, NgbTooltipModule],
10
+ templateUrl: './dropi-favorite-button.component.html',
11
+ styleUrls: ['./dropi-favorite-button.component.scss'],
12
+ })
13
+ export class DropiFavoriteButtonComponent {
14
+ @Input() isFavorite: boolean = false;
15
+ @Output() toggleFavorite = new EventEmitter<boolean>();
16
+
17
+ isHovered: boolean = false;
18
+
19
+ toggle() {
20
+ this.isFavorite = !this.isFavorite;
21
+ this.toggleFavorite.emit(this.isFavorite);
22
+ }
23
+
24
+ onMouseEnter() {
25
+ this.isHovered = true;
26
+ }
27
+
28
+ onMouseLeave() {
29
+ this.isHovered = false;
30
+ }
31
+ }
@@ -0,0 +1,154 @@
1
+ <div class="file-card" [ngClass]="[fileItem.state, getFileTypeClass(fileItem.file)]">
2
+ <ng-container
3
+ *ngIf="fileItem.previewUrl && !fileItem.previewUrl.includes('.pdf'); else iconTemplate"
4
+ >
5
+ <div class="preview-wrapper">
6
+ <img
7
+ [ngClass]="fileItem.state"
8
+ class="preview"
9
+ [src]="fileItem.previewUrl || './assets/utils/template-no-image.png'"
10
+ alt="fileItem.previewUrl"
11
+ />
12
+
13
+ <ng-container *ngIf="fileItem.state === 'complete'">
14
+ <div class="overlay-icon">
15
+ <svg
16
+ xmlns="http://www.w3.org/2000/svg"
17
+ width="12"
18
+ height="12"
19
+ viewBox="0 0 12 12"
20
+ fill="none"
21
+ >
22
+ <g clip-path="url(#clip0_5064_216)">
23
+ <path
24
+ d="M11.1594 2.2155L4.24992 9.1245C4.20347 9.17114 4.14826 9.20815 4.08747 9.2334C4.02668 9.25865 3.9615 9.27165 3.89567 9.27165C3.82985 9.27165 3.76467 9.25865 3.70388 9.2334C3.64308 9.20815 3.58788 9.17114 3.54142 9.1245L0.869423 6.45C0.822969 6.40337 0.767762 6.36636 0.70697 6.34111C0.646179 6.31586 0.581 6.30286 0.515173 6.30286C0.449346 6.30286 0.384167 6.31586 0.323376 6.34111C0.262585 6.36636 0.207378 6.40337 0.160923 6.45C0.114285 6.49646 0.0772787 6.55167 0.0520278 6.61246C0.026777 6.67325 0.0137787 6.73843 0.0137787 6.80425C0.0137787 6.87008 0.026777 6.93526 0.0520278 6.99605C0.0772787 7.05684 0.114285 7.11205 0.160923 7.1585L2.83392 9.831C3.1159 10.1125 3.49802 10.2705 3.89642 10.2705C4.29482 10.2705 4.67695 10.1125 4.95892 9.831L11.8679 2.9235C11.9145 2.87706 11.9514 2.82188 11.9766 2.76114C12.0018 2.70039 12.0148 2.63527 12.0148 2.5695C12.0148 2.50374 12.0018 2.43862 11.9766 2.37787C11.9514 2.31713 11.9145 2.26195 11.8679 2.2155C11.8215 2.16887 11.7663 2.13186 11.7055 2.10661C11.6447 2.08136 11.5795 2.06836 11.5137 2.06836C11.4478 2.06836 11.3827 2.08136 11.3219 2.10661C11.2611 2.13186 11.2059 2.16887 11.1594 2.2155Z"
25
+ fill="#0ABB87"
26
+ />
27
+ </g>
28
+ <defs>
29
+ <clipPath id="clip0_5064_216">
30
+ <rect width="12" height="12" fill="white" />
31
+ </clipPath>
32
+ </defs>
33
+ </svg>
34
+ </div>
35
+ </ng-container>
36
+ </div>
37
+ </ng-container>
38
+
39
+ <!--iconos de documento-->
40
+ <ng-template #iconTemplate>
41
+ <div class="file-icon">
42
+ <ng-container>
43
+ <svg
44
+ *ngIf="viewType('pdf')"
45
+ class="icon-pdf"
46
+ width="34"
47
+ height="34"
48
+ viewBox="0 0 34 34"
49
+ fill="none"
50
+ xmlns="http://www.w3.org/2000/svg"
51
+ >
52
+ <path
53
+ d="M0 8C0 3.58172 3.58172 0 8 0H26C30.4183 0 34 3.58172 34 8V26C34 30.4183 30.4183 34 26 34H8C3.58172 34 0 30.4183 0 26V8Z"
54
+ fill="#FEF0F0"
55
+ />
56
+ <g clip-path="url(#clip0_3287_1674)">
57
+ <path
58
+ d="M24.1252 11.1167L21.2168 8.20833C20.1168 7.10833 18.6502 6.5 17.0918 6.5H13.3335C11.0335 6.5 9.16684 8.36667 9.16684 10.6667V22.3333C9.16684 24.6333 11.0335 26.5 13.3335 26.5H21.6668C23.9668 26.5 25.8335 24.6333 25.8335 22.3333V15.2417C25.8335 13.6833 25.2252 12.2167 24.1252 11.1167ZM22.9502 12.2917C23.2168 12.5583 23.4418 12.85 23.6252 13.1667H20.0085C19.5502 13.1667 19.1752 12.7917 19.1752 12.3333V8.71667C19.4918 8.9 19.7835 9.125 20.0502 9.39167L22.9585 12.3L22.9502 12.2917ZM24.1668 22.3333C24.1668 23.7083 23.0418 24.8333 21.6668 24.8333H13.3335C11.9585 24.8333 10.8335 23.7083 10.8335 22.3333V10.6667C10.8335 9.29167 11.9585 8.16667 13.3335 8.16667H17.0918C17.2252 8.16667 17.3668 8.16667 17.5002 8.18333V12.3333C17.5002 13.7083 18.6252 14.8333 20.0002 14.8333H24.1502C24.1668 14.9667 24.1668 15.1 24.1668 15.2417V22.3333ZM13.4085 17.3333H12.5002C12.0418 17.3333 11.6668 17.7083 11.6668 18.1667V21.8667C11.6668 22.1583 11.9002 22.3833 12.1835 22.3833C12.4668 22.3833 12.7002 22.15 12.7002 21.8667V20.85H13.4002C14.3835 20.85 15.1835 20.0583 15.1835 19.0917C15.1835 18.125 14.3835 17.3333 13.4002 17.3333H13.4085ZM13.4085 19.8083H12.7168V18.375H13.4168C13.8168 18.375 14.1585 18.7 14.1585 19.0917C14.1585 19.4833 13.8168 19.8083 13.4168 19.8083H13.4085ZM23.3502 17.8583C23.3502 18.15 23.1168 18.375 22.8335 18.375H21.4252V19.325H22.4585C22.7502 19.325 22.9752 19.5583 22.9752 19.8417C22.9752 20.125 22.7418 20.3583 22.4585 20.3583H21.4252V21.8583C21.4252 22.15 21.1918 22.375 20.9085 22.375C20.6252 22.375 20.3918 22.1417 20.3918 21.8583V17.85C20.3918 17.5583 20.6252 17.3333 20.9085 17.3333H22.8335C23.1252 17.3333 23.3502 17.5667 23.3502 17.85V17.8583ZM17.5752 17.3417H16.6668C16.2085 17.3417 15.8335 17.7167 15.8335 18.175V21.875C15.8335 22.1667 16.0668 22.3417 16.3502 22.3417C16.6335 22.3417 17.5668 22.3417 17.5668 22.3417C18.5502 22.3417 19.3502 21.55 19.3502 20.5833V19.1C19.3502 18.1333 18.5502 17.3417 17.5668 17.3417H17.5752ZM18.3168 20.5833C18.3168 20.975 17.9752 21.3 17.5752 21.3H16.8835V18.3833H17.5835C17.9835 18.3833 18.3252 18.7083 18.3252 19.1V20.5833H18.3168Z"
59
+ fill="#DE6061"
60
+ />
61
+ </g>
62
+ <defs>
63
+ <clipPath id="clip0_3287_1674">
64
+ <rect width="20" height="20" fill="white" transform="translate(7.5 6.5)" />
65
+ </clipPath>
66
+ </defs>
67
+ </svg>
68
+ <svg
69
+ *ngIf="viewType('default')"
70
+ class="icon-default"
71
+ width="34"
72
+ height="34"
73
+ viewBox="0 0 34 34"
74
+ fill="none"
75
+ xmlns="http://www.w3.org/2000/svg"
76
+ >
77
+ <path
78
+ d="M0 8C0 3.58172 3.58172 0 8 0H26C30.4183 0 34 3.58172 34 8V26C34 30.4183 30.4183 34 26 34H8C3.58172 34 0 30.4183 0 26V8Z"
79
+ fill="#EEF6FE"
80
+ />
81
+ <g clip-path="url(#clip0_3287_1708)">
82
+ <path
83
+ d="M21.1668 18.6667C21.1668 18.8877 21.079 19.0997 20.9227 19.2559C20.7664 19.4122 20.5545 19.5 20.3335 19.5H13.6668C13.4458 19.5 13.2338 19.4122 13.0775 19.2559C12.9213 19.0997 12.8335 18.8877 12.8335 18.6667C12.8335 18.4457 12.9213 18.2337 13.0775 18.0774C13.2338 17.9211 13.4458 17.8334 13.6668 17.8334H20.3335C20.5545 17.8334 20.7664 17.9211 20.9227 18.0774C21.079 18.2337 21.1668 18.4457 21.1668 18.6667ZM17.8335 21.1667H13.6668C13.4458 21.1667 13.2338 21.2545 13.0775 21.4108C12.9213 21.567 12.8335 21.779 12.8335 22C12.8335 22.221 12.9213 22.433 13.0775 22.5893C13.2338 22.7456 13.4458 22.8334 13.6668 22.8334H17.8335C18.0545 22.8334 18.2664 22.7456 18.4227 22.5893C18.579 22.433 18.6668 22.221 18.6668 22C18.6668 21.779 18.579 21.567 18.4227 21.4108C18.2664 21.2545 18.0545 21.1667 17.8335 21.1667ZM25.3335 15.7375V22.8334C25.3321 23.938 24.8927 24.9971 24.1116 25.7782C23.3305 26.5593 22.2715 26.9987 21.1668 27H12.8335C11.7288 26.9987 10.6698 26.5593 9.88864 25.7782C9.10753 24.9971 8.66812 23.938 8.66679 22.8334V11.1667C8.66812 10.062 9.10753 9.00298 9.88864 8.22187C10.6698 7.44075 11.7288 7.00134 12.8335 7.00002H16.596C17.3623 6.99805 18.1214 7.14801 18.8295 7.44124C19.5375 7.73446 20.1804 8.16513 20.721 8.70835L23.6243 11.6134C24.1678 12.1536 24.5988 12.7962 24.8921 13.5042C25.1855 14.2121 25.3355 14.9712 25.3335 15.7375ZM19.5426 9.88669C19.2804 9.63265 18.9859 9.41412 18.6668 9.23669V12.8334C18.6668 13.0544 18.7546 13.2663 18.9109 13.4226C19.0672 13.5789 19.2791 13.6667 19.5001 13.6667H23.0968C22.9193 13.3477 22.7004 13.0535 22.446 12.7917L19.5426 9.88669ZM23.6668 15.7375C23.6668 15.6 23.6401 15.4684 23.6276 15.3334H19.5001C18.8371 15.3334 18.2012 15.07 17.7324 14.6011C17.2635 14.1323 17.0001 13.4964 17.0001 12.8334V8.70585C16.8651 8.69335 16.7326 8.66669 16.596 8.66669H12.8335C12.1704 8.66669 11.5345 8.93008 11.0657 9.39892C10.5969 9.86776 10.3335 10.5036 10.3335 11.1667V22.8334C10.3335 23.4964 10.5969 24.1323 11.0657 24.6011C11.5345 25.07 12.1704 25.3334 12.8335 25.3334H21.1668C21.8298 25.3334 22.4657 25.07 22.9346 24.6011C23.4034 24.1323 23.6668 23.4964 23.6668 22.8334V15.7375Z"
84
+ fill="#4996DB"
85
+ />
86
+ </g>
87
+ <defs>
88
+ <clipPath id="clip0_3287_1708">
89
+ <rect width="20" height="20" fill="white" transform="translate(7 7)" />
90
+ </clipPath>
91
+ </defs>
92
+ </svg>
93
+ </ng-container>
94
+ </div>
95
+ </ng-template>
96
+ <div class="info-container" *ngIf="fileItem.state !== 'confirm-delete'">
97
+ <div class="file-name">
98
+ {{ fileItem?.file?.name ?? fileItem?.previewUrl?.split('/').pop() }}
99
+ </div>
100
+ <div class="progress-bar-container" *ngIf="fileItem.state === 'uploading'">
101
+ <div class="progress-bar" [style.width.%]="fileItem.progress"></div>
102
+ </div>
103
+ </div>
104
+
105
+ <!--Botones de eliminar y ver-->
106
+
107
+ <div
108
+ class="preview-image"
109
+ *ngIf="fileItem.state !== 'confirm-delete' "
110
+ (click)="openPreviewImage()"
111
+ >
112
+ <app-icon name="Eye" width="20px" height="20px" color="Gray-Gray-600" />
113
+ </div>
114
+ <!-- <div
115
+ class="preview-image"
116
+ *ngIf="fileItem.state !== 'confirm-delete' && fileItem.fileType !== 'image'"
117
+ (click)="downloadFile()"
118
+ >
119
+ <app-icon name="Download" width="20px" height="20px" color="Gray-Gray-600" />
120
+ </div> -->
121
+
122
+ <div (click)="onSendClick('delete')" *ngIf="fileItem.state !== 'confirm-delete' && !onlyView" class="delete">
123
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
124
+ <path
125
+ d="M16.25 4.44453H14.0972C13.936 3.66078 13.5096 2.95657 12.8897 2.45058C12.2699 1.94459 11.4946 1.66776 10.6944 1.66675H9.30554C8.5054 1.66776 7.73007 1.94459 7.11023 2.45058C6.49039 2.95657 6.06394 3.66078 5.90276 4.44453H3.74999C3.56581 4.44453 3.38917 4.51769 3.25894 4.64792C3.12871 4.77816 3.05554 4.95479 3.05554 5.13897C3.05554 5.32315 3.12871 5.49978 3.25894 5.63002C3.38917 5.76025 3.56581 5.83341 3.74999 5.83341H4.44443V14.8612C4.44553 15.7817 4.81171 16.6643 5.46264 17.3152C6.11357 17.9661 6.9961 18.3323 7.91665 18.3334H12.0833C13.0039 18.3323 13.8864 17.9661 14.5373 17.3152C15.1883 16.6643 15.5544 15.7817 15.5555 14.8612V5.83341H16.25C16.4342 5.83341 16.6108 5.76025 16.741 5.63002C16.8713 5.49978 16.9444 5.32315 16.9444 5.13897C16.9444 4.95479 16.8713 4.77816 16.741 4.64792C16.6108 4.51769 16.4342 4.44453 16.25 4.44453ZM9.30554 3.05564H10.6944C11.1252 3.05616 11.5452 3.18993 11.8969 3.43858C12.2487 3.68724 12.5149 4.03862 12.659 4.44453H7.34096C7.48511 4.03862 7.75131 3.68724 8.10303 3.43858C8.45476 3.18993 8.8748 3.05616 9.30554 3.05564ZM14.1667 14.8612C14.1667 15.4137 13.9472 15.9436 13.5565 16.3343C13.1658 16.725 12.6359 16.9445 12.0833 16.9445H7.91665C7.36412 16.9445 6.83421 16.725 6.44351 16.3343C6.05281 15.9436 5.83332 15.4137 5.83332 14.8612V5.83341H14.1667V14.8612Z"
126
+ fill="#DE6061"
127
+ />
128
+ <path
129
+ d="M8.61115 14.1663C8.79533 14.1663 8.97197 14.0931 9.1022 13.9629C9.23243 13.8327 9.3056 13.656 9.3056 13.4719V9.30521C9.3056 9.12103 9.23243 8.94439 9.1022 8.81416C8.97197 8.68393 8.79533 8.61076 8.61115 8.61076C8.42698 8.61076 8.25034 8.68393 8.12011 8.81416C7.98988 8.94439 7.91671 9.12103 7.91671 9.30521V13.4719C7.91671 13.656 7.98988 13.8327 8.12011 13.9629C8.25034 14.0931 8.42698 14.1663 8.61115 14.1663Z"
130
+ fill="#DE6061"
131
+ />
132
+ <path
133
+ d="M11.3888 14.1663C11.573 14.1663 11.7497 14.0931 11.8799 13.9629C12.0101 13.8327 12.0833 13.656 12.0833 13.4719V9.30521C12.0833 9.12103 12.0101 8.94439 11.8799 8.81416C11.7497 8.68393 11.573 8.61076 11.3888 8.61076C11.2047 8.61076 11.028 8.68393 10.8978 8.81416C10.7676 8.94439 10.6944 9.12103 10.6944 9.30521V13.4719C10.6944 13.656 10.7676 13.8327 10.8978 13.9629C11.028 14.0931 11.2047 14.1663 11.3888 14.1663Z"
134
+ fill="#DE6061"
135
+ />
136
+ </svg>
137
+ </div>
138
+
139
+ <!--mensaje de eliminar-->
140
+ <div class="delete-confirm" *ngIf="fileItem.state === 'confirm-delete'">
141
+ <span class="message">{{
142
+ (fileItem.previewUrl ? 'delete image' : 'delete file') | translate
143
+ }}</span>
144
+ <div class="actions">
145
+ <dropi-button size="small" text="Sí" (onClick)="onSendClick('confirm-delete')"></dropi-button>
146
+ <dropi-button
147
+ text="No"
148
+ size="small"
149
+ (onClick)="onSendClick('cancel-delete')"
150
+ severity="secondary"
151
+ ></dropi-button>
152
+ </div>
153
+ </div>
154
+ </div>
@@ -0,0 +1,118 @@
1
+ .file-card {
2
+ display: flex;
3
+ padding: var(--Size-4, 16px);
4
+ align-items: center;
5
+ gap: var(--Size-3, 12px);
6
+ align-self: stretch;
7
+ border-radius: var(--Border-2);
8
+ border: 1px solid var(--Gray-Gray-100);
9
+ background: var(--White, #FFF);
10
+
11
+ .preview-wrapper {
12
+ width: 34px;
13
+ height: 34px;
14
+ position: relative;
15
+ display: inline-block;
16
+ border-radius: var(--Border-2);
17
+ overflow: hidden;
18
+
19
+ .preview {
20
+ width: 100%;
21
+ height: 100%;
22
+ object-fit: cover;
23
+ flex-shrink: 0;
24
+
25
+ &.uploading {
26
+ filter: blur(2px);
27
+ }
28
+ }
29
+
30
+ .overlay-icon {
31
+ width: 16px;
32
+ height: 16px;
33
+ padding: 4px;
34
+ position: absolute;
35
+ top: 50%;
36
+ left: 50%;
37
+ transform: translate(-50%, -50%);
38
+ pointer-events: none;
39
+ display: flex;
40
+ justify-content: center;
41
+ align-items: center;
42
+ flex-shrink: 0;
43
+ border-radius: var(--Border-3, 12px);
44
+ background: var(--White, #fff);
45
+ }
46
+ }
47
+
48
+ .info-container {
49
+ display: flex;
50
+ flex-direction: column;
51
+ justify-content: center;
52
+ align-items: flex-start;
53
+ gap: var(--Size-2);
54
+ flex: 1 0 0;
55
+
56
+ .file-name {
57
+ overflow: hidden;
58
+ color: var(--Gray-Gray-600);
59
+ text-overflow: ellipsis;
60
+ font-size: 12px;
61
+ font-style: normal;
62
+ font-weight: 400;
63
+ line-height: 150%;
64
+ white-space: nowrap;
65
+ max-width: 300px;
66
+ }
67
+
68
+ .progress-bar-container {
69
+ width: 100%;
70
+ height: 4px;
71
+ background-color: #f0f0f0;
72
+ border-radius: 4px;
73
+ overflow: hidden;
74
+ }
75
+
76
+ .progress-bar {
77
+ height: 100%;
78
+ border-radius: 4.5px;
79
+ background: var(--Primary-Primary-500);
80
+ transition: width 0.3s ease;
81
+ }
82
+ }
83
+
84
+ .delete, .preview-image {
85
+ display: inline-block; /* importante para que funcione bien */
86
+ transition: transform 0.3s ease; /* suavidad en la animación */
87
+ border-radius: var(--Border-2);
88
+ &:hover {
89
+ cursor: pointer;
90
+ transform: scale(1.1);
91
+ }
92
+ }
93
+
94
+ .delete-confirm {
95
+ color: var(--Gray-Gray-600);
96
+ font-size: var(--font-size-xs);
97
+ font-style: normal;
98
+ font-weight: 500;
99
+ line-height: 150%;
100
+ display: flex;
101
+ justify-content: space-between;
102
+ align-items: center;
103
+ align-self: stretch;
104
+ flex: 1 0 0;
105
+
106
+ .actions {
107
+ display: flex;
108
+ align-items: flex-start;
109
+ gap: var(--Size-2, 8px);
110
+ }
111
+ }
112
+ }
113
+
114
+ @media (max-width: 600px) {
115
+ .file-card .info-container .file-name {
116
+ max-width: 100px;
117
+ }
118
+ }