carriera-intern 0.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 (597) hide show
  1. package/.cursor/rules/icons.mdc +7 -0
  2. package/.editorconfig +17 -0
  3. package/.vscode/extensions.json +4 -0
  4. package/.vscode/launch.json +20 -0
  5. package/.vscode/tasks.json +42 -0
  6. package/README.md +59 -0
  7. package/angular.json +94 -0
  8. package/carriera-intern@0.0.0 +0 -0
  9. package/package.json +61 -0
  10. package/projects/carriera-intern-components/.storybook/main.ts +12 -0
  11. package/projects/carriera-intern-components/.storybook/preview-head.html +13 -0
  12. package/projects/carriera-intern-components/.storybook/preview.ts +54 -0
  13. package/projects/carriera-intern-components/.storybook/tsconfig.doc.json +10 -0
  14. package/projects/carriera-intern-components/.storybook/tsconfig.json +11 -0
  15. package/projects/carriera-intern-components/.storybook/typings.d.ts +4 -0
  16. package/projects/carriera-intern-components/README.md +63 -0
  17. package/projects/carriera-intern-components/ng-package.json +14 -0
  18. package/projects/carriera-intern-components/package.json +14 -0
  19. package/projects/carriera-intern-components/public/assets/animations/animation-document-update.json +1 -0
  20. package/projects/carriera-intern-components/public/assets/animations/animation-image.json +1 -0
  21. package/projects/carriera-intern-components/public/assets/animations/animation-logo.json +1 -0
  22. package/projects/carriera-intern-components/public/assets/animations/animation-media.json +1 -0
  23. package/projects/carriera-intern-components/public/assets/cdl.png +0 -0
  24. package/projects/carriera-intern-components/public/assets/exampledoc.png +0 -0
  25. package/projects/carriera-intern-components/public/assets/examplelargeview.png +0 -0
  26. package/projects/carriera-intern-components/public/assets/icons/Thumb-active.svg +3 -0
  27. package/projects/carriera-intern-components/public/assets/icons/Thumb.svg +3 -0
  28. package/projects/carriera-intern-components/public/assets/icons/arrows/cai-arrow-primary-up.svg +3 -0
  29. package/projects/carriera-intern-components/public/assets/icons/arrows/cai-arrow-secondary-down.svg +3 -0
  30. package/projects/carriera-intern-components/public/assets/icons/arrows/cai-arrow-secondary-left.svg +3 -0
  31. package/projects/carriera-intern-components/public/assets/icons/arrows/cai-arrow-secondary-right.svg +3 -0
  32. package/projects/carriera-intern-components/public/assets/icons/banks/ic_bank_bbt.svg +5 -0
  33. package/projects/carriera-intern-components/public/assets/icons/banks/ic_bank_bmo_harris.svg +13 -0
  34. package/projects/carriera-intern-components/public/assets/icons/banks/ic_bank_capital_one.svg +11 -0
  35. package/projects/carriera-intern-components/public/assets/icons/banks/ic_bank_chase.svg +11 -0
  36. package/projects/carriera-intern-components/public/assets/icons/banks/ic_bank_chime.svg +10 -0
  37. package/projects/carriera-intern-components/public/assets/icons/banks/ic_bank_citi.svg +8 -0
  38. package/projects/carriera-intern-components/public/assets/icons/banks/ic_bank_fifth_third.svg +14 -0
  39. package/projects/carriera-intern-components/public/assets/icons/banks/ic_bank_green_dot.svg +17 -0
  40. package/projects/carriera-intern-components/public/assets/icons/banks/ic_bank_mb_financial.svg +5 -0
  41. package/projects/carriera-intern-components/public/assets/icons/banks/ic_bank_meta.svg +11 -0
  42. package/projects/carriera-intern-components/public/assets/icons/banks/ic_bank_navi_federal.svg +14 -0
  43. package/projects/carriera-intern-components/public/assets/icons/banks/ic_bank_of_america.svg +5 -0
  44. package/projects/carriera-intern-components/public/assets/icons/banks/ic_bank_pnc.svg +10 -0
  45. package/projects/carriera-intern-components/public/assets/icons/banks/ic_bank_regions.svg +14 -0
  46. package/projects/carriera-intern-components/public/assets/icons/banks/ic_bank_renasant.svg +14 -0
  47. package/projects/carriera-intern-components/public/assets/icons/banks/ic_bank_tcf.svg +11 -0
  48. package/projects/carriera-intern-components/public/assets/icons/banks/ic_bank_truist.svg +3 -0
  49. package/projects/carriera-intern-components/public/assets/icons/banks/ic_bank_us.svg +4 -0
  50. package/projects/carriera-intern-components/public/assets/icons/banks/ic_bank_wells_fargo.svg +3 -0
  51. package/projects/carriera-intern-components/public/assets/icons/cai-color.svg +3 -0
  52. package/projects/carriera-intern-components/public/assets/icons/cai-drop-zone-focus.svg +48 -0
  53. package/projects/carriera-intern-components/public/assets/icons/cai-edit.svg +4 -0
  54. package/projects/carriera-intern-components/public/assets/icons/cai-edit2.svg +3 -0
  55. package/projects/carriera-intern-components/public/assets/icons/cai-expand.svg +3 -0
  56. package/projects/carriera-intern-components/public/assets/icons/cai-gps.svg +3 -0
  57. package/projects/carriera-intern-components/public/assets/icons/cai-illustration-dark.svg +4 -0
  58. package/projects/carriera-intern-components/public/assets/icons/cai-illustration-drop-zone-cover.svg +34 -0
  59. package/projects/carriera-intern-components/public/assets/icons/cai-illustration-drop-zone-profile.svg +58 -0
  60. package/projects/carriera-intern-components/public/assets/icons/cai-illustration-drop-zone-video.svg +41 -0
  61. package/projects/carriera-intern-components/public/assets/icons/cai-illustration-drop-zone.svg +43 -0
  62. package/projects/carriera-intern-components/public/assets/icons/cai-illustration.svg +18 -0
  63. package/projects/carriera-intern-components/public/assets/icons/cai-loader.svg +3 -0
  64. package/projects/carriera-intern-components/public/assets/icons/cai-search.svg +3 -0
  65. package/projects/carriera-intern-components/public/assets/icons/cai-violation-hazmat.svg +3 -0
  66. package/projects/carriera-intern-components/public/assets/icons/fuel-contact/cai-contact.svg +3 -0
  67. package/projects/carriera-intern-components/public/assets/icons/fuel-contact/cai-count.svg +3 -0
  68. package/projects/carriera-intern-components/public/assets/icons/fuel-contact/cai-fuel-card.svg +3 -0
  69. package/projects/carriera-intern-components/public/assets/icons/fuel-contact/cai-people.svg +3 -0
  70. package/projects/carriera-intern-components/public/assets/icons/fuel-contact/cai-share.svg +3 -0
  71. package/projects/carriera-intern-components/public/assets/icons/fuel-contact/cai-user-2.svg +3 -0
  72. package/projects/carriera-intern-components/public/assets/icons/general/cai-address.svg +3 -0
  73. package/projects/carriera-intern-components/public/assets/icons/general/cai-checkmark.svg +3 -0
  74. package/projects/carriera-intern-components/public/assets/icons/general/cai-date.svg +3 -0
  75. package/projects/carriera-intern-components/public/assets/icons/general/cai-email.svg +3 -0
  76. package/projects/carriera-intern-components/public/assets/icons/general/cai-fax.svg +5 -0
  77. package/projects/carriera-intern-components/public/assets/icons/general/cai-label.svg +3 -0
  78. package/projects/carriera-intern-components/public/assets/icons/general/cai-money-additional.svg +3 -0
  79. package/projects/carriera-intern-components/public/assets/icons/general/cai-money.svg +3 -0
  80. package/projects/carriera-intern-components/public/assets/icons/general/cai-phone-extension.svg +3 -0
  81. package/projects/carriera-intern-components/public/assets/icons/general/cai-phone.svg +3 -0
  82. package/projects/carriera-intern-components/public/assets/icons/general/cai-sort-by.svg +3 -0
  83. package/projects/carriera-intern-components/public/assets/icons/general/cai-sort-descending.svg +4 -0
  84. package/projects/carriera-intern-components/public/assets/icons/general/cai-website.svg +3 -0
  85. package/projects/carriera-intern-components/public/assets/icons/hazardous/ic_corrosive_8.svg +6 -0
  86. package/projects/carriera-intern-components/public/assets/icons/hazardous/ic_dangerous_when_wet_4.svg +4 -0
  87. package/projects/carriera-intern-components/public/assets/icons/hazardous/ic_explosives_1_1.svg +6 -0
  88. package/projects/carriera-intern-components/public/assets/icons/hazardous/ic_explosives_1_2.svg +6 -0
  89. package/projects/carriera-intern-components/public/assets/icons/hazardous/ic_explosives_1_3.svg +6 -0
  90. package/projects/carriera-intern-components/public/assets/icons/hazardous/ic_explosives_1_4.svg +6 -0
  91. package/projects/carriera-intern-components/public/assets/icons/hazardous/ic_explosives_1_5.svg +6 -0
  92. package/projects/carriera-intern-components/public/assets/icons/hazardous/ic_explosives_1_6.svg +6 -0
  93. package/projects/carriera-intern-components/public/assets/icons/hazardous/ic_flammable_3.svg +4 -0
  94. package/projects/carriera-intern-components/public/assets/icons/hazardous/ic_flammable_gas_2.svg +4 -0
  95. package/projects/carriera-intern-components/public/assets/icons/hazardous/ic_flammable_solid_4.svg +5 -0
  96. package/projects/carriera-intern-components/public/assets/icons/hazardous/ic_inhalation_hazzard_2.svg +5 -0
  97. package/projects/carriera-intern-components/public/assets/icons/hazardous/ic_inhalation_hazzard_6.svg +5 -0
  98. package/projects/carriera-intern-components/public/assets/icons/hazardous/ic_organic_peroxide_5_2.svg +7 -0
  99. package/projects/carriera-intern-components/public/assets/icons/hazardous/ic_oxidizer_5_1.svg +6 -0
  100. package/projects/carriera-intern-components/public/assets/icons/hazardous/ic_oxygen_non_flam_gas_2.svg +6 -0
  101. package/projects/carriera-intern-components/public/assets/icons/hazardous/ic_radioactive_7.svg +5 -0
  102. package/projects/carriera-intern-components/public/assets/icons/hazardous/ic_spontaneously_combustible_4.svg +5 -0
  103. package/projects/carriera-intern-components/public/assets/icons/integration/cai-efs.svg +4 -0
  104. package/projects/carriera-intern-components/public/assets/icons/interaction/cai-cancel.svg +3 -0
  105. package/projects/carriera-intern-components/public/assets/icons/interaction/cai-copy.svg +3 -0
  106. package/projects/carriera-intern-components/public/assets/icons/interaction/cai-dislike.svg +3 -0
  107. package/projects/carriera-intern-components/public/assets/icons/interaction/cai-drag.svg +3 -0
  108. package/projects/carriera-intern-components/public/assets/icons/interaction/cai-favorite.svg +3 -0
  109. package/projects/carriera-intern-components/public/assets/icons/interaction/cai-like.svg +3 -0
  110. package/projects/carriera-intern-components/public/assets/icons/interaction/cai-minus.svg +3 -0
  111. package/projects/carriera-intern-components/public/assets/icons/interaction/cai-password-hidden.svg +3 -0
  112. package/projects/carriera-intern-components/public/assets/icons/interaction/cai-password-key.svg +3 -0
  113. package/projects/carriera-intern-components/public/assets/icons/interaction/cai-password-shown.svg +3 -0
  114. package/projects/carriera-intern-components/public/assets/icons/interaction/cai-plus.svg +3 -0
  115. package/projects/carriera-intern-components/public/assets/icons/interaction/cai_time.svg +3 -0
  116. package/projects/carriera-intern-components/public/assets/icons/interaction/cai_x.svg +4 -0
  117. package/projects/carriera-intern-components/public/assets/icons/load/cai-driver.svg +3 -0
  118. package/projects/carriera-intern-components/public/assets/icons/load/cai-load.svg +5 -0
  119. package/projects/carriera-intern-components/public/assets/icons/load/cai-ltl-single.svg +3 -0
  120. package/projects/carriera-intern-components/public/assets/icons/load/cai-parking.svg +3 -0
  121. package/projects/carriera-intern-components/public/assets/icons/load/cai-weight.svg +3 -0
  122. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_atro.svg +6 -0
  123. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_beall.svg +7 -0
  124. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_bedard.svg +8 -0
  125. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_butler.svg +7 -0
  126. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_de_lucio.svg +17 -0
  127. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_dorsey.svg +3 -0
  128. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_east.svg +3 -0
  129. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_fontaine.svg +3 -0
  130. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_fruehauf.svg +3 -0
  131. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_gallegos.svg +3 -0
  132. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_great_dane.svg +3 -0
  133. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_heil.svg +6 -0
  134. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_hudson.svg +3 -0
  135. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_hyndai.svg +3 -0
  136. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_kaufman.svg +3 -0
  137. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_mac.svg +3 -0
  138. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_manac.svg +3 -0
  139. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_polar.svg +3 -0
  140. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_ravens.svg +3 -0
  141. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_reitnouer.svg +12 -0
  142. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_strick.svg +3 -0
  143. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_timpte.svg +8 -0
  144. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_trail_king.svg +7 -0
  145. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_transcraft.svg +12 -0
  146. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_tremcar.svg +10 -0
  147. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_tytal.svg +3 -0
  148. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_utility.svg +3 -0
  149. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_vanguard.svg +3 -0
  150. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_vantage.svg +3 -0
  151. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_wabash.svg +3 -0
  152. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_walinga.svg +8 -0
  153. package/projects/carriera-intern-components/public/assets/icons/makes/trailers/ic_trailer_wilson.svg +3 -0
  154. package/projects/carriera-intern-components/public/assets/icons/makes/trucks/ic_truck_chevrolet.svg +3 -0
  155. package/projects/carriera-intern-components/public/assets/icons/makes/trucks/ic_truck_ford.svg +3 -0
  156. package/projects/carriera-intern-components/public/assets/icons/makes/trucks/ic_truck_freightliner.svg +3 -0
  157. package/projects/carriera-intern-components/public/assets/icons/makes/trucks/ic_truck_gmc.svg +3 -0
  158. package/projects/carriera-intern-components/public/assets/icons/makes/trucks/ic_truck_hino.svg +3 -0
  159. package/projects/carriera-intern-components/public/assets/icons/makes/trucks/ic_truck_international.svg +3 -0
  160. package/projects/carriera-intern-components/public/assets/icons/makes/trucks/ic_truck_isuzu.svg +3 -0
  161. package/projects/carriera-intern-components/public/assets/icons/makes/trucks/ic_truck_kenworth.svg +3 -0
  162. package/projects/carriera-intern-components/public/assets/icons/makes/trucks/ic_truck_mack.svg +3 -0
  163. package/projects/carriera-intern-components/public/assets/icons/makes/trucks/ic_truck_peterbilt.svg +3 -0
  164. package/projects/carriera-intern-components/public/assets/icons/makes/trucks/ic_truck_volvo.svg +3 -0
  165. package/projects/carriera-intern-components/public/assets/icons/makes/trucks/ic_truck_western_star.svg +3 -0
  166. package/projects/carriera-intern-components/public/assets/icons/menu/cai-delete.svg +4 -0
  167. package/projects/carriera-intern-components/public/assets/icons/menu/cai-download.svg +3 -0
  168. package/projects/carriera-intern-components/public/assets/icons/menu/cai-reset.svg +3 -0
  169. package/projects/carriera-intern-components/public/assets/icons/pm/cai-pm-base.svg +3 -0
  170. package/projects/carriera-intern-components/public/assets/icons/pm/trailer/cai-pm-general.svg +3 -0
  171. package/projects/carriera-intern-components/public/assets/icons/pm/trailer/cai-pm-pto-pump.svg +5 -0
  172. package/projects/carriera-intern-components/public/assets/icons/pm/trailer/cai-repair-reefer.svg +3 -0
  173. package/projects/carriera-intern-components/public/assets/icons/pm/truck/cai-pm-air-filter.svg +5 -0
  174. package/projects/carriera-intern-components/public/assets/icons/pm/truck/cai-pm-alignment.svg +5 -0
  175. package/projects/carriera-intern-components/public/assets/icons/pm/truck/cai-pm-battery.svg +3 -0
  176. package/projects/carriera-intern-components/public/assets/icons/pm/truck/cai-pm-belts.svg +5 -0
  177. package/projects/carriera-intern-components/public/assets/icons/pm/truck/cai-pm-brake-chamber.svg +3 -0
  178. package/projects/carriera-intern-components/public/assets/icons/pm/truck/cai-pm-engine-oil-filter.svg +4 -0
  179. package/projects/carriera-intern-components/public/assets/icons/pm/truck/cai-pm-engine-tune-up.svg +3 -0
  180. package/projects/carriera-intern-components/public/assets/icons/pm/truck/cai-pm-radiator.svg +3 -0
  181. package/projects/carriera-intern-components/public/assets/icons/pm/truck/cai-pm-transmission-fluid.svg +4 -0
  182. package/projects/carriera-intern-components/public/assets/icons/pm/truck/cai-pm-turbo.svg +3 -0
  183. package/projects/carriera-intern-components/public/assets/icons/states/ca/cai-ca-ab.svg +3 -0
  184. package/projects/carriera-intern-components/public/assets/icons/states/ca/cai-ca-bc.svg +35 -0
  185. package/projects/carriera-intern-components/public/assets/icons/states/ca/cai-ca-mb.svg +3 -0
  186. package/projects/carriera-intern-components/public/assets/icons/states/ca/cai-ca-nb.svg +7 -0
  187. package/projects/carriera-intern-components/public/assets/icons/states/ca/cai-ca-nl.svg +4 -0
  188. package/projects/carriera-intern-components/public/assets/icons/states/ca/cai-ca-ns.svg +6 -0
  189. package/projects/carriera-intern-components/public/assets/icons/states/ca/cai-ca-on.svg +7 -0
  190. package/projects/carriera-intern-components/public/assets/icons/states/ca/cai-ca-pe.svg +3 -0
  191. package/projects/carriera-intern-components/public/assets/icons/states/ca/cai-ca-qc.svg +4 -0
  192. package/projects/carriera-intern-components/public/assets/icons/states/ca/cai-ca-sk.svg +3 -0
  193. package/projects/carriera-intern-components/public/assets/icons/states/ca/cai-ca-yt.svg +3 -0
  194. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-ak.svg +14 -0
  195. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-al.svg +3 -0
  196. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-ar.svg +3 -0
  197. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-az.svg +3 -0
  198. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-ca.svg +3 -0
  199. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-co.svg +3 -0
  200. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-ct.svg +3 -0
  201. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-de.svg +3 -0
  202. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-fl.svg +3 -0
  203. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-ga.svg +3 -0
  204. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-hi.svg +10 -0
  205. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-ia.svg +3 -0
  206. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-id.svg +3 -0
  207. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-il.svg +3 -0
  208. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-in.svg +3 -0
  209. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-ks.svg +3 -0
  210. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-ky.svg +3 -0
  211. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-la.svg +4 -0
  212. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-ma.svg +7 -0
  213. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-md.svg +7 -0
  214. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-me.svg +9 -0
  215. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-mi.svg +11 -0
  216. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-mn.svg +4 -0
  217. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-mo.svg +3 -0
  218. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-ms.svg +3 -0
  219. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-mt.svg +3 -0
  220. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-nc.svg +3 -0
  221. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-nd.svg +3 -0
  222. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-ne.svg +3 -0
  223. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-nh.svg +3 -0
  224. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-nj.svg +5 -0
  225. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-nm.svg +3 -0
  226. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-nv.svg +3 -0
  227. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-ny.svg +4 -0
  228. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-oh.svg +4 -0
  229. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-ok.svg +3 -0
  230. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-or.svg +3 -0
  231. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-pa.svg +3 -0
  232. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-ri.svg +8 -0
  233. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-sc.svg +3 -0
  234. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-sd.svg +3 -0
  235. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-tn.svg +3 -0
  236. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-tx.svg +3 -0
  237. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-ut.svg +3 -0
  238. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-va.svg +4 -0
  239. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-vt.svg +7 -0
  240. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-wa.svg +15 -0
  241. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-wi.svg +4 -0
  242. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-wv.svg +3 -0
  243. package/projects/carriera-intern-components/public/assets/icons/states/us/cai-us-wy.svg +3 -0
  244. package/projects/carriera-intern-components/public/assets/icons/status/cai-status-warning-lite.svg +3 -0
  245. package/projects/carriera-intern-components/public/assets/icons/status/cai-status-warning.svg +3 -0
  246. package/projects/carriera-intern-components/public/assets/icons/trailers/ic_trailer_bottom-dump.svg +5 -0
  247. package/projects/carriera-intern-components/public/assets/icons/trailers/ic_trailer_carhauler-stinger.svg +5 -0
  248. package/projects/carriera-intern-components/public/assets/icons/trailers/ic_trailer_carhauler.svg +5 -0
  249. package/projects/carriera-intern-components/public/assets/icons/trailers/ic_trailer_chassis.svg +5 -0
  250. package/projects/carriera-intern-components/public/assets/icons/trailers/ic_trailer_conestoga.svg +13 -0
  251. package/projects/carriera-intern-components/public/assets/icons/trailers/ic_trailer_container.svg +6 -0
  252. package/projects/carriera-intern-components/public/assets/icons/trailers/ic_trailer_dryvan.svg +5 -0
  253. package/projects/carriera-intern-components/public/assets/icons/trailers/ic_trailer_end-dump.svg +5 -0
  254. package/projects/carriera-intern-components/public/assets/icons/trailers/ic_trailer_flatbed.svg +5 -0
  255. package/projects/carriera-intern-components/public/assets/icons/trailers/ic_trailer_hopper.svg +6 -0
  256. package/projects/carriera-intern-components/public/assets/icons/trailers/ic_trailer_low-boy.svg +6 -0
  257. package/projects/carriera-intern-components/public/assets/icons/trailers/ic_trailer_reefer.svg +5 -0
  258. package/projects/carriera-intern-components/public/assets/icons/trailers/ic_trailer_side-kit.svg +6 -0
  259. package/projects/carriera-intern-components/public/assets/icons/trailers/ic_trailer_step-deck.svg +7 -0
  260. package/projects/carriera-intern-components/public/assets/icons/trailers/ic_trailer_tanker-pneumatic.svg +5 -0
  261. package/projects/carriera-intern-components/public/assets/icons/trailers/ic_trailer_tanker.svg +5 -0
  262. package/projects/carriera-intern-components/public/assets/icons/trucks/ic_truck_box-truck.svg +7 -0
  263. package/projects/carriera-intern-components/public/assets/icons/trucks/ic_truck_car-hauler.svg +7 -0
  264. package/projects/carriera-intern-components/public/assets/icons/trucks/ic_truck_cargo-van.svg +5 -0
  265. package/projects/carriera-intern-components/public/assets/icons/trucks/ic_truck_cement.svg +8 -0
  266. package/projects/carriera-intern-components/public/assets/icons/trucks/ic_truck_dump.svg +8 -0
  267. package/projects/carriera-intern-components/public/assets/icons/trucks/ic_truck_garbage.svg +10 -0
  268. package/projects/carriera-intern-components/public/assets/icons/trucks/ic_truck_reefer.svg +6 -0
  269. package/projects/carriera-intern-components/public/assets/icons/trucks/ic_truck_semi-truck.svg +8 -0
  270. package/projects/carriera-intern-components/public/assets/icons/trucks/ic_truck_semi-wSleeper.svg +8 -0
  271. package/projects/carriera-intern-components/public/assets/icons/trucks/ic_truck_spotter.svg +6 -0
  272. package/projects/carriera-intern-components/public/assets/icons/trucks/ic_truck_tow-truck.svg +8 -0
  273. package/projects/carriera-intern-components/public/assets/invexample.png +0 -0
  274. package/projects/carriera-intern-components/public/assets/invoice.png +0 -0
  275. package/projects/carriera-intern-components/public/assets/json/icons.json +985 -0
  276. package/projects/carriera-intern-components/public/assets/truck.png +0 -0
  277. package/projects/carriera-intern-components/public/favicon.ico +0 -0
  278. package/projects/carriera-intern-components/src/Changelog.mdx +285 -0
  279. package/projects/carriera-intern-components/src/Icons.mdx +279 -0
  280. package/projects/carriera-intern-components/src/app/app.config.ts +26 -0
  281. package/projects/carriera-intern-components/src/app/components/avatar/avatar.component.html +28 -0
  282. package/projects/carriera-intern-components/src/app/components/avatar/avatar.component.scss +414 -0
  283. package/projects/carriera-intern-components/src/app/components/avatar/avatar.component.spec.ts +23 -0
  284. package/projects/carriera-intern-components/src/app/components/avatar/avatar.component.ts +66 -0
  285. package/projects/carriera-intern-components/src/app/components/avatar/avatar.stories.ts +787 -0
  286. package/projects/carriera-intern-components/src/app/components/avatar/models/avatar.model.ts +52 -0
  287. package/projects/carriera-intern-components/src/app/components/avatar/models/index.ts +1 -0
  288. package/projects/carriera-intern-components/src/app/components/avatar/pipes/avatar-classes.pipe.ts +98 -0
  289. package/projects/carriera-intern-components/src/app/components/avatar/pipes/index.ts +2 -0
  290. package/projects/carriera-intern-components/src/app/components/avatar/pipes/initials.pipe.ts +31 -0
  291. package/projects/carriera-intern-components/src/app/components/content-driven-co/content-driven-co.component.css +0 -0
  292. package/projects/carriera-intern-components/src/app/components/content-driven-co/content-driven-co.component.html +10 -0
  293. package/projects/carriera-intern-components/src/app/components/content-driven-co/content-driven-co.component.spec.ts +23 -0
  294. package/projects/carriera-intern-components/src/app/components/content-driven-co/content-driven-co.component.ts +25 -0
  295. package/projects/carriera-intern-components/src/app/components/content-driven-co/content-driven-co.stories.ts +65 -0
  296. package/projects/carriera-intern-components/src/app/components/copy/copy.component.html +66 -0
  297. package/projects/carriera-intern-components/src/app/components/copy/copy.component.scss +103 -0
  298. package/projects/carriera-intern-components/src/app/components/copy/copy.component.spec.ts +22 -0
  299. package/projects/carriera-intern-components/src/app/components/copy/copy.component.ts +57 -0
  300. package/projects/carriera-intern-components/src/app/components/copy/stories/copy.stories.ts +170 -0
  301. package/projects/carriera-intern-components/src/app/components/counter/counter.component.html +33 -0
  302. package/projects/carriera-intern-components/src/app/components/counter/counter.component.scss +197 -0
  303. package/projects/carriera-intern-components/src/app/components/counter/counter.component.spec.ts +22 -0
  304. package/projects/carriera-intern-components/src/app/components/counter/counter.component.ts +219 -0
  305. package/projects/carriera-intern-components/src/app/components/counter/counter.stories.ts +65 -0
  306. package/projects/carriera-intern-components/src/app/components/dispatch-dropdown/dispatch-dropdown.component.html +223 -0
  307. package/projects/carriera-intern-components/src/app/components/dispatch-dropdown/dispatch-dropdown.component.scss +792 -0
  308. package/projects/carriera-intern-components/src/app/components/dispatch-dropdown/dispatch-dropdown.component.spec.ts +23 -0
  309. package/projects/carriera-intern-components/src/app/components/dispatch-dropdown/dispatch-dropdown.component.ts +323 -0
  310. package/projects/carriera-intern-components/src/app/components/dispatch-dropdown/dispatch-dropdown.stories.ts +409 -0
  311. package/projects/carriera-intern-components/src/app/components/dispatch-dropdown/helpers/dispatch-dropdown.helper.ts +248 -0
  312. package/projects/carriera-intern-components/src/app/components/dispatch-dropdown/interfaces/dispatch-dropdown-config.interface.ts +10 -0
  313. package/projects/carriera-intern-components/src/app/components/dispatch-dropdown/interfaces/dispatch-dropdown-option.interface.ts +4 -0
  314. package/projects/carriera-intern-components/src/app/components/dispatch-dropdown/interfaces/index.ts +2 -0
  315. package/projects/carriera-intern-components/src/app/components/dispatch-dropdown/mock/parking-data.json +1550 -0
  316. package/projects/carriera-intern-components/src/app/components/dispatch-dropdown/pipes/dispatch-search-filter.pipe.ts +26 -0
  317. package/projects/carriera-intern-components/src/app/components/dispatch-location/dispatch-location.component.html +76 -0
  318. package/projects/carriera-intern-components/src/app/components/dispatch-location/dispatch-location.component.scss +141 -0
  319. package/projects/carriera-intern-components/src/app/components/dispatch-location/dispatch-location.component.spec.ts +22 -0
  320. package/projects/carriera-intern-components/src/app/components/dispatch-location/dispatch-location.component.ts +268 -0
  321. package/projects/carriera-intern-components/src/app/components/dispatch-location/dispatch-location.stories.ts +184 -0
  322. package/projects/carriera-intern-components/src/app/components/dispatch-location/interfaces/index.ts +1 -0
  323. package/projects/carriera-intern-components/src/app/components/dispatch-location/interfaces/last-status-data.interface.ts +6 -0
  324. package/projects/carriera-intern-components/src/app/components/dispatch-location/pipes/last-status-format.pipe.ts +35 -0
  325. package/projects/carriera-intern-components/src/app/components/document-preview/document-preview.component.html +229 -0
  326. package/projects/carriera-intern-components/src/app/components/document-preview/document-preview.component.scss +1115 -0
  327. package/projects/carriera-intern-components/src/app/components/document-preview/document-preview.component.spec.ts +23 -0
  328. package/projects/carriera-intern-components/src/app/components/document-preview/document-preview.component.ts +277 -0
  329. package/projects/carriera-intern-components/src/app/components/document-preview/document-preview.stories.ts +256 -0
  330. package/projects/carriera-intern-components/src/app/components/document-preview/interfaces/document-tag.interface.ts +4 -0
  331. package/projects/carriera-intern-components/src/app/components/document-preview/interfaces/index.ts +1 -0
  332. package/projects/carriera-intern-components/src/app/components/document-preview/utils/config/button-actions.config.ts +30 -0
  333. package/projects/carriera-intern-components/src/app/components/document-preview/utils/config/index.ts +1 -0
  334. package/projects/carriera-intern-components/src/app/components/drop-zone/drop-zone.component.html +376 -0
  335. package/projects/carriera-intern-components/src/app/components/drop-zone/drop-zone.component.scss +9 -0
  336. package/projects/carriera-intern-components/src/app/components/drop-zone/drop-zone.component.spec.ts +22 -0
  337. package/projects/carriera-intern-components/src/app/components/drop-zone/drop-zone.component.ts +1272 -0
  338. package/projects/carriera-intern-components/src/app/components/drop-zone/drop-zone.stories.ts +1253 -0
  339. package/projects/carriera-intern-components/src/app/components/drop-zone/enums/drop-zone-labels.enum.ts +0 -0
  340. package/projects/carriera-intern-components/src/app/components/drop-zone/enums/drop-zone-variant.enum.ts +7 -0
  341. package/projects/carriera-intern-components/src/app/components/drop-zone/enums/index.ts +1 -0
  342. package/projects/carriera-intern-components/src/app/components/drop-zone/models/app-file.model.ts +28 -0
  343. package/projects/carriera-intern-components/src/app/components/drop-zone/models/file.response.ts +10 -0
  344. package/projects/carriera-intern-components/src/app/components/drop-zone/models/index.ts +2 -0
  345. package/projects/carriera-intern-components/src/app/components/drop-zone/pipes/drag-mode-animation.pipe.ts +40 -0
  346. package/projects/carriera-intern-components/src/app/components/drop-zone/utils/helpers/drop-zone-documents.helper.ts +67 -0
  347. package/projects/carriera-intern-components/src/app/components/drop-zone/utils/helpers/index.ts +1 -0
  348. package/projects/carriera-intern-components/src/app/components/drop-zone/utils/styles/drop-zone-cropper.scss +202 -0
  349. package/projects/carriera-intern-components/src/app/components/drop-zone/utils/styles/drop-zone-documents.scss +166 -0
  350. package/projects/carriera-intern-components/src/app/components/drop-zone/utils/styles/drop-zone-drag-mode.scss +107 -0
  351. package/projects/carriera-intern-components/src/app/components/drop-zone/utils/styles/drop-zone-images.scss +106 -0
  352. package/projects/carriera-intern-components/src/app/components/drop-zone/utils/styles/drop-zone-layout.scss +208 -0
  353. package/projects/carriera-intern-components/src/app/components/drop-zone/utils/styles/drop-zone-states.scss +183 -0
  354. package/projects/carriera-intern-components/src/app/components/drop-zone/utils/styles/drop-zone-variations.scss +189 -0
  355. package/projects/carriera-intern-components/src/app/components/input/directives/helpers/index.ts +1 -0
  356. package/projects/carriera-intern-components/src/app/components/input/directives/helpers/mask.helper.ts +52 -0
  357. package/projects/carriera-intern-components/src/app/components/input/directives/mask.directive.spec.ts +13 -0
  358. package/projects/carriera-intern-components/src/app/components/input/directives/mask.directive.ts +274 -0
  359. package/projects/carriera-intern-components/src/app/components/input/directives/number-format.directive.spec.ts +13 -0
  360. package/projects/carriera-intern-components/src/app/components/input/directives/number-format.directive.ts +442 -0
  361. package/projects/carriera-intern-components/src/app/components/input/directives/password.directive.spec.ts +13 -0
  362. package/projects/carriera-intern-components/src/app/components/input/directives/password.directive.ts +282 -0
  363. package/projects/carriera-intern-components/src/app/components/input/input.component.html +2669 -0
  364. package/projects/carriera-intern-components/src/app/components/input/input.component.scss +3000 -0
  365. package/projects/carriera-intern-components/src/app/components/input/input.component.spec.ts +23 -0
  366. package/projects/carriera-intern-components/src/app/components/input/input.component.ts +1486 -0
  367. package/projects/carriera-intern-components/src/app/components/input/mock/banks.json +249 -0
  368. package/projects/carriera-intern-components/src/app/components/input/mock/basic.json +42 -0
  369. package/projects/carriera-intern-components/src/app/components/input/mock/brokers.json +544 -0
  370. package/projects/carriera-intern-components/src/app/components/input/mock/colors.json +95 -0
  371. package/projects/carriera-intern-components/src/app/components/input/mock/commodities.json +12 -0
  372. package/projects/carriera-intern-components/src/app/components/input/mock/contacts.json +117 -0
  373. package/projects/carriera-intern-components/src/app/components/input/mock/dispatchers.json +83 -0
  374. package/projects/carriera-intern-components/src/app/components/input/mock/dispatches.json +4188 -0
  375. package/projects/carriera-intern-components/src/app/components/input/mock/fuel-list-dropdown.json +968 -0
  376. package/projects/carriera-intern-components/src/app/components/input/mock/fuel-transaction.json +78 -0
  377. package/projects/carriera-intern-components/src/app/components/input/mock/fuelcard.json +472 -0
  378. package/projects/carriera-intern-components/src/app/components/input/mock/hazardous.json +166 -0
  379. package/projects/carriera-intern-components/src/app/components/input/mock/labelColors.json +81 -0
  380. package/projects/carriera-intern-components/src/app/components/input/mock/labels.json +169 -0
  381. package/projects/carriera-intern-components/src/app/components/input/mock/new-load-modal-res.json +1148 -0
  382. package/projects/carriera-intern-components/src/app/components/input/mock/noboard.json +1665 -0
  383. package/projects/carriera-intern-components/src/app/components/input/mock/owner.json +209 -0
  384. package/projects/carriera-intern-components/src/app/components/input/mock/pm.json +112 -0
  385. package/projects/carriera-intern-components/src/app/components/input/mock/shipper.json +1192 -0
  386. package/projects/carriera-intern-components/src/app/components/input/mock/split-driver.json +99 -0
  387. package/projects/carriera-intern-components/src/app/components/input/mock/split-trailer.json +79 -0
  388. package/projects/carriera-intern-components/src/app/components/input/mock/split-truck.json +49 -0
  389. package/projects/carriera-intern-components/src/app/components/input/mock/states.json +605 -0
  390. package/projects/carriera-intern-components/src/app/components/input/mock/toll.json +106 -0
  391. package/projects/carriera-intern-components/src/app/components/input/mock/trailermakes.json +196 -0
  392. package/projects/carriera-intern-components/src/app/components/input/mock/truck_trailer.json +184 -0
  393. package/projects/carriera-intern-components/src/app/components/input/mock/truckmakes.json +76 -0
  394. package/projects/carriera-intern-components/src/app/components/input/models/dropdown.model.ts +376 -0
  395. package/projects/carriera-intern-components/src/app/components/input/models/index.ts +2 -0
  396. package/projects/carriera-intern-components/src/app/components/input/models/input.model.ts +227 -0
  397. package/projects/carriera-intern-components/src/app/components/input/pipes/broker-progress.pipe.ts +36 -0
  398. package/projects/carriera-intern-components/src/app/components/input/pipes/clear-tooltip.pipe.ts +38 -0
  399. package/projects/carriera-intern-components/src/app/components/input/pipes/error-message.pipe.ts +54 -0
  400. package/projects/carriera-intern-components/src/app/components/input/pipes/highlight-search.pipe.ts +42 -0
  401. package/projects/carriera-intern-components/src/app/components/input/pipes/index.ts +6 -0
  402. package/projects/carriera-intern-components/src/app/components/input/pipes/input-class.pipe.ts +109 -0
  403. package/projects/carriera-intern-components/src/app/components/input/pipes/remap-pm-icons.pipe.ts +49 -0
  404. package/projects/carriera-intern-components/src/app/components/input/stories/Documentation.mdx +190 -0
  405. package/projects/carriera-intern-components/src/app/components/input/stories/dropdown-options.ts +80 -0
  406. package/projects/carriera-intern-components/src/app/components/input/stories/dropdown.stories.ts +376 -0
  407. package/projects/carriera-intern-components/src/app/components/input/stories/input-dropdown.stories.ts +405 -0
  408. package/projects/carriera-intern-components/src/app/components/input/stories/input-inverse.stories.ts +232 -0
  409. package/projects/carriera-intern-components/src/app/components/input/stories/input-load.stories.ts +150 -0
  410. package/projects/carriera-intern-components/src/app/components/input/stories/input-placeholder.stories.ts +225 -0
  411. package/projects/carriera-intern-components/src/app/components/input/stories/input-subcontent.stories.ts +264 -0
  412. package/projects/carriera-intern-components/src/app/components/input/stories/input-table.stories.ts +211 -0
  413. package/projects/carriera-intern-components/src/app/components/input/stories/input.stories.ts +1159 -0
  414. package/projects/carriera-intern-components/src/app/components/input/stories/modal.stories.ts +162 -0
  415. package/projects/carriera-intern-components/src/app/components/input/utilities/constants/cast.constants.ts +91 -0
  416. package/projects/carriera-intern-components/src/app/components/input/utilities/constants/index.ts +1 -0
  417. package/projects/carriera-intern-components/src/app/components/input/utilities/helpers/index.ts +2 -0
  418. package/projects/carriera-intern-components/src/app/components/input/utilities/helpers/input.helper.ts +985 -0
  419. package/projects/carriera-intern-components/src/app/components/input/utilities/helpers/keyboard-navigation.helper.ts +402 -0
  420. package/projects/carriera-intern-components/src/app/components/input/utilities/index.ts +2 -0
  421. package/projects/carriera-intern-components/src/app/components/input-address/enums/input-address-layers-string.enum.ts +4 -0
  422. package/projects/carriera-intern-components/src/app/components/input-address/enums/input-address-type-string.enum.ts +7 -0
  423. package/projects/carriera-intern-components/src/app/components/input-address/input-address.component.html +13 -0
  424. package/projects/carriera-intern-components/src/app/components/input-address/input-address.component.scss +0 -0
  425. package/projects/carriera-intern-components/src/app/components/input-address/input-address.component.spec.ts +22 -0
  426. package/projects/carriera-intern-components/src/app/components/input-address/input-address.component.ts +509 -0
  427. package/projects/carriera-intern-components/src/app/components/input-address/models/address-data.model.ts +22 -0
  428. package/projects/carriera-intern-components/src/app/components/input-address/models/address-list.model.ts +6 -0
  429. package/projects/carriera-intern-components/src/app/components/input-address/models/long-lat.model.ts +4 -0
  430. package/projects/carriera-intern-components/src/app/components/input-address/models/sent-address-data.model.ts +25 -0
  431. package/projects/carriera-intern-components/src/app/components/input-address/stories/address.stories.ts +181 -0
  432. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/cai-input-datetime-picker.component.html +180 -0
  433. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/cai-input-datetime-picker.component.scss +862 -0
  434. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/cai-input-datetime-picker.component.ts +1559 -0
  435. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/cai-input-datetime-picker.stories.ts +507 -0
  436. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/cai-custom-datetime-pickers.component.html +134 -0
  437. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/cai-custom-datetime-pickers.component.scss +0 -0
  438. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/cai-custom-datetime-pickers.component.spec.ts +24 -0
  439. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/cai-custom-datetime-pickers.component.ts +331 -0
  440. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/components/cai-custom-datetime-pickers-calendar-dates-main/cai-custom-datetime-pickers-calendar-dates-main.component.html +190 -0
  441. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/components/cai-custom-datetime-pickers-calendar-dates-main/cai-custom-datetime-pickers-calendar-dates-main.component.scss +0 -0
  442. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/components/cai-custom-datetime-pickers-calendar-dates-main/cai-custom-datetime-pickers-calendar-dates-main.component.spec.ts +26 -0
  443. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/components/cai-custom-datetime-pickers-calendar-dates-main/cai-custom-datetime-pickers-calendar-dates-main.component.ts +234 -0
  444. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/components/cai-custom-datetime-pickers-calendar-days/cai-custom-datetime-pickers-calendar-days.component.html +23 -0
  445. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/components/cai-custom-datetime-pickers-calendar-days/cai-custom-datetime-pickers-calendar-days.component.scss +0 -0
  446. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/components/cai-custom-datetime-pickers-calendar-days/cai-custom-datetime-pickers-calendar-days.component.spec.ts +26 -0
  447. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/components/cai-custom-datetime-pickers-calendar-days/cai-custom-datetime-pickers-calendar-days.component.ts +60 -0
  448. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/components/cai-custom-datetime-pickers-calendar-left/cai-custom-datetime-pickers-calendar-left.component.html +27 -0
  449. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/components/cai-custom-datetime-pickers-calendar-left/cai-custom-datetime-pickers-calendar-left.component.scss +0 -0
  450. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/components/cai-custom-datetime-pickers-calendar-left/cai-custom-datetime-pickers-calendar-left.component.spec.ts +26 -0
  451. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/components/cai-custom-datetime-pickers-calendar-left/cai-custom-datetime-pickers-calendar-left.component.ts +187 -0
  452. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/components/cai-custom-datetime-pickers-date-calendars/cai-custom-datetime-pickers-date-calendars.component.html +68 -0
  453. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/components/cai-custom-datetime-pickers-date-calendars/cai-custom-datetime-pickers-date-calendars.component.scss +0 -0
  454. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/components/cai-custom-datetime-pickers-date-calendars/cai-custom-datetime-pickers-date-calendars.component.spec.ts +26 -0
  455. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/components/cai-custom-datetime-pickers-date-calendars/cai-custom-datetime-pickers-date-calendars.component.ts +163 -0
  456. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/config/cai-input.config.ts +193 -0
  457. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/config/index.ts +1 -0
  458. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/enums/calendar-left-string.enum.ts +5 -0
  459. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/enums/calendar-list-preview-string.enum.ts +4 -0
  460. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/enums/calendar-main-string.enum.ts +5 -0
  461. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/enums/calendar-scroll-type-string.enum.ts +4 -0
  462. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/enums/calendar-string.enum.ts +6 -0
  463. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/enums/calendar-type-string.enum.ts +3 -0
  464. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/enums/config.enum.ts +7 -0
  465. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/models/scroll-change.model.ts +6 -0
  466. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/models/scroll-type.model.ts +8 -0
  467. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/pipes/calendar-months.pipe.ts +23 -0
  468. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/services/calendar-datetime-picker.service.ts +35 -0
  469. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/strategy/calendar-strategy.ts +120 -0
  470. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/components/cai-custom-datetime-pickers/utils/constants/custom-datetime-pickers.constants.ts +48 -0
  471. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/enums/input-config-name-string.enum.ts +7 -0
  472. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/interfaces/index.ts +1 -0
  473. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/interfaces/input-datetime.interface.ts +11 -0
  474. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/models/index.ts +5 -0
  475. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/models/label-color.model.ts +11 -0
  476. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/pipes/input-clear-class.pipe.ts +105 -0
  477. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/pipes/input-date-time-container-class.pipe.ts +66 -0
  478. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/pipes/input-dropdown-arrow-class.pipe.ts +68 -0
  479. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/pipes/input-placeholder-icon.class.pipe.ts +68 -0
  480. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/pipes/show-clear.pipe.ts +20 -0
  481. package/projects/carriera-intern-components/src/app/components/input-datetime-picker/scss/ca-input.colors.scss +287 -0
  482. package/projects/carriera-intern-components/src/app/components/list-contact-dropdown/list-contact-dropdown.component.html +194 -0
  483. package/projects/carriera-intern-components/src/app/components/list-contact-dropdown/list-contact-dropdown.component.scss +613 -0
  484. package/projects/carriera-intern-components/src/app/components/list-contact-dropdown/list-contact-dropdown.component.spec.ts +22 -0
  485. package/projects/carriera-intern-components/src/app/components/list-contact-dropdown/list-contact-dropdown.component.ts +208 -0
  486. package/projects/carriera-intern-components/src/app/components/list-contact-dropdown/list-contact-dropdown.stories.ts +52 -0
  487. package/projects/carriera-intern-components/src/app/components/list-contact-dropdown/mock/brokerContacts.json +74 -0
  488. package/projects/carriera-intern-components/src/app/components/list-contact-dropdown/models/contact.interface.ts +23 -0
  489. package/projects/carriera-intern-components/src/app/components/list-contact-dropdown/pipes/contact-count.pipe.ts +14 -0
  490. package/projects/carriera-intern-components/src/app/components/list-contact-dropdown/pipes/contacts-height.pipe.ts +34 -0
  491. package/projects/carriera-intern-components/src/app/components/list-contact-dropdown/pipes/departments-height.pipe.ts +57 -0
  492. package/projects/carriera-intern-components/src/app/components/list-contact-dropdown/pipes/map-contacts.pipe.ts +51 -0
  493. package/projects/carriera-intern-components/src/app/components/pm/mock/repair-pm.json +2743 -0
  494. package/projects/carriera-intern-components/src/app/components/pm/pm.component.html +82 -0
  495. package/projects/carriera-intern-components/src/app/components/pm/pm.component.scss +260 -0
  496. package/projects/carriera-intern-components/src/app/components/pm/pm.component.spec.ts +23 -0
  497. package/projects/carriera-intern-components/src/app/components/pm/pm.component.ts +207 -0
  498. package/projects/carriera-intern-components/src/app/components/pm/pm.stories.ts +104 -0
  499. package/projects/carriera-intern-components/src/app/components/rating_review/enums/filter-type.enum.ts +7 -0
  500. package/projects/carriera-intern-components/src/app/components/rating_review/enums/review-type.enum.ts +5 -0
  501. package/projects/carriera-intern-components/src/app/components/rating_review/pipes/date-formating.pipe.spec.ts +8 -0
  502. package/projects/carriera-intern-components/src/app/components/rating_review/pipes/date-formating.pipe.ts +42 -0
  503. package/projects/carriera-intern-components/src/app/components/rating_review/rating-review/rating-review/rating-review.component.html +57 -0
  504. package/projects/carriera-intern-components/src/app/components/rating_review/rating-review/rating-review/rating-review.component.scss +94 -0
  505. package/projects/carriera-intern-components/src/app/components/rating_review/rating-review/rating-review/rating-review.component.spec.ts +23 -0
  506. package/projects/carriera-intern-components/src/app/components/rating_review/rating-review/rating-review/rating-review.component.ts +105 -0
  507. package/projects/carriera-intern-components/src/app/components/rating_review/rating-review/rating-review/rating-review.stories.ts +451 -0
  508. package/projects/carriera-intern-components/src/app/components/rating_review/review-modal/review-modal.component.html +236 -0
  509. package/projects/carriera-intern-components/src/app/components/rating_review/review-modal/review-modal.component.scss +564 -0
  510. package/projects/carriera-intern-components/src/app/components/rating_review/review-modal/review-modal.component.ts +360 -0
  511. package/projects/carriera-intern-components/src/app/components/rating_review/single-review/single-review.component.html +321 -0
  512. package/projects/carriera-intern-components/src/app/components/rating_review/single-review/single-review.component.scss +887 -0
  513. package/projects/carriera-intern-components/src/app/components/rating_review/single-review/single-review.component.ts +159 -0
  514. package/projects/carriera-intern-components/src/app/components/selected-location-field/interfaces/index.ts +1 -0
  515. package/projects/carriera-intern-components/src/app/components/selected-location-field/interfaces/selected-business-field.interface.ts +11 -0
  516. package/projects/carriera-intern-components/src/app/components/selected-location-field/selected-business-field.component.html +100 -0
  517. package/projects/carriera-intern-components/src/app/components/selected-location-field/selected-business-field.component.scss +239 -0
  518. package/projects/carriera-intern-components/src/app/components/selected-location-field/selected-business-field.component.spec.ts +22 -0
  519. package/projects/carriera-intern-components/src/app/components/selected-location-field/selected-business-field.component.ts +28 -0
  520. package/projects/carriera-intern-components/src/app/components/selected-location-field/selected-business-field.stories.ts +132 -0
  521. package/projects/carriera-intern-components/src/app/components/signature/signature.component.html +63 -0
  522. package/projects/carriera-intern-components/src/app/components/signature/signature.component.scss +229 -0
  523. package/projects/carriera-intern-components/src/app/components/signature/signature.component.spec.ts +23 -0
  524. package/projects/carriera-intern-components/src/app/components/signature/signature.component.ts +102 -0
  525. package/projects/carriera-intern-components/src/app/components/signature/signature.stories.ts +32 -0
  526. package/projects/carriera-intern-components/src/app/components/sticky-scrollbar/enums/index.ts +1 -0
  527. package/projects/carriera-intern-components/src/app/components/sticky-scrollbar/enums/scroll-state.enum.ts +6 -0
  528. package/projects/carriera-intern-components/src/app/components/sticky-scrollbar/sticky-scrollbar.component.html +29 -0
  529. package/projects/carriera-intern-components/src/app/components/sticky-scrollbar/sticky-scrollbar.component.scss +106 -0
  530. package/projects/carriera-intern-components/src/app/components/sticky-scrollbar/sticky-scrollbar.component.spec.ts +23 -0
  531. package/projects/carriera-intern-components/src/app/components/sticky-scrollbar/sticky-scrollbar.component.ts +458 -0
  532. package/projects/carriera-intern-components/src/app/components/sticky-scrollbar/sticky-scrollbar.stories.ts +343 -0
  533. package/projects/carriera-intern-components/src/app/components/tab-option-dropdown/interfaces/index.ts +2 -0
  534. package/projects/carriera-intern-components/src/app/components/tab-option-dropdown/interfaces/tab-option-config.interface.ts +4 -0
  535. package/projects/carriera-intern-components/src/app/components/tab-option-dropdown/interfaces/tab-option.interface.ts +4 -0
  536. package/projects/carriera-intern-components/src/app/components/tab-option-dropdown/pipes/index.ts +1 -0
  537. package/projects/carriera-intern-components/src/app/components/tab-option-dropdown/pipes/tab-search-filter.pipe.ts +20 -0
  538. package/projects/carriera-intern-components/src/app/components/tab-option-dropdown/tab-option-dropdown.component.html +66 -0
  539. package/projects/carriera-intern-components/src/app/components/tab-option-dropdown/tab-option-dropdown.component.scss +441 -0
  540. package/projects/carriera-intern-components/src/app/components/tab-option-dropdown/tab-option-dropdown.component.spec.ts +22 -0
  541. package/projects/carriera-intern-components/src/app/components/tab-option-dropdown/tab-option-dropdown.component.ts +105 -0
  542. package/projects/carriera-intern-components/src/app/components/tab-option-dropdown/tab-option.stories.ts +93 -0
  543. package/projects/carriera-intern-components/src/app/components/text-area/interfaces/index.ts +1 -0
  544. package/projects/carriera-intern-components/src/app/components/text-area/interfaces/text-area.interface.ts +4 -0
  545. package/projects/carriera-intern-components/src/app/components/text-area/text-area.component.html +29 -0
  546. package/projects/carriera-intern-components/src/app/components/text-area/text-area.component.scss +294 -0
  547. package/projects/carriera-intern-components/src/app/components/text-area/text-area.component.spec.ts +23 -0
  548. package/projects/carriera-intern-components/src/app/components/text-area/text-area.component.ts +213 -0
  549. package/projects/carriera-intern-components/src/app/components/text-area/text-area.stories.ts +90 -0
  550. package/projects/carriera-intern-components/src/app/components/toolbar-dropdown/interfaces/index.ts +1 -0
  551. package/projects/carriera-intern-components/src/app/components/toolbar-dropdown/interfaces/interval-dropdown-option.interface.ts +10 -0
  552. package/projects/carriera-intern-components/src/app/components/toolbar-dropdown/interval-dropdown.component.html +98 -0
  553. package/projects/carriera-intern-components/src/app/components/toolbar-dropdown/interval-dropdown.component.scss +437 -0
  554. package/projects/carriera-intern-components/src/app/components/toolbar-dropdown/interval-dropdown.component.spec.ts +22 -0
  555. package/projects/carriera-intern-components/src/app/components/toolbar-dropdown/interval-dropdown.component.ts +160 -0
  556. package/projects/carriera-intern-components/src/app/components/toolbar-dropdown/interval-dropdown.stories.ts +77 -0
  557. package/projects/carriera-intern-components/src/app/components/toolbar-dropdown/pipes/dropdown-filter-input-config.pipe.ts +52 -0
  558. package/projects/carriera-intern-components/src/app/components/toolbar-dropdown/utils/helpers/interval-dropdown.helper.ts +193 -0
  559. package/projects/carriera-intern-components/src/app/directives/hover-svg-directives.ts +49 -0
  560. package/projects/carriera-intern-components/src/app/directives/index.ts +3 -0
  561. package/projects/carriera-intern-components/src/app/directives/infinite-scroll.directive.ts +64 -0
  562. package/projects/carriera-intern-components/src/app/directives/intersection-observer.directive.ts +50 -0
  563. package/projects/carriera-intern-components/src/app/enums/alignment.enum.ts +4 -0
  564. package/projects/carriera-intern-components/src/app/enums/general-actions.enum.ts +71 -0
  565. package/projects/carriera-intern-components/src/app/enums/index.ts +3 -0
  566. package/projects/carriera-intern-components/src/app/enums/string-placeholder.enum.ts +3 -0
  567. package/projects/carriera-intern-components/src/app/models/pm.model.ts +11 -0
  568. package/projects/carriera-intern-components/src/app/models/review.model.ts +29 -0
  569. package/projects/carriera-intern-components/src/app/models/truck.model.ts +5 -0
  570. package/projects/carriera-intern-components/src/app/pipes/bytes-to-human-readable.pipe.spec.ts +8 -0
  571. package/projects/carriera-intern-components/src/app/pipes/bytes-to-human-readable.pipe.ts +29 -0
  572. package/projects/carriera-intern-components/src/app/pipes/currency.pipe.spec.ts +8 -0
  573. package/projects/carriera-intern-components/src/app/pipes/currency.pipe.ts +61 -0
  574. package/projects/carriera-intern-components/src/app/pipes/number-format.pipe.spec.ts +8 -0
  575. package/projects/carriera-intern-components/src/app/pipes/number-format.pipe.ts +30 -0
  576. package/projects/carriera-intern-components/src/app/services/document.service.spec.ts +16 -0
  577. package/projects/carriera-intern-components/src/app/services/document.service.ts +168 -0
  578. package/projects/carriera-intern-components/src/app/utils/autofill-validators.ts +32 -0
  579. package/projects/carriera-intern-components/src/app/utils/constants/index.ts +1 -0
  580. package/projects/carriera-intern-components/src/app/utils/constants/input-character-sets.constants.ts +142 -0
  581. package/projects/carriera-intern-components/src/app/utils/index.ts +2 -0
  582. package/projects/carriera-intern-components/src/app/validators/custom-validators.ts +45 -0
  583. package/projects/carriera-intern-components/src/public-api.ts +31 -0
  584. package/projects/carriera-intern-components/src/styles/README.md +59 -0
  585. package/projects/carriera-intern-components/src/styles/_variables.scss +301 -0
  586. package/projects/carriera-intern-components/src/styles/cropper.scss +39 -0
  587. package/projects/carriera-intern-components/src/styles/custompickers.scss +827 -0
  588. package/projects/carriera-intern-components/src/styles/popover.scss +224 -0
  589. package/projects/carriera-intern-components/src/styles/review_variables.scss +45 -0
  590. package/projects/carriera-intern-components/src/styles/tooltip.scss +119 -0
  591. package/projects/carriera-intern-components/src/styles/utility/colors.scss +265 -0
  592. package/projects/carriera-intern-components/src/styles/utility/utilities.scss +17 -0
  593. package/projects/carriera-intern-components/src/styles.scss +43 -0
  594. package/projects/carriera-intern-components/tsconfig.lib.json +15 -0
  595. package/projects/carriera-intern-components/tsconfig.lib.prod.json +11 -0
  596. package/projects/carriera-intern-components/tsconfig.spec.json +15 -0
  597. package/tsconfig.json +33 -0
