@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,22 @@
1
+ <div class="container-card-section">
2
+ <div>
3
+ <h5 *ngIf="type == 'important'" class="tittle-card-section">{{ title }}</h5>
4
+ <h6 *ngIf="type == 'medium'">{{ title }}</h6>
5
+ <div class="description-card-section Body-M-Regular">{{ description }}</div>
6
+ </div>
7
+ <div class="element-end">
8
+ <app-switch
9
+ [isChecked]="isChecked"
10
+ *ngIf="typeElement === 'switch'"
11
+ (onChange)="changeValue($event)"
12
+ ></app-switch>
13
+ <app-icon
14
+ (click)="clickIcon()"
15
+ *ngIf="typeElement === 'dropdown'"
16
+ name="Dropdown-Right"
17
+ width="32px"
18
+ height="32px"
19
+ color="Gray-Gray-500"
20
+ ></app-icon>
21
+ </div>
22
+ </div>
@@ -0,0 +1,14 @@
1
+ .container-card-section{
2
+ padding: var(--Size-6) var(--Size-5);
3
+ border: 1px solid var(--Gray-Gray-200);
4
+ border-radius: 8px;
5
+ display: flex;
6
+ justify-content: space-between;
7
+ align-items: center;
8
+ cursor: pointer;
9
+
10
+ app-icon{
11
+ cursor: pointer;
12
+ }
13
+
14
+ }
@@ -0,0 +1,333 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+ import { By } from '@angular/platform-browser';
3
+ import { DebugElement } from '@angular/core';
4
+ import { CardSectionComponent } from './card-section.component';
5
+ import { DropiSwitchComponent } from '@app/ui/dropi-switch/dropi-switch.component';
6
+ import { IconComponent } from '@app/ui/icon/icon.component';
7
+
8
+ describe('CardSectionComponent', () => {
9
+ let component: CardSectionComponent;
10
+ let fixture: ComponentFixture<CardSectionComponent>;
11
+ let debugElement: DebugElement;
12
+
13
+ beforeEach(async () => {
14
+ await TestBed.configureTestingModule({
15
+ imports: [CardSectionComponent, DropiSwitchComponent, IconComponent],
16
+ }).compileComponents();
17
+
18
+ fixture = TestBed.createComponent(CardSectionComponent);
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
32
+ expect(component.title).toBe('title');
33
+ expect(component.description).toBe('Description');
34
+ expect(component.typeElement).toBe('dropdown');
35
+ expect(component.type).toBe('important');
36
+ expect(component.isChecked).toBe(false);
37
+ });
38
+
39
+ it('should set default type to important if empty in ngOnInit', () => {
40
+ // Verifica que establece el tipo por defecto a important si está vacío
41
+ (component as any).type = '';
42
+ component.ngOnInit();
43
+ expect(component.type).toBe('important');
44
+ });
45
+
46
+ it('should set default type to important if only whitespace in ngOnInit', () => {
47
+ // Verifica que establece el tipo por defecto a important si solo tiene espacios
48
+ (component as any).type = ' ';
49
+ component.ngOnInit();
50
+ expect(component.type).toBe('important');
51
+ });
52
+
53
+ it('should maintain existing type if valid in ngOnInit', () => {
54
+ // Verifica que mantiene el tipo existente si es válido
55
+ component.type = 'medium';
56
+ component.ngOnInit();
57
+ expect(component.type).toBe('medium');
58
+ });
59
+ });
60
+
61
+ describe('Propiedades de entrada', () => {
62
+ it('should accept title input', () => {
63
+ // Verifica que acepta el input title
64
+ const testTitle = 'Test Title';
65
+ component.title = testTitle;
66
+ expect(component.title).toBe(testTitle);
67
+ });
68
+
69
+ it('should accept description input', () => {
70
+ // Verifica que acepta el input description
71
+ const testDescription = 'Test Description';
72
+ component.description = testDescription;
73
+ expect(component.description).toBe(testDescription);
74
+ });
75
+
76
+ it('should accept typeElement input', () => {
77
+ // Verifica que acepta el input typeElement
78
+ component.typeElement = 'switch';
79
+ expect(component.typeElement).toBe('switch');
80
+ });
81
+
82
+ it('should accept type input', () => {
83
+ // Verifica que acepta el input type
84
+ component.type = 'medium';
85
+ expect(component.type).toBe('medium');
86
+ });
87
+
88
+ it('should accept isChecked input', () => {
89
+ // Verifica que acepta el input isChecked
90
+ component.isChecked = true;
91
+ expect(component.isChecked).toBe(true);
92
+ });
93
+ });
94
+
95
+ describe('Tipos de elemento', () => {
96
+ it('should handle dropdown typeElement', () => {
97
+ // Verifica que maneja el typeElement dropdown
98
+ component.typeElement = 'dropdown';
99
+ expect(component.typeElement).toBe('dropdown');
100
+ });
101
+
102
+ it('should handle switch typeElement', () => {
103
+ // Verifica que maneja el typeElement switch
104
+ component.typeElement = 'switch';
105
+ expect(component.typeElement).toBe('switch');
106
+ });
107
+ });
108
+
109
+ describe('Tipos de tarjeta', () => {
110
+ it('should handle medium type', () => {
111
+ // Verifica que maneja el tipo medium
112
+ component.type = 'medium';
113
+ expect(component.type).toBe('medium');
114
+ });
115
+
116
+ it('should handle important type', () => {
117
+ // Verifica que maneja el tipo important
118
+ component.type = 'important';
119
+ expect(component.type).toBe('important');
120
+ });
121
+ });
122
+
123
+ describe('Funcionalidad de cambio de valor', () => {
124
+ it('should emit onChange event when changeValue is called', () => {
125
+ // Verifica que emite el evento onChange cuando se llama changeValue
126
+ jest.spyOn(component.onChange, 'emit');
127
+ const testValue = true;
128
+
129
+ component.changeValue(testValue);
130
+
131
+ expect(component.onChange.emit).toHaveBeenCalledWith(testValue);
132
+ });
133
+
134
+ it('should emit onChange with boolean true', () => {
135
+ // Verifica que emite onChange con boolean true
136
+ jest.spyOn(component.onChange, 'emit');
137
+
138
+ component.changeValue(true);
139
+
140
+ expect(component.onChange.emit).toHaveBeenCalledWith(true);
141
+ });
142
+
143
+ it('should emit onChange with boolean false', () => {
144
+ // Verifica que emite onChange con boolean false
145
+ jest.spyOn(component.onChange, 'emit');
146
+
147
+ component.changeValue(false);
148
+
149
+ expect(component.onChange.emit).toHaveBeenCalledWith(false);
150
+ });
151
+
152
+ it('should handle multiple value changes', () => {
153
+ // Verifica que maneja múltiples cambios de valor
154
+ jest.spyOn(component.onChange, 'emit');
155
+
156
+ component.changeValue(true);
157
+ component.changeValue(false);
158
+ component.changeValue(true);
159
+
160
+ expect(component.onChange.emit).toHaveBeenCalledTimes(3);
161
+ expect(component.onChange.emit).toHaveBeenNthCalledWith(1, true);
162
+ expect(component.onChange.emit).toHaveBeenNthCalledWith(2, false);
163
+ expect(component.onChange.emit).toHaveBeenNthCalledWith(3, true);
164
+ });
165
+ });
166
+
167
+ describe('Funcionalidad de clic en icono', () => {
168
+ it('should emit onClick event when clickIcon is called', () => {
169
+ // Verifica que emite el evento onClick cuando se llama clickIcon
170
+ jest.spyOn(component.onClick, 'emit');
171
+
172
+ component.clickIcon();
173
+
174
+ expect(component.onClick.emit).toHaveBeenCalled();
175
+ });
176
+
177
+ it('should emit onClick without parameters', () => {
178
+ // Verifica que emite onClick sin parámetros
179
+ jest.spyOn(component.onClick, 'emit');
180
+
181
+ component.clickIcon();
182
+
183
+ expect(component.onClick.emit).toHaveBeenCalledWith();
184
+ });
185
+
186
+ it('should handle multiple icon clicks', () => {
187
+ // Verifica que maneja múltiples clics en el icono
188
+ jest.spyOn(component.onClick, 'emit');
189
+
190
+ component.clickIcon();
191
+ component.clickIcon();
192
+ component.clickIcon();
193
+
194
+ expect(component.onClick.emit).toHaveBeenCalledTimes(3);
195
+ });
196
+ });
197
+
198
+ describe('Estado del checkbox', () => {
199
+ it('should maintain isChecked state when changed', () => {
200
+ // Verifica que mantiene el estado isChecked cuando cambia
201
+ component.isChecked = false;
202
+ expect(component.isChecked).toBe(false);
203
+
204
+ component.isChecked = true;
205
+ expect(component.isChecked).toBe(true);
206
+ });
207
+
208
+ it('should work with different boolean values', () => {
209
+ // Verifica que funciona con diferentes valores booleanos
210
+ const values = [true, false, true, false];
211
+
212
+ values.forEach((value) => {
213
+ component.isChecked = value;
214
+ expect(component.isChecked).toBe(value);
215
+ });
216
+ });
217
+ });
218
+
219
+ describe('Integración de eventos', () => {
220
+ it('should handle both onChange and onClick events independently', () => {
221
+ // Verifica que maneja ambos eventos onChange y onClick independientemente
222
+ jest.spyOn(component.onChange, 'emit');
223
+ jest.spyOn(component.onClick, 'emit');
224
+
225
+ component.changeValue(true);
226
+ component.clickIcon();
227
+
228
+ expect(component.onChange.emit).toHaveBeenCalledWith(true);
229
+ expect(component.onClick.emit).toHaveBeenCalled();
230
+ });
231
+
232
+ it('should emit events in correct order when called sequentially', () => {
233
+ // Verifica que emite eventos en el orden correcto cuando se llaman secuencialmente
234
+ const eventOrder: string[] = [];
235
+
236
+ component.onChange.subscribe(() => eventOrder.push('onChange'));
237
+ component.onClick.subscribe(() => eventOrder.push('onClick'));
238
+
239
+ component.changeValue(true);
240
+ component.clickIcon();
241
+ component.changeValue(false);
242
+
243
+ expect(eventOrder).toEqual(['onChange', 'onClick', 'onChange']);
244
+ });
245
+ });
246
+
247
+ describe('Validación de tipos', () => {
248
+ it('should handle empty string type correctly in ngOnInit', () => {
249
+ // Verifica que maneja correctamente el tipo de cadena vacía en ngOnInit
250
+ (component as any).type = '';
251
+ component.ngOnInit();
252
+ expect(component.type).toBe('important');
253
+ });
254
+
255
+ it('should handle null type correctly in ngOnInit', () => {
256
+ // Verifica que maneja correctamente el tipo null en ngOnInit
257
+ component.type = null as any;
258
+ component.ngOnInit();
259
+ expect(component.type).toBe('important');
260
+ });
261
+
262
+ it('should handle undefined type correctly in ngOnInit', () => {
263
+ // Verifica que maneja correctamente el tipo undefined en ngOnInit
264
+ component.type = undefined as any;
265
+ component.ngOnInit();
266
+ expect(component.type).toBe('important');
267
+ });
268
+ });
269
+
270
+ describe('Casos edge', () => {
271
+ it('should handle rapid event emissions', () => {
272
+ // Verifica que maneja emisiones rápidas de eventos
273
+ jest.spyOn(component.onChange, 'emit');
274
+ jest.spyOn(component.onClick, 'emit');
275
+
276
+ // Emisiones rápidas
277
+ for (let i = 0; i < 10; i++) {
278
+ component.changeValue(i % 2 === 0);
279
+ component.clickIcon();
280
+ }
281
+
282
+ expect(component.onChange.emit).toHaveBeenCalledTimes(10);
283
+ expect(component.onClick.emit).toHaveBeenCalledTimes(10);
284
+ });
285
+
286
+ it('should maintain component state through multiple operations', () => {
287
+ // Verifica que mantiene el estado del componente a través de múltiples operaciones
288
+ component.title = 'Test Title';
289
+ component.description = 'Test Description';
290
+ component.typeElement = 'switch';
291
+ component.type = 'medium';
292
+ component.isChecked = true;
293
+
294
+ // Realizar operaciones
295
+ component.ngOnInit();
296
+ component.changeValue(false);
297
+ component.clickIcon();
298
+
299
+ // Verificar que las propiedades se mantienen
300
+ expect(component.title).toBe('Test Title');
301
+ expect(component.description).toBe('Test Description');
302
+ expect(component.typeElement).toBe('switch');
303
+ expect(component.type).toBe('medium');
304
+ expect(component.isChecked).toBe(true);
305
+ });
306
+ });
307
+
308
+ describe('Configuración completa del componente', () => {
309
+ it('should work with all properties set to valid values', () => {
310
+ // Verifica que funciona con todas las propiedades establecidas a valores válidos
311
+ component.title = 'Complete Title';
312
+ component.description = 'Complete Description';
313
+ component.typeElement = 'switch';
314
+ component.type = 'medium';
315
+ component.isChecked = true;
316
+
317
+ jest.spyOn(component.onChange, 'emit');
318
+ jest.spyOn(component.onClick, 'emit');
319
+
320
+ component.ngOnInit();
321
+ component.changeValue(false);
322
+ component.clickIcon();
323
+
324
+ expect(component.title).toBe('Complete Title');
325
+ expect(component.description).toBe('Complete Description');
326
+ expect(component.typeElement).toBe('switch');
327
+ expect(component.type).toBe('medium');
328
+ expect(component.isChecked).toBe(true);
329
+ expect(component.onChange.emit).toHaveBeenCalledWith(false);
330
+ expect(component.onClick.emit).toHaveBeenCalled();
331
+ });
332
+ });
333
+ });
@@ -0,0 +1,141 @@
1
+ /**
2
+ * @fileoverview CardSection component stories for Storybook
3
+ * @description A configurable card component with dropdown or switch interaction modes
4
+ */
5
+ import { moduleMetadata, type Meta, type StoryObj } from '@storybook/angular';
6
+ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
7
+ import '@dotlottie/player-component';
8
+ import { CardSectionComponent } from './card-section.component';
9
+ import { action } from '@storybook/addon-actions';
10
+
11
+ const meta: Meta<CardSectionComponent> = {
12
+ title: 'UI Dropi/Card Section',
13
+ component: CardSectionComponent,
14
+ tags: ['autodocs'],
15
+ parameters: {
16
+ layout: 'centered',
17
+ docs: {
18
+ inlineStories: false,
19
+ description: {
20
+ component: `
21
+ # Card Section Component
22
+
23
+ A flexible card component that supports dropdown or switch interaction modes.
24
+
25
+ ## Key Features
26
+ - **Dropdown mode**: Expandable content area
27
+ - **Switch mode**: Toggle on/off state
28
+ - **Type variants**: 'medium' and 'important' styles
29
+ - **Customizable**: Title and description text
30
+
31
+ ## Use Cases
32
+ - Settings panels
33
+ - Feature toggles
34
+ - Collapsible sections
35
+ `,
36
+ },
37
+ },
38
+ },
39
+ decorators: [
40
+ moduleMetadata({
41
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
42
+ }),
43
+ (story) => ({
44
+ ...story(),
45
+ template: `<div style="width: 80vw">${story().template}</div>`,
46
+ }),
47
+ ],
48
+
49
+ argTypes: {
50
+ typeElement: {
51
+ control: 'select',
52
+ options: ['dropdown', 'switch'],
53
+ description: 'Type of interaction element to display',
54
+ },
55
+ type: {
56
+ control: 'select',
57
+ options: ['medium', 'important'],
58
+ description: 'Visual style variant of the card',
59
+ },
60
+ description: {
61
+ control: 'text',
62
+ description: 'Description text displayed in the card',
63
+ },
64
+ title: {
65
+ control: 'text',
66
+ description: 'Title text displayed in the card header',
67
+ },
68
+ isChecked: {
69
+ control: 'boolean',
70
+ description: 'Initial checked state (for switch mode)',
71
+ },
72
+ onChange: {
73
+ action: 'onChange',
74
+ description: 'Event emitted when the card state changes',
75
+ },
76
+ onClick: {
77
+ action: 'onClick',
78
+ description: 'Event emitted when the card is clicked',
79
+ },
80
+ },
81
+ };
82
+
83
+ export default meta;
84
+ type Story = StoryObj<CardSectionComponent>;
85
+
86
+ /**
87
+ * Dropdown mode - expandable content area
88
+ */
89
+ export const Dropdown: Story = {
90
+ args: {},
91
+ parameters: {
92
+ docs: {
93
+ description: {
94
+ story: 'Card with dropdown expansion for additional content.',
95
+ },
96
+ },
97
+ design: {
98
+ type: 'figma',
99
+ url: 'https://www.figma.com/design/ONiVQJJ2qrJ6tmJnpNrrKE/-WEB--components?node-id=964-859&m=dev',
100
+ },
101
+ },
102
+ };
103
+
104
+ /**
105
+ * Switch mode - toggle on/off
106
+ */
107
+ export const Switch: Story = {
108
+ args: {
109
+ typeElement: 'switch',
110
+ type: 'medium',
111
+ },
112
+ parameters: {
113
+ docs: {
114
+ description: {
115
+ story: 'Card with switch toggle for binary on/off states.',
116
+ },
117
+ },
118
+ design: {
119
+ type: 'figma',
120
+ url: 'https://www.figma.com/design/ONiVQJJ2qrJ6tmJnpNrrKE/-WEB--components?node-id=964-864&m=dev',
121
+ },
122
+ },
123
+ };
124
+
125
+ /**
126
+ * Switch mode with checked state
127
+ */
128
+ export const SwitchChecked: Story = {
129
+ args: {
130
+ typeElement: 'switch',
131
+ type: 'important',
132
+ isChecked: true,
133
+ },
134
+ parameters: {
135
+ docs: {
136
+ description: {
137
+ story: 'Card with switch in checked (active) state using important variant.',
138
+ },
139
+ },
140
+ },
141
+ };
@@ -0,0 +1,35 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
3
+ import { DropiSwitchComponent } from '@app/ui/dropi-switch/dropi-switch.component';
4
+ import { IconComponent } from '@app/ui/icon/icon.component';
5
+
6
+ @Component({
7
+ selector: 'app-card-section',
8
+ templateUrl: './card-section.component.html',
9
+ styleUrls: ['./card-section.component.scss'],
10
+ standalone: true,
11
+ imports: [DropiSwitchComponent, CommonModule, IconComponent],
12
+ })
13
+ export class CardSectionComponent implements OnInit {
14
+ @Input() title: string = 'title';
15
+ @Input() description: string = 'Description';
16
+ @Input() typeElement: 'dropdown' | 'switch' = 'dropdown';
17
+ @Output() onChange = new EventEmitter<boolean>();
18
+ @Output() onClick = new EventEmitter();
19
+ @Input() type: 'medium' | 'important' = 'important';
20
+ @Input() isChecked: boolean = false;
21
+
22
+ ngOnInit() {
23
+ if (!this.type || this.type.trim() === '') {
24
+ this.type = 'important';
25
+ }
26
+ }
27
+
28
+ changeValue(event) {
29
+ this.onChange.emit(event);
30
+ }
31
+
32
+ clickIcon() {
33
+ this.onClick.emit();
34
+ }
35
+ }
@@ -0,0 +1,38 @@
1
+ <div class="checkbox-selection-list">
2
+ <div class="filter-container" *ngIf="showFilter">
3
+ <span class="input-icon">
4
+ <i class="pi pi-search"></i>
5
+ <input
6
+ data-cy="checkbox-selection-search-input"
7
+ type="text"
8
+ class="search-input"
9
+ [formControl]="searchControl"
10
+ [placeholder]="filterPlaceholder"
11
+ />
12
+ </span>
13
+ <button *ngIf="searchControl.value.length > 0" (click)="clearSearchInput()">
14
+ <i class="pi pi-times"></i>
15
+ </button>
16
+ </div>
17
+
18
+ <div class="selection-list">
19
+ <div class="selection-item" *ngFor="let option of filteredOptions">
20
+ <div class="checkbox-item">
21
+ <app-dropi-checkbox
22
+ [checked]="option.checked"
23
+ (onChange)="toggleSelection($event, option)"
24
+ [attr.data-cy]="'checkbox-selection-' + option.id"
25
+ />
26
+ <img *ngIf="option.preIcon" [src]="option.preIcon" [alt]="option.label" />
27
+ <span>{{ option.label | translate}}</span>
28
+ </div>
29
+ </div>
30
+
31
+ <div *ngIf="showNotFound && (!filteredOptions || filteredOptions.length === 0)" class="empty-container">
32
+ <div class="empty" data-cy="checkbox-selection-empty">
33
+ <img src="\assets\utils\logo-dropi-img-loader.png" alt="Not-found" />
34
+ <span>{{ notFoundMessage }}</span>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ </div>