@@ -0,0 +1,2669 @@
1
+ <!-- #region Variables -->
2
+ @let valid =
3
+ ngControl?.valid &&
4
+ (ngControl?.touched || ngControl?.dirty) &&
5
+ !isAdding() &&
6
+ !isDisabled();
7
+ @let invalid =
8
+ ngControl?.invalid &&
9
+ (ngControl?.touched || ngControl?.dirty) &&
10
+ !isAdding() &&
11
+ !isDisabled();
12
+ @let subcontent =
13
+ config().subcontent ||
14
+ (config().dropdown === "subcontent" &&
15
+ selectedOption() &&
16
+ cast(selectedOption(), "dropdownOption")![config().optionLabel || "label"]);
17
+
18
+ @let name = config().name;
19
+ @let password = config().type === "password" || config().type === "account";
20
+
21
+ @let optionLabel = this.config().optionLabel || "label";
22
+ @let dropdownType = this.config().dropdown;
23
+
24
+ @let focusedOptionIndex = keyboardNavigationState().singleIndex;
25
+ @let groupedNavigationState = keyboardNavigationState().groupedNavigationState;
26
+
27
+ @let tooltipClass =
28
+ config().inverse
29
+ ? "tooltip input-tooltip tooltip-bg-white-700 tooltip-text-black-500"
30
+ : "tooltip input-tooltip";
31
+
32
+ <!-- #region Multiple selection -->
33
+ @if (config().dropdown === "multiple" && !!multipleSelectedOptions().length) {
34
+ <div
35
+ (pointerdown)="focus($event)"
36
+ (mouseenter)="toggleHovered(true)"
37
+ (mouseleave)="toggleHovered(false)"
38
+ class="multiple-container"
39
+ [class]="{
40
+ focused: focused(),
41
+ hovered: hovered(),
42
+ }"
43
+ >
44
+ <label class="multiple-label">{{ name }}</label>
45
+
46
+ @for (option of multipleSelectedOptions(); track $index) {
47
+ <div class="multiple-selected">
48
+ <p>{{ cast(option, "dropdownOption")![optionLabel || "label"] }}</p>
49
+ <button
50
+ type="button"
51
+ class=""
52
+ (pointerdown)="handleOption(option, $event)"
53
+ [tabIndex]="-1"
54
+ ngbTooltip="Clear"
55
+ [placement]="'top'"
56
+ [tooltipClass]="tooltipClass"
57
+ [autoClose]="true"
58
+ #closeTooltip="ngbTooltip"
59
+ [container]="'body'"
60
+ >
61
+ <svg-icon
62
+ name="cai-cancel"
63
+ class="multiple-remove-button multiple-remove-icon bg-icon"
64
+ ></svg-icon>
65
+ </button>
66
+ </div>
67
+ }
68
+ </div>
69
+ }
70
+ <!-- #endregion -->
71
+
72
+ @let hasFloatingError =
73
+ config().errorBehavior === "floating" ||
74
+ (!!config().inTable && config().placeholderBehavior !== "static");
75
+
76
+ <div
77
+ class="app-input-container"
78
+ [class]="
79
+ {
80
+ config: config(),
81
+ hideValidation: hideValidation(),
82
+ isPasswordVisible: visible(),
83
+ isInvalid: !!invalid,
84
+ isValid: !!valid,
85
+ isHovered: hovered(),
86
+ hasText: hasText(),
87
+ isAdding: isAdding(),
88
+ selectedOption: selectedOption(),
89
+ } | inputClass
90
+ "
91
+ ngbDropdown
92
+ [autoClose]="false"
93
+ #dropdown="ngbDropdown"
94
+ dropdownClass="cai-dropdown"
95
+ #containerRef
96
+ [ngbTooltip]="errorTooltip"
97
+ [disableTooltip]="!hasFloatingError"
98
+ [container]="'body'"
99
+ [placement]="['bottom']"
100
+ tooltipClass="tooltip tooltip-bg-red-500 input-tooltip "
101
+ (pointerdown)="focus($event)"
102
+ (mouseenter)="dropdownType === 'multiple' && toggleHovered(true)"
103
+ (mouseleave)="dropdownType === 'multiple' && toggleHovered(false)"
104
+ >
105
+ <!--
106
+ [popperOptions]="dropdownPopperOptions"
107
+ -->
108
+ @if (config().icon && !password && !config().withButtons) {
109
+ <div
110
+ class="icon-container"
111
+ (pointerdown)="focus($event)"
112
+ [class]="{
113
+ 'colored-icon': config().iconColor,
114
+ }"
115
+ [style.--icon-color]="config().iconColor || ''"
116
+ >
117
+ <svg-icon class="icon" [name]="config().icon || ''"></svg-icon>
118
+ @if (!config().noSeparator) {
119
+ <div class="separator"></div>
120
+ }
121
+ </div>
122
+ }
123
+ @if (password) {
124
+ <div class="icon-container" (pointerdown)="toggleVisibility($event)">
125
+ <div
126
+ class="password-icons"
127
+ [ngbTooltip]="passwordTooltip"
128
+ [container]="'body'"
129
+ [tooltipClass]="tooltipClass"
130
+ [autoClose]="true"
131
+ [placement]="'top'"
132
+ [openDelay]="600"
133
+ >
134
+ <svg-icon
135
+ class="icon password-key hover-icon"
136
+ name="cai-password-key"
137
+ ></svg-icon>
138
+ <svg-icon
139
+ class="icon password-shown hover-icon"
140
+ name="cai-password-shown"
141
+ ></svg-icon>
142
+ <svg-icon
143
+ class="icon password-hidden hover-icon"
144
+ name="cai-password-hidden"
145
+ ></svg-icon>
146
+ </div>
147
+ <div class="separator"></div>
148
+ </div>
149
+ }
150
+
151
+ <input
152
+ class="app-input"
153
+ [tabindex]="isDisabled() ? '-1' : '0'"
154
+ [type]="
155
+ password && !config().reveal ? (visible() ? 'text' : 'password') : 'text'
156
+ "
157
+ [required]="config().required"
158
+ [disabled]="isDisabled()"
159
+ (input)="onInput($event)"
160
+ (blur)="dispatchOnBlur()"
161
+ [id]="id()"
162
+ [attr.aria-label]="config().label"
163
+ [attr.name]="
164
+ config().autocomplete ? config().autocomplete : randomAutocomplete()
165
+ "
166
+ [placeholder]="config()?.placeholder || ''"
167
+ [autocomplete]="
168
+ config().autocomplete ? config().autocomplete : randomAutocomplete()
169
+ "
170
+ #inputRef
171
+ [appPassword]="password"
172
+ [appMask]="config().mask || ''"
173
+ [reveal]="config().reveal || 0"
174
+ [account]="config().type === 'account'"
175
+ [visible]="visible()"
176
+ [appNumberFormat]="config().type === 'number'"
177
+ [isNumberFormattingDisabled]="config().isNumberFormattingDisabled || false"
178
+ [disableDecimals]="config().disableDecimals || false"
179
+ [prefix]="config().prefix || ''"
180
+ [max]="config().max"
181
+ (keydown)="handleKeydown($event)"
182
+ (focus)="onFocus($event)"
183
+ />
184
+ @if (
185
+ !(dropdownType === "multiple" && !!multipleSelectedOptions().length) &&
186
+ config().placeholderBehavior !== "hidden"
187
+ ) {
188
+ <label
189
+ class="app-input-label"
190
+ [class.placeholder-color]="this.config().placeholderColor"
191
+ [style.--placeholder-color]="this.config().placeholderColor || ''"
192
+ (click)="focus($event)"
193
+ >
194
+ <!-- Truck Trailer Driver Dropdown label -->
195
+ @if (dropdownType === "dispatch" || dropdownType === "ftl-dispatch") {
196
+ <p class="truck-item app-input-name">Truck</p>
197
+ <p class="trailer-item">Trailer</p>
198
+ <p>Driver</p>
199
+ <p class="sub-label">Rate</p>
200
+ }
201
+ <!-- Split Load -->
202
+ @else if (dropdownType === "split-driver") {
203
+ <p class="app-input-name">{{ name }}</p>
204
+ <p class="sub-label">Rate</p>
205
+ } @else if (
206
+ dropdownType === "split-truck" || dropdownType === "split-trailer"
207
+ ) {
208
+ <p class="app-input-name">{{ name }}</p>
209
+ <p class="sub-label">Location</p>
210
+ }
211
+ <!-- Dropdown variants -->
212
+ @else if (dropdownType === "broker") {
213
+ <p class="app-input-name">{{ name }}</p>
214
+ <p class="sub-label">Credit</p>
215
+ } @else if (dropdownType === "contact") {
216
+ <p class="app-input-name">{{ name }}</p>
217
+ <p class="sub-label">Phone</p>
218
+ } @else if (dropdownType === "shipper") {
219
+ <p class="app-input-name">{{ name }}</p>
220
+ <p class="sub-label">Address</p>
221
+ } @else if (dropdownType === "owner") {
222
+ <p class="owner-ein app-input-name">EIN</p>
223
+ <p class="app-input-name">Company Name</p>
224
+ } @else if (dropdownType === "fuelcard") {
225
+ <p class="fuelcard-number app-input-name">Card No.</p>
226
+ <p class="fuelcard-brand app-input-name">Provider</p>
227
+ <p class="app-input-name">Nickname</p>
228
+ }
229
+ <!-- Default Dropdown label -->
230
+ @else {
231
+ <span class="app-input-name">{{ name }}</span>
232
+ }
233
+ </label>
234
+ }
235
+ @if (config().type === "number" && config().withButtons) {
236
+ <div class="number-container">
237
+ <div class="number-buttons">
238
+ <div class="separator"></div>
239
+ <div
240
+ class="plus-button-container"
241
+ ngbTooltip="Add"
242
+ [tooltipClass]="tooltipClass"
243
+ [container]="'body'"
244
+ [autoClose]="true"
245
+ [openDelay]="600"
246
+ [placement]="'top'"
247
+ (pointerdown)="increment($event)"
248
+ >
249
+ <svg-icon name="cai-plus" class="bg-icon plus-icon"></svg-icon>
250
+ </div>
251
+ <div
252
+ class="minus-button-container"
253
+ ngbTooltip="Remove"
254
+ [placement]="'top'"
255
+ [container]="'body'"
256
+ [tooltipClass]="tooltipClass"
257
+ [autoClose]="true"
258
+ [openDelay]="600"
259
+ (pointerdown)="decrement($event)"
260
+ >
261
+ <svg-icon name="cai-minus" class="bg-icon minus-icon"></svg-icon>
262
+ </div>
263
+ </div>
264
+ </div>
265
+ }
266
+ @if (!config().inTable) {
267
+ @if (!dropdownType) {
268
+ <svg-icon
269
+ name="cai-checkmark"
270
+ class="app-input-icon positive-icon"
271
+ ></svg-icon>
272
+ <svg-icon
273
+ name="cai-status-warning"
274
+ class="app-input-icon warning-icon"
275
+ ></svg-icon>
276
+ }
277
+ }
278
+
279
+ @if (
280
+ invalid &&
281
+ config().errorBehavior !== "hidden" &&
282
+ (ngControl?.errors | errorMessage: config().customErrors)[0] &&
283
+ !(config().inTable && config().placeholderBehavior !== "static")
284
+ ) {
285
+ <div class="app-input-error">
286
+ {{ (ngControl?.errors | errorMessage: config().customErrors)[0] }}
287
+ </div>
288
+ }
289
+
290
+ <!-- Accept button -->
291
+ @if ((config().add && isAdding()) || config().isEdit) {
292
+ <button
293
+ type="button"
294
+ class="app-input-icon button-icon accept-button"
295
+ (pointerdown)="addOption()"
296
+ [tabIndex]="-1"
297
+ ngbTooltip="Confirm"
298
+ [openDelay]="600"
299
+ [placement]="'top'"
300
+ [tooltipClass]="tooltipClass"
301
+ [container]="'body'"
302
+ [autoClose]="true"
303
+ >
304
+ <svg-icon class="bg-icon" name="cai-checkmark"></svg-icon>
305
+ </button>
306
+ }
307
+
308
+ <!-- Cancel button -->
309
+ <button
310
+ type="button"
311
+ class="app-input-icon button-icon cancel-button"
312
+ (pointerdown)="reset($event)"
313
+ (mouseenter)="onClearHover(true)"
314
+ (mouseleave)="onClearHover(false)"
315
+ [tabIndex]="-1"
316
+ ngbTooltip="{{
317
+ hasText()
318
+ | clearTooltip
319
+ : isAdding()
320
+ : config().isEdit || false
321
+ : config().placeholderBehavior || 'dynamic'
322
+ : dropdownType === 'multiple'
323
+ : config().hasResetButton
324
+ : canTooltipBeVisible()
325
+ }}"
326
+ [openDelay]="600"
327
+ [tooltipClass]="tooltipClass"
328
+ [placement]="'top'"
329
+ [container]="'body'"
330
+ [autoClose]="true"
331
+ #closeTooltip="ngbTooltip"
332
+ >
333
+ @let iconName =
334
+ config().hasResetButton
335
+ ? "cai-reset"
336
+ : config().removable
337
+ ? "cai-delete"
338
+ : "cai-cancel";
339
+ <svg-icon class="bg-icon" [name]="iconName"></svg-icon>
340
+ </button>
341
+
342
+ <div class="dropdown-anchor" ngbDropdownAnchor></div>
343
+ <!-- Dropdown menu -->
344
+
345
+ @let hasLoader = isLoading() !== undefined;
346
+
347
+ @if (hasLoader) {
348
+ <div class="loader" [class.loading]="isLoading()">
349
+ <svg-icon name="cai-loader" class="loader-icon"></svg-icon>
350
+ </div>
351
+ }
352
+
353
+ @if (dropdownType) {
354
+ @let maxHeight =
355
+ ((dropdownOptions()?.length || (showNoResults() ? 1 : 0)) +
356
+ (config().add ? 1 : 0)) *
357
+ 30 +
358
+ 4;
359
+
360
+ @let animateDropdown =
361
+ dropdownType !== "toll" &&
362
+ dropdownType !== "fuel-stop-transaction" &&
363
+ dropdownType !== "dispatch" &&
364
+ dropdownType !== "ftl-dispatch" &&
365
+ dropdownType !== "split-driver" &&
366
+ dropdownType !== "split-truck" &&
367
+ dropdownType !== "split-trailer";
368
+
369
+ @let unfilteredHeight =
370
+ dropdownType === "contact" || !animateDropdown
371
+ ? 244
372
+ : ((options()?.length || (showNoResults() ? 1 : 0)) +
373
+ (config().add ? 1 : 0)) *
374
+ 30 +
375
+ 4;
376
+
377
+ <div
378
+ ngbDropdownMenu
379
+ class="dropdown-menu input-dropdown-menu"
380
+ [class]="{
381
+ 'hide-dropdown':
382
+ config().dropdownAutocomplete &&
383
+ !dropdownOptions()?.length &&
384
+ !(showNoResults() && value()),
385
+ 'animate-dropdown': animateDropdown,
386
+ 'size-22': config().size === 22,
387
+ 'has-stroke': config().hasStroke,
388
+ }"
389
+ [class.closing]="closing()"
390
+ [style.--unfiltered-height]="
391
+ unfilteredHeight > 244 ? '244px' : unfilteredHeight + 'px'
392
+ "
393
+ [style.--max-height]="maxHeight > 244 ? '244px' : maxHeight + 'px'"
394
+ [style.width.px]="containerWidth()"
395
+ [tabindex]="-1"
396
+ (pointerdown)="onDropdownBackgroundClick($event)"
397
+ (pointerup)="stopEventPropagation($event)"
398
+ (mouseup)="stopEventPropagation($event)"
399
+ (click)="stopEventPropagation($event)"
400
+ >
401
+ <div
402
+ class="dropdown-menu-content"
403
+ [tabindex]="-1"
404
+ caiInfiniteScroll
405
+ [scrollThreshold]="50"
406
+ (scrolledToBottom)="onDropdownScrolledToBottom()"
407
+ >
408
+ @if (config().add) {
409
+ <button
410
+ class="dropdown-item add-new"
411
+ [class.focused]="
412
+ focusedOptionIndex === -1 ||
413
+ groupedNavigationState?.groupIndex === -1
414
+ "
415
+ (pointerdown)="handleAddingOption($event)"
416
+ >
417
+ <p>ADD NEW</p>
418
+ <svg-icon name="cai-plus" class="dropdown-item-icon"></svg-icon>
419
+ </button>
420
+ }
421
+ <ng-container *ngTemplateOutlet="dropdownMenuRef"></ng-container>
422
+ </div>
423
+ </div>
424
+
425
+ @if (!config().dropdownAutocomplete) {
426
+ <div
427
+ class="dropdown-icon-container"
428
+ [class.open]="dropdown.isOpen() && !closing()"
429
+ (pointerdown)="onDropdownIconClick($event)"
430
+ >
431
+ <svg-icon
432
+ name="cai-arrow-secondary-down"
433
+ class="dropdown-icon icon"
434
+ ></svg-icon>
435
+ </div>
436
+ }
437
+ @let specialDropdown =
438
+ dropdownType === "dispatch" ||
439
+ dropdownType === "ftl-dispatch" ||
440
+ dropdownType === "broker" ||
441
+ dropdownType === "contact" ||
442
+ dropdownType === "shipper" ||
443
+ dropdownType === "bank" ||
444
+ dropdownType === "dispatcher" ||
445
+ dropdownType === "truck" ||
446
+ dropdownType === "trailer" ||
447
+ dropdownType === "hazardous" ||
448
+ dropdownType === "state" ||
449
+ dropdownType === "owner" ||
450
+ dropdownType === "fuelcard" ||
451
+ dropdownType === "pm" ||
452
+ dropdownType === "color" ||
453
+ dropdownType === "make" ||
454
+ dropdownType === "toll" ||
455
+ dropdownType === "provider" ||
456
+ dropdownType === "split-driver" ||
457
+ dropdownType === "split-truck" ||
458
+ dropdownType === "split-trailer";
459
+ <!-- Placeholder -->
460
+ @if (specialDropdown) {
461
+ <ng-container *ngTemplateOutlet="selectedOptionRef"></ng-container>
462
+ } @else if (
463
+ (config().add || config().search) &&
464
+ !inputRef.value &&
465
+ !this.isAdding() &&
466
+ dropdownType !== "subcontent"
467
+ ) {
468
+ <div class="dropdown-selected">
469
+ @if (config().placeholderBehavior === "static") {
470
+ <p class="selected-label-hidden">
471
+ {{ name + (config().required ? " *" : "") }}
472
+ </p>
473
+ <p class="selected-text">
474
+ {{
475
+ selectedOption() &&
476
+ cast(selectedOption(), "dropdownOption")![
477
+ optionLabel || "label"
478
+ ]
479
+ }}
480
+ </p>
481
+ } @else {
482
+ @if (
483
+ selectedOption() &&
484
+ cast(selectedOption(), "dropdownOption")![
485
+ optionLabel || "label"
486
+ ] === "Hazardous"
487
+ ) {
488
+ <svg-icon name="cai-violation-hazmat" class="icon"></svg-icon>
489
+ <p class="dropdown-selected-content">
490
+ {{
491
+ selectedOption() &&
492
+ cast(selectedOption(), "dropdownOption")![
493
+ optionLabel || "label"
494
+ ]
495
+ }}
496
+ </p>
497
+ } @else {
498
+ <p class="dropdown-selected-content">
499
+ {{
500
+ selectedOption() &&
501
+ cast(selectedOption(), "dropdownOption")![
502
+ optionLabel || "label"
503
+ ]
504
+ }}
505
+ </p>
506
+ }
507
+ }
508
+ </div>
509
+ }
510
+ } @else if (config().isEdit && !inputRef.value) {
511
+ <div class="dropdown-selected">
512
+ <p class="dropdown-selected-content">{{ name }}</p>
513
+ </div>
514
+ }
515
+ @if (config().passwordRequirements) {
516
+ <div
517
+ class="dropdown-menu password-requirement"
518
+ ngbDropdownMenu
519
+ [style.width.px]="containerWidth()"
520
+ [class.closing]="closing()"
521
+ (pointerup)="stopEventPropagation($event)"
522
+ (mouseup)="stopEventPropagation($event)"
523
+ (click)="stopEventPropagation($event)"
524
+ >
525
+ <ng-container *ngTemplateOutlet="passwordRequirementsRef"></ng-container>
526
+ </div>
527
+ }
528
+ @if (subcontent) {
529
+ <p class="subcontent">
530
+ @if (!(config().alignment === "right")) {
531
+ <span class="subcontent-hide"
532
+ >{{
533
+ config().search
534
+ ? selectedOption() &&
535
+ cast(selectedOption(), "dropdownOption")![
536
+ optionLabel || "label"
537
+ ]
538
+ : inputRef.value
539
+ }}
540
+ </span>
541
+ }
542
+ {{ subcontent }}
543
+ </p>
544
+ }
545
+ </div>
546
+
547
+ <!-- #region Templates -->
548
+
549
+ <!-- #region Password requirements -->
550
+ <ng-template #passwordRequirementsRef>
551
+ @let isMinLengthValid =
552
+ !this.ngControl?.errors?.["minlength"] && this.value();
553
+ @let isHasNumberValid =
554
+ !this.ngControl?.errors?.["hasNumber"] && this.value();
555
+ @let isHasSymbolValid =
556
+ !this.ngControl?.errors?.["hasSymbol"] && this.value();
557
+ @let isHasUppercaseValid =
558
+ !this.ngControl?.errors?.["hasUppercase"] && this.value();
559
+
560
+ <p>Strong Password Requirement</p>
561
+ <ul>
562
+ <li [class.valid]="isMinLengthValid">
563
+ <svg-icon
564
+ [name]="isMinLengthValid ? 'cai-checkmark' : 'cai-cancel'"
565
+ [class]="isMinLengthValid ? 'checkmark' : 'cancel'"
566
+ class="icon"
567
+ ></svg-icon
568
+ ><span>Minimum 8 characters</span>
569
+ </li>
570
+ <li [class.valid]="isHasNumberValid">
571
+ <svg-icon
572
+ class="icon"
573
+ [name]="isHasNumberValid ? 'cai-checkmark' : 'cai-cancel'"
574
+ [class]="isHasNumberValid ? 'checkmark' : 'cancel'"
575
+ ></svg-icon
576
+ ><span>One number</span>
577
+ </li>
578
+ <li [class.valid]="isHasSymbolValid">
579
+ <svg-icon
580
+ class="icon"
581
+ [name]="isHasSymbolValid ? 'cai-checkmark' : 'cai-cancel'"
582
+ [class]="isHasSymbolValid ? 'checkmark' : 'cancel'"
583
+ ></svg-icon
584
+ ><span>One symbol</span>
585
+ </li>
586
+ <li [class.valid]="isHasUppercaseValid">
587
+ <svg-icon
588
+ class="icon"
589
+ [name]="isHasUppercaseValid ? 'cai-checkmark' : 'cai-cancel'"
590
+ [class]="isHasUppercaseValid ? 'checkmark' : 'cancel'"
591
+ ></svg-icon
592
+ ><span>One upper-case letter</span>
593
+ </li>
594
+ </ul>
595
+ </ng-template>
596
+ <!-- #endregion -->
597
+ @let search = config().search;
598
+
599
+ <ng-template #dropdownMenuRef>
600
+ @switch (dropdownType) {
601
+ @case ("dispatch") {
602
+ <ng-container *ngTemplateOutlet="dispatchesRef"></ng-container>
603
+ }
604
+ @case ("ftl-dispatch") {
605
+ <ng-container *ngTemplateOutlet="ftlDispatchRef"></ng-container>
606
+ }
607
+ @case ("broker") {
608
+ <ng-container *ngTemplateOutlet="brokerRef"></ng-container>
609
+ }
610
+ @case ("contact") {
611
+ <ng-container *ngTemplateOutlet="contactRef"></ng-container>
612
+ }
613
+ @case ("shipper") {
614
+ <ng-container *ngTemplateOutlet="shipperRef"></ng-container>
615
+ }
616
+ @case ("bank") {
617
+ <ng-container *ngTemplateOutlet="bankRef"></ng-container>
618
+ }
619
+ @case ("dispatcher") {
620
+ <ng-container *ngTemplateOutlet="dispatcherRef"></ng-container>
621
+ }
622
+ @case ("trailer") {
623
+ <ng-container *ngTemplateOutlet="trailerRef"></ng-container>
624
+ }
625
+ @case ("truck") {
626
+ <ng-container *ngTemplateOutlet="truckRef"></ng-container>
627
+ }
628
+ @case ("hazardous") {
629
+ <ng-container *ngTemplateOutlet="hazardousRef"></ng-container>
630
+ }
631
+ @case ("state") {
632
+ <ng-container *ngTemplateOutlet="stateRef"></ng-container>
633
+ }
634
+ @case ("owner") {
635
+ <ng-container *ngTemplateOutlet="ownerRef"></ng-container>
636
+ }
637
+ @case ("fuelcard") {
638
+ <ng-container *ngTemplateOutlet="fuelcardRef"></ng-container>
639
+ }
640
+ @case ("pm") {
641
+ <ng-container *ngTemplateOutlet="pmRef"></ng-container>
642
+ }
643
+ @case ("multiple") {
644
+ <ng-container *ngTemplateOutlet="multipleRef"></ng-container>
645
+ }
646
+ @case ("make") {
647
+ <ng-container *ngTemplateOutlet="makeRef"></ng-container>
648
+ }
649
+ @case ("toll") {
650
+ <ng-container *ngTemplateOutlet="tollRef"></ng-container>
651
+ }
652
+ @case ("color") {
653
+ <ng-container *ngTemplateOutlet="colorRef"></ng-container>
654
+ }
655
+ @case ("fuel-stop-transaction") {
656
+ <ng-container *ngTemplateOutlet="fuelStopTransactionRef"></ng-container>
657
+ }
658
+ @case ("provider") {
659
+ <ng-container *ngTemplateOutlet="providerRef"></ng-container>
660
+ }
661
+ @case ("split-driver") {
662
+ <ng-container *ngTemplateOutlet="splitDriverRef"></ng-container>
663
+ }
664
+ @case ("split-truck") {
665
+ <ng-container *ngTemplateOutlet="splitTruckRef"></ng-container>
666
+ }
667
+ @case ("split-trailer") {
668
+ <ng-container *ngTemplateOutlet="splitTrailerRef"></ng-container>
669
+ }
670
+ @case ("subcontent") {
671
+ <ng-container *ngTemplateOutlet="dropdownOptionsRef"></ng-container>
672
+ }
673
+ @default {
674
+ <ng-container *ngTemplateOutlet="dropdownOptionsRef"></ng-container>
675
+ }
676
+ }
677
+ </ng-template>
678
+
679
+ <ng-template #selectedOptionRef>
680
+ @switch (dropdownType) {
681
+ @case ("dispatch") {
682
+ <ng-container *ngTemplateOutlet="selectedDispatchRef"></ng-container>
683
+ }
684
+ @case ("ftl-dispatch") {
685
+ <ng-container *ngTemplateOutlet="selectedDispatchRef"></ng-container>
686
+ }
687
+ @case ("broker") {
688
+ <ng-container *ngTemplateOutlet="selectedBrokerRef"></ng-container>
689
+ }
690
+ @case ("contact") {
691
+ <ng-container *ngTemplateOutlet="selectedContactRef"></ng-container>
692
+ }
693
+ @case ("shipper") {
694
+ <ng-container *ngTemplateOutlet="selectedShipperRef"></ng-container>
695
+ }
696
+ @case ("bank") {
697
+ <ng-container *ngTemplateOutlet="selectedBankRef"></ng-container>
698
+ }
699
+ @case ("dispatcher") {
700
+ <ng-container *ngTemplateOutlet="selectedDispatcherRef"></ng-container>
701
+ }
702
+ @case ("trailer") {
703
+ <ng-container *ngTemplateOutlet="selectedTrailerRef"></ng-container>
704
+ }
705
+ @case ("truck") {
706
+ <ng-container *ngTemplateOutlet="selectedTruckRef"></ng-container>
707
+ }
708
+ @case ("hazardous") {
709
+ <ng-container *ngTemplateOutlet="selectedHazardousRef"></ng-container>
710
+ }
711
+ @case ("state") {
712
+ <ng-container *ngTemplateOutlet="selectedStateRef"></ng-container>
713
+ }
714
+ @case ("owner") {
715
+ <ng-container *ngTemplateOutlet="selectedOwnerRef"></ng-container>
716
+ }
717
+ @case ("fuelcard") {
718
+ <ng-container *ngTemplateOutlet="selectedFuelcardRef"></ng-container>
719
+ }
720
+ @case ("pm") {
721
+ <ng-container *ngTemplateOutlet="selectedPmRef"></ng-container>
722
+ }
723
+ @case ("make") {
724
+ <ng-container *ngTemplateOutlet="selectedMakeRef"></ng-container>
725
+ }
726
+ @case ("toll") {
727
+ <ng-container *ngTemplateOutlet="selectedTollRef"></ng-container>
728
+ }
729
+ @case ("color") {
730
+ <ng-container *ngTemplateOutlet="selectedColorRef"></ng-container>
731
+ }
732
+ @case ("provider") {
733
+ <ng-container *ngTemplateOutlet="selectedProviderRef"></ng-container>
734
+ }
735
+ @case ("split-driver") {
736
+ <ng-container *ngTemplateOutlet="selectedSplitDriverRef"></ng-container>
737
+ }
738
+ @case ("split-truck") {
739
+ <ng-container *ngTemplateOutlet="selectedSplitTruckRef"></ng-container>
740
+ }
741
+ @case ("split-trailer") {
742
+ <ng-container *ngTemplateOutlet="selectedSplitTrailerRef"></ng-container>
743
+ }
744
+ }
745
+ </ng-template>
746
+
747
+ <!-- Standard dropdown -->
748
+ <ng-template #dropdownOptionsRef>
749
+ @if (dropdownOptions().length) {
750
+ @for (option of dropdownOptions(); track $index; let index = $index) {
751
+ @let dropdownOption = cast(option, "dropdownOption")!;
752
+ <button
753
+ tabindex="-1"
754
+ class="dropdown-item"
755
+ id="option-{{ dropdownOption.id }}"
756
+ [class]="{
757
+ selected:
758
+ cast(selectedOption(), 'dropdownOption')?.id === dropdownOption.id,
759
+ focused: focusedOptionIndex === index,
760
+ }"
761
+ (pointerdown)="handleOption(dropdownOption, $event)"
762
+ >
763
+ @if (dropdownOption[optionLabel] === "Hazardous") {
764
+ <svg-icon name="cai-violation-hazmat" class="icon"></svg-icon>
765
+ }
766
+ <p
767
+ class="dropdown-content-with-icon"
768
+ [innerHTML]="
769
+ search
770
+ ? (dropdownOption[optionLabel] | highlightSearch: value())
771
+ : dropdownOption[optionLabel]
772
+ "
773
+ ></p>
774
+ <svg-icon name="cai-checkmark" class="dropdown-item-icon"></svg-icon>
775
+ </button>
776
+ }
777
+ } @else {
778
+ <p class="dropdown-item no-results">No results</p>
779
+ }
780
+ </ng-template>
781
+
782
+ <ng-template #multipleRef>
783
+ @if (dropdownOptions().length) {
784
+ @for (option of dropdownOptions(); track $index; let index = $index) {
785
+ @let dropdownOption = cast(option, "dropdownOption")!;
786
+ <button
787
+ tabindex="-1"
788
+ class="dropdown-item"
789
+ id="option-{{ dropdownOption.id }}"
790
+ (pointerdown)="handleOption(dropdownOption, $event)"
791
+ [class]="{
792
+ selected: isSelectedOption(dropdownOption),
793
+ focused: focusedOptionIndex === index,
794
+ }"
795
+ >
796
+ <p
797
+ class="dropdown-content-with-icon"
798
+ [innerHTML]="
799
+ search
800
+ ? (dropdownOption[optionLabel] | highlightSearch: value())
801
+ : dropdownOption[optionLabel]
802
+ "
803
+ ></p>
804
+ <svg-icon name="cai-checkmark" class="dropdown-item-icon"></svg-icon>
805
+ </button>
806
+ }
807
+ } @else {
808
+ <p class="dropdown-item no-results">No results</p>
809
+ }
810
+ </ng-template>
811
+
812
+ <ng-template #bankRef>
813
+ @if (dropdownOptions().length) {
814
+ @for (bank of dropdownOptions(); track $index; let index = $index) {
815
+ @let bankOption = cast(bank, "bank")!;
816
+ <button
817
+ tabindex="-1"
818
+ class="dropdown-item"
819
+ id="option-{{ bankOption.id }}"
820
+ (pointerdown)="handleOption(bankOption, $event)"
821
+ [class]="{
822
+ selected: cast(selectedOption(), 'bank')?.id === bankOption.id,
823
+ focused: focusedOptionIndex === index,
824
+ }"
825
+ >
826
+ @if (bankOption.logoName) {
827
+ <svg-icon
828
+ class="full-icon"
829
+ [name]="bankOption.logoName.slice(0, -4)"
830
+ ></svg-icon>
831
+ } @else {
832
+ <p
833
+ class="dropdown-content-with-icon"
834
+ [innerHTML]="
835
+ search
836
+ ? (bankOption.name || '' | highlightSearch: value())
837
+ : bankOption.name
838
+ "
839
+ ></p>
840
+ }
841
+ <svg-icon name="cai-checkmark" class="dropdown-item-icon"></svg-icon>
842
+ </button>
843
+ }
844
+ } @else {
845
+ <p class="dropdown-item no-results">No results</p>
846
+ }
847
+ </ng-template>
848
+
849
+ <ng-template #makeRef>
850
+ @if (dropdownOptions().length) {
851
+ @for (make of dropdownOptions(); track $index; let index = $index) {
852
+ @let makeOption = cast(make, "make")!;
853
+ <button
854
+ tabindex="-1"
855
+ class="dropdown-item"
856
+ id="option-{{ makeOption.id }}"
857
+ (pointerdown)="handleOption(makeOption, $event)"
858
+ [class]="{
859
+ selected: cast(selectedOption(), 'make')?.id === makeOption.id,
860
+ focused: focusedOptionIndex === index,
861
+ }"
862
+ >
863
+ @if (makeOption.logoName) {
864
+ <svg-icon
865
+ class="full-icon"
866
+ [name]="makeOption.logoName.slice(0, -4)"
867
+ ></svg-icon>
868
+ } @else {
869
+ <p
870
+ class="dropdown-content-with-icon"
871
+ [innerHTML]="
872
+ search
873
+ ? (makeOption.name || '' | highlightSearch: value())
874
+ : makeOption.name
875
+ "
876
+ ></p>
877
+ }
878
+ <svg-icon name="cai-checkmark" class="dropdown-item-icon"></svg-icon>
879
+ </button>
880
+ }
881
+ } @else {
882
+ <p class="dropdown-item no-results">No results</p>
883
+ }
884
+ </ng-template>
885
+
886
+ <!-- Broker -->
887
+ <ng-template #brokerRef>
888
+ @if (dropdownOptions().length) {
889
+ @for (broker of dropdownOptions(); track $index; let index = $index) {
890
+ @let brokerOption = cast(broker, "broker")!;
891
+ <button
892
+ tabindex="-1"
893
+ class="dropdown-item"
894
+ id="broker-{{ brokerOption.id }}"
895
+ (pointerdown)="
896
+ !(brokerOption.dnu || brokerOption.ban) &&
897
+ handleOption(brokerOption, $event)
898
+ "
899
+ [class]="{
900
+ selected: cast(selectedOption(), 'broker')?.id === brokerOption.id,
901
+ focused: focusedOptionIndex === index,
902
+ banned: brokerOption.dnu || brokerOption.ban,
903
+ dnu: brokerOption.dnu,
904
+ }"
905
+ >
906
+ @if (brokerOption?.dnu || brokerOption?.ban) {
907
+ <svg-icon name="cai-minus" class="round-icon"></svg-icon>
908
+ } @else if (brokerOption?.fraudCheck) {
909
+ <svg-icon
910
+ name="cai-status-warning-lite"
911
+ class="icon fraud"
912
+ ></svg-icon>
913
+ }
914
+ <p
915
+ class="dropdown-content"
916
+ [innerHTML]="
917
+ search
918
+ ? (brokerOption.businessName || '' | highlightSearch: value())
919
+ : brokerOption.businessName
920
+ "
921
+ ></p>
922
+ <div class="dropdown-subitem-end">
923
+ <div class="end-item-base">
924
+ @if (!brokerOption.creditLimit) {
925
+ <p>Unlimited</p>
926
+ } @else {
927
+ <p>{{ brokerOption.availableCredit || 0 | currency }}</p>
928
+ <div
929
+ class="progress-bar"
930
+ [style.--progress]="
931
+ (
932
+ brokerOption
933
+ | brokerProgress: brokerOption.dnu || brokerOption.ban
934
+ ).activePercentageOfPaid + '%'
935
+ "
936
+ [class]="
937
+ (
938
+ brokerOption
939
+ | brokerProgress: brokerOption.dnu || brokerOption.ban
940
+ ).status
941
+ "
942
+ ></div>
943
+ }
944
+ </div>
945
+ <div class="end-item-hover">
946
+ <p>
947
+ {{ brokerOption.loadsCount }} |
948
+ {{ brokerOption.availableCredit || 0 | currency }}
949
+ </p>
950
+ <svg-icon name="cai-load" class="icon"></svg-icon>
951
+ </div>
952
+ </div>
953
+ </button>
954
+ }
955
+ } @else {
956
+ <p class="dropdown-item no-results">No results</p>
957
+ }
958
+ </ng-template>
959
+
960
+ <!-- Contact dropdown -->
961
+ <ng-template #contactRef>
962
+ @if (dropdownOptions().length) {
963
+ @for (contact of dropdownOptions(); track $index; let index = $index) {
964
+ @let contactOption = cast(contact, "contact")!;
965
+ <button
966
+ tabindex="-1"
967
+ class="dropdown-item"
968
+ id="contact-{{ contact.id }}"
969
+ (pointerdown)="handleOption(contact, $event)"
970
+ [class]="{
971
+ selected: cast(selectedOption(), 'contact')?.id === contact.id,
972
+ focused: focusedOptionIndex === index,
973
+ }"
974
+ >
975
+ <p
976
+ [innerHTML]="
977
+ search
978
+ ? (contactOption.contactName || '' | highlightSearch: value())
979
+ : contactOption.contactName
980
+ "
981
+ ></p>
982
+ <div class="dropdown-subitem-end">
983
+ <div class="end-item-base">
984
+ <p>{{ contactOption.department?.name }}</p>
985
+ </div>
986
+ <div class="end-item-hover">
987
+ <p>
988
+ {{ contactOption.phone }}
989
+ </p>
990
+ </div>
991
+ </div>
992
+ </button>
993
+ }
994
+ } @else {
995
+ <p class="dropdown-item no-results">No results</p>
996
+ }
997
+ </ng-template>
998
+
999
+ <!-- Owner dropdown -->
1000
+ <ng-template #ownerRef>
1001
+ @if (dropdownOptions().length) {
1002
+ @for (owner of dropdownOptions(); track $index; let index = $index) {
1003
+ @let ownerOption = cast(owner, "owner");
1004
+ <button
1005
+ tabindex="-1"
1006
+ class="dropdown-item"
1007
+ id="owner-{{ ownerOption?.id }}"
1008
+ (pointerdown)="handleOption(ownerOption!, $event)"
1009
+ [class]="{
1010
+ selected: cast(selectedOption(), 'owner')?.id === ownerOption?.id,
1011
+ focused: focusedOptionIndex === index,
1012
+ }"
1013
+ >
1014
+ <p
1015
+ class="owner-ein"
1016
+ [innerHTML]="
1017
+ search
1018
+ ? (ownerOption?.ein || '' | highlightSearch: value())
1019
+ : ownerOption?.ein
1020
+ "
1021
+ ></p>
1022
+ <p
1023
+ [innerHTML]="
1024
+ search
1025
+ ? (ownerOption?.name || '' | highlightSearch: value())
1026
+ : ownerOption?.name
1027
+ "
1028
+ ></p>
1029
+ <svg-icon name="cai-checkmark" class="dropdown-item-icon"></svg-icon>
1030
+ </button>
1031
+ }
1032
+ } @else {
1033
+ <p class="dropdown-item no-results">No results</p>
1034
+ }
1035
+ </ng-template>
1036
+
1037
+ <!-- Fuelcard dropdown -->
1038
+ <ng-template #fuelcardRef>
1039
+ @if (dropdownOptions().length) {
1040
+ @for (fuelcard of dropdownOptions(); track $index; let index = $index) {
1041
+ @let fuelcardOption = cast(fuelcard, "fuelCard");
1042
+ <button
1043
+ tabindex="-1"
1044
+ class="dropdown-item"
1045
+ id="fuelcard-{{ fuelcardOption?.id }}"
1046
+ (pointerdown)="handleOption(fuelcardOption!, $event)"
1047
+ [class]="{
1048
+ selected:
1049
+ cast(selectedOption(), 'fuelCard')?.id === fuelcardOption?.id,
1050
+ focused: focusedOptionIndex === index,
1051
+ }"
1052
+ >
1053
+ <p
1054
+ class="fuelcard-number"
1055
+ [innerHTML]="
1056
+ search
1057
+ ? (fuelcardOption?.number || '' | highlightSearch: value())
1058
+ : fuelcardOption?.number
1059
+ "
1060
+ ></p>
1061
+ <p
1062
+ class="fuelcard-brand"
1063
+ [innerHTML]="
1064
+ search
1065
+ ? (fuelcardOption?.brand || '' | highlightSearch: value())
1066
+ : fuelcardOption?.brand
1067
+ "
1068
+ ></p>
1069
+ <p
1070
+ [innerHTML]="
1071
+ search
1072
+ ? (fuelcardOption?.account || '' | highlightSearch: value())
1073
+ : fuelcardOption?.account
1074
+ "
1075
+ ></p>
1076
+ <svg-icon name="cai-checkmark" class="dropdown-item-icon"></svg-icon>
1077
+ </button>
1078
+ }
1079
+ } @else {
1080
+ <p class="dropdown-item no-results">No results</p>
1081
+ }
1082
+ </ng-template>
1083
+
1084
+ <!-- Shipper dropdown -->
1085
+ <ng-template #shipperRef>
1086
+ @if (dropdownOptions().length) {
1087
+ @for (shipper of dropdownOptions(); track $index; let index = $index) {
1088
+ @let shipperOption = cast(shipper, "shipper")!;
1089
+ <button
1090
+ tabindex="-1"
1091
+ class="dropdown-item"
1092
+ id="shipper-{{ shipperOption.id }}"
1093
+ (pointerdown)="handleOption(shipperOption, $event)"
1094
+ [class]="{
1095
+ selected: cast(selectedOption(), 'shipper')?.id === shipperOption.id,
1096
+ focused: focusedOptionIndex === index,
1097
+ }"
1098
+ >
1099
+ <p
1100
+ class="max-w-280 text-truncate"
1101
+ [innerHTML]="
1102
+ search
1103
+ ? (shipperOption.businessName || '' | highlightSearch: value())
1104
+ : shipperOption.businessName
1105
+ "
1106
+ ></p>
1107
+ <div class="dropdown-subitem-end">
1108
+ <div class="end-item-base">
1109
+ <p
1110
+ class="max-w-280 text-truncate"
1111
+ [innerHTML]="
1112
+ search
1113
+ ? (shipperOption.address?.address || ''
1114
+ | highlightSearch: value())
1115
+ : shipperOption.address?.address
1116
+ "
1117
+ ></p>
1118
+ </div>
1119
+ <div class="end-item-hover">
1120
+ <p>
1121
+ {{ shipperOption.pickupCount }} Pickup |
1122
+ {{ shipperOption.deliveryCount }} Delivery
1123
+ </p>
1124
+ <svg-icon name="cai-load" class="icon"></svg-icon>
1125
+ </div>
1126
+ </div>
1127
+ </button>
1128
+ }
1129
+ } @else {
1130
+ <p class="dropdown-item no-results">No results</p>
1131
+ }
1132
+ </ng-template>
1133
+
1134
+ <!-- Dispatch dropdown -->
1135
+ <ng-template #dispatchesRef>
1136
+ @if (dropdownOptions().length) {
1137
+ <button
1138
+ tabindex="-1"
1139
+ class="dropdown-item"
1140
+ (pointerdown)="reset()"
1141
+ [class]="{
1142
+ selected: !selectedOption(),
1143
+ }"
1144
+ >
1145
+ <p>Unassigned</p>
1146
+ <div class="unassigned-ltl">
1147
+ <p>{{ unassignedCount() }}</p>
1148
+ <svg-icon name="cai-ltl-single" class="icon-sm"></svg-icon>
1149
+ </div>
1150
+ </button>
1151
+ @for (
1152
+ dispatchBoard of dropdownOptions();
1153
+ track dispatchBoard.id;
1154
+ let groupIndex = $index
1155
+ ) {
1156
+ <!-- Temporary variant since BE doesn't support boards -->
1157
+ @let dispatchBoardOption = cast(dispatchBoard, "dispatchBoard")!;
1158
+
1159
+ @let isNoBoardsVariant =
1160
+ dispatchBoardOption.dispatcher === "NOBOARDSVARIANT";
1161
+ @if (dispatchBoardOption.count > 0) {
1162
+ @if (!isNoBoardsVariant) {
1163
+ @let isGroupFocused =
1164
+ groupedNavigationState?.groupIndex === groupIndex &&
1165
+ groupedNavigationState?.optionIndex === 0;
1166
+ <button
1167
+ tabindex="-1"
1168
+ class="dropdown-item group-item"
1169
+ (pointerdown)="fold(dispatchBoardOption.id, $event)"
1170
+ [class]="{
1171
+ unfolded: dispatchBoardOption.dispatches?.length || 0 > 0,
1172
+ focused: isGroupFocused,
1173
+ }"
1174
+ >
1175
+ <p>
1176
+ {{
1177
+ dispatchBoardOption.teamBoard
1178
+ ? "Team Board"
1179
+ : dispatchBoardOption.dispatcher
1180
+ }}
1181
+ </p>
1182
+ <p class="counter">{{ dispatchBoardOption.count }}</p>
1183
+ <svg-icon
1184
+ name="cai-arrow-primary-up"
1185
+ class="group-icon icon"
1186
+ ></svg-icon>
1187
+ </button>
1188
+ }
1189
+ @if (
1190
+ dispatchBoardOption.dispatches &&
1191
+ dispatchBoardOption.dispatches.length > 0
1192
+ ) {
1193
+ @for (
1194
+ dispatch of dispatchBoardOption.dispatches;
1195
+ track dispatch.id;
1196
+ let optionIndex = $index
1197
+ ) {
1198
+ @let isOptionFocused =
1199
+ groupedNavigationState?.groupIndex === groupIndex &&
1200
+ groupedNavigationState?.optionIndex === optionIndex + 1;
1201
+ <!-- +1 since optionIndex is 0 for the group item header -->
1202
+ <button
1203
+ tabindex="-1"
1204
+ class="dropdown-item"
1205
+ (pointerdown)="handleOption(dispatch, $event)"
1206
+ [class]="{
1207
+ selected:
1208
+ cast(selectedOption(), 'dispatch')?.id === dispatch.id,
1209
+ focused: isOptionFocused,
1210
+ }"
1211
+ >
1212
+ <div class="dropdown-subitem truck-item">
1213
+ <svg-icon
1214
+ class="truck-icon truck-trailer-icon-colors"
1215
+ [class]="dispatch.truck.truckType.logoName.slice(0, -4)"
1216
+ [name]="dispatch.truck.truckType.logoName.slice(0, -4)"
1217
+ ></svg-icon>
1218
+ <p
1219
+ class="truck-number"
1220
+ [innerHTML]="
1221
+ dispatch.truck.truckNumber | highlightSearch: value()
1222
+ "
1223
+ ></p>
1224
+ </div>
1225
+ <div class="dropdown-subitem trailer-item">
1226
+ @if (dispatch.trailer) {
1227
+ <svg-icon
1228
+ class="trailer-icon truck-trailer-icon-colors"
1229
+ [class]="dispatch.trailer.trailerType.logoName.slice(0, -4)"
1230
+ [name]="dispatch.trailer.trailerType.logoName.slice(0, -4)"
1231
+ ></svg-icon>
1232
+ <p
1233
+ class="trailer-number"
1234
+ [innerHTML]="
1235
+ dispatch.trailer.trailerNumber | highlightSearch: value()
1236
+ "
1237
+ ></p>
1238
+ }
1239
+ </div>
1240
+ <div class="dropdown-subitem">
1241
+ @if (dispatch.coDriver) {
1242
+ <svg-icon class="dispatch-icon" name="cai-people"></svg-icon>
1243
+ <p
1244
+ class="driver-name"
1245
+ [innerHTML]="
1246
+ dispatch.driver.firstName +
1247
+ ' & ' +
1248
+ dispatch.coDriver.firstName | highlightSearch: value()
1249
+ "
1250
+ ></p>
1251
+ } @else {
1252
+ <cai-avatar
1253
+ [driver]="dispatch.driver"
1254
+ [size]="18"
1255
+ [inverse]="true"
1256
+ [hover]="false"
1257
+ ></cai-avatar>
1258
+ <p
1259
+ class="driver-name"
1260
+ [innerHTML]="
1261
+ dispatch.driver.firstName + ' ' + dispatch.driver.lastName
1262
+ | highlightSearch: value()
1263
+ "
1264
+ ></p>
1265
+ }
1266
+ </div>
1267
+ <div class="dropdown-subitem-end">
1268
+ <div class="end-item-hover">
1269
+ <p>{{ dispatch.payType }}</p>
1270
+ <svg-icon name="cai-driver" class="icon-sm"></svg-icon>
1271
+ </div>
1272
+ <div class="end-item-base dispatch-ltl">
1273
+ <p>{{ dispatch.numberOfSingleLtlLoads }}</p>
1274
+ <svg-icon name="cai-ltl-single" class="icon-sm"></svg-icon>
1275
+ </div>
1276
+ </div>
1277
+ </button>
1278
+ }
1279
+ } @else if (isNoBoardsVariant) {
1280
+ <p class="dropdown-item no-results">No results</p>
1281
+ }
1282
+ }
1283
+ }
1284
+ } @else {
1285
+ <p class="dropdown-item no-results">No results</p>
1286
+ }
1287
+ </ng-template>
1288
+
1289
+ <!-- ftl dispatch dropdown -->
1290
+ <ng-template #ftlDispatchRef>
1291
+ @if (dropdownOptions().length) {
1292
+ @for (
1293
+ dispatchBoard of dropdownOptions();
1294
+ track dispatchBoard.id;
1295
+ let groupIndex = $index
1296
+ ) {
1297
+ @let dispatchBoardOption = cast(dispatchBoard, "dispatchBoard")!;
1298
+ @let isGroupFocused =
1299
+ groupedNavigationState?.groupIndex === groupIndex &&
1300
+ groupedNavigationState?.optionIndex === 0;
1301
+ @let isNoBoardsVariant =
1302
+ dispatchBoardOption.dispatcher === "NOBOARDSVARIANT";
1303
+ @if (dispatchBoardOption.count > 0) {
1304
+ @if (!isNoBoardsVariant) {
1305
+ <button
1306
+ tabindex="-1"
1307
+ class="dropdown-item group-item"
1308
+ (pointerdown)="fold(dispatchBoardOption.id, $event)"
1309
+ [class]="{
1310
+ unfolded: dispatchBoardOption.dispatches?.length || 0 > 0,
1311
+ focused: isGroupFocused,
1312
+ }"
1313
+ >
1314
+ <p>
1315
+ {{
1316
+ dispatchBoardOption.teamBoard
1317
+ ? "Team Board"
1318
+ : dispatchBoardOption.dispatcher
1319
+ }}
1320
+ </p>
1321
+ <p class="counter">{{ dispatchBoardOption.count }}</p>
1322
+ <svg-icon
1323
+ name="cai-arrow-primary-up"
1324
+ class="group-icon icon"
1325
+ ></svg-icon>
1326
+ </button>
1327
+ }
1328
+ @if (
1329
+ dispatchBoardOption.dispatches &&
1330
+ dispatchBoardOption.dispatches.length > 0
1331
+ ) {
1332
+ @for (
1333
+ dispatch of dispatchBoardOption.dispatches;
1334
+ track dispatch.id;
1335
+ let optionIndex = $index
1336
+ ) {
1337
+ @let isOptionFocused =
1338
+ groupedNavigationState?.groupIndex === groupIndex &&
1339
+ groupedNavigationState?.optionIndex === optionIndex + 1;
1340
+ <!-- +1 since optionIndex is 0 for the group item header -->
1341
+ <button
1342
+ class="dropdown-item"
1343
+ (pointerdown)="handleOption(dispatch, $event)"
1344
+ [class]="{
1345
+ selected:
1346
+ cast(selectedOption(), 'dispatch')?.id === dispatch.id,
1347
+ focused: isOptionFocused,
1348
+ }"
1349
+ >
1350
+ <div class="dropdown-subitem truck-item">
1351
+ <svg-icon
1352
+ class="truck-icon truck-trailer-icon-colors"
1353
+ [class]="dispatch.truck.truckType.logoName.slice(0, -4)"
1354
+ [name]="dispatch.truck.truckType.logoName.slice(0, -4)"
1355
+ ></svg-icon>
1356
+ <p
1357
+ class="truck-number"
1358
+ [innerHTML]="
1359
+ dispatch.truck.truckNumber | highlightSearch: value()
1360
+ "
1361
+ ></p>
1362
+ </div>
1363
+ <div class="dropdown-subitem trailer-item">
1364
+ @if (dispatch.trailer) {
1365
+ <svg-icon
1366
+ class="trailer-icon truck-trailer-icon-colors"
1367
+ [class]="dispatch.trailer.trailerType.logoName.slice(0, -4)"
1368
+ [name]="dispatch.trailer.trailerType.logoName.slice(0, -4)"
1369
+ ></svg-icon>
1370
+ <p
1371
+ class="trailer-number"
1372
+ [innerHTML]="
1373
+ dispatch.trailer.trailerNumber | highlightSearch: value()
1374
+ "
1375
+ ></p>
1376
+ }
1377
+ </div>
1378
+ <div class="dropdown-subitem">
1379
+ @if (dispatch.coDriver) {
1380
+ <svg-icon class="dispatch-icon" name="cai-people"></svg-icon>
1381
+ <p
1382
+ class="driver-name"
1383
+ [innerHTML]="
1384
+ dispatch.driver.firstName +
1385
+ ' & ' +
1386
+ dispatch.coDriver.firstName | highlightSearch: value()
1387
+ "
1388
+ ></p>
1389
+ } @else {
1390
+ <cai-avatar
1391
+ [driver]="dispatch.driver"
1392
+ [size]="18"
1393
+ [inverse]="true"
1394
+ [hover]="false"
1395
+ ></cai-avatar>
1396
+ <p
1397
+ class="driver-name"
1398
+ [innerHTML]="
1399
+ dispatch.driver.firstName + ' ' + dispatch.driver.lastName
1400
+ | highlightSearch: value()
1401
+ "
1402
+ ></p>
1403
+ }
1404
+ </div>
1405
+ <div class="dropdown-subitem-end">
1406
+ <div class="end-item-hover">
1407
+ <!-- Load Status -->
1408
+ @if (dispatch.status?.statusString) {
1409
+ <div
1410
+ class="dispatch-status"
1411
+ [class]="
1412
+ 'status-' +
1413
+ dispatch.status?.statusString
1414
+ ?.toLowerCase()
1415
+ ?.replaceAll(' ', '')
1416
+ ?.replaceAll('.', '')
1417
+ "
1418
+ >
1419
+ @if (
1420
+ dispatch.status?.statusString?.toLowerCase() ===
1421
+ "repair"
1422
+ ) {
1423
+ <p class="status-block blue">D</p>
1424
+ <p class="status-block green">L</p>
1425
+ }
1426
+ {{ dispatch.status?.statusString }}
1427
+ @if (
1428
+ dispatch.status?.statusString?.toLowerCase() ===
1429
+ "repair"
1430
+ ) {
1431
+ <p class="status-block green">P</p>
1432
+ <p class="status-block orange">D</p>
1433
+ }
1434
+ @if (dispatch.status?.statusCheckInNumber) {
1435
+ <p class="status-block">
1436
+ {{ dispatch.status?.statusCheckInNumber }}
1437
+ </p>
1438
+ }
1439
+ </div>
1440
+ <p class="dispatch-separator">|</p>
1441
+ }
1442
+ <p class="dispatch-load-count">
1443
+ <!-- Pending Load Count -->
1444
+ <!-- TODO: WAITING ON BE FOR PENDING LOAD COUNT -->
1445
+ 0
1446
+ </p>
1447
+ <svg-icon name="cai-load" class="icon-sm"></svg-icon>
1448
+ </div>
1449
+ <div class="end-item-base">
1450
+ <p>{{ dispatch.payType }}</p>
1451
+ <svg-icon name="cai-driver" class="icon-sm"></svg-icon>
1452
+ </div>
1453
+ </div>
1454
+ </button>
1455
+ }
1456
+ } @else if (isNoBoardsVariant) {
1457
+ <p class="dropdown-item no-results">No results</p>
1458
+ }
1459
+ }
1460
+ }
1461
+ } @else {
1462
+ <p class="dropdown-item no-results">No results</p>
1463
+ }
1464
+ </ng-template>
1465
+
1466
+ <ng-template #splitDriverRef>
1467
+ @if (dropdownOptions().length) {
1468
+ @for (splitDriverBoard of dropdownOptions(); track splitDriverBoard.id) {
1469
+ @let driverBoard = cast(splitDriverBoard, "splitDriverBoard")!;
1470
+ <button
1471
+ tabindex="-1"
1472
+ class="dropdown-item group-item"
1473
+ (pointerdown)="fold(driverBoard.id, $event)"
1474
+ [class]="{
1475
+ unfolded: (driverBoard.drivers?.length ?? 0) > 0,
1476
+ }"
1477
+ >
1478
+ <p>
1479
+ {{
1480
+ driverBoard.isTeamBoard ? "Team Board" : driverBoard.dispatcherName
1481
+ }}
1482
+ </p>
1483
+ <!-- TODO: Change to count once BE is fixed -->
1484
+ <p class="counter">{{ driverBoard.drivers?.length || 0 }}</p>
1485
+ <svg-icon
1486
+ name="cai-arrow-primary-up"
1487
+ class="group-icon icon"
1488
+ ></svg-icon>
1489
+ </button>
1490
+ @for (driver of driverBoard.drivers || []; track driver.id) {
1491
+ @let driverOption = cast(driver, "splitDriver")!;
1492
+ <button
1493
+ class="dropdown-item"
1494
+ (pointerdown)="handleOption(driverOption, $event)"
1495
+ [class]="{
1496
+ selected:
1497
+ cast(selectedOption(), 'splitDriver')?.id === driverOption.id,
1498
+ }"
1499
+ >
1500
+ <div class="dropdown-subitem">
1501
+ <div class="dropdown-avatar">
1502
+ <cai-avatar
1503
+ [driver]="driverOption"
1504
+ [size]="18"
1505
+ [inverse]="true"
1506
+ [hover]="false"
1507
+ ></cai-avatar>
1508
+ </div>
1509
+ <p
1510
+ class="driver-name"
1511
+ [innerHTML]="
1512
+ driverOption.firstName + ' ' + driverOption.lastName
1513
+ | highlightSearch: value()
1514
+ "
1515
+ ></p>
1516
+ </div>
1517
+ <div class="dropdown-subitem-end">
1518
+ <div class="end-item-hover">
1519
+ @let dispatchStatus =
1520
+ driverOption.dispatchStatus?.statusValue?.name;
1521
+ @if (dispatchStatus) {
1522
+ <div
1523
+ class="dispatch-status"
1524
+ [class]="
1525
+ 'status-' +
1526
+ dispatchStatus
1527
+ ?.toLowerCase()
1528
+ ?.replaceAll(' ', '')
1529
+ ?.replaceAll('.', '')
1530
+ "
1531
+ >
1532
+ @if (dispatchStatus?.toLowerCase() === "repair") {
1533
+ <p class="status-block blue">D</p>
1534
+ <p class="status-block green">L</p>
1535
+ }
1536
+ {{ dispatchStatus }}
1537
+ @if (dispatchStatus?.toLowerCase() === "repair") {
1538
+ <p class="status-block green">P</p>
1539
+ <p class="status-block orange">D</p>
1540
+ }
1541
+ @if (driverOption.dispatchStatus?.statusCheckInNumber) {
1542
+ <p class="status-block">
1543
+ {{ driverOption.dispatchStatus?.statusCheckInNumber }}
1544
+ </p>
1545
+ }
1546
+ </div>
1547
+ <p class="dispatch-separator">|</p>
1548
+ }
1549
+ <p class="dispatch-load-count">
1550
+ {{ driverOption.pendingLoadsCount }}
1551
+ </p>
1552
+ <svg-icon name="cai-load" class="icon-sm"></svg-icon>
1553
+ </div>
1554
+ <div class="end-item-base">
1555
+ <p>{{ driverOption.payTypeValue }}</p>
1556
+ </div>
1557
+ </div>
1558
+ </button>
1559
+ }
1560
+ }
1561
+ } @else {
1562
+ <p class="dropdown-item no-results">No results</p>
1563
+ }
1564
+ </ng-template>
1565
+
1566
+ <ng-template #splitTruckRef>
1567
+ @if (dropdownOptions().length) {
1568
+ @for (splitTruckBoard of dropdownOptions(); track splitTruckBoard.id) {
1569
+ @let truckBoard = cast(splitTruckBoard, "splitTruckBoard")!;
1570
+ <button
1571
+ tabindex="-1"
1572
+ class="dropdown-item group-item"
1573
+ (pointerdown)="fold(truckBoard.id, $event)"
1574
+ [class]="{
1575
+ unfolded: (truckBoard.trucks?.length ?? 0) > 0,
1576
+ }"
1577
+ >
1578
+ <p>
1579
+ {{
1580
+ truckBoard.isTeamBoard ? "Team Board" : truckBoard.dispatcherName
1581
+ }}
1582
+ </p>
1583
+ <!-- TODO: Change to count once BE is fixed -->
1584
+ <p class="counter">{{ truckBoard.trucks?.length || 0 }}</p>
1585
+ <svg-icon
1586
+ name="cai-arrow-primary-up"
1587
+ class="group-icon icon"
1588
+ ></svg-icon>
1589
+ </button>
1590
+ @for (truck of truckBoard.trucks || []; track truck.id) {
1591
+ @let truckOption = cast(truck, "splitTruck")!;
1592
+ <button
1593
+ class="dropdown-item"
1594
+ (pointerdown)="handleOption(truckOption, $event)"
1595
+ [class]="{
1596
+ selected:
1597
+ cast(selectedOption(), 'splitTruck')?.id === truckOption.id,
1598
+ }"
1599
+ >
1600
+ <div class="dropdown-subitem truck-item">
1601
+ <svg-icon
1602
+ class="truck-icon"
1603
+ [style.--truck-color]="truckOption.color?.code || ''"
1604
+ [name]="truckOption.truckType.logoName.slice(0, -4)"
1605
+ ></svg-icon>
1606
+ <p
1607
+ class="truck-number"
1608
+ [innerHTML]="truckOption.truckNumber | highlightSearch: value()"
1609
+ ></p>
1610
+ </div>
1611
+ <div class="dropdown-subitem-end">
1612
+ <div class="end-item-hover">
1613
+ @let dispatchStatus =
1614
+ truckOption.dispatchStatus?.statusValue?.name;
1615
+ @if (dispatchStatus) {
1616
+ <div
1617
+ class="dispatch-status"
1618
+ [class]="
1619
+ 'status-' +
1620
+ dispatchStatus
1621
+ ?.toLowerCase()
1622
+ ?.replaceAll(' ', '')
1623
+ ?.replaceAll('.', '')
1624
+ "
1625
+ >
1626
+ @if (dispatchStatus?.toLowerCase() === "repair") {
1627
+ <p class="status-block blue">D</p>
1628
+ <p class="status-block green">L</p>
1629
+ }
1630
+ {{ dispatchStatus }}
1631
+ @if (dispatchStatus?.toLowerCase() === "repair") {
1632
+ <p class="status-block green">P</p>
1633
+ <p class="status-block orange">D</p>
1634
+ }
1635
+ @if (truckOption.dispatchStatus?.statusCheckInNumber) {
1636
+ <p class="status-block">
1637
+ {{ truckOption.dispatchStatus?.statusCheckInNumber }}
1638
+ </p>
1639
+ }
1640
+ </div>
1641
+ <p class="dispatch-separator">|</p>
1642
+ }
1643
+ <p class="dispatch-load-count">
1644
+ {{ truckOption.pendingLoadsCount }}
1645
+ </p>
1646
+ <svg-icon name="cai-load" class="icon-sm"></svg-icon>
1647
+ </div>
1648
+ <div class="end-item-base">
1649
+ @if (
1650
+ truckOption.location?.city &&
1651
+ truckOption.location?.stateShortName
1652
+ ) {
1653
+ <p>
1654
+ {{ truckOption.location?.city }},
1655
+ {{ truckOption.location?.stateShortName }}
1656
+ </p>
1657
+ }
1658
+ </div>
1659
+ </div>
1660
+ </button>
1661
+ }
1662
+ }
1663
+ } @else {
1664
+ <p class="dropdown-item no-results">No results</p>
1665
+ }
1666
+ </ng-template>
1667
+
1668
+ <ng-template #splitTrailerRef>
1669
+ @if (dropdownOptions().length) {
1670
+ @for (splitTrailerBoard of dropdownOptions(); track splitTrailerBoard.id) {
1671
+ @let trailerBoard = cast(splitTrailerBoard, "splitTrailerBoard")!;
1672
+ <button
1673
+ tabindex="-1"
1674
+ class="dropdown-item group-item"
1675
+ (pointerdown)="fold(trailerBoard.id, $event)"
1676
+ [class]="{
1677
+ unfolded: (trailerBoard.trailers?.length ?? 0) > 0,
1678
+ }"
1679
+ >
1680
+ <p>
1681
+ {{
1682
+ trailerBoard.isTeamBoard
1683
+ ? "Team Board"
1684
+ : trailerBoard.dispatcherName
1685
+ }}
1686
+ </p>
1687
+ <!-- TODO: Change to count once BE is fixed -->
1688
+ <p class="counter">{{ trailerBoard.trailers?.length || 0 }}</p>
1689
+ <svg-icon
1690
+ name="cai-arrow-primary-up"
1691
+ class="group-icon icon"
1692
+ ></svg-icon>
1693
+ </button>
1694
+ @for (trailer of trailerBoard.trailers || []; track trailer.id) {
1695
+ @let trailerOption = cast(trailer, "splitTrailer")!;
1696
+ <button
1697
+ class="dropdown-item"
1698
+ (pointerdown)="handleOption(trailerOption, $event)"
1699
+ [class]="{
1700
+ selected:
1701
+ cast(selectedOption(), 'splitTrailer')?.id === trailerOption.id,
1702
+ }"
1703
+ >
1704
+ <div class="dropdown-subitem trailer-item">
1705
+ <svg-icon
1706
+ class="trailer-icon"
1707
+ [style.--trailer-color]="trailerOption.color?.code || ''"
1708
+ [name]="trailerOption.trailerType.logoName.slice(0, -4)"
1709
+ ></svg-icon>
1710
+ <p
1711
+ class="trailer-number"
1712
+ [innerHTML]="
1713
+ trailerOption.trailerNumber | highlightSearch: value()
1714
+ "
1715
+ ></p>
1716
+ </div>
1717
+ <div class="dropdown-subitem-end">
1718
+ <div class="end-item-hover">
1719
+ @let dispatchStatus =
1720
+ trailerOption.dispatchStatus?.statusValue?.name;
1721
+ @if (dispatchStatus) {
1722
+ <div
1723
+ class="dispatch-status"
1724
+ [class]="
1725
+ 'status-' +
1726
+ dispatchStatus
1727
+ ?.toLowerCase()
1728
+ ?.replaceAll(' ', '')
1729
+ ?.replaceAll('.', '')
1730
+ "
1731
+ >
1732
+ @if (dispatchStatus?.toLowerCase() === "repair") {
1733
+ <p class="status-block blue">D</p>
1734
+ <p class="status-block green">L</p>
1735
+ }
1736
+ {{ dispatchStatus }}
1737
+ @if (dispatchStatus?.toLowerCase() === "repair") {
1738
+ <p class="status-block green">P</p>
1739
+ <p class="status-block orange">D</p>
1740
+ }
1741
+ @if (trailerOption.dispatchStatus?.statusCheckInNumber) {
1742
+ <p class="status-block">
1743
+ {{ trailerOption.dispatchStatus?.statusCheckInNumber }}
1744
+ </p>
1745
+ }
1746
+ </div>
1747
+ <p class="dispatch-separator">|</p>
1748
+ }
1749
+ <p class="dispatch-load-count">
1750
+ {{ trailerOption.pendingLoadsCount }}
1751
+ </p>
1752
+ <svg-icon name="cai-load" class="icon-sm"></svg-icon>
1753
+ </div>
1754
+ <div class="end-item-base">
1755
+ @if (
1756
+ trailerOption.location?.city &&
1757
+ trailerOption.location?.stateShortName
1758
+ ) {
1759
+ <p>
1760
+ {{ trailerOption.location?.city }},
1761
+ {{ trailerOption.location?.stateShortName }}
1762
+ </p>
1763
+ }
1764
+ </div>
1765
+ </div>
1766
+ </button>
1767
+ }
1768
+ }
1769
+ } @else {
1770
+ <p class="dropdown-item no-results">No results</p>
1771
+ }
1772
+ </ng-template>
1773
+
1774
+ <ng-template #tollRef>
1775
+ @if (dropdownOptions().length) {
1776
+ @for (toll of dropdownOptions(); track $index; let groupIndex = $index) {
1777
+ @let tollOption = cast(toll, "tollOption")!;
1778
+ @let isGroupFocused =
1779
+ groupedNavigationState?.groupIndex === groupIndex &&
1780
+ groupedNavigationState?.optionIndex === 0;
1781
+ <button
1782
+ tabindex="-1"
1783
+ class="dropdown-item group-item pe-none"
1784
+ [class]="{
1785
+ unfolded: tollOption.tollTransponders?.length || 0 > 0,
1786
+ focused: isGroupFocused,
1787
+ }"
1788
+ >
1789
+ <p>
1790
+ {{ tollOption.groupName }}
1791
+ </p>
1792
+ </button>
1793
+ @let tollTransponders = tollOption.tollTransponders || [];
1794
+ @for (
1795
+ tollTransponder of tollTransponders;
1796
+ track tollTransponder.id;
1797
+ let optionIndex = $index
1798
+ ) {
1799
+ @let isOptionFocused =
1800
+ groupedNavigationState?.groupIndex === groupIndex &&
1801
+ groupedNavigationState?.optionIndex === optionIndex + 1;
1802
+ <!-- +1 since optionIndex is 0 for the group item header -->
1803
+ <button
1804
+ class="dropdown-item"
1805
+ (pointerdown)="handleOption(tollTransponder, $event)"
1806
+ [class]="{
1807
+ selected:
1808
+ cast(selectedOption(), 'tollTransponderOption')?.id ===
1809
+ tollTransponder.id,
1810
+ focused: isOptionFocused,
1811
+ }"
1812
+ >
1813
+ <p
1814
+ class="dropdown-content-with-icon"
1815
+ [innerHTML]="
1816
+ search
1817
+ ? (tollTransponder.name || '' | highlightSearch: value())
1818
+ : tollTransponder.name
1819
+ "
1820
+ ></p>
1821
+ <svg-icon name="cai-checkmark" class="dropdown-item-icon"></svg-icon>
1822
+ </button>
1823
+ }
1824
+ }
1825
+ } @else {
1826
+ <p class="dropdown-item no-results">No results</p>
1827
+ }
1828
+ </ng-template>
1829
+
1830
+ <!-- Dispatcher dropdown -->
1831
+
1832
+ <ng-template #dispatcherRef>
1833
+ @if (dropdownOptions().length) {
1834
+ @for (dispatcher of dropdownOptions(); track $index; let index = $index) {
1835
+ @let dispatcherOption = cast(dispatcher, "dispatcher")!;
1836
+ <button
1837
+ tabindex="-1"
1838
+ class="dropdown-item"
1839
+ id="option-{{ dispatcherOption.id }}"
1840
+ (pointerdown)="handleOption(dispatcherOption, $event)"
1841
+ [class]="{
1842
+ selected:
1843
+ cast(selectedOption(), 'dispatcher')?.id === dispatcherOption.id,
1844
+ focused: focusedOptionIndex === index,
1845
+ }"
1846
+ >
1847
+ <cai-avatar
1848
+ [driver]="{
1849
+ id: dispatcherOption?.id || 0,
1850
+ firstName: (dispatcherOption?.fullName || ' ').split(' ')[0] || '',
1851
+ lastName: (dispatcherOption?.fullName || ' ').split(' ')[1] || '',
1852
+ avatarFile: dispatcherOption?.avatarFile,
1853
+ colorFlag: dispatcherOption?.colorFlag,
1854
+ }"
1855
+ [rounded]="!config().squareAvatar"
1856
+ [hover]="false"
1857
+ ></cai-avatar>
1858
+ <p
1859
+ class="dropdown-content-hazardous"
1860
+ [innerHTML]="
1861
+ search
1862
+ ? (dispatcherOption.fullName || '' | highlightSearch: value())
1863
+ : dispatcherOption.fullName
1864
+ "
1865
+ ></p>
1866
+ <svg-icon name="cai-checkmark" class="dropdown-item-icon"></svg-icon>
1867
+ </button>
1868
+ }
1869
+ } @else {
1870
+ <p class="dropdown-item no-results">No results</p>
1871
+ }
1872
+ </ng-template>
1873
+
1874
+ <ng-template #truckRef>
1875
+ @if (dropdownOptions().length) {
1876
+ @for (truck of dropdownOptions(); track $index; let index = $index) {
1877
+ @let truckOption = cast(truck, "truckOption")!;
1878
+ <button
1879
+ tabindex="-1"
1880
+ class="dropdown-item"
1881
+ id="option-{{ truckOption.id }}"
1882
+ (pointerdown)="handleOption(truckOption, $event)"
1883
+ [class]="{
1884
+ selected:
1885
+ cast(selectedOption(), 'truckOption')?.id === truckOption.id,
1886
+ focused: focusedOptionIndex === index,
1887
+ }"
1888
+ >
1889
+ <p
1890
+ class="dropdown-content-with-icon"
1891
+ [innerHTML]="
1892
+ search
1893
+ ? (truckOption.name || '' | highlightSearch: value())
1894
+ : truckOption.name
1895
+ "
1896
+ ></p>
1897
+ <svg-icon
1898
+ class="truck-trailer-option truck-trailer-icon-colors"
1899
+ [class]="truckOption.logoName.slice(0, -4)"
1900
+ [name]="truckOption.logoName.slice(0, -4)"
1901
+ ></svg-icon>
1902
+ <svg-icon
1903
+ name="cai-checkmark"
1904
+ class="dropdown-item-icon no-margin"
1905
+ ></svg-icon>
1906
+ </button>
1907
+ }
1908
+ } @else {
1909
+ <p class="dropdown-item no-results">No results</p>
1910
+ }
1911
+ </ng-template>
1912
+
1913
+ <ng-template #trailerRef>
1914
+ @if (dropdownOptions().length) {
1915
+ @for (truck of dropdownOptions(); track $index; let index = $index) {
1916
+ @let trailerOption = cast(truck, "trailerOption")!;
1917
+ <button
1918
+ tabindex="-1"
1919
+ class="dropdown-item"
1920
+ id="option-{{ trailerOption.id }}"
1921
+ (pointerdown)="handleOption(trailerOption, $event)"
1922
+ [class]="{
1923
+ selected:
1924
+ cast(selectedOption(), 'trailerOption')?.id === trailerOption.id,
1925
+ focused: focusedOptionIndex === index,
1926
+ }"
1927
+ >
1928
+ <p
1929
+ class="dropdown-content-with-icon"
1930
+ [innerHTML]="
1931
+ search
1932
+ ? (trailerOption.name || '' | highlightSearch: value())
1933
+ : trailerOption.name
1934
+ "
1935
+ ></p>
1936
+
1937
+ <svg-icon
1938
+ class="truck-trailer-option truck-trailer-icon-colors"
1939
+ [class]="trailerOption.logoName.slice(0, -4)"
1940
+ [name]="trailerOption.logoName.slice(0, -4)"
1941
+ ></svg-icon>
1942
+ <svg-icon
1943
+ name="cai-checkmark"
1944
+ class="dropdown-item-icon no-margin"
1945
+ ></svg-icon>
1946
+ </button>
1947
+ }
1948
+ } @else {
1949
+ <p class="dropdown-item no-results">No results</p>
1950
+ }
1951
+ </ng-template>
1952
+
1953
+ <ng-template #providerRef>
1954
+ @if (dropdownOptions().length) {
1955
+ @for (provider of dropdownOptions(); track $index; let index = $index) {
1956
+ @let providerOption = cast(provider, "provider")!;
1957
+ <button
1958
+ tabindex="-1"
1959
+ class="dropdown-item"
1960
+ id="option-{{ providerOption?.id }}"
1961
+ (pointerdown)="handleOption(providerOption, $event)"
1962
+ [class]="{
1963
+ selected:
1964
+ cast(selectedOption(), 'provider')?.id === providerOption?.id,
1965
+ focused: focusedOptionIndex === index,
1966
+ }"
1967
+ >
1968
+ <svg-icon
1969
+ class="full-icon"
1970
+ [name]="'cai-' + providerOption?.name?.toLowerCase()"
1971
+ ></svg-icon>
1972
+ <svg-icon name="cai-checkmark" class="dropdown-item-icon"></svg-icon>
1973
+ </button>
1974
+ }
1975
+ } @else {
1976
+ <p class="dropdown-item no-results">No results</p>
1977
+ }
1978
+ </ng-template>
1979
+
1980
+ <!-- Hazardous dropdown -->
1981
+ <ng-template #hazardousRef>
1982
+ @if (dropdownOptions().length) {
1983
+ @for (hazardous of dropdownOptions(); track $index; let index = $index) {
1984
+ @let hazardousOption = cast(hazardous, "hazardous")!;
1985
+ <button
1986
+ tabindex="-1"
1987
+ class="dropdown-item"
1988
+ id="option-{{ hazardousOption.id }}"
1989
+ (pointerdown)="handleOption(hazardousOption, $event)"
1990
+ [class]="{
1991
+ selected:
1992
+ cast(selectedOption(), 'hazardous')?.id === hazardousOption.id,
1993
+ focused: focusedOptionIndex === index,
1994
+ }"
1995
+ >
1996
+ <svg-icon [name]="hazardousOption.logoName?.slice(0, -4)"></svg-icon>
1997
+ <p
1998
+ class="dropdown-content-hazardous"
1999
+ [innerHTML]="
2000
+ search
2001
+ ? (hazardousOption.description || '' | highlightSearch: value())
2002
+ : hazardousOption.description
2003
+ "
2004
+ ></p>
2005
+ <svg-icon name="cai-checkmark" class="dropdown-item-icon"></svg-icon>
2006
+ </button>
2007
+ }
2008
+ } @else {
2009
+ <p class="dropdown-item no-results">No results</p>
2010
+ }
2011
+ </ng-template>
2012
+
2013
+ <ng-template #pmRef>
2014
+ @if (dropdownOptions().length) {
2015
+ @for (pm of dropdownOptions(); track $index; let index = $index) {
2016
+ @let pmOption = cast(pm, "pmOption")!;
2017
+ <button
2018
+ tabindex="-1"
2019
+ class="dropdown-item"
2020
+ id="option-{{ pmOption.id }}"
2021
+ (pointerdown)="handleOption(pmOption, $event)"
2022
+ [class]="{
2023
+ selected: cast(selectedOption(), 'pmOption')?.id === pmOption.id,
2024
+ focused: focusedOptionIndex === index,
2025
+ }"
2026
+ >
2027
+ <svg-icon
2028
+ class="icon"
2029
+ [name]="pmOption.title | remapPmIcons"
2030
+ ></svg-icon>
2031
+ <p
2032
+ class="dropdown-content-with-icon"
2033
+ [innerHTML]="
2034
+ search
2035
+ ? (pmOption.title || '' | highlightSearch: value())
2036
+ : pmOption.title
2037
+ "
2038
+ ></p>
2039
+ <svg-icon name="cai-checkmark" class="dropdown-item-icon"></svg-icon>
2040
+ </button>
2041
+ }
2042
+ } @else {
2043
+ <p class="dropdown-item no-results">No results</p>
2044
+ }
2045
+ </ng-template>
2046
+
2047
+ <ng-template #colorRef>
2048
+ @if (dropdownOptions().length) {
2049
+ @for (color of dropdownOptions(); track $index; let index = $index) {
2050
+ @let colorOption = cast(color, "colorOption")!;
2051
+ <button
2052
+ tabindex="-1"
2053
+ class="dropdown-item color-item"
2054
+ id="option-{{ colorOption.id }}"
2055
+ (pointerdown)="handleOption(colorOption, $event)"
2056
+ [class]="{
2057
+ selected:
2058
+ cast(selectedOption(), 'colorOption')?.id === colorOption.id,
2059
+ focused: focusedOptionIndex === index,
2060
+ }"
2061
+ >
2062
+ <svg-icon
2063
+ class="icon cai-color"
2064
+ [name]="'cai-color'"
2065
+ [style.--color]="colorOption?.code"
2066
+ [style.--hover-color]="colorOption?.hoverCode"
2067
+ ></svg-icon>
2068
+ <p
2069
+ class="dropdown-content-with-icon"
2070
+ [innerHTML]="
2071
+ search
2072
+ ? (colorOption.name || '' | highlightSearch: value())
2073
+ : colorOption.name
2074
+ "
2075
+ ></p>
2076
+ <svg-icon name="cai-checkmark" class="dropdown-item-icon"></svg-icon>
2077
+ </button>
2078
+ }
2079
+ } @else {
2080
+ <p class="dropdown-item no-results">No results</p>
2081
+ }
2082
+ </ng-template>
2083
+
2084
+ <ng-template #stateRef>
2085
+ @if (dropdownOptions().length) {
2086
+ @for (state of dropdownOptions(); track $index; let index = $index) {
2087
+ @let stateOption = cast(state, "state")!;
2088
+ <button
2089
+ tabindex="-1"
2090
+ class="dropdown-item"
2091
+ id="option-{{ stateOption.id }}"
2092
+ (pointerdown)="handleOption(stateOption, $event)"
2093
+ [class]="{
2094
+ selected: cast(selectedOption(), 'state')?.id === stateOption.id,
2095
+ focused: focusedOptionIndex === index,
2096
+ }"
2097
+ >
2098
+ <svg-icon
2099
+ class="icon"
2100
+ [name]="
2101
+ 'cai-' +
2102
+ stateOption?.countryType?.name?.toLowerCase() +
2103
+ '-' +
2104
+ stateOption?.stateShortName?.toLowerCase()
2105
+ "
2106
+ ></svg-icon>
2107
+ <p
2108
+ class="dropdown-content-with-icon"
2109
+ [innerHTML]="
2110
+ search
2111
+ ? (stateOption.stateShortName +
2112
+ ' ' +
2113
+ (config().fullState
2114
+ ? ' (' + stateOption?.stateName + ')'
2115
+ : '') || '' | highlightSearch: value())
2116
+ : stateOption.stateShortName +
2117
+ ' ' +
2118
+ (config().fullState ? ' (' + stateOption?.stateName + ')' : '')
2119
+ "
2120
+ ></p>
2121
+ <svg-icon name="cai-checkmark" class="dropdown-item-icon"></svg-icon>
2122
+ </button>
2123
+ }
2124
+ } @else {
2125
+ <p class="dropdown-item no-results">No results</p>
2126
+ }
2127
+ </ng-template>
2128
+
2129
+ <ng-template #fuelStopTransactionRef>
2130
+ @if (dropdownOptions().length) {
2131
+ @for (
2132
+ franchise of dropdownOptions();
2133
+ track franchise.id;
2134
+ let groupIndex = $index
2135
+ ) {
2136
+ @let isGroupFocused =
2137
+ groupedNavigationState?.groupIndex === groupIndex &&
2138
+ groupedNavigationState?.optionIndex === 0;
2139
+ @let franchiseOption = cast(franchise, "franchise")!;
2140
+ @if (franchiseOption?.count !== null) {
2141
+ <div
2142
+ class="dropdown-group"
2143
+ [class.no-items]="!franchiseOption?.count"
2144
+ [class]="{
2145
+ active: openGroup() === franchiseOption.id,
2146
+ }"
2147
+ [style.--max-height]="
2148
+ openGroup() === franchiseOption.id
2149
+ ? 30 * ((franchiseOption.fuelStopStores?.length || 0) + 1) + 'px'
2150
+ : '26px'
2151
+ "
2152
+ >
2153
+ <button
2154
+ tabindex="-1"
2155
+ class="dropdown-item group-item"
2156
+ (pointerdown)="fold(franchiseOption.id, $event, franchiseOption)"
2157
+ [class]="{
2158
+ unfolded: openGroup() === franchiseOption.id,
2159
+ focused: isGroupFocused,
2160
+ }"
2161
+ >
2162
+ <p
2163
+ [innerHTML]="
2164
+ franchiseOption?.businessName || '' | highlightSearch: value()
2165
+ "
2166
+ ></p>
2167
+ <p class="counter">{{ franchiseOption.count }}</p>
2168
+ <svg-icon
2169
+ name="cai-arrow-primary-up"
2170
+ class="group-icon icon"
2171
+ ></svg-icon>
2172
+ </button>
2173
+ @if (openGroup() === franchiseOption.id) {
2174
+ @if (franchiseOption.fuelStopStores?.length || 0 > 0) {
2175
+ @for (
2176
+ fuelStopStore of franchiseOption.fuelStopStores;
2177
+ track fuelStopStore.id
2178
+ ) {
2179
+ @let isOptionFocused =
2180
+ groupedNavigationState?.groupIndex === groupIndex &&
2181
+ groupedNavigationState?.optionIndex === $index + 1;
2182
+ <!-- +1 since optionIndex is 0 for the group item header -->
2183
+ <button
2184
+ tabindex="-1"
2185
+ class="dropdown-item fuel-stop-transaction-store"
2186
+ [class]="{
2187
+ focused: isOptionFocused,
2188
+ }"
2189
+ (pointerdown)="handleOption(fuelStopStore, $event)"
2190
+ >
2191
+ <p
2192
+ [innerHTML]="
2193
+ fuelStopStore?.store ?? '' | highlightSearch: value()
2194
+ "
2195
+ ></p>
2196
+ @let city = fuelStopStore?.address?.city ?? "";
2197
+ @let state = fuelStopStore?.address?.stateShortName ?? "";
2198
+ @let zip = fuelStopStore?.address?.zipCode ?? "";
2199
+ <p
2200
+ class="fuel-stop-transaction-store-address"
2201
+ [innerHTML]="
2202
+ city + (state || zip ? ', ' : '') + state + ' ' + zip
2203
+ | highlightSearch: value()
2204
+ "
2205
+ ></p>
2206
+
2207
+ @if (fuelStopStore?.["favourite"]) {
2208
+ <svg-icon
2209
+ name="cai-favorite"
2210
+ class="favorite-icon"
2211
+ ></svg-icon>
2212
+ }
2213
+ </button>
2214
+ }
2215
+ <!-- Infinite scroll trigger - emits event when item comes into view -->
2216
+ <div
2217
+ class="dropdown-infinite-scroll-item"
2218
+ caiIntersectionObserver
2219
+ [threshold]="0.1"
2220
+ (inView)="onDropdownScrolledToBottom(true)"
2221
+ ></div>
2222
+ } @else {
2223
+ <p class="dropdown-item no-results">No results</p>
2224
+ }
2225
+ }
2226
+ </div>
2227
+ } @else {
2228
+ <button
2229
+ tabindex="-1"
2230
+ class="dropdown-item"
2231
+ [class.focused]="
2232
+ groupedNavigationState?.groupIndex === groupIndex &&
2233
+ groupedNavigationState?.optionIndex === 0
2234
+ "
2235
+ (pointerdown)="handleOption(franchiseOption, $event)"
2236
+ >
2237
+ <p
2238
+ class="fuel-stop-transaction-nostore"
2239
+ [innerHTML]="
2240
+ franchiseOption?.businessName || '' | highlightSearch: value()
2241
+ "
2242
+ ></p>
2243
+ </button>
2244
+ }
2245
+ }
2246
+ } @else {
2247
+ <p class="dropdown-item no-results">No results</p>
2248
+ }
2249
+ </ng-template>
2250
+
2251
+ <!-- #endregion -->
2252
+
2253
+ <!-- #region Selected options -->
2254
+
2255
+ <!-- selected dispatch -->
2256
+ <ng-template #selectedDispatchRef>
2257
+ @let dispatchOption = cast(selectedOption(), "dispatch");
2258
+ @if (dispatchOption && !inputRef.value && !isAdding()) {
2259
+ <div class="dropdown-selected">
2260
+ <div class="dropdown-subitem truck-item">
2261
+ <svg-icon
2262
+ class="truck-icon"
2263
+ [name]="dispatchOption!.truck.truckType.logoName.slice(0, -4)"
2264
+ ></svg-icon>
2265
+ <p class="truck-number">
2266
+ {{ dispatchOption!.truck.truckNumber }}
2267
+ </p>
2268
+ </div>
2269
+ <div class="dropdown-subitem trailer-item">
2270
+ @if (dispatchOption!.trailer) {
2271
+ <svg-icon
2272
+ class="trailer-icon"
2273
+ [name]="
2274
+ cast(
2275
+ selectedOption(),
2276
+ 'dispatch'
2277
+ )!.trailer?.trailerType?.logoName?.slice(0, -4)
2278
+ "
2279
+ ></svg-icon>
2280
+ <p class="trailer-number">
2281
+ {{ dispatchOption!.trailer?.trailerNumber }}
2282
+ </p>
2283
+ }
2284
+ </div>
2285
+ <div class="dropdown-subitem">
2286
+ @if (dispatchOption!.coDriver) {
2287
+ <svg-icon class="dispatch-icon" name="cai-people"></svg-icon>
2288
+ <p class="driver-name">
2289
+ {{
2290
+ dispatchOption!.driver.firstName +
2291
+ " & " +
2292
+ dispatchOption!.coDriver?.firstName
2293
+ }}
2294
+ </p>
2295
+ } @else {
2296
+ <cai-avatar
2297
+ [driver]="dispatchOption!.driver"
2298
+ [size]="18"
2299
+ [hover]="false"
2300
+ ></cai-avatar>
2301
+ <p class="driver-name">
2302
+ {{
2303
+ dispatchOption!.driver.firstName +
2304
+ " " +
2305
+ dispatchOption!.driver.lastName
2306
+ }}
2307
+ </p>
2308
+ }
2309
+ </div>
2310
+ <p class="selected-end-item">
2311
+ {{ dispatchOption!.payType }}
2312
+ </p>
2313
+ </div>
2314
+ } @else {
2315
+ @if (!inputRef.value && this.config().dropdown == "dispatch") {
2316
+ <p class="dropdown-selected">Unassigned</p>
2317
+ }
2318
+ }
2319
+ </ng-template>
2320
+
2321
+ <!-- selected broker -->
2322
+ <ng-template #selectedBrokerRef>
2323
+ @let brokerOption = cast(selectedOption(), "broker");
2324
+ @if (brokerOption && !inputRef.value) {
2325
+ <div class="dropdown-selected">
2326
+ @if ((brokerOption!.availableCredit || 0) < 0) {
2327
+ <svg-icon name="cai-status-warning-lite" class="icon fraud"></svg-icon>
2328
+ }
2329
+ <p class="dropdown-selected-content">{{ brokerOption!.businessName }}</p>
2330
+ <div class="selected-end-item">
2331
+ @if (!brokerOption!.creditLimit) {
2332
+ <p>Unlimited</p>
2333
+ } @else {
2334
+ <p>
2335
+ {{ brokerOption!.availableCredit || 0 | currency }}
2336
+ </p>
2337
+ <div
2338
+ class="progress-bar"
2339
+ [style.--progress]="
2340
+ (
2341
+ brokerOption!
2342
+ | brokerProgress: brokerOption!.dnu || brokerOption!.ban
2343
+ ).activePercentageOfPaid + '%'
2344
+ "
2345
+ [class]="
2346
+ (
2347
+ brokerOption!
2348
+ | brokerProgress: brokerOption!.dnu || brokerOption!.ban
2349
+ ).status
2350
+ "
2351
+ ></div>
2352
+ }
2353
+ </div>
2354
+ </div>
2355
+ }
2356
+ </ng-template>
2357
+
2358
+ <ng-template #selectedContactRef>
2359
+ @let contactOption = cast(selectedOption(), "contact");
2360
+ @if (contactOption && !inputRef.value) {
2361
+ <div class="dropdown-selected">
2362
+ <p class="dropdown-selected-content">{{ contactOption?.contactName }}</p>
2363
+ <div class="selected-end-item">
2364
+ <p>{{ contactOption?.phone }}</p>
2365
+ </div>
2366
+ </div>
2367
+ }
2368
+ </ng-template>
2369
+
2370
+ <ng-template #selectedShipperRef>
2371
+ @let shipperOption = cast(selectedOption(), "shipper");
2372
+ @if (shipperOption && !inputRef.value) {
2373
+ <div class="dropdown-selected">
2374
+ <p class="dropdown-selected-content">{{ shipperOption?.businessName }}</p>
2375
+ <div class="selected-end-item">
2376
+ <p>{{ shipperOption?.address?.address }}</p>
2377
+ </div>
2378
+ </div>
2379
+ }
2380
+ </ng-template>
2381
+
2382
+ <ng-template #selectedOwnerRef>
2383
+ @let ownerOption = cast(selectedOption(), "owner");
2384
+ @if (ownerOption && !inputRef.value) {
2385
+ <div class="dropdown-selected">
2386
+ <p class="owner-ein">{{ ownerOption?.ein }}</p>
2387
+ <p class="">{{ ownerOption?.name }}</p>
2388
+ </div>
2389
+ }
2390
+ </ng-template>
2391
+
2392
+ <ng-template #selectedFuelcardRef>
2393
+ @let fuelcardOption = cast(selectedOption(), "fuelCard");
2394
+ @if (fuelcardOption && !inputRef.value) {
2395
+ <div class="dropdown-selected">
2396
+ <p class="fuelcard-number">
2397
+ {{ fuelcardOption?.number }}
2398
+ </p>
2399
+ <p class="fuelcard-brand">
2400
+ {{ fuelcardOption?.brand }}
2401
+ </p>
2402
+ <p class="">
2403
+ {{ fuelcardOption?.account }}
2404
+ </p>
2405
+ </div>
2406
+ }
2407
+ </ng-template>
2408
+
2409
+ <ng-template #selectedBankRef>
2410
+ @let bankOption = cast(selectedOption(), "bank");
2411
+ @if (bankOption && !inputRef.value) {
2412
+ <div class="dropdown-selected">
2413
+ @if (bankOption?.logoName) {
2414
+ <svg-icon
2415
+ class="option-icon full-size"
2416
+ [name]="bankOption?.logoName?.slice(0, -4) || ''"
2417
+ ></svg-icon>
2418
+ } @else {
2419
+ <p class="dropdown-selected-content">{{ bankOption?.name }}</p>
2420
+ }
2421
+ </div>
2422
+ }
2423
+ </ng-template>
2424
+
2425
+ <ng-template #selectedProviderRef>
2426
+ @let providerOption = cast(selectedOption(), "provider");
2427
+ @if (providerOption && !inputRef.value) {
2428
+ <div class="dropdown-selected">
2429
+ <svg-icon
2430
+ class="option-icon full-size"
2431
+ [name]="'cai-' + providerOption?.name?.toLowerCase()"
2432
+ ></svg-icon>
2433
+ </div>
2434
+ }
2435
+ </ng-template>
2436
+
2437
+ <ng-template #selectedMakeRef>
2438
+ @let makeOption = cast(selectedOption(), "make");
2439
+ @if (makeOption && !inputRef.value) {
2440
+ <div class="dropdown-selected">
2441
+ @if (makeOption?.logoName) {
2442
+ <svg-icon
2443
+ class="option-icon full-size"
2444
+ [name]="makeOption?.logoName?.slice(0, -4) || ''"
2445
+ ></svg-icon>
2446
+ } @else {
2447
+ <p class="dropdown-selected-content">{{ makeOption?.name }}</p>
2448
+ }
2449
+ </div>
2450
+ }
2451
+ </ng-template>
2452
+
2453
+ <ng-template #selectedStateRef>
2454
+ @let stateOption = cast(selectedOption(), "state");
2455
+ @if (stateOption && !inputRef.value) {
2456
+ <div class="dropdown-selected">
2457
+ <svg-icon
2458
+ class="option-icon"
2459
+ [name]="
2460
+ 'cai-' +
2461
+ stateOption?.countryType?.name?.toLowerCase() +
2462
+ '-' +
2463
+ stateOption?.stateShortName?.toLowerCase()
2464
+ "
2465
+ ></svg-icon>
2466
+ <p class="dropdown-selected-content">
2467
+ {{ stateOption?.stateShortName }}
2468
+ {{ config().fullState ? " (" + stateOption?.stateName + ")" : "" }}
2469
+ </p>
2470
+ </div>
2471
+ }
2472
+ </ng-template>
2473
+
2474
+ <ng-template #selectedDispatcherRef>
2475
+ @let dispatcherOption = cast(selectedOption(), "dispatcher");
2476
+ @if (dispatcherOption && !inputRef.value) {
2477
+ <div class="dropdown-selected">
2478
+ <cai-avatar
2479
+ [driver]="{
2480
+ id: dispatcherOption?.id || 0,
2481
+ firstName: (dispatcherOption?.fullName || ' ').split(' ')[0] || '',
2482
+ lastName: (dispatcherOption?.fullName || ' ').split(' ')[1] || '',
2483
+ avatarFile: dispatcherOption?.avatarFile,
2484
+ colorFlag: dispatcherOption?.colorFlag,
2485
+ }"
2486
+ [rounded]="!config().squareAvatar"
2487
+ ></cai-avatar>
2488
+ <p class="dropdown-selected-content">{{ dispatcherOption?.fullName }}</p>
2489
+ </div>
2490
+ }
2491
+ </ng-template>
2492
+
2493
+ <ng-template #selectedTruckRef>
2494
+ @let truckOption = cast(selectedOption(), "truckOption");
2495
+ @if (truckOption && !inputRef.value) {
2496
+ <div class="dropdown-selected">
2497
+ <svg-icon
2498
+ class="option-icon"
2499
+ [name]="truckOption?.logoName?.slice(0, -4)"
2500
+ ></svg-icon>
2501
+ <p class="dropdown-selected-content">{{ truckOption?.name }}</p>
2502
+ </div>
2503
+ }
2504
+ </ng-template>
2505
+
2506
+ <ng-template #selectedTrailerRef>
2507
+ @let trailerOption = cast(selectedOption(), "trailerOption");
2508
+ @if (trailerOption && !inputRef.value) {
2509
+ <div class="dropdown-selected">
2510
+ <svg-icon
2511
+ class="option-icon"
2512
+ [name]="trailerOption?.logoName?.slice(0, -4)"
2513
+ ></svg-icon>
2514
+ <p class="dropdown-selected-content">{{ trailerOption?.name }}</p>
2515
+ </div>
2516
+ }
2517
+ </ng-template>
2518
+
2519
+ <ng-template #selectedHazardousRef>
2520
+ @let hazardousOption = cast(selectedOption(), "hazardous");
2521
+ @if (hazardousOption && !inputRef.value) {
2522
+ <div class="dropdown-selected">
2523
+ <svg-icon
2524
+ class="hazard-icon"
2525
+ [name]="hazardousOption?.logoName?.slice(0, -4)"
2526
+ ></svg-icon>
2527
+ <p class="dropdown-selected-content dropdown-selected-hazardous">
2528
+ {{ hazardousOption?.description }}
2529
+ </p>
2530
+ </div>
2531
+ }
2532
+ </ng-template>
2533
+
2534
+ <ng-template #selectedPmRef>
2535
+ @let pmOption = cast(selectedOption(), "pmOption");
2536
+ @if (pmOption && !inputRef.value) {
2537
+ <div class="dropdown-selected">
2538
+ <svg-icon
2539
+ class="option-icon"
2540
+ [name]="pmOption?.title | remapPmIcons"
2541
+ ></svg-icon>
2542
+ <p class="dropdown-selected-content">
2543
+ {{ pmOption?.title }}
2544
+ </p>
2545
+ </div>
2546
+ }
2547
+ </ng-template>
2548
+
2549
+ <ng-template #selectedColorRef>
2550
+ @let colorOption = cast(selectedOption(), "colorOption");
2551
+ @if (colorOption && !inputRef.value) {
2552
+ <div class="dropdown-selected">
2553
+ <svg-icon
2554
+ class="option-icon cai-color"
2555
+ [name]="'cai-color'"
2556
+ [style.--color]="colorOption?.code"
2557
+ [style.--hover-color]="colorOption?.hoverCode"
2558
+ ></svg-icon>
2559
+ <p class="dropdown-selected-content">
2560
+ {{ colorOption?.name }}
2561
+ </p>
2562
+ </div>
2563
+ }
2564
+ </ng-template>
2565
+
2566
+ <ng-template #selectedTollRef>
2567
+ @let tollOption = cast(selectedOption(), "tollTransponderOption");
2568
+ @if (tollOption && !inputRef.value) {
2569
+ <div class="dropdown-selected">
2570
+ <p class="dropdown-selected-content">
2571
+ {{ tollOption?.name }}
2572
+ </p>
2573
+ </div>
2574
+ }
2575
+ </ng-template>
2576
+
2577
+ <ng-template #selectedSplitDriverRef>
2578
+ @let splitDriverOption = cast(selectedOption(), "splitDriver");
2579
+ @if (splitDriverOption && !inputRef.value) {
2580
+ <div class="dropdown-selected">
2581
+ <div class="dropdown-selected-content">
2582
+ <div class="dropdown-subitem">
2583
+ <cai-avatar [driver]="splitDriverOption" [size]="18"></cai-avatar>
2584
+ <p class="driver-name">
2585
+ {{ splitDriverOption.firstName + " " + splitDriverOption.lastName }}
2586
+ </p>
2587
+ </div>
2588
+ </div>
2589
+
2590
+ <p class="selected-end-item">
2591
+ {{ splitDriverOption.payTypeValue }}
2592
+ </p>
2593
+ </div>
2594
+ }
2595
+ </ng-template>
2596
+
2597
+ <ng-template #selectedSplitTruckRef>
2598
+ @let splitTruckOption = cast(selectedOption(), "splitTruck");
2599
+ @if (splitTruckOption && !inputRef.value) {
2600
+ <div class="dropdown-selected">
2601
+ <div class="dropdown-selected-content">
2602
+ <div class="dropdown-subitem trailer-item">
2603
+ <svg-icon
2604
+ class="trailer-icon"
2605
+ [name]="splitTruckOption!.truckType.logoName.slice(0, -4)"
2606
+ ></svg-icon>
2607
+ <p class="trailer-number">
2608
+ {{ splitTruckOption!.truckNumber }}
2609
+ </p>
2610
+ </div>
2611
+ </div>
2612
+ <p class="selected-end-item">
2613
+ @if (
2614
+ splitTruckOption!.location?.city &&
2615
+ splitTruckOption!.location?.stateShortName
2616
+ ) {
2617
+ {{ splitTruckOption!.location?.city }},
2618
+ {{ splitTruckOption!.location?.stateShortName }}
2619
+ }
2620
+ </p>
2621
+ </div>
2622
+ }
2623
+ </ng-template>
2624
+
2625
+ <ng-template #selectedSplitTrailerRef>
2626
+ @let splitTrailerOption = cast(selectedOption(), "splitTrailer");
2627
+ @if (splitTrailerOption && !inputRef.value) {
2628
+ <div class="dropdown-selected">
2629
+ <div class="dropdown-selected-content">
2630
+ <div class="dropdown-subitem truck-item">
2631
+ <svg-icon
2632
+ class="truck-icon"
2633
+ [name]="splitTrailerOption!.trailerType.logoName.slice(0, -4)"
2634
+ ></svg-icon>
2635
+ <p class="truck-number">
2636
+ {{ splitTrailerOption!.trailerNumber }}
2637
+ </p>
2638
+ </div>
2639
+ </div>
2640
+ <p class="selected-end-item">
2641
+ @if (
2642
+ splitTrailerOption!.location?.city &&
2643
+ splitTrailerOption!.location?.stateShortName
2644
+ ) {
2645
+ {{ splitTrailerOption!.location?.city }},
2646
+ {{ splitTrailerOption!.location?.stateShortName }}
2647
+ }
2648
+ </p>
2649
+ </div>
2650
+ }
2651
+ </ng-template>
2652
+
2653
+ <ng-template #passwordTooltip>
2654
+ {{ visible() ? "Hide" : "Show" }}
2655
+ </ng-template>
2656
+
2657
+ <ng-template #errorTooltip>
2658
+ @if (
2659
+ (config().errorBehavior === "floating" ||
2660
+ (config().errorBehavior === "static" && hasText()) ||
2661
+ config().inTable) &&
2662
+ invalid &&
2663
+ !dropdown.isOpen()
2664
+ ) {
2665
+ {{ (ngControl?.errors | errorMessage: config().customErrors)[0] }}
2666
+ }
2667
+ </ng-template>
2668
+
2669
+ <!-- #endregion -->