carriera-intern 1.1.132 → 1.1.133

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.
@@ -237,6 +237,7 @@ const DropdownTypes = [
237
237
  'bank',
238
238
  'dispatcher',
239
239
  'driver-owner',
240
+ 'truck-owner',
240
241
  'truck',
241
242
  'trailer',
242
243
  'subcontent',
@@ -946,6 +947,20 @@ class InputHelper {
946
947
  }
947
948
  newValue = '';
948
949
  break;
950
+ case 'truck-owner':
951
+ const truckOwner = options.find((truckOwner) => {
952
+ if (optionValue && this.hasProperty(truckOwner, optionValue)) {
953
+ return truckOwner[optionValue]?.toString() === value?.toString();
954
+ }
955
+ else {
956
+ return truckOwner.id?.toString() === value?.toString();
957
+ }
958
+ });
959
+ if (truckOwner) {
960
+ selectedOption = truckOwner;
961
+ }
962
+ newValue = '';
963
+ break;
949
964
  case 'truck':
950
965
  const truck = options.find((truck) => {
951
966
  if (optionValue && this.hasProperty(truck, optionValue)) {
@@ -1381,6 +1396,17 @@ class InputHelper {
1381
1396
  return driverOwners.filter((driverOwner) => driverOwner.fullName?.toLowerCase().includes(searchValue));
1382
1397
  }
1383
1398
  return driverOwners;
1399
+ case 'truck-owner':
1400
+ const truckOwners = options || [];
1401
+ if (!shouldSearch) {
1402
+ return truckOwners;
1403
+ }
1404
+ if (searchValue) {
1405
+ return truckOwners.filter((truckOwner) => (truckOwner.truckNumber?.toLowerCase() || '')
1406
+ .concat(' ', truckOwner.model?.toLowerCase() || '')
1407
+ .includes(searchValue));
1408
+ }
1409
+ return truckOwners;
1384
1410
  case 'truck':
1385
1411
  const trucks = options || [];
1386
1412
  if (!shouldSearch) {
@@ -2042,6 +2068,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.32", ngImpo
2042
2068
  }]
2043
2069
  }] });
2044
2070
 
2071
+ class TruckOwnershipLabelPipe {
2072
+ transform(driverType) {
2073
+ switch (driverType) {
2074
+ case 'CompanyDriver':
2075
+ return 'Company Owned';
2076
+ case 'ThirdPartyDriver':
2077
+ return 'Outside Company Owned';
2078
+ case 'OwnerOperator':
2079
+ return 'Owner-Operator Owned';
2080
+ default:
2081
+ return '';
2082
+ }
2083
+ }
2084
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.32", ngImport: i0, type: TruckOwnershipLabelPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2085
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.32", ngImport: i0, type: TruckOwnershipLabelPipe, isStandalone: true, name: "truckOwnershipLabel" });
2086
+ }
2087
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.32", ngImport: i0, type: TruckOwnershipLabelPipe, decorators: [{
2088
+ type: Pipe,
2089
+ args: [{
2090
+ name: 'truckOwnershipLabel',
2091
+ }]
2092
+ }] });
2093
+
2045
2094
  class MaskHelper {
2046
2095
  static extractUserInput(value) {
2047
2096
  return value.replace(/[^a-zA-Z0-9]/g, '');
@@ -4315,7 +4364,7 @@ class InputComponent {
4315
4364
  }
4316
4365
  }
4317
4366
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.32", ngImport: i0, type: InputComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
4318
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.32", type: InputComponent, isStandalone: true, selector: "cai-input", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, preselectedOptions: { classPropertyName: "preselectedOptions", publicName: "preselectedOptions", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, hideValidation: { classPropertyName: "hideValidation", publicName: "hideValidation", isSignal: true, isRequired: false, transformFunction: null }, showNoResults: { classPropertyName: "showNoResults", publicName: "showNoResults", isSignal: true, isRequired: false, transformFunction: null }, preselectedUnit: { classPropertyName: "preselectedUnit", publicName: "preselectedUnit", isSignal: true, isRequired: false, transformFunction: null }, unassignedCount: { classPropertyName: "unassignedCount", publicName: "unassignedCount", isSignal: true, isRequired: false, transformFunction: null }, forceInvalidStyling: { classPropertyName: "forceInvalidStyling", publicName: "forceInvalidStyling", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onBlur: "onBlur", onFocused: "onFocused", onReset: "onReset", onValueChange: "onValueChange", onOptionAdded: "onOptionAdded", onAdd: "onAdd", onSelectionChange: "onSelectionChange", onSelectedObject: "onSelectedObject", onSelectedGroup: "onSelectedGroup", onClear: "onClear", onAutofill: "onAutofill", onScrolledToBottom: "onScrolledToBottom", onScrolledToBottomGroup: "onScrolledToBottomGroup", onSearch: "onSearch", onValueAdded: "onValueAdded", onRemove: "onRemove", onHoverRemove: "onHoverRemove" }, host: { listeners: { "realValueChange": "onRealValueChange($event)" } }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["inputRef"], descendants: true }, { propertyName: "containerRef", first: true, predicate: ["containerRef"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }, { propertyName: "closeTooltip", first: true, predicate: ["closeTooltip"], descendants: true }, { propertyName: "PasswordDirective", first: true, predicate: PasswordDirective, descendants: true }, { propertyName: "NumberFormatDirective", first: true, predicate: NumberFormatDirective, descendants: true }, { propertyName: "MaskDirective", first: true, predicate: MaskDirective, descendants: true }], ngImport: i0, template: "<!-- #region Variables -->\n@let valid =\n ngControl?.valid &&\n (ngControl?.touched || ngControl?.dirty) &&\n !isAdding() &&\n !isDisabled();\n@let invalid =\n ngControl?.invalid &&\n (ngControl?.touched || ngControl?.dirty) &&\n !isAdding() &&\n !isDisabled();\n@let subcontent =\n config().subcontent ||\n (config().dropdown === \"subcontent\" &&\n selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![config().optionLabel || \"label\"]);\n\n@let name = config().name;\n@let password = config().type === \"password\" || config().type === \"account\";\n\n@let optionLabel = this.config().optionLabel || \"label\";\n@let dropdownType = this.config().dropdown;\n\n@let focusedOptionIndex = keyboardNavigationState().singleIndex;\n@let groupedNavigationState = keyboardNavigationState().groupedNavigationState;\n\n@let tooltipClass =\n config().inverse\n ? \"tooltip input-tooltip tooltip-bg-white-700 tooltip-text-black-500\"\n : \"tooltip input-tooltip\";\n\n<!-- #region Multiple selection -->\n@if (config().dropdown === \"multiple\" && !!multipleSelectedOptions().length) {\n <div\n (pointerdown)=\"focus($event)\"\n (mouseenter)=\"toggleHovered(true)\"\n (mouseleave)=\"toggleHovered(false)\"\n class=\"multiple-container\"\n [class]=\"{\n focused: focused(),\n hovered: hovered(),\n }\"\n >\n <label class=\"multiple-label\">{{ name }}</label>\n\n @for (option of multipleSelectedOptions(); track $index) {\n <div class=\"multiple-selected\">\n <p>{{ cast(option, \"dropdownOption\")![optionLabel || \"label\"] }}</p>\n <button\n type=\"button\"\n class=\"\"\n (pointerdown)=\"handleOption(option, $event)\"\n [tabIndex]=\"-1\"\n ngbTooltip=\"Clear\"\n [placement]=\"'top'\"\n [tooltipClass]=\"tooltipClass\"\n [autoClose]=\"true\"\n #closeTooltip=\"ngbTooltip\"\n [container]=\"'body'\"\n >\n <svg-icon\n name=\"cai-cancel\"\n class=\"multiple-remove-button multiple-remove-icon bg-icon\"\n ></svg-icon>\n </button>\n </div>\n }\n </div>\n}\n<!-- #endregion -->\n\n@let hasFloatingError =\n invalid &&\n (config().errorBehavior === \"floating\" ||\n (!!config().inTable && config().placeholderBehavior !== \"static\"));\n\n<div\n class=\"app-input-container\"\n [class]=\"\n {\n config: config(),\n hideValidation: hideValidation(),\n isPasswordVisible: visible(),\n isInvalid: !!invalid || forceInvalidStyling(),\n isValid: !!valid && !forceInvalidStyling(),\n isHovered: hovered(),\n hasText: hasText(),\n isAdding: isAdding(),\n selectedOption: selectedOption(),\n } | inputClass\n \"\n ngbDropdown\n [autoClose]=\"false\"\n #dropdown=\"ngbDropdown\"\n dropdownClass=\"cai-dropdown\"\n #containerRef\n [ngbTooltip]=\"errorTooltip\"\n [disableTooltip]=\"!hasFloatingError\"\n [container]=\"'body'\"\n [placement]=\"['bottom', 'top']\"\n tooltipClass=\"tooltip tooltip-bg-red-500 input-tooltip \"\n (pointerdown)=\"focus($event)\"\n (mouseenter)=\"dropdownType === 'multiple' && toggleHovered(true)\"\n (mouseleave)=\"dropdownType === 'multiple' && toggleHovered(false)\"\n>\n @if (config().icon && !password && !config().withButtons) {\n <div\n class=\"icon-container\"\n (pointerdown)=\"focus($event)\"\n [class]=\"{\n 'colored-icon': config().iconColor,\n }\"\n [style.--icon-color]=\"config().iconColor || ''\"\n >\n <svg-icon class=\"icon\" [name]=\"config().icon || ''\"></svg-icon>\n @if (!config().noSeparator) {\n <div class=\"separator\"></div>\n }\n </div>\n }\n @if (password) {\n <div class=\"icon-container\" (pointerdown)=\"toggleVisibility($event)\">\n <div\n class=\"password-icons\"\n [ngbTooltip]=\"passwordTooltip\"\n [container]=\"'body'\"\n [tooltipClass]=\"tooltipClass\"\n [autoClose]=\"true\"\n [placement]=\"'top'\"\n [openDelay]=\"600\"\n >\n <svg-icon\n class=\"icon password-key hover-icon\"\n name=\"cai-password-key\"\n ></svg-icon>\n <svg-icon\n class=\"icon password-shown hover-icon\"\n name=\"cai-password-shown\"\n ></svg-icon>\n <svg-icon\n class=\"icon password-hidden hover-icon\"\n name=\"cai-password-hidden\"\n ></svg-icon>\n </div>\n <div class=\"separator\"></div>\n </div>\n }\n\n <input\n class=\"app-input\"\n [tabindex]=\"isDisabled() ? '-1' : '0'\"\n [type]=\"\n password && !config().reveal ? (visible() ? 'text' : 'password') : 'text'\n \"\n [required]=\"config().required\"\n [disabled]=\"isDisabled()\"\n (input)=\"onInput($event)\"\n (blur)=\"dispatchOnBlur()\"\n [id]=\"id()\"\n [attr.aria-label]=\"config().label\"\n [attr.name]=\"\n config().autocomplete ? config().autocomplete : randomAutocomplete()\n \"\n [placeholder]=\"config()?.placeholder || ''\"\n [autocomplete]=\"\n config().autocomplete ? config().autocomplete : randomAutocomplete()\n \"\n #inputRef\n [appPassword]=\"password\"\n [appMask]=\"config().mask || ''\"\n [reveal]=\"config().reveal || 0\"\n [account]=\"config().type === 'account'\"\n [visible]=\"visible()\"\n [appNumberFormat]=\"config().type === 'number'\"\n [isNumberFormattingDisabled]=\"config().isNumberFormattingDisabled || false\"\n [disableDecimals]=\"config().disableDecimals || false\"\n [prefix]=\"config().prefix || ''\"\n [max]=\"config().max\"\n [clampToMax]=\"config().clampToMax || false\"\n (keydown)=\"handleKeydown($event)\"\n (focus)=\"onFocus($event)\"\n />\n @if (\n !(dropdownType === \"multiple\" && !!multipleSelectedOptions().length) &&\n config().placeholderBehavior !== \"hidden\"\n ) {\n <label\n class=\"app-input-label\"\n [class.placeholder-color]=\"this.config().placeholderColor\"\n [style.--placeholder-color]=\"this.config().placeholderColor || ''\"\n (click)=\"focus($event)\"\n >\n <!-- Truck Trailer Driver Dropdown label -->\n @if (dropdownType === \"dispatch\" || dropdownType === \"ftl-dispatch\") {\n <p class=\"truck-item app-input-name\">Truck</p>\n <p class=\"trailer-item\">Trailer</p>\n <p>Driver</p>\n <p class=\"sub-label\">Rate</p>\n }\n <!-- Split Load -->\n @else if (dropdownType === \"split-driver\") {\n <p class=\"app-input-name\">{{ name }}</p>\n <p class=\"sub-label\">Rate</p>\n } @else if (\n dropdownType === \"split-truck\" || dropdownType === \"split-trailer\"\n ) {\n <p class=\"app-input-name\">{{ name }}</p>\n <p class=\"sub-label\">Location</p>\n }\n <!-- Dropdown variants -->\n @else if (dropdownType === \"broker\") {\n <p class=\"app-input-name\">{{ name }}</p>\n <p class=\"sub-label\">Credit</p>\n } @else if (dropdownType === \"contact\") {\n <p class=\"app-input-name\">{{ name }}</p>\n <p class=\"sub-label\">Phone</p>\n } @else if (dropdownType === \"shipper\") {\n <p class=\"app-input-name\">{{ name }}</p>\n <p class=\"sub-label\">Address</p>\n } @else if (dropdownType === \"owner\") {\n <p class=\"owner-ein app-input-name\">EIN</p>\n <p class=\"app-input-name\">Company Name</p>\n } @else if (dropdownType === \"fuelcard\") {\n <p class=\"fuelcard-number app-input-name\">Card No.</p>\n <p class=\"fuelcard-brand app-input-name\">Provider</p>\n <p class=\"app-input-name\">Nickname</p>\n }\n <!-- Accident -->\n @else if (dropdownType === \"accident-driver\") {\n <p class=\"accident-name app-input-name\">{{ name }}</p>\n <p class=\"accident-dob app-input-name\">DOB</p>\n <p class=\"accident-cdl-number app-input-name\">CDL No.</p>\n <p class=\"accident-state app-input-name\">CDL State</p>\n } @else if (\n dropdownType === \"accident-truck\" || dropdownType === \"accident-trailer\"\n ) {\n <p class=\"accident-unit app-input-name\">{{ name }}</p>\n <p class=\"accident-vin app-input-name\">VIN</p>\n <p class=\"accident-plate app-input-name\">Lic. Plate No.</p>\n <p class=\"accident-state app-input-name\">Lic. State</p>\n }\n <!-- Default Dropdown label -->\n @else {\n <span class=\"app-input-name\">{{ name }}</span>\n }\n </label>\n }\n @if (config().type === \"number\" && config().withButtons) {\n <div class=\"number-container\">\n <div class=\"number-buttons\">\n <div class=\"separator\"></div>\n <div\n class=\"plus-button-container\"\n ngbTooltip=\"Add\"\n [tooltipClass]=\"tooltipClass\"\n [container]=\"'body'\"\n [autoClose]=\"true\"\n [openDelay]=\"600\"\n [placement]=\"'top'\"\n (pointerdown)=\"increment($event)\"\n >\n <svg-icon name=\"cai-plus\" class=\"bg-icon plus-icon\"></svg-icon>\n </div>\n <div\n class=\"minus-button-container\"\n ngbTooltip=\"Remove\"\n [placement]=\"'top'\"\n [container]=\"'body'\"\n [tooltipClass]=\"tooltipClass\"\n [autoClose]=\"true\"\n [openDelay]=\"600\"\n (pointerdown)=\"decrement($event)\"\n >\n <svg-icon name=\"cai-minus\" class=\"bg-icon minus-icon\"></svg-icon>\n </div>\n </div>\n </div>\n }\n @if (!config().inTable) {\n @if (!dropdownType) {\n <svg-icon\n name=\"cai-checkmark\"\n class=\"app-input-icon positive-icon\"\n ></svg-icon>\n <svg-icon\n name=\"cai-status-warning\"\n class=\"app-input-icon warning-icon\"\n ></svg-icon>\n }\n }\n\n @if (\n invalid &&\n config().errorBehavior !== \"hidden\" &&\n (ngControl?.errors | errorMessage: config().customErrors)[0] &&\n !(config().inTable && config().placeholderBehavior !== \"static\")\n ) {\n <div class=\"app-input-error\">\n {{ (ngControl?.errors | errorMessage: config().customErrors)[0] }}\n </div>\n }\n\n <!-- Accept button -->\n @if ((config().add && isAdding()) || config().isEdit) {\n <button\n type=\"button\"\n class=\"app-input-icon button-icon accept-button\"\n (pointerdown)=\"addOption()\"\n [tabIndex]=\"-1\"\n ngbTooltip=\"Confirm\"\n [openDelay]=\"600\"\n [placement]=\"'top'\"\n [tooltipClass]=\"tooltipClass\"\n [container]=\"'body'\"\n [autoClose]=\"true\"\n >\n <svg-icon class=\"bg-icon\" name=\"cai-checkmark\"></svg-icon>\n </button>\n }\n\n <!-- Cancel button -->\n <button\n type=\"button\"\n class=\"app-input-icon button-icon cancel-button\"\n (pointerdown)=\"reset($event)\"\n (mouseenter)=\"onClearHover(true)\"\n (mouseleave)=\"onClearHover(false)\"\n [tabIndex]=\"-1\"\n ngbTooltip=\"{{\n hasText()\n | clearTooltip\n : isAdding()\n : config().isEdit || false\n : config().placeholderBehavior || 'dynamic'\n : dropdownType === 'multiple'\n : config().hasResetButton\n : canTooltipBeVisible()\n }}\"\n [openDelay]=\"600\"\n [tooltipClass]=\"tooltipClass\"\n [placement]=\"'top'\"\n [container]=\"'body'\"\n [autoClose]=\"true\"\n #closeTooltip=\"ngbTooltip\"\n >\n @let iconName =\n config().hasResetButton\n ? \"cai-reset\"\n : config().removable\n ? \"cai-delete\"\n : \"cai-cancel\";\n <svg-icon class=\"bg-icon\" [name]=\"iconName\"></svg-icon>\n </button>\n\n <div class=\"dropdown-anchor\" ngbDropdownAnchor></div>\n <!-- Dropdown menu -->\n\n @let hasLoader = isLoading() !== undefined;\n\n @if (hasLoader) {\n <div class=\"loader\" [class.loading]=\"isLoading()\">\n <svg-icon name=\"cai-loader\" class=\"loader-icon\"></svg-icon>\n </div>\n }\n\n @if (dropdownType) {\n @let maxHeight =\n ((dropdownOptions()?.length || (showNoResults() ? 1 : 0)) +\n (config().add ? 1 : 0)) *\n 30 +\n 4;\n\n @let animateDropdown =\n dropdownType !== \"toll\" &&\n dropdownType !== \"fuel-stop-transaction\" &&\n dropdownType !== \"dispatch\" &&\n dropdownType !== \"ftl-dispatch\" &&\n dropdownType !== \"split-driver\" &&\n dropdownType !== \"split-truck\" &&\n dropdownType !== \"split-trailer\";\n\n @let unfilteredHeight =\n dropdownType === \"contact\" || !animateDropdown\n ? 244\n : ((options()?.length || (showNoResults() ? 1 : 0)) +\n (config().add ? 1 : 0)) *\n 30 +\n 4;\n\n <div\n ngbDropdownMenu\n class=\"dropdown-menu input-dropdown-menu\"\n [class]=\"{\n 'hide-dropdown':\n config().dropdownAutocomplete &&\n !dropdownOptions()?.length &&\n !(showNoResults() && value()),\n 'animate-dropdown': animateDropdown,\n 'size-22': config().size === 22,\n 'has-stroke': config().hasStroke,\n }\"\n [class.closing]=\"closing()\"\n [style.--unfiltered-height]=\"\n unfilteredHeight > 244 ? '244px' : unfilteredHeight + 'px'\n \"\n [style.--max-height]=\"maxHeight > 244 ? '244px' : maxHeight + 'px'\"\n [style.width.px]=\"containerWidth()\"\n [tabindex]=\"-1\"\n (pointerdown)=\"onDropdownBackgroundClick($event)\"\n (mousedown)=\"$event.preventDefault()\"\n (pointerup)=\"stopEventPropagation($event)\"\n (mouseup)=\"stopEventPropagation($event)\"\n (click)=\"stopEventPropagation($event)\"\n >\n <div\n class=\"dropdown-menu-content\"\n [tabindex]=\"-1\"\n caiInfiniteScroll\n [scrollThreshold]=\"50\"\n (scrolledToBottom)=\"onDropdownScrolledToBottom()\"\n >\n @if (config().add) {\n <button\n class=\"dropdown-item add-new\"\n [class.focused]=\"\n focusedOptionIndex === -1 ||\n groupedNavigationState?.groupIndex === -1\n \"\n (click)=\"handleAddingOption($event)\"\n >\n <p>ADD NEW</p>\n <svg-icon name=\"cai-plus\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n <ng-container *ngTemplateOutlet=\"dropdownMenuRef\"></ng-container>\n </div>\n </div>\n\n @if (!config().dropdownAutocomplete) {\n <div\n class=\"dropdown-icon-container\"\n [class.open]=\"dropdown.isOpen() && !closing()\"\n (pointerdown)=\"onDropdownIconClick($event)\"\n >\n <svg-icon\n name=\"cai-arrow-secondary-down\"\n class=\"dropdown-icon icon\"\n ></svg-icon>\n </div>\n }\n @let specialDropdown =\n dropdownType === \"dispatch\" ||\n dropdownType === \"ftl-dispatch\" ||\n dropdownType === \"broker\" ||\n dropdownType === \"contact\" ||\n dropdownType === \"shipper\" ||\n dropdownType === \"bank\" ||\n dropdownType === \"dispatcher\" ||\n dropdownType === \"driver-owner\" ||\n dropdownType === \"truck\" ||\n dropdownType === \"trailer\" ||\n dropdownType === \"hazardous\" ||\n dropdownType === \"state\" ||\n dropdownType === \"owner\" ||\n dropdownType === \"fuelcard\" ||\n dropdownType === \"pm\" ||\n dropdownType === \"color\" ||\n dropdownType === \"make\" ||\n dropdownType === \"toll\" ||\n dropdownType === \"provider\" ||\n dropdownType === \"split-driver\" ||\n dropdownType === \"split-truck\" ||\n dropdownType === \"split-trailer\" ||\n dropdownType === \"accident-driver\" ||\n dropdownType === \"accident-truck\" ||\n dropdownType === \"accident-trailer\";\n <!-- Placeholder -->\n @if (specialDropdown) {\n <ng-container *ngTemplateOutlet=\"selectedOptionRef\"></ng-container>\n } @else if (\n (config().add || config().search) &&\n !inputRef.value &&\n !this.isAdding() &&\n dropdownType !== \"subcontent\"\n ) {\n <div class=\"dropdown-selected\">\n @if (config().placeholderBehavior === \"static\") {\n <p class=\"selected-label-hidden\">\n {{ name + (config().required ? \" *\" : \"\") }}\n </p>\n <p class=\"selected-text\">\n {{\n selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![\n optionLabel || \"label\"\n ]\n }}\n </p>\n } @else {\n @if (\n selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![\n optionLabel || \"label\"\n ] === \"Hazardous\"\n ) {\n <svg-icon name=\"cai-violation-hazmat\" class=\"icon\"></svg-icon>\n <p class=\"dropdown-selected-content\">\n {{\n selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![\n optionLabel || \"label\"\n ]\n }}\n </p>\n } @else {\n <p class=\"dropdown-selected-content\">\n {{\n selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![\n optionLabel || \"label\"\n ]\n }}\n </p>\n }\n }\n </div>\n }\n } @else if (config().isEdit && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"dropdown-selected-content\">{{ name }}</p>\n </div>\n }\n @if (config().passwordRequirements) {\n <div\n class=\"dropdown-menu password-requirement\"\n ngbDropdownMenu\n [style.width.px]=\"containerWidth()\"\n [class.closing]=\"closing()\"\n (pointerup)=\"stopEventPropagation($event)\"\n (mouseup)=\"stopEventPropagation($event)\"\n (click)=\"stopEventPropagation($event)\"\n >\n <ng-container *ngTemplateOutlet=\"passwordRequirementsRef\"></ng-container>\n </div>\n }\n @if (subcontent) {\n <p class=\"subcontent\">\n @if (!(config().alignment === \"right\")) {\n <span class=\"subcontent-hide\"\n >{{\n config().search\n ? selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![\n optionLabel || \"label\"\n ]\n : inputRef.value\n }}\n </span>\n }\n {{ subcontent }}\n </p>\n }\n</div>\n\n<!-- #region Templates -->\n\n<!-- #region Password requirements -->\n<ng-template #passwordRequirementsRef>\n @let isMinLengthValid =\n !this.ngControl?.errors?.[\"minlength\"] && this.value();\n @let isHasNumberValid =\n !this.ngControl?.errors?.[\"hasNumber\"] && this.value();\n @let isHasSymbolValid =\n !this.ngControl?.errors?.[\"hasSymbol\"] && this.value();\n @let isHasUppercaseValid =\n !this.ngControl?.errors?.[\"hasUppercase\"] && this.value();\n\n <p>Strong Password Requirement</p>\n <ul>\n <li [class.valid]=\"isMinLengthValid\">\n <svg-icon\n [name]=\"isMinLengthValid ? 'cai-checkmark' : 'cai-cancel'\"\n [class]=\"isMinLengthValid ? 'checkmark' : 'cancel'\"\n class=\"icon\"\n ></svg-icon\n ><span>Minimum 8 characters</span>\n </li>\n <li [class.valid]=\"isHasNumberValid\">\n <svg-icon\n class=\"icon\"\n [name]=\"isHasNumberValid ? 'cai-checkmark' : 'cai-cancel'\"\n [class]=\"isHasNumberValid ? 'checkmark' : 'cancel'\"\n ></svg-icon\n ><span>One number</span>\n </li>\n <li [class.valid]=\"isHasSymbolValid\">\n <svg-icon\n class=\"icon\"\n [name]=\"isHasSymbolValid ? 'cai-checkmark' : 'cai-cancel'\"\n [class]=\"isHasSymbolValid ? 'checkmark' : 'cancel'\"\n ></svg-icon\n ><span>One symbol</span>\n </li>\n <li [class.valid]=\"isHasUppercaseValid\">\n <svg-icon\n class=\"icon\"\n [name]=\"isHasUppercaseValid ? 'cai-checkmark' : 'cai-cancel'\"\n [class]=\"isHasUppercaseValid ? 'checkmark' : 'cancel'\"\n ></svg-icon\n ><span>One upper-case letter</span>\n </li>\n </ul>\n</ng-template>\n<!-- #endregion -->\n@let search = config().search;\n\n<ng-template #dropdownMenuRef>\n @switch (dropdownType) {\n @case (\"dispatch\") {\n <ng-container *ngTemplateOutlet=\"dispatchesRef\"></ng-container>\n }\n @case (\"ftl-dispatch\") {\n <ng-container *ngTemplateOutlet=\"ftlDispatchRef\"></ng-container>\n }\n @case (\"broker\") {\n <ng-container *ngTemplateOutlet=\"brokerRef\"></ng-container>\n }\n @case (\"contact\") {\n <ng-container *ngTemplateOutlet=\"contactRef\"></ng-container>\n }\n @case (\"shipper\") {\n <ng-container *ngTemplateOutlet=\"shipperRef\"></ng-container>\n }\n @case (\"bank\") {\n <ng-container *ngTemplateOutlet=\"bankRef\"></ng-container>\n }\n @case (\"dispatcher\") {\n <ng-container *ngTemplateOutlet=\"dispatcherRef\"></ng-container>\n }\n @case (\"driver-owner\") {\n <ng-container *ngTemplateOutlet=\"driverOwnerRef\"></ng-container>\n }\n @case (\"trailer\") {\n <ng-container *ngTemplateOutlet=\"trailerRef\"></ng-container>\n }\n @case (\"truck\") {\n <ng-container *ngTemplateOutlet=\"truckRef\"></ng-container>\n }\n @case (\"hazardous\") {\n <ng-container *ngTemplateOutlet=\"hazardousRef\"></ng-container>\n }\n @case (\"state\") {\n <ng-container *ngTemplateOutlet=\"stateRef\"></ng-container>\n }\n @case (\"owner\") {\n <ng-container *ngTemplateOutlet=\"ownerRef\"></ng-container>\n }\n @case (\"fuelcard\") {\n <ng-container *ngTemplateOutlet=\"fuelcardRef\"></ng-container>\n }\n @case (\"pm\") {\n <ng-container *ngTemplateOutlet=\"pmRef\"></ng-container>\n }\n @case (\"multiple\") {\n <ng-container *ngTemplateOutlet=\"multipleRef\"></ng-container>\n }\n @case (\"make\") {\n <ng-container *ngTemplateOutlet=\"makeRef\"></ng-container>\n }\n @case (\"toll\") {\n <ng-container *ngTemplateOutlet=\"tollRef\"></ng-container>\n }\n @case (\"color\") {\n <ng-container *ngTemplateOutlet=\"colorRef\"></ng-container>\n }\n @case (\"fuel-stop-transaction\") {\n <ng-container *ngTemplateOutlet=\"fuelStopTransactionRef\"></ng-container>\n }\n @case (\"provider\") {\n <ng-container *ngTemplateOutlet=\"providerRef\"></ng-container>\n }\n @case (\"split-driver\") {\n <ng-container *ngTemplateOutlet=\"splitDriverRef\"></ng-container>\n }\n @case (\"split-truck\") {\n <ng-container *ngTemplateOutlet=\"splitTruckRef\"></ng-container>\n }\n @case (\"split-trailer\") {\n <ng-container *ngTemplateOutlet=\"splitTrailerRef\"></ng-container>\n }\n @case (\"accident-driver\") {\n <ng-container *ngTemplateOutlet=\"accidentDriverRef\"></ng-container>\n }\n @case (\"accident-truck\") {\n <ng-container *ngTemplateOutlet=\"accidentTruckRef\"></ng-container>\n }\n @case (\"accident-trailer\") {\n <ng-container *ngTemplateOutlet=\"accidentTrailerRef\"></ng-container>\n }\n @case (\"subcontent\") {\n <ng-container *ngTemplateOutlet=\"dropdownOptionsRef\"></ng-container>\n }\n @default {\n <ng-container *ngTemplateOutlet=\"dropdownOptionsRef\"></ng-container>\n }\n }\n</ng-template>\n\n<ng-template #selectedOptionRef>\n @switch (dropdownType) {\n @case (\"dispatch\") {\n <ng-container *ngTemplateOutlet=\"selectedDispatchRef\"></ng-container>\n }\n @case (\"ftl-dispatch\") {\n <ng-container *ngTemplateOutlet=\"selectedDispatchRef\"></ng-container>\n }\n @case (\"broker\") {\n <ng-container *ngTemplateOutlet=\"selectedBrokerRef\"></ng-container>\n }\n @case (\"contact\") {\n <ng-container *ngTemplateOutlet=\"selectedContactRef\"></ng-container>\n }\n @case (\"shipper\") {\n <ng-container *ngTemplateOutlet=\"selectedShipperRef\"></ng-container>\n }\n @case (\"bank\") {\n <ng-container *ngTemplateOutlet=\"selectedBankRef\"></ng-container>\n }\n @case (\"dispatcher\") {\n <ng-container *ngTemplateOutlet=\"selectedDispatcherRef\"></ng-container>\n }\n @case (\"driver-owner\") {\n <ng-container *ngTemplateOutlet=\"selectedDriverOwnerRef\"></ng-container>\n }\n @case (\"trailer\") {\n <ng-container *ngTemplateOutlet=\"selectedTrailerRef\"></ng-container>\n }\n @case (\"truck\") {\n <ng-container *ngTemplateOutlet=\"selectedTruckRef\"></ng-container>\n }\n @case (\"hazardous\") {\n <ng-container *ngTemplateOutlet=\"selectedHazardousRef\"></ng-container>\n }\n @case (\"state\") {\n <ng-container *ngTemplateOutlet=\"selectedStateRef\"></ng-container>\n }\n @case (\"owner\") {\n <ng-container *ngTemplateOutlet=\"selectedOwnerRef\"></ng-container>\n }\n @case (\"fuelcard\") {\n <ng-container *ngTemplateOutlet=\"selectedFuelcardRef\"></ng-container>\n }\n @case (\"pm\") {\n <ng-container *ngTemplateOutlet=\"selectedPmRef\"></ng-container>\n }\n @case (\"make\") {\n <ng-container *ngTemplateOutlet=\"selectedMakeRef\"></ng-container>\n }\n @case (\"toll\") {\n <ng-container *ngTemplateOutlet=\"selectedTollRef\"></ng-container>\n }\n @case (\"color\") {\n <ng-container *ngTemplateOutlet=\"selectedColorRef\"></ng-container>\n }\n @case (\"provider\") {\n <ng-container *ngTemplateOutlet=\"selectedProviderRef\"></ng-container>\n }\n @case (\"split-driver\") {\n <ng-container *ngTemplateOutlet=\"selectedSplitDriverRef\"></ng-container>\n }\n @case (\"split-truck\") {\n <ng-container *ngTemplateOutlet=\"selectedSplitTruckRef\"></ng-container>\n }\n @case (\"split-trailer\") {\n <ng-container *ngTemplateOutlet=\"selectedSplitTrailerRef\"></ng-container>\n }\n @case (\"accident-driver\") {\n <ng-container\n *ngTemplateOutlet=\"selectedAccidentDriverRef\"\n ></ng-container>\n }\n @case (\"accident-truck\") {\n <ng-container *ngTemplateOutlet=\"selectedAccidentTruckRef\"></ng-container>\n }\n @case (\"accident-trailer\") {\n <ng-container\n *ngTemplateOutlet=\"selectedAccidentTrailerRef\"\n ></ng-container>\n }\n }\n</ng-template>\n\n<!-- Standard dropdown -->\n<ng-template #dropdownOptionsRef>\n @if (dropdownOptions().length) {\n @for (option of dropdownOptions(); track $index; let index = $index) {\n @let dropdownOption = cast(option, \"dropdownOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ dropdownOption.id }}\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'dropdownOption')?.id === dropdownOption.id,\n focused: focusedOptionIndex === index,\n }\"\n (click)=\"handleOption(dropdownOption, $event)\"\n >\n @if (dropdownOption[optionLabel] === \"Hazardous\") {\n <svg-icon name=\"cai-violation-hazmat\" class=\"icon\"></svg-icon>\n }\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (dropdownOption[optionLabel] | highlightSearch: value())\n : dropdownOption[optionLabel]\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #multipleRef>\n @if (dropdownOptions().length) {\n @for (option of dropdownOptions(); track $index; let index = $index) {\n @let dropdownOption = cast(option, \"dropdownOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ dropdownOption.id }}\"\n (click)=\"handleOption(dropdownOption, $event)\"\n [class]=\"{\n selected: isSelectedOption(dropdownOption),\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (dropdownOption[optionLabel] | highlightSearch: value())\n : dropdownOption[optionLabel]\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #bankRef>\n @if (dropdownOptions().length) {\n @for (bank of dropdownOptions(); track $index; let index = $index) {\n @let bankOption = cast(bank, \"bank\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ bankOption.id }}\"\n (click)=\"handleOption(bankOption, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'bank')?.id === bankOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n @if (bankOption.logoName) {\n <svg-icon\n class=\"full-icon\"\n [name]=\"bankOption.logoName.slice(0, -4)\"\n ></svg-icon>\n } @else {\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (bankOption.name || '' | highlightSearch: value())\n : bankOption.name\n \"\n ></p>\n }\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #makeRef>\n @if (dropdownOptions().length) {\n @for (make of dropdownOptions(); track $index; let index = $index) {\n @let makeOption = cast(make, \"make\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ makeOption.id }}\"\n (click)=\"handleOption(makeOption, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'make')?.id === makeOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n @if (makeOption.logoName) {\n <svg-icon\n class=\"full-icon\"\n [name]=\"makeOption.logoName.slice(0, -4)\"\n ></svg-icon>\n } @else {\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (makeOption.name || '' | highlightSearch: value())\n : makeOption.name\n \"\n ></p>\n }\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Broker -->\n<ng-template #brokerRef>\n @if (dropdownOptions().length) {\n @for (broker of dropdownOptions(); track $index; let index = $index) {\n @let brokerOption = cast(broker, \"broker\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"broker-{{ brokerOption.id }}\"\n (click)=\"\n !(brokerOption.dnu || brokerOption.ban) &&\n handleOption(brokerOption, $event)\n \"\n [class]=\"{\n selected: cast(selectedOption(), 'broker')?.id === brokerOption.id,\n focused: focusedOptionIndex === index,\n banned: brokerOption.dnu || brokerOption.ban,\n dnu: brokerOption.dnu,\n }\"\n >\n @if (brokerOption?.dnu || brokerOption?.ban) {\n <svg-icon name=\"cai-minus\" class=\"round-icon\"></svg-icon>\n } @else if (brokerOption?.fraudCheck) {\n <svg-icon\n name=\"cai-status-warning-lite\"\n class=\"fraud-icon\"\n ></svg-icon>\n }\n <p\n class=\"dropdown-content\"\n [innerHTML]=\"\n search\n ? (brokerOption.businessName || '' | highlightSearch: value())\n : brokerOption.businessName\n \"\n ></p>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-base\">\n @if (!brokerOption.creditLimit) {\n <p>Unlimited</p>\n } @else {\n <p>{{ brokerOption.availableCredit || 0 | currency }}</p>\n <div\n class=\"progress-bar\"\n [style.--progress]=\"\n (\n brokerOption\n | brokerProgress: brokerOption.dnu || brokerOption.ban\n ).activePercentageOfPaid + '%'\n \"\n [class]=\"\n (\n brokerOption\n | brokerProgress: brokerOption.dnu || brokerOption.ban\n ).status\n \"\n ></div>\n }\n </div>\n <div class=\"end-item-hover\">\n <p>\n {{ brokerOption.loadsCount }} |\n {{ brokerOption.availableCredit || 0 | currency }}\n </p>\n <svg-icon name=\"cai-load\" class=\"icon\"></svg-icon>\n </div>\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Contact dropdown -->\n<ng-template #contactRef>\n @if (dropdownOptions().length) {\n @for (contact of dropdownOptions(); track $index; let index = $index) {\n @let contactOption = cast(contact, \"contact\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"contact-{{ contact.id }}\"\n (click)=\"handleOption(contact, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'contact')?.id === contact.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n [innerHTML]=\"\n search\n ? (contactOption.contactName || '' | highlightSearch: value())\n : contactOption.contactName\n \"\n ></p>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-base\">\n <p>{{ contactOption.department?.name }}</p>\n </div>\n <div class=\"end-item-hover\">\n <p>\n {{ contactOption.phone }}\n </p>\n </div>\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Owner dropdown -->\n<ng-template #ownerRef>\n @if (dropdownOptions().length) {\n @for (owner of dropdownOptions(); track $index; let index = $index) {\n @let ownerOption = cast(owner, \"owner\");\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"owner-{{ ownerOption?.id }}\"\n (click)=\"handleOption(ownerOption!, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'owner')?.id === ownerOption?.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"owner-ein\"\n [innerHTML]=\"\n search\n ? (ownerOption?.ein || '' | highlightSearch: value())\n : ownerOption?.ein\n \"\n ></p>\n <p\n [innerHTML]=\"\n search\n ? (ownerOption?.name || '' | highlightSearch: value())\n : ownerOption?.name\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Fuelcard dropdown -->\n<ng-template #fuelcardRef>\n @if (dropdownOptions().length) {\n @for (fuelcard of dropdownOptions(); track $index; let index = $index) {\n @let fuelcardOption = cast(fuelcard, \"fuelCard\");\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"fuelcard-{{ fuelcardOption?.id }}\"\n (click)=\"handleOption(fuelcardOption!, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'fuelCard')?.id === fuelcardOption?.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"fuelcard-number\"\n [innerHTML]=\"\n search\n ? (fuelcardOption?.number || '' | highlightSearch: value())\n : fuelcardOption?.number\n \"\n ></p>\n <p\n class=\"fuelcard-brand\"\n [innerHTML]=\"\n search\n ? (fuelcardOption?.brand || '' | highlightSearch: value())\n : fuelcardOption?.brand\n \"\n ></p>\n <p\n [innerHTML]=\"\n search\n ? (fuelcardOption?.account || '' | highlightSearch: value())\n : fuelcardOption?.account\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Accident driver dropdown -->\n<ng-template #accidentDriverRef>\n @if (dropdownOptions().length) {\n @for (driver of dropdownOptions(); track $index; let index = $index) {\n @let driverOption = cast(driver, \"accidentDriver\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"accident-driver-{{ driverOption.id }}\"\n (click)=\"handleOption(driverOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'accidentDriver')?.id === driverOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <div class=\"dropdown-subitem accident-name\">\n <cai-avatar\n [driver]=\"driverOption\"\n [size]=\"18\"\n [inverse]=\"true\"\n [hover]=\"false\"\n ></cai-avatar>\n <p\n [innerHTML]=\"\n driverOption.firstName + ' ' + driverOption.lastName\n | highlightSearch: value()\n \"\n ></p>\n </div>\n <p class=\"accident-dob\">\n {{ driverOption.dateOfBirth | date: \"MM/dd/yy\" }}\n </p>\n <p\n class=\"accident-cdl-number\"\n [innerHTML]=\"driverOption.cdlNumber || '' | highlightSearch: value()\"\n ></p>\n <div class=\"dropdown-subitem accident-state\">\n <p\n [innerHTML]=\"\n driverOption.cdlState?.stateShortName || ''\n | highlightSearch: value()\n \"\n ></p>\n @if (\n driverOption.cdlState?.countryType?.name &&\n driverOption.cdlState?.stateShortName\n ) {\n <svg-icon\n class=\"icon\"\n [name]=\"\n 'cai-' +\n driverOption.cdlState?.countryType?.name?.toLowerCase() +\n '-' +\n driverOption.cdlState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Accident truck dropdown -->\n<ng-template #accidentTruckRef>\n @if (dropdownOptions().length) {\n @for (truck of dropdownOptions(); track $index; let index = $index) {\n @let truckOption = cast(truck, \"accidentTruck\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"accident-truck-{{ truckOption.id }}\"\n (click)=\"handleOption(truckOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'accidentTruck')?.id === truckOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <div class=\"dropdown-subitem accident-unit\">\n @if (truckOption.truckType?.logoName) {\n <svg-icon\n class=\"truck-icon truck-trailer-icon-colors\"\n [class]=\"truckOption.truckType!.logoName.slice(0, -4)\"\n [name]=\"truckOption.truckType!.logoName.slice(0, -4)\"\n ></svg-icon>\n }\n <p\n [innerHTML]=\"truckOption.truckNumber | highlightSearch: value()\"\n ></p>\n </div>\n <p\n class=\"accident-vin\"\n [innerHTML]=\"truckOption.vin || '' | highlightSearch: value()\"\n ></p>\n <p\n class=\"accident-plate\"\n [innerHTML]=\"\n truckOption.licensePlateNumber || '' | highlightSearch: value()\n \"\n ></p>\n <div class=\"dropdown-subitem accident-state\">\n <p\n [innerHTML]=\"\n truckOption.licenseState?.stateShortName || ''\n | highlightSearch: value()\n \"\n ></p>\n @if (\n truckOption.licenseState?.countryType?.name &&\n truckOption.licenseState?.stateShortName\n ) {\n <svg-icon\n class=\"icon\"\n [name]=\"\n 'cai-' +\n truckOption.licenseState?.countryType?.name?.toLowerCase() +\n '-' +\n truckOption.licenseState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Accident trailer dropdown -->\n<ng-template #accidentTrailerRef>\n @if (dropdownOptions().length) {\n @for (trailer of dropdownOptions(); track $index; let index = $index) {\n @let trailerOption = cast(trailer, \"accidentTrailer\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"accident-trailer-{{ trailerOption.id }}\"\n (click)=\"handleOption(trailerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'accidentTrailer')?.id === trailerOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <div class=\"dropdown-subitem accident-unit\">\n @if (trailerOption.trailerType?.logoName) {\n <svg-icon\n class=\"trailer-icon truck-trailer-icon-colors\"\n [class]=\"trailerOption.trailerType!.logoName.slice(0, -4)\"\n [name]=\"trailerOption.trailerType!.logoName.slice(0, -4)\"\n ></svg-icon>\n }\n <p\n [innerHTML]=\"trailerOption.trailerNumber | highlightSearch: value()\"\n ></p>\n </div>\n <p\n class=\"accident-vin\"\n [innerHTML]=\"trailerOption.vin || '' | highlightSearch: value()\"\n ></p>\n <p\n class=\"accident-plate\"\n [innerHTML]=\"\n trailerOption.licensePlateNumber || '' | highlightSearch: value()\n \"\n ></p>\n <div class=\"dropdown-subitem accident-state\">\n <p\n [innerHTML]=\"\n trailerOption.licenseState?.stateShortName || ''\n | highlightSearch: value()\n \"\n ></p>\n @if (\n trailerOption.licenseState?.countryType?.name &&\n trailerOption.licenseState?.stateShortName\n ) {\n <svg-icon\n class=\"icon\"\n [name]=\"\n 'cai-' +\n trailerOption.licenseState?.countryType?.name?.toLowerCase() +\n '-' +\n trailerOption.licenseState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Shipper dropdown -->\n<ng-template #shipperRef>\n @if (dropdownOptions().length) {\n @for (shipper of dropdownOptions(); track $index; let index = $index) {\n @let shipperOption = cast(shipper, \"shipper\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"shipper-{{ shipperOption.id }}\"\n (click)=\"handleOption(shipperOption, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'shipper')?.id === shipperOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"max-w-280 text-truncate\"\n [innerHTML]=\"\n search\n ? (shipperOption.businessName || '' | highlightSearch: value())\n : shipperOption.businessName\n \"\n ></p>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-base\">\n <p\n class=\"max-w-280 text-truncate\"\n [innerHTML]=\"\n search\n ? (shipperOption.address?.address || ''\n | highlightSearch: value())\n : shipperOption.address?.address\n \"\n ></p>\n </div>\n <div class=\"end-item-hover\">\n <p>\n {{ shipperOption.pickupCount }} Pickup |\n {{ shipperOption.deliveryCount }} Delivery\n </p>\n <svg-icon name=\"cai-load\" class=\"icon\"></svg-icon>\n </div>\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Dispatch dropdown -->\n<ng-template #dispatchesRef>\n @if (dropdownOptions().length) {\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n (click)=\"resetSelection()\"\n [class]=\"{\n selected: !selectedOption(),\n }\"\n >\n <p>Unassigned</p>\n <div class=\"unassigned-ltl\">\n <p>{{ unassignedCount() }}</p>\n <svg-icon name=\"cai-ltl-single\" class=\"icon-sm\"></svg-icon>\n </div>\n </button>\n @for (\n dispatchBoard of dropdownOptions();\n track dispatchBoard.id;\n let groupIndex = $index\n ) {\n <!-- Temporary variant since BE doesn't support boards -->\n @let dispatchBoardOption = cast(dispatchBoard, \"dispatchBoard\")!;\n\n @let isNoBoardsVariant =\n dispatchBoardOption.dispatcher === \"NOBOARDSVARIANT\";\n @if (dispatchBoardOption.count > 0) {\n @if (!isNoBoardsVariant) {\n @let isGroupFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === 0;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(dispatchBoardOption.id, $event)\"\n [class]=\"{\n unfolded: dispatchBoardOption.dispatches?.length || 0 > 0,\n focused: isGroupFocused,\n }\"\n >\n <p>\n {{\n dispatchBoardOption.teamBoard\n ? \"Team Board\"\n : dispatchBoardOption.dispatcher\n }}\n </p>\n <p class=\"counter\">{{ dispatchBoardOption.count }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n }\n @if (\n dispatchBoardOption.dispatches &&\n dispatchBoardOption.dispatches.length > 0\n ) {\n @for (\n dispatch of dispatchBoardOption.dispatches;\n track dispatch.id;\n let optionIndex = $index\n ) {\n @let isOptionFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === optionIndex + 1;\n <!-- +1 since optionIndex is 0 for the group item header -->\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n (click)=\"handleOption(dispatch, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'dispatch')?.id === dispatch.id,\n focused: isOptionFocused,\n }\"\n >\n <div class=\"dropdown-subitem truck-item\">\n <svg-icon\n class=\"truck-icon truck-trailer-icon-colors\"\n [class]=\"dispatch.truck.truckType.logoName.slice(0, -4)\"\n [name]=\"dispatch.truck.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"truck-number\"\n [innerHTML]=\"\n dispatch.truck.truckNumber | highlightSearch: value()\n \"\n ></p>\n </div>\n <div class=\"dropdown-subitem trailer-item\">\n @if (dispatch.trailer) {\n <svg-icon\n class=\"trailer-icon truck-trailer-icon-colors\"\n [class]=\"dispatch.trailer.trailerType.logoName.slice(0, -4)\"\n [name]=\"dispatch.trailer.trailerType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"trailer-number\"\n [innerHTML]=\"\n dispatch.trailer.trailerNumber | highlightSearch: value()\n \"\n ></p>\n }\n </div>\n <div class=\"dropdown-subitem\">\n @if (dispatch.coDriver) {\n <svg-icon class=\"dispatch-icon\" name=\"cai-people\"></svg-icon>\n <p\n class=\"driver-name\"\n [innerHTML]=\"\n dispatch.driver.firstName +\n ' & ' +\n dispatch.coDriver.firstName | highlightSearch: value()\n \"\n ></p>\n } @else {\n <cai-avatar\n [driver]=\"dispatch.driver\"\n [size]=\"18\"\n [inverse]=\"true\"\n [hover]=\"false\"\n ></cai-avatar>\n <p\n class=\"driver-name\"\n [innerHTML]=\"\n dispatch.driver.firstName + ' ' + dispatch.driver.lastName\n | highlightSearch: value()\n \"\n ></p>\n }\n </div>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-hover\">\n <p>{{ dispatch.payType }}</p>\n <svg-icon name=\"cai-driver\" class=\"icon-sm\"></svg-icon>\n </div>\n <div class=\"end-item-base dispatch-ltl\">\n <p>{{ dispatch.numberOfSingleLtlLoads }}</p>\n <svg-icon name=\"cai-ltl-single\" class=\"icon-sm\"></svg-icon>\n </div>\n </div>\n </button>\n }\n } @else if (isNoBoardsVariant) {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- ftl dispatch dropdown -->\n<ng-template #ftlDispatchRef>\n @if (dropdownOptions().length) {\n @for (\n dispatchBoard of dropdownOptions();\n track dispatchBoard.id;\n let groupIndex = $index\n ) {\n @let dispatchBoardOption = cast(dispatchBoard, \"dispatchBoard\")!;\n @let isGroupFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === 0;\n @let isNoBoardsVariant =\n dispatchBoardOption.dispatcher === \"NOBOARDSVARIANT\";\n @if (dispatchBoardOption.count > 0) {\n @if (!isNoBoardsVariant) {\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(dispatchBoardOption.id, $event)\"\n [class]=\"{\n unfolded: dispatchBoardOption.dispatches?.length || 0 > 0,\n focused: isGroupFocused,\n }\"\n >\n <p>\n {{\n dispatchBoardOption.teamBoard\n ? \"Team Board\"\n : dispatchBoardOption.dispatcher\n }}\n </p>\n <p class=\"counter\">{{ dispatchBoardOption.count }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n }\n @if (\n dispatchBoardOption.dispatches &&\n dispatchBoardOption.dispatches.length > 0\n ) {\n @for (\n dispatch of dispatchBoardOption.dispatches;\n track dispatch.id;\n let optionIndex = $index\n ) {\n @let isOptionFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === optionIndex + 1;\n <!-- +1 since optionIndex is 0 for the group item header -->\n <button\n class=\"dropdown-item\"\n (click)=\"handleOption(dispatch, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'dispatch')?.id === dispatch.id,\n focused: isOptionFocused,\n }\"\n >\n <div class=\"dropdown-subitem truck-item\">\n <svg-icon\n class=\"truck-icon truck-trailer-icon-colors\"\n [class]=\"dispatch.truck.truckType.logoName.slice(0, -4)\"\n [name]=\"dispatch.truck.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"truck-number\"\n [innerHTML]=\"\n dispatch.truck.truckNumber | highlightSearch: value()\n \"\n ></p>\n </div>\n <div class=\"dropdown-subitem trailer-item\">\n @if (dispatch.trailer) {\n <svg-icon\n class=\"trailer-icon truck-trailer-icon-colors\"\n [class]=\"dispatch.trailer.trailerType.logoName.slice(0, -4)\"\n [name]=\"dispatch.trailer.trailerType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"trailer-number\"\n [innerHTML]=\"\n dispatch.trailer.trailerNumber | highlightSearch: value()\n \"\n ></p>\n }\n </div>\n <div class=\"dropdown-subitem\">\n @if (dispatch.coDriver) {\n <svg-icon class=\"dispatch-icon\" name=\"cai-people\"></svg-icon>\n <p\n class=\"driver-name\"\n [innerHTML]=\"\n dispatch.driver.firstName +\n ' & ' +\n dispatch.coDriver.firstName | highlightSearch: value()\n \"\n ></p>\n } @else {\n <cai-avatar\n [driver]=\"dispatch.driver\"\n [size]=\"18\"\n [inverse]=\"true\"\n [hover]=\"false\"\n ></cai-avatar>\n <p\n class=\"driver-name\"\n [innerHTML]=\"\n dispatch.driver.firstName + ' ' + dispatch.driver.lastName\n | highlightSearch: value()\n \"\n ></p>\n }\n </div>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-hover\">\n <!-- Load Status -->\n @let dispatchStatus = dispatch.status | dispatchStatus;\n @if (dispatchStatus) {\n <div\n class=\"dispatch-status\"\n [class]=\"dispatchStatus.statusClass\"\n >\n @if (dispatchStatus.badge) {\n <p\n class=\"status-block\"\n [class]=\"dispatchStatus.badge.color\"\n >\n {{ dispatchStatus.badge.text }}\n </p>\n }\n {{ dispatchStatus.label }}\n @if (dispatch.status?.statusCheckInNumber) {\n <p class=\"status-block\">\n {{ dispatch.status?.statusCheckInNumber }}\n </p>\n }\n </div>\n <p class=\"dispatch-separator\">|</p>\n }\n <p class=\"dispatch-load-count\">\n {{ dispatch?.pendingLoadCount }}\n </p>\n <svg-icon name=\"cai-load\" class=\"icon-sm\"></svg-icon>\n </div>\n <div class=\"end-item-base\">\n <p>{{ dispatch.payType }}</p>\n <svg-icon name=\"cai-driver\" class=\"icon-sm\"></svg-icon>\n </div>\n </div>\n </button>\n }\n } @else if (isNoBoardsVariant) {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #splitDriverRef>\n @if (dropdownOptions().length) {\n @for (splitDriverBoard of dropdownOptions(); track splitDriverBoard.id) {\n @let driverBoard = cast(splitDriverBoard, \"splitDriverBoard\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(driverBoard.id, $event)\"\n [class]=\"{\n unfolded: (driverBoard.drivers?.length ?? 0) > 0,\n }\"\n >\n <p>\n {{\n driverBoard.isTeamBoard ? \"Team Board\" : driverBoard.dispatcherName\n }}\n </p>\n <!-- TODO: Change to count once BE is fixed -->\n <p class=\"counter\">{{ driverBoard.drivers?.length || 0 }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n @for (driver of driverBoard.drivers || []; track driver.id) {\n @let driverOption = cast(driver, \"splitDriver\")!;\n <button\n class=\"dropdown-item\"\n (click)=\"handleOption(driverOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'splitDriver')?.id === driverOption.id,\n }\"\n >\n <div class=\"dropdown-subitem\">\n <div class=\"dropdown-avatar\">\n <cai-avatar\n [driver]=\"driverOption\"\n [size]=\"18\"\n [inverse]=\"true\"\n [hover]=\"false\"\n ></cai-avatar>\n </div>\n <p\n class=\"driver-name\"\n [innerHTML]=\"\n driverOption.firstName + ' ' + driverOption.lastName\n | highlightSearch: value()\n \"\n ></p>\n </div>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-hover\">\n @let dispatchStatus =\n driverOption.dispatchStatus | dispatchStatus;\n @if (dispatchStatus) {\n <div\n class=\"dispatch-status\"\n [class]=\"dispatchStatus.statusClass\"\n >\n @if (dispatchStatus.badge) {\n <p\n class=\"status-block\"\n [class]=\"dispatchStatus.badge.color\"\n >\n {{ dispatchStatus.badge.text }}\n </p>\n }\n {{ dispatchStatus.label }}\n @if (driverOption.dispatchStatus?.statusCheckInNumber) {\n <p class=\"status-block\">\n {{ driverOption.dispatchStatus?.statusCheckInNumber }}\n </p>\n }\n </div>\n <p class=\"dispatch-separator\">|</p>\n }\n <p class=\"dispatch-load-count\">\n {{ driverOption.pendingLoadsCount }}\n </p>\n <svg-icon name=\"cai-load\" class=\"icon-sm\"></svg-icon>\n </div>\n <div class=\"end-item-base\">\n <p>{{ driverOption.payTypeValue }}</p>\n </div>\n </div>\n </button>\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #splitTruckRef>\n @if (dropdownOptions().length) {\n @for (splitTruckBoard of dropdownOptions(); track splitTruckBoard.id) {\n @let truckBoard = cast(splitTruckBoard, \"splitTruckBoard\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(truckBoard.id, $event)\"\n [class]=\"{\n unfolded: (truckBoard.trucks?.length ?? 0) > 0,\n }\"\n >\n <p>\n {{\n truckBoard.isTeamBoard ? \"Team Board\" : truckBoard.dispatcherName\n }}\n </p>\n <!-- TODO: Change to count once BE is fixed -->\n <p class=\"counter\">{{ truckBoard.trucks?.length || 0 }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n @for (truck of truckBoard.trucks || []; track truck.id) {\n @let truckOption = cast(truck, \"splitTruck\")!;\n <button\n class=\"dropdown-item\"\n (click)=\"handleOption(truckOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'splitTruck')?.id === truckOption.id,\n }\"\n >\n <div class=\"dropdown-subitem truck-item\">\n <svg-icon\n class=\"truck-icon\"\n [style.--truck-color]=\"truckOption.color?.code || ''\"\n [name]=\"truckOption.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"truck-number\"\n [innerHTML]=\"truckOption.truckNumber | highlightSearch: value()\"\n ></p>\n </div>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-hover\">\n @let dispatchStatus = truckOption.dispatchStatus | dispatchStatus;\n @if (dispatchStatus) {\n <div\n class=\"dispatch-status\"\n [class]=\"dispatchStatus.statusClass\"\n >\n @if (dispatchStatus.badge) {\n <p\n class=\"status-block\"\n [class]=\"dispatchStatus.badge.color\"\n >\n {{ dispatchStatus.badge.text }}\n </p>\n }\n {{ dispatchStatus.label }}\n @if (truckOption.dispatchStatus?.statusCheckInNumber) {\n <p class=\"status-block\">\n {{ truckOption.dispatchStatus?.statusCheckInNumber }}\n </p>\n }\n </div>\n <p class=\"dispatch-separator\">|</p>\n }\n <p class=\"dispatch-load-count\">\n {{ truckOption.pendingLoadsCount }}\n </p>\n <svg-icon name=\"cai-load\" class=\"icon-sm\"></svg-icon>\n </div>\n <div class=\"end-item-base\">\n @if (\n truckOption.location?.city &&\n truckOption.location?.stateShortName\n ) {\n <p>\n {{ truckOption.location?.city }},\n {{ truckOption.location?.stateShortName }}\n </p>\n }\n </div>\n </div>\n </button>\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #splitTrailerRef>\n @if (dropdownOptions().length) {\n @for (splitTrailerBoard of dropdownOptions(); track splitTrailerBoard.id) {\n @let trailerBoard = cast(splitTrailerBoard, \"splitTrailerBoard\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(trailerBoard.id, $event)\"\n [class]=\"{\n unfolded: (trailerBoard.trailers?.length ?? 0) > 0,\n }\"\n >\n <p>\n {{\n trailerBoard.isTeamBoard\n ? \"Team Board\"\n : trailerBoard.dispatcherName\n }}\n </p>\n <!-- TODO: Change to count once BE is fixed -->\n <p class=\"counter\">{{ trailerBoard.trailers?.length || 0 }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n @for (trailer of trailerBoard.trailers || []; track trailer.id) {\n @let trailerOption = cast(trailer, \"splitTrailer\")!;\n <button\n class=\"dropdown-item\"\n (click)=\"handleOption(trailerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'splitTrailer')?.id === trailerOption.id,\n }\"\n >\n <div class=\"dropdown-subitem trailer-item\">\n <svg-icon\n class=\"trailer-icon\"\n [style.--trailer-color]=\"trailerOption.color?.code || ''\"\n [name]=\"trailerOption.trailerType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"trailer-number\"\n [innerHTML]=\"\n trailerOption.trailerNumber | highlightSearch: value()\n \"\n ></p>\n </div>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-hover\">\n @let dispatchStatus =\n trailerOption.dispatchStatus | dispatchStatus;\n @if (dispatchStatus) {\n <div\n class=\"dispatch-status\"\n [class]=\"dispatchStatus.statusClass\"\n >\n @if (dispatchStatus.badge) {\n <p\n class=\"status-block\"\n [class]=\"dispatchStatus.badge.color\"\n >\n {{ dispatchStatus.badge.text }}\n </p>\n }\n {{ dispatchStatus.label }}\n @if (trailerOption.dispatchStatus?.statusCheckInNumber) {\n <p class=\"status-block\">\n {{ trailerOption.dispatchStatus?.statusCheckInNumber }}\n </p>\n }\n </div>\n <p class=\"dispatch-separator\">|</p>\n }\n <p class=\"dispatch-load-count\">\n {{ trailerOption.pendingLoadsCount }}\n </p>\n <svg-icon name=\"cai-load\" class=\"icon-sm\"></svg-icon>\n </div>\n <div class=\"end-item-base\">\n @if (\n trailerOption.location?.city &&\n trailerOption.location?.stateShortName\n ) {\n <p>\n {{ trailerOption.location?.city }},\n {{ trailerOption.location?.stateShortName }}\n </p>\n }\n </div>\n </div>\n </button>\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #tollRef>\n @if (dropdownOptions().length) {\n @for (toll of dropdownOptions(); track $index; let groupIndex = $index) {\n @let tollOption = cast(toll, \"tollOption\")!;\n @let isGroupFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === 0;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item pe-none\"\n [class]=\"{\n unfolded: tollOption.tollTransponders?.length || 0 > 0,\n focused: isGroupFocused,\n }\"\n >\n <p>\n {{ tollOption.groupName }}\n </p>\n </button>\n @let tollTransponders = tollOption.tollTransponders || [];\n @for (\n tollTransponder of tollTransponders;\n track tollTransponder.id;\n let optionIndex = $index\n ) {\n @let isOptionFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === optionIndex + 1;\n <!-- +1 since optionIndex is 0 for the group item header -->\n <button\n class=\"dropdown-item\"\n (click)=\"handleOption(tollTransponder, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'tollTransponderOption')?.id ===\n tollTransponder.id,\n focused: isOptionFocused,\n }\"\n >\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (tollTransponder.name || '' | highlightSearch: value())\n : tollTransponder.name\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Dispatcher dropdown -->\n\n<ng-template #dispatcherRef>\n @if (dropdownOptions().length) {\n @for (dispatcher of dropdownOptions(); track $index; let index = $index) {\n @let dispatcherOption = cast(dispatcher, \"dispatcher\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ dispatcherOption.id }}\"\n (click)=\"handleOption(dispatcherOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'dispatcher')?.id === dispatcherOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <cai-avatar\n [driver]=\"{\n id: dispatcherOption?.id || 0,\n firstName: (dispatcherOption?.fullName || ' ').split(' ')[0] || '',\n lastName: (dispatcherOption?.fullName || ' ').split(' ')[1] || '',\n avatarFile: dispatcherOption?.avatarFile,\n colorFlag: dispatcherOption?.colorFlag,\n }\"\n [rounded]=\"!config().squareAvatar\"\n [hover]=\"false\"\n ></cai-avatar>\n <p\n class=\"dropdown-content-hazardous\"\n [innerHTML]=\"\n search\n ? (dispatcherOption.fullName || '' | highlightSearch: value())\n : dispatcherOption.fullName\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Driver Owner dropdown -->\n\n<ng-template #driverOwnerRef>\n @if (dropdownOptions().length) {\n @for (driverOwner of dropdownOptions(); track $index; let index = $index) {\n @let driverOwnerOption = cast(driverOwner, \"driverOwner\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ driverOwnerOption.id }}\"\n (click)=\"handleOption(driverOwnerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'driverOwner')?.id === driverOwnerOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <cai-avatar\n [driver]=\"{\n id: driverOwnerOption?.id || 0,\n firstName: (driverOwnerOption?.fullName || ' ').split(' ')[0] || '',\n lastName: (driverOwnerOption?.fullName || ' ').split(' ')[1] || '',\n avatarFile: driverOwnerOption?.avatarFile,\n colorFlag: driverOwnerOption?.colorFlag,\n owner: driverOwnerOption?.driverType === 'OwnerOperator',\n driverType: {\n id: 0,\n name: (driverOwnerOption?.driverType | driverTypeLabel),\n },\n }\"\n [rounded]=\"false\"\n [hover]=\"false\"\n ></cai-avatar>\n <p\n class=\"dropdown-content\"\n [innerHTML]=\"\n search\n ? (driverOwnerOption.fullName || '' | highlightSearch: value())\n : driverOwnerOption.fullName\n \"\n ></p>\n <div class=\"dropdown-subitem-end\">\n <p class=\"driver-type\">\n {{ driverOwnerOption.driverType | driverTypeLabel }}\n </p>\n </div>\n <svg-icon\n name=\"cai-checkmark\"\n class=\"dropdown-item-icon no-margin\"\n ></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #truckRef>\n @if (dropdownOptions().length) {\n @for (truck of dropdownOptions(); track $index; let index = $index) {\n @let truckOption = cast(truck, \"truckOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ truckOption.id }}\"\n (click)=\"handleOption(truckOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'truckOption')?.id === truckOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (truckOption.name || '' | highlightSearch: value())\n : truckOption.name\n \"\n ></p>\n <svg-icon\n class=\"truck-trailer-option truck-trailer-icon-colors\"\n [class]=\"truckOption.logoName.slice(0, -4)\"\n [name]=\"truckOption.logoName.slice(0, -4)\"\n ></svg-icon>\n <svg-icon\n name=\"cai-checkmark\"\n class=\"dropdown-item-icon no-margin\"\n ></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #trailerRef>\n @if (dropdownOptions().length) {\n @for (truck of dropdownOptions(); track $index; let index = $index) {\n @let trailerOption = cast(truck, \"trailerOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ trailerOption.id }}\"\n (click)=\"handleOption(trailerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'trailerOption')?.id === trailerOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (trailerOption.name || '' | highlightSearch: value())\n : trailerOption.name\n \"\n ></p>\n\n <svg-icon\n class=\"truck-trailer-option truck-trailer-icon-colors\"\n [class]=\"trailerOption.logoName.slice(0, -4)\"\n [name]=\"trailerOption.logoName.slice(0, -4)\"\n ></svg-icon>\n <svg-icon\n name=\"cai-checkmark\"\n class=\"dropdown-item-icon no-margin\"\n ></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #providerRef>\n @if (dropdownOptions().length) {\n @for (provider of dropdownOptions(); track $index; let index = $index) {\n @let providerOption = cast(provider, \"provider\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ providerOption?.id }}\"\n (click)=\"handleOption(providerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'provider')?.id === providerOption?.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <svg-icon\n class=\"full-icon\"\n [name]=\"'cai-' + providerOption?.name?.toLowerCase()\"\n ></svg-icon>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Hazardous dropdown -->\n<ng-template #hazardousRef>\n @if (dropdownOptions().length) {\n @for (hazardous of dropdownOptions(); track $index; let index = $index) {\n @let hazardousOption = cast(hazardous, \"hazardous\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ hazardousOption.id }}\"\n (click)=\"handleOption(hazardousOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'hazardous')?.id === hazardousOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <svg-icon [name]=\"hazardousOption.logoName?.slice(0, -4)\"></svg-icon>\n <p\n class=\"dropdown-content-hazardous\"\n [innerHTML]=\"\n search\n ? (hazardousOption.description || '' | highlightSearch: value())\n : hazardousOption.description\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #pmRef>\n @if (dropdownOptions().length) {\n @for (pm of dropdownOptions(); track $index; let index = $index) {\n @let pmOption = cast(pm, \"pmOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ pmOption.id }}\"\n (click)=\"handleOption(pmOption, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'pmOption')?.id === pmOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <svg-icon\n class=\"icon\"\n [name]=\"pmOption.title | remapPmIcons\"\n ></svg-icon>\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (pmOption.title || '' | highlightSearch: value())\n : pmOption.title\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #colorRef>\n @if (dropdownOptions().length) {\n @for (color of dropdownOptions(); track $index; let index = $index) {\n @let colorOption = cast(color, \"colorOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item color-item\"\n id=\"option-{{ colorOption.id }}\"\n (click)=\"handleOption(colorOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'colorOption')?.id === colorOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <svg-icon\n class=\"icon cai-color\"\n [name]=\"'cai-color'\"\n [style.--color]=\"colorOption?.code\"\n [style.--hover-color]=\"colorOption?.hoverCode\"\n ></svg-icon>\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (colorOption.name || '' | highlightSearch: value())\n : colorOption.name\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #stateRef>\n @if (dropdownOptions().length) {\n @for (state of dropdownOptions(); track $index; let index = $index) {\n @let stateOption = cast(state, \"state\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ stateOption.id }}\"\n (click)=\"handleOption(stateOption, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'state')?.id === stateOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <svg-icon\n class=\"icon\"\n [name]=\"\n 'cai-' +\n stateOption?.countryType?.name?.toLowerCase() +\n '-' +\n stateOption?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (stateOption.stateShortName +\n ' ' +\n (config().fullState\n ? ' (' + stateOption?.stateName + ')'\n : '') || '' | highlightSearch: value())\n : stateOption.stateShortName +\n ' ' +\n (config().fullState ? ' (' + stateOption?.stateName + ')' : '')\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #fuelStopTransactionRef>\n @if (dropdownOptions().length) {\n @for (\n franchise of dropdownOptions();\n track franchise.id;\n let groupIndex = $index\n ) {\n @let isGroupFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === 0;\n @let franchiseOption = cast(franchise, \"franchise\")!;\n @if (franchiseOption?.count !== null) {\n <div\n class=\"dropdown-group\"\n [class.no-items]=\"!franchiseOption?.count\"\n [class]=\"{\n active: openGroup() === franchiseOption.id,\n }\"\n [style.--max-height]=\"\n openGroup() === franchiseOption.id\n ? 30 * ((franchiseOption.fuelStopStores?.length || 0) + 1) + 'px'\n : '26px'\n \"\n >\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(franchiseOption.id, $event, franchiseOption)\"\n [class]=\"{\n unfolded: openGroup() === franchiseOption.id,\n focused: isGroupFocused,\n }\"\n >\n <p\n [innerHTML]=\"\n franchiseOption?.businessName || '' | highlightSearch: value()\n \"\n ></p>\n <p class=\"counter\">{{ franchiseOption.count }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n @if (openGroup() === franchiseOption.id) {\n @if (franchiseOption.fuelStopStores?.length || 0 > 0) {\n @for (\n fuelStopStore of franchiseOption.fuelStopStores;\n track fuelStopStore.id\n ) {\n @let isOptionFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === $index + 1;\n <!-- +1 since optionIndex is 0 for the group item header -->\n <button\n tabindex=\"-1\"\n class=\"dropdown-item fuel-stop-transaction-store\"\n [class]=\"{\n focused: isOptionFocused,\n }\"\n (click)=\"handleOption(fuelStopStore, $event)\"\n >\n <p\n [innerHTML]=\"\n fuelStopStore?.store ?? '' | highlightSearch: value()\n \"\n ></p>\n @let city = fuelStopStore?.address?.city ?? \"\";\n @let state = fuelStopStore?.address?.stateShortName ?? \"\";\n @let zip = fuelStopStore?.address?.zipCode ?? \"\";\n <p\n class=\"fuel-stop-transaction-store-address\"\n [innerHTML]=\"\n city + (state || zip ? ', ' : '') + state + ' ' + zip\n | highlightSearch: value()\n \"\n ></p>\n\n @if (fuelStopStore?.[\"favourite\"]) {\n <svg-icon\n name=\"cai-favorite\"\n class=\"favorite-icon\"\n ></svg-icon>\n }\n </button>\n }\n <!-- Infinite scroll trigger - emits event when item comes into view -->\n <div\n class=\"dropdown-infinite-scroll-item\"\n caiIntersectionObserver\n [threshold]=\"0.1\"\n (inView)=\"onDropdownScrolledToBottom(true)\"\n ></div>\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n }\n </div>\n } @else {\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n [class.focused]=\"\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === 0\n \"\n (click)=\"handleOption(franchiseOption, $event)\"\n >\n <p\n class=\"fuel-stop-transaction-nostore\"\n [innerHTML]=\"\n franchiseOption?.businessName || '' | highlightSearch: value()\n \"\n ></p>\n </button>\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- #endregion -->\n\n<!-- #region Selected options -->\n\n<!-- selected dispatch -->\n<ng-template #selectedDispatchRef>\n @let dispatchOption = cast(selectedOption(), \"dispatch\");\n @if (dispatchOption && !inputRef.value && !isAdding()) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-subitem truck-item\">\n <svg-icon\n class=\"truck-icon\"\n [name]=\"dispatchOption!.truck.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p class=\"truck-number\">\n {{ dispatchOption!.truck.truckNumber }}\n </p>\n </div>\n <div class=\"dropdown-subitem trailer-item\">\n @if (dispatchOption!.trailer) {\n <svg-icon\n class=\"trailer-icon\"\n [name]=\"\n cast(\n selectedOption(),\n 'dispatch'\n )!.trailer?.trailerType?.logoName?.slice(0, -4)\n \"\n ></svg-icon>\n <p class=\"trailer-number\">\n {{ dispatchOption!.trailer?.trailerNumber }}\n </p>\n }\n </div>\n <div class=\"dropdown-subitem\">\n @if (dispatchOption!.coDriver) {\n <svg-icon class=\"dispatch-icon\" name=\"cai-people\"></svg-icon>\n <p class=\"driver-name\">\n {{\n dispatchOption!.driver.firstName +\n \" & \" +\n dispatchOption!.coDriver?.firstName\n }}\n </p>\n } @else {\n <cai-avatar\n [driver]=\"dispatchOption!.driver\"\n [size]=\"18\"\n [hover]=\"false\"\n ></cai-avatar>\n <p class=\"driver-name\">\n {{\n dispatchOption!.driver.firstName +\n \" \" +\n dispatchOption!.driver.lastName\n }}\n </p>\n }\n </div>\n <p class=\"selected-end-item\">\n {{ dispatchOption!.payType }}\n </p>\n </div>\n } @else {\n @if (!inputRef.value && this.config().dropdown == \"dispatch\") {\n <p class=\"dropdown-selected\">Unassigned</p>\n }\n }\n</ng-template>\n\n<!-- selected broker -->\n<ng-template #selectedBrokerRef>\n @let brokerOption = cast(selectedOption(), \"broker\");\n @if (brokerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n @if (brokerOption!.fraudCheck) {\n <svg-icon name=\"cai-status-warning-lite\" class=\"fraud-icon\"></svg-icon>\n }\n <p class=\"dropdown-selected-content\">{{ brokerOption!.businessName }}</p>\n <div class=\"selected-end-item\">\n @if (!brokerOption!.creditLimit) {\n <p>Unlimited</p>\n } @else {\n <p>\n {{ brokerOption!.availableCredit || 0 | currency }}\n </p>\n <div\n class=\"progress-bar\"\n [style.--progress]=\"\n (\n brokerOption!\n | brokerProgress: brokerOption!.dnu || brokerOption!.ban\n ).activePercentageOfPaid + '%'\n \"\n [class]=\"\n (\n brokerOption!\n | brokerProgress: brokerOption!.dnu || brokerOption!.ban\n ).status\n \"\n ></div>\n }\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedContactRef>\n @let contactOption = cast(selectedOption(), \"contact\");\n @if (contactOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"dropdown-selected-content\">{{ contactOption?.contactName }}</p>\n <div class=\"selected-end-item\">\n <p>{{ contactOption?.phone }}</p>\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedShipperRef>\n @let shipperOption = cast(selectedOption(), \"shipper\");\n @if (shipperOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"dropdown-selected-content\">{{ shipperOption?.businessName }}</p>\n <div class=\"selected-end-item\">\n <p>{{ shipperOption?.address?.address }}</p>\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedOwnerRef>\n @let ownerOption = cast(selectedOption(), \"owner\");\n @if (ownerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"owner-ein\">{{ ownerOption?.ein }}</p>\n <p class=\"\">{{ ownerOption?.name }}</p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedFuelcardRef>\n @let fuelcardOption = cast(selectedOption(), \"fuelCard\");\n @if (fuelcardOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"fuelcard-number\">\n {{ fuelcardOption?.number }}\n </p>\n <p class=\"fuelcard-brand\">\n {{ fuelcardOption?.brand }}\n </p>\n <p class=\"\">\n {{ fuelcardOption?.account }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedBankRef>\n @let bankOption = cast(selectedOption(), \"bank\");\n @if (bankOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n @if (bankOption?.logoName) {\n <svg-icon\n class=\"option-icon full-size\"\n [name]=\"bankOption?.logoName?.slice(0, -4) || ''\"\n ></svg-icon>\n } @else {\n <p class=\"dropdown-selected-content\">{{ bankOption?.name }}</p>\n }\n </div>\n }\n</ng-template>\n\n<ng-template #selectedProviderRef>\n @let providerOption = cast(selectedOption(), \"provider\");\n @if (providerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon full-size\"\n [name]=\"'cai-' + providerOption?.name?.toLowerCase()\"\n ></svg-icon>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedMakeRef>\n @let makeOption = cast(selectedOption(), \"make\");\n @if (makeOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n @if (makeOption?.logoName) {\n <svg-icon\n class=\"option-icon full-size\"\n [name]=\"makeOption?.logoName?.slice(0, -4) || ''\"\n ></svg-icon>\n } @else {\n <p class=\"dropdown-selected-content\">{{ makeOption?.name }}</p>\n }\n </div>\n }\n</ng-template>\n\n<ng-template #selectedStateRef>\n @let stateOption = cast(selectedOption(), \"state\");\n @if (stateOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon\"\n [name]=\"\n 'cai-' +\n stateOption?.countryType?.name?.toLowerCase() +\n '-' +\n stateOption?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n <p class=\"dropdown-selected-content\">\n {{ stateOption?.stateShortName }}\n {{ config().fullState ? \" (\" + stateOption?.stateName + \")\" : \"\" }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedDispatcherRef>\n @let dispatcherOption = cast(selectedOption(), \"dispatcher\");\n @if (dispatcherOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <cai-avatar\n [driver]=\"{\n id: dispatcherOption?.id || 0,\n firstName: (dispatcherOption?.fullName || ' ').split(' ')[0] || '',\n lastName: (dispatcherOption?.fullName || ' ').split(' ')[1] || '',\n avatarFile: dispatcherOption?.avatarFile,\n colorFlag: dispatcherOption?.colorFlag,\n }\"\n [rounded]=\"!config().squareAvatar\"\n ></cai-avatar>\n <p class=\"dropdown-selected-content\">{{ dispatcherOption?.fullName }}</p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedDriverOwnerRef>\n @let driverOwnerOption = cast(selectedOption(), \"driverOwner\");\n @if (driverOwnerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <cai-avatar\n [driver]=\"{\n id: driverOwnerOption?.id || 0,\n firstName: (driverOwnerOption?.fullName || ' ').split(' ')[0] || '',\n lastName: (driverOwnerOption?.fullName || ' ').split(' ')[1] || '',\n avatarFile: driverOwnerOption?.avatarFile,\n colorFlag: driverOwnerOption?.colorFlag,\n owner: driverOwnerOption?.driverType === 'OwnerOperator',\n driverType: {\n id: 0,\n name: (driverOwnerOption?.driverType | driverTypeLabel),\n },\n }\"\n [rounded]=\"false\"\n ></cai-avatar>\n <p class=\"dropdown-selected-content\">{{ driverOwnerOption?.fullName }}</p>\n <p class=\"selected-end-item driver-type\">\n {{ driverOwnerOption?.driverType | driverTypeLabel }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedTruckRef>\n @let truckOption = cast(selectedOption(), \"truckOption\");\n @if (truckOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon\"\n [name]=\"truckOption?.logoName?.slice(0, -4)\"\n ></svg-icon>\n <p class=\"dropdown-selected-content\">{{ truckOption?.name }}</p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedTrailerRef>\n @let trailerOption = cast(selectedOption(), \"trailerOption\");\n @if (trailerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon\"\n [name]=\"trailerOption?.logoName?.slice(0, -4)\"\n ></svg-icon>\n <p class=\"dropdown-selected-content\">{{ trailerOption?.name }}</p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedHazardousRef>\n @let hazardousOption = cast(selectedOption(), \"hazardous\");\n @if (hazardousOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"hazard-icon\"\n [name]=\"hazardousOption?.logoName?.slice(0, -4)\"\n ></svg-icon>\n <p class=\"dropdown-selected-content dropdown-selected-hazardous\">\n {{ hazardousOption?.description }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedPmRef>\n @let pmOption = cast(selectedOption(), \"pmOption\");\n @if (pmOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon\"\n [name]=\"pmOption?.title | remapPmIcons\"\n ></svg-icon>\n <p class=\"dropdown-selected-content\">\n {{ pmOption?.title }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedColorRef>\n @let colorOption = cast(selectedOption(), \"colorOption\");\n @if (colorOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon cai-color\"\n [name]=\"'cai-color'\"\n [style.--color]=\"colorOption?.code\"\n [style.--hover-color]=\"colorOption?.hoverCode\"\n ></svg-icon>\n <p class=\"dropdown-selected-content\">\n {{ colorOption?.name }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedTollRef>\n @let tollOption = cast(selectedOption(), \"tollTransponderOption\");\n @if (tollOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"dropdown-selected-content\">\n {{ tollOption?.name }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedSplitDriverRef>\n @let splitDriverOption = cast(selectedOption(), \"splitDriver\");\n @if (splitDriverOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-selected-content\">\n <div class=\"dropdown-subitem\">\n <cai-avatar [driver]=\"splitDriverOption\" [size]=\"18\"></cai-avatar>\n <p class=\"driver-name\">\n {{ splitDriverOption.firstName + \" \" + splitDriverOption.lastName }}\n </p>\n </div>\n </div>\n\n <p class=\"selected-end-item\">\n {{ splitDriverOption.payTypeValue }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedSplitTruckRef>\n @let splitTruckOption = cast(selectedOption(), \"splitTruck\");\n @if (splitTruckOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-selected-content\">\n <div class=\"dropdown-subitem trailer-item\">\n <svg-icon\n class=\"trailer-icon\"\n [name]=\"splitTruckOption!.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p class=\"trailer-number\">\n {{ splitTruckOption!.truckNumber }}\n </p>\n </div>\n </div>\n <p class=\"selected-end-item\">\n @if (\n splitTruckOption!.location?.city &&\n splitTruckOption!.location?.stateShortName\n ) {\n {{ splitTruckOption!.location?.city }},\n {{ splitTruckOption!.location?.stateShortName }}\n }\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedSplitTrailerRef>\n @let splitTrailerOption = cast(selectedOption(), \"splitTrailer\");\n @if (splitTrailerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-selected-content\">\n <div class=\"dropdown-subitem truck-item\">\n <svg-icon\n class=\"truck-icon\"\n [name]=\"splitTrailerOption!.trailerType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p class=\"truck-number\">\n {{ splitTrailerOption!.trailerNumber }}\n </p>\n </div>\n </div>\n <p class=\"selected-end-item\">\n @if (\n splitTrailerOption!.location?.city &&\n splitTrailerOption!.location?.stateShortName\n ) {\n {{ splitTrailerOption!.location?.city }},\n {{ splitTrailerOption!.location?.stateShortName }}\n }\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedAccidentDriverRef>\n @let accidentDriverOption = cast(selectedOption(), \"accidentDriver\");\n @if (accidentDriverOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-subitem accident-name\">\n <cai-avatar\n [driver]=\"accidentDriverOption!\"\n [size]=\"18\"\n [hover]=\"false\"\n ></cai-avatar>\n <p>\n {{\n accidentDriverOption!.firstName +\n \" \" +\n accidentDriverOption!.lastName\n }}\n </p>\n </div>\n <p class=\"accident-dob\">\n {{ accidentDriverOption!.dateOfBirth | date: \"MM/dd/yy\" }}\n </p>\n <p class=\"accident-cdl-number\">\n {{ accidentDriverOption!.cdlNumber }}\n </p>\n <div class=\"dropdown-subitem accident-state\">\n <p>{{ accidentDriverOption!.cdlState?.stateShortName }}</p>\n @if (\n accidentDriverOption!.cdlState?.countryType?.name &&\n accidentDriverOption!.cdlState?.stateShortName\n ) {\n <svg-icon\n class=\"icon option-icon\"\n [name]=\"\n 'cai-' +\n accidentDriverOption!.cdlState?.countryType?.name?.toLowerCase() +\n '-' +\n accidentDriverOption!.cdlState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedAccidentTruckRef>\n @let accidentTruckOption = cast(selectedOption(), \"accidentTruck\");\n @if (accidentTruckOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-subitem accident-unit\">\n @if (accidentTruckOption!.truckType?.logoName) {\n <svg-icon\n class=\"truck-icon option-icon\"\n [name]=\"accidentTruckOption!.truckType!.logoName.slice(0, -4)\"\n ></svg-icon>\n }\n <p>{{ accidentTruckOption!.truckNumber }}</p>\n </div>\n <p class=\"accident-vin\">{{ accidentTruckOption!.vin }}</p>\n <p class=\"accident-plate\">\n {{ accidentTruckOption!.licensePlateNumber }}\n </p>\n <div class=\"dropdown-subitem accident-state\">\n <p>{{ accidentTruckOption!.licenseState?.stateShortName }}</p>\n @if (\n accidentTruckOption!.licenseState?.countryType?.name &&\n accidentTruckOption!.licenseState?.stateShortName\n ) {\n <svg-icon\n class=\"icon option-icon\"\n [name]=\"\n 'cai-' +\n accidentTruckOption!.licenseState?.countryType?.name?.toLowerCase() +\n '-' +\n accidentTruckOption!.licenseState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedAccidentTrailerRef>\n @let accidentTrailerOption = cast(selectedOption(), \"accidentTrailer\");\n @if (accidentTrailerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-subitem accident-unit\">\n @if (accidentTrailerOption!.trailerType?.logoName) {\n <svg-icon\n class=\"trailer-icon option-icon\"\n [name]=\"accidentTrailerOption!.trailerType!.logoName.slice(0, -4)\"\n ></svg-icon>\n }\n <p>{{ accidentTrailerOption!.trailerNumber }}</p>\n </div>\n <p class=\"accident-vin\">{{ accidentTrailerOption!.vin }}</p>\n <p class=\"accident-plate\">\n {{ accidentTrailerOption!.licensePlateNumber }}\n </p>\n <div class=\"dropdown-subitem accident-state\">\n <p>{{ accidentTrailerOption!.licenseState?.stateShortName }}</p>\n @if (\n accidentTrailerOption!.licenseState?.countryType?.name &&\n accidentTrailerOption!.licenseState?.stateShortName\n ) {\n <svg-icon\n class=\"icon option-icon\"\n [name]=\"\n 'cai-' +\n accidentTrailerOption!.licenseState?.countryType?.name?.toLowerCase() +\n '-' +\n accidentTrailerOption!.licenseState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #passwordTooltip>\n {{ visible() ? \"Hide\" : \"Show\" }}\n</ng-template>\n\n<ng-template #errorTooltip>\n @if (\n (config().errorBehavior === \"floating\" ||\n (config().errorBehavior === \"static\" && hasText()) ||\n config().inTable) &&\n invalid &&\n !dropdown.isOpen()\n ) {\n {{ (ngControl?.errors | errorMessage: config().customErrors)[0] }}\n }\n</ng-template>\n\n<!-- #endregion -->\n", styles: ["input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{transition:background-color 5000s ease-in-out 0s!important}input:-webkit-autofill:focus{-webkit-text-fill-color:#ffffff!important}input:-moz-autofill,input:-moz-autofill-preview{filter:none}*,*:before,*:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}p,ul,ol,dl,blockquote,figure,pre{margin:0}button,input,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button{background:none;border:none;padding:0}img,svg,video,canvas,audio,iframe,embed,object{display:block;max-width:100%;height:auto}ul,ol{padding-left:1.5rem;list-style-position:outside}a{color:inherit;text-decoration:inherit}table{border-collapse:collapse;border-spacing:0}:focus:not(:focus-visible){outline:none}.app-input-container{--color-text: #2f2f2f;--color-text-negative: #df3c3c;--color-text-heading: #424242;--color-text-subtle: #919191;--color-text-inverse: #ffffff;--color-icon-neutral: #919191;--color-icon-negative: #e66767;--color-icon-positive: #6692f1;--color-icon-inverse: rgba(255, 255, 255, .6980392157);--color-icon-disable: #cccccc;--color-surface-neutral: #eeeeee;--color-surface-neutral-hover: #dadada;--color-surface-neutral-focus: #1d1d1d;--color-surface-positive: #e9effd;--color-surface-positive-hover: #bed0f9;--color-surface-positive-focus: #0b49d1;--color-surface-negative: #fbe9e9;--color-surface-negative-hover: #f4bebe;--color-surface-negative-focus: #c20c0c;--color-surface-disable: #f7f7f7;position:relative;border-radius:2px;background-color:var(--color-surface-neutral);color:var(--color-text);transition:background-color .1s cubic-bezier(.46,.03,.51,.95);display:flex}.app-input-container.inverse{--color-text: #ffffff;--color-text-negative: #ed9292;--color-text-heading: #ffffff;--color-text-inverse: #ffffff;--color-icon-neutral: #aaaaaa;--color-icon-negative: #ed9292;--color-icon-positive: #92b1f5;--color-icon-disable: #6c6c6c;--color-surface-neutral: #424242;--color-surface-neutral-hover: #6c6c6c;--color-surface-neutral-focus: #dadada;--color-surface-positive: rgba(59, 115, 237, .2);--color-surface-positive-hover: #2f519a;--color-surface-positive-focus: #0b49d1;--color-surface-negative: rgba(223, 60, 60, .2);--color-surface-negative-hover: #923030;--color-surface-negative-focus: #c20c0c;--color-surface-disable: rgba(66, 66, 66, .4)}.app-input-container.inverse:not(.has-error):not(.has-valid) .app-input:focus-visible{color:#2f2f2f}.app-input-container.inverse:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .icon,.app-input-container.inverse:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .icon-sm{color:#919191!important}.app-input-container.inverse:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .separator{background-color:#919191!important}.app-input-container.inverse:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .bg-icon{background-color:#919191!important;color:#dadada}.app-input-container.inverse.is-empty:has(.app-input:focus-visible) .icon,.app-input-container.inverse.is-empty:has(.app-input:focus-visible) .icon-sm{color:#919191!important}.app-input-container.inverse.is-empty:has(.app-input:focus-visible) .bg-icon{background-color:#919191!important;color:#dadada}.app-input-container.inverse.is-empty:has(.app-input:focus-visible) .separator{background-color:#919191!important}.app-input-container.inverse.has-text:has(.app-input:disabled) .app-input-label{color:#424242!important}.app-input-container.hovered{background-color:var(--color-surface-neutral-hover)}.app-input-container.hovered:not(:has(.app-input:disabled)) .sub-label,.app-input-container.hovered:not(:has(.app-input:disabled)) .app-input-label .accident-state{margin-right:44px}@media(hover:hover){.app-input-container:hover{background-color:var(--color-surface-neutral-hover)}.app-input-container:hover:not(:has(.app-input:disabled)) .sub-label,.app-input-container:hover:not(:has(.app-input:disabled)) .app-input-label .accident-state{margin-right:44px}}.app-input-container.has-text .app-input-label{transform:translateY(-20px);font-weight:600;font-size:11px;color:var(--color-text-heading)!important}.app-input-container.has-text.fade-placeholder .app-input-label{transform:translateY(0);opacity:0}.app-input-container.has-text .subcontent{opacity:1!important}.app-input-container.has-text.static-placeholder .app-input-label{transform:translateY(0);opacity:1;color:var(--color-text)}@media(hover:hover){.app-input-container.has-text.is-address:hover .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-text.is-address:hover .bg-icon{background-color:var(--color-icon-neutral);color:var(--color-surface-neutral-hover)}}.app-input-container.has-text.is-address:has(.app-input:focus-visible) .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-text.is-address:has(.app-input:focus-visible) .bg-icon{background-color:var(--color-icon-inverse);color:var(--color-surface-neutral-focus)}.app-input-container:has(.app-input:focus-visible){background-color:var(--color-surface-neutral-focus)}.app-input-container:has(.app-input:focus-visible) .app-input-label{transform:translateY(-20px);font-weight:600;font-size:11px;color:var(--color-text-heading)!important}.app-input-container:has(.app-input:focus-visible) .subcontent{opacity:1!important;color:#ffffffb2;left:unset!important;right:4px!important}.app-input-container:has(.app-input:focus-visible).has-text .subcontent{right:26px!important}.app-input-container:has(.app-input:focus-visible) .sub-label,.app-input-container:has(.app-input:focus-visible) .app-input-label .accident-state{margin-right:44px}.app-input-container:has(.app-input:focus-visible).fade-placeholder .app-input-label{transform:translateY(0);opacity:0}.app-input-container:has(.app-input:focus-visible).static-placeholder .app-input-label{transform:translateY(0);opacity:1;color:var(--color-text-inverse)!important}.app-input-container:has(.app-input:focus-visible) .bg-icon{background-color:var(--color-icon-inverse);color:var(--color-surface-neutral-focus)}.app-input-container:has(.app-input:focus-visible) .separator{background-color:var(--color-icon-inverse)!important}.app-input-container:has(.app-input:disabled){background-color:var(--color-surface-disable)}.app-input-container:has(.app-input:disabled).hovered{background-color:var(--color-surface-disable)}@media(hover:hover){.app-input-container:has(.app-input:disabled):hover{background-color:var(--color-surface-disable)}}.app-input-container:has(.app-input:disabled):focus{background-color:var(--color-surface-disable)}.app-input-container:has(.app-input:disabled) .app-input-label{color:var(--color-text-subtle)}.app-input-container:has(.app-input:disabled) .separator{background-color:var(--color-icon-disable)}.app-input-container:has(.app-input:disabled) .dropdown-icon-container{opacity:0;pointer-events:none!important}.app-input-container:has(.app-input:disabled) .dropdown-selected:has(.selected-end-item){width:100%}.app-input-container:has(.app-input:disabled) .driver-type{color:#919191}.app-input-container:has(.app-input:disabled) .icon-container{pointer-events:none!important}.app-input-container:has(.app-input:disabled):not(.disabled-removable) .cancel-button{display:none!important}.app-input-container:has(.app-input:required):not(:has(.app-input:disabled)) .app-input-name:after{content:\" *\";color:var(--color-text-negative)}@media(hover:hover){.app-input-container:not(.has-error).is-empty:not(:has(.app-input:focus-visible)) .dropdown-icon-container:hover .dropdown-icon{color:#424242!important}}@media(hover:hover){.app-input-container:not(.has-error).is-empty:not(:has(.app-input:focus-visible)) .hover-icon:hover{color:#424242!important}}@media(hover:hover){.app-input-container:not(.has-error).is-empty:has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon{color:#fff!important}}@media(hover:hover){.app-input-container:not(.has-error).is-empty:has(.app-input:focus-visible) .hover-icon:hover{color:#fff!important}}@media(hover:hover){.app-input-container:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon{color:#fff!important}}@media(hover:hover){.app-input-container:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .hover-icon:hover{color:#fff!important}}.app-input-container.canceled .app-input-label,.app-input-container.canceled .app-input{color:var(--color-text-subtle)!important}.app-input-container.canceled .icon-container .icon,.app-input-container.canceled .icon-container .icon-sm{color:var(--color-icon-disable)!important}.subcontent{pointer-events:none;position:absolute;left:6px;color:#919191;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);transition:right .1s ease-in-out,left .1s ease-in-out,transform .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95);opacity:0;font-family:Montserrat;font-weight:400;font-style:Regular;font-size:14px;line-height:18px;letter-spacing:0%;height:18px;overflow:hidden}.subcontent .subcontent-hide{opacity:0!important}.app-input-label{position:absolute;display:flex;gap:4px;left:0;font-size:14px;line-height:18px;font-weight:400;pointer-events:none;padding:.25rem 6px;color:var(--color-text);transition:transform .1s ease-in-out,font-weight .1s ease-in-out,color .1s ease-in-out,font-size .1s ease-in-out,opacity .1s ease-in-out;transform:translateY(0);-webkit-user-select:none;user-select:none}.app-input-label.placeholder-color{color:var(--placeholder-color)!important}.app-input{padding:.25rem 6px;width:100%;font-size:14px;line-height:18px;font-weight:400;border:0;outline:none;margin-top:auto;background-color:transparent;transition:color .1s cubic-bezier(.46,.03,.51,.95);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:relative}.app-input:focus-visible{color:var(--color-text-inverse)}@media(pointer:coarse){.app-input{font-size:16px;transform:scale(.875);transform-origin:left center;height:26px}}.app-input-error{position:absolute;bottom:-16px;right:6px;font-size:11px;font-weight:600;opacity:0;pointer-events:none;-webkit-user-select:none;user-select:none;transition:opacity .1s cubic-bezier(.46,.03,.51,.95),transform .1s cubic-bezier(.46,.03,.51,.95);color:var(--color-text-negative);transform:translateY(-10px)}.app-input-container.has-error{background-color:var(--color-surface-negative)}.app-input-container.has-error:not(.has-icon):not(.has-password):not(.has-right) .app-input{padding-right:26px}.app-input-container.has-error:has(.app-input:focus-visible):not(.has-right) .app-input{padding-right:26px}@media(hover:hover){.app-input-container.has-error:hover:not(.has-right) .app-input{padding-right:26px}}.app-input-container.has-error.has-right .app-input{padding-right:6px;padding-left:26px}.app-input-container.has-error.hovered{background-color:var(--color-surface-negative-hover)}.app-input-container.has-error.hovered.has-text .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-error.hovered.has-text .bg-icon{background-color:var(--color-icon-negative);color:var(--color-surface-negative-hover)}@media(hover:hover){.app-input-container.has-error:hover{background-color:var(--color-surface-negative-hover)}.app-input-container.has-error:hover.has-text .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-error:hover.has-text .bg-icon{background-color:var(--color-icon-negative);color:var(--color-surface-negative-hover)}}.app-input-container.has-error:has(.app-input:focus-visible){background-color:var(--color-surface-negative-focus);color:var(--color-text-inverse)}.app-input-container.has-error:has(.app-input:focus-visible).has-text .button-icon{opacity:1}.app-input-container.has-error:has(.app-input:focus-visible).has-text .bg-icon{background-color:var(--color-icon-inverse);color:var(--color-surface-negative-focus)}.app-input-container.has-error:has(.app-input:focus-visible).is-empty,.app-input-container.has-error:has(.app-input:focus-visible).has-dropdown:not(.has-selected){background-color:var(--color-surface-neutral-focus)!important}.app-input-container.has-error:has(.app-input:focus-visible).is-empty .app-input-error,.app-input-container.has-error:has(.app-input:focus-visible).has-dropdown:not(.has-selected) .app-input-error{opacity:0}.app-input-container.has-error:has(.app-input:focus-visible).is-empty .bg-icon,.app-input-container.has-error:has(.app-input:focus-visible).has-dropdown:not(.has-selected) .bg-icon{color:var(--color-surface-neutral-focus)!important}.app-input-container.has-error:has(.app-input:not(:focus-visible)).app-input-container:not(:hover) .warning-icon,.app-input-container.has-error.is-empty:has(.app-input:not(:focus-visible)) .warning-icon{opacity:1!important}.app-input-container.has-error .app-input-error{opacity:1;transform:translateY(0);pointer-events:auto}.app-input-container.has-error .app-input::selection{background-color:#ffffff4d}.app-input-container.has-error .icon-container .separator,.app-input-container.has-error .dropdown-icon-container .separator{background-color:var(--color-icon-negative)}.app-input-container.has-error .icon-container .icon,.app-input-container.has-error .icon-container .icon-sm,.app-input-container.has-error .dropdown-icon-container .icon,.app-input-container.has-error .dropdown-icon-container .icon-sm{color:var(--color-icon-negative)}@media(hover:hover){.app-input-container.has-error:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .bg-icon:hover{background-color:#c20c0c!important}}@media(hover:hover){.app-input-container.has-error:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .dropdown-icon-container:hover .dropdown-icon{color:#c20c0c!important}}@media(hover:hover){.app-input-container.has-error:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .hover-icon:hover{color:#c20c0c!important}}@media(hover:hover){.app-input-container.has-error:not(.removable):has(.app-input:focus-visible) .bg-icon:hover{background-color:#fff!important}}@media(hover:hover){.app-input-container.has-error:not(.removable):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon{color:#fff!important}}@media(hover:hover){.app-input-container.has-error:not(.removable):has(.app-input:focus-visible) .hover-icon:hover{color:#fff!important}}.app-input-container.has-valid:not(.has-icon):not(.has-password):not(.has-right) .app-input{padding-right:26px}.app-input-container.has-valid:has(.app-input:focus-visible):not(.has-right) .app-input{padding-right:26px}@media(hover:hover){.app-input-container.has-valid:hover:not(.has-right) .app-input{padding-right:26px}}.app-input-container.has-valid.has-right .app-input{padding-right:6px;padding-left:26px}.app-input-container.has-valid.has-text:not(.has-dropdown):not(.in-table),.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.in-table),.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.in-table){background-color:var(--color-surface-positive)}.app-input-container.has-valid.has-text:not(.has-dropdown).hovered,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown).hovered,.app-input-container.has-valid.has-multiple-dropdown.has-text.hovered{background-color:var(--color-surface-positive-hover)}.app-input-container.has-valid.has-text:not(.has-dropdown).hovered .button-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown).hovered .button-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text.hovered .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-valid.has-text:not(.has-dropdown).hovered .bg-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown).hovered .bg-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text.hovered .bg-icon{background-color:var(--color-icon-positive);color:var(--color-surface-positive-hover)}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):hover,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):hover,.app-input-container.has-valid.has-multiple-dropdown.has-text:hover{background-color:var(--color-surface-positive-hover)}.app-input-container.has-valid.has-text:not(.has-dropdown):hover .button-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):hover .button-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:hover .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-valid.has-text:not(.has-dropdown):hover .bg-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):hover .bg-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:hover .bg-icon{background-color:var(--color-icon-positive);color:var(--color-surface-positive-hover)}}.app-input-container.has-valid.has-text:not(.has-dropdown):has(.app-input:focus-visible),.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):has(.app-input:focus-visible),.app-input-container.has-valid.has-multiple-dropdown.has-text:has(.app-input:focus-visible){background-color:var(--color-surface-positive-focus);color:var(--color-text-inverse)}.app-input-container.has-valid.has-text:not(.has-dropdown):has(.app-input:focus-visible) .button-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):has(.app-input:focus-visible) .button-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:has(.app-input:focus-visible) .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-valid.has-text:not(.has-dropdown):has(.app-input:focus-visible) .bg-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):has(.app-input:focus-visible) .bg-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:has(.app-input:focus-visible) .bg-icon{background-color:var(--color-icon-inverse);color:var(--color-surface-positive-focus)}.app-input-container.has-valid.has-text:not(.has-dropdown):has(.app-input:not(:focus-visible)).app-input-container:not(:hover) .positive-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):has(.app-input:not(:focus-visible)).app-input-container:not(:hover) .positive-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:has(.app-input:not(:focus-visible)).app-input-container:not(:hover) .positive-icon{opacity:1}.app-input-container.has-valid.has-text:not(.has-dropdown) .app-input::selection,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .app-input::selection,.app-input-container.has-valid.has-multiple-dropdown.has-text .app-input::selection{background-color:#ffffff4d}.app-input-container.has-valid.has-text:not(.has-dropdown) .icon-container .separator,.app-input-container.has-valid.has-text:not(.has-dropdown) .dropdown-icon-container .separator,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .icon-container .separator,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .dropdown-icon-container .separator,.app-input-container.has-valid.has-multiple-dropdown.has-text .icon-container .separator,.app-input-container.has-valid.has-multiple-dropdown.has-text .dropdown-icon-container .separator{background-color:var(--color-icon-positive)}.app-input-container.has-valid.has-text:not(.has-dropdown) .icon-container .icon,.app-input-container.has-valid.has-text:not(.has-dropdown) .icon-container .icon-sm,.app-input-container.has-valid.has-text:not(.has-dropdown) .dropdown-icon-container .icon,.app-input-container.has-valid.has-text:not(.has-dropdown) .dropdown-icon-container .icon-sm,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .icon-container .icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .icon-container .icon-sm,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .dropdown-icon-container .icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .dropdown-icon-container .icon-sm,.app-input-container.has-valid.has-multiple-dropdown.has-text .icon-container .icon,.app-input-container.has-valid.has-multiple-dropdown.has-text .icon-container .icon-sm,.app-input-container.has-valid.has-multiple-dropdown.has-text .dropdown-icon-container .icon,.app-input-container.has-valid.has-multiple-dropdown.has-text .dropdown-icon-container .icon-sm{color:var(--color-icon-positive)}.app-input-container.has-valid.has-text:not(.has-dropdown) .icon-container .password-key,.app-input-container.has-valid.has-text:not(.has-dropdown) .dropdown-icon-container .password-key,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .icon-container .password-key,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .dropdown-icon-container .password-key,.app-input-container.has-valid.has-multiple-dropdown.has-text .icon-container .password-key,.app-input-container.has-valid.has-multiple-dropdown.has-text .dropdown-icon-container .password-key{opacity:0;pointer-events:none}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .bg-icon:hover,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .bg-icon:hover,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .bg-icon:hover{background-color:#0b49d1!important}}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .dropdown-icon-container:hover .dropdown-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .dropdown-icon-container:hover .dropdown-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .dropdown-icon-container:hover .dropdown-icon{color:#0b49d1!important}}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .hover-icon:hover,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .hover-icon:hover,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .hover-icon:hover{color:#0b49d1!important}}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):has(.app-input:focus-visible) .bg-icon:hover,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):has(.app-input:focus-visible) .bg-icon:hover,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):has(.app-input:focus-visible) .bg-icon:hover{background-color:#fff!important}}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon{color:#fff!important}}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):has(.app-input:focus-visible) .hover-icon:hover,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):has(.app-input:focus-visible) .hover-icon:hover,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):has(.app-input:focus-visible) .hover-icon:hover{color:#fff!important}}.in-table,.in-table.has-error,.in-table.has-valid.has-text{background-color:transparent}.in-table.has-error:not(:hover).in-table:not(.app-input-container:has(.app-input:focus-visible)) .app-input{color:var(--color-text-negative)}.in-table.has-error:not(:hover).in-table:not(.app-input-container:has(.app-input:focus-visible)):not(.static-placeholder) .app-input-label{color:var(--color-text-negative)}.in-table .dropdown-icon-container{opacity:0}@media(hover:hover){.in-table:hover .dropdown-icon-container{opacity:1}}.in-table:has(.app-input:focus-visible) .dropdown-icon-container{opacity:1}.app-input-icon{position:absolute;right:4px;top:4px;pointer-events:none;transition:color .1s cubic-bezier(.46,.03,.51,.95),background-color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95)}.button-icon{opacity:0;pointer-events:none}@media(hover:hover){.button-icon:hover{cursor:pointer}}.bg-icon{background-color:var(--color-icon-neutral);color:var(--color-surface-neutral);border-radius:1px;height:18px;width:18px;padding:0;display:grid;place-items:center;transition:background-color .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95),transform .1s cubic-bezier(.46,.03,.51,.95);transform-box:border-box;transform-origin:center;will-change:transform}.bg-icon svg{transition:transform .1s cubic-bezier(.46,.03,.51,.95)}@media(hover:hover){.bg-icon:hover{transform:scale(1.2222222222)}.bg-icon:hover svg{transform:scale(.8181818182)}}.bg-icon:active{transform:scale(1)}.round-icon{background-color:#919191;color:#2f2f2f;border-radius:50%;height:18px;width:18px;padding:0;display:grid;place-items:center;transition:background-color .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95)}.positive-icon{color:var(--color-icon-positive);height:18px;width:18px;display:grid;place-items:center;opacity:0}.warning-icon{color:var(--color-icon-negative);height:18px;width:18px;display:grid;place-items:center;opacity:0}.text-color-positive:not(:hover):not(:has(.app-input:focus-visible)) .app-input{color:#3b73ed}.is-plan.has-selected .app-input,.is-plan.has-selected .dropdown-selected-content,.is-plan.has-selected .selected-text{font-weight:700}.is-plan.has-selected:not(:has(.app-input:focus-visible)) .app-input,.is-plan.has-selected:not(:has(.app-input:focus-visible)) .dropdown-selected-content,.is-plan.has-selected:not(:has(.app-input:focus-visible)) .selected-text{color:#3b73ed}@media(hover:hover){.is-plan.has-selected:not(:has(.app-input:focus-visible)):hover .app-input,.is-plan.has-selected:not(:has(.app-input:focus-visible)):hover .dropdown-selected-content,.is-plan.has-selected:not(:has(.app-input:focus-visible)):hover .selected-text{color:#0b49d1}}.floating-error .app-input-error{opacity:0!important}.static-error .app-input-error{pointer-events:none!important;transform:translateY(calc(-100% - 4px))!important;transition:margin .1s ease-in-out,opacity .1s ease-in-out}.static-error.has-icon .app-input-error{margin-right:26px!important}.static-error:has(.app-input:not(:focus-visible)) .app-input-error{opacity:1}.static-error.has-text .app-input-error{opacity:0!important}.static-placeholder .app-input-label{position:relative;white-space:nowrap;font-size:11px;font-weight:600}.static-placeholder .dropdown-selected{overflow:hidden;display:flex!important;justify-content:left!important}.static-placeholder .dropdown-selected .selected-label-hidden{width:max-content;font-size:11px;font-weight:600;opacity:0;-webkit-user-select:none;user-select:none;pointer-events:none}.static-placeholder .dropdown-selected .selected-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;display:inline-block}.static-placeholder .app-input{padding-left:0!important}.static-placeholder.has-dropdown .cancel-button{display:none}.static-placeholder.has-dropdown .dropdown-icon-container .dropdown-icon{opacity:0;pointer-events:none}.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):has(.app-input:focus-visible) .icon-container .icon,.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):has(.app-input:focus-visible) .icon-container .icon-sm{opacity:0}.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):has(.app-input:focus-visible) .dropdown-icon-container{z-index:5;pointer-events:auto;cursor:pointer}.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):has(.app-input:focus-visible) .dropdown-icon-container .dropdown-icon{opacity:1!important}@media(hover:hover){.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):hover .icon-container .icon,.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):hover .icon-container .icon-sm{opacity:0}.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):hover .dropdown-icon-container{z-index:5;pointer-events:auto;cursor:pointer}.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):hover .dropdown-icon-container .dropdown-icon{opacity:1!important}}.static-placeholder.has-dropdown .dropdown-icon-container{right:4px!important;left:auto!important}.app-input-container.has-icon:has(.app-input:focus-visible) .icon-container .icon,.app-input-container.has-icon:has(.app-input:focus-visible) .icon-container .icon-sm,.app-input-container.has-icon:has(.app-input:focus-visible) .dropdown-icon-container .icon,.app-input-container.has-icon:has(.app-input:focus-visible) .dropdown-icon-container .icon-sm,.app-input-container.has-password:has(.app-input:focus-visible) .icon-container .icon,.app-input-container.has-password:has(.app-input:focus-visible) .icon-container .icon-sm,.app-input-container.has-password:has(.app-input:focus-visible) .dropdown-icon-container .icon,.app-input-container.has-password:has(.app-input:focus-visible) .dropdown-icon-container .icon-sm,.app-input-container.has-dropdown:has(.app-input:focus-visible) .icon-container .icon,.app-input-container.has-dropdown:has(.app-input:focus-visible) .icon-container .icon-sm,.app-input-container.has-dropdown:has(.app-input:focus-visible) .dropdown-icon-container .icon,.app-input-container.has-dropdown:has(.app-input:focus-visible) .dropdown-icon-container .icon-sm{color:var(--color-icon-inverse)!important}.app-input-container.has-icon.colored-icon .icon-container .icon,.app-input-container.has-icon.colored-icon .icon-container .icon-sm,.app-input-container.has-password.colored-icon .icon-container .icon,.app-input-container.has-password.colored-icon .icon-container .icon-sm,.app-input-container.has-dropdown.colored-icon .icon-container .icon,.app-input-container.has-dropdown.colored-icon .icon-container .icon-sm{color:var(--icon-color)}.app-input-container.has-icon.is-empty:has(.app-input:disabled) .icon-container .icon,.app-input-container.has-icon.is-empty:has(.app-input:disabled) .icon-container .icon-sm,.app-input-container.has-icon.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon,.app-input-container.has-icon.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon-sm,.app-input-container.has-password.is-empty:has(.app-input:disabled) .icon-container .icon,.app-input-container.has-password.is-empty:has(.app-input:disabled) .icon-container .icon-sm,.app-input-container.has-password.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon,.app-input-container.has-password.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon-sm,.app-input-container.has-dropdown.is-empty:has(.app-input:disabled) .icon-container .icon,.app-input-container.has-dropdown.is-empty:has(.app-input:disabled) .icon-container .icon-sm,.app-input-container.has-dropdown.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon,.app-input-container.has-dropdown.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon-sm{color:var(--color-icon-disable)!important}.app-input-container.has-icon .positive-icon,.app-input-container.has-icon .warning-icon,.app-input-container.has-password .positive-icon,.app-input-container.has-password .warning-icon,.app-input-container.has-dropdown .positive-icon,.app-input-container.has-dropdown .warning-icon{display:none!important}.app-input-container.has-icon .icon,.app-input-container.has-icon .icon-sm,.app-input-container.has-password .icon,.app-input-container.has-password .icon-sm,.app-input-container.has-dropdown .icon,.app-input-container.has-dropdown .icon-sm{height:18px;width:18px;display:grid;place-items:center;color:var(--color-icon-neutral);transition:color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95);opacity:1}.app-input-container.has-icon:has(.app-input:focus-visible):not(.static-placeholder) .dropdown-selected,.app-input-container.has-password:has(.app-input:focus-visible):not(.static-placeholder) .dropdown-selected,.app-input-container.has-dropdown:has(.app-input:focus-visible):not(.static-placeholder) .dropdown-selected{width:calc(100% - 48px)!important}@media(hover:hover){.app-input-container.has-icon:hover:not(:has(.app-input:disabled)):not(.static-placeholder) .dropdown-selected,.app-input-container.has-password:hover:not(:has(.app-input:disabled)):not(.static-placeholder) .dropdown-selected,.app-input-container.has-dropdown:hover:not(:has(.app-input:disabled)):not(.static-placeholder) .dropdown-selected{width:calc(100% - 48px)!important}}.icon-sm{height:14px;width:14px}.app-input-container.has-icon .icon-container,.app-input-container.has-password .icon-container{height:26px;display:flex;justify-items:center;align-items:center;gap:4px;padding:.25rem 0 .25rem 6px}@media(hover:hover){.app-input-container.has-icon .icon-container:hover,.app-input-container.has-password .icon-container:hover{cursor:text}}.app-input-container.has-icon .subcontent,.app-input-container.has-password .subcontent{left:32px}.app-input-container.has-icon .app-input-label,.app-input-container.has-password .app-input-label{left:27px}.app-input-container.has-icon .app-input,.app-input-container.has-password .app-input{padding-left:4px}.separator{height:14px;width:1px;border-radius:2px;background-color:var(--color-icon-neutral);transition:background-color .1s cubic-bezier(.46,.03,.51,.95);opacity:40%}.has-password .password-icons{display:grid;place-items:center;position:relative;height:18px;width:18px}.has-password .password-icons .icon,.has-password .password-icons .icon-sm{position:absolute;opacity:0}.has-password.is-empty:has(.app-input:not(:focus-visible)) .password-key{opacity:1!important}.has-password.is-empty:has(.app-input:not(:focus-visible)) .password-icons{pointer-events:none}.has-password:has(.app-input:disabled) .password-icons{pointer-events:none}.has-password.has-text .password-hidden,.has-password:has(.app-input:focus-visible) .password-hidden{opacity:1!important}@media(hover:hover){.has-password.has-text .password-hidden:hover,.has-password:has(.app-input:focus-visible) .password-hidden:hover{cursor:pointer}}.has-visible.has-text .password-shown,.has-visible:has(.app-input:focus-visible) .password-shown{opacity:1!important}@media(hover:hover){.has-visible.has-text .password-shown:hover,.has-visible:has(.app-input:focus-visible) .password-shown:hover{cursor:pointer}}.has-visible.has-text .password-hidden,.has-visible:has(.app-input:focus-visible) .password-hidden{opacity:0!important;pointer-events:none}.has-number .number-container{position:relative;display:flex;justify-content:center;align-items:center;right:4px;pointer-events:none}.has-number .number-buttons{display:flex;gap:4px;position:absolute;right:0;justify-content:center;align-items:center;opacity:0;transition:opacity .1s cubic-bezier(.46,.03,.51,.95);pointer-events:none}.has-number .plus-icon,.has-number .minus-icon{cursor:pointer;pointer-events:none}.has-number:has(.app-input:focus-visible){cursor:text}.has-number:has(.app-input:focus-visible) .number-buttons{opacity:1}.has-number:has(.app-input:focus-visible) .plus-icon{pointer-events:auto}.has-number:has(.app-input:focus-visible) .minus-icon{pointer-events:auto}.has-number:has(.app-input:focus-visible) .button-icon{opacity:0!important;pointer-events:none!important}.has-number:has(.app-input:focus-visible) .number-container{width:60px}.has-number:has(.app-input:focus-visible) .subcontent{right:52px!important}.has-number:has(.app-input:focus-visible).has-text .subcontent{right:52px!important}.colored-icon .icon,.colored-icon .icon-sm{color:var(--icon-color)!important}.dropdown-anchor{position:absolute;width:100%;-webkit-user-select:none;user-select:none;pointer-events:none;opacity:0}.dropdown-infinite-scroll-item{width:100%;-webkit-user-select:none;user-select:none;pointer-events:none;opacity:0;height:0}.dropdown-menu{min-width:0px!important;width:100%;border:0;margin-top:4px;top:30px;height:var(--unfiltered-height);min-height:var(--unfiltered-height);padding:0!important;overflow:hidden;border-radius:0!important;background:transparent!important}.dropdown-menu.has-stroke .dropdown-menu-content{outline:1px solid #6c6c6c;outline-offset:-1px}.dropdown-menu .dropdown-menu-content{position:absolute;width:100%;background-color:#2f2f2f;border-radius:3px;padding:4px 0 4px 4px;max-height:244px;z-index:1100!important;overflow-y:scroll;margin-top:auto!important;scroll-padding:6px 0}.dropdown-menu .dropdown-menu-content::-webkit-scrollbar{background-color:#2f2f2f;border-radius:0 3px 3px 0;width:4px}.dropdown-menu .dropdown-menu-content::-webkit-scrollbar-thumb{width:4px;background:#2f2f2f;border-left:2px solid #919191;background-clip:padding-box;border-radius:1px 3px 3px 1px}@supports (-moz-appearance: none){.dropdown-menu .dropdown-menu-content{padding-right:4px;scrollbar-width:4px;scrollbar-color:#919191 transparent;scrollbar-gutter:stable!important}@media(hover:hover){.dropdown-menu .dropdown-menu-content:hover{scrollbar-color:#919191 transparent;scrollbar-width:4px!important;scrollbar-gutter:stable!important}}}@-moz-document url-prefix(){.dropdown-menu .dropdown-menu-content{overflow:-moz-scrollbars-vertical;scrollbar-width:4px;scrollbar-color:#919191 transparent}}.option-icon{color:#6c6c6c;transition:color .1s cubic-bezier(.46,.03,.51,.95)}.option-icon.full-size{width:max-content;min-width:100%;height:18px!important;min-height:18px;flex-shrink:0;overflow:hidden}.option-icon.full-size svg{height:18px;width:max-content}.cai-color{color:var(--color)!important;transition:color .1s cubic-bezier(.46,.03,.51,.95)}@media(hover:hover){.color-item:hover .cai-color{color:var(--hover-color)!important}}.dropdown-item{color:#fff;font-weight:400;font-size:14px;line-height:18px;height:26px;padding:4px;width:100%;scroll-margin:6px 0;outline:1px solid transparent;outline-offset:-1px;display:flex;align-items:center;justify-content:left;gap:4px;background-color:#2f2f2f;transition:background-color .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95),outline .1s cubic-bezier(.46,.03,.51,.95);border-radius:2px;position:relative}.dropdown-item.focused{outline:1px solid #6c6c6c!important}.dropdown-item.focused .end-item-base{opacity:0}.dropdown-item.focused .end-item-hover{opacity:1}.dropdown-item.focused .full-icon{color:#ffffffb2}.dropdown-item.focused .truck-trailer-option{opacity:1}.dropdown-item .icon,.dropdown-item .icon-sm{color:#919191}.dropdown-item .dropdown-content-with-icon{max-width:calc(100% - 22px);overflow-x:hidden;word-break:break-all;text-overflow:ellipsis;white-space:nowrap}.dropdown-item .dropdown-content-hazardous{max-width:calc(100% - 40px);overflow-x:hidden;word-break:break-all;text-overflow:ellipsis;white-space:nowrap}.dropdown-item .dropdown-content{max-width:70%;overflow-x:hidden;word-break:break-all;text-overflow:ellipsis;white-space:nowrap}@media(hover:hover){.dropdown-item:hover:not(.no-hover){background-color:#424242}.dropdown-item:hover:not(.no-hover) .end-item-base{opacity:0}.dropdown-item:hover:not(.no-hover) .end-item-hover{opacity:1}.dropdown-item:hover:not(.no-hover) .full-icon{color:#ffffffb2}.dropdown-item:hover:not(.no-hover) .truck-trailer-option{opacity:1}}.dropdown-item.no-hover{cursor:default;pointer-events:none}.dropdown-item:focus-visible{background-color:#424242;border:0;outline:none}.dropdown-item:not(:first-child){margin-top:4px}.dropdown-item.banned{color:#919191;cursor:default}@media(hover:hover){.dropdown-item.banned:hover{color:#919191;background-color:#2f2f2f}.dropdown-item.banned:hover .end-item-base{opacity:0}.dropdown-item.banned:hover .end-item-hover{opacity:1}}.dropdown-item.dnu .round-icon{background-color:#e66767}.dropdown-item.selected .dispatch-load-count,.dropdown-item.selected .unassigned-ltl,.dropdown-item.selected .unassigned-ltl .icon,.dropdown-item.selected .unassigned-ltl .icon-sm{color:#92b1f5}.dropdown-item:not(:hover):not(.focused):not(.selected) .truck-icon{color:#919191}.dropdown-item:not(:hover):not(.focused):not(.selected) .trailer-icon{color:#919191}@media(hover:hover){.dropdown-avatar:hover{z-index:20}}.no-results{color:#919191;font-weight:700;cursor:default;pointer-events:none}.add-new{color:#92b1f5!important;font-weight:700;font-size:11px}.add-new .dropdown-item-icon{opacity:1}@media(hover:hover){.add-new:hover{background-color:#3b73ed66!important;color:#fff!important}}.selected{font-weight:700}.selected .dropdown-item-icon{opacity:1}.selected .dropdown-item-count{color:#fff;background-color:#3b73ed}.selected .full-icon{color:#fff}.selected .end-item-base,.selected .end-item-hover{font-weight:700;color:#92b1f5}.selected .end-item-base .icon,.selected .end-item-base .icon-sm,.selected .end-item-hover .icon,.selected .end-item-hover .icon-sm{color:#92b1f5}.dropdown-item-icon{opacity:0;color:#92b1f5;width:14px;height:14px;margin-left:auto}.dropdown-item-icon.no-margin{margin-left:0}.dropdown-item-count{position:absolute;right:6px;top:50%;transform:translateY(-50%);padding:2px 5px;border-radius:10px;background-color:#424242;color:#ffffffb2;min-width:18px;line-height:14px;font-weight:600;font-size:11px;text-align:center}.fraud-icon{color:#fab15c!important;height:18px;width:18px}.dropdown-icon-container{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:18px;height:18px;display:grid;place-items:center;transition:opacity .1s cubic-bezier(.46,.03,.51,.95)}.dropdown-icon-container.open .dropdown-icon{transform:rotateX(180deg)}.dropdown-icon{transition:transform .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95)!important;transform:rotateX(0);cursor:pointer}.has-dropdown .app-input-icon{right:26px}.has-dropdown:has(.app-input:focus-visible) .subcontent{right:26px!important}.has-dropdown:has(.app-input:focus-visible).has-text .subcontent,.has-dropdown:has(.app-input:focus-visible).has-selected .subcontent{right:48px!important}.has-dropdown:has(.app-input:focus-visible):not(.static-placeholder):not(.is-adding) .app-input{padding-right:48px!important}@media(hover:hover){.has-dropdown:hover:not(.static-placeholder):not(.is-adding) .app-input{padding-right:48px!important}}.has-right .app-input{text-align:right}@media(pointer:coarse){.has-right .app-input{transform-origin:right center}}.has-right .positive-icon,.has-right .app-input-icon{left:4px;right:auto}.has-right .cancel-button{z-index:1}.has-right.has-number .plus-button-container{order:2}.has-right.has-number .minus-button-container{order:1}.has-right.static-placeholder .app-input-icon{right:4px!important;left:auto!important;opacity:0!important}.has-right.static-placeholder:has(.app-input:focus-visible) .cancel-button{opacity:0!important;pointer-events:none!important}.has-right.static-placeholder.removable .cancel-button .bg-icon{background-color:transparent!important}@media(hover:hover){.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-valid.has-text .cancel-button .bg-icon{color:var(--color-icon-positive)!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-valid.has-text .cancel-button .bg-icon:hover{color:#c20c0c!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-valid.has-text:has(.app-input:focus-visible) .cancel-button .bg-icon{color:var(--color-icon-inverse)!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-valid.has-text:has(.app-input:focus-visible) .cancel-button .bg-icon:hover{color:#fff!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)):not(.has-text) .cancel-button .bg-icon{color:var(--color-icon-neutral)!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)):not(.has-text) .cancel-button .bg-icon:hover{color:#c20c0c!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)):not(.has-text):has(.app-input:focus-visible) .cancel-button .bg-icon{color:var(--color-icon-inverse)!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)):not(.has-text):has(.app-input:focus-visible) .cancel-button .bg-icon:hover{color:#fff!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-error .cancel-button .bg-icon{color:var(--color-icon-negative)!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-error .cancel-button .bg-icon:hover{color:#c20c0c!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)) .cancel-button{opacity:1!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)) .cancel-button .bg-icon{opacity:1!important;pointer-events:auto!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)) .icon-container .icon,.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)) .icon-container .icon-sm{opacity:0!important}}@media(hover:hover){.has-right.static-placeholder:hover:not(:has(.app-input:focus-visible)):not(:has(.app-input:disabled)).has-text .cancel-button{opacity:1!important}}.has-right .app-input{order:1}.has-right.has-subcontent .app-input{flex:1;min-width:0;word-break:none}.has-right .dropdown-selected{margin-left:0!important;text-align:right!important;right:0!important;left:0!important;justify-content:flex-end!important;width:100%!important}.has-right .subcontent{position:relative!important;order:1;display:grid;place-items:center;padding-right:4px;height:unset!important;transform:translateY(0)!important;left:0!important;right:unset!important}.has-right .subcontent .subcontent-hide{display:none!important}.has-right.has-text .subcontent{left:0!important;right:unset!important}.has-right:has(.app-input:focus-visible) .subcontent{left:0!important;right:unset!important}.has-right.has-icon .subcontent,.has-right.has-password .subcontent{padding-right:0!important;padding-left:4px}.has-right.has-icon .dropdown-selected,.has-right.has-password .dropdown-selected{width:calc(100% - 24px)!important}.has-right.has-icon .app-input,.has-right.has-password .app-input{padding-right:0!important}.has-right.has-icon .app-input-label,.has-right.has-password .app-input-label{left:0!important}.has-right.has-icon.fade-placeholder .app-input-label,.has-right.has-password.fade-placeholder .app-input-label{left:auto!important;right:24px!important}.has-right.has-icon .icon-container,.has-right.has-password .icon-container{width:30px;padding-left:4px}.has-right.has-icon .icon-container .icon,.has-right.has-icon .icon-container .icon-sm,.has-right.has-password .icon-container .icon,.has-right.has-password .icon-container .icon-sm{order:2}.has-right.has-dropdown .app-input-icon{left:26px}.has-right.has-dropdown .dropdown-icon-container{left:4px}.has-right .warning-icon{display:none!important}.has-right.has-number .separator{order:3}.has-right.has-number .number-buttons{left:0;right:unset}.has-right.has-number .number-container{left:4px;right:unset}.has-right.has-number.app-input-container:has(.app-input:focus-visible) .app-input{padding-left:4px}.has-right .icon-container{order:2;margin-right:4px}.has-right .icon-container .password-icons{order:2}.has-right.fade-placeholder .app-input-label{right:0!important;left:auto!important}.has-right.fade-placeholder:has(.app-input:required) .app-input-name:after{content:none!important}.has-right.fade-placeholder:has(.app-input:required) .app-input-name:before{content:\"* \";color:var(--color-text-negative)}@media(hover:hover){.removable:has(.cancel-button:hover).in-table{background-color:transparent!important}.removable:has(.cancel-button:hover).in-table .separator{background-color:var(--color-icon-negative)!important}}@media(hover:hover){.removable:has(.cancel-button:hover):not(.in-table){background-color:var(--color-surface-negative-hover)!important}.removable:has(.cancel-button:hover):not(.in-table) .separator{background-color:var(--color-icon-negative)!important}}@media(hover:hover){.removable:has(.cancel-button:hover):has(.app-input:focus-visible){background-color:var(--color-surface-negative-focus)!important}.removable:has(.cancel-button:hover):has(.app-input:focus-visible) .separator{background-color:var(--color-icon-inverse)!important}}.no-clear .cancel-button{display:none!important}.is-adding{padding-right:20px}.is-adding .dropdown-icon{opacity:0!important}.is-adding .accept-button{pointer-events:none;opacity:0!important}@media(hover:hover){.is-adding:not(.removable):has(.app-input:focus-visible) .bg-icon:hover{background-color:#fff!important}}@media(hover:hover){.is-adding:not(.removable):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon{color:#fff!important}}@media(hover:hover){.is-adding:not(.removable):has(.app-input:focus-visible) .hover-icon:hover{color:#fff!important}}.is-adding:has(.app-input:focus-visible){padding-right:48px!important}@media(hover:hover){.is-adding:hover{padding-right:48px!important}}.is-adding.has-right{padding-left:26px}.is-adding.has-right.has-right:has(.app-input:focus-visible){padding-left:40px}@media(hover:hover){.is-adding.has-right.has-right:hover{padding-left:40px}}.is-adding .app-input-icon{right:4px}@media(hover:hover){.is-adding.has-text:hover .button-icon{opacity:1;pointer-events:auto!important}.is-adding.has-text:hover .accept-button{pointer-events:auto;opacity:1!important}}.is-adding.has-text:has(.app-input:focus-visible) .button-icon{opacity:1;pointer-events:auto!important}.is-adding.has-text:has(.app-input:focus-visible) .accept-button{pointer-events:auto;opacity:1!important}.is-adding .cancel-button{opacity:1!important;pointer-events:auto}.is-adding .dropdown-icon-container{pointer-events:none}.is-adding .accept-button{right:26px;pointer-events:auto}.dropdown-selected{-webkit-user-select:none;user-select:none;position:absolute;top:50%;transform:translateY(-50%);left:0;width:calc(100% - 22px);pointer-events:none;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;word-break:break-all;padding:.25rem 6px;font-size:14px;line-height:18px;font-weight:400;border:0;outline:none;margin-top:auto;background-color:transparent;transition:color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95),width .1s ease-in-out;color:var(--color-text);display:flex;gap:4px}.dropdown-selected .dropdown-selected-content{overflow:hidden;-webkit-user-select:none;user-select:none;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}.dropdown-selected .dropdown-selected-hazardous{max-width:calc(100% - 22px)}p.dropdown-selected{-webkit-user-select:none;user-select:none;display:block}.app-input-container:has(.app-input:focus-visible) .dropdown-selected{color:#fff;opacity:.7}.app-input-container:has(.app-input:focus-visible) .dropdown-selected .option-icon{color:#fff!important}.has-icon .positive-icon,.has-icon .warning-icon{display:none}.has-icon .dropdown-selected{left:27px;width:calc(100% - 49px)}@media(hover:hover){.has-icon:hover .dropdown-selected{width:calc(100% - 71px)}}.has-icon.app-input-container:has(.app-input:focus-visible) .dropdown-selected{width:calc(100% - 71px)}.hazard-icon{height:18px;width:max-content}.has-dispatch .app-input-label{transform:translateY(-20px);font-weight:600;font-size:11px;color:var(--color-text-heading)!important}.dispatch-load-count{color:#dadada;font-weight:700}.dispatch-separator{color:#919191;font-weight:400}.dispatch-status{font-family:Montserrat;font-weight:700;font-style:Bold;font-size:11px;line-height:14px;letter-spacing:0%;text-transform:uppercase;color:#ffffffb2;border-radius:2px;padding:2px 4px;display:flex;justify-content:center;align-items:center;gap:4px}.dispatch-status.status-available{background-color:#50ac2533}.dispatch-status.status-dispatched{background-color:#3b73ed33}.dispatch-status.status-arrivedpickup,.dispatch-status.status-checkedinpickup,.dispatch-status.status-checkedin,.dispatch-status.status-loading,.dispatch-status.status-loaded{background-color:#259f9433}.dispatch-status.status-arriveddelivery,.dispatch-status.status-checkedindelivery,.dispatch-status.status-offloading,.dispatch-status.status-offloaded,.dispatch-status.status-empty{background-color:#ff704333}.dispatch-status.status-canceled{background-color:#df3c3c33}.dispatch-status.status-off,.dispatch-status.status-deadheading,.dispatch-status.status-break,.dispatch-status.status-split{background-color:#91919133}.dispatch-status.status-towing{background-color:#9e47ec33}.dispatch-status.status-repair,.dispatch-status.status-dispatchedrepair,.dispatch-status.status-loadedrepair{background-color:#865e3a33}.dispatch-status .status-block{border-radius:1px;background-color:#aaa;padding-left:2px;padding-right:2px;font-family:Montserrat;font-weight:700;font-style:Bold;font-size:11px;line-height:12px;text-align:center;color:#2f2f2f;min-width:12px;height:12px}.dispatch-status .status-block.blue{background-color:#6692f1}.dispatch-status .status-block.green{background-color:#56b4ac}.dispatch-status .status-block.orange{background-color:#ff906d}.has-ftl-dispatch,.has-dispatch{min-width:600px}.has-ftl-dispatch:has(.app-input:focus-visible) .dropdown-selected .dispatch-icon,.has-ftl-dispatch:has(.app-input:focus-visible) .dropdown-selected .trailer-icon,.has-ftl-dispatch:has(.app-input:focus-visible) .dropdown-selected .truck-icon,.has-dispatch:has(.app-input:focus-visible) .dropdown-selected .dispatch-icon,.has-dispatch:has(.app-input:focus-visible) .dropdown-selected .trailer-icon,.has-dispatch:has(.app-input:focus-visible) .dropdown-selected .truck-icon{color:#fff}.dropdown-subitem{display:flex;justify-content:left;align-items:center;gap:4px}.truck-item{width:128px}.trailer-item{width:138px}.truck-trailer-option{opacity:0;transition:opacity .1s cubic-bezier(.46,.03,.51,.95);margin-left:auto}.truck-trailer-icon-colors.ic_truck_semi-truck,.truck-trailer-icon-colors.ic_truck_semi-wSleeper{color:#92b1f5}.truck-trailer-icon-colors.ic_truck_box-truck,.truck-trailer-icon-colors.ic_truck_reefer,.truck-trailer-icon-colors.ic_truck_cargo-van{color:#fbc88b}.truck-trailer-icon-colors.ic_truck_cement,.truck-trailer-icon-colors.ic_truck_dump,.truck-trailer-icon-colors.ic_truck_garbage{color:#ed9292}.truck-trailer-icon-colors.ic_truck_tow-truck,.truck-trailer-icon-colors.ic_truck_car-hauler,.truck-trailer-icon-colors.ic_truck_spotter{color:#86c9c3}.truck-trailer-icon-colors.ic_trailer_flatbed,.truck-trailer-icon-colors.ic_trailer_low-boy,.truck-trailer-icon-colors.ic_trailer_step-deck{color:#92b1f5}.truck-trailer-icon-colors.ic_trailer_chassis,.truck-trailer-icon-colors.ic_trailer_container{color:#80d6f1}.truck-trailer-icon-colors.ic_trailer_conestoga,.truck-trailer-icon-colors.ic_trailer_side-kit{color:#8785e8}.truck-trailer-icon-colors.ic_trailer_dryvan,.truck-trailer-icon-colors.ic_trailer_reefer{color:#fbc88b}.truck-trailer-icon-colors.ic_trailer_end-dump,.truck-trailer-icon-colors.ic_trailer_bottom-dump,.truck-trailer-icon-colors.ic_trailer_hopper{color:#ed9292}.truck-trailer-icon-colors.ic_trailer_tanker,.truck-trailer-icon-colors.ic_trailer_tanker-pneumatic{color:#ed93bb}.truck-trailer-icon-colors.ic_trailer_carhauler,.truck-trailer-icon-colors.ic_trailer_carhauler-stinger{color:#86c9c3}.sub-label{margin-left:auto;margin-right:22px;opacity:0;transition:margin .1s ease-in-out,opacity .1s ease-in-out;color:#6c6c6c}.app-input-label:has(.sub-label),.app-input-label:has(.accident-state){width:100%}.has-selected .sub-label{opacity:1}.dispatch-icon,.trailer-icon,.truck-icon{color:#919191;transition:color .1s cubic-bezier(.46,.03,.51,.95)}.truck-icon,.trailer-icon{width:42px}.truck-number{width:80px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.trailer-number{width:90px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.driver-name{max-width:170px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.dropdown-subitem-end{margin-left:auto;position:relative;height:26px;width:auto;display:flex;justify-content:right;align-items:center;font-family:Montserrat;font-weight:400;font-size:11px;line-height:18px;letter-spacing:0%;text-align:right;vertical-align:bottom}.end-item-base{position:absolute;display:flex;justify-content:right;align-items:center;width:max-content;gap:4px;color:#919191;transition:color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95);text-align:right}.dispatch-ltl{font-family:Montserrat;font-weight:700;font-size:11px;line-height:18px;letter-spacing:0%;text-align:right}.unassigned-ltl{margin-left:auto;display:flex;justify-content:right;align-items:center;width:max-content;gap:4px;color:#919191;transition:color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95);font-family:Montserrat;font-weight:700;font-size:11px;line-height:18px;letter-spacing:0%;text-align:right}.end-item-hover{position:absolute;display:flex;justify-content:right;align-items:center;gap:4px;width:max-content;opacity:0;color:#919191;transition:color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95)}.selected-end-item{margin-left:auto;font-family:Montserrat;font-weight:400;font-size:11px;line-height:18px;letter-spacing:0%;text-align:right;display:flex;justify-content:right;align-items:center;gap:4px}.group-item{font-family:Montserrat;font-weight:700!important;font-size:11px!important;line-height:18px;letter-spacing:0%;vertical-align:middle;text-transform:uppercase;background-color:#2f2f2f;color:#aaa!important}.group-item:not(:first-child){border-top:1px solid #424242}.group-item .group-icon{margin-left:auto;transform:rotate(180deg);transition:transform .1s cubic-bezier(.46,.03,.51,.95)}.group-item.unfolded{color:#fff!important}.group-item.unfolded .group-icon{transform:rotate(0)}.counter{background-color:#424242;padding:1px 4px;border-radius:60px;font-family:Montserrat;font-weight:600;font-size:11px;min-width:18px;line-height:14px;letter-spacing:0%;text-align:center;vertical-align:middle;color:#ffffffb2;transition:color .1s cubic-bezier(.46,.03,.51,.95)}.password-requirement{padding:6px;background-color:#fffffff2!important;box-shadow:0 0 4px #0006;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);overflow-y:hidden}.password-requirement p{font-family:Montserrat;font-weight:600;font-size:11px;line-height:14px;letter-spacing:0%;vertical-align:middle;color:#6c6c6c;font-style:italic}.password-requirement .icon,.password-requirement .icon-sm{width:14px!important;height:14px!important}.password-requirement .icon.checkmark,.password-requirement .checkmark.icon-sm{color:#ccc}.password-requirement .icon.cancel,.password-requirement .cancel.icon-sm{color:#e66767}.password-requirement ul{list-style-type:none;margin:6px 0 0;padding:0}.password-requirement ul li{color:#424242;font-size:11px;font-style:italic;font-weight:500;line-height:14px;display:flex;gap:4px}.password-requirement ul li.valid{color:#919191!important}.password-requirement ul li:not(:first-child){margin-top:6px}@media(hover:hover){.has-end-item:not(:has(.app-input:disabled)):hover .dropdown-selected{width:calc(100% - 44px)}}.has-end-item:not(:has(.app-input:disabled)):has(.app-input:focus-visible) .dropdown-selected{width:calc(100% - 44px)}.progress-bar{width:24px;height:8px;border-radius:2px;position:relative;transition:background-color .1s cubic-bezier(.46,.03,.51,.95)}.progress-bar:after{content:\"\";position:absolute;top:0;width:var(--progress);height:100%;transition:background-color .1s cubic-bezier(.46,.03,.51,.95)}.progress-bar.low{background-color:#df3c3c33}.progress-bar.low:after{background-color:#e66767}.progress-bar.medium{background-color:#f89b2e33}.progress-bar.medium:after{background-color:#fab15c}.progress-bar.high{background-color:#56b4ac33}.progress-bar.high:after{background-color:#56b4ac}.progress-bar.disable{background-color:#91919133}.progress-bar.disable:after{display:none}.app-input-container:has(.app-input:focus-visible) .selected-end-item .progress-bar{background-color:#fff!important}.full-icon{color:#919191}.fuelcard-number{width:216px}.fuelcard-brand{width:132px}.owner-ein{width:118px}.accident-name,.accident-unit,.accident-dob,.accident-cdl-number,.accident-vin,.accident-plate{flex-shrink:0}.accident-name>p,.accident-unit>p{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.accident-name{width:218px}.accident-unit{width:170px}.accident-dob,.accident-cdl-number,.accident-vin,.accident-plate{text-align:right;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.accident-dob{width:134px}.accident-cdl-number{width:140px}.accident-vin{width:182px}.accident-plate{width:140px}.accident-state{margin-left:auto;justify-content:flex-end;text-align:right}.app-input-label .accident-state{margin-right:22px;white-space:nowrap;transition:margin .1s ease-in-out}.has-multiple-dropdown.has-text{border-top-left-radius:0!important;border-top-right-radius:0!important}.multiple-container{display:flex;flex-wrap:wrap;gap:4px;padding:4px;border-top-left-radius:2px;border-top-right-radius:2px;position:relative;transition:background-color .1s ease-in-out;background-color:#e9effd}.multiple-container.hovered{background-color:#bed0f9}.multiple-container.hovered .multiple-selected{background-color:#e9effd}.multiple-container.focused{background-color:#0b49d1}.multiple-container.focused .multiple-selected{background-color:#3b73ed;color:#fff}.multiple-selected{background-color:#bed0f9;color:#2f2f2f;transition:background-color .1s ease-in-out,color .1s ease-in-out;display:flex;align-items:center;justify-content:space-between;width:100%;cursor:pointer;padding:2px 4px;-webkit-user-select:none;user-select:none;font-family:Montserrat;font-size:14px;font-weight:400;line-height:18px;width:209px;height:22px;border-radius:1px}.multiple-selected p{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}@media(hover:hover){.multiple-selected:hover{color:#2f2f2f!important;background-color:#fff!important}.multiple-selected:hover .multiple-remove-button{opacity:1}}.multiple-selected .multiple-remove-button{opacity:0;background-color:#6692f1;color:#fff;width:14px;height:14px}.multiple-selected .multiple-remove-button .multiple-remove-icon{width:12px;height:12px}.multiple-label{color:#424242;-webkit-user-select:none;user-select:none;pointer-events:none;font-family:Montserrat;font-size:11px;font-style:normal;font-weight:600;position:absolute;top:0;left:6px;transform:translateY(-14px)}.dropdown-group{border-radius:2px;transition:background-color .1s cubic-bezier(.46,.03,.51,.95),max-height .1s cubic-bezier(.46,.03,.51,.95),height .1s ease-in-out;margin-top:4px;max-height:var(--max-height);height:var(--max-height);overflow:hidden}.dropdown-group.no-items{cursor:default;pointer-events:none}.dropdown-group .group-item{outline:none;color:#fff!important;font-weight:400!important;font-size:14px!important;display:flex;transition:font-weight .1s ease-in-out,background-color .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95);padding-left:6px;padding-right:6px}.dropdown-group .group-item.unfolded .counter{color:#fff}@media(hover:hover){.dropdown-group .group-item:hover .counter{color:#fff}}.dropdown-group .group-item.unfolded{font-weight:700!important}.dropdown-group .group-item .counter{margin-left:auto}.dropdown-group .group-item .group-icon{margin-left:0}.dropdown-group.active{background-color:#424242}@media(hover:hover){.dropdown-group.active .group-item:hover{background-color:#424242}}.dropdown-group.active .dropdown-item{background-color:#424242}@media(hover:hover){.dropdown-group:hover:not(.no-items){background-color:#424242}.dropdown-group:hover:not(.no-items) .group-item:hover{background-color:#424242}.dropdown-group:hover:not(.no-items) .dropdown-item{background-color:#424242}}.dropdown-group.active{padding:4px;padding-top:0!important}.dropdown-group.active .group-item{position:relative!important;padding-left:2px!important;padding-right:2px!important}@media(hover:hover){.dropdown-group .dropdown-item:not(.group-item):hover{background-color:#6c6c6c!important}}.fuel-stop-transaction-store{display:flex;gap:4px}.fuel-stop-transaction-store .fuel-stop-transaction-store-address{font-size:11px;color:#ccc;margin-left:auto}.fuel-stop-transaction-store .favorite-icon{color:#92b1f5;width:14px;height:14px}.fuel-stop-transaction-nostore{padding-left:2px;padding-right:2px}.hide-dropdown{opacity:0;pointer-events:none;transition:opacity .1s cubic-bezier(.46,.03,.51,.95)}.dropdown-menu:not(.hide-dropdown) .dropdown-menu-content{transition:max-height .2s cubic-bezier(.46,.03,.51,.95),opacity .2s cubic-bezier(.46,.03,.51,.95),height .1s ease-in-out;animation:dropdown-menu-opening .2s cubic-bezier(.46,.03,.51,.95)}.dropdown-menu:not(.hide-dropdown).animate-dropdown .dropdown-menu-content{max-height:var(--max-height);height:var(--max-height)}.closing:not(.hide-dropdown) .dropdown-menu-content{animation:dropdown-menu-closing .2s cubic-bezier(.46,.03,.51,.95);opacity:0;max-height:0}@keyframes dropdown-menu-opening{0%{max-height:0;opacity:0}to{max-height:244px;opacity:1}}@keyframes dropdown-menu-closing{0%{max-height:244px;opacity:1}to{max-height:0;opacity:0}}.app-input-container:has(.app-input:focus-visible).has-dropdown .loader.loading,.app-input-container:has(.app-input:focus-visible).has-text .loader.loading{opacity:1!important}.app-input-container:has(.app-input:focus-visible).has-dropdown.has-text .loader{transform:translate(-48px)}.loader{position:absolute;top:4px;right:0;transform:translate(-26px);pointer-events:none;z-index:1000;width:18px;height:18px;display:flex;align-items:center;justify-content:center;transition:opacity .1s ease-in-out,transform .1s ease-in-out;opacity:0}.loader-icon{width:14px;height:14px;animation:spin .8s ease-in-out infinite;transform-origin:center;display:flex;align-items:center;justify-content:center}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.size-22{height:22px}.size-22 .icon,.size-22 .icon-sm{height:14px!important;width:14px!important}.size-22 .bg-icon{height:14px!important;width:14px!important;padding:2px!important}.size-22 .icon-container{height:22px!important;padding-top:2px;padding-bottom:2px;padding-left:4px!important}.size-22 .app-input{padding-top:2px;padding-bottom:2px;padding-left:4px}@media(pointer:coarse){.size-22 .app-input{height:22px}}.size-22 .app-input-label{padding-top:2px;padding-bottom:2px;padding-left:4px}.size-22.has-icon .app-input-label{padding-left:0!important}.size-22 .app-input-icon{height:14px!important;width:14px!important}.size-22.has-text .app-input-label,.size-22:has(.app-input:focus-visible) .app-input-label{transform:translateY(-18px)}.size-22 .loader{top:2px;transform:translate(-22px)!important}.strikethrough .app-input,.strikethrough .dropdown-selected-content{text-decoration:line-through}.max-w-280{max-width:280px}\n"], dependencies: [{ kind: "directive", type:
4367
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.32", type: InputComponent, isStandalone: true, selector: "cai-input", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, preselectedOptions: { classPropertyName: "preselectedOptions", publicName: "preselectedOptions", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, hideValidation: { classPropertyName: "hideValidation", publicName: "hideValidation", isSignal: true, isRequired: false, transformFunction: null }, showNoResults: { classPropertyName: "showNoResults", publicName: "showNoResults", isSignal: true, isRequired: false, transformFunction: null }, preselectedUnit: { classPropertyName: "preselectedUnit", publicName: "preselectedUnit", isSignal: true, isRequired: false, transformFunction: null }, unassignedCount: { classPropertyName: "unassignedCount", publicName: "unassignedCount", isSignal: true, isRequired: false, transformFunction: null }, forceInvalidStyling: { classPropertyName: "forceInvalidStyling", publicName: "forceInvalidStyling", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onBlur: "onBlur", onFocused: "onFocused", onReset: "onReset", onValueChange: "onValueChange", onOptionAdded: "onOptionAdded", onAdd: "onAdd", onSelectionChange: "onSelectionChange", onSelectedObject: "onSelectedObject", onSelectedGroup: "onSelectedGroup", onClear: "onClear", onAutofill: "onAutofill", onScrolledToBottom: "onScrolledToBottom", onScrolledToBottomGroup: "onScrolledToBottomGroup", onSearch: "onSearch", onValueAdded: "onValueAdded", onRemove: "onRemove", onHoverRemove: "onHoverRemove" }, host: { listeners: { "realValueChange": "onRealValueChange($event)" } }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["inputRef"], descendants: true }, { propertyName: "containerRef", first: true, predicate: ["containerRef"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }, { propertyName: "closeTooltip", first: true, predicate: ["closeTooltip"], descendants: true }, { propertyName: "PasswordDirective", first: true, predicate: PasswordDirective, descendants: true }, { propertyName: "NumberFormatDirective", first: true, predicate: NumberFormatDirective, descendants: true }, { propertyName: "MaskDirective", first: true, predicate: MaskDirective, descendants: true }], ngImport: i0, template: "<!-- #region Variables -->\n@let valid =\n ngControl?.valid &&\n (ngControl?.touched || ngControl?.dirty) &&\n !isAdding() &&\n !isDisabled();\n@let invalid =\n ngControl?.invalid &&\n (ngControl?.touched || ngControl?.dirty) &&\n !isAdding() &&\n !isDisabled();\n@let subcontent =\n config().subcontent ||\n (config().dropdown === \"subcontent\" &&\n selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![config().optionLabel || \"label\"]);\n\n@let name = config().name;\n@let password = config().type === \"password\" || config().type === \"account\";\n\n@let optionLabel = this.config().optionLabel || \"label\";\n@let dropdownType = this.config().dropdown;\n\n@let focusedOptionIndex = keyboardNavigationState().singleIndex;\n@let groupedNavigationState = keyboardNavigationState().groupedNavigationState;\n\n@let tooltipClass =\n config().inverse\n ? \"tooltip input-tooltip tooltip-bg-white-700 tooltip-text-black-500\"\n : \"tooltip input-tooltip\";\n\n<!-- #region Multiple selection -->\n@if (config().dropdown === \"multiple\" && !!multipleSelectedOptions().length) {\n <div\n (pointerdown)=\"focus($event)\"\n (mouseenter)=\"toggleHovered(true)\"\n (mouseleave)=\"toggleHovered(false)\"\n class=\"multiple-container\"\n [class]=\"{\n focused: focused(),\n hovered: hovered(),\n }\"\n >\n <label class=\"multiple-label\">{{ name }}</label>\n\n @for (option of multipleSelectedOptions(); track $index) {\n <div class=\"multiple-selected\">\n <p>{{ cast(option, \"dropdownOption\")![optionLabel || \"label\"] }}</p>\n <button\n type=\"button\"\n class=\"\"\n (pointerdown)=\"handleOption(option, $event)\"\n [tabIndex]=\"-1\"\n ngbTooltip=\"Clear\"\n [placement]=\"'top'\"\n [tooltipClass]=\"tooltipClass\"\n [autoClose]=\"true\"\n #closeTooltip=\"ngbTooltip\"\n [container]=\"'body'\"\n >\n <svg-icon\n name=\"cai-cancel\"\n class=\"multiple-remove-button multiple-remove-icon bg-icon\"\n ></svg-icon>\n </button>\n </div>\n }\n </div>\n}\n<!-- #endregion -->\n\n@let hasFloatingError =\n invalid &&\n (config().errorBehavior === \"floating\" ||\n (!!config().inTable && config().placeholderBehavior !== \"static\"));\n\n<div\n class=\"app-input-container\"\n [class]=\"\n {\n config: config(),\n hideValidation: hideValidation(),\n isPasswordVisible: visible(),\n isInvalid: !!invalid || forceInvalidStyling(),\n isValid: !!valid && !forceInvalidStyling(),\n isHovered: hovered(),\n hasText: hasText(),\n isAdding: isAdding(),\n selectedOption: selectedOption(),\n } | inputClass\n \"\n ngbDropdown\n [autoClose]=\"false\"\n #dropdown=\"ngbDropdown\"\n dropdownClass=\"cai-dropdown\"\n #containerRef\n [ngbTooltip]=\"errorTooltip\"\n [disableTooltip]=\"!hasFloatingError\"\n [container]=\"'body'\"\n [placement]=\"['bottom', 'top']\"\n tooltipClass=\"tooltip tooltip-bg-red-500 input-tooltip \"\n (pointerdown)=\"focus($event)\"\n (mouseenter)=\"dropdownType === 'multiple' && toggleHovered(true)\"\n (mouseleave)=\"dropdownType === 'multiple' && toggleHovered(false)\"\n>\n @if (config().icon && !password && !config().withButtons) {\n <div\n class=\"icon-container\"\n (pointerdown)=\"focus($event)\"\n [class]=\"{\n 'colored-icon': config().iconColor,\n }\"\n [style.--icon-color]=\"config().iconColor || ''\"\n >\n <svg-icon class=\"icon\" [name]=\"config().icon || ''\"></svg-icon>\n @if (!config().noSeparator) {\n <div class=\"separator\"></div>\n }\n </div>\n }\n @if (password) {\n <div class=\"icon-container\" (pointerdown)=\"toggleVisibility($event)\">\n <div\n class=\"password-icons\"\n [ngbTooltip]=\"passwordTooltip\"\n [container]=\"'body'\"\n [tooltipClass]=\"tooltipClass\"\n [autoClose]=\"true\"\n [placement]=\"'top'\"\n [openDelay]=\"600\"\n >\n <svg-icon\n class=\"icon password-key hover-icon\"\n name=\"cai-password-key\"\n ></svg-icon>\n <svg-icon\n class=\"icon password-shown hover-icon\"\n name=\"cai-password-shown\"\n ></svg-icon>\n <svg-icon\n class=\"icon password-hidden hover-icon\"\n name=\"cai-password-hidden\"\n ></svg-icon>\n </div>\n <div class=\"separator\"></div>\n </div>\n }\n\n <input\n class=\"app-input\"\n [tabindex]=\"isDisabled() ? '-1' : '0'\"\n [type]=\"\n password && !config().reveal ? (visible() ? 'text' : 'password') : 'text'\n \"\n [required]=\"config().required\"\n [disabled]=\"isDisabled()\"\n (input)=\"onInput($event)\"\n (blur)=\"dispatchOnBlur()\"\n [id]=\"id()\"\n [attr.aria-label]=\"config().label\"\n [attr.name]=\"\n config().autocomplete ? config().autocomplete : randomAutocomplete()\n \"\n [placeholder]=\"config()?.placeholder || ''\"\n [autocomplete]=\"\n config().autocomplete ? config().autocomplete : randomAutocomplete()\n \"\n #inputRef\n [appPassword]=\"password\"\n [appMask]=\"config().mask || ''\"\n [reveal]=\"config().reveal || 0\"\n [account]=\"config().type === 'account'\"\n [visible]=\"visible()\"\n [appNumberFormat]=\"config().type === 'number'\"\n [isNumberFormattingDisabled]=\"config().isNumberFormattingDisabled || false\"\n [disableDecimals]=\"config().disableDecimals || false\"\n [prefix]=\"config().prefix || ''\"\n [max]=\"config().max\"\n [clampToMax]=\"config().clampToMax || false\"\n (keydown)=\"handleKeydown($event)\"\n (focus)=\"onFocus($event)\"\n />\n @if (\n !(dropdownType === \"multiple\" && !!multipleSelectedOptions().length) &&\n config().placeholderBehavior !== \"hidden\"\n ) {\n <label\n class=\"app-input-label\"\n [class.placeholder-color]=\"this.config().placeholderColor\"\n [style.--placeholder-color]=\"this.config().placeholderColor || ''\"\n (click)=\"focus($event)\"\n >\n <!-- Truck Trailer Driver Dropdown label -->\n @if (dropdownType === \"dispatch\" || dropdownType === \"ftl-dispatch\") {\n <p class=\"truck-item app-input-name\">Truck</p>\n <p class=\"trailer-item\">Trailer</p>\n <p>Driver</p>\n <p class=\"sub-label\">Rate</p>\n }\n <!-- Split Load -->\n @else if (dropdownType === \"split-driver\") {\n <p class=\"app-input-name\">{{ name }}</p>\n <p class=\"sub-label\">Rate</p>\n } @else if (\n dropdownType === \"split-truck\" || dropdownType === \"split-trailer\"\n ) {\n <p class=\"app-input-name\">{{ name }}</p>\n <p class=\"sub-label\">Location</p>\n }\n <!-- Dropdown variants -->\n @else if (dropdownType === \"broker\") {\n <p class=\"app-input-name\">{{ name }}</p>\n <p class=\"sub-label\">Credit</p>\n } @else if (dropdownType === \"contact\") {\n <p class=\"app-input-name\">{{ name }}</p>\n <p class=\"sub-label\">Phone</p>\n } @else if (dropdownType === \"shipper\") {\n <p class=\"app-input-name\">{{ name }}</p>\n <p class=\"sub-label\">Address</p>\n } @else if (dropdownType === \"owner\") {\n <p class=\"owner-ein app-input-name\">EIN</p>\n <p class=\"app-input-name\">Company Name</p>\n } @else if (dropdownType === \"fuelcard\") {\n <p class=\"fuelcard-number app-input-name\">Card No.</p>\n <p class=\"fuelcard-brand app-input-name\">Provider</p>\n <p class=\"app-input-name\">Nickname</p>\n }\n <!-- Accident -->\n @else if (dropdownType === \"accident-driver\") {\n <p class=\"accident-name app-input-name\">{{ name }}</p>\n <p class=\"accident-dob app-input-name\">DOB</p>\n <p class=\"accident-cdl-number app-input-name\">CDL No.</p>\n <p class=\"accident-state app-input-name\">CDL State</p>\n } @else if (\n dropdownType === \"accident-truck\" || dropdownType === \"accident-trailer\"\n ) {\n <p class=\"accident-unit app-input-name\">{{ name }}</p>\n <p class=\"accident-vin app-input-name\">VIN</p>\n <p class=\"accident-plate app-input-name\">Lic. Plate No.</p>\n <p class=\"accident-state app-input-name\">Lic. State</p>\n }\n <!-- Default Dropdown label -->\n @else {\n <span class=\"app-input-name\">{{ name }}</span>\n }\n </label>\n }\n @if (config().type === \"number\" && config().withButtons) {\n <div class=\"number-container\">\n <div class=\"number-buttons\">\n <div class=\"separator\"></div>\n <div\n class=\"plus-button-container\"\n ngbTooltip=\"Add\"\n [tooltipClass]=\"tooltipClass\"\n [container]=\"'body'\"\n [autoClose]=\"true\"\n [openDelay]=\"600\"\n [placement]=\"'top'\"\n (pointerdown)=\"increment($event)\"\n >\n <svg-icon name=\"cai-plus\" class=\"bg-icon plus-icon\"></svg-icon>\n </div>\n <div\n class=\"minus-button-container\"\n ngbTooltip=\"Remove\"\n [placement]=\"'top'\"\n [container]=\"'body'\"\n [tooltipClass]=\"tooltipClass\"\n [autoClose]=\"true\"\n [openDelay]=\"600\"\n (pointerdown)=\"decrement($event)\"\n >\n <svg-icon name=\"cai-minus\" class=\"bg-icon minus-icon\"></svg-icon>\n </div>\n </div>\n </div>\n }\n @if (!config().inTable) {\n @if (!dropdownType) {\n <svg-icon\n name=\"cai-checkmark\"\n class=\"app-input-icon positive-icon\"\n ></svg-icon>\n <svg-icon\n name=\"cai-status-warning\"\n class=\"app-input-icon warning-icon\"\n ></svg-icon>\n }\n }\n\n @if (\n invalid &&\n config().errorBehavior !== \"hidden\" &&\n (ngControl?.errors | errorMessage: config().customErrors)[0] &&\n !(config().inTable && config().placeholderBehavior !== \"static\")\n ) {\n <div class=\"app-input-error\">\n {{ (ngControl?.errors | errorMessage: config().customErrors)[0] }}\n </div>\n }\n\n <!-- Accept button -->\n @if ((config().add && isAdding()) || config().isEdit) {\n <button\n type=\"button\"\n class=\"app-input-icon button-icon accept-button\"\n (pointerdown)=\"addOption()\"\n [tabIndex]=\"-1\"\n ngbTooltip=\"Confirm\"\n [openDelay]=\"600\"\n [placement]=\"'top'\"\n [tooltipClass]=\"tooltipClass\"\n [container]=\"'body'\"\n [autoClose]=\"true\"\n >\n <svg-icon class=\"bg-icon\" name=\"cai-checkmark\"></svg-icon>\n </button>\n }\n\n <!-- Cancel button -->\n <button\n type=\"button\"\n class=\"app-input-icon button-icon cancel-button\"\n (pointerdown)=\"reset($event)\"\n (mouseenter)=\"onClearHover(true)\"\n (mouseleave)=\"onClearHover(false)\"\n [tabIndex]=\"-1\"\n ngbTooltip=\"{{\n hasText()\n | clearTooltip\n : isAdding()\n : config().isEdit || false\n : config().placeholderBehavior || 'dynamic'\n : dropdownType === 'multiple'\n : config().hasResetButton\n : canTooltipBeVisible()\n }}\"\n [openDelay]=\"600\"\n [tooltipClass]=\"tooltipClass\"\n [placement]=\"'top'\"\n [container]=\"'body'\"\n [autoClose]=\"true\"\n #closeTooltip=\"ngbTooltip\"\n >\n @let iconName =\n config().hasResetButton\n ? \"cai-reset\"\n : config().removable\n ? \"cai-delete\"\n : \"cai-cancel\";\n <svg-icon class=\"bg-icon\" [name]=\"iconName\"></svg-icon>\n </button>\n\n <div class=\"dropdown-anchor\" ngbDropdownAnchor></div>\n <!-- Dropdown menu -->\n\n @let hasLoader = isLoading() !== undefined;\n\n @if (hasLoader) {\n <div class=\"loader\" [class.loading]=\"isLoading()\">\n <svg-icon name=\"cai-loader\" class=\"loader-icon\"></svg-icon>\n </div>\n }\n\n @if (dropdownType) {\n @let maxHeight =\n ((dropdownOptions()?.length || (showNoResults() ? 1 : 0)) +\n (config().add ? 1 : 0)) *\n 30 +\n 4;\n\n @let animateDropdown =\n dropdownType !== \"toll\" &&\n dropdownType !== \"fuel-stop-transaction\" &&\n dropdownType !== \"dispatch\" &&\n dropdownType !== \"ftl-dispatch\" &&\n dropdownType !== \"split-driver\" &&\n dropdownType !== \"split-truck\" &&\n dropdownType !== \"split-trailer\";\n\n @let unfilteredHeight =\n dropdownType === \"contact\" || !animateDropdown\n ? 244\n : ((options()?.length || (showNoResults() ? 1 : 0)) +\n (config().add ? 1 : 0)) *\n 30 +\n 4;\n\n <div\n ngbDropdownMenu\n class=\"dropdown-menu input-dropdown-menu\"\n [class]=\"{\n 'hide-dropdown':\n config().dropdownAutocomplete &&\n !dropdownOptions()?.length &&\n !(showNoResults() && value()),\n 'animate-dropdown': animateDropdown,\n 'size-22': config().size === 22,\n 'has-stroke': config().hasStroke,\n }\"\n [class.closing]=\"closing()\"\n [style.--unfiltered-height]=\"\n unfilteredHeight > 244 ? '244px' : unfilteredHeight + 'px'\n \"\n [style.--max-height]=\"maxHeight > 244 ? '244px' : maxHeight + 'px'\"\n [style.width.px]=\"containerWidth()\"\n [tabindex]=\"-1\"\n (pointerdown)=\"onDropdownBackgroundClick($event)\"\n (mousedown)=\"$event.preventDefault()\"\n (pointerup)=\"stopEventPropagation($event)\"\n (mouseup)=\"stopEventPropagation($event)\"\n (click)=\"stopEventPropagation($event)\"\n >\n <div\n class=\"dropdown-menu-content\"\n [tabindex]=\"-1\"\n caiInfiniteScroll\n [scrollThreshold]=\"50\"\n (scrolledToBottom)=\"onDropdownScrolledToBottom()\"\n >\n @if (config().add) {\n <button\n class=\"dropdown-item add-new\"\n [class.focused]=\"\n focusedOptionIndex === -1 ||\n groupedNavigationState?.groupIndex === -1\n \"\n (click)=\"handleAddingOption($event)\"\n >\n <p>ADD NEW</p>\n <svg-icon name=\"cai-plus\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n <ng-container *ngTemplateOutlet=\"dropdownMenuRef\"></ng-container>\n </div>\n </div>\n\n @if (!config().dropdownAutocomplete) {\n <div\n class=\"dropdown-icon-container\"\n [class.open]=\"dropdown.isOpen() && !closing()\"\n (pointerdown)=\"onDropdownIconClick($event)\"\n >\n <svg-icon\n name=\"cai-arrow-secondary-down\"\n class=\"dropdown-icon icon\"\n ></svg-icon>\n </div>\n }\n @let specialDropdown =\n dropdownType === \"dispatch\" ||\n dropdownType === \"ftl-dispatch\" ||\n dropdownType === \"broker\" ||\n dropdownType === \"contact\" ||\n dropdownType === \"shipper\" ||\n dropdownType === \"bank\" ||\n dropdownType === \"dispatcher\" ||\n dropdownType === \"driver-owner\" ||\n dropdownType === \"truck-owner\" ||\n dropdownType === \"truck\" ||\n dropdownType === \"trailer\" ||\n dropdownType === \"hazardous\" ||\n dropdownType === \"state\" ||\n dropdownType === \"owner\" ||\n dropdownType === \"fuelcard\" ||\n dropdownType === \"pm\" ||\n dropdownType === \"color\" ||\n dropdownType === \"make\" ||\n dropdownType === \"toll\" ||\n dropdownType === \"provider\" ||\n dropdownType === \"split-driver\" ||\n dropdownType === \"split-truck\" ||\n dropdownType === \"split-trailer\" ||\n dropdownType === \"accident-driver\" ||\n dropdownType === \"accident-truck\" ||\n dropdownType === \"accident-trailer\";\n <!-- Placeholder -->\n @if (specialDropdown) {\n <ng-container *ngTemplateOutlet=\"selectedOptionRef\"></ng-container>\n } @else if (\n (config().add || config().search) &&\n !inputRef.value &&\n !this.isAdding() &&\n dropdownType !== \"subcontent\"\n ) {\n <div class=\"dropdown-selected\">\n @if (config().placeholderBehavior === \"static\") {\n <p class=\"selected-label-hidden\">\n {{ name + (config().required ? \" *\" : \"\") }}\n </p>\n <p class=\"selected-text\">\n {{\n selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![\n optionLabel || \"label\"\n ]\n }}\n </p>\n } @else {\n @if (\n selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![\n optionLabel || \"label\"\n ] === \"Hazardous\"\n ) {\n <svg-icon name=\"cai-violation-hazmat\" class=\"icon\"></svg-icon>\n <p class=\"dropdown-selected-content\">\n {{\n selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![\n optionLabel || \"label\"\n ]\n }}\n </p>\n } @else {\n <p class=\"dropdown-selected-content\">\n {{\n selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![\n optionLabel || \"label\"\n ]\n }}\n </p>\n }\n }\n </div>\n }\n } @else if (config().isEdit && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"dropdown-selected-content\">{{ name }}</p>\n </div>\n }\n @if (config().passwordRequirements) {\n <div\n class=\"dropdown-menu password-requirement\"\n ngbDropdownMenu\n [style.width.px]=\"containerWidth()\"\n [class.closing]=\"closing()\"\n (pointerup)=\"stopEventPropagation($event)\"\n (mouseup)=\"stopEventPropagation($event)\"\n (click)=\"stopEventPropagation($event)\"\n >\n <ng-container *ngTemplateOutlet=\"passwordRequirementsRef\"></ng-container>\n </div>\n }\n @if (subcontent) {\n <p class=\"subcontent\">\n @if (!(config().alignment === \"right\")) {\n <span class=\"subcontent-hide\"\n >{{\n config().search\n ? selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![\n optionLabel || \"label\"\n ]\n : inputRef.value\n }}\n </span>\n }\n {{ subcontent }}\n </p>\n }\n</div>\n\n<!-- #region Templates -->\n\n<!-- #region Password requirements -->\n<ng-template #passwordRequirementsRef>\n @let isMinLengthValid =\n !this.ngControl?.errors?.[\"minlength\"] && this.value();\n @let isHasNumberValid =\n !this.ngControl?.errors?.[\"hasNumber\"] && this.value();\n @let isHasSymbolValid =\n !this.ngControl?.errors?.[\"hasSymbol\"] && this.value();\n @let isHasUppercaseValid =\n !this.ngControl?.errors?.[\"hasUppercase\"] && this.value();\n\n <p>Strong Password Requirement</p>\n <ul>\n <li [class.valid]=\"isMinLengthValid\">\n <svg-icon\n [name]=\"isMinLengthValid ? 'cai-checkmark' : 'cai-cancel'\"\n [class]=\"isMinLengthValid ? 'checkmark' : 'cancel'\"\n class=\"icon\"\n ></svg-icon\n ><span>Minimum 8 characters</span>\n </li>\n <li [class.valid]=\"isHasNumberValid\">\n <svg-icon\n class=\"icon\"\n [name]=\"isHasNumberValid ? 'cai-checkmark' : 'cai-cancel'\"\n [class]=\"isHasNumberValid ? 'checkmark' : 'cancel'\"\n ></svg-icon\n ><span>One number</span>\n </li>\n <li [class.valid]=\"isHasSymbolValid\">\n <svg-icon\n class=\"icon\"\n [name]=\"isHasSymbolValid ? 'cai-checkmark' : 'cai-cancel'\"\n [class]=\"isHasSymbolValid ? 'checkmark' : 'cancel'\"\n ></svg-icon\n ><span>One symbol</span>\n </li>\n <li [class.valid]=\"isHasUppercaseValid\">\n <svg-icon\n class=\"icon\"\n [name]=\"isHasUppercaseValid ? 'cai-checkmark' : 'cai-cancel'\"\n [class]=\"isHasUppercaseValid ? 'checkmark' : 'cancel'\"\n ></svg-icon\n ><span>One upper-case letter</span>\n </li>\n </ul>\n</ng-template>\n<!-- #endregion -->\n@let search = config().search;\n\n<ng-template #dropdownMenuRef>\n @switch (dropdownType) {\n @case (\"dispatch\") {\n <ng-container *ngTemplateOutlet=\"dispatchesRef\"></ng-container>\n }\n @case (\"ftl-dispatch\") {\n <ng-container *ngTemplateOutlet=\"ftlDispatchRef\"></ng-container>\n }\n @case (\"broker\") {\n <ng-container *ngTemplateOutlet=\"brokerRef\"></ng-container>\n }\n @case (\"contact\") {\n <ng-container *ngTemplateOutlet=\"contactRef\"></ng-container>\n }\n @case (\"shipper\") {\n <ng-container *ngTemplateOutlet=\"shipperRef\"></ng-container>\n }\n @case (\"bank\") {\n <ng-container *ngTemplateOutlet=\"bankRef\"></ng-container>\n }\n @case (\"dispatcher\") {\n <ng-container *ngTemplateOutlet=\"dispatcherRef\"></ng-container>\n }\n @case (\"driver-owner\") {\n <ng-container *ngTemplateOutlet=\"driverOwnerRef\"></ng-container>\n }\n @case (\"truck-owner\") {\n <ng-container *ngTemplateOutlet=\"truckOwnerRef\"></ng-container>\n }\n @case (\"trailer\") {\n <ng-container *ngTemplateOutlet=\"trailerRef\"></ng-container>\n }\n @case (\"truck\") {\n <ng-container *ngTemplateOutlet=\"truckRef\"></ng-container>\n }\n @case (\"hazardous\") {\n <ng-container *ngTemplateOutlet=\"hazardousRef\"></ng-container>\n }\n @case (\"state\") {\n <ng-container *ngTemplateOutlet=\"stateRef\"></ng-container>\n }\n @case (\"owner\") {\n <ng-container *ngTemplateOutlet=\"ownerRef\"></ng-container>\n }\n @case (\"fuelcard\") {\n <ng-container *ngTemplateOutlet=\"fuelcardRef\"></ng-container>\n }\n @case (\"pm\") {\n <ng-container *ngTemplateOutlet=\"pmRef\"></ng-container>\n }\n @case (\"multiple\") {\n <ng-container *ngTemplateOutlet=\"multipleRef\"></ng-container>\n }\n @case (\"make\") {\n <ng-container *ngTemplateOutlet=\"makeRef\"></ng-container>\n }\n @case (\"toll\") {\n <ng-container *ngTemplateOutlet=\"tollRef\"></ng-container>\n }\n @case (\"color\") {\n <ng-container *ngTemplateOutlet=\"colorRef\"></ng-container>\n }\n @case (\"fuel-stop-transaction\") {\n <ng-container *ngTemplateOutlet=\"fuelStopTransactionRef\"></ng-container>\n }\n @case (\"provider\") {\n <ng-container *ngTemplateOutlet=\"providerRef\"></ng-container>\n }\n @case (\"split-driver\") {\n <ng-container *ngTemplateOutlet=\"splitDriverRef\"></ng-container>\n }\n @case (\"split-truck\") {\n <ng-container *ngTemplateOutlet=\"splitTruckRef\"></ng-container>\n }\n @case (\"split-trailer\") {\n <ng-container *ngTemplateOutlet=\"splitTrailerRef\"></ng-container>\n }\n @case (\"accident-driver\") {\n <ng-container *ngTemplateOutlet=\"accidentDriverRef\"></ng-container>\n }\n @case (\"accident-truck\") {\n <ng-container *ngTemplateOutlet=\"accidentTruckRef\"></ng-container>\n }\n @case (\"accident-trailer\") {\n <ng-container *ngTemplateOutlet=\"accidentTrailerRef\"></ng-container>\n }\n @case (\"subcontent\") {\n <ng-container *ngTemplateOutlet=\"dropdownOptionsRef\"></ng-container>\n }\n @default {\n <ng-container *ngTemplateOutlet=\"dropdownOptionsRef\"></ng-container>\n }\n }\n</ng-template>\n\n<ng-template #selectedOptionRef>\n @switch (dropdownType) {\n @case (\"dispatch\") {\n <ng-container *ngTemplateOutlet=\"selectedDispatchRef\"></ng-container>\n }\n @case (\"ftl-dispatch\") {\n <ng-container *ngTemplateOutlet=\"selectedDispatchRef\"></ng-container>\n }\n @case (\"broker\") {\n <ng-container *ngTemplateOutlet=\"selectedBrokerRef\"></ng-container>\n }\n @case (\"contact\") {\n <ng-container *ngTemplateOutlet=\"selectedContactRef\"></ng-container>\n }\n @case (\"shipper\") {\n <ng-container *ngTemplateOutlet=\"selectedShipperRef\"></ng-container>\n }\n @case (\"bank\") {\n <ng-container *ngTemplateOutlet=\"selectedBankRef\"></ng-container>\n }\n @case (\"dispatcher\") {\n <ng-container *ngTemplateOutlet=\"selectedDispatcherRef\"></ng-container>\n }\n @case (\"driver-owner\") {\n <ng-container *ngTemplateOutlet=\"selectedDriverOwnerRef\"></ng-container>\n }\n @case (\"truck-owner\") {\n <ng-container *ngTemplateOutlet=\"selectedTruckOwnerRef\"></ng-container>\n }\n @case (\"trailer\") {\n <ng-container *ngTemplateOutlet=\"selectedTrailerRef\"></ng-container>\n }\n @case (\"truck\") {\n <ng-container *ngTemplateOutlet=\"selectedTruckRef\"></ng-container>\n }\n @case (\"hazardous\") {\n <ng-container *ngTemplateOutlet=\"selectedHazardousRef\"></ng-container>\n }\n @case (\"state\") {\n <ng-container *ngTemplateOutlet=\"selectedStateRef\"></ng-container>\n }\n @case (\"owner\") {\n <ng-container *ngTemplateOutlet=\"selectedOwnerRef\"></ng-container>\n }\n @case (\"fuelcard\") {\n <ng-container *ngTemplateOutlet=\"selectedFuelcardRef\"></ng-container>\n }\n @case (\"pm\") {\n <ng-container *ngTemplateOutlet=\"selectedPmRef\"></ng-container>\n }\n @case (\"make\") {\n <ng-container *ngTemplateOutlet=\"selectedMakeRef\"></ng-container>\n }\n @case (\"toll\") {\n <ng-container *ngTemplateOutlet=\"selectedTollRef\"></ng-container>\n }\n @case (\"color\") {\n <ng-container *ngTemplateOutlet=\"selectedColorRef\"></ng-container>\n }\n @case (\"provider\") {\n <ng-container *ngTemplateOutlet=\"selectedProviderRef\"></ng-container>\n }\n @case (\"split-driver\") {\n <ng-container *ngTemplateOutlet=\"selectedSplitDriverRef\"></ng-container>\n }\n @case (\"split-truck\") {\n <ng-container *ngTemplateOutlet=\"selectedSplitTruckRef\"></ng-container>\n }\n @case (\"split-trailer\") {\n <ng-container *ngTemplateOutlet=\"selectedSplitTrailerRef\"></ng-container>\n }\n @case (\"accident-driver\") {\n <ng-container\n *ngTemplateOutlet=\"selectedAccidentDriverRef\"\n ></ng-container>\n }\n @case (\"accident-truck\") {\n <ng-container *ngTemplateOutlet=\"selectedAccidentTruckRef\"></ng-container>\n }\n @case (\"accident-trailer\") {\n <ng-container\n *ngTemplateOutlet=\"selectedAccidentTrailerRef\"\n ></ng-container>\n }\n }\n</ng-template>\n\n<!-- Standard dropdown -->\n<ng-template #dropdownOptionsRef>\n @if (dropdownOptions().length) {\n @for (option of dropdownOptions(); track $index; let index = $index) {\n @let dropdownOption = cast(option, \"dropdownOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ dropdownOption.id }}\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'dropdownOption')?.id === dropdownOption.id,\n focused: focusedOptionIndex === index,\n }\"\n (click)=\"handleOption(dropdownOption, $event)\"\n >\n @if (dropdownOption[optionLabel] === \"Hazardous\") {\n <svg-icon name=\"cai-violation-hazmat\" class=\"icon\"></svg-icon>\n }\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (dropdownOption[optionLabel] | highlightSearch: value())\n : dropdownOption[optionLabel]\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #multipleRef>\n @if (dropdownOptions().length) {\n @for (option of dropdownOptions(); track $index; let index = $index) {\n @let dropdownOption = cast(option, \"dropdownOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ dropdownOption.id }}\"\n (click)=\"handleOption(dropdownOption, $event)\"\n [class]=\"{\n selected: isSelectedOption(dropdownOption),\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (dropdownOption[optionLabel] | highlightSearch: value())\n : dropdownOption[optionLabel]\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #bankRef>\n @if (dropdownOptions().length) {\n @for (bank of dropdownOptions(); track $index; let index = $index) {\n @let bankOption = cast(bank, \"bank\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ bankOption.id }}\"\n (click)=\"handleOption(bankOption, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'bank')?.id === bankOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n @if (bankOption.logoName) {\n <svg-icon\n class=\"full-icon\"\n [name]=\"bankOption.logoName.slice(0, -4)\"\n ></svg-icon>\n } @else {\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (bankOption.name || '' | highlightSearch: value())\n : bankOption.name\n \"\n ></p>\n }\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #makeRef>\n @if (dropdownOptions().length) {\n @for (make of dropdownOptions(); track $index; let index = $index) {\n @let makeOption = cast(make, \"make\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ makeOption.id }}\"\n (click)=\"handleOption(makeOption, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'make')?.id === makeOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n @if (makeOption.logoName) {\n <svg-icon\n class=\"full-icon\"\n [name]=\"makeOption.logoName.slice(0, -4)\"\n ></svg-icon>\n } @else {\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (makeOption.name || '' | highlightSearch: value())\n : makeOption.name\n \"\n ></p>\n }\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Broker -->\n<ng-template #brokerRef>\n @if (dropdownOptions().length) {\n @for (broker of dropdownOptions(); track $index; let index = $index) {\n @let brokerOption = cast(broker, \"broker\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"broker-{{ brokerOption.id }}\"\n (click)=\"\n !(brokerOption.dnu || brokerOption.ban) &&\n handleOption(brokerOption, $event)\n \"\n [class]=\"{\n selected: cast(selectedOption(), 'broker')?.id === brokerOption.id,\n focused: focusedOptionIndex === index,\n banned: brokerOption.dnu || brokerOption.ban,\n dnu: brokerOption.dnu,\n }\"\n >\n @if (brokerOption?.dnu || brokerOption?.ban) {\n <svg-icon name=\"cai-minus\" class=\"round-icon\"></svg-icon>\n } @else if (brokerOption?.fraudCheck) {\n <svg-icon\n name=\"cai-status-warning-lite\"\n class=\"fraud-icon\"\n ></svg-icon>\n }\n <p\n class=\"dropdown-content\"\n [innerHTML]=\"\n search\n ? (brokerOption.businessName || '' | highlightSearch: value())\n : brokerOption.businessName\n \"\n ></p>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-base\">\n @if (!brokerOption.creditLimit) {\n <p>Unlimited</p>\n } @else {\n <p>{{ brokerOption.availableCredit || 0 | currency }}</p>\n <div\n class=\"progress-bar\"\n [style.--progress]=\"\n (\n brokerOption\n | brokerProgress: brokerOption.dnu || brokerOption.ban\n ).activePercentageOfPaid + '%'\n \"\n [class]=\"\n (\n brokerOption\n | brokerProgress: brokerOption.dnu || brokerOption.ban\n ).status\n \"\n ></div>\n }\n </div>\n <div class=\"end-item-hover\">\n <p>\n {{ brokerOption.loadsCount }} |\n {{ brokerOption.availableCredit || 0 | currency }}\n </p>\n <svg-icon name=\"cai-load\" class=\"icon\"></svg-icon>\n </div>\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Contact dropdown -->\n<ng-template #contactRef>\n @if (dropdownOptions().length) {\n @for (contact of dropdownOptions(); track $index; let index = $index) {\n @let contactOption = cast(contact, \"contact\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item split-option\"\n id=\"contact-{{ contact.id }}\"\n (click)=\"handleOption(contact, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'contact')?.id === contact.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"text-truncate\"\n [innerHTML]=\"\n search\n ? (contactOption.contactName || '' | highlightSearch: value())\n : contactOption.contactName\n \"\n ></p>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-base\">\n <p class=\"text-truncate\">{{ contactOption.department?.name }}</p>\n </div>\n <div class=\"end-item-hover\">\n <p class=\"text-truncate\">\n {{ contactOption.phone }}\n {{\n contactOption.extensionPhone\n ? \"x\" + contactOption.extensionPhone\n : \"\"\n }}\n </p>\n </div>\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Owner dropdown -->\n<ng-template #ownerRef>\n @if (dropdownOptions().length) {\n @for (owner of dropdownOptions(); track $index; let index = $index) {\n @let ownerOption = cast(owner, \"owner\");\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"owner-{{ ownerOption?.id }}\"\n (click)=\"handleOption(ownerOption!, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'owner')?.id === ownerOption?.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"owner-ein\"\n [innerHTML]=\"\n search\n ? (ownerOption?.ein || '' | highlightSearch: value())\n : ownerOption?.ein\n \"\n ></p>\n <p\n [innerHTML]=\"\n search\n ? (ownerOption?.name || '' | highlightSearch: value())\n : ownerOption?.name\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Fuelcard dropdown -->\n<ng-template #fuelcardRef>\n @if (dropdownOptions().length) {\n @for (fuelcard of dropdownOptions(); track $index; let index = $index) {\n @let fuelcardOption = cast(fuelcard, \"fuelCard\");\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"fuelcard-{{ fuelcardOption?.id }}\"\n (click)=\"handleOption(fuelcardOption!, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'fuelCard')?.id === fuelcardOption?.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"fuelcard-number\"\n [innerHTML]=\"\n search\n ? (fuelcardOption?.number || '' | highlightSearch: value())\n : fuelcardOption?.number\n \"\n ></p>\n <p\n class=\"fuelcard-brand\"\n [innerHTML]=\"\n search\n ? (fuelcardOption?.brand || '' | highlightSearch: value())\n : fuelcardOption?.brand\n \"\n ></p>\n <p\n [innerHTML]=\"\n search\n ? (fuelcardOption?.account || '' | highlightSearch: value())\n : fuelcardOption?.account\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Accident driver dropdown -->\n<ng-template #accidentDriverRef>\n @if (dropdownOptions().length) {\n @for (driver of dropdownOptions(); track $index; let index = $index) {\n @let driverOption = cast(driver, \"accidentDriver\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"accident-driver-{{ driverOption.id }}\"\n (click)=\"handleOption(driverOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'accidentDriver')?.id === driverOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <div class=\"dropdown-subitem accident-name\">\n <cai-avatar\n [driver]=\"driverOption\"\n [size]=\"18\"\n [inverse]=\"true\"\n [hover]=\"false\"\n ></cai-avatar>\n <p\n [innerHTML]=\"\n driverOption.firstName + ' ' + driverOption.lastName\n | highlightSearch: value()\n \"\n ></p>\n </div>\n <p class=\"accident-dob\">\n {{ driverOption.dateOfBirth | date: \"MM/dd/yy\" }}\n </p>\n <p\n class=\"accident-cdl-number\"\n [innerHTML]=\"driverOption.cdlNumber || '' | highlightSearch: value()\"\n ></p>\n <div class=\"dropdown-subitem accident-state\">\n <p\n [innerHTML]=\"\n driverOption.cdlState?.stateShortName || ''\n | highlightSearch: value()\n \"\n ></p>\n @if (\n driverOption.cdlState?.countryType?.name &&\n driverOption.cdlState?.stateShortName\n ) {\n <svg-icon\n class=\"icon\"\n [name]=\"\n 'cai-' +\n driverOption.cdlState?.countryType?.name?.toLowerCase() +\n '-' +\n driverOption.cdlState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Accident truck dropdown -->\n<ng-template #accidentTruckRef>\n @if (dropdownOptions().length) {\n @for (truck of dropdownOptions(); track $index; let index = $index) {\n @let truckOption = cast(truck, \"accidentTruck\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"accident-truck-{{ truckOption.id }}\"\n (click)=\"handleOption(truckOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'accidentTruck')?.id === truckOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <div class=\"dropdown-subitem accident-unit\">\n @if (truckOption.truckType?.logoName) {\n <svg-icon\n class=\"truck-icon truck-trailer-icon-colors\"\n [class]=\"truckOption.truckType!.logoName.slice(0, -4)\"\n [name]=\"truckOption.truckType!.logoName.slice(0, -4)\"\n ></svg-icon>\n }\n <p\n [innerHTML]=\"truckOption.truckNumber | highlightSearch: value()\"\n ></p>\n </div>\n <p\n class=\"accident-vin\"\n [innerHTML]=\"truckOption.vin || '' | highlightSearch: value()\"\n ></p>\n <p\n class=\"accident-plate\"\n [innerHTML]=\"\n truckOption.licensePlateNumber || '' | highlightSearch: value()\n \"\n ></p>\n <div class=\"dropdown-subitem accident-state\">\n <p\n [innerHTML]=\"\n truckOption.licenseState?.stateShortName || ''\n | highlightSearch: value()\n \"\n ></p>\n @if (\n truckOption.licenseState?.countryType?.name &&\n truckOption.licenseState?.stateShortName\n ) {\n <svg-icon\n class=\"icon\"\n [name]=\"\n 'cai-' +\n truckOption.licenseState?.countryType?.name?.toLowerCase() +\n '-' +\n truckOption.licenseState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Accident trailer dropdown -->\n<ng-template #accidentTrailerRef>\n @if (dropdownOptions().length) {\n @for (trailer of dropdownOptions(); track $index; let index = $index) {\n @let trailerOption = cast(trailer, \"accidentTrailer\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"accident-trailer-{{ trailerOption.id }}\"\n (click)=\"handleOption(trailerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'accidentTrailer')?.id === trailerOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <div class=\"dropdown-subitem accident-unit\">\n @if (trailerOption.trailerType?.logoName) {\n <svg-icon\n class=\"trailer-icon truck-trailer-icon-colors\"\n [class]=\"trailerOption.trailerType!.logoName.slice(0, -4)\"\n [name]=\"trailerOption.trailerType!.logoName.slice(0, -4)\"\n ></svg-icon>\n }\n <p\n [innerHTML]=\"trailerOption.trailerNumber | highlightSearch: value()\"\n ></p>\n </div>\n <p\n class=\"accident-vin\"\n [innerHTML]=\"trailerOption.vin || '' | highlightSearch: value()\"\n ></p>\n <p\n class=\"accident-plate\"\n [innerHTML]=\"\n trailerOption.licensePlateNumber || '' | highlightSearch: value()\n \"\n ></p>\n <div class=\"dropdown-subitem accident-state\">\n <p\n [innerHTML]=\"\n trailerOption.licenseState?.stateShortName || ''\n | highlightSearch: value()\n \"\n ></p>\n @if (\n trailerOption.licenseState?.countryType?.name &&\n trailerOption.licenseState?.stateShortName\n ) {\n <svg-icon\n class=\"icon\"\n [name]=\"\n 'cai-' +\n trailerOption.licenseState?.countryType?.name?.toLowerCase() +\n '-' +\n trailerOption.licenseState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Shipper dropdown -->\n<ng-template #shipperRef>\n @if (dropdownOptions().length) {\n @for (shipper of dropdownOptions(); track $index; let index = $index) {\n @let shipperOption = cast(shipper, \"shipper\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item split-option\"\n id=\"shipper-{{ shipperOption.id }}\"\n (click)=\"handleOption(shipperOption, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'shipper')?.id === shipperOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"text-truncate\"\n [innerHTML]=\"\n search\n ? (shipperOption.businessName || '' | highlightSearch: value())\n : shipperOption.businessName\n \"\n ></p>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-base\">\n <p\n class=\"text-truncate\"\n [innerHTML]=\"\n search\n ? (shipperOption.address?.address || ''\n | highlightSearch: value())\n : shipperOption.address?.address\n \"\n ></p>\n </div>\n <div class=\"end-item-hover\">\n <p>\n {{ shipperOption.pickupCount }} Pickup |\n {{ shipperOption.deliveryCount }} Delivery\n </p>\n <svg-icon name=\"cai-load\" class=\"icon\"></svg-icon>\n </div>\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Dispatch dropdown -->\n<ng-template #dispatchesRef>\n @if (dropdownOptions().length) {\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n (click)=\"resetSelection()\"\n [class]=\"{\n selected: !selectedOption(),\n }\"\n >\n <p>Unassigned</p>\n <div class=\"unassigned-ltl\">\n <p>{{ unassignedCount() }}</p>\n <svg-icon name=\"cai-ltl-single\" class=\"icon-sm\"></svg-icon>\n </div>\n </button>\n @for (\n dispatchBoard of dropdownOptions();\n track dispatchBoard.id;\n let groupIndex = $index\n ) {\n <!-- Temporary variant since BE doesn't support boards -->\n @let dispatchBoardOption = cast(dispatchBoard, \"dispatchBoard\")!;\n\n @let isNoBoardsVariant =\n dispatchBoardOption.dispatcher === \"NOBOARDSVARIANT\";\n @if (dispatchBoardOption.count > 0) {\n @if (!isNoBoardsVariant) {\n @let isGroupFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === 0;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(dispatchBoardOption.id, $event)\"\n [class]=\"{\n unfolded: dispatchBoardOption.dispatches?.length || 0 > 0,\n focused: isGroupFocused,\n }\"\n >\n <p>\n {{\n dispatchBoardOption.teamBoard\n ? \"Team Board\"\n : dispatchBoardOption.dispatcher\n }}\n </p>\n <p class=\"counter\">{{ dispatchBoardOption.count }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n }\n @if (\n dispatchBoardOption.dispatches &&\n dispatchBoardOption.dispatches.length > 0\n ) {\n @for (\n dispatch of dispatchBoardOption.dispatches;\n track dispatch.id;\n let optionIndex = $index\n ) {\n @let isOptionFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === optionIndex + 1;\n <!-- +1 since optionIndex is 0 for the group item header -->\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n (click)=\"handleOption(dispatch, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'dispatch')?.id === dispatch.id,\n focused: isOptionFocused,\n }\"\n >\n <div class=\"dropdown-subitem truck-item\">\n <svg-icon\n class=\"truck-icon truck-trailer-icon-colors\"\n [class]=\"dispatch.truck.truckType.logoName.slice(0, -4)\"\n [name]=\"dispatch.truck.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"truck-number\"\n [innerHTML]=\"\n dispatch.truck.truckNumber | highlightSearch: value()\n \"\n ></p>\n </div>\n <div class=\"dropdown-subitem trailer-item\">\n @if (dispatch.trailer) {\n <svg-icon\n class=\"trailer-icon truck-trailer-icon-colors\"\n [class]=\"dispatch.trailer.trailerType.logoName.slice(0, -4)\"\n [name]=\"dispatch.trailer.trailerType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"trailer-number\"\n [innerHTML]=\"\n dispatch.trailer.trailerNumber | highlightSearch: value()\n \"\n ></p>\n }\n </div>\n <div class=\"dropdown-subitem\">\n @if (dispatch.coDriver) {\n <svg-icon class=\"dispatch-icon\" name=\"cai-people\"></svg-icon>\n <p\n class=\"driver-name\"\n [innerHTML]=\"\n dispatch.driver.firstName +\n ' & ' +\n dispatch.coDriver.firstName | highlightSearch: value()\n \"\n ></p>\n } @else {\n <cai-avatar\n [driver]=\"dispatch.driver\"\n [size]=\"18\"\n [inverse]=\"true\"\n [hover]=\"false\"\n ></cai-avatar>\n <p\n class=\"driver-name\"\n [innerHTML]=\"\n dispatch.driver.firstName + ' ' + dispatch.driver.lastName\n | highlightSearch: value()\n \"\n ></p>\n }\n </div>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-hover\">\n <p>{{ dispatch.payType }}</p>\n <svg-icon name=\"cai-driver\" class=\"icon-sm\"></svg-icon>\n </div>\n <div class=\"end-item-base dispatch-ltl\">\n <p>{{ dispatch.numberOfSingleLtlLoads }}</p>\n <svg-icon name=\"cai-ltl-single\" class=\"icon-sm\"></svg-icon>\n </div>\n </div>\n </button>\n }\n } @else if (isNoBoardsVariant) {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- ftl dispatch dropdown -->\n<ng-template #ftlDispatchRef>\n @if (dropdownOptions().length) {\n @for (\n dispatchBoard of dropdownOptions();\n track dispatchBoard.id;\n let groupIndex = $index\n ) {\n @let dispatchBoardOption = cast(dispatchBoard, \"dispatchBoard\")!;\n @let isGroupFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === 0;\n @let isNoBoardsVariant =\n dispatchBoardOption.dispatcher === \"NOBOARDSVARIANT\";\n @if (dispatchBoardOption.count > 0) {\n @if (!isNoBoardsVariant) {\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(dispatchBoardOption.id, $event)\"\n [class]=\"{\n unfolded: dispatchBoardOption.dispatches?.length || 0 > 0,\n focused: isGroupFocused,\n }\"\n >\n <p>\n {{\n dispatchBoardOption.teamBoard\n ? \"Team Board\"\n : dispatchBoardOption.dispatcher\n }}\n </p>\n <p class=\"counter\">{{ dispatchBoardOption.count }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n }\n @if (\n dispatchBoardOption.dispatches &&\n dispatchBoardOption.dispatches.length > 0\n ) {\n @for (\n dispatch of dispatchBoardOption.dispatches;\n track dispatch.id;\n let optionIndex = $index\n ) {\n @let isOptionFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === optionIndex + 1;\n <!-- +1 since optionIndex is 0 for the group item header -->\n <button\n class=\"dropdown-item\"\n (click)=\"handleOption(dispatch, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'dispatch')?.id === dispatch.id,\n focused: isOptionFocused,\n }\"\n >\n <div class=\"dropdown-subitem truck-item\">\n <svg-icon\n class=\"truck-icon truck-trailer-icon-colors\"\n [class]=\"dispatch.truck.truckType.logoName.slice(0, -4)\"\n [name]=\"dispatch.truck.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"truck-number\"\n [innerHTML]=\"\n dispatch.truck.truckNumber | highlightSearch: value()\n \"\n ></p>\n </div>\n <div class=\"dropdown-subitem trailer-item\">\n @if (dispatch.trailer) {\n <svg-icon\n class=\"trailer-icon truck-trailer-icon-colors\"\n [class]=\"dispatch.trailer.trailerType.logoName.slice(0, -4)\"\n [name]=\"dispatch.trailer.trailerType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"trailer-number\"\n [innerHTML]=\"\n dispatch.trailer.trailerNumber | highlightSearch: value()\n \"\n ></p>\n }\n </div>\n <div class=\"dropdown-subitem\">\n @if (dispatch.coDriver) {\n <svg-icon class=\"dispatch-icon\" name=\"cai-people\"></svg-icon>\n <p\n class=\"driver-name\"\n [innerHTML]=\"\n dispatch.driver.firstName +\n ' & ' +\n dispatch.coDriver.firstName | highlightSearch: value()\n \"\n ></p>\n } @else {\n <cai-avatar\n [driver]=\"dispatch.driver\"\n [size]=\"18\"\n [inverse]=\"true\"\n [hover]=\"false\"\n ></cai-avatar>\n <p\n class=\"driver-name\"\n [innerHTML]=\"\n dispatch.driver.firstName + ' ' + dispatch.driver.lastName\n | highlightSearch: value()\n \"\n ></p>\n }\n </div>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-hover\">\n <!-- Load Status -->\n @let dispatchStatus = dispatch.status | dispatchStatus;\n @if (dispatchStatus) {\n <div\n class=\"dispatch-status\"\n [class]=\"dispatchStatus.statusClass\"\n >\n @if (dispatchStatus.badge) {\n <p\n class=\"status-block\"\n [class]=\"dispatchStatus.badge.color\"\n >\n {{ dispatchStatus.badge.text }}\n </p>\n }\n {{ dispatchStatus.label }}\n @if (dispatch.status?.statusCheckInNumber) {\n <p class=\"status-block\">\n {{ dispatch.status?.statusCheckInNumber }}\n </p>\n }\n </div>\n <p class=\"dispatch-separator\">|</p>\n }\n <p class=\"dispatch-load-count\">\n {{ dispatch?.pendingLoadCount }}\n </p>\n <svg-icon name=\"cai-load\" class=\"icon-sm\"></svg-icon>\n </div>\n <div class=\"end-item-base\">\n <p>{{ dispatch.payType }}</p>\n <svg-icon name=\"cai-driver\" class=\"icon-sm\"></svg-icon>\n </div>\n </div>\n </button>\n }\n } @else if (isNoBoardsVariant) {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #splitDriverRef>\n @if (dropdownOptions().length) {\n @for (splitDriverBoard of dropdownOptions(); track splitDriverBoard.id) {\n @let driverBoard = cast(splitDriverBoard, \"splitDriverBoard\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(driverBoard.id, $event)\"\n [class]=\"{\n unfolded: (driverBoard.drivers?.length ?? 0) > 0,\n }\"\n >\n <p>\n {{\n driverBoard.isTeamBoard ? \"Team Board\" : driverBoard.dispatcherName\n }}\n </p>\n <!-- TODO: Change to count once BE is fixed -->\n <p class=\"counter\">{{ driverBoard.drivers?.length || 0 }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n @for (driver of driverBoard.drivers || []; track driver.id) {\n @let driverOption = cast(driver, \"splitDriver\")!;\n <button\n class=\"dropdown-item\"\n (click)=\"handleOption(driverOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'splitDriver')?.id === driverOption.id,\n }\"\n >\n <div class=\"dropdown-subitem\">\n <div class=\"dropdown-avatar\">\n <cai-avatar\n [driver]=\"driverOption\"\n [size]=\"18\"\n [inverse]=\"true\"\n [hover]=\"false\"\n ></cai-avatar>\n </div>\n <p\n class=\"driver-name\"\n [innerHTML]=\"\n driverOption.firstName + ' ' + driverOption.lastName\n | highlightSearch: value()\n \"\n ></p>\n </div>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-hover\">\n @let dispatchStatus =\n driverOption.dispatchStatus | dispatchStatus;\n @if (dispatchStatus) {\n <div\n class=\"dispatch-status\"\n [class]=\"dispatchStatus.statusClass\"\n >\n @if (dispatchStatus.badge) {\n <p\n class=\"status-block\"\n [class]=\"dispatchStatus.badge.color\"\n >\n {{ dispatchStatus.badge.text }}\n </p>\n }\n {{ dispatchStatus.label }}\n @if (driverOption.dispatchStatus?.statusCheckInNumber) {\n <p class=\"status-block\">\n {{ driverOption.dispatchStatus?.statusCheckInNumber }}\n </p>\n }\n </div>\n <p class=\"dispatch-separator\">|</p>\n }\n <p class=\"dispatch-load-count\">\n {{ driverOption.pendingLoadsCount }}\n </p>\n <svg-icon name=\"cai-load\" class=\"icon-sm\"></svg-icon>\n </div>\n <div class=\"end-item-base\">\n <p>{{ driverOption.payTypeValue }}</p>\n </div>\n </div>\n </button>\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #splitTruckRef>\n @if (dropdownOptions().length) {\n @for (splitTruckBoard of dropdownOptions(); track splitTruckBoard.id) {\n @let truckBoard = cast(splitTruckBoard, \"splitTruckBoard\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(truckBoard.id, $event)\"\n [class]=\"{\n unfolded: (truckBoard.trucks?.length ?? 0) > 0,\n }\"\n >\n <p>\n {{\n truckBoard.isTeamBoard ? \"Team Board\" : truckBoard.dispatcherName\n }}\n </p>\n <!-- TODO: Change to count once BE is fixed -->\n <p class=\"counter\">{{ truckBoard.trucks?.length || 0 }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n @for (truck of truckBoard.trucks || []; track truck.id) {\n @let truckOption = cast(truck, \"splitTruck\")!;\n <button\n class=\"dropdown-item\"\n (click)=\"handleOption(truckOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'splitTruck')?.id === truckOption.id,\n }\"\n >\n <div class=\"dropdown-subitem truck-item\">\n <svg-icon\n class=\"truck-icon\"\n [style.--truck-color]=\"truckOption.color?.code || ''\"\n [name]=\"truckOption.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"truck-number\"\n [innerHTML]=\"truckOption.truckNumber | highlightSearch: value()\"\n ></p>\n </div>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-hover\">\n @let dispatchStatus = truckOption.dispatchStatus | dispatchStatus;\n @if (dispatchStatus) {\n <div\n class=\"dispatch-status\"\n [class]=\"dispatchStatus.statusClass\"\n >\n @if (dispatchStatus.badge) {\n <p\n class=\"status-block\"\n [class]=\"dispatchStatus.badge.color\"\n >\n {{ dispatchStatus.badge.text }}\n </p>\n }\n {{ dispatchStatus.label }}\n @if (truckOption.dispatchStatus?.statusCheckInNumber) {\n <p class=\"status-block\">\n {{ truckOption.dispatchStatus?.statusCheckInNumber }}\n </p>\n }\n </div>\n <p class=\"dispatch-separator\">|</p>\n }\n <p class=\"dispatch-load-count\">\n {{ truckOption.pendingLoadsCount }}\n </p>\n <svg-icon name=\"cai-load\" class=\"icon-sm\"></svg-icon>\n </div>\n <div class=\"end-item-base\">\n @if (\n truckOption.location?.city &&\n truckOption.location?.stateShortName\n ) {\n <p>\n {{ truckOption.location?.city }},\n {{ truckOption.location?.stateShortName }}\n </p>\n }\n </div>\n </div>\n </button>\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #splitTrailerRef>\n @if (dropdownOptions().length) {\n @for (splitTrailerBoard of dropdownOptions(); track splitTrailerBoard.id) {\n @let trailerBoard = cast(splitTrailerBoard, \"splitTrailerBoard\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(trailerBoard.id, $event)\"\n [class]=\"{\n unfolded: (trailerBoard.trailers?.length ?? 0) > 0,\n }\"\n >\n <p>\n {{\n trailerBoard.isTeamBoard\n ? \"Team Board\"\n : trailerBoard.dispatcherName\n }}\n </p>\n <!-- TODO: Change to count once BE is fixed -->\n <p class=\"counter\">{{ trailerBoard.trailers?.length || 0 }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n @for (trailer of trailerBoard.trailers || []; track trailer.id) {\n @let trailerOption = cast(trailer, \"splitTrailer\")!;\n <button\n class=\"dropdown-item\"\n (click)=\"handleOption(trailerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'splitTrailer')?.id === trailerOption.id,\n }\"\n >\n <div class=\"dropdown-subitem trailer-item\">\n <svg-icon\n class=\"trailer-icon\"\n [style.--trailer-color]=\"trailerOption.color?.code || ''\"\n [name]=\"trailerOption.trailerType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"trailer-number\"\n [innerHTML]=\"\n trailerOption.trailerNumber | highlightSearch: value()\n \"\n ></p>\n </div>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-hover\">\n @let dispatchStatus =\n trailerOption.dispatchStatus | dispatchStatus;\n @if (dispatchStatus) {\n <div\n class=\"dispatch-status\"\n [class]=\"dispatchStatus.statusClass\"\n >\n @if (dispatchStatus.badge) {\n <p\n class=\"status-block\"\n [class]=\"dispatchStatus.badge.color\"\n >\n {{ dispatchStatus.badge.text }}\n </p>\n }\n {{ dispatchStatus.label }}\n @if (trailerOption.dispatchStatus?.statusCheckInNumber) {\n <p class=\"status-block\">\n {{ trailerOption.dispatchStatus?.statusCheckInNumber }}\n </p>\n }\n </div>\n <p class=\"dispatch-separator\">|</p>\n }\n <p class=\"dispatch-load-count\">\n {{ trailerOption.pendingLoadsCount }}\n </p>\n <svg-icon name=\"cai-load\" class=\"icon-sm\"></svg-icon>\n </div>\n <div class=\"end-item-base\">\n @if (\n trailerOption.location?.city &&\n trailerOption.location?.stateShortName\n ) {\n <p>\n {{ trailerOption.location?.city }},\n {{ trailerOption.location?.stateShortName }}\n </p>\n }\n </div>\n </div>\n </button>\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #tollRef>\n @if (dropdownOptions().length) {\n @for (toll of dropdownOptions(); track $index; let groupIndex = $index) {\n @let tollOption = cast(toll, \"tollOption\")!;\n @let isGroupFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === 0;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item pe-none\"\n [class]=\"{\n unfolded: tollOption.tollTransponders?.length || 0 > 0,\n focused: isGroupFocused,\n }\"\n >\n <p>\n {{ tollOption.groupName }}\n </p>\n </button>\n @let tollTransponders = tollOption.tollTransponders || [];\n @for (\n tollTransponder of tollTransponders;\n track tollTransponder.id;\n let optionIndex = $index\n ) {\n @let isOptionFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === optionIndex + 1;\n <!-- +1 since optionIndex is 0 for the group item header -->\n <button\n class=\"dropdown-item\"\n (click)=\"handleOption(tollTransponder, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'tollTransponderOption')?.id ===\n tollTransponder.id,\n focused: isOptionFocused,\n }\"\n >\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (tollTransponder.name || '' | highlightSearch: value())\n : tollTransponder.name\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Dispatcher dropdown -->\n\n<ng-template #dispatcherRef>\n @if (dropdownOptions().length) {\n @for (dispatcher of dropdownOptions(); track $index; let index = $index) {\n @let dispatcherOption = cast(dispatcher, \"dispatcher\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ dispatcherOption.id }}\"\n (click)=\"handleOption(dispatcherOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'dispatcher')?.id === dispatcherOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <cai-avatar\n [driver]=\"{\n id: dispatcherOption?.id || 0,\n firstName: (dispatcherOption?.fullName || ' ').split(' ')[0] || '',\n lastName: (dispatcherOption?.fullName || ' ').split(' ')[1] || '',\n avatarFile: dispatcherOption?.avatarFile,\n colorFlag: dispatcherOption?.colorFlag,\n }\"\n [rounded]=\"!config().squareAvatar\"\n [hover]=\"false\"\n ></cai-avatar>\n <p\n class=\"dropdown-content-hazardous\"\n [innerHTML]=\"\n search\n ? (dispatcherOption.fullName || '' | highlightSearch: value())\n : dispatcherOption.fullName\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Driver Owner dropdown -->\n\n<ng-template #driverOwnerRef>\n @if (dropdownOptions().length) {\n @for (driverOwner of dropdownOptions(); track $index; let index = $index) {\n @let driverOwnerOption = cast(driverOwner, \"driverOwner\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ driverOwnerOption.id }}\"\n (click)=\"handleOption(driverOwnerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'driverOwner')?.id === driverOwnerOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <cai-avatar\n [driver]=\"{\n id: driverOwnerOption?.id || 0,\n firstName: (driverOwnerOption?.fullName || ' ').split(' ')[0] || '',\n lastName: (driverOwnerOption?.fullName || ' ').split(' ')[1] || '',\n avatarFile: driverOwnerOption?.avatarFile,\n colorFlag: driverOwnerOption?.colorFlag,\n owner: driverOwnerOption?.driverType === 'OwnerOperator',\n driverType: {\n id: 0,\n name: (driverOwnerOption?.driverType | driverTypeLabel),\n },\n }\"\n [rounded]=\"false\"\n [hover]=\"false\"\n ></cai-avatar>\n <p\n class=\"dropdown-content\"\n [innerHTML]=\"\n search\n ? (driverOwnerOption.fullName || '' | highlightSearch: value())\n : driverOwnerOption.fullName\n \"\n ></p>\n <div class=\"dropdown-subitem-end\">\n <p class=\"driver-type\">\n {{ driverOwnerOption.driverType | driverTypeLabel }}\n </p>\n </div>\n <svg-icon\n name=\"cai-checkmark\"\n class=\"dropdown-item-icon no-margin\"\n ></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Truck Owner dropdown -->\n\n<ng-template #truckOwnerRef>\n @if (dropdownOptions().length) {\n @for (truckOwner of dropdownOptions(); track $index; let index = $index) {\n @let truckOwnerOption = cast(truckOwner, \"truckOwner\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ truckOwnerOption.id }}\"\n (click)=\"handleOption(truckOwnerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'truckOwner')?.id === truckOwnerOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <div class=\"dropdown-subitem truck-owner-unit\">\n @if (truckOwnerOption.truckType?.logoName) {\n <svg-icon\n class=\"truck-icon truck-trailer-icon-colors\"\n [class]=\"truckOwnerOption.truckType.logoName.slice(0, -4)\"\n [name]=\"truckOwnerOption.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n }\n <p\n class=\"dropdown-content\"\n [innerHTML]=\"\n search\n ? (truckOwnerOption.truckNumber || ''\n | highlightSearch: value())\n : truckOwnerOption.truckNumber\n \"\n ></p>\n @if (truckOwnerOption.model) {\n <p class=\"truck-owner-bullet\">\u2022</p>\n <p\n class=\"dropdown-content\"\n [innerHTML]=\"\n search\n ? (truckOwnerOption.model | highlightSearch: value())\n : truckOwnerOption.model\n \"\n ></p>\n }\n </div>\n <div class=\"dropdown-subitem-end\">\n <p class=\"driver-type\">\n {{ truckOwnerOption.driverType | truckOwnershipLabel }}\n </p>\n </div>\n <svg-icon\n name=\"cai-checkmark\"\n class=\"dropdown-item-icon no-margin\"\n ></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #truckRef>\n @if (dropdownOptions().length) {\n @for (truck of dropdownOptions(); track $index; let index = $index) {\n @let truckOption = cast(truck, \"truckOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ truckOption.id }}\"\n (click)=\"handleOption(truckOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'truckOption')?.id === truckOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (truckOption.name || '' | highlightSearch: value())\n : truckOption.name\n \"\n ></p>\n <svg-icon\n class=\"truck-trailer-option truck-trailer-icon-colors\"\n [class]=\"truckOption.logoName.slice(0, -4)\"\n [name]=\"truckOption.logoName.slice(0, -4)\"\n ></svg-icon>\n <svg-icon\n name=\"cai-checkmark\"\n class=\"dropdown-item-icon no-margin\"\n ></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #trailerRef>\n @if (dropdownOptions().length) {\n @for (truck of dropdownOptions(); track $index; let index = $index) {\n @let trailerOption = cast(truck, \"trailerOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ trailerOption.id }}\"\n (click)=\"handleOption(trailerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'trailerOption')?.id === trailerOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (trailerOption.name || '' | highlightSearch: value())\n : trailerOption.name\n \"\n ></p>\n\n <svg-icon\n class=\"truck-trailer-option truck-trailer-icon-colors\"\n [class]=\"trailerOption.logoName.slice(0, -4)\"\n [name]=\"trailerOption.logoName.slice(0, -4)\"\n ></svg-icon>\n <svg-icon\n name=\"cai-checkmark\"\n class=\"dropdown-item-icon no-margin\"\n ></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #providerRef>\n @if (dropdownOptions().length) {\n @for (provider of dropdownOptions(); track $index; let index = $index) {\n @let providerOption = cast(provider, \"provider\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ providerOption?.id }}\"\n (click)=\"handleOption(providerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'provider')?.id === providerOption?.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <svg-icon\n class=\"full-icon\"\n [name]=\"'cai-' + providerOption?.name?.toLowerCase()\"\n ></svg-icon>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Hazardous dropdown -->\n<ng-template #hazardousRef>\n @if (dropdownOptions().length) {\n @for (hazardous of dropdownOptions(); track $index; let index = $index) {\n @let hazardousOption = cast(hazardous, \"hazardous\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ hazardousOption.id }}\"\n (click)=\"handleOption(hazardousOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'hazardous')?.id === hazardousOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <svg-icon [name]=\"hazardousOption.logoName?.slice(0, -4)\"></svg-icon>\n <p\n class=\"dropdown-content-hazardous\"\n [innerHTML]=\"\n search\n ? (hazardousOption.description || '' | highlightSearch: value())\n : hazardousOption.description\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #pmRef>\n @if (dropdownOptions().length) {\n @for (pm of dropdownOptions(); track $index; let index = $index) {\n @let pmOption = cast(pm, \"pmOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ pmOption.id }}\"\n (click)=\"handleOption(pmOption, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'pmOption')?.id === pmOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <svg-icon\n class=\"icon\"\n [name]=\"pmOption.title | remapPmIcons\"\n ></svg-icon>\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (pmOption.title || '' | highlightSearch: value())\n : pmOption.title\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #colorRef>\n @if (dropdownOptions().length) {\n @for (color of dropdownOptions(); track $index; let index = $index) {\n @let colorOption = cast(color, \"colorOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item color-item\"\n id=\"option-{{ colorOption.id }}\"\n (click)=\"handleOption(colorOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'colorOption')?.id === colorOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <svg-icon\n class=\"icon cai-color\"\n [name]=\"'cai-color'\"\n [style.--color]=\"colorOption?.code\"\n [style.--hover-color]=\"colorOption?.hoverCode\"\n ></svg-icon>\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (colorOption.name || '' | highlightSearch: value())\n : colorOption.name\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #stateRef>\n @if (dropdownOptions().length) {\n @for (state of dropdownOptions(); track $index; let index = $index) {\n @let stateOption = cast(state, \"state\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ stateOption.id }}\"\n (click)=\"handleOption(stateOption, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'state')?.id === stateOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <svg-icon\n class=\"icon\"\n [name]=\"\n 'cai-' +\n stateOption?.countryType?.name?.toLowerCase() +\n '-' +\n stateOption?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (stateOption.stateShortName +\n ' ' +\n (config().fullState\n ? ' (' + stateOption?.stateName + ')'\n : '') || '' | highlightSearch: value())\n : stateOption.stateShortName +\n ' ' +\n (config().fullState ? ' (' + stateOption?.stateName + ')' : '')\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #fuelStopTransactionRef>\n @if (dropdownOptions().length) {\n @for (\n franchise of dropdownOptions();\n track franchise.id;\n let groupIndex = $index\n ) {\n @let isGroupFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === 0;\n @let franchiseOption = cast(franchise, \"franchise\")!;\n @if (franchiseOption?.count !== null) {\n <div\n class=\"dropdown-group\"\n [class.no-items]=\"!franchiseOption?.count\"\n [class]=\"{\n active: openGroup() === franchiseOption.id,\n }\"\n [style.--max-height]=\"\n openGroup() === franchiseOption.id\n ? 30 * ((franchiseOption.fuelStopStores?.length || 0) + 1) + 'px'\n : '26px'\n \"\n >\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(franchiseOption.id, $event, franchiseOption)\"\n [class]=\"{\n unfolded: openGroup() === franchiseOption.id,\n focused: isGroupFocused,\n }\"\n >\n <p\n [innerHTML]=\"\n franchiseOption?.businessName || '' | highlightSearch: value()\n \"\n ></p>\n <p class=\"counter\">{{ franchiseOption.count }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n @if (openGroup() === franchiseOption.id) {\n @if (franchiseOption.fuelStopStores?.length || 0 > 0) {\n @for (\n fuelStopStore of franchiseOption.fuelStopStores;\n track fuelStopStore.id\n ) {\n @let isOptionFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === $index + 1;\n <!-- +1 since optionIndex is 0 for the group item header -->\n <button\n tabindex=\"-1\"\n class=\"dropdown-item fuel-stop-transaction-store\"\n [class]=\"{\n focused: isOptionFocused,\n }\"\n (click)=\"handleOption(fuelStopStore, $event)\"\n >\n <p\n [innerHTML]=\"\n fuelStopStore?.store ?? '' | highlightSearch: value()\n \"\n ></p>\n @let city = fuelStopStore?.address?.city ?? \"\";\n @let state = fuelStopStore?.address?.stateShortName ?? \"\";\n @let zip = fuelStopStore?.address?.zipCode ?? \"\";\n <p\n class=\"fuel-stop-transaction-store-address\"\n [innerHTML]=\"\n city + (state || zip ? ', ' : '') + state + ' ' + zip\n | highlightSearch: value()\n \"\n ></p>\n\n @if (fuelStopStore?.[\"favourite\"]) {\n <svg-icon\n name=\"cai-favorite\"\n class=\"favorite-icon\"\n ></svg-icon>\n }\n </button>\n }\n <!-- Infinite scroll trigger - emits event when item comes into view -->\n <div\n class=\"dropdown-infinite-scroll-item\"\n caiIntersectionObserver\n [threshold]=\"0.1\"\n (inView)=\"onDropdownScrolledToBottom(true)\"\n ></div>\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n }\n </div>\n } @else {\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n [class.focused]=\"\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === 0\n \"\n (click)=\"handleOption(franchiseOption, $event)\"\n >\n <p\n class=\"fuel-stop-transaction-nostore\"\n [innerHTML]=\"\n franchiseOption?.businessName || '' | highlightSearch: value()\n \"\n ></p>\n </button>\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- #endregion -->\n\n<!-- #region Selected options -->\n\n<!-- selected dispatch -->\n<ng-template #selectedDispatchRef>\n @let dispatchOption = cast(selectedOption(), \"dispatch\");\n @if (dispatchOption && !inputRef.value && !isAdding()) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-subitem truck-item\">\n <svg-icon\n class=\"truck-icon\"\n [name]=\"dispatchOption!.truck.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p class=\"truck-number\">\n {{ dispatchOption!.truck.truckNumber }}\n </p>\n </div>\n <div class=\"dropdown-subitem trailer-item\">\n @if (dispatchOption!.trailer) {\n <svg-icon\n class=\"trailer-icon\"\n [name]=\"\n cast(\n selectedOption(),\n 'dispatch'\n )!.trailer?.trailerType?.logoName?.slice(0, -4)\n \"\n ></svg-icon>\n <p class=\"trailer-number\">\n {{ dispatchOption!.trailer?.trailerNumber }}\n </p>\n }\n </div>\n <div class=\"dropdown-subitem\">\n @if (dispatchOption!.coDriver) {\n <svg-icon class=\"dispatch-icon\" name=\"cai-people\"></svg-icon>\n <p class=\"driver-name\">\n {{\n dispatchOption!.driver.firstName +\n \" & \" +\n dispatchOption!.coDriver?.firstName\n }}\n </p>\n } @else {\n <cai-avatar\n [driver]=\"dispatchOption!.driver\"\n [size]=\"18\"\n [hover]=\"false\"\n ></cai-avatar>\n <p class=\"driver-name\">\n {{\n dispatchOption!.driver.firstName +\n \" \" +\n dispatchOption!.driver.lastName\n }}\n </p>\n }\n </div>\n <p class=\"selected-end-item\">\n {{ dispatchOption!.payType }}\n </p>\n </div>\n } @else {\n @if (!inputRef.value && this.config().dropdown == \"dispatch\") {\n <p class=\"dropdown-selected\">Unassigned</p>\n }\n }\n</ng-template>\n\n<!-- selected broker -->\n<ng-template #selectedBrokerRef>\n @let brokerOption = cast(selectedOption(), \"broker\");\n @if (brokerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n @if (brokerOption!.fraudCheck) {\n <svg-icon name=\"cai-status-warning-lite\" class=\"fraud-icon\"></svg-icon>\n }\n <p class=\"dropdown-selected-content\">{{ brokerOption!.businessName }}</p>\n <div class=\"selected-end-item\">\n @if (!brokerOption!.creditLimit) {\n <p>Unlimited</p>\n } @else {\n <p>\n {{ brokerOption!.availableCredit || 0 | currency }}\n </p>\n <div\n class=\"progress-bar\"\n [style.--progress]=\"\n (\n brokerOption!\n | brokerProgress: brokerOption!.dnu || brokerOption!.ban\n ).activePercentageOfPaid + '%'\n \"\n [class]=\"\n (\n brokerOption!\n | brokerProgress: brokerOption!.dnu || brokerOption!.ban\n ).status\n \"\n ></div>\n }\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedContactRef>\n @let contactOption = cast(selectedOption(), \"contact\");\n @if (contactOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"dropdown-selected-content\">{{ contactOption?.contactName }}</p>\n <div class=\"selected-end-item\">\n <p>\n {{ contactOption?.phone }}\n {{\n contactOption?.extensionPhone\n ? \"x\" + contactOption?.extensionPhone\n : \"\"\n }}\n </p>\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedShipperRef>\n @let shipperOption = cast(selectedOption(), \"shipper\");\n @if (shipperOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"dropdown-selected-content\">{{ shipperOption?.businessName }}</p>\n <div class=\"selected-end-item selected-end-item-truncate\">\n <p class=\"text-truncate\">{{ shipperOption?.address?.address }}</p>\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedOwnerRef>\n @let ownerOption = cast(selectedOption(), \"owner\");\n @if (ownerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"owner-ein\">{{ ownerOption?.ein }}</p>\n <p class=\"\">{{ ownerOption?.name }}</p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedFuelcardRef>\n @let fuelcardOption = cast(selectedOption(), \"fuelCard\");\n @if (fuelcardOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"fuelcard-number\">\n {{ fuelcardOption?.number }}\n </p>\n <p class=\"fuelcard-brand\">\n {{ fuelcardOption?.brand }}\n </p>\n <p class=\"\">\n {{ fuelcardOption?.account }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedBankRef>\n @let bankOption = cast(selectedOption(), \"bank\");\n @if (bankOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n @if (bankOption?.logoName) {\n <svg-icon\n class=\"option-icon full-size\"\n [name]=\"bankOption?.logoName?.slice(0, -4) || ''\"\n ></svg-icon>\n } @else {\n <p class=\"dropdown-selected-content\">{{ bankOption?.name }}</p>\n }\n </div>\n }\n</ng-template>\n\n<ng-template #selectedProviderRef>\n @let providerOption = cast(selectedOption(), \"provider\");\n @if (providerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon full-size\"\n [name]=\"'cai-' + providerOption?.name?.toLowerCase()\"\n ></svg-icon>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedMakeRef>\n @let makeOption = cast(selectedOption(), \"make\");\n @if (makeOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n @if (makeOption?.logoName) {\n <svg-icon\n class=\"option-icon full-size\"\n [name]=\"makeOption?.logoName?.slice(0, -4) || ''\"\n ></svg-icon>\n } @else {\n <p class=\"dropdown-selected-content\">{{ makeOption?.name }}</p>\n }\n </div>\n }\n</ng-template>\n\n<ng-template #selectedStateRef>\n @let stateOption = cast(selectedOption(), \"state\");\n @if (stateOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon\"\n [name]=\"\n 'cai-' +\n stateOption?.countryType?.name?.toLowerCase() +\n '-' +\n stateOption?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n <p class=\"dropdown-selected-content\">\n {{ stateOption?.stateShortName }}\n {{ config().fullState ? \" (\" + stateOption?.stateName + \")\" : \"\" }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedDispatcherRef>\n @let dispatcherOption = cast(selectedOption(), \"dispatcher\");\n @if (dispatcherOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <cai-avatar\n [driver]=\"{\n id: dispatcherOption?.id || 0,\n firstName: (dispatcherOption?.fullName || ' ').split(' ')[0] || '',\n lastName: (dispatcherOption?.fullName || ' ').split(' ')[1] || '',\n avatarFile: dispatcherOption?.avatarFile,\n colorFlag: dispatcherOption?.colorFlag,\n }\"\n [rounded]=\"!config().squareAvatar\"\n ></cai-avatar>\n <p class=\"dropdown-selected-content\">{{ dispatcherOption?.fullName }}</p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedDriverOwnerRef>\n @let driverOwnerOption = cast(selectedOption(), \"driverOwner\");\n @if (driverOwnerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <cai-avatar\n [driver]=\"{\n id: driverOwnerOption?.id || 0,\n firstName: (driverOwnerOption?.fullName || ' ').split(' ')[0] || '',\n lastName: (driverOwnerOption?.fullName || ' ').split(' ')[1] || '',\n avatarFile: driverOwnerOption?.avatarFile,\n colorFlag: driverOwnerOption?.colorFlag,\n owner: driverOwnerOption?.driverType === 'OwnerOperator',\n driverType: {\n id: 0,\n name: (driverOwnerOption?.driverType | driverTypeLabel),\n },\n }\"\n [rounded]=\"false\"\n ></cai-avatar>\n <p class=\"dropdown-selected-content\">{{ driverOwnerOption?.fullName }}</p>\n <p class=\"selected-end-item driver-type\">\n {{ driverOwnerOption?.driverType | driverTypeLabel }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedTruckOwnerRef>\n @let truckOwnerOption = cast(selectedOption(), \"truckOwner\");\n @if (truckOwnerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n @if (truckOwnerOption.truckType?.logoName) {\n <svg-icon\n class=\"truck-icon option-icon\"\n [name]=\"truckOwnerOption.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n }\n <p class=\"dropdown-selected-content\">\n {{ truckOwnerOption.truckNumber }}\n @if (truckOwnerOption.model) {\n <span class=\"truck-owner-bullet\">\u2022</span>\n {{ truckOwnerOption.model }}\n }\n </p>\n <p class=\"selected-end-item driver-type\">\n {{ truckOwnerOption.driverType | truckOwnershipLabel }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedTruckRef>\n @let truckOption = cast(selectedOption(), \"truckOption\");\n @if (truckOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon\"\n [name]=\"truckOption?.logoName?.slice(0, -4)\"\n ></svg-icon>\n <p class=\"dropdown-selected-content\">{{ truckOption?.name }}</p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedTrailerRef>\n @let trailerOption = cast(selectedOption(), \"trailerOption\");\n @if (trailerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon\"\n [name]=\"trailerOption?.logoName?.slice(0, -4)\"\n ></svg-icon>\n <p class=\"dropdown-selected-content\">{{ trailerOption?.name }}</p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedHazardousRef>\n @let hazardousOption = cast(selectedOption(), \"hazardous\");\n @if (hazardousOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"hazard-icon\"\n [name]=\"hazardousOption?.logoName?.slice(0, -4)\"\n ></svg-icon>\n <p class=\"dropdown-selected-content dropdown-selected-hazardous\">\n {{ hazardousOption?.description }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedPmRef>\n @let pmOption = cast(selectedOption(), \"pmOption\");\n @if (pmOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon\"\n [name]=\"pmOption?.title | remapPmIcons\"\n ></svg-icon>\n <p class=\"dropdown-selected-content\">\n {{ pmOption?.title }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedColorRef>\n @let colorOption = cast(selectedOption(), \"colorOption\");\n @if (colorOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon cai-color\"\n [name]=\"'cai-color'\"\n [style.--color]=\"colorOption?.code\"\n [style.--hover-color]=\"colorOption?.hoverCode\"\n ></svg-icon>\n <p class=\"dropdown-selected-content\">\n {{ colorOption?.name }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedTollRef>\n @let tollOption = cast(selectedOption(), \"tollTransponderOption\");\n @if (tollOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"dropdown-selected-content\">\n {{ tollOption?.name }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedSplitDriverRef>\n @let splitDriverOption = cast(selectedOption(), \"splitDriver\");\n @if (splitDriverOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-selected-content\">\n <div class=\"dropdown-subitem\">\n <cai-avatar [driver]=\"splitDriverOption\" [size]=\"18\"></cai-avatar>\n <p class=\"driver-name\">\n {{ splitDriverOption.firstName + \" \" + splitDriverOption.lastName }}\n </p>\n </div>\n </div>\n\n <p class=\"selected-end-item\">\n {{ splitDriverOption.payTypeValue }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedSplitTruckRef>\n @let splitTruckOption = cast(selectedOption(), \"splitTruck\");\n @if (splitTruckOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-selected-content\">\n <div class=\"dropdown-subitem trailer-item\">\n <svg-icon\n class=\"trailer-icon\"\n [name]=\"splitTruckOption!.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p class=\"trailer-number\">\n {{ splitTruckOption!.truckNumber }}\n </p>\n </div>\n </div>\n <p class=\"selected-end-item\">\n @if (\n splitTruckOption!.location?.city &&\n splitTruckOption!.location?.stateShortName\n ) {\n {{ splitTruckOption!.location?.city }},\n {{ splitTruckOption!.location?.stateShortName }}\n }\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedSplitTrailerRef>\n @let splitTrailerOption = cast(selectedOption(), \"splitTrailer\");\n @if (splitTrailerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-selected-content\">\n <div class=\"dropdown-subitem truck-item\">\n <svg-icon\n class=\"truck-icon\"\n [name]=\"splitTrailerOption!.trailerType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p class=\"truck-number\">\n {{ splitTrailerOption!.trailerNumber }}\n </p>\n </div>\n </div>\n <p class=\"selected-end-item\">\n @if (\n splitTrailerOption!.location?.city &&\n splitTrailerOption!.location?.stateShortName\n ) {\n {{ splitTrailerOption!.location?.city }},\n {{ splitTrailerOption!.location?.stateShortName }}\n }\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedAccidentDriverRef>\n @let accidentDriverOption = cast(selectedOption(), \"accidentDriver\");\n @if (accidentDriverOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-subitem accident-name\">\n <cai-avatar\n [driver]=\"accidentDriverOption!\"\n [size]=\"18\"\n [hover]=\"false\"\n ></cai-avatar>\n <p>\n {{\n accidentDriverOption!.firstName +\n \" \" +\n accidentDriverOption!.lastName\n }}\n </p>\n </div>\n <p class=\"accident-dob\">\n {{ accidentDriverOption!.dateOfBirth | date: \"MM/dd/yy\" }}\n </p>\n <p class=\"accident-cdl-number\">\n {{ accidentDriverOption!.cdlNumber }}\n </p>\n <div class=\"dropdown-subitem accident-state\">\n <p>{{ accidentDriverOption!.cdlState?.stateShortName }}</p>\n @if (\n accidentDriverOption!.cdlState?.countryType?.name &&\n accidentDriverOption!.cdlState?.stateShortName\n ) {\n <svg-icon\n class=\"icon option-icon\"\n [name]=\"\n 'cai-' +\n accidentDriverOption!.cdlState?.countryType?.name?.toLowerCase() +\n '-' +\n accidentDriverOption!.cdlState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedAccidentTruckRef>\n @let accidentTruckOption = cast(selectedOption(), \"accidentTruck\");\n @if (accidentTruckOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-subitem accident-unit\">\n @if (accidentTruckOption!.truckType?.logoName) {\n <svg-icon\n class=\"truck-icon option-icon\"\n [name]=\"accidentTruckOption!.truckType!.logoName.slice(0, -4)\"\n ></svg-icon>\n }\n <p>{{ accidentTruckOption!.truckNumber }}</p>\n </div>\n <p class=\"accident-vin\">{{ accidentTruckOption!.vin }}</p>\n <p class=\"accident-plate\">\n {{ accidentTruckOption!.licensePlateNumber }}\n </p>\n <div class=\"dropdown-subitem accident-state\">\n <p>{{ accidentTruckOption!.licenseState?.stateShortName }}</p>\n @if (\n accidentTruckOption!.licenseState?.countryType?.name &&\n accidentTruckOption!.licenseState?.stateShortName\n ) {\n <svg-icon\n class=\"icon option-icon\"\n [name]=\"\n 'cai-' +\n accidentTruckOption!.licenseState?.countryType?.name?.toLowerCase() +\n '-' +\n accidentTruckOption!.licenseState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedAccidentTrailerRef>\n @let accidentTrailerOption = cast(selectedOption(), \"accidentTrailer\");\n @if (accidentTrailerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-subitem accident-unit\">\n @if (accidentTrailerOption!.trailerType?.logoName) {\n <svg-icon\n class=\"trailer-icon option-icon\"\n [name]=\"accidentTrailerOption!.trailerType!.logoName.slice(0, -4)\"\n ></svg-icon>\n }\n <p>{{ accidentTrailerOption!.trailerNumber }}</p>\n </div>\n <p class=\"accident-vin\">{{ accidentTrailerOption!.vin }}</p>\n <p class=\"accident-plate\">\n {{ accidentTrailerOption!.licensePlateNumber }}\n </p>\n <div class=\"dropdown-subitem accident-state\">\n <p>{{ accidentTrailerOption!.licenseState?.stateShortName }}</p>\n @if (\n accidentTrailerOption!.licenseState?.countryType?.name &&\n accidentTrailerOption!.licenseState?.stateShortName\n ) {\n <svg-icon\n class=\"icon option-icon\"\n [name]=\"\n 'cai-' +\n accidentTrailerOption!.licenseState?.countryType?.name?.toLowerCase() +\n '-' +\n accidentTrailerOption!.licenseState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #passwordTooltip>\n {{ visible() ? \"Hide\" : \"Show\" }}\n</ng-template>\n\n<ng-template #errorTooltip>\n @if (\n (config().errorBehavior === \"floating\" ||\n (config().errorBehavior === \"static\" && hasText()) ||\n config().inTable) &&\n invalid &&\n !dropdown.isOpen()\n ) {\n {{ (ngControl?.errors | errorMessage: config().customErrors)[0] }}\n }\n</ng-template>\n\n<!-- #endregion -->\n", styles: ["input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{transition:background-color 5000s ease-in-out 0s!important}input:-webkit-autofill:focus{-webkit-text-fill-color:#ffffff!important}input:-moz-autofill,input:-moz-autofill-preview{filter:none}*,*:before,*:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}p,ul,ol,dl,blockquote,figure,pre{margin:0}button,input,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button{background:none;border:none;padding:0}img,svg,video,canvas,audio,iframe,embed,object{display:block;max-width:100%;height:auto}ul,ol{padding-left:1.5rem;list-style-position:outside}a{color:inherit;text-decoration:inherit}table{border-collapse:collapse;border-spacing:0}:focus:not(:focus-visible){outline:none}.app-input-container{--color-text: #2f2f2f;--color-text-negative: #df3c3c;--color-text-heading: #424242;--color-text-subtle: #919191;--color-text-inverse: #ffffff;--color-icon-neutral: #919191;--color-icon-negative: #e66767;--color-icon-positive: #6692f1;--color-icon-inverse: rgba(255, 255, 255, .6980392157);--color-icon-disable: #cccccc;--color-surface-neutral: #eeeeee;--color-surface-neutral-hover: #dadada;--color-surface-neutral-focus: #1d1d1d;--color-surface-positive: #e9effd;--color-surface-positive-hover: #bed0f9;--color-surface-positive-focus: #0b49d1;--color-surface-negative: #fbe9e9;--color-surface-negative-hover: #f4bebe;--color-surface-negative-focus: #c20c0c;--color-surface-disable: #f7f7f7;position:relative;border-radius:2px;background-color:var(--color-surface-neutral);color:var(--color-text);transition:background-color .1s cubic-bezier(.46,.03,.51,.95);display:flex}.app-input-container.inverse{--color-text: #ffffff;--color-text-negative: #ed9292;--color-text-heading: #ffffff;--color-text-inverse: #ffffff;--color-icon-neutral: #aaaaaa;--color-icon-negative: #ed9292;--color-icon-positive: #92b1f5;--color-icon-disable: #6c6c6c;--color-surface-neutral: #424242;--color-surface-neutral-hover: #6c6c6c;--color-surface-neutral-focus: #dadada;--color-surface-positive: rgba(59, 115, 237, .2);--color-surface-positive-hover: #2f519a;--color-surface-positive-focus: #0b49d1;--color-surface-negative: rgba(223, 60, 60, .2);--color-surface-negative-hover: #923030;--color-surface-negative-focus: #c20c0c;--color-surface-disable: rgba(66, 66, 66, .4)}.app-input-container.inverse:not(.has-error):not(.has-valid) .app-input:focus-visible{color:#2f2f2f}.app-input-container.inverse:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .icon,.app-input-container.inverse:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .icon-sm{color:#919191!important}.app-input-container.inverse:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .separator{background-color:#919191!important}.app-input-container.inverse:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .bg-icon{background-color:#919191!important;color:#dadada}.app-input-container.inverse.is-empty:has(.app-input:focus-visible) .icon,.app-input-container.inverse.is-empty:has(.app-input:focus-visible) .icon-sm{color:#919191!important}.app-input-container.inverse.is-empty:has(.app-input:focus-visible) .bg-icon{background-color:#919191!important;color:#dadada}.app-input-container.inverse.is-empty:has(.app-input:focus-visible) .separator{background-color:#919191!important}.app-input-container.inverse.has-text:has(.app-input:disabled) .app-input-label{color:#424242!important}.app-input-container.hovered{background-color:var(--color-surface-neutral-hover)}.app-input-container.hovered:not(:has(.app-input:disabled)) .sub-label,.app-input-container.hovered:not(:has(.app-input:disabled)) .app-input-label .accident-state{margin-right:44px}@media(hover:hover){.app-input-container:hover{background-color:var(--color-surface-neutral-hover)}.app-input-container:hover:not(:has(.app-input:disabled)) .sub-label,.app-input-container:hover:not(:has(.app-input:disabled)) .app-input-label .accident-state{margin-right:44px}}.app-input-container.has-text .app-input-label{transform:translateY(-20px);font-weight:600;font-size:11px;color:var(--color-text-heading)!important}.app-input-container.has-text.fade-placeholder .app-input-label{transform:translateY(0);opacity:0}.app-input-container.has-text .subcontent{opacity:1!important}.app-input-container.has-text.static-placeholder .app-input-label{transform:translateY(0);opacity:1;color:var(--color-text)}@media(hover:hover){.app-input-container.has-text.is-address:hover .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-text.is-address:hover .bg-icon{background-color:var(--color-icon-neutral);color:var(--color-surface-neutral-hover)}}.app-input-container.has-text.is-address:has(.app-input:focus-visible) .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-text.is-address:has(.app-input:focus-visible) .bg-icon{background-color:var(--color-icon-inverse);color:var(--color-surface-neutral-focus)}.app-input-container:has(.app-input:focus-visible){background-color:var(--color-surface-neutral-focus)}.app-input-container:has(.app-input:focus-visible) .app-input-label{transform:translateY(-20px);font-weight:600;font-size:11px;color:var(--color-text-heading)!important}.app-input-container:has(.app-input:focus-visible) .subcontent{opacity:1!important;color:#ffffffb2;left:unset!important;right:4px!important}.app-input-container:has(.app-input:focus-visible).has-text .subcontent{right:26px!important}.app-input-container:has(.app-input:focus-visible) .sub-label,.app-input-container:has(.app-input:focus-visible) .app-input-label .accident-state{margin-right:44px}.app-input-container:has(.app-input:focus-visible).fade-placeholder .app-input-label{transform:translateY(0);opacity:0}.app-input-container:has(.app-input:focus-visible).static-placeholder .app-input-label{transform:translateY(0);opacity:1;color:var(--color-text-inverse)!important}.app-input-container:has(.app-input:focus-visible) .bg-icon{background-color:var(--color-icon-inverse);color:var(--color-surface-neutral-focus)}.app-input-container:has(.app-input:focus-visible) .separator{background-color:var(--color-icon-inverse)!important}.app-input-container:has(.app-input:disabled){background-color:var(--color-surface-disable)}.app-input-container:has(.app-input:disabled).hovered{background-color:var(--color-surface-disable)}@media(hover:hover){.app-input-container:has(.app-input:disabled):hover{background-color:var(--color-surface-disable)}}.app-input-container:has(.app-input:disabled):focus{background-color:var(--color-surface-disable)}.app-input-container:has(.app-input:disabled) .app-input-label{color:var(--color-text-subtle)}.app-input-container:has(.app-input:disabled) .separator{background-color:var(--color-icon-disable)}.app-input-container:has(.app-input:disabled) .dropdown-icon-container{opacity:0;pointer-events:none!important}.app-input-container:has(.app-input:disabled) .dropdown-selected:has(.selected-end-item){width:100%}.app-input-container:has(.app-input:disabled) .driver-type{color:#919191}.app-input-container:has(.app-input:disabled) .icon-container{pointer-events:none!important}.app-input-container:has(.app-input:disabled):not(.disabled-removable) .cancel-button{display:none!important}.app-input-container:has(.app-input:required):not(:has(.app-input:disabled)) .app-input-name:after{content:\" *\";color:var(--color-text-negative)}@media(hover:hover){.app-input-container:not(.has-error).is-empty:not(:has(.app-input:focus-visible)) .dropdown-icon-container:hover .dropdown-icon{color:#424242!important}}@media(hover:hover){.app-input-container:not(.has-error).is-empty:not(:has(.app-input:focus-visible)) .hover-icon:hover{color:#424242!important}}@media(hover:hover){.app-input-container:not(.has-error).is-empty:has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon{color:#fff!important}}@media(hover:hover){.app-input-container:not(.has-error).is-empty:has(.app-input:focus-visible) .hover-icon:hover{color:#fff!important}}@media(hover:hover){.app-input-container:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon{color:#fff!important}}@media(hover:hover){.app-input-container:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .hover-icon:hover{color:#fff!important}}.app-input-container.canceled .app-input-label,.app-input-container.canceled .app-input{color:var(--color-text-subtle)!important}.app-input-container.canceled .icon-container .icon,.app-input-container.canceled .icon-container .icon-sm{color:var(--color-icon-disable)!important}.subcontent{pointer-events:none;position:absolute;left:6px;color:#919191;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);transition:right .1s ease-in-out,left .1s ease-in-out,transform .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95);opacity:0;font-family:Montserrat;font-weight:400;font-style:Regular;font-size:14px;line-height:18px;letter-spacing:0%;height:18px;overflow:hidden}.subcontent .subcontent-hide{opacity:0!important}.app-input-label{position:absolute;display:flex;gap:4px;left:0;font-size:14px;line-height:18px;font-weight:400;pointer-events:none;padding:.25rem 6px;color:var(--color-text);transition:transform .1s ease-in-out,font-weight .1s ease-in-out,color .1s ease-in-out,font-size .1s ease-in-out,opacity .1s ease-in-out;transform:translateY(0);-webkit-user-select:none;user-select:none}.app-input-label.placeholder-color{color:var(--placeholder-color)!important}.app-input{padding:.25rem 6px;width:100%;font-size:14px;line-height:18px;font-weight:400;border:0;outline:none;margin-top:auto;background-color:transparent;transition:color .1s cubic-bezier(.46,.03,.51,.95);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:relative}.app-input:focus-visible{color:var(--color-text-inverse)}@media(pointer:coarse){.app-input{font-size:16px;transform:scale(.875);transform-origin:left center;height:26px}}.app-input-error{position:absolute;bottom:-16px;right:6px;font-size:11px;font-weight:600;opacity:0;pointer-events:none;-webkit-user-select:none;user-select:none;transition:opacity .1s cubic-bezier(.46,.03,.51,.95),transform .1s cubic-bezier(.46,.03,.51,.95);color:var(--color-text-negative);transform:translateY(-10px)}.app-input-container.has-error{background-color:var(--color-surface-negative)}.app-input-container.has-error:not(.has-icon):not(.has-password):not(.has-right) .app-input{padding-right:26px}.app-input-container.has-error:has(.app-input:focus-visible):not(.has-right) .app-input{padding-right:26px}@media(hover:hover){.app-input-container.has-error:hover:not(.has-right) .app-input{padding-right:26px}}.app-input-container.has-error.has-right .app-input{padding-right:6px;padding-left:26px}.app-input-container.has-error.hovered{background-color:var(--color-surface-negative-hover)}.app-input-container.has-error.hovered.has-text .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-error.hovered.has-text .bg-icon{background-color:var(--color-icon-negative);color:var(--color-surface-negative-hover)}@media(hover:hover){.app-input-container.has-error:hover{background-color:var(--color-surface-negative-hover)}.app-input-container.has-error:hover.has-text .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-error:hover.has-text .bg-icon{background-color:var(--color-icon-negative);color:var(--color-surface-negative-hover)}}.app-input-container.has-error:has(.app-input:focus-visible){background-color:var(--color-surface-negative-focus);color:var(--color-text-inverse)}.app-input-container.has-error:has(.app-input:focus-visible).has-text .button-icon{opacity:1}.app-input-container.has-error:has(.app-input:focus-visible).has-text .bg-icon{background-color:var(--color-icon-inverse);color:var(--color-surface-negative-focus)}.app-input-container.has-error:has(.app-input:focus-visible).is-empty,.app-input-container.has-error:has(.app-input:focus-visible).has-dropdown:not(.has-selected){background-color:var(--color-surface-neutral-focus)!important}.app-input-container.has-error:has(.app-input:focus-visible).is-empty .app-input-error,.app-input-container.has-error:has(.app-input:focus-visible).has-dropdown:not(.has-selected) .app-input-error{opacity:0}.app-input-container.has-error:has(.app-input:focus-visible).is-empty .bg-icon,.app-input-container.has-error:has(.app-input:focus-visible).has-dropdown:not(.has-selected) .bg-icon{color:var(--color-surface-neutral-focus)!important}.app-input-container.has-error:has(.app-input:not(:focus-visible)).app-input-container:not(:hover) .warning-icon,.app-input-container.has-error.is-empty:has(.app-input:not(:focus-visible)) .warning-icon{opacity:1!important}.app-input-container.has-error .app-input-error{opacity:1;transform:translateY(0);pointer-events:auto}.app-input-container.has-error .app-input::selection{background-color:#ffffff4d}.app-input-container.has-error .icon-container .separator,.app-input-container.has-error .dropdown-icon-container .separator{background-color:var(--color-icon-negative)}.app-input-container.has-error .icon-container .icon,.app-input-container.has-error .icon-container .icon-sm,.app-input-container.has-error .dropdown-icon-container .icon,.app-input-container.has-error .dropdown-icon-container .icon-sm{color:var(--color-icon-negative)}@media(hover:hover){.app-input-container.has-error:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .bg-icon:hover{background-color:#c20c0c!important}}@media(hover:hover){.app-input-container.has-error:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .dropdown-icon-container:hover .dropdown-icon{color:#c20c0c!important}}@media(hover:hover){.app-input-container.has-error:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .hover-icon:hover{color:#c20c0c!important}}@media(hover:hover){.app-input-container.has-error:not(.removable):has(.app-input:focus-visible) .bg-icon:hover{background-color:#fff!important}}@media(hover:hover){.app-input-container.has-error:not(.removable):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon{color:#fff!important}}@media(hover:hover){.app-input-container.has-error:not(.removable):has(.app-input:focus-visible) .hover-icon:hover{color:#fff!important}}.app-input-container.has-valid:not(.has-icon):not(.has-password):not(.has-right) .app-input{padding-right:26px}.app-input-container.has-valid:has(.app-input:focus-visible):not(.has-right) .app-input{padding-right:26px}@media(hover:hover){.app-input-container.has-valid:hover:not(.has-right) .app-input{padding-right:26px}}.app-input-container.has-valid.has-right .app-input{padding-right:6px;padding-left:26px}.app-input-container.has-valid.has-text:not(.has-dropdown):not(.in-table),.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.in-table),.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.in-table){background-color:var(--color-surface-positive)}.app-input-container.has-valid.has-text:not(.has-dropdown).hovered,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown).hovered,.app-input-container.has-valid.has-multiple-dropdown.has-text.hovered{background-color:var(--color-surface-positive-hover)}.app-input-container.has-valid.has-text:not(.has-dropdown).hovered .button-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown).hovered .button-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text.hovered .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-valid.has-text:not(.has-dropdown).hovered .bg-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown).hovered .bg-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text.hovered .bg-icon{background-color:var(--color-icon-positive);color:var(--color-surface-positive-hover)}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):hover,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):hover,.app-input-container.has-valid.has-multiple-dropdown.has-text:hover{background-color:var(--color-surface-positive-hover)}.app-input-container.has-valid.has-text:not(.has-dropdown):hover .button-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):hover .button-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:hover .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-valid.has-text:not(.has-dropdown):hover .bg-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):hover .bg-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:hover .bg-icon{background-color:var(--color-icon-positive);color:var(--color-surface-positive-hover)}}.app-input-container.has-valid.has-text:not(.has-dropdown):has(.app-input:focus-visible),.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):has(.app-input:focus-visible),.app-input-container.has-valid.has-multiple-dropdown.has-text:has(.app-input:focus-visible){background-color:var(--color-surface-positive-focus);color:var(--color-text-inverse)}.app-input-container.has-valid.has-text:not(.has-dropdown):has(.app-input:focus-visible) .button-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):has(.app-input:focus-visible) .button-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:has(.app-input:focus-visible) .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-valid.has-text:not(.has-dropdown):has(.app-input:focus-visible) .bg-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):has(.app-input:focus-visible) .bg-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:has(.app-input:focus-visible) .bg-icon{background-color:var(--color-icon-inverse);color:var(--color-surface-positive-focus)}.app-input-container.has-valid.has-text:not(.has-dropdown):has(.app-input:not(:focus-visible)).app-input-container:not(:hover) .positive-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):has(.app-input:not(:focus-visible)).app-input-container:not(:hover) .positive-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:has(.app-input:not(:focus-visible)).app-input-container:not(:hover) .positive-icon{opacity:1}.app-input-container.has-valid.has-text:not(.has-dropdown) .app-input::selection,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .app-input::selection,.app-input-container.has-valid.has-multiple-dropdown.has-text .app-input::selection{background-color:#ffffff4d}.app-input-container.has-valid.has-text:not(.has-dropdown) .icon-container .separator,.app-input-container.has-valid.has-text:not(.has-dropdown) .dropdown-icon-container .separator,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .icon-container .separator,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .dropdown-icon-container .separator,.app-input-container.has-valid.has-multiple-dropdown.has-text .icon-container .separator,.app-input-container.has-valid.has-multiple-dropdown.has-text .dropdown-icon-container .separator{background-color:var(--color-icon-positive)}.app-input-container.has-valid.has-text:not(.has-dropdown) .icon-container .icon,.app-input-container.has-valid.has-text:not(.has-dropdown) .icon-container .icon-sm,.app-input-container.has-valid.has-text:not(.has-dropdown) .dropdown-icon-container .icon,.app-input-container.has-valid.has-text:not(.has-dropdown) .dropdown-icon-container .icon-sm,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .icon-container .icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .icon-container .icon-sm,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .dropdown-icon-container .icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .dropdown-icon-container .icon-sm,.app-input-container.has-valid.has-multiple-dropdown.has-text .icon-container .icon,.app-input-container.has-valid.has-multiple-dropdown.has-text .icon-container .icon-sm,.app-input-container.has-valid.has-multiple-dropdown.has-text .dropdown-icon-container .icon,.app-input-container.has-valid.has-multiple-dropdown.has-text .dropdown-icon-container .icon-sm{color:var(--color-icon-positive)}.app-input-container.has-valid.has-text:not(.has-dropdown) .icon-container .password-key,.app-input-container.has-valid.has-text:not(.has-dropdown) .dropdown-icon-container .password-key,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .icon-container .password-key,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .dropdown-icon-container .password-key,.app-input-container.has-valid.has-multiple-dropdown.has-text .icon-container .password-key,.app-input-container.has-valid.has-multiple-dropdown.has-text .dropdown-icon-container .password-key{opacity:0;pointer-events:none}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .bg-icon:hover,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .bg-icon:hover,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .bg-icon:hover{background-color:#0b49d1!important}}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .dropdown-icon-container:hover .dropdown-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .dropdown-icon-container:hover .dropdown-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .dropdown-icon-container:hover .dropdown-icon{color:#0b49d1!important}}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .hover-icon:hover,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .hover-icon:hover,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .hover-icon:hover{color:#0b49d1!important}}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):has(.app-input:focus-visible) .bg-icon:hover,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):has(.app-input:focus-visible) .bg-icon:hover,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):has(.app-input:focus-visible) .bg-icon:hover{background-color:#fff!important}}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon{color:#fff!important}}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):has(.app-input:focus-visible) .hover-icon:hover,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):has(.app-input:focus-visible) .hover-icon:hover,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):has(.app-input:focus-visible) .hover-icon:hover{color:#fff!important}}.in-table,.in-table.has-error,.in-table.has-valid.has-text{background-color:transparent}.in-table.has-error:not(:hover).in-table:not(.app-input-container:has(.app-input:focus-visible)) .app-input{color:var(--color-text-negative)}.in-table.has-error:not(:hover).in-table:not(.app-input-container:has(.app-input:focus-visible)):not(.static-placeholder) .app-input-label{color:var(--color-text-negative)}.in-table .dropdown-icon-container{opacity:0}@media(hover:hover){.in-table:hover .dropdown-icon-container{opacity:1}}.in-table:has(.app-input:focus-visible) .dropdown-icon-container{opacity:1}.app-input-icon{position:absolute;right:4px;top:4px;pointer-events:none;transition:color .1s cubic-bezier(.46,.03,.51,.95),background-color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95)}.button-icon{opacity:0;pointer-events:none}@media(hover:hover){.button-icon:hover{cursor:pointer}}.bg-icon{background-color:var(--color-icon-neutral);color:var(--color-surface-neutral);border-radius:1px;height:18px;width:18px;padding:0;display:grid;place-items:center;transition:background-color .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95),transform .1s cubic-bezier(.46,.03,.51,.95);transform-box:border-box;transform-origin:center;will-change:transform}.bg-icon svg{transition:transform .1s cubic-bezier(.46,.03,.51,.95)}@media(hover:hover){.bg-icon:hover{transform:scale(1.2222222222)}.bg-icon:hover svg{transform:scale(.8181818182)}}.bg-icon:active{transform:scale(1)}.round-icon{background-color:#919191;color:#2f2f2f;border-radius:50%;height:18px;width:18px;padding:0;display:grid;place-items:center;transition:background-color .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95)}.positive-icon{color:var(--color-icon-positive);height:18px;width:18px;display:grid;place-items:center;opacity:0}.warning-icon{color:var(--color-icon-negative);height:18px;width:18px;display:grid;place-items:center;opacity:0}.text-color-positive:not(:hover):not(:has(.app-input:focus-visible)) .app-input{color:#3b73ed}.is-plan.has-selected .app-input,.is-plan.has-selected .dropdown-selected-content,.is-plan.has-selected .selected-text{font-weight:700}.is-plan.has-selected:not(:has(.app-input:focus-visible)) .app-input,.is-plan.has-selected:not(:has(.app-input:focus-visible)) .dropdown-selected-content,.is-plan.has-selected:not(:has(.app-input:focus-visible)) .selected-text{color:#3b73ed}@media(hover:hover){.is-plan.has-selected:not(:has(.app-input:focus-visible)):hover .app-input,.is-plan.has-selected:not(:has(.app-input:focus-visible)):hover .dropdown-selected-content,.is-plan.has-selected:not(:has(.app-input:focus-visible)):hover .selected-text{color:#0b49d1}}.floating-error .app-input-error{opacity:0!important}.static-error .app-input-error{pointer-events:none!important;transform:translateY(calc(-100% - 4px))!important;transition:margin .1s ease-in-out,opacity .1s ease-in-out}.static-error.has-icon .app-input-error{margin-right:26px!important}.static-error:has(.app-input:not(:focus-visible)) .app-input-error{opacity:1}.static-error.has-text .app-input-error{opacity:0!important}.static-placeholder .app-input-label{position:relative;white-space:nowrap;font-size:11px;font-weight:600}.static-placeholder .dropdown-selected{overflow:hidden;display:flex!important;justify-content:left!important}.static-placeholder .dropdown-selected .selected-label-hidden{width:max-content;font-size:11px;font-weight:600;opacity:0;-webkit-user-select:none;user-select:none;pointer-events:none}.static-placeholder .dropdown-selected .selected-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;display:inline-block}.static-placeholder .app-input{padding-left:0!important}.static-placeholder.has-dropdown .cancel-button{display:none}.static-placeholder.has-dropdown .dropdown-icon-container .dropdown-icon{opacity:0;pointer-events:none}.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):has(.app-input:focus-visible) .icon-container .icon,.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):has(.app-input:focus-visible) .icon-container .icon-sm{opacity:0}.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):has(.app-input:focus-visible) .dropdown-icon-container{z-index:5;pointer-events:auto;cursor:pointer}.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):has(.app-input:focus-visible) .dropdown-icon-container .dropdown-icon{opacity:1!important}@media(hover:hover){.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):hover .icon-container .icon,.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):hover .icon-container .icon-sm{opacity:0}.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):hover .dropdown-icon-container{z-index:5;pointer-events:auto;cursor:pointer}.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):hover .dropdown-icon-container .dropdown-icon{opacity:1!important}}.static-placeholder.has-dropdown .dropdown-icon-container{right:4px!important;left:auto!important}.app-input-container.has-icon:has(.app-input:focus-visible) .icon-container .icon,.app-input-container.has-icon:has(.app-input:focus-visible) .icon-container .icon-sm,.app-input-container.has-icon:has(.app-input:focus-visible) .dropdown-icon-container .icon,.app-input-container.has-icon:has(.app-input:focus-visible) .dropdown-icon-container .icon-sm,.app-input-container.has-password:has(.app-input:focus-visible) .icon-container .icon,.app-input-container.has-password:has(.app-input:focus-visible) .icon-container .icon-sm,.app-input-container.has-password:has(.app-input:focus-visible) .dropdown-icon-container .icon,.app-input-container.has-password:has(.app-input:focus-visible) .dropdown-icon-container .icon-sm,.app-input-container.has-dropdown:has(.app-input:focus-visible) .icon-container .icon,.app-input-container.has-dropdown:has(.app-input:focus-visible) .icon-container .icon-sm,.app-input-container.has-dropdown:has(.app-input:focus-visible) .dropdown-icon-container .icon,.app-input-container.has-dropdown:has(.app-input:focus-visible) .dropdown-icon-container .icon-sm{color:var(--color-icon-inverse)!important}.app-input-container.has-icon.colored-icon .icon-container .icon,.app-input-container.has-icon.colored-icon .icon-container .icon-sm,.app-input-container.has-password.colored-icon .icon-container .icon,.app-input-container.has-password.colored-icon .icon-container .icon-sm,.app-input-container.has-dropdown.colored-icon .icon-container .icon,.app-input-container.has-dropdown.colored-icon .icon-container .icon-sm{color:var(--icon-color)}.app-input-container.has-icon.is-empty:has(.app-input:disabled) .icon-container .icon,.app-input-container.has-icon.is-empty:has(.app-input:disabled) .icon-container .icon-sm,.app-input-container.has-icon.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon,.app-input-container.has-icon.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon-sm,.app-input-container.has-password.is-empty:has(.app-input:disabled) .icon-container .icon,.app-input-container.has-password.is-empty:has(.app-input:disabled) .icon-container .icon-sm,.app-input-container.has-password.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon,.app-input-container.has-password.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon-sm,.app-input-container.has-dropdown.is-empty:has(.app-input:disabled) .icon-container .icon,.app-input-container.has-dropdown.is-empty:has(.app-input:disabled) .icon-container .icon-sm,.app-input-container.has-dropdown.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon,.app-input-container.has-dropdown.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon-sm{color:var(--color-icon-disable)!important}.app-input-container.has-icon .positive-icon,.app-input-container.has-icon .warning-icon,.app-input-container.has-password .positive-icon,.app-input-container.has-password .warning-icon,.app-input-container.has-dropdown .positive-icon,.app-input-container.has-dropdown .warning-icon{display:none!important}.app-input-container.has-icon .icon,.app-input-container.has-icon .icon-sm,.app-input-container.has-password .icon,.app-input-container.has-password .icon-sm,.app-input-container.has-dropdown .icon,.app-input-container.has-dropdown .icon-sm{height:18px;width:18px;display:grid;place-items:center;color:var(--color-icon-neutral);transition:color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95);opacity:1}.app-input-container.has-icon:has(.app-input:focus-visible):not(.static-placeholder) .dropdown-selected,.app-input-container.has-password:has(.app-input:focus-visible):not(.static-placeholder) .dropdown-selected,.app-input-container.has-dropdown:has(.app-input:focus-visible):not(.static-placeholder) .dropdown-selected{width:calc(100% - 48px)!important}@media(hover:hover){.app-input-container.has-icon:hover:not(:has(.app-input:disabled)):not(.static-placeholder) .dropdown-selected,.app-input-container.has-password:hover:not(:has(.app-input:disabled)):not(.static-placeholder) .dropdown-selected,.app-input-container.has-dropdown:hover:not(:has(.app-input:disabled)):not(.static-placeholder) .dropdown-selected{width:calc(100% - 48px)!important}}.icon-sm{height:14px;width:14px}.app-input-container.has-icon .icon-container,.app-input-container.has-password .icon-container{height:26px;display:flex;justify-items:center;align-items:center;gap:4px;padding:.25rem 0 .25rem 6px}@media(hover:hover){.app-input-container.has-icon .icon-container:hover,.app-input-container.has-password .icon-container:hover{cursor:text}}.app-input-container.has-icon .subcontent,.app-input-container.has-password .subcontent{left:32px}.app-input-container.has-icon .app-input-label,.app-input-container.has-password .app-input-label{left:27px}.app-input-container.has-icon .app-input,.app-input-container.has-password .app-input{padding-left:4px}.separator{height:14px;width:1px;border-radius:2px;background-color:var(--color-icon-neutral);transition:background-color .1s cubic-bezier(.46,.03,.51,.95);opacity:40%}.has-password .password-icons{display:grid;place-items:center;position:relative;height:18px;width:18px}.has-password .password-icons .icon,.has-password .password-icons .icon-sm{position:absolute;opacity:0}.has-password.is-empty:has(.app-input:not(:focus-visible)) .password-key{opacity:1!important}.has-password.is-empty:has(.app-input:not(:focus-visible)) .password-icons{pointer-events:none}.has-password:has(.app-input:disabled) .password-icons{pointer-events:none}.has-password.has-text .password-hidden,.has-password:has(.app-input:focus-visible) .password-hidden{opacity:1!important}@media(hover:hover){.has-password.has-text .password-hidden:hover,.has-password:has(.app-input:focus-visible) .password-hidden:hover{cursor:pointer}}.has-visible.has-text .password-shown,.has-visible:has(.app-input:focus-visible) .password-shown{opacity:1!important}@media(hover:hover){.has-visible.has-text .password-shown:hover,.has-visible:has(.app-input:focus-visible) .password-shown:hover{cursor:pointer}}.has-visible.has-text .password-hidden,.has-visible:has(.app-input:focus-visible) .password-hidden{opacity:0!important;pointer-events:none}.has-number .number-container{position:relative;display:flex;justify-content:center;align-items:center;right:4px;pointer-events:none}.has-number .number-buttons{display:flex;gap:4px;position:absolute;right:0;justify-content:center;align-items:center;opacity:0;transition:opacity .1s cubic-bezier(.46,.03,.51,.95);pointer-events:none}.has-number .plus-icon,.has-number .minus-icon{cursor:pointer;pointer-events:none}.has-number:has(.app-input:focus-visible){cursor:text}.has-number:has(.app-input:focus-visible) .number-buttons{opacity:1}.has-number:has(.app-input:focus-visible) .plus-icon{pointer-events:auto}.has-number:has(.app-input:focus-visible) .minus-icon{pointer-events:auto}.has-number:has(.app-input:focus-visible) .button-icon{opacity:0!important;pointer-events:none!important}.has-number:has(.app-input:focus-visible) .number-container{width:60px}.has-number:has(.app-input:focus-visible) .subcontent{right:52px!important}.has-number:has(.app-input:focus-visible).has-text .subcontent{right:52px!important}.colored-icon .icon,.colored-icon .icon-sm{color:var(--icon-color)!important}.dropdown-anchor{position:absolute;width:100%;-webkit-user-select:none;user-select:none;pointer-events:none;opacity:0}.dropdown-infinite-scroll-item{width:100%;-webkit-user-select:none;user-select:none;pointer-events:none;opacity:0;height:0}.dropdown-menu{min-width:0px!important;width:100%;border:0;margin-top:4px;top:30px;height:var(--unfiltered-height);min-height:var(--unfiltered-height);padding:0!important;overflow:hidden;border-radius:0!important;background:transparent!important}.dropdown-menu.has-stroke .dropdown-menu-content{outline:1px solid #6c6c6c;outline-offset:-1px}.dropdown-menu .dropdown-menu-content{position:absolute;width:100%;background-color:#2f2f2f;border-radius:3px;padding:4px 0 4px 4px;max-height:244px;z-index:1100!important;overflow-y:scroll;margin-top:auto!important;scroll-padding:6px 0}.dropdown-menu .dropdown-menu-content::-webkit-scrollbar{background-color:#2f2f2f;border-radius:0 3px 3px 0;width:4px}.dropdown-menu .dropdown-menu-content::-webkit-scrollbar-thumb{width:4px;background:#2f2f2f;border-left:2px solid #919191;background-clip:padding-box;border-radius:1px 3px 3px 1px}@supports (-moz-appearance: none){.dropdown-menu .dropdown-menu-content{padding-right:4px;scrollbar-width:4px;scrollbar-color:#919191 transparent;scrollbar-gutter:stable!important}@media(hover:hover){.dropdown-menu .dropdown-menu-content:hover{scrollbar-color:#919191 transparent;scrollbar-width:4px!important;scrollbar-gutter:stable!important}}}@-moz-document url-prefix(){.dropdown-menu .dropdown-menu-content{overflow:-moz-scrollbars-vertical;scrollbar-width:4px;scrollbar-color:#919191 transparent}}.option-icon{color:#6c6c6c;transition:color .1s cubic-bezier(.46,.03,.51,.95)}.option-icon.full-size{width:max-content;min-width:100%;height:18px!important;min-height:18px;flex-shrink:0;overflow:hidden}.option-icon.full-size svg{height:18px;width:max-content}.cai-color{color:var(--color)!important;transition:color .1s cubic-bezier(.46,.03,.51,.95)}@media(hover:hover){.color-item:hover .cai-color{color:var(--hover-color)!important}}.dropdown-item{color:#fff;font-weight:400;font-size:14px;line-height:18px;height:26px;padding:4px;width:100%;scroll-margin:6px 0;outline:1px solid transparent;outline-offset:-1px;display:flex;align-items:center;justify-content:left;gap:4px;background-color:#2f2f2f;transition:background-color .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95),outline .1s cubic-bezier(.46,.03,.51,.95);border-radius:2px;position:relative}.dropdown-item.focused{outline:1px solid #6c6c6c!important}.dropdown-item.focused .end-item-base{opacity:0}.dropdown-item.focused .end-item-hover{opacity:1}.dropdown-item.focused .full-icon{color:#ffffffb2}.dropdown-item.focused .truck-trailer-option{opacity:1}.dropdown-item .icon,.dropdown-item .icon-sm{color:#919191}.dropdown-item .dropdown-content-with-icon{max-width:calc(100% - 22px);overflow-x:hidden;word-break:break-all;text-overflow:ellipsis;white-space:nowrap}.dropdown-item .dropdown-content-hazardous{max-width:calc(100% - 40px);overflow-x:hidden;word-break:break-all;text-overflow:ellipsis;white-space:nowrap}.dropdown-item .dropdown-content{max-width:70%;overflow-x:hidden;word-break:break-all;text-overflow:ellipsis;white-space:nowrap}@media(hover:hover){.dropdown-item:hover:not(.no-hover){background-color:#424242}.dropdown-item:hover:not(.no-hover) .end-item-base{opacity:0}.dropdown-item:hover:not(.no-hover) .end-item-hover{opacity:1}.dropdown-item:hover:not(.no-hover) .full-icon{color:#ffffffb2}.dropdown-item:hover:not(.no-hover) .truck-trailer-option{opacity:1}}.dropdown-item.no-hover{cursor:default;pointer-events:none}.dropdown-item:focus-visible{background-color:#424242;border:0;outline:none}.dropdown-item:not(:first-child){margin-top:4px}.dropdown-item.banned{color:#919191;cursor:default}@media(hover:hover){.dropdown-item.banned:hover{color:#919191;background-color:#2f2f2f}.dropdown-item.banned:hover .end-item-base{opacity:0}.dropdown-item.banned:hover .end-item-hover{opacity:1}}.dropdown-item.dnu .round-icon{background-color:#e66767}.dropdown-item.selected .dispatch-load-count,.dropdown-item.selected .unassigned-ltl,.dropdown-item.selected .unassigned-ltl .icon,.dropdown-item.selected .unassigned-ltl .icon-sm{color:#92b1f5}.dropdown-item:not(:hover):not(.focused):not(.selected) .truck-icon{color:#919191}.dropdown-item:not(:hover):not(.focused):not(.selected) .trailer-icon{color:#919191}@media(hover:hover){.dropdown-avatar:hover{z-index:20}}.no-results{color:#919191;font-weight:700;cursor:default;pointer-events:none}.add-new{color:#92b1f5!important;font-weight:700;font-size:11px}.add-new .dropdown-item-icon{opacity:1}@media(hover:hover){.add-new:hover{background-color:#3b73ed66!important;color:#fff!important}}.selected{font-weight:700}.selected .dropdown-item-icon{opacity:1}.selected .dropdown-item-count{color:#fff;background-color:#3b73ed}.selected .full-icon{color:#fff}.selected .end-item-base,.selected .end-item-hover{font-weight:700;color:#92b1f5}.selected .end-item-base .icon,.selected .end-item-base .icon-sm,.selected .end-item-hover .icon,.selected .end-item-hover .icon-sm{color:#92b1f5}.dropdown-item-icon{opacity:0;color:#92b1f5;width:14px;height:14px;margin-left:auto}.dropdown-item-icon.no-margin{margin-left:0}.dropdown-item-count{position:absolute;right:6px;top:50%;transform:translateY(-50%);padding:2px 5px;border-radius:10px;background-color:#424242;color:#ffffffb2;min-width:18px;line-height:14px;font-weight:600;font-size:11px;text-align:center}.fraud-icon{color:#fab15c!important;height:18px;width:18px}.dropdown-icon-container{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:18px;height:18px;display:grid;place-items:center;transition:opacity .1s cubic-bezier(.46,.03,.51,.95)}.dropdown-icon-container.open .dropdown-icon{transform:rotateX(180deg)}.dropdown-icon{transition:transform .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95)!important;transform:rotateX(0);cursor:pointer}.has-dropdown .app-input-icon{right:26px}.has-dropdown:has(.app-input:focus-visible) .subcontent{right:26px!important}.has-dropdown:has(.app-input:focus-visible).has-text .subcontent,.has-dropdown:has(.app-input:focus-visible).has-selected .subcontent{right:48px!important}.has-dropdown:has(.app-input:focus-visible):not(.static-placeholder):not(.is-adding) .app-input{padding-right:48px!important}@media(hover:hover){.has-dropdown:hover:not(.static-placeholder):not(.is-adding) .app-input{padding-right:48px!important}}.has-right .app-input{text-align:right}@media(pointer:coarse){.has-right .app-input{transform-origin:right center}}.has-right .positive-icon,.has-right .app-input-icon{left:4px;right:auto}.has-right .cancel-button{z-index:1}.has-right.has-number .plus-button-container{order:2}.has-right.has-number .minus-button-container{order:1}.has-right.static-placeholder .app-input-icon{right:4px!important;left:auto!important;opacity:0!important}.has-right.static-placeholder:has(.app-input:focus-visible) .cancel-button{opacity:0!important;pointer-events:none!important}.has-right.static-placeholder.removable .cancel-button .bg-icon{background-color:transparent!important}@media(hover:hover){.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-valid.has-text .cancel-button .bg-icon{color:var(--color-icon-positive)!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-valid.has-text .cancel-button .bg-icon:hover{color:#c20c0c!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-valid.has-text:has(.app-input:focus-visible) .cancel-button .bg-icon{color:var(--color-icon-inverse)!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-valid.has-text:has(.app-input:focus-visible) .cancel-button .bg-icon:hover{color:#fff!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)):not(.has-text) .cancel-button .bg-icon{color:var(--color-icon-neutral)!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)):not(.has-text) .cancel-button .bg-icon:hover{color:#c20c0c!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)):not(.has-text):has(.app-input:focus-visible) .cancel-button .bg-icon{color:var(--color-icon-inverse)!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)):not(.has-text):has(.app-input:focus-visible) .cancel-button .bg-icon:hover{color:#fff!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-error .cancel-button .bg-icon{color:var(--color-icon-negative)!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-error .cancel-button .bg-icon:hover{color:#c20c0c!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)) .cancel-button{opacity:1!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)) .cancel-button .bg-icon{opacity:1!important;pointer-events:auto!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)) .icon-container .icon,.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)) .icon-container .icon-sm{opacity:0!important}}@media(hover:hover){.has-right.static-placeholder:hover:not(:has(.app-input:focus-visible)):not(:has(.app-input:disabled)).has-text .cancel-button{opacity:1!important}}.has-right .app-input{order:1}.has-right.has-subcontent .app-input{flex:1;min-width:0;word-break:none}.has-right .dropdown-selected{margin-left:0!important;text-align:right!important;right:0!important;left:0!important;justify-content:flex-end!important;width:100%!important}.has-right .subcontent{position:relative!important;order:1;display:grid;place-items:center;padding-right:4px;height:unset!important;transform:translateY(0)!important;left:0!important;right:unset!important}.has-right .subcontent .subcontent-hide{display:none!important}.has-right.has-text .subcontent{left:0!important;right:unset!important}.has-right:has(.app-input:focus-visible) .subcontent{left:0!important;right:unset!important}.has-right.has-icon .subcontent,.has-right.has-password .subcontent{padding-right:0!important;padding-left:4px}.has-right.has-icon .dropdown-selected,.has-right.has-password .dropdown-selected{width:calc(100% - 24px)!important}.has-right.has-icon .app-input,.has-right.has-password .app-input{padding-right:0!important}.has-right.has-icon .app-input-label,.has-right.has-password .app-input-label{left:0!important}.has-right.has-icon.fade-placeholder .app-input-label,.has-right.has-password.fade-placeholder .app-input-label{left:auto!important;right:24px!important}.has-right.has-icon .icon-container,.has-right.has-password .icon-container{width:30px;padding-left:4px}.has-right.has-icon .icon-container .icon,.has-right.has-icon .icon-container .icon-sm,.has-right.has-password .icon-container .icon,.has-right.has-password .icon-container .icon-sm{order:2}.has-right.has-dropdown .app-input-icon{left:26px}.has-right.has-dropdown .dropdown-icon-container{left:4px}.has-right .warning-icon{display:none!important}.has-right.has-number .separator{order:3}.has-right.has-number .number-buttons{left:0;right:unset}.has-right.has-number .number-container{left:4px;right:unset}.has-right.has-number.app-input-container:has(.app-input:focus-visible) .app-input{padding-left:4px}.has-right .icon-container{order:2;margin-right:4px}.has-right .icon-container .password-icons{order:2}.has-right.fade-placeholder .app-input-label{right:0!important;left:auto!important}.has-right.fade-placeholder:has(.app-input:required) .app-input-name:after{content:none!important}.has-right.fade-placeholder:has(.app-input:required) .app-input-name:before{content:\"* \";color:var(--color-text-negative)}@media(hover:hover){.removable:has(.cancel-button:hover).in-table{background-color:transparent!important}.removable:has(.cancel-button:hover).in-table .separator{background-color:var(--color-icon-negative)!important}}@media(hover:hover){.removable:has(.cancel-button:hover):not(.in-table){background-color:var(--color-surface-negative-hover)!important}.removable:has(.cancel-button:hover):not(.in-table) .separator{background-color:var(--color-icon-negative)!important}}@media(hover:hover){.removable:has(.cancel-button:hover):has(.app-input:focus-visible){background-color:var(--color-surface-negative-focus)!important}.removable:has(.cancel-button:hover):has(.app-input:focus-visible) .separator{background-color:var(--color-icon-inverse)!important}}.no-clear .cancel-button{display:none!important}.is-adding{padding-right:20px}.is-adding .dropdown-icon{opacity:0!important}.is-adding .accept-button{pointer-events:none;opacity:0!important}@media(hover:hover){.is-adding:not(.removable):has(.app-input:focus-visible) .bg-icon:hover{background-color:#fff!important}}@media(hover:hover){.is-adding:not(.removable):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon{color:#fff!important}}@media(hover:hover){.is-adding:not(.removable):has(.app-input:focus-visible) .hover-icon:hover{color:#fff!important}}.is-adding:has(.app-input:focus-visible){padding-right:48px!important}@media(hover:hover){.is-adding:hover{padding-right:48px!important}}.is-adding.has-right{padding-left:26px}.is-adding.has-right.has-right:has(.app-input:focus-visible){padding-left:40px}@media(hover:hover){.is-adding.has-right.has-right:hover{padding-left:40px}}.is-adding .app-input-icon{right:4px}@media(hover:hover){.is-adding.has-text:hover .button-icon{opacity:1;pointer-events:auto!important}.is-adding.has-text:hover .accept-button{pointer-events:auto;opacity:1!important}}.is-adding.has-text:has(.app-input:focus-visible) .button-icon{opacity:1;pointer-events:auto!important}.is-adding.has-text:has(.app-input:focus-visible) .accept-button{pointer-events:auto;opacity:1!important}.is-adding .cancel-button{opacity:1!important;pointer-events:auto}.is-adding .dropdown-icon-container{pointer-events:none}.is-adding .accept-button{right:26px;pointer-events:auto}.dropdown-selected{-webkit-user-select:none;user-select:none;position:absolute;top:50%;transform:translateY(-50%);left:0;width:calc(100% - 22px);pointer-events:none;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;word-break:break-all;padding:.25rem 6px;font-size:14px;line-height:18px;font-weight:400;border:0;outline:none;margin-top:auto;background-color:transparent;transition:color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95),width .1s ease-in-out;color:var(--color-text);display:flex;gap:4px}.dropdown-selected .dropdown-selected-content{overflow:hidden;-webkit-user-select:none;user-select:none;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}.dropdown-selected .dropdown-selected-hazardous{max-width:calc(100% - 22px)}p.dropdown-selected{-webkit-user-select:none;user-select:none;display:block}.app-input-container:has(.app-input:focus-visible) .dropdown-selected{color:#fff;opacity:.7}.app-input-container:has(.app-input:focus-visible) .dropdown-selected .option-icon{color:#fff!important}.has-icon .positive-icon,.has-icon .warning-icon{display:none}.has-icon .dropdown-selected{left:27px;width:calc(100% - 49px)}@media(hover:hover){.has-icon:hover .dropdown-selected{width:calc(100% - 71px)}}.has-icon.app-input-container:has(.app-input:focus-visible) .dropdown-selected{width:calc(100% - 71px)}.hazard-icon{height:18px;width:max-content}.has-dispatch .app-input-label{transform:translateY(-20px);font-weight:600;font-size:11px;color:var(--color-text-heading)!important}.dispatch-load-count{color:#dadada;font-weight:700}.dispatch-separator{color:#919191;font-weight:400}.dispatch-status{font-family:Montserrat;font-weight:700;font-style:Bold;font-size:11px;line-height:14px;letter-spacing:0%;text-transform:uppercase;color:#ffffffb2;border-radius:2px;padding:2px 4px;display:flex;justify-content:center;align-items:center;gap:4px}.dispatch-status.status-available{background-color:#50ac2533}.dispatch-status.status-dispatched{background-color:#3b73ed33}.dispatch-status.status-arrivedpickup,.dispatch-status.status-checkedinpickup,.dispatch-status.status-checkedin,.dispatch-status.status-loading,.dispatch-status.status-loaded{background-color:#259f9433}.dispatch-status.status-arriveddelivery,.dispatch-status.status-checkedindelivery,.dispatch-status.status-offloading,.dispatch-status.status-offloaded,.dispatch-status.status-empty{background-color:#ff704333}.dispatch-status.status-canceled{background-color:#df3c3c33}.dispatch-status.status-off,.dispatch-status.status-deadheading,.dispatch-status.status-break,.dispatch-status.status-split{background-color:#91919133}.dispatch-status.status-towing{background-color:#9e47ec33}.dispatch-status.status-repair,.dispatch-status.status-dispatchedrepair,.dispatch-status.status-loadedrepair{background-color:#865e3a33}.dispatch-status .status-block{border-radius:1px;background-color:#aaa;padding-left:2px;padding-right:2px;font-family:Montserrat;font-weight:700;font-style:Bold;font-size:11px;line-height:12px;text-align:center;color:#2f2f2f;min-width:12px;height:12px}.dispatch-status .status-block.blue{background-color:#6692f1}.dispatch-status .status-block.green{background-color:#56b4ac}.dispatch-status .status-block.orange{background-color:#ff906d}.has-ftl-dispatch,.has-dispatch{min-width:600px}.has-ftl-dispatch:has(.app-input:focus-visible) .dropdown-selected .dispatch-icon,.has-ftl-dispatch:has(.app-input:focus-visible) .dropdown-selected .trailer-icon,.has-ftl-dispatch:has(.app-input:focus-visible) .dropdown-selected .truck-icon,.has-dispatch:has(.app-input:focus-visible) .dropdown-selected .dispatch-icon,.has-dispatch:has(.app-input:focus-visible) .dropdown-selected .trailer-icon,.has-dispatch:has(.app-input:focus-visible) .dropdown-selected .truck-icon{color:#fff}.dropdown-subitem{display:flex;justify-content:left;align-items:center;gap:4px}.truck-item{width:128px}.trailer-item{width:138px}.truck-trailer-option{opacity:0;transition:opacity .1s cubic-bezier(.46,.03,.51,.95);margin-left:auto}.truck-trailer-icon-colors.ic_truck_semi-truck,.truck-trailer-icon-colors.ic_truck_semi-wSleeper{color:#92b1f5}.truck-trailer-icon-colors.ic_truck_box-truck,.truck-trailer-icon-colors.ic_truck_reefer,.truck-trailer-icon-colors.ic_truck_cargo-van{color:#fbc88b}.truck-trailer-icon-colors.ic_truck_cement,.truck-trailer-icon-colors.ic_truck_dump,.truck-trailer-icon-colors.ic_truck_garbage{color:#ed9292}.truck-trailer-icon-colors.ic_truck_tow-truck,.truck-trailer-icon-colors.ic_truck_car-hauler,.truck-trailer-icon-colors.ic_truck_spotter{color:#86c9c3}.truck-trailer-icon-colors.ic_trailer_flatbed,.truck-trailer-icon-colors.ic_trailer_low-boy,.truck-trailer-icon-colors.ic_trailer_step-deck{color:#92b1f5}.truck-trailer-icon-colors.ic_trailer_chassis,.truck-trailer-icon-colors.ic_trailer_container{color:#80d6f1}.truck-trailer-icon-colors.ic_trailer_conestoga,.truck-trailer-icon-colors.ic_trailer_side-kit{color:#8785e8}.truck-trailer-icon-colors.ic_trailer_dryvan,.truck-trailer-icon-colors.ic_trailer_reefer{color:#fbc88b}.truck-trailer-icon-colors.ic_trailer_end-dump,.truck-trailer-icon-colors.ic_trailer_bottom-dump,.truck-trailer-icon-colors.ic_trailer_hopper{color:#ed9292}.truck-trailer-icon-colors.ic_trailer_tanker,.truck-trailer-icon-colors.ic_trailer_tanker-pneumatic{color:#ed93bb}.truck-trailer-icon-colors.ic_trailer_carhauler,.truck-trailer-icon-colors.ic_trailer_carhauler-stinger{color:#86c9c3}.sub-label{margin-left:auto;margin-right:22px;opacity:0;transition:margin .1s ease-in-out,opacity .1s ease-in-out;color:#6c6c6c}.app-input-label:has(.sub-label),.app-input-label:has(.accident-state){width:100%}.has-selected .sub-label{opacity:1}.dispatch-icon,.trailer-icon,.truck-icon{color:#919191;transition:color .1s cubic-bezier(.46,.03,.51,.95)}.truck-icon,.trailer-icon{width:42px}.truck-number{width:80px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.trailer-number{width:90px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.driver-name{max-width:170px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.dropdown-subitem-end{margin-left:auto;position:relative;height:26px;width:auto;display:flex;justify-content:right;align-items:center;font-family:Montserrat;font-weight:400;font-size:11px;line-height:18px;letter-spacing:0%;text-align:right;vertical-align:bottom}.end-item-base{position:absolute;display:flex;justify-content:right;align-items:center;width:max-content;gap:4px;color:#919191;transition:color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95);text-align:right}.dispatch-ltl{font-family:Montserrat;font-weight:700;font-size:11px;line-height:18px;letter-spacing:0%;text-align:right}.unassigned-ltl{margin-left:auto;display:flex;justify-content:right;align-items:center;width:max-content;gap:4px;color:#919191;transition:color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95);font-family:Montserrat;font-weight:700;font-size:11px;line-height:18px;letter-spacing:0%;text-align:right}.end-item-hover{position:absolute;display:flex;justify-content:right;align-items:center;gap:4px;width:max-content;opacity:0;color:#919191;transition:color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95)}.selected-end-item{margin-left:auto;font-family:Montserrat;font-weight:400;font-size:11px;line-height:18px;letter-spacing:0%;text-align:right;display:flex;justify-content:right;align-items:center;gap:4px}.group-item{font-family:Montserrat;font-weight:700!important;font-size:11px!important;line-height:18px;letter-spacing:0%;vertical-align:middle;text-transform:uppercase;background-color:#2f2f2f;color:#aaa!important}.group-item:not(:first-child){border-top:1px solid #424242}.group-item .group-icon{margin-left:auto;transform:rotate(180deg);transition:transform .1s cubic-bezier(.46,.03,.51,.95)}.group-item.unfolded{color:#fff!important}.group-item.unfolded .group-icon{transform:rotate(0)}.counter{background-color:#424242;padding:1px 4px;border-radius:60px;font-family:Montserrat;font-weight:600;font-size:11px;min-width:18px;line-height:14px;letter-spacing:0%;text-align:center;vertical-align:middle;color:#ffffffb2;transition:color .1s cubic-bezier(.46,.03,.51,.95)}.password-requirement{padding:6px;background-color:#fffffff2!important;box-shadow:0 0 4px #0006;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);overflow-y:hidden}.password-requirement p{font-family:Montserrat;font-weight:600;font-size:11px;line-height:14px;letter-spacing:0%;vertical-align:middle;color:#6c6c6c;font-style:italic}.password-requirement .icon,.password-requirement .icon-sm{width:14px!important;height:14px!important}.password-requirement .icon.checkmark,.password-requirement .checkmark.icon-sm{color:#ccc}.password-requirement .icon.cancel,.password-requirement .cancel.icon-sm{color:#e66767}.password-requirement ul{list-style-type:none;margin:6px 0 0;padding:0}.password-requirement ul li{color:#424242;font-size:11px;font-style:italic;font-weight:500;line-height:14px;display:flex;gap:4px}.password-requirement ul li.valid{color:#919191!important}.password-requirement ul li:not(:first-child){margin-top:6px}@media(hover:hover){.has-end-item:not(:has(.app-input:disabled)):hover .dropdown-selected{width:calc(100% - 44px)}}.has-end-item:not(:has(.app-input:disabled)):has(.app-input:focus-visible) .dropdown-selected{width:calc(100% - 44px)}.progress-bar{width:24px;height:8px;border-radius:2px;position:relative;transition:background-color .1s cubic-bezier(.46,.03,.51,.95)}.progress-bar:after{content:\"\";position:absolute;top:0;width:var(--progress);height:100%;transition:background-color .1s cubic-bezier(.46,.03,.51,.95)}.progress-bar.low{background-color:#df3c3c33}.progress-bar.low:after{background-color:#e66767}.progress-bar.medium{background-color:#f89b2e33}.progress-bar.medium:after{background-color:#fab15c}.progress-bar.high{background-color:#56b4ac33}.progress-bar.high:after{background-color:#56b4ac}.progress-bar.disable{background-color:#91919133}.progress-bar.disable:after{display:none}.app-input-container:has(.app-input:focus-visible) .selected-end-item .progress-bar{background-color:#fff!important}.full-icon{color:#919191}.fuelcard-number{width:216px}.fuelcard-brand{width:132px}.owner-ein{width:118px}.accident-name,.accident-unit,.accident-dob,.accident-cdl-number,.accident-vin,.accident-plate{flex-shrink:0}.accident-name>p,.accident-unit>p{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.accident-name{width:218px}.accident-unit{width:170px}.accident-dob,.accident-cdl-number,.accident-vin,.accident-plate{text-align:right;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.accident-dob{width:134px}.accident-cdl-number{width:140px}.accident-vin{width:182px}.accident-plate{width:140px}.accident-state{margin-left:auto;justify-content:flex-end;text-align:right}.app-input-label .accident-state{margin-right:22px;white-space:nowrap;transition:margin .1s ease-in-out}.has-multiple-dropdown.has-text{border-top-left-radius:0!important;border-top-right-radius:0!important}.multiple-container{display:flex;flex-wrap:wrap;gap:4px;padding:4px;border-top-left-radius:2px;border-top-right-radius:2px;position:relative;transition:background-color .1s ease-in-out;background-color:#e9effd}.multiple-container.hovered{background-color:#bed0f9}.multiple-container.hovered .multiple-selected{background-color:#e9effd}.multiple-container.focused{background-color:#0b49d1}.multiple-container.focused .multiple-selected{background-color:#3b73ed;color:#fff}.multiple-selected{background-color:#bed0f9;color:#2f2f2f;transition:background-color .1s ease-in-out,color .1s ease-in-out;display:flex;align-items:center;justify-content:space-between;width:100%;cursor:pointer;padding:2px 4px;-webkit-user-select:none;user-select:none;font-family:Montserrat;font-size:14px;font-weight:400;line-height:18px;width:209px;height:22px;border-radius:1px}.multiple-selected p{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}@media(hover:hover){.multiple-selected:hover{color:#2f2f2f!important;background-color:#fff!important}.multiple-selected:hover .multiple-remove-button{opacity:1}}.multiple-selected .multiple-remove-button{opacity:0;background-color:#6692f1;color:#fff;width:14px;height:14px}.multiple-selected .multiple-remove-button .multiple-remove-icon{width:12px;height:12px}.multiple-label{color:#424242;-webkit-user-select:none;user-select:none;pointer-events:none;font-family:Montserrat;font-size:11px;font-style:normal;font-weight:600;position:absolute;top:0;left:6px;transform:translateY(-14px)}.dropdown-group{border-radius:2px;transition:background-color .1s cubic-bezier(.46,.03,.51,.95),max-height .1s cubic-bezier(.46,.03,.51,.95),height .1s ease-in-out;margin-top:4px;max-height:var(--max-height);height:var(--max-height);overflow:hidden}.dropdown-group.no-items{cursor:default;pointer-events:none}.dropdown-group .group-item{outline:none;color:#fff!important;font-weight:400!important;font-size:14px!important;display:flex;transition:font-weight .1s ease-in-out,background-color .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95);padding-left:6px;padding-right:6px}.dropdown-group .group-item.unfolded .counter{color:#fff}@media(hover:hover){.dropdown-group .group-item:hover .counter{color:#fff}}.dropdown-group .group-item.unfolded{font-weight:700!important}.dropdown-group .group-item .counter{margin-left:auto}.dropdown-group .group-item .group-icon{margin-left:0}.dropdown-group.active{background-color:#424242}@media(hover:hover){.dropdown-group.active .group-item:hover{background-color:#424242}}.dropdown-group.active .dropdown-item{background-color:#424242}@media(hover:hover){.dropdown-group:hover:not(.no-items){background-color:#424242}.dropdown-group:hover:not(.no-items) .group-item:hover{background-color:#424242}.dropdown-group:hover:not(.no-items) .dropdown-item{background-color:#424242}}.dropdown-group.active{padding:4px;padding-top:0!important}.dropdown-group.active .group-item{position:relative!important;padding-left:2px!important;padding-right:2px!important}@media(hover:hover){.dropdown-group .dropdown-item:not(.group-item):hover{background-color:#6c6c6c!important}}.fuel-stop-transaction-store{display:flex;gap:4px}.fuel-stop-transaction-store .fuel-stop-transaction-store-address{font-size:11px;color:#ccc;margin-left:auto}.fuel-stop-transaction-store .favorite-icon{color:#92b1f5;width:14px;height:14px}.fuel-stop-transaction-nostore{padding-left:2px;padding-right:2px}.hide-dropdown{opacity:0;pointer-events:none;transition:opacity .1s cubic-bezier(.46,.03,.51,.95)}.dropdown-menu:not(.hide-dropdown) .dropdown-menu-content{transition:max-height .2s cubic-bezier(.46,.03,.51,.95),opacity .2s cubic-bezier(.46,.03,.51,.95),height .1s ease-in-out;animation:dropdown-menu-opening .2s cubic-bezier(.46,.03,.51,.95)}.dropdown-menu:not(.hide-dropdown).animate-dropdown .dropdown-menu-content{max-height:var(--max-height);height:var(--max-height)}.closing:not(.hide-dropdown) .dropdown-menu-content{animation:dropdown-menu-closing .2s cubic-bezier(.46,.03,.51,.95);opacity:0;max-height:0}@keyframes dropdown-menu-opening{0%{max-height:0;opacity:0}to{max-height:244px;opacity:1}}@keyframes dropdown-menu-closing{0%{max-height:244px;opacity:1}to{max-height:0;opacity:0}}.app-input-container:has(.app-input:focus-visible).has-dropdown .loader.loading,.app-input-container:has(.app-input:focus-visible).has-text .loader.loading{opacity:1!important}.app-input-container:has(.app-input:focus-visible).has-dropdown.has-text .loader{transform:translate(-48px)}.loader{position:absolute;top:4px;right:0;transform:translate(-26px);pointer-events:none;z-index:1000;width:18px;height:18px;display:flex;align-items:center;justify-content:center;transition:opacity .1s ease-in-out,transform .1s ease-in-out;opacity:0}.loader-icon{width:14px;height:14px;animation:spin .8s ease-in-out infinite;transform-origin:center;display:flex;align-items:center;justify-content:center}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.size-22{height:22px}.size-22 .icon,.size-22 .icon-sm{height:14px!important;width:14px!important}.size-22 .bg-icon{height:14px!important;width:14px!important;padding:2px!important}.size-22 .icon-container{height:22px!important;padding-top:2px;padding-bottom:2px;padding-left:4px!important}.size-22 .app-input{padding-top:2px;padding-bottom:2px;padding-left:4px}@media(pointer:coarse){.size-22 .app-input{height:22px}}.size-22 .app-input-label{padding-top:2px;padding-bottom:2px;padding-left:4px}.size-22.has-icon .app-input-label{padding-left:0!important}.size-22 .app-input-icon{height:14px!important;width:14px!important}.size-22.has-text .app-input-label,.size-22:has(.app-input:focus-visible) .app-input-label{transform:translateY(-18px)}.size-22 .loader{top:2px;transform:translate(-22px)!important}.strikethrough .app-input,.strikethrough .dropdown-selected-content{text-decoration:line-through}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.split-option>p{max-width:calc(50% - 2px)}.split-option .dropdown-subitem-end{width:calc(50% - 2px)}.split-option .end-item-base,.split-option .end-item-hover{max-width:100%}.selected-end-item-truncate{max-width:50%}.truck-owner-unit{min-width:0}.truck-owner-unit .dropdown-content{max-width:none;min-width:0}.truck-owner-bullet{flex-shrink:0;color:#919191}\n"], dependencies: [{ kind: "directive", type:
4319
4368
  // Directives
4320
4369
  PasswordDirective, selector: "[appPassword]", inputs: ["appPassword", "visible", "account", "reveal", "appMask", "max"] }, { kind: "directive", type: NumberFormatDirective, selector: "[appNumberFormat]", inputs: ["appNumberFormat", "max", "isNumberFormattingDisabled", "disableDecimals", "prefix", "clampToMax"] }, { kind: "directive", type: MaskDirective, selector: "[appMask]", inputs: ["appMask", "reveal"] }, { kind: "directive", type: InfiniteScrollDirective, selector: "[caiInfiniteScroll]", inputs: ["scrollThreshold", "debounceTime"], outputs: ["scrolledToBottom"] }, { kind: "directive", type: IntersectionObserverDirective, selector: "[caiIntersectionObserver]", inputs: ["threshold", "rootMargin"], outputs: ["inView"] }, { kind: "ngmodule", type:
4321
4370
  // Bootstrap
@@ -4323,7 +4372,7 @@ class InputComponent {
4323
4372
  // Components
4324
4373
  SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "svgClass", "class", "viewBox", "svgAriaLabel", "onSVGLoaded", "svgStyle"] }, { kind: "component", type: AvatarComponent, selector: "cai-avatar", inputs: ["driver", "size", "rounded", "inverse", "customHoverSize", "hover"] }, { kind: "pipe", type:
4325
4374
  // Pipes
4326
- DatePipe, name: "date" }, { kind: "pipe", type: ErrorMessagePipe, name: "errorMessage" }, { kind: "pipe", type: CurrencyPipe, name: "currency" }, { kind: "pipe", type: HighlightSearchPipe, name: "highlightSearch" }, { kind: "pipe", type: RemapPmIconsPipe, name: "remapPmIcons" }, { kind: "pipe", type: ClearTooltipPipe, name: "clearTooltip" }, { kind: "pipe", type: BrokerProgressPipe, name: "brokerProgress" }, { kind: "pipe", type: InputClassPipe, name: "inputClass" }, { kind: "pipe", type: DispatchStatusPipe, name: "dispatchStatus" }, { kind: "pipe", type: DriverTypeLabelPipe, name: "driverTypeLabel" }] });
4375
+ DatePipe, name: "date" }, { kind: "pipe", type: ErrorMessagePipe, name: "errorMessage" }, { kind: "pipe", type: CurrencyPipe, name: "currency" }, { kind: "pipe", type: HighlightSearchPipe, name: "highlightSearch" }, { kind: "pipe", type: RemapPmIconsPipe, name: "remapPmIcons" }, { kind: "pipe", type: ClearTooltipPipe, name: "clearTooltip" }, { kind: "pipe", type: BrokerProgressPipe, name: "brokerProgress" }, { kind: "pipe", type: InputClassPipe, name: "inputClass" }, { kind: "pipe", type: DispatchStatusPipe, name: "dispatchStatus" }, { kind: "pipe", type: DriverTypeLabelPipe, name: "driverTypeLabel" }, { kind: "pipe", type: TruckOwnershipLabelPipe, name: "truckOwnershipLabel" }] });
4327
4376
  }
4328
4377
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.32", ngImport: i0, type: InputComponent, decorators: [{
4329
4378
  type: Component,
@@ -4339,6 +4388,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.32", ngImpo
4339
4388
  InputClassPipe,
4340
4389
  DispatchStatusPipe,
4341
4390
  DriverTypeLabelPipe,
4391
+ TruckOwnershipLabelPipe,
4342
4392
  // Directives
4343
4393
  PasswordDirective,
4344
4394
  NumberFormatDirective,
@@ -4352,7 +4402,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.32", ngImpo
4352
4402
  // Components
4353
4403
  SvgIconComponent,
4354
4404
  AvatarComponent,
4355
- ], template: "<!-- #region Variables -->\n@let valid =\n ngControl?.valid &&\n (ngControl?.touched || ngControl?.dirty) &&\n !isAdding() &&\n !isDisabled();\n@let invalid =\n ngControl?.invalid &&\n (ngControl?.touched || ngControl?.dirty) &&\n !isAdding() &&\n !isDisabled();\n@let subcontent =\n config().subcontent ||\n (config().dropdown === \"subcontent\" &&\n selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![config().optionLabel || \"label\"]);\n\n@let name = config().name;\n@let password = config().type === \"password\" || config().type === \"account\";\n\n@let optionLabel = this.config().optionLabel || \"label\";\n@let dropdownType = this.config().dropdown;\n\n@let focusedOptionIndex = keyboardNavigationState().singleIndex;\n@let groupedNavigationState = keyboardNavigationState().groupedNavigationState;\n\n@let tooltipClass =\n config().inverse\n ? \"tooltip input-tooltip tooltip-bg-white-700 tooltip-text-black-500\"\n : \"tooltip input-tooltip\";\n\n<!-- #region Multiple selection -->\n@if (config().dropdown === \"multiple\" && !!multipleSelectedOptions().length) {\n <div\n (pointerdown)=\"focus($event)\"\n (mouseenter)=\"toggleHovered(true)\"\n (mouseleave)=\"toggleHovered(false)\"\n class=\"multiple-container\"\n [class]=\"{\n focused: focused(),\n hovered: hovered(),\n }\"\n >\n <label class=\"multiple-label\">{{ name }}</label>\n\n @for (option of multipleSelectedOptions(); track $index) {\n <div class=\"multiple-selected\">\n <p>{{ cast(option, \"dropdownOption\")![optionLabel || \"label\"] }}</p>\n <button\n type=\"button\"\n class=\"\"\n (pointerdown)=\"handleOption(option, $event)\"\n [tabIndex]=\"-1\"\n ngbTooltip=\"Clear\"\n [placement]=\"'top'\"\n [tooltipClass]=\"tooltipClass\"\n [autoClose]=\"true\"\n #closeTooltip=\"ngbTooltip\"\n [container]=\"'body'\"\n >\n <svg-icon\n name=\"cai-cancel\"\n class=\"multiple-remove-button multiple-remove-icon bg-icon\"\n ></svg-icon>\n </button>\n </div>\n }\n </div>\n}\n<!-- #endregion -->\n\n@let hasFloatingError =\n invalid &&\n (config().errorBehavior === \"floating\" ||\n (!!config().inTable && config().placeholderBehavior !== \"static\"));\n\n<div\n class=\"app-input-container\"\n [class]=\"\n {\n config: config(),\n hideValidation: hideValidation(),\n isPasswordVisible: visible(),\n isInvalid: !!invalid || forceInvalidStyling(),\n isValid: !!valid && !forceInvalidStyling(),\n isHovered: hovered(),\n hasText: hasText(),\n isAdding: isAdding(),\n selectedOption: selectedOption(),\n } | inputClass\n \"\n ngbDropdown\n [autoClose]=\"false\"\n #dropdown=\"ngbDropdown\"\n dropdownClass=\"cai-dropdown\"\n #containerRef\n [ngbTooltip]=\"errorTooltip\"\n [disableTooltip]=\"!hasFloatingError\"\n [container]=\"'body'\"\n [placement]=\"['bottom', 'top']\"\n tooltipClass=\"tooltip tooltip-bg-red-500 input-tooltip \"\n (pointerdown)=\"focus($event)\"\n (mouseenter)=\"dropdownType === 'multiple' && toggleHovered(true)\"\n (mouseleave)=\"dropdownType === 'multiple' && toggleHovered(false)\"\n>\n @if (config().icon && !password && !config().withButtons) {\n <div\n class=\"icon-container\"\n (pointerdown)=\"focus($event)\"\n [class]=\"{\n 'colored-icon': config().iconColor,\n }\"\n [style.--icon-color]=\"config().iconColor || ''\"\n >\n <svg-icon class=\"icon\" [name]=\"config().icon || ''\"></svg-icon>\n @if (!config().noSeparator) {\n <div class=\"separator\"></div>\n }\n </div>\n }\n @if (password) {\n <div class=\"icon-container\" (pointerdown)=\"toggleVisibility($event)\">\n <div\n class=\"password-icons\"\n [ngbTooltip]=\"passwordTooltip\"\n [container]=\"'body'\"\n [tooltipClass]=\"tooltipClass\"\n [autoClose]=\"true\"\n [placement]=\"'top'\"\n [openDelay]=\"600\"\n >\n <svg-icon\n class=\"icon password-key hover-icon\"\n name=\"cai-password-key\"\n ></svg-icon>\n <svg-icon\n class=\"icon password-shown hover-icon\"\n name=\"cai-password-shown\"\n ></svg-icon>\n <svg-icon\n class=\"icon password-hidden hover-icon\"\n name=\"cai-password-hidden\"\n ></svg-icon>\n </div>\n <div class=\"separator\"></div>\n </div>\n }\n\n <input\n class=\"app-input\"\n [tabindex]=\"isDisabled() ? '-1' : '0'\"\n [type]=\"\n password && !config().reveal ? (visible() ? 'text' : 'password') : 'text'\n \"\n [required]=\"config().required\"\n [disabled]=\"isDisabled()\"\n (input)=\"onInput($event)\"\n (blur)=\"dispatchOnBlur()\"\n [id]=\"id()\"\n [attr.aria-label]=\"config().label\"\n [attr.name]=\"\n config().autocomplete ? config().autocomplete : randomAutocomplete()\n \"\n [placeholder]=\"config()?.placeholder || ''\"\n [autocomplete]=\"\n config().autocomplete ? config().autocomplete : randomAutocomplete()\n \"\n #inputRef\n [appPassword]=\"password\"\n [appMask]=\"config().mask || ''\"\n [reveal]=\"config().reveal || 0\"\n [account]=\"config().type === 'account'\"\n [visible]=\"visible()\"\n [appNumberFormat]=\"config().type === 'number'\"\n [isNumberFormattingDisabled]=\"config().isNumberFormattingDisabled || false\"\n [disableDecimals]=\"config().disableDecimals || false\"\n [prefix]=\"config().prefix || ''\"\n [max]=\"config().max\"\n [clampToMax]=\"config().clampToMax || false\"\n (keydown)=\"handleKeydown($event)\"\n (focus)=\"onFocus($event)\"\n />\n @if (\n !(dropdownType === \"multiple\" && !!multipleSelectedOptions().length) &&\n config().placeholderBehavior !== \"hidden\"\n ) {\n <label\n class=\"app-input-label\"\n [class.placeholder-color]=\"this.config().placeholderColor\"\n [style.--placeholder-color]=\"this.config().placeholderColor || ''\"\n (click)=\"focus($event)\"\n >\n <!-- Truck Trailer Driver Dropdown label -->\n @if (dropdownType === \"dispatch\" || dropdownType === \"ftl-dispatch\") {\n <p class=\"truck-item app-input-name\">Truck</p>\n <p class=\"trailer-item\">Trailer</p>\n <p>Driver</p>\n <p class=\"sub-label\">Rate</p>\n }\n <!-- Split Load -->\n @else if (dropdownType === \"split-driver\") {\n <p class=\"app-input-name\">{{ name }}</p>\n <p class=\"sub-label\">Rate</p>\n } @else if (\n dropdownType === \"split-truck\" || dropdownType === \"split-trailer\"\n ) {\n <p class=\"app-input-name\">{{ name }}</p>\n <p class=\"sub-label\">Location</p>\n }\n <!-- Dropdown variants -->\n @else if (dropdownType === \"broker\") {\n <p class=\"app-input-name\">{{ name }}</p>\n <p class=\"sub-label\">Credit</p>\n } @else if (dropdownType === \"contact\") {\n <p class=\"app-input-name\">{{ name }}</p>\n <p class=\"sub-label\">Phone</p>\n } @else if (dropdownType === \"shipper\") {\n <p class=\"app-input-name\">{{ name }}</p>\n <p class=\"sub-label\">Address</p>\n } @else if (dropdownType === \"owner\") {\n <p class=\"owner-ein app-input-name\">EIN</p>\n <p class=\"app-input-name\">Company Name</p>\n } @else if (dropdownType === \"fuelcard\") {\n <p class=\"fuelcard-number app-input-name\">Card No.</p>\n <p class=\"fuelcard-brand app-input-name\">Provider</p>\n <p class=\"app-input-name\">Nickname</p>\n }\n <!-- Accident -->\n @else if (dropdownType === \"accident-driver\") {\n <p class=\"accident-name app-input-name\">{{ name }}</p>\n <p class=\"accident-dob app-input-name\">DOB</p>\n <p class=\"accident-cdl-number app-input-name\">CDL No.</p>\n <p class=\"accident-state app-input-name\">CDL State</p>\n } @else if (\n dropdownType === \"accident-truck\" || dropdownType === \"accident-trailer\"\n ) {\n <p class=\"accident-unit app-input-name\">{{ name }}</p>\n <p class=\"accident-vin app-input-name\">VIN</p>\n <p class=\"accident-plate app-input-name\">Lic. Plate No.</p>\n <p class=\"accident-state app-input-name\">Lic. State</p>\n }\n <!-- Default Dropdown label -->\n @else {\n <span class=\"app-input-name\">{{ name }}</span>\n }\n </label>\n }\n @if (config().type === \"number\" && config().withButtons) {\n <div class=\"number-container\">\n <div class=\"number-buttons\">\n <div class=\"separator\"></div>\n <div\n class=\"plus-button-container\"\n ngbTooltip=\"Add\"\n [tooltipClass]=\"tooltipClass\"\n [container]=\"'body'\"\n [autoClose]=\"true\"\n [openDelay]=\"600\"\n [placement]=\"'top'\"\n (pointerdown)=\"increment($event)\"\n >\n <svg-icon name=\"cai-plus\" class=\"bg-icon plus-icon\"></svg-icon>\n </div>\n <div\n class=\"minus-button-container\"\n ngbTooltip=\"Remove\"\n [placement]=\"'top'\"\n [container]=\"'body'\"\n [tooltipClass]=\"tooltipClass\"\n [autoClose]=\"true\"\n [openDelay]=\"600\"\n (pointerdown)=\"decrement($event)\"\n >\n <svg-icon name=\"cai-minus\" class=\"bg-icon minus-icon\"></svg-icon>\n </div>\n </div>\n </div>\n }\n @if (!config().inTable) {\n @if (!dropdownType) {\n <svg-icon\n name=\"cai-checkmark\"\n class=\"app-input-icon positive-icon\"\n ></svg-icon>\n <svg-icon\n name=\"cai-status-warning\"\n class=\"app-input-icon warning-icon\"\n ></svg-icon>\n }\n }\n\n @if (\n invalid &&\n config().errorBehavior !== \"hidden\" &&\n (ngControl?.errors | errorMessage: config().customErrors)[0] &&\n !(config().inTable && config().placeholderBehavior !== \"static\")\n ) {\n <div class=\"app-input-error\">\n {{ (ngControl?.errors | errorMessage: config().customErrors)[0] }}\n </div>\n }\n\n <!-- Accept button -->\n @if ((config().add && isAdding()) || config().isEdit) {\n <button\n type=\"button\"\n class=\"app-input-icon button-icon accept-button\"\n (pointerdown)=\"addOption()\"\n [tabIndex]=\"-1\"\n ngbTooltip=\"Confirm\"\n [openDelay]=\"600\"\n [placement]=\"'top'\"\n [tooltipClass]=\"tooltipClass\"\n [container]=\"'body'\"\n [autoClose]=\"true\"\n >\n <svg-icon class=\"bg-icon\" name=\"cai-checkmark\"></svg-icon>\n </button>\n }\n\n <!-- Cancel button -->\n <button\n type=\"button\"\n class=\"app-input-icon button-icon cancel-button\"\n (pointerdown)=\"reset($event)\"\n (mouseenter)=\"onClearHover(true)\"\n (mouseleave)=\"onClearHover(false)\"\n [tabIndex]=\"-1\"\n ngbTooltip=\"{{\n hasText()\n | clearTooltip\n : isAdding()\n : config().isEdit || false\n : config().placeholderBehavior || 'dynamic'\n : dropdownType === 'multiple'\n : config().hasResetButton\n : canTooltipBeVisible()\n }}\"\n [openDelay]=\"600\"\n [tooltipClass]=\"tooltipClass\"\n [placement]=\"'top'\"\n [container]=\"'body'\"\n [autoClose]=\"true\"\n #closeTooltip=\"ngbTooltip\"\n >\n @let iconName =\n config().hasResetButton\n ? \"cai-reset\"\n : config().removable\n ? \"cai-delete\"\n : \"cai-cancel\";\n <svg-icon class=\"bg-icon\" [name]=\"iconName\"></svg-icon>\n </button>\n\n <div class=\"dropdown-anchor\" ngbDropdownAnchor></div>\n <!-- Dropdown menu -->\n\n @let hasLoader = isLoading() !== undefined;\n\n @if (hasLoader) {\n <div class=\"loader\" [class.loading]=\"isLoading()\">\n <svg-icon name=\"cai-loader\" class=\"loader-icon\"></svg-icon>\n </div>\n }\n\n @if (dropdownType) {\n @let maxHeight =\n ((dropdownOptions()?.length || (showNoResults() ? 1 : 0)) +\n (config().add ? 1 : 0)) *\n 30 +\n 4;\n\n @let animateDropdown =\n dropdownType !== \"toll\" &&\n dropdownType !== \"fuel-stop-transaction\" &&\n dropdownType !== \"dispatch\" &&\n dropdownType !== \"ftl-dispatch\" &&\n dropdownType !== \"split-driver\" &&\n dropdownType !== \"split-truck\" &&\n dropdownType !== \"split-trailer\";\n\n @let unfilteredHeight =\n dropdownType === \"contact\" || !animateDropdown\n ? 244\n : ((options()?.length || (showNoResults() ? 1 : 0)) +\n (config().add ? 1 : 0)) *\n 30 +\n 4;\n\n <div\n ngbDropdownMenu\n class=\"dropdown-menu input-dropdown-menu\"\n [class]=\"{\n 'hide-dropdown':\n config().dropdownAutocomplete &&\n !dropdownOptions()?.length &&\n !(showNoResults() && value()),\n 'animate-dropdown': animateDropdown,\n 'size-22': config().size === 22,\n 'has-stroke': config().hasStroke,\n }\"\n [class.closing]=\"closing()\"\n [style.--unfiltered-height]=\"\n unfilteredHeight > 244 ? '244px' : unfilteredHeight + 'px'\n \"\n [style.--max-height]=\"maxHeight > 244 ? '244px' : maxHeight + 'px'\"\n [style.width.px]=\"containerWidth()\"\n [tabindex]=\"-1\"\n (pointerdown)=\"onDropdownBackgroundClick($event)\"\n (mousedown)=\"$event.preventDefault()\"\n (pointerup)=\"stopEventPropagation($event)\"\n (mouseup)=\"stopEventPropagation($event)\"\n (click)=\"stopEventPropagation($event)\"\n >\n <div\n class=\"dropdown-menu-content\"\n [tabindex]=\"-1\"\n caiInfiniteScroll\n [scrollThreshold]=\"50\"\n (scrolledToBottom)=\"onDropdownScrolledToBottom()\"\n >\n @if (config().add) {\n <button\n class=\"dropdown-item add-new\"\n [class.focused]=\"\n focusedOptionIndex === -1 ||\n groupedNavigationState?.groupIndex === -1\n \"\n (click)=\"handleAddingOption($event)\"\n >\n <p>ADD NEW</p>\n <svg-icon name=\"cai-plus\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n <ng-container *ngTemplateOutlet=\"dropdownMenuRef\"></ng-container>\n </div>\n </div>\n\n @if (!config().dropdownAutocomplete) {\n <div\n class=\"dropdown-icon-container\"\n [class.open]=\"dropdown.isOpen() && !closing()\"\n (pointerdown)=\"onDropdownIconClick($event)\"\n >\n <svg-icon\n name=\"cai-arrow-secondary-down\"\n class=\"dropdown-icon icon\"\n ></svg-icon>\n </div>\n }\n @let specialDropdown =\n dropdownType === \"dispatch\" ||\n dropdownType === \"ftl-dispatch\" ||\n dropdownType === \"broker\" ||\n dropdownType === \"contact\" ||\n dropdownType === \"shipper\" ||\n dropdownType === \"bank\" ||\n dropdownType === \"dispatcher\" ||\n dropdownType === \"driver-owner\" ||\n dropdownType === \"truck\" ||\n dropdownType === \"trailer\" ||\n dropdownType === \"hazardous\" ||\n dropdownType === \"state\" ||\n dropdownType === \"owner\" ||\n dropdownType === \"fuelcard\" ||\n dropdownType === \"pm\" ||\n dropdownType === \"color\" ||\n dropdownType === \"make\" ||\n dropdownType === \"toll\" ||\n dropdownType === \"provider\" ||\n dropdownType === \"split-driver\" ||\n dropdownType === \"split-truck\" ||\n dropdownType === \"split-trailer\" ||\n dropdownType === \"accident-driver\" ||\n dropdownType === \"accident-truck\" ||\n dropdownType === \"accident-trailer\";\n <!-- Placeholder -->\n @if (specialDropdown) {\n <ng-container *ngTemplateOutlet=\"selectedOptionRef\"></ng-container>\n } @else if (\n (config().add || config().search) &&\n !inputRef.value &&\n !this.isAdding() &&\n dropdownType !== \"subcontent\"\n ) {\n <div class=\"dropdown-selected\">\n @if (config().placeholderBehavior === \"static\") {\n <p class=\"selected-label-hidden\">\n {{ name + (config().required ? \" *\" : \"\") }}\n </p>\n <p class=\"selected-text\">\n {{\n selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![\n optionLabel || \"label\"\n ]\n }}\n </p>\n } @else {\n @if (\n selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![\n optionLabel || \"label\"\n ] === \"Hazardous\"\n ) {\n <svg-icon name=\"cai-violation-hazmat\" class=\"icon\"></svg-icon>\n <p class=\"dropdown-selected-content\">\n {{\n selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![\n optionLabel || \"label\"\n ]\n }}\n </p>\n } @else {\n <p class=\"dropdown-selected-content\">\n {{\n selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![\n optionLabel || \"label\"\n ]\n }}\n </p>\n }\n }\n </div>\n }\n } @else if (config().isEdit && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"dropdown-selected-content\">{{ name }}</p>\n </div>\n }\n @if (config().passwordRequirements) {\n <div\n class=\"dropdown-menu password-requirement\"\n ngbDropdownMenu\n [style.width.px]=\"containerWidth()\"\n [class.closing]=\"closing()\"\n (pointerup)=\"stopEventPropagation($event)\"\n (mouseup)=\"stopEventPropagation($event)\"\n (click)=\"stopEventPropagation($event)\"\n >\n <ng-container *ngTemplateOutlet=\"passwordRequirementsRef\"></ng-container>\n </div>\n }\n @if (subcontent) {\n <p class=\"subcontent\">\n @if (!(config().alignment === \"right\")) {\n <span class=\"subcontent-hide\"\n >{{\n config().search\n ? selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![\n optionLabel || \"label\"\n ]\n : inputRef.value\n }}\n </span>\n }\n {{ subcontent }}\n </p>\n }\n</div>\n\n<!-- #region Templates -->\n\n<!-- #region Password requirements -->\n<ng-template #passwordRequirementsRef>\n @let isMinLengthValid =\n !this.ngControl?.errors?.[\"minlength\"] && this.value();\n @let isHasNumberValid =\n !this.ngControl?.errors?.[\"hasNumber\"] && this.value();\n @let isHasSymbolValid =\n !this.ngControl?.errors?.[\"hasSymbol\"] && this.value();\n @let isHasUppercaseValid =\n !this.ngControl?.errors?.[\"hasUppercase\"] && this.value();\n\n <p>Strong Password Requirement</p>\n <ul>\n <li [class.valid]=\"isMinLengthValid\">\n <svg-icon\n [name]=\"isMinLengthValid ? 'cai-checkmark' : 'cai-cancel'\"\n [class]=\"isMinLengthValid ? 'checkmark' : 'cancel'\"\n class=\"icon\"\n ></svg-icon\n ><span>Minimum 8 characters</span>\n </li>\n <li [class.valid]=\"isHasNumberValid\">\n <svg-icon\n class=\"icon\"\n [name]=\"isHasNumberValid ? 'cai-checkmark' : 'cai-cancel'\"\n [class]=\"isHasNumberValid ? 'checkmark' : 'cancel'\"\n ></svg-icon\n ><span>One number</span>\n </li>\n <li [class.valid]=\"isHasSymbolValid\">\n <svg-icon\n class=\"icon\"\n [name]=\"isHasSymbolValid ? 'cai-checkmark' : 'cai-cancel'\"\n [class]=\"isHasSymbolValid ? 'checkmark' : 'cancel'\"\n ></svg-icon\n ><span>One symbol</span>\n </li>\n <li [class.valid]=\"isHasUppercaseValid\">\n <svg-icon\n class=\"icon\"\n [name]=\"isHasUppercaseValid ? 'cai-checkmark' : 'cai-cancel'\"\n [class]=\"isHasUppercaseValid ? 'checkmark' : 'cancel'\"\n ></svg-icon\n ><span>One upper-case letter</span>\n </li>\n </ul>\n</ng-template>\n<!-- #endregion -->\n@let search = config().search;\n\n<ng-template #dropdownMenuRef>\n @switch (dropdownType) {\n @case (\"dispatch\") {\n <ng-container *ngTemplateOutlet=\"dispatchesRef\"></ng-container>\n }\n @case (\"ftl-dispatch\") {\n <ng-container *ngTemplateOutlet=\"ftlDispatchRef\"></ng-container>\n }\n @case (\"broker\") {\n <ng-container *ngTemplateOutlet=\"brokerRef\"></ng-container>\n }\n @case (\"contact\") {\n <ng-container *ngTemplateOutlet=\"contactRef\"></ng-container>\n }\n @case (\"shipper\") {\n <ng-container *ngTemplateOutlet=\"shipperRef\"></ng-container>\n }\n @case (\"bank\") {\n <ng-container *ngTemplateOutlet=\"bankRef\"></ng-container>\n }\n @case (\"dispatcher\") {\n <ng-container *ngTemplateOutlet=\"dispatcherRef\"></ng-container>\n }\n @case (\"driver-owner\") {\n <ng-container *ngTemplateOutlet=\"driverOwnerRef\"></ng-container>\n }\n @case (\"trailer\") {\n <ng-container *ngTemplateOutlet=\"trailerRef\"></ng-container>\n }\n @case (\"truck\") {\n <ng-container *ngTemplateOutlet=\"truckRef\"></ng-container>\n }\n @case (\"hazardous\") {\n <ng-container *ngTemplateOutlet=\"hazardousRef\"></ng-container>\n }\n @case (\"state\") {\n <ng-container *ngTemplateOutlet=\"stateRef\"></ng-container>\n }\n @case (\"owner\") {\n <ng-container *ngTemplateOutlet=\"ownerRef\"></ng-container>\n }\n @case (\"fuelcard\") {\n <ng-container *ngTemplateOutlet=\"fuelcardRef\"></ng-container>\n }\n @case (\"pm\") {\n <ng-container *ngTemplateOutlet=\"pmRef\"></ng-container>\n }\n @case (\"multiple\") {\n <ng-container *ngTemplateOutlet=\"multipleRef\"></ng-container>\n }\n @case (\"make\") {\n <ng-container *ngTemplateOutlet=\"makeRef\"></ng-container>\n }\n @case (\"toll\") {\n <ng-container *ngTemplateOutlet=\"tollRef\"></ng-container>\n }\n @case (\"color\") {\n <ng-container *ngTemplateOutlet=\"colorRef\"></ng-container>\n }\n @case (\"fuel-stop-transaction\") {\n <ng-container *ngTemplateOutlet=\"fuelStopTransactionRef\"></ng-container>\n }\n @case (\"provider\") {\n <ng-container *ngTemplateOutlet=\"providerRef\"></ng-container>\n }\n @case (\"split-driver\") {\n <ng-container *ngTemplateOutlet=\"splitDriverRef\"></ng-container>\n }\n @case (\"split-truck\") {\n <ng-container *ngTemplateOutlet=\"splitTruckRef\"></ng-container>\n }\n @case (\"split-trailer\") {\n <ng-container *ngTemplateOutlet=\"splitTrailerRef\"></ng-container>\n }\n @case (\"accident-driver\") {\n <ng-container *ngTemplateOutlet=\"accidentDriverRef\"></ng-container>\n }\n @case (\"accident-truck\") {\n <ng-container *ngTemplateOutlet=\"accidentTruckRef\"></ng-container>\n }\n @case (\"accident-trailer\") {\n <ng-container *ngTemplateOutlet=\"accidentTrailerRef\"></ng-container>\n }\n @case (\"subcontent\") {\n <ng-container *ngTemplateOutlet=\"dropdownOptionsRef\"></ng-container>\n }\n @default {\n <ng-container *ngTemplateOutlet=\"dropdownOptionsRef\"></ng-container>\n }\n }\n</ng-template>\n\n<ng-template #selectedOptionRef>\n @switch (dropdownType) {\n @case (\"dispatch\") {\n <ng-container *ngTemplateOutlet=\"selectedDispatchRef\"></ng-container>\n }\n @case (\"ftl-dispatch\") {\n <ng-container *ngTemplateOutlet=\"selectedDispatchRef\"></ng-container>\n }\n @case (\"broker\") {\n <ng-container *ngTemplateOutlet=\"selectedBrokerRef\"></ng-container>\n }\n @case (\"contact\") {\n <ng-container *ngTemplateOutlet=\"selectedContactRef\"></ng-container>\n }\n @case (\"shipper\") {\n <ng-container *ngTemplateOutlet=\"selectedShipperRef\"></ng-container>\n }\n @case (\"bank\") {\n <ng-container *ngTemplateOutlet=\"selectedBankRef\"></ng-container>\n }\n @case (\"dispatcher\") {\n <ng-container *ngTemplateOutlet=\"selectedDispatcherRef\"></ng-container>\n }\n @case (\"driver-owner\") {\n <ng-container *ngTemplateOutlet=\"selectedDriverOwnerRef\"></ng-container>\n }\n @case (\"trailer\") {\n <ng-container *ngTemplateOutlet=\"selectedTrailerRef\"></ng-container>\n }\n @case (\"truck\") {\n <ng-container *ngTemplateOutlet=\"selectedTruckRef\"></ng-container>\n }\n @case (\"hazardous\") {\n <ng-container *ngTemplateOutlet=\"selectedHazardousRef\"></ng-container>\n }\n @case (\"state\") {\n <ng-container *ngTemplateOutlet=\"selectedStateRef\"></ng-container>\n }\n @case (\"owner\") {\n <ng-container *ngTemplateOutlet=\"selectedOwnerRef\"></ng-container>\n }\n @case (\"fuelcard\") {\n <ng-container *ngTemplateOutlet=\"selectedFuelcardRef\"></ng-container>\n }\n @case (\"pm\") {\n <ng-container *ngTemplateOutlet=\"selectedPmRef\"></ng-container>\n }\n @case (\"make\") {\n <ng-container *ngTemplateOutlet=\"selectedMakeRef\"></ng-container>\n }\n @case (\"toll\") {\n <ng-container *ngTemplateOutlet=\"selectedTollRef\"></ng-container>\n }\n @case (\"color\") {\n <ng-container *ngTemplateOutlet=\"selectedColorRef\"></ng-container>\n }\n @case (\"provider\") {\n <ng-container *ngTemplateOutlet=\"selectedProviderRef\"></ng-container>\n }\n @case (\"split-driver\") {\n <ng-container *ngTemplateOutlet=\"selectedSplitDriverRef\"></ng-container>\n }\n @case (\"split-truck\") {\n <ng-container *ngTemplateOutlet=\"selectedSplitTruckRef\"></ng-container>\n }\n @case (\"split-trailer\") {\n <ng-container *ngTemplateOutlet=\"selectedSplitTrailerRef\"></ng-container>\n }\n @case (\"accident-driver\") {\n <ng-container\n *ngTemplateOutlet=\"selectedAccidentDriverRef\"\n ></ng-container>\n }\n @case (\"accident-truck\") {\n <ng-container *ngTemplateOutlet=\"selectedAccidentTruckRef\"></ng-container>\n }\n @case (\"accident-trailer\") {\n <ng-container\n *ngTemplateOutlet=\"selectedAccidentTrailerRef\"\n ></ng-container>\n }\n }\n</ng-template>\n\n<!-- Standard dropdown -->\n<ng-template #dropdownOptionsRef>\n @if (dropdownOptions().length) {\n @for (option of dropdownOptions(); track $index; let index = $index) {\n @let dropdownOption = cast(option, \"dropdownOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ dropdownOption.id }}\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'dropdownOption')?.id === dropdownOption.id,\n focused: focusedOptionIndex === index,\n }\"\n (click)=\"handleOption(dropdownOption, $event)\"\n >\n @if (dropdownOption[optionLabel] === \"Hazardous\") {\n <svg-icon name=\"cai-violation-hazmat\" class=\"icon\"></svg-icon>\n }\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (dropdownOption[optionLabel] | highlightSearch: value())\n : dropdownOption[optionLabel]\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #multipleRef>\n @if (dropdownOptions().length) {\n @for (option of dropdownOptions(); track $index; let index = $index) {\n @let dropdownOption = cast(option, \"dropdownOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ dropdownOption.id }}\"\n (click)=\"handleOption(dropdownOption, $event)\"\n [class]=\"{\n selected: isSelectedOption(dropdownOption),\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (dropdownOption[optionLabel] | highlightSearch: value())\n : dropdownOption[optionLabel]\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #bankRef>\n @if (dropdownOptions().length) {\n @for (bank of dropdownOptions(); track $index; let index = $index) {\n @let bankOption = cast(bank, \"bank\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ bankOption.id }}\"\n (click)=\"handleOption(bankOption, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'bank')?.id === bankOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n @if (bankOption.logoName) {\n <svg-icon\n class=\"full-icon\"\n [name]=\"bankOption.logoName.slice(0, -4)\"\n ></svg-icon>\n } @else {\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (bankOption.name || '' | highlightSearch: value())\n : bankOption.name\n \"\n ></p>\n }\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #makeRef>\n @if (dropdownOptions().length) {\n @for (make of dropdownOptions(); track $index; let index = $index) {\n @let makeOption = cast(make, \"make\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ makeOption.id }}\"\n (click)=\"handleOption(makeOption, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'make')?.id === makeOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n @if (makeOption.logoName) {\n <svg-icon\n class=\"full-icon\"\n [name]=\"makeOption.logoName.slice(0, -4)\"\n ></svg-icon>\n } @else {\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (makeOption.name || '' | highlightSearch: value())\n : makeOption.name\n \"\n ></p>\n }\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Broker -->\n<ng-template #brokerRef>\n @if (dropdownOptions().length) {\n @for (broker of dropdownOptions(); track $index; let index = $index) {\n @let brokerOption = cast(broker, \"broker\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"broker-{{ brokerOption.id }}\"\n (click)=\"\n !(brokerOption.dnu || brokerOption.ban) &&\n handleOption(brokerOption, $event)\n \"\n [class]=\"{\n selected: cast(selectedOption(), 'broker')?.id === brokerOption.id,\n focused: focusedOptionIndex === index,\n banned: brokerOption.dnu || brokerOption.ban,\n dnu: brokerOption.dnu,\n }\"\n >\n @if (brokerOption?.dnu || brokerOption?.ban) {\n <svg-icon name=\"cai-minus\" class=\"round-icon\"></svg-icon>\n } @else if (brokerOption?.fraudCheck) {\n <svg-icon\n name=\"cai-status-warning-lite\"\n class=\"fraud-icon\"\n ></svg-icon>\n }\n <p\n class=\"dropdown-content\"\n [innerHTML]=\"\n search\n ? (brokerOption.businessName || '' | highlightSearch: value())\n : brokerOption.businessName\n \"\n ></p>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-base\">\n @if (!brokerOption.creditLimit) {\n <p>Unlimited</p>\n } @else {\n <p>{{ brokerOption.availableCredit || 0 | currency }}</p>\n <div\n class=\"progress-bar\"\n [style.--progress]=\"\n (\n brokerOption\n | brokerProgress: brokerOption.dnu || brokerOption.ban\n ).activePercentageOfPaid + '%'\n \"\n [class]=\"\n (\n brokerOption\n | brokerProgress: brokerOption.dnu || brokerOption.ban\n ).status\n \"\n ></div>\n }\n </div>\n <div class=\"end-item-hover\">\n <p>\n {{ brokerOption.loadsCount }} |\n {{ brokerOption.availableCredit || 0 | currency }}\n </p>\n <svg-icon name=\"cai-load\" class=\"icon\"></svg-icon>\n </div>\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Contact dropdown -->\n<ng-template #contactRef>\n @if (dropdownOptions().length) {\n @for (contact of dropdownOptions(); track $index; let index = $index) {\n @let contactOption = cast(contact, \"contact\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"contact-{{ contact.id }}\"\n (click)=\"handleOption(contact, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'contact')?.id === contact.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n [innerHTML]=\"\n search\n ? (contactOption.contactName || '' | highlightSearch: value())\n : contactOption.contactName\n \"\n ></p>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-base\">\n <p>{{ contactOption.department?.name }}</p>\n </div>\n <div class=\"end-item-hover\">\n <p>\n {{ contactOption.phone }}\n </p>\n </div>\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Owner dropdown -->\n<ng-template #ownerRef>\n @if (dropdownOptions().length) {\n @for (owner of dropdownOptions(); track $index; let index = $index) {\n @let ownerOption = cast(owner, \"owner\");\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"owner-{{ ownerOption?.id }}\"\n (click)=\"handleOption(ownerOption!, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'owner')?.id === ownerOption?.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"owner-ein\"\n [innerHTML]=\"\n search\n ? (ownerOption?.ein || '' | highlightSearch: value())\n : ownerOption?.ein\n \"\n ></p>\n <p\n [innerHTML]=\"\n search\n ? (ownerOption?.name || '' | highlightSearch: value())\n : ownerOption?.name\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Fuelcard dropdown -->\n<ng-template #fuelcardRef>\n @if (dropdownOptions().length) {\n @for (fuelcard of dropdownOptions(); track $index; let index = $index) {\n @let fuelcardOption = cast(fuelcard, \"fuelCard\");\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"fuelcard-{{ fuelcardOption?.id }}\"\n (click)=\"handleOption(fuelcardOption!, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'fuelCard')?.id === fuelcardOption?.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"fuelcard-number\"\n [innerHTML]=\"\n search\n ? (fuelcardOption?.number || '' | highlightSearch: value())\n : fuelcardOption?.number\n \"\n ></p>\n <p\n class=\"fuelcard-brand\"\n [innerHTML]=\"\n search\n ? (fuelcardOption?.brand || '' | highlightSearch: value())\n : fuelcardOption?.brand\n \"\n ></p>\n <p\n [innerHTML]=\"\n search\n ? (fuelcardOption?.account || '' | highlightSearch: value())\n : fuelcardOption?.account\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Accident driver dropdown -->\n<ng-template #accidentDriverRef>\n @if (dropdownOptions().length) {\n @for (driver of dropdownOptions(); track $index; let index = $index) {\n @let driverOption = cast(driver, \"accidentDriver\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"accident-driver-{{ driverOption.id }}\"\n (click)=\"handleOption(driverOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'accidentDriver')?.id === driverOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <div class=\"dropdown-subitem accident-name\">\n <cai-avatar\n [driver]=\"driverOption\"\n [size]=\"18\"\n [inverse]=\"true\"\n [hover]=\"false\"\n ></cai-avatar>\n <p\n [innerHTML]=\"\n driverOption.firstName + ' ' + driverOption.lastName\n | highlightSearch: value()\n \"\n ></p>\n </div>\n <p class=\"accident-dob\">\n {{ driverOption.dateOfBirth | date: \"MM/dd/yy\" }}\n </p>\n <p\n class=\"accident-cdl-number\"\n [innerHTML]=\"driverOption.cdlNumber || '' | highlightSearch: value()\"\n ></p>\n <div class=\"dropdown-subitem accident-state\">\n <p\n [innerHTML]=\"\n driverOption.cdlState?.stateShortName || ''\n | highlightSearch: value()\n \"\n ></p>\n @if (\n driverOption.cdlState?.countryType?.name &&\n driverOption.cdlState?.stateShortName\n ) {\n <svg-icon\n class=\"icon\"\n [name]=\"\n 'cai-' +\n driverOption.cdlState?.countryType?.name?.toLowerCase() +\n '-' +\n driverOption.cdlState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Accident truck dropdown -->\n<ng-template #accidentTruckRef>\n @if (dropdownOptions().length) {\n @for (truck of dropdownOptions(); track $index; let index = $index) {\n @let truckOption = cast(truck, \"accidentTruck\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"accident-truck-{{ truckOption.id }}\"\n (click)=\"handleOption(truckOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'accidentTruck')?.id === truckOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <div class=\"dropdown-subitem accident-unit\">\n @if (truckOption.truckType?.logoName) {\n <svg-icon\n class=\"truck-icon truck-trailer-icon-colors\"\n [class]=\"truckOption.truckType!.logoName.slice(0, -4)\"\n [name]=\"truckOption.truckType!.logoName.slice(0, -4)\"\n ></svg-icon>\n }\n <p\n [innerHTML]=\"truckOption.truckNumber | highlightSearch: value()\"\n ></p>\n </div>\n <p\n class=\"accident-vin\"\n [innerHTML]=\"truckOption.vin || '' | highlightSearch: value()\"\n ></p>\n <p\n class=\"accident-plate\"\n [innerHTML]=\"\n truckOption.licensePlateNumber || '' | highlightSearch: value()\n \"\n ></p>\n <div class=\"dropdown-subitem accident-state\">\n <p\n [innerHTML]=\"\n truckOption.licenseState?.stateShortName || ''\n | highlightSearch: value()\n \"\n ></p>\n @if (\n truckOption.licenseState?.countryType?.name &&\n truckOption.licenseState?.stateShortName\n ) {\n <svg-icon\n class=\"icon\"\n [name]=\"\n 'cai-' +\n truckOption.licenseState?.countryType?.name?.toLowerCase() +\n '-' +\n truckOption.licenseState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Accident trailer dropdown -->\n<ng-template #accidentTrailerRef>\n @if (dropdownOptions().length) {\n @for (trailer of dropdownOptions(); track $index; let index = $index) {\n @let trailerOption = cast(trailer, \"accidentTrailer\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"accident-trailer-{{ trailerOption.id }}\"\n (click)=\"handleOption(trailerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'accidentTrailer')?.id === trailerOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <div class=\"dropdown-subitem accident-unit\">\n @if (trailerOption.trailerType?.logoName) {\n <svg-icon\n class=\"trailer-icon truck-trailer-icon-colors\"\n [class]=\"trailerOption.trailerType!.logoName.slice(0, -4)\"\n [name]=\"trailerOption.trailerType!.logoName.slice(0, -4)\"\n ></svg-icon>\n }\n <p\n [innerHTML]=\"trailerOption.trailerNumber | highlightSearch: value()\"\n ></p>\n </div>\n <p\n class=\"accident-vin\"\n [innerHTML]=\"trailerOption.vin || '' | highlightSearch: value()\"\n ></p>\n <p\n class=\"accident-plate\"\n [innerHTML]=\"\n trailerOption.licensePlateNumber || '' | highlightSearch: value()\n \"\n ></p>\n <div class=\"dropdown-subitem accident-state\">\n <p\n [innerHTML]=\"\n trailerOption.licenseState?.stateShortName || ''\n | highlightSearch: value()\n \"\n ></p>\n @if (\n trailerOption.licenseState?.countryType?.name &&\n trailerOption.licenseState?.stateShortName\n ) {\n <svg-icon\n class=\"icon\"\n [name]=\"\n 'cai-' +\n trailerOption.licenseState?.countryType?.name?.toLowerCase() +\n '-' +\n trailerOption.licenseState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Shipper dropdown -->\n<ng-template #shipperRef>\n @if (dropdownOptions().length) {\n @for (shipper of dropdownOptions(); track $index; let index = $index) {\n @let shipperOption = cast(shipper, \"shipper\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"shipper-{{ shipperOption.id }}\"\n (click)=\"handleOption(shipperOption, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'shipper')?.id === shipperOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"max-w-280 text-truncate\"\n [innerHTML]=\"\n search\n ? (shipperOption.businessName || '' | highlightSearch: value())\n : shipperOption.businessName\n \"\n ></p>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-base\">\n <p\n class=\"max-w-280 text-truncate\"\n [innerHTML]=\"\n search\n ? (shipperOption.address?.address || ''\n | highlightSearch: value())\n : shipperOption.address?.address\n \"\n ></p>\n </div>\n <div class=\"end-item-hover\">\n <p>\n {{ shipperOption.pickupCount }} Pickup |\n {{ shipperOption.deliveryCount }} Delivery\n </p>\n <svg-icon name=\"cai-load\" class=\"icon\"></svg-icon>\n </div>\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Dispatch dropdown -->\n<ng-template #dispatchesRef>\n @if (dropdownOptions().length) {\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n (click)=\"resetSelection()\"\n [class]=\"{\n selected: !selectedOption(),\n }\"\n >\n <p>Unassigned</p>\n <div class=\"unassigned-ltl\">\n <p>{{ unassignedCount() }}</p>\n <svg-icon name=\"cai-ltl-single\" class=\"icon-sm\"></svg-icon>\n </div>\n </button>\n @for (\n dispatchBoard of dropdownOptions();\n track dispatchBoard.id;\n let groupIndex = $index\n ) {\n <!-- Temporary variant since BE doesn't support boards -->\n @let dispatchBoardOption = cast(dispatchBoard, \"dispatchBoard\")!;\n\n @let isNoBoardsVariant =\n dispatchBoardOption.dispatcher === \"NOBOARDSVARIANT\";\n @if (dispatchBoardOption.count > 0) {\n @if (!isNoBoardsVariant) {\n @let isGroupFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === 0;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(dispatchBoardOption.id, $event)\"\n [class]=\"{\n unfolded: dispatchBoardOption.dispatches?.length || 0 > 0,\n focused: isGroupFocused,\n }\"\n >\n <p>\n {{\n dispatchBoardOption.teamBoard\n ? \"Team Board\"\n : dispatchBoardOption.dispatcher\n }}\n </p>\n <p class=\"counter\">{{ dispatchBoardOption.count }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n }\n @if (\n dispatchBoardOption.dispatches &&\n dispatchBoardOption.dispatches.length > 0\n ) {\n @for (\n dispatch of dispatchBoardOption.dispatches;\n track dispatch.id;\n let optionIndex = $index\n ) {\n @let isOptionFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === optionIndex + 1;\n <!-- +1 since optionIndex is 0 for the group item header -->\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n (click)=\"handleOption(dispatch, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'dispatch')?.id === dispatch.id,\n focused: isOptionFocused,\n }\"\n >\n <div class=\"dropdown-subitem truck-item\">\n <svg-icon\n class=\"truck-icon truck-trailer-icon-colors\"\n [class]=\"dispatch.truck.truckType.logoName.slice(0, -4)\"\n [name]=\"dispatch.truck.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"truck-number\"\n [innerHTML]=\"\n dispatch.truck.truckNumber | highlightSearch: value()\n \"\n ></p>\n </div>\n <div class=\"dropdown-subitem trailer-item\">\n @if (dispatch.trailer) {\n <svg-icon\n class=\"trailer-icon truck-trailer-icon-colors\"\n [class]=\"dispatch.trailer.trailerType.logoName.slice(0, -4)\"\n [name]=\"dispatch.trailer.trailerType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"trailer-number\"\n [innerHTML]=\"\n dispatch.trailer.trailerNumber | highlightSearch: value()\n \"\n ></p>\n }\n </div>\n <div class=\"dropdown-subitem\">\n @if (dispatch.coDriver) {\n <svg-icon class=\"dispatch-icon\" name=\"cai-people\"></svg-icon>\n <p\n class=\"driver-name\"\n [innerHTML]=\"\n dispatch.driver.firstName +\n ' & ' +\n dispatch.coDriver.firstName | highlightSearch: value()\n \"\n ></p>\n } @else {\n <cai-avatar\n [driver]=\"dispatch.driver\"\n [size]=\"18\"\n [inverse]=\"true\"\n [hover]=\"false\"\n ></cai-avatar>\n <p\n class=\"driver-name\"\n [innerHTML]=\"\n dispatch.driver.firstName + ' ' + dispatch.driver.lastName\n | highlightSearch: value()\n \"\n ></p>\n }\n </div>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-hover\">\n <p>{{ dispatch.payType }}</p>\n <svg-icon name=\"cai-driver\" class=\"icon-sm\"></svg-icon>\n </div>\n <div class=\"end-item-base dispatch-ltl\">\n <p>{{ dispatch.numberOfSingleLtlLoads }}</p>\n <svg-icon name=\"cai-ltl-single\" class=\"icon-sm\"></svg-icon>\n </div>\n </div>\n </button>\n }\n } @else if (isNoBoardsVariant) {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- ftl dispatch dropdown -->\n<ng-template #ftlDispatchRef>\n @if (dropdownOptions().length) {\n @for (\n dispatchBoard of dropdownOptions();\n track dispatchBoard.id;\n let groupIndex = $index\n ) {\n @let dispatchBoardOption = cast(dispatchBoard, \"dispatchBoard\")!;\n @let isGroupFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === 0;\n @let isNoBoardsVariant =\n dispatchBoardOption.dispatcher === \"NOBOARDSVARIANT\";\n @if (dispatchBoardOption.count > 0) {\n @if (!isNoBoardsVariant) {\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(dispatchBoardOption.id, $event)\"\n [class]=\"{\n unfolded: dispatchBoardOption.dispatches?.length || 0 > 0,\n focused: isGroupFocused,\n }\"\n >\n <p>\n {{\n dispatchBoardOption.teamBoard\n ? \"Team Board\"\n : dispatchBoardOption.dispatcher\n }}\n </p>\n <p class=\"counter\">{{ dispatchBoardOption.count }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n }\n @if (\n dispatchBoardOption.dispatches &&\n dispatchBoardOption.dispatches.length > 0\n ) {\n @for (\n dispatch of dispatchBoardOption.dispatches;\n track dispatch.id;\n let optionIndex = $index\n ) {\n @let isOptionFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === optionIndex + 1;\n <!-- +1 since optionIndex is 0 for the group item header -->\n <button\n class=\"dropdown-item\"\n (click)=\"handleOption(dispatch, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'dispatch')?.id === dispatch.id,\n focused: isOptionFocused,\n }\"\n >\n <div class=\"dropdown-subitem truck-item\">\n <svg-icon\n class=\"truck-icon truck-trailer-icon-colors\"\n [class]=\"dispatch.truck.truckType.logoName.slice(0, -4)\"\n [name]=\"dispatch.truck.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"truck-number\"\n [innerHTML]=\"\n dispatch.truck.truckNumber | highlightSearch: value()\n \"\n ></p>\n </div>\n <div class=\"dropdown-subitem trailer-item\">\n @if (dispatch.trailer) {\n <svg-icon\n class=\"trailer-icon truck-trailer-icon-colors\"\n [class]=\"dispatch.trailer.trailerType.logoName.slice(0, -4)\"\n [name]=\"dispatch.trailer.trailerType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"trailer-number\"\n [innerHTML]=\"\n dispatch.trailer.trailerNumber | highlightSearch: value()\n \"\n ></p>\n }\n </div>\n <div class=\"dropdown-subitem\">\n @if (dispatch.coDriver) {\n <svg-icon class=\"dispatch-icon\" name=\"cai-people\"></svg-icon>\n <p\n class=\"driver-name\"\n [innerHTML]=\"\n dispatch.driver.firstName +\n ' & ' +\n dispatch.coDriver.firstName | highlightSearch: value()\n \"\n ></p>\n } @else {\n <cai-avatar\n [driver]=\"dispatch.driver\"\n [size]=\"18\"\n [inverse]=\"true\"\n [hover]=\"false\"\n ></cai-avatar>\n <p\n class=\"driver-name\"\n [innerHTML]=\"\n dispatch.driver.firstName + ' ' + dispatch.driver.lastName\n | highlightSearch: value()\n \"\n ></p>\n }\n </div>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-hover\">\n <!-- Load Status -->\n @let dispatchStatus = dispatch.status | dispatchStatus;\n @if (dispatchStatus) {\n <div\n class=\"dispatch-status\"\n [class]=\"dispatchStatus.statusClass\"\n >\n @if (dispatchStatus.badge) {\n <p\n class=\"status-block\"\n [class]=\"dispatchStatus.badge.color\"\n >\n {{ dispatchStatus.badge.text }}\n </p>\n }\n {{ dispatchStatus.label }}\n @if (dispatch.status?.statusCheckInNumber) {\n <p class=\"status-block\">\n {{ dispatch.status?.statusCheckInNumber }}\n </p>\n }\n </div>\n <p class=\"dispatch-separator\">|</p>\n }\n <p class=\"dispatch-load-count\">\n {{ dispatch?.pendingLoadCount }}\n </p>\n <svg-icon name=\"cai-load\" class=\"icon-sm\"></svg-icon>\n </div>\n <div class=\"end-item-base\">\n <p>{{ dispatch.payType }}</p>\n <svg-icon name=\"cai-driver\" class=\"icon-sm\"></svg-icon>\n </div>\n </div>\n </button>\n }\n } @else if (isNoBoardsVariant) {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #splitDriverRef>\n @if (dropdownOptions().length) {\n @for (splitDriverBoard of dropdownOptions(); track splitDriverBoard.id) {\n @let driverBoard = cast(splitDriverBoard, \"splitDriverBoard\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(driverBoard.id, $event)\"\n [class]=\"{\n unfolded: (driverBoard.drivers?.length ?? 0) > 0,\n }\"\n >\n <p>\n {{\n driverBoard.isTeamBoard ? \"Team Board\" : driverBoard.dispatcherName\n }}\n </p>\n <!-- TODO: Change to count once BE is fixed -->\n <p class=\"counter\">{{ driverBoard.drivers?.length || 0 }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n @for (driver of driverBoard.drivers || []; track driver.id) {\n @let driverOption = cast(driver, \"splitDriver\")!;\n <button\n class=\"dropdown-item\"\n (click)=\"handleOption(driverOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'splitDriver')?.id === driverOption.id,\n }\"\n >\n <div class=\"dropdown-subitem\">\n <div class=\"dropdown-avatar\">\n <cai-avatar\n [driver]=\"driverOption\"\n [size]=\"18\"\n [inverse]=\"true\"\n [hover]=\"false\"\n ></cai-avatar>\n </div>\n <p\n class=\"driver-name\"\n [innerHTML]=\"\n driverOption.firstName + ' ' + driverOption.lastName\n | highlightSearch: value()\n \"\n ></p>\n </div>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-hover\">\n @let dispatchStatus =\n driverOption.dispatchStatus | dispatchStatus;\n @if (dispatchStatus) {\n <div\n class=\"dispatch-status\"\n [class]=\"dispatchStatus.statusClass\"\n >\n @if (dispatchStatus.badge) {\n <p\n class=\"status-block\"\n [class]=\"dispatchStatus.badge.color\"\n >\n {{ dispatchStatus.badge.text }}\n </p>\n }\n {{ dispatchStatus.label }}\n @if (driverOption.dispatchStatus?.statusCheckInNumber) {\n <p class=\"status-block\">\n {{ driverOption.dispatchStatus?.statusCheckInNumber }}\n </p>\n }\n </div>\n <p class=\"dispatch-separator\">|</p>\n }\n <p class=\"dispatch-load-count\">\n {{ driverOption.pendingLoadsCount }}\n </p>\n <svg-icon name=\"cai-load\" class=\"icon-sm\"></svg-icon>\n </div>\n <div class=\"end-item-base\">\n <p>{{ driverOption.payTypeValue }}</p>\n </div>\n </div>\n </button>\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #splitTruckRef>\n @if (dropdownOptions().length) {\n @for (splitTruckBoard of dropdownOptions(); track splitTruckBoard.id) {\n @let truckBoard = cast(splitTruckBoard, \"splitTruckBoard\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(truckBoard.id, $event)\"\n [class]=\"{\n unfolded: (truckBoard.trucks?.length ?? 0) > 0,\n }\"\n >\n <p>\n {{\n truckBoard.isTeamBoard ? \"Team Board\" : truckBoard.dispatcherName\n }}\n </p>\n <!-- TODO: Change to count once BE is fixed -->\n <p class=\"counter\">{{ truckBoard.trucks?.length || 0 }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n @for (truck of truckBoard.trucks || []; track truck.id) {\n @let truckOption = cast(truck, \"splitTruck\")!;\n <button\n class=\"dropdown-item\"\n (click)=\"handleOption(truckOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'splitTruck')?.id === truckOption.id,\n }\"\n >\n <div class=\"dropdown-subitem truck-item\">\n <svg-icon\n class=\"truck-icon\"\n [style.--truck-color]=\"truckOption.color?.code || ''\"\n [name]=\"truckOption.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"truck-number\"\n [innerHTML]=\"truckOption.truckNumber | highlightSearch: value()\"\n ></p>\n </div>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-hover\">\n @let dispatchStatus = truckOption.dispatchStatus | dispatchStatus;\n @if (dispatchStatus) {\n <div\n class=\"dispatch-status\"\n [class]=\"dispatchStatus.statusClass\"\n >\n @if (dispatchStatus.badge) {\n <p\n class=\"status-block\"\n [class]=\"dispatchStatus.badge.color\"\n >\n {{ dispatchStatus.badge.text }}\n </p>\n }\n {{ dispatchStatus.label }}\n @if (truckOption.dispatchStatus?.statusCheckInNumber) {\n <p class=\"status-block\">\n {{ truckOption.dispatchStatus?.statusCheckInNumber }}\n </p>\n }\n </div>\n <p class=\"dispatch-separator\">|</p>\n }\n <p class=\"dispatch-load-count\">\n {{ truckOption.pendingLoadsCount }}\n </p>\n <svg-icon name=\"cai-load\" class=\"icon-sm\"></svg-icon>\n </div>\n <div class=\"end-item-base\">\n @if (\n truckOption.location?.city &&\n truckOption.location?.stateShortName\n ) {\n <p>\n {{ truckOption.location?.city }},\n {{ truckOption.location?.stateShortName }}\n </p>\n }\n </div>\n </div>\n </button>\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #splitTrailerRef>\n @if (dropdownOptions().length) {\n @for (splitTrailerBoard of dropdownOptions(); track splitTrailerBoard.id) {\n @let trailerBoard = cast(splitTrailerBoard, \"splitTrailerBoard\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(trailerBoard.id, $event)\"\n [class]=\"{\n unfolded: (trailerBoard.trailers?.length ?? 0) > 0,\n }\"\n >\n <p>\n {{\n trailerBoard.isTeamBoard\n ? \"Team Board\"\n : trailerBoard.dispatcherName\n }}\n </p>\n <!-- TODO: Change to count once BE is fixed -->\n <p class=\"counter\">{{ trailerBoard.trailers?.length || 0 }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n @for (trailer of trailerBoard.trailers || []; track trailer.id) {\n @let trailerOption = cast(trailer, \"splitTrailer\")!;\n <button\n class=\"dropdown-item\"\n (click)=\"handleOption(trailerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'splitTrailer')?.id === trailerOption.id,\n }\"\n >\n <div class=\"dropdown-subitem trailer-item\">\n <svg-icon\n class=\"trailer-icon\"\n [style.--trailer-color]=\"trailerOption.color?.code || ''\"\n [name]=\"trailerOption.trailerType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"trailer-number\"\n [innerHTML]=\"\n trailerOption.trailerNumber | highlightSearch: value()\n \"\n ></p>\n </div>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-hover\">\n @let dispatchStatus =\n trailerOption.dispatchStatus | dispatchStatus;\n @if (dispatchStatus) {\n <div\n class=\"dispatch-status\"\n [class]=\"dispatchStatus.statusClass\"\n >\n @if (dispatchStatus.badge) {\n <p\n class=\"status-block\"\n [class]=\"dispatchStatus.badge.color\"\n >\n {{ dispatchStatus.badge.text }}\n </p>\n }\n {{ dispatchStatus.label }}\n @if (trailerOption.dispatchStatus?.statusCheckInNumber) {\n <p class=\"status-block\">\n {{ trailerOption.dispatchStatus?.statusCheckInNumber }}\n </p>\n }\n </div>\n <p class=\"dispatch-separator\">|</p>\n }\n <p class=\"dispatch-load-count\">\n {{ trailerOption.pendingLoadsCount }}\n </p>\n <svg-icon name=\"cai-load\" class=\"icon-sm\"></svg-icon>\n </div>\n <div class=\"end-item-base\">\n @if (\n trailerOption.location?.city &&\n trailerOption.location?.stateShortName\n ) {\n <p>\n {{ trailerOption.location?.city }},\n {{ trailerOption.location?.stateShortName }}\n </p>\n }\n </div>\n </div>\n </button>\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #tollRef>\n @if (dropdownOptions().length) {\n @for (toll of dropdownOptions(); track $index; let groupIndex = $index) {\n @let tollOption = cast(toll, \"tollOption\")!;\n @let isGroupFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === 0;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item pe-none\"\n [class]=\"{\n unfolded: tollOption.tollTransponders?.length || 0 > 0,\n focused: isGroupFocused,\n }\"\n >\n <p>\n {{ tollOption.groupName }}\n </p>\n </button>\n @let tollTransponders = tollOption.tollTransponders || [];\n @for (\n tollTransponder of tollTransponders;\n track tollTransponder.id;\n let optionIndex = $index\n ) {\n @let isOptionFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === optionIndex + 1;\n <!-- +1 since optionIndex is 0 for the group item header -->\n <button\n class=\"dropdown-item\"\n (click)=\"handleOption(tollTransponder, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'tollTransponderOption')?.id ===\n tollTransponder.id,\n focused: isOptionFocused,\n }\"\n >\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (tollTransponder.name || '' | highlightSearch: value())\n : tollTransponder.name\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Dispatcher dropdown -->\n\n<ng-template #dispatcherRef>\n @if (dropdownOptions().length) {\n @for (dispatcher of dropdownOptions(); track $index; let index = $index) {\n @let dispatcherOption = cast(dispatcher, \"dispatcher\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ dispatcherOption.id }}\"\n (click)=\"handleOption(dispatcherOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'dispatcher')?.id === dispatcherOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <cai-avatar\n [driver]=\"{\n id: dispatcherOption?.id || 0,\n firstName: (dispatcherOption?.fullName || ' ').split(' ')[0] || '',\n lastName: (dispatcherOption?.fullName || ' ').split(' ')[1] || '',\n avatarFile: dispatcherOption?.avatarFile,\n colorFlag: dispatcherOption?.colorFlag,\n }\"\n [rounded]=\"!config().squareAvatar\"\n [hover]=\"false\"\n ></cai-avatar>\n <p\n class=\"dropdown-content-hazardous\"\n [innerHTML]=\"\n search\n ? (dispatcherOption.fullName || '' | highlightSearch: value())\n : dispatcherOption.fullName\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Driver Owner dropdown -->\n\n<ng-template #driverOwnerRef>\n @if (dropdownOptions().length) {\n @for (driverOwner of dropdownOptions(); track $index; let index = $index) {\n @let driverOwnerOption = cast(driverOwner, \"driverOwner\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ driverOwnerOption.id }}\"\n (click)=\"handleOption(driverOwnerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'driverOwner')?.id === driverOwnerOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <cai-avatar\n [driver]=\"{\n id: driverOwnerOption?.id || 0,\n firstName: (driverOwnerOption?.fullName || ' ').split(' ')[0] || '',\n lastName: (driverOwnerOption?.fullName || ' ').split(' ')[1] || '',\n avatarFile: driverOwnerOption?.avatarFile,\n colorFlag: driverOwnerOption?.colorFlag,\n owner: driverOwnerOption?.driverType === 'OwnerOperator',\n driverType: {\n id: 0,\n name: (driverOwnerOption?.driverType | driverTypeLabel),\n },\n }\"\n [rounded]=\"false\"\n [hover]=\"false\"\n ></cai-avatar>\n <p\n class=\"dropdown-content\"\n [innerHTML]=\"\n search\n ? (driverOwnerOption.fullName || '' | highlightSearch: value())\n : driverOwnerOption.fullName\n \"\n ></p>\n <div class=\"dropdown-subitem-end\">\n <p class=\"driver-type\">\n {{ driverOwnerOption.driverType | driverTypeLabel }}\n </p>\n </div>\n <svg-icon\n name=\"cai-checkmark\"\n class=\"dropdown-item-icon no-margin\"\n ></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #truckRef>\n @if (dropdownOptions().length) {\n @for (truck of dropdownOptions(); track $index; let index = $index) {\n @let truckOption = cast(truck, \"truckOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ truckOption.id }}\"\n (click)=\"handleOption(truckOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'truckOption')?.id === truckOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (truckOption.name || '' | highlightSearch: value())\n : truckOption.name\n \"\n ></p>\n <svg-icon\n class=\"truck-trailer-option truck-trailer-icon-colors\"\n [class]=\"truckOption.logoName.slice(0, -4)\"\n [name]=\"truckOption.logoName.slice(0, -4)\"\n ></svg-icon>\n <svg-icon\n name=\"cai-checkmark\"\n class=\"dropdown-item-icon no-margin\"\n ></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #trailerRef>\n @if (dropdownOptions().length) {\n @for (truck of dropdownOptions(); track $index; let index = $index) {\n @let trailerOption = cast(truck, \"trailerOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ trailerOption.id }}\"\n (click)=\"handleOption(trailerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'trailerOption')?.id === trailerOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (trailerOption.name || '' | highlightSearch: value())\n : trailerOption.name\n \"\n ></p>\n\n <svg-icon\n class=\"truck-trailer-option truck-trailer-icon-colors\"\n [class]=\"trailerOption.logoName.slice(0, -4)\"\n [name]=\"trailerOption.logoName.slice(0, -4)\"\n ></svg-icon>\n <svg-icon\n name=\"cai-checkmark\"\n class=\"dropdown-item-icon no-margin\"\n ></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #providerRef>\n @if (dropdownOptions().length) {\n @for (provider of dropdownOptions(); track $index; let index = $index) {\n @let providerOption = cast(provider, \"provider\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ providerOption?.id }}\"\n (click)=\"handleOption(providerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'provider')?.id === providerOption?.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <svg-icon\n class=\"full-icon\"\n [name]=\"'cai-' + providerOption?.name?.toLowerCase()\"\n ></svg-icon>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Hazardous dropdown -->\n<ng-template #hazardousRef>\n @if (dropdownOptions().length) {\n @for (hazardous of dropdownOptions(); track $index; let index = $index) {\n @let hazardousOption = cast(hazardous, \"hazardous\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ hazardousOption.id }}\"\n (click)=\"handleOption(hazardousOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'hazardous')?.id === hazardousOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <svg-icon [name]=\"hazardousOption.logoName?.slice(0, -4)\"></svg-icon>\n <p\n class=\"dropdown-content-hazardous\"\n [innerHTML]=\"\n search\n ? (hazardousOption.description || '' | highlightSearch: value())\n : hazardousOption.description\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #pmRef>\n @if (dropdownOptions().length) {\n @for (pm of dropdownOptions(); track $index; let index = $index) {\n @let pmOption = cast(pm, \"pmOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ pmOption.id }}\"\n (click)=\"handleOption(pmOption, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'pmOption')?.id === pmOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <svg-icon\n class=\"icon\"\n [name]=\"pmOption.title | remapPmIcons\"\n ></svg-icon>\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (pmOption.title || '' | highlightSearch: value())\n : pmOption.title\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #colorRef>\n @if (dropdownOptions().length) {\n @for (color of dropdownOptions(); track $index; let index = $index) {\n @let colorOption = cast(color, \"colorOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item color-item\"\n id=\"option-{{ colorOption.id }}\"\n (click)=\"handleOption(colorOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'colorOption')?.id === colorOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <svg-icon\n class=\"icon cai-color\"\n [name]=\"'cai-color'\"\n [style.--color]=\"colorOption?.code\"\n [style.--hover-color]=\"colorOption?.hoverCode\"\n ></svg-icon>\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (colorOption.name || '' | highlightSearch: value())\n : colorOption.name\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #stateRef>\n @if (dropdownOptions().length) {\n @for (state of dropdownOptions(); track $index; let index = $index) {\n @let stateOption = cast(state, \"state\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ stateOption.id }}\"\n (click)=\"handleOption(stateOption, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'state')?.id === stateOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <svg-icon\n class=\"icon\"\n [name]=\"\n 'cai-' +\n stateOption?.countryType?.name?.toLowerCase() +\n '-' +\n stateOption?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (stateOption.stateShortName +\n ' ' +\n (config().fullState\n ? ' (' + stateOption?.stateName + ')'\n : '') || '' | highlightSearch: value())\n : stateOption.stateShortName +\n ' ' +\n (config().fullState ? ' (' + stateOption?.stateName + ')' : '')\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #fuelStopTransactionRef>\n @if (dropdownOptions().length) {\n @for (\n franchise of dropdownOptions();\n track franchise.id;\n let groupIndex = $index\n ) {\n @let isGroupFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === 0;\n @let franchiseOption = cast(franchise, \"franchise\")!;\n @if (franchiseOption?.count !== null) {\n <div\n class=\"dropdown-group\"\n [class.no-items]=\"!franchiseOption?.count\"\n [class]=\"{\n active: openGroup() === franchiseOption.id,\n }\"\n [style.--max-height]=\"\n openGroup() === franchiseOption.id\n ? 30 * ((franchiseOption.fuelStopStores?.length || 0) + 1) + 'px'\n : '26px'\n \"\n >\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(franchiseOption.id, $event, franchiseOption)\"\n [class]=\"{\n unfolded: openGroup() === franchiseOption.id,\n focused: isGroupFocused,\n }\"\n >\n <p\n [innerHTML]=\"\n franchiseOption?.businessName || '' | highlightSearch: value()\n \"\n ></p>\n <p class=\"counter\">{{ franchiseOption.count }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n @if (openGroup() === franchiseOption.id) {\n @if (franchiseOption.fuelStopStores?.length || 0 > 0) {\n @for (\n fuelStopStore of franchiseOption.fuelStopStores;\n track fuelStopStore.id\n ) {\n @let isOptionFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === $index + 1;\n <!-- +1 since optionIndex is 0 for the group item header -->\n <button\n tabindex=\"-1\"\n class=\"dropdown-item fuel-stop-transaction-store\"\n [class]=\"{\n focused: isOptionFocused,\n }\"\n (click)=\"handleOption(fuelStopStore, $event)\"\n >\n <p\n [innerHTML]=\"\n fuelStopStore?.store ?? '' | highlightSearch: value()\n \"\n ></p>\n @let city = fuelStopStore?.address?.city ?? \"\";\n @let state = fuelStopStore?.address?.stateShortName ?? \"\";\n @let zip = fuelStopStore?.address?.zipCode ?? \"\";\n <p\n class=\"fuel-stop-transaction-store-address\"\n [innerHTML]=\"\n city + (state || zip ? ', ' : '') + state + ' ' + zip\n | highlightSearch: value()\n \"\n ></p>\n\n @if (fuelStopStore?.[\"favourite\"]) {\n <svg-icon\n name=\"cai-favorite\"\n class=\"favorite-icon\"\n ></svg-icon>\n }\n </button>\n }\n <!-- Infinite scroll trigger - emits event when item comes into view -->\n <div\n class=\"dropdown-infinite-scroll-item\"\n caiIntersectionObserver\n [threshold]=\"0.1\"\n (inView)=\"onDropdownScrolledToBottom(true)\"\n ></div>\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n }\n </div>\n } @else {\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n [class.focused]=\"\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === 0\n \"\n (click)=\"handleOption(franchiseOption, $event)\"\n >\n <p\n class=\"fuel-stop-transaction-nostore\"\n [innerHTML]=\"\n franchiseOption?.businessName || '' | highlightSearch: value()\n \"\n ></p>\n </button>\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- #endregion -->\n\n<!-- #region Selected options -->\n\n<!-- selected dispatch -->\n<ng-template #selectedDispatchRef>\n @let dispatchOption = cast(selectedOption(), \"dispatch\");\n @if (dispatchOption && !inputRef.value && !isAdding()) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-subitem truck-item\">\n <svg-icon\n class=\"truck-icon\"\n [name]=\"dispatchOption!.truck.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p class=\"truck-number\">\n {{ dispatchOption!.truck.truckNumber }}\n </p>\n </div>\n <div class=\"dropdown-subitem trailer-item\">\n @if (dispatchOption!.trailer) {\n <svg-icon\n class=\"trailer-icon\"\n [name]=\"\n cast(\n selectedOption(),\n 'dispatch'\n )!.trailer?.trailerType?.logoName?.slice(0, -4)\n \"\n ></svg-icon>\n <p class=\"trailer-number\">\n {{ dispatchOption!.trailer?.trailerNumber }}\n </p>\n }\n </div>\n <div class=\"dropdown-subitem\">\n @if (dispatchOption!.coDriver) {\n <svg-icon class=\"dispatch-icon\" name=\"cai-people\"></svg-icon>\n <p class=\"driver-name\">\n {{\n dispatchOption!.driver.firstName +\n \" & \" +\n dispatchOption!.coDriver?.firstName\n }}\n </p>\n } @else {\n <cai-avatar\n [driver]=\"dispatchOption!.driver\"\n [size]=\"18\"\n [hover]=\"false\"\n ></cai-avatar>\n <p class=\"driver-name\">\n {{\n dispatchOption!.driver.firstName +\n \" \" +\n dispatchOption!.driver.lastName\n }}\n </p>\n }\n </div>\n <p class=\"selected-end-item\">\n {{ dispatchOption!.payType }}\n </p>\n </div>\n } @else {\n @if (!inputRef.value && this.config().dropdown == \"dispatch\") {\n <p class=\"dropdown-selected\">Unassigned</p>\n }\n }\n</ng-template>\n\n<!-- selected broker -->\n<ng-template #selectedBrokerRef>\n @let brokerOption = cast(selectedOption(), \"broker\");\n @if (brokerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n @if (brokerOption!.fraudCheck) {\n <svg-icon name=\"cai-status-warning-lite\" class=\"fraud-icon\"></svg-icon>\n }\n <p class=\"dropdown-selected-content\">{{ brokerOption!.businessName }}</p>\n <div class=\"selected-end-item\">\n @if (!brokerOption!.creditLimit) {\n <p>Unlimited</p>\n } @else {\n <p>\n {{ brokerOption!.availableCredit || 0 | currency }}\n </p>\n <div\n class=\"progress-bar\"\n [style.--progress]=\"\n (\n brokerOption!\n | brokerProgress: brokerOption!.dnu || brokerOption!.ban\n ).activePercentageOfPaid + '%'\n \"\n [class]=\"\n (\n brokerOption!\n | brokerProgress: brokerOption!.dnu || brokerOption!.ban\n ).status\n \"\n ></div>\n }\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedContactRef>\n @let contactOption = cast(selectedOption(), \"contact\");\n @if (contactOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"dropdown-selected-content\">{{ contactOption?.contactName }}</p>\n <div class=\"selected-end-item\">\n <p>{{ contactOption?.phone }}</p>\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedShipperRef>\n @let shipperOption = cast(selectedOption(), \"shipper\");\n @if (shipperOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"dropdown-selected-content\">{{ shipperOption?.businessName }}</p>\n <div class=\"selected-end-item\">\n <p>{{ shipperOption?.address?.address }}</p>\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedOwnerRef>\n @let ownerOption = cast(selectedOption(), \"owner\");\n @if (ownerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"owner-ein\">{{ ownerOption?.ein }}</p>\n <p class=\"\">{{ ownerOption?.name }}</p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedFuelcardRef>\n @let fuelcardOption = cast(selectedOption(), \"fuelCard\");\n @if (fuelcardOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"fuelcard-number\">\n {{ fuelcardOption?.number }}\n </p>\n <p class=\"fuelcard-brand\">\n {{ fuelcardOption?.brand }}\n </p>\n <p class=\"\">\n {{ fuelcardOption?.account }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedBankRef>\n @let bankOption = cast(selectedOption(), \"bank\");\n @if (bankOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n @if (bankOption?.logoName) {\n <svg-icon\n class=\"option-icon full-size\"\n [name]=\"bankOption?.logoName?.slice(0, -4) || ''\"\n ></svg-icon>\n } @else {\n <p class=\"dropdown-selected-content\">{{ bankOption?.name }}</p>\n }\n </div>\n }\n</ng-template>\n\n<ng-template #selectedProviderRef>\n @let providerOption = cast(selectedOption(), \"provider\");\n @if (providerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon full-size\"\n [name]=\"'cai-' + providerOption?.name?.toLowerCase()\"\n ></svg-icon>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedMakeRef>\n @let makeOption = cast(selectedOption(), \"make\");\n @if (makeOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n @if (makeOption?.logoName) {\n <svg-icon\n class=\"option-icon full-size\"\n [name]=\"makeOption?.logoName?.slice(0, -4) || ''\"\n ></svg-icon>\n } @else {\n <p class=\"dropdown-selected-content\">{{ makeOption?.name }}</p>\n }\n </div>\n }\n</ng-template>\n\n<ng-template #selectedStateRef>\n @let stateOption = cast(selectedOption(), \"state\");\n @if (stateOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon\"\n [name]=\"\n 'cai-' +\n stateOption?.countryType?.name?.toLowerCase() +\n '-' +\n stateOption?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n <p class=\"dropdown-selected-content\">\n {{ stateOption?.stateShortName }}\n {{ config().fullState ? \" (\" + stateOption?.stateName + \")\" : \"\" }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedDispatcherRef>\n @let dispatcherOption = cast(selectedOption(), \"dispatcher\");\n @if (dispatcherOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <cai-avatar\n [driver]=\"{\n id: dispatcherOption?.id || 0,\n firstName: (dispatcherOption?.fullName || ' ').split(' ')[0] || '',\n lastName: (dispatcherOption?.fullName || ' ').split(' ')[1] || '',\n avatarFile: dispatcherOption?.avatarFile,\n colorFlag: dispatcherOption?.colorFlag,\n }\"\n [rounded]=\"!config().squareAvatar\"\n ></cai-avatar>\n <p class=\"dropdown-selected-content\">{{ dispatcherOption?.fullName }}</p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedDriverOwnerRef>\n @let driverOwnerOption = cast(selectedOption(), \"driverOwner\");\n @if (driverOwnerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <cai-avatar\n [driver]=\"{\n id: driverOwnerOption?.id || 0,\n firstName: (driverOwnerOption?.fullName || ' ').split(' ')[0] || '',\n lastName: (driverOwnerOption?.fullName || ' ').split(' ')[1] || '',\n avatarFile: driverOwnerOption?.avatarFile,\n colorFlag: driverOwnerOption?.colorFlag,\n owner: driverOwnerOption?.driverType === 'OwnerOperator',\n driverType: {\n id: 0,\n name: (driverOwnerOption?.driverType | driverTypeLabel),\n },\n }\"\n [rounded]=\"false\"\n ></cai-avatar>\n <p class=\"dropdown-selected-content\">{{ driverOwnerOption?.fullName }}</p>\n <p class=\"selected-end-item driver-type\">\n {{ driverOwnerOption?.driverType | driverTypeLabel }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedTruckRef>\n @let truckOption = cast(selectedOption(), \"truckOption\");\n @if (truckOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon\"\n [name]=\"truckOption?.logoName?.slice(0, -4)\"\n ></svg-icon>\n <p class=\"dropdown-selected-content\">{{ truckOption?.name }}</p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedTrailerRef>\n @let trailerOption = cast(selectedOption(), \"trailerOption\");\n @if (trailerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon\"\n [name]=\"trailerOption?.logoName?.slice(0, -4)\"\n ></svg-icon>\n <p class=\"dropdown-selected-content\">{{ trailerOption?.name }}</p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedHazardousRef>\n @let hazardousOption = cast(selectedOption(), \"hazardous\");\n @if (hazardousOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"hazard-icon\"\n [name]=\"hazardousOption?.logoName?.slice(0, -4)\"\n ></svg-icon>\n <p class=\"dropdown-selected-content dropdown-selected-hazardous\">\n {{ hazardousOption?.description }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedPmRef>\n @let pmOption = cast(selectedOption(), \"pmOption\");\n @if (pmOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon\"\n [name]=\"pmOption?.title | remapPmIcons\"\n ></svg-icon>\n <p class=\"dropdown-selected-content\">\n {{ pmOption?.title }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedColorRef>\n @let colorOption = cast(selectedOption(), \"colorOption\");\n @if (colorOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon cai-color\"\n [name]=\"'cai-color'\"\n [style.--color]=\"colorOption?.code\"\n [style.--hover-color]=\"colorOption?.hoverCode\"\n ></svg-icon>\n <p class=\"dropdown-selected-content\">\n {{ colorOption?.name }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedTollRef>\n @let tollOption = cast(selectedOption(), \"tollTransponderOption\");\n @if (tollOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"dropdown-selected-content\">\n {{ tollOption?.name }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedSplitDriverRef>\n @let splitDriverOption = cast(selectedOption(), \"splitDriver\");\n @if (splitDriverOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-selected-content\">\n <div class=\"dropdown-subitem\">\n <cai-avatar [driver]=\"splitDriverOption\" [size]=\"18\"></cai-avatar>\n <p class=\"driver-name\">\n {{ splitDriverOption.firstName + \" \" + splitDriverOption.lastName }}\n </p>\n </div>\n </div>\n\n <p class=\"selected-end-item\">\n {{ splitDriverOption.payTypeValue }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedSplitTruckRef>\n @let splitTruckOption = cast(selectedOption(), \"splitTruck\");\n @if (splitTruckOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-selected-content\">\n <div class=\"dropdown-subitem trailer-item\">\n <svg-icon\n class=\"trailer-icon\"\n [name]=\"splitTruckOption!.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p class=\"trailer-number\">\n {{ splitTruckOption!.truckNumber }}\n </p>\n </div>\n </div>\n <p class=\"selected-end-item\">\n @if (\n splitTruckOption!.location?.city &&\n splitTruckOption!.location?.stateShortName\n ) {\n {{ splitTruckOption!.location?.city }},\n {{ splitTruckOption!.location?.stateShortName }}\n }\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedSplitTrailerRef>\n @let splitTrailerOption = cast(selectedOption(), \"splitTrailer\");\n @if (splitTrailerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-selected-content\">\n <div class=\"dropdown-subitem truck-item\">\n <svg-icon\n class=\"truck-icon\"\n [name]=\"splitTrailerOption!.trailerType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p class=\"truck-number\">\n {{ splitTrailerOption!.trailerNumber }}\n </p>\n </div>\n </div>\n <p class=\"selected-end-item\">\n @if (\n splitTrailerOption!.location?.city &&\n splitTrailerOption!.location?.stateShortName\n ) {\n {{ splitTrailerOption!.location?.city }},\n {{ splitTrailerOption!.location?.stateShortName }}\n }\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedAccidentDriverRef>\n @let accidentDriverOption = cast(selectedOption(), \"accidentDriver\");\n @if (accidentDriverOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-subitem accident-name\">\n <cai-avatar\n [driver]=\"accidentDriverOption!\"\n [size]=\"18\"\n [hover]=\"false\"\n ></cai-avatar>\n <p>\n {{\n accidentDriverOption!.firstName +\n \" \" +\n accidentDriverOption!.lastName\n }}\n </p>\n </div>\n <p class=\"accident-dob\">\n {{ accidentDriverOption!.dateOfBirth | date: \"MM/dd/yy\" }}\n </p>\n <p class=\"accident-cdl-number\">\n {{ accidentDriverOption!.cdlNumber }}\n </p>\n <div class=\"dropdown-subitem accident-state\">\n <p>{{ accidentDriverOption!.cdlState?.stateShortName }}</p>\n @if (\n accidentDriverOption!.cdlState?.countryType?.name &&\n accidentDriverOption!.cdlState?.stateShortName\n ) {\n <svg-icon\n class=\"icon option-icon\"\n [name]=\"\n 'cai-' +\n accidentDriverOption!.cdlState?.countryType?.name?.toLowerCase() +\n '-' +\n accidentDriverOption!.cdlState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedAccidentTruckRef>\n @let accidentTruckOption = cast(selectedOption(), \"accidentTruck\");\n @if (accidentTruckOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-subitem accident-unit\">\n @if (accidentTruckOption!.truckType?.logoName) {\n <svg-icon\n class=\"truck-icon option-icon\"\n [name]=\"accidentTruckOption!.truckType!.logoName.slice(0, -4)\"\n ></svg-icon>\n }\n <p>{{ accidentTruckOption!.truckNumber }}</p>\n </div>\n <p class=\"accident-vin\">{{ accidentTruckOption!.vin }}</p>\n <p class=\"accident-plate\">\n {{ accidentTruckOption!.licensePlateNumber }}\n </p>\n <div class=\"dropdown-subitem accident-state\">\n <p>{{ accidentTruckOption!.licenseState?.stateShortName }}</p>\n @if (\n accidentTruckOption!.licenseState?.countryType?.name &&\n accidentTruckOption!.licenseState?.stateShortName\n ) {\n <svg-icon\n class=\"icon option-icon\"\n [name]=\"\n 'cai-' +\n accidentTruckOption!.licenseState?.countryType?.name?.toLowerCase() +\n '-' +\n accidentTruckOption!.licenseState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedAccidentTrailerRef>\n @let accidentTrailerOption = cast(selectedOption(), \"accidentTrailer\");\n @if (accidentTrailerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-subitem accident-unit\">\n @if (accidentTrailerOption!.trailerType?.logoName) {\n <svg-icon\n class=\"trailer-icon option-icon\"\n [name]=\"accidentTrailerOption!.trailerType!.logoName.slice(0, -4)\"\n ></svg-icon>\n }\n <p>{{ accidentTrailerOption!.trailerNumber }}</p>\n </div>\n <p class=\"accident-vin\">{{ accidentTrailerOption!.vin }}</p>\n <p class=\"accident-plate\">\n {{ accidentTrailerOption!.licensePlateNumber }}\n </p>\n <div class=\"dropdown-subitem accident-state\">\n <p>{{ accidentTrailerOption!.licenseState?.stateShortName }}</p>\n @if (\n accidentTrailerOption!.licenseState?.countryType?.name &&\n accidentTrailerOption!.licenseState?.stateShortName\n ) {\n <svg-icon\n class=\"icon option-icon\"\n [name]=\"\n 'cai-' +\n accidentTrailerOption!.licenseState?.countryType?.name?.toLowerCase() +\n '-' +\n accidentTrailerOption!.licenseState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #passwordTooltip>\n {{ visible() ? \"Hide\" : \"Show\" }}\n</ng-template>\n\n<ng-template #errorTooltip>\n @if (\n (config().errorBehavior === \"floating\" ||\n (config().errorBehavior === \"static\" && hasText()) ||\n config().inTable) &&\n invalid &&\n !dropdown.isOpen()\n ) {\n {{ (ngControl?.errors | errorMessage: config().customErrors)[0] }}\n }\n</ng-template>\n\n<!-- #endregion -->\n", styles: ["input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{transition:background-color 5000s ease-in-out 0s!important}input:-webkit-autofill:focus{-webkit-text-fill-color:#ffffff!important}input:-moz-autofill,input:-moz-autofill-preview{filter:none}*,*:before,*:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}p,ul,ol,dl,blockquote,figure,pre{margin:0}button,input,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button{background:none;border:none;padding:0}img,svg,video,canvas,audio,iframe,embed,object{display:block;max-width:100%;height:auto}ul,ol{padding-left:1.5rem;list-style-position:outside}a{color:inherit;text-decoration:inherit}table{border-collapse:collapse;border-spacing:0}:focus:not(:focus-visible){outline:none}.app-input-container{--color-text: #2f2f2f;--color-text-negative: #df3c3c;--color-text-heading: #424242;--color-text-subtle: #919191;--color-text-inverse: #ffffff;--color-icon-neutral: #919191;--color-icon-negative: #e66767;--color-icon-positive: #6692f1;--color-icon-inverse: rgba(255, 255, 255, .6980392157);--color-icon-disable: #cccccc;--color-surface-neutral: #eeeeee;--color-surface-neutral-hover: #dadada;--color-surface-neutral-focus: #1d1d1d;--color-surface-positive: #e9effd;--color-surface-positive-hover: #bed0f9;--color-surface-positive-focus: #0b49d1;--color-surface-negative: #fbe9e9;--color-surface-negative-hover: #f4bebe;--color-surface-negative-focus: #c20c0c;--color-surface-disable: #f7f7f7;position:relative;border-radius:2px;background-color:var(--color-surface-neutral);color:var(--color-text);transition:background-color .1s cubic-bezier(.46,.03,.51,.95);display:flex}.app-input-container.inverse{--color-text: #ffffff;--color-text-negative: #ed9292;--color-text-heading: #ffffff;--color-text-inverse: #ffffff;--color-icon-neutral: #aaaaaa;--color-icon-negative: #ed9292;--color-icon-positive: #92b1f5;--color-icon-disable: #6c6c6c;--color-surface-neutral: #424242;--color-surface-neutral-hover: #6c6c6c;--color-surface-neutral-focus: #dadada;--color-surface-positive: rgba(59, 115, 237, .2);--color-surface-positive-hover: #2f519a;--color-surface-positive-focus: #0b49d1;--color-surface-negative: rgba(223, 60, 60, .2);--color-surface-negative-hover: #923030;--color-surface-negative-focus: #c20c0c;--color-surface-disable: rgba(66, 66, 66, .4)}.app-input-container.inverse:not(.has-error):not(.has-valid) .app-input:focus-visible{color:#2f2f2f}.app-input-container.inverse:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .icon,.app-input-container.inverse:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .icon-sm{color:#919191!important}.app-input-container.inverse:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .separator{background-color:#919191!important}.app-input-container.inverse:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .bg-icon{background-color:#919191!important;color:#dadada}.app-input-container.inverse.is-empty:has(.app-input:focus-visible) .icon,.app-input-container.inverse.is-empty:has(.app-input:focus-visible) .icon-sm{color:#919191!important}.app-input-container.inverse.is-empty:has(.app-input:focus-visible) .bg-icon{background-color:#919191!important;color:#dadada}.app-input-container.inverse.is-empty:has(.app-input:focus-visible) .separator{background-color:#919191!important}.app-input-container.inverse.has-text:has(.app-input:disabled) .app-input-label{color:#424242!important}.app-input-container.hovered{background-color:var(--color-surface-neutral-hover)}.app-input-container.hovered:not(:has(.app-input:disabled)) .sub-label,.app-input-container.hovered:not(:has(.app-input:disabled)) .app-input-label .accident-state{margin-right:44px}@media(hover:hover){.app-input-container:hover{background-color:var(--color-surface-neutral-hover)}.app-input-container:hover:not(:has(.app-input:disabled)) .sub-label,.app-input-container:hover:not(:has(.app-input:disabled)) .app-input-label .accident-state{margin-right:44px}}.app-input-container.has-text .app-input-label{transform:translateY(-20px);font-weight:600;font-size:11px;color:var(--color-text-heading)!important}.app-input-container.has-text.fade-placeholder .app-input-label{transform:translateY(0);opacity:0}.app-input-container.has-text .subcontent{opacity:1!important}.app-input-container.has-text.static-placeholder .app-input-label{transform:translateY(0);opacity:1;color:var(--color-text)}@media(hover:hover){.app-input-container.has-text.is-address:hover .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-text.is-address:hover .bg-icon{background-color:var(--color-icon-neutral);color:var(--color-surface-neutral-hover)}}.app-input-container.has-text.is-address:has(.app-input:focus-visible) .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-text.is-address:has(.app-input:focus-visible) .bg-icon{background-color:var(--color-icon-inverse);color:var(--color-surface-neutral-focus)}.app-input-container:has(.app-input:focus-visible){background-color:var(--color-surface-neutral-focus)}.app-input-container:has(.app-input:focus-visible) .app-input-label{transform:translateY(-20px);font-weight:600;font-size:11px;color:var(--color-text-heading)!important}.app-input-container:has(.app-input:focus-visible) .subcontent{opacity:1!important;color:#ffffffb2;left:unset!important;right:4px!important}.app-input-container:has(.app-input:focus-visible).has-text .subcontent{right:26px!important}.app-input-container:has(.app-input:focus-visible) .sub-label,.app-input-container:has(.app-input:focus-visible) .app-input-label .accident-state{margin-right:44px}.app-input-container:has(.app-input:focus-visible).fade-placeholder .app-input-label{transform:translateY(0);opacity:0}.app-input-container:has(.app-input:focus-visible).static-placeholder .app-input-label{transform:translateY(0);opacity:1;color:var(--color-text-inverse)!important}.app-input-container:has(.app-input:focus-visible) .bg-icon{background-color:var(--color-icon-inverse);color:var(--color-surface-neutral-focus)}.app-input-container:has(.app-input:focus-visible) .separator{background-color:var(--color-icon-inverse)!important}.app-input-container:has(.app-input:disabled){background-color:var(--color-surface-disable)}.app-input-container:has(.app-input:disabled).hovered{background-color:var(--color-surface-disable)}@media(hover:hover){.app-input-container:has(.app-input:disabled):hover{background-color:var(--color-surface-disable)}}.app-input-container:has(.app-input:disabled):focus{background-color:var(--color-surface-disable)}.app-input-container:has(.app-input:disabled) .app-input-label{color:var(--color-text-subtle)}.app-input-container:has(.app-input:disabled) .separator{background-color:var(--color-icon-disable)}.app-input-container:has(.app-input:disabled) .dropdown-icon-container{opacity:0;pointer-events:none!important}.app-input-container:has(.app-input:disabled) .dropdown-selected:has(.selected-end-item){width:100%}.app-input-container:has(.app-input:disabled) .driver-type{color:#919191}.app-input-container:has(.app-input:disabled) .icon-container{pointer-events:none!important}.app-input-container:has(.app-input:disabled):not(.disabled-removable) .cancel-button{display:none!important}.app-input-container:has(.app-input:required):not(:has(.app-input:disabled)) .app-input-name:after{content:\" *\";color:var(--color-text-negative)}@media(hover:hover){.app-input-container:not(.has-error).is-empty:not(:has(.app-input:focus-visible)) .dropdown-icon-container:hover .dropdown-icon{color:#424242!important}}@media(hover:hover){.app-input-container:not(.has-error).is-empty:not(:has(.app-input:focus-visible)) .hover-icon:hover{color:#424242!important}}@media(hover:hover){.app-input-container:not(.has-error).is-empty:has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon{color:#fff!important}}@media(hover:hover){.app-input-container:not(.has-error).is-empty:has(.app-input:focus-visible) .hover-icon:hover{color:#fff!important}}@media(hover:hover){.app-input-container:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon{color:#fff!important}}@media(hover:hover){.app-input-container:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .hover-icon:hover{color:#fff!important}}.app-input-container.canceled .app-input-label,.app-input-container.canceled .app-input{color:var(--color-text-subtle)!important}.app-input-container.canceled .icon-container .icon,.app-input-container.canceled .icon-container .icon-sm{color:var(--color-icon-disable)!important}.subcontent{pointer-events:none;position:absolute;left:6px;color:#919191;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);transition:right .1s ease-in-out,left .1s ease-in-out,transform .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95);opacity:0;font-family:Montserrat;font-weight:400;font-style:Regular;font-size:14px;line-height:18px;letter-spacing:0%;height:18px;overflow:hidden}.subcontent .subcontent-hide{opacity:0!important}.app-input-label{position:absolute;display:flex;gap:4px;left:0;font-size:14px;line-height:18px;font-weight:400;pointer-events:none;padding:.25rem 6px;color:var(--color-text);transition:transform .1s ease-in-out,font-weight .1s ease-in-out,color .1s ease-in-out,font-size .1s ease-in-out,opacity .1s ease-in-out;transform:translateY(0);-webkit-user-select:none;user-select:none}.app-input-label.placeholder-color{color:var(--placeholder-color)!important}.app-input{padding:.25rem 6px;width:100%;font-size:14px;line-height:18px;font-weight:400;border:0;outline:none;margin-top:auto;background-color:transparent;transition:color .1s cubic-bezier(.46,.03,.51,.95);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:relative}.app-input:focus-visible{color:var(--color-text-inverse)}@media(pointer:coarse){.app-input{font-size:16px;transform:scale(.875);transform-origin:left center;height:26px}}.app-input-error{position:absolute;bottom:-16px;right:6px;font-size:11px;font-weight:600;opacity:0;pointer-events:none;-webkit-user-select:none;user-select:none;transition:opacity .1s cubic-bezier(.46,.03,.51,.95),transform .1s cubic-bezier(.46,.03,.51,.95);color:var(--color-text-negative);transform:translateY(-10px)}.app-input-container.has-error{background-color:var(--color-surface-negative)}.app-input-container.has-error:not(.has-icon):not(.has-password):not(.has-right) .app-input{padding-right:26px}.app-input-container.has-error:has(.app-input:focus-visible):not(.has-right) .app-input{padding-right:26px}@media(hover:hover){.app-input-container.has-error:hover:not(.has-right) .app-input{padding-right:26px}}.app-input-container.has-error.has-right .app-input{padding-right:6px;padding-left:26px}.app-input-container.has-error.hovered{background-color:var(--color-surface-negative-hover)}.app-input-container.has-error.hovered.has-text .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-error.hovered.has-text .bg-icon{background-color:var(--color-icon-negative);color:var(--color-surface-negative-hover)}@media(hover:hover){.app-input-container.has-error:hover{background-color:var(--color-surface-negative-hover)}.app-input-container.has-error:hover.has-text .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-error:hover.has-text .bg-icon{background-color:var(--color-icon-negative);color:var(--color-surface-negative-hover)}}.app-input-container.has-error:has(.app-input:focus-visible){background-color:var(--color-surface-negative-focus);color:var(--color-text-inverse)}.app-input-container.has-error:has(.app-input:focus-visible).has-text .button-icon{opacity:1}.app-input-container.has-error:has(.app-input:focus-visible).has-text .bg-icon{background-color:var(--color-icon-inverse);color:var(--color-surface-negative-focus)}.app-input-container.has-error:has(.app-input:focus-visible).is-empty,.app-input-container.has-error:has(.app-input:focus-visible).has-dropdown:not(.has-selected){background-color:var(--color-surface-neutral-focus)!important}.app-input-container.has-error:has(.app-input:focus-visible).is-empty .app-input-error,.app-input-container.has-error:has(.app-input:focus-visible).has-dropdown:not(.has-selected) .app-input-error{opacity:0}.app-input-container.has-error:has(.app-input:focus-visible).is-empty .bg-icon,.app-input-container.has-error:has(.app-input:focus-visible).has-dropdown:not(.has-selected) .bg-icon{color:var(--color-surface-neutral-focus)!important}.app-input-container.has-error:has(.app-input:not(:focus-visible)).app-input-container:not(:hover) .warning-icon,.app-input-container.has-error.is-empty:has(.app-input:not(:focus-visible)) .warning-icon{opacity:1!important}.app-input-container.has-error .app-input-error{opacity:1;transform:translateY(0);pointer-events:auto}.app-input-container.has-error .app-input::selection{background-color:#ffffff4d}.app-input-container.has-error .icon-container .separator,.app-input-container.has-error .dropdown-icon-container .separator{background-color:var(--color-icon-negative)}.app-input-container.has-error .icon-container .icon,.app-input-container.has-error .icon-container .icon-sm,.app-input-container.has-error .dropdown-icon-container .icon,.app-input-container.has-error .dropdown-icon-container .icon-sm{color:var(--color-icon-negative)}@media(hover:hover){.app-input-container.has-error:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .bg-icon:hover{background-color:#c20c0c!important}}@media(hover:hover){.app-input-container.has-error:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .dropdown-icon-container:hover .dropdown-icon{color:#c20c0c!important}}@media(hover:hover){.app-input-container.has-error:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .hover-icon:hover{color:#c20c0c!important}}@media(hover:hover){.app-input-container.has-error:not(.removable):has(.app-input:focus-visible) .bg-icon:hover{background-color:#fff!important}}@media(hover:hover){.app-input-container.has-error:not(.removable):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon{color:#fff!important}}@media(hover:hover){.app-input-container.has-error:not(.removable):has(.app-input:focus-visible) .hover-icon:hover{color:#fff!important}}.app-input-container.has-valid:not(.has-icon):not(.has-password):not(.has-right) .app-input{padding-right:26px}.app-input-container.has-valid:has(.app-input:focus-visible):not(.has-right) .app-input{padding-right:26px}@media(hover:hover){.app-input-container.has-valid:hover:not(.has-right) .app-input{padding-right:26px}}.app-input-container.has-valid.has-right .app-input{padding-right:6px;padding-left:26px}.app-input-container.has-valid.has-text:not(.has-dropdown):not(.in-table),.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.in-table),.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.in-table){background-color:var(--color-surface-positive)}.app-input-container.has-valid.has-text:not(.has-dropdown).hovered,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown).hovered,.app-input-container.has-valid.has-multiple-dropdown.has-text.hovered{background-color:var(--color-surface-positive-hover)}.app-input-container.has-valid.has-text:not(.has-dropdown).hovered .button-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown).hovered .button-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text.hovered .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-valid.has-text:not(.has-dropdown).hovered .bg-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown).hovered .bg-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text.hovered .bg-icon{background-color:var(--color-icon-positive);color:var(--color-surface-positive-hover)}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):hover,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):hover,.app-input-container.has-valid.has-multiple-dropdown.has-text:hover{background-color:var(--color-surface-positive-hover)}.app-input-container.has-valid.has-text:not(.has-dropdown):hover .button-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):hover .button-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:hover .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-valid.has-text:not(.has-dropdown):hover .bg-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):hover .bg-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:hover .bg-icon{background-color:var(--color-icon-positive);color:var(--color-surface-positive-hover)}}.app-input-container.has-valid.has-text:not(.has-dropdown):has(.app-input:focus-visible),.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):has(.app-input:focus-visible),.app-input-container.has-valid.has-multiple-dropdown.has-text:has(.app-input:focus-visible){background-color:var(--color-surface-positive-focus);color:var(--color-text-inverse)}.app-input-container.has-valid.has-text:not(.has-dropdown):has(.app-input:focus-visible) .button-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):has(.app-input:focus-visible) .button-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:has(.app-input:focus-visible) .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-valid.has-text:not(.has-dropdown):has(.app-input:focus-visible) .bg-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):has(.app-input:focus-visible) .bg-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:has(.app-input:focus-visible) .bg-icon{background-color:var(--color-icon-inverse);color:var(--color-surface-positive-focus)}.app-input-container.has-valid.has-text:not(.has-dropdown):has(.app-input:not(:focus-visible)).app-input-container:not(:hover) .positive-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):has(.app-input:not(:focus-visible)).app-input-container:not(:hover) .positive-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:has(.app-input:not(:focus-visible)).app-input-container:not(:hover) .positive-icon{opacity:1}.app-input-container.has-valid.has-text:not(.has-dropdown) .app-input::selection,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .app-input::selection,.app-input-container.has-valid.has-multiple-dropdown.has-text .app-input::selection{background-color:#ffffff4d}.app-input-container.has-valid.has-text:not(.has-dropdown) .icon-container .separator,.app-input-container.has-valid.has-text:not(.has-dropdown) .dropdown-icon-container .separator,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .icon-container .separator,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .dropdown-icon-container .separator,.app-input-container.has-valid.has-multiple-dropdown.has-text .icon-container .separator,.app-input-container.has-valid.has-multiple-dropdown.has-text .dropdown-icon-container .separator{background-color:var(--color-icon-positive)}.app-input-container.has-valid.has-text:not(.has-dropdown) .icon-container .icon,.app-input-container.has-valid.has-text:not(.has-dropdown) .icon-container .icon-sm,.app-input-container.has-valid.has-text:not(.has-dropdown) .dropdown-icon-container .icon,.app-input-container.has-valid.has-text:not(.has-dropdown) .dropdown-icon-container .icon-sm,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .icon-container .icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .icon-container .icon-sm,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .dropdown-icon-container .icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .dropdown-icon-container .icon-sm,.app-input-container.has-valid.has-multiple-dropdown.has-text .icon-container .icon,.app-input-container.has-valid.has-multiple-dropdown.has-text .icon-container .icon-sm,.app-input-container.has-valid.has-multiple-dropdown.has-text .dropdown-icon-container .icon,.app-input-container.has-valid.has-multiple-dropdown.has-text .dropdown-icon-container .icon-sm{color:var(--color-icon-positive)}.app-input-container.has-valid.has-text:not(.has-dropdown) .icon-container .password-key,.app-input-container.has-valid.has-text:not(.has-dropdown) .dropdown-icon-container .password-key,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .icon-container .password-key,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .dropdown-icon-container .password-key,.app-input-container.has-valid.has-multiple-dropdown.has-text .icon-container .password-key,.app-input-container.has-valid.has-multiple-dropdown.has-text .dropdown-icon-container .password-key{opacity:0;pointer-events:none}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .bg-icon:hover,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .bg-icon:hover,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .bg-icon:hover{background-color:#0b49d1!important}}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .dropdown-icon-container:hover .dropdown-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .dropdown-icon-container:hover .dropdown-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .dropdown-icon-container:hover .dropdown-icon{color:#0b49d1!important}}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .hover-icon:hover,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .hover-icon:hover,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .hover-icon:hover{color:#0b49d1!important}}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):has(.app-input:focus-visible) .bg-icon:hover,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):has(.app-input:focus-visible) .bg-icon:hover,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):has(.app-input:focus-visible) .bg-icon:hover{background-color:#fff!important}}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon{color:#fff!important}}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):has(.app-input:focus-visible) .hover-icon:hover,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):has(.app-input:focus-visible) .hover-icon:hover,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):has(.app-input:focus-visible) .hover-icon:hover{color:#fff!important}}.in-table,.in-table.has-error,.in-table.has-valid.has-text{background-color:transparent}.in-table.has-error:not(:hover).in-table:not(.app-input-container:has(.app-input:focus-visible)) .app-input{color:var(--color-text-negative)}.in-table.has-error:not(:hover).in-table:not(.app-input-container:has(.app-input:focus-visible)):not(.static-placeholder) .app-input-label{color:var(--color-text-negative)}.in-table .dropdown-icon-container{opacity:0}@media(hover:hover){.in-table:hover .dropdown-icon-container{opacity:1}}.in-table:has(.app-input:focus-visible) .dropdown-icon-container{opacity:1}.app-input-icon{position:absolute;right:4px;top:4px;pointer-events:none;transition:color .1s cubic-bezier(.46,.03,.51,.95),background-color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95)}.button-icon{opacity:0;pointer-events:none}@media(hover:hover){.button-icon:hover{cursor:pointer}}.bg-icon{background-color:var(--color-icon-neutral);color:var(--color-surface-neutral);border-radius:1px;height:18px;width:18px;padding:0;display:grid;place-items:center;transition:background-color .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95),transform .1s cubic-bezier(.46,.03,.51,.95);transform-box:border-box;transform-origin:center;will-change:transform}.bg-icon svg{transition:transform .1s cubic-bezier(.46,.03,.51,.95)}@media(hover:hover){.bg-icon:hover{transform:scale(1.2222222222)}.bg-icon:hover svg{transform:scale(.8181818182)}}.bg-icon:active{transform:scale(1)}.round-icon{background-color:#919191;color:#2f2f2f;border-radius:50%;height:18px;width:18px;padding:0;display:grid;place-items:center;transition:background-color .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95)}.positive-icon{color:var(--color-icon-positive);height:18px;width:18px;display:grid;place-items:center;opacity:0}.warning-icon{color:var(--color-icon-negative);height:18px;width:18px;display:grid;place-items:center;opacity:0}.text-color-positive:not(:hover):not(:has(.app-input:focus-visible)) .app-input{color:#3b73ed}.is-plan.has-selected .app-input,.is-plan.has-selected .dropdown-selected-content,.is-plan.has-selected .selected-text{font-weight:700}.is-plan.has-selected:not(:has(.app-input:focus-visible)) .app-input,.is-plan.has-selected:not(:has(.app-input:focus-visible)) .dropdown-selected-content,.is-plan.has-selected:not(:has(.app-input:focus-visible)) .selected-text{color:#3b73ed}@media(hover:hover){.is-plan.has-selected:not(:has(.app-input:focus-visible)):hover .app-input,.is-plan.has-selected:not(:has(.app-input:focus-visible)):hover .dropdown-selected-content,.is-plan.has-selected:not(:has(.app-input:focus-visible)):hover .selected-text{color:#0b49d1}}.floating-error .app-input-error{opacity:0!important}.static-error .app-input-error{pointer-events:none!important;transform:translateY(calc(-100% - 4px))!important;transition:margin .1s ease-in-out,opacity .1s ease-in-out}.static-error.has-icon .app-input-error{margin-right:26px!important}.static-error:has(.app-input:not(:focus-visible)) .app-input-error{opacity:1}.static-error.has-text .app-input-error{opacity:0!important}.static-placeholder .app-input-label{position:relative;white-space:nowrap;font-size:11px;font-weight:600}.static-placeholder .dropdown-selected{overflow:hidden;display:flex!important;justify-content:left!important}.static-placeholder .dropdown-selected .selected-label-hidden{width:max-content;font-size:11px;font-weight:600;opacity:0;-webkit-user-select:none;user-select:none;pointer-events:none}.static-placeholder .dropdown-selected .selected-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;display:inline-block}.static-placeholder .app-input{padding-left:0!important}.static-placeholder.has-dropdown .cancel-button{display:none}.static-placeholder.has-dropdown .dropdown-icon-container .dropdown-icon{opacity:0;pointer-events:none}.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):has(.app-input:focus-visible) .icon-container .icon,.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):has(.app-input:focus-visible) .icon-container .icon-sm{opacity:0}.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):has(.app-input:focus-visible) .dropdown-icon-container{z-index:5;pointer-events:auto;cursor:pointer}.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):has(.app-input:focus-visible) .dropdown-icon-container .dropdown-icon{opacity:1!important}@media(hover:hover){.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):hover .icon-container .icon,.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):hover .icon-container .icon-sm{opacity:0}.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):hover .dropdown-icon-container{z-index:5;pointer-events:auto;cursor:pointer}.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):hover .dropdown-icon-container .dropdown-icon{opacity:1!important}}.static-placeholder.has-dropdown .dropdown-icon-container{right:4px!important;left:auto!important}.app-input-container.has-icon:has(.app-input:focus-visible) .icon-container .icon,.app-input-container.has-icon:has(.app-input:focus-visible) .icon-container .icon-sm,.app-input-container.has-icon:has(.app-input:focus-visible) .dropdown-icon-container .icon,.app-input-container.has-icon:has(.app-input:focus-visible) .dropdown-icon-container .icon-sm,.app-input-container.has-password:has(.app-input:focus-visible) .icon-container .icon,.app-input-container.has-password:has(.app-input:focus-visible) .icon-container .icon-sm,.app-input-container.has-password:has(.app-input:focus-visible) .dropdown-icon-container .icon,.app-input-container.has-password:has(.app-input:focus-visible) .dropdown-icon-container .icon-sm,.app-input-container.has-dropdown:has(.app-input:focus-visible) .icon-container .icon,.app-input-container.has-dropdown:has(.app-input:focus-visible) .icon-container .icon-sm,.app-input-container.has-dropdown:has(.app-input:focus-visible) .dropdown-icon-container .icon,.app-input-container.has-dropdown:has(.app-input:focus-visible) .dropdown-icon-container .icon-sm{color:var(--color-icon-inverse)!important}.app-input-container.has-icon.colored-icon .icon-container .icon,.app-input-container.has-icon.colored-icon .icon-container .icon-sm,.app-input-container.has-password.colored-icon .icon-container .icon,.app-input-container.has-password.colored-icon .icon-container .icon-sm,.app-input-container.has-dropdown.colored-icon .icon-container .icon,.app-input-container.has-dropdown.colored-icon .icon-container .icon-sm{color:var(--icon-color)}.app-input-container.has-icon.is-empty:has(.app-input:disabled) .icon-container .icon,.app-input-container.has-icon.is-empty:has(.app-input:disabled) .icon-container .icon-sm,.app-input-container.has-icon.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon,.app-input-container.has-icon.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon-sm,.app-input-container.has-password.is-empty:has(.app-input:disabled) .icon-container .icon,.app-input-container.has-password.is-empty:has(.app-input:disabled) .icon-container .icon-sm,.app-input-container.has-password.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon,.app-input-container.has-password.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon-sm,.app-input-container.has-dropdown.is-empty:has(.app-input:disabled) .icon-container .icon,.app-input-container.has-dropdown.is-empty:has(.app-input:disabled) .icon-container .icon-sm,.app-input-container.has-dropdown.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon,.app-input-container.has-dropdown.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon-sm{color:var(--color-icon-disable)!important}.app-input-container.has-icon .positive-icon,.app-input-container.has-icon .warning-icon,.app-input-container.has-password .positive-icon,.app-input-container.has-password .warning-icon,.app-input-container.has-dropdown .positive-icon,.app-input-container.has-dropdown .warning-icon{display:none!important}.app-input-container.has-icon .icon,.app-input-container.has-icon .icon-sm,.app-input-container.has-password .icon,.app-input-container.has-password .icon-sm,.app-input-container.has-dropdown .icon,.app-input-container.has-dropdown .icon-sm{height:18px;width:18px;display:grid;place-items:center;color:var(--color-icon-neutral);transition:color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95);opacity:1}.app-input-container.has-icon:has(.app-input:focus-visible):not(.static-placeholder) .dropdown-selected,.app-input-container.has-password:has(.app-input:focus-visible):not(.static-placeholder) .dropdown-selected,.app-input-container.has-dropdown:has(.app-input:focus-visible):not(.static-placeholder) .dropdown-selected{width:calc(100% - 48px)!important}@media(hover:hover){.app-input-container.has-icon:hover:not(:has(.app-input:disabled)):not(.static-placeholder) .dropdown-selected,.app-input-container.has-password:hover:not(:has(.app-input:disabled)):not(.static-placeholder) .dropdown-selected,.app-input-container.has-dropdown:hover:not(:has(.app-input:disabled)):not(.static-placeholder) .dropdown-selected{width:calc(100% - 48px)!important}}.icon-sm{height:14px;width:14px}.app-input-container.has-icon .icon-container,.app-input-container.has-password .icon-container{height:26px;display:flex;justify-items:center;align-items:center;gap:4px;padding:.25rem 0 .25rem 6px}@media(hover:hover){.app-input-container.has-icon .icon-container:hover,.app-input-container.has-password .icon-container:hover{cursor:text}}.app-input-container.has-icon .subcontent,.app-input-container.has-password .subcontent{left:32px}.app-input-container.has-icon .app-input-label,.app-input-container.has-password .app-input-label{left:27px}.app-input-container.has-icon .app-input,.app-input-container.has-password .app-input{padding-left:4px}.separator{height:14px;width:1px;border-radius:2px;background-color:var(--color-icon-neutral);transition:background-color .1s cubic-bezier(.46,.03,.51,.95);opacity:40%}.has-password .password-icons{display:grid;place-items:center;position:relative;height:18px;width:18px}.has-password .password-icons .icon,.has-password .password-icons .icon-sm{position:absolute;opacity:0}.has-password.is-empty:has(.app-input:not(:focus-visible)) .password-key{opacity:1!important}.has-password.is-empty:has(.app-input:not(:focus-visible)) .password-icons{pointer-events:none}.has-password:has(.app-input:disabled) .password-icons{pointer-events:none}.has-password.has-text .password-hidden,.has-password:has(.app-input:focus-visible) .password-hidden{opacity:1!important}@media(hover:hover){.has-password.has-text .password-hidden:hover,.has-password:has(.app-input:focus-visible) .password-hidden:hover{cursor:pointer}}.has-visible.has-text .password-shown,.has-visible:has(.app-input:focus-visible) .password-shown{opacity:1!important}@media(hover:hover){.has-visible.has-text .password-shown:hover,.has-visible:has(.app-input:focus-visible) .password-shown:hover{cursor:pointer}}.has-visible.has-text .password-hidden,.has-visible:has(.app-input:focus-visible) .password-hidden{opacity:0!important;pointer-events:none}.has-number .number-container{position:relative;display:flex;justify-content:center;align-items:center;right:4px;pointer-events:none}.has-number .number-buttons{display:flex;gap:4px;position:absolute;right:0;justify-content:center;align-items:center;opacity:0;transition:opacity .1s cubic-bezier(.46,.03,.51,.95);pointer-events:none}.has-number .plus-icon,.has-number .minus-icon{cursor:pointer;pointer-events:none}.has-number:has(.app-input:focus-visible){cursor:text}.has-number:has(.app-input:focus-visible) .number-buttons{opacity:1}.has-number:has(.app-input:focus-visible) .plus-icon{pointer-events:auto}.has-number:has(.app-input:focus-visible) .minus-icon{pointer-events:auto}.has-number:has(.app-input:focus-visible) .button-icon{opacity:0!important;pointer-events:none!important}.has-number:has(.app-input:focus-visible) .number-container{width:60px}.has-number:has(.app-input:focus-visible) .subcontent{right:52px!important}.has-number:has(.app-input:focus-visible).has-text .subcontent{right:52px!important}.colored-icon .icon,.colored-icon .icon-sm{color:var(--icon-color)!important}.dropdown-anchor{position:absolute;width:100%;-webkit-user-select:none;user-select:none;pointer-events:none;opacity:0}.dropdown-infinite-scroll-item{width:100%;-webkit-user-select:none;user-select:none;pointer-events:none;opacity:0;height:0}.dropdown-menu{min-width:0px!important;width:100%;border:0;margin-top:4px;top:30px;height:var(--unfiltered-height);min-height:var(--unfiltered-height);padding:0!important;overflow:hidden;border-radius:0!important;background:transparent!important}.dropdown-menu.has-stroke .dropdown-menu-content{outline:1px solid #6c6c6c;outline-offset:-1px}.dropdown-menu .dropdown-menu-content{position:absolute;width:100%;background-color:#2f2f2f;border-radius:3px;padding:4px 0 4px 4px;max-height:244px;z-index:1100!important;overflow-y:scroll;margin-top:auto!important;scroll-padding:6px 0}.dropdown-menu .dropdown-menu-content::-webkit-scrollbar{background-color:#2f2f2f;border-radius:0 3px 3px 0;width:4px}.dropdown-menu .dropdown-menu-content::-webkit-scrollbar-thumb{width:4px;background:#2f2f2f;border-left:2px solid #919191;background-clip:padding-box;border-radius:1px 3px 3px 1px}@supports (-moz-appearance: none){.dropdown-menu .dropdown-menu-content{padding-right:4px;scrollbar-width:4px;scrollbar-color:#919191 transparent;scrollbar-gutter:stable!important}@media(hover:hover){.dropdown-menu .dropdown-menu-content:hover{scrollbar-color:#919191 transparent;scrollbar-width:4px!important;scrollbar-gutter:stable!important}}}@-moz-document url-prefix(){.dropdown-menu .dropdown-menu-content{overflow:-moz-scrollbars-vertical;scrollbar-width:4px;scrollbar-color:#919191 transparent}}.option-icon{color:#6c6c6c;transition:color .1s cubic-bezier(.46,.03,.51,.95)}.option-icon.full-size{width:max-content;min-width:100%;height:18px!important;min-height:18px;flex-shrink:0;overflow:hidden}.option-icon.full-size svg{height:18px;width:max-content}.cai-color{color:var(--color)!important;transition:color .1s cubic-bezier(.46,.03,.51,.95)}@media(hover:hover){.color-item:hover .cai-color{color:var(--hover-color)!important}}.dropdown-item{color:#fff;font-weight:400;font-size:14px;line-height:18px;height:26px;padding:4px;width:100%;scroll-margin:6px 0;outline:1px solid transparent;outline-offset:-1px;display:flex;align-items:center;justify-content:left;gap:4px;background-color:#2f2f2f;transition:background-color .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95),outline .1s cubic-bezier(.46,.03,.51,.95);border-radius:2px;position:relative}.dropdown-item.focused{outline:1px solid #6c6c6c!important}.dropdown-item.focused .end-item-base{opacity:0}.dropdown-item.focused .end-item-hover{opacity:1}.dropdown-item.focused .full-icon{color:#ffffffb2}.dropdown-item.focused .truck-trailer-option{opacity:1}.dropdown-item .icon,.dropdown-item .icon-sm{color:#919191}.dropdown-item .dropdown-content-with-icon{max-width:calc(100% - 22px);overflow-x:hidden;word-break:break-all;text-overflow:ellipsis;white-space:nowrap}.dropdown-item .dropdown-content-hazardous{max-width:calc(100% - 40px);overflow-x:hidden;word-break:break-all;text-overflow:ellipsis;white-space:nowrap}.dropdown-item .dropdown-content{max-width:70%;overflow-x:hidden;word-break:break-all;text-overflow:ellipsis;white-space:nowrap}@media(hover:hover){.dropdown-item:hover:not(.no-hover){background-color:#424242}.dropdown-item:hover:not(.no-hover) .end-item-base{opacity:0}.dropdown-item:hover:not(.no-hover) .end-item-hover{opacity:1}.dropdown-item:hover:not(.no-hover) .full-icon{color:#ffffffb2}.dropdown-item:hover:not(.no-hover) .truck-trailer-option{opacity:1}}.dropdown-item.no-hover{cursor:default;pointer-events:none}.dropdown-item:focus-visible{background-color:#424242;border:0;outline:none}.dropdown-item:not(:first-child){margin-top:4px}.dropdown-item.banned{color:#919191;cursor:default}@media(hover:hover){.dropdown-item.banned:hover{color:#919191;background-color:#2f2f2f}.dropdown-item.banned:hover .end-item-base{opacity:0}.dropdown-item.banned:hover .end-item-hover{opacity:1}}.dropdown-item.dnu .round-icon{background-color:#e66767}.dropdown-item.selected .dispatch-load-count,.dropdown-item.selected .unassigned-ltl,.dropdown-item.selected .unassigned-ltl .icon,.dropdown-item.selected .unassigned-ltl .icon-sm{color:#92b1f5}.dropdown-item:not(:hover):not(.focused):not(.selected) .truck-icon{color:#919191}.dropdown-item:not(:hover):not(.focused):not(.selected) .trailer-icon{color:#919191}@media(hover:hover){.dropdown-avatar:hover{z-index:20}}.no-results{color:#919191;font-weight:700;cursor:default;pointer-events:none}.add-new{color:#92b1f5!important;font-weight:700;font-size:11px}.add-new .dropdown-item-icon{opacity:1}@media(hover:hover){.add-new:hover{background-color:#3b73ed66!important;color:#fff!important}}.selected{font-weight:700}.selected .dropdown-item-icon{opacity:1}.selected .dropdown-item-count{color:#fff;background-color:#3b73ed}.selected .full-icon{color:#fff}.selected .end-item-base,.selected .end-item-hover{font-weight:700;color:#92b1f5}.selected .end-item-base .icon,.selected .end-item-base .icon-sm,.selected .end-item-hover .icon,.selected .end-item-hover .icon-sm{color:#92b1f5}.dropdown-item-icon{opacity:0;color:#92b1f5;width:14px;height:14px;margin-left:auto}.dropdown-item-icon.no-margin{margin-left:0}.dropdown-item-count{position:absolute;right:6px;top:50%;transform:translateY(-50%);padding:2px 5px;border-radius:10px;background-color:#424242;color:#ffffffb2;min-width:18px;line-height:14px;font-weight:600;font-size:11px;text-align:center}.fraud-icon{color:#fab15c!important;height:18px;width:18px}.dropdown-icon-container{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:18px;height:18px;display:grid;place-items:center;transition:opacity .1s cubic-bezier(.46,.03,.51,.95)}.dropdown-icon-container.open .dropdown-icon{transform:rotateX(180deg)}.dropdown-icon{transition:transform .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95)!important;transform:rotateX(0);cursor:pointer}.has-dropdown .app-input-icon{right:26px}.has-dropdown:has(.app-input:focus-visible) .subcontent{right:26px!important}.has-dropdown:has(.app-input:focus-visible).has-text .subcontent,.has-dropdown:has(.app-input:focus-visible).has-selected .subcontent{right:48px!important}.has-dropdown:has(.app-input:focus-visible):not(.static-placeholder):not(.is-adding) .app-input{padding-right:48px!important}@media(hover:hover){.has-dropdown:hover:not(.static-placeholder):not(.is-adding) .app-input{padding-right:48px!important}}.has-right .app-input{text-align:right}@media(pointer:coarse){.has-right .app-input{transform-origin:right center}}.has-right .positive-icon,.has-right .app-input-icon{left:4px;right:auto}.has-right .cancel-button{z-index:1}.has-right.has-number .plus-button-container{order:2}.has-right.has-number .minus-button-container{order:1}.has-right.static-placeholder .app-input-icon{right:4px!important;left:auto!important;opacity:0!important}.has-right.static-placeholder:has(.app-input:focus-visible) .cancel-button{opacity:0!important;pointer-events:none!important}.has-right.static-placeholder.removable .cancel-button .bg-icon{background-color:transparent!important}@media(hover:hover){.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-valid.has-text .cancel-button .bg-icon{color:var(--color-icon-positive)!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-valid.has-text .cancel-button .bg-icon:hover{color:#c20c0c!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-valid.has-text:has(.app-input:focus-visible) .cancel-button .bg-icon{color:var(--color-icon-inverse)!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-valid.has-text:has(.app-input:focus-visible) .cancel-button .bg-icon:hover{color:#fff!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)):not(.has-text) .cancel-button .bg-icon{color:var(--color-icon-neutral)!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)):not(.has-text) .cancel-button .bg-icon:hover{color:#c20c0c!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)):not(.has-text):has(.app-input:focus-visible) .cancel-button .bg-icon{color:var(--color-icon-inverse)!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)):not(.has-text):has(.app-input:focus-visible) .cancel-button .bg-icon:hover{color:#fff!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-error .cancel-button .bg-icon{color:var(--color-icon-negative)!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-error .cancel-button .bg-icon:hover{color:#c20c0c!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)) .cancel-button{opacity:1!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)) .cancel-button .bg-icon{opacity:1!important;pointer-events:auto!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)) .icon-container .icon,.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)) .icon-container .icon-sm{opacity:0!important}}@media(hover:hover){.has-right.static-placeholder:hover:not(:has(.app-input:focus-visible)):not(:has(.app-input:disabled)).has-text .cancel-button{opacity:1!important}}.has-right .app-input{order:1}.has-right.has-subcontent .app-input{flex:1;min-width:0;word-break:none}.has-right .dropdown-selected{margin-left:0!important;text-align:right!important;right:0!important;left:0!important;justify-content:flex-end!important;width:100%!important}.has-right .subcontent{position:relative!important;order:1;display:grid;place-items:center;padding-right:4px;height:unset!important;transform:translateY(0)!important;left:0!important;right:unset!important}.has-right .subcontent .subcontent-hide{display:none!important}.has-right.has-text .subcontent{left:0!important;right:unset!important}.has-right:has(.app-input:focus-visible) .subcontent{left:0!important;right:unset!important}.has-right.has-icon .subcontent,.has-right.has-password .subcontent{padding-right:0!important;padding-left:4px}.has-right.has-icon .dropdown-selected,.has-right.has-password .dropdown-selected{width:calc(100% - 24px)!important}.has-right.has-icon .app-input,.has-right.has-password .app-input{padding-right:0!important}.has-right.has-icon .app-input-label,.has-right.has-password .app-input-label{left:0!important}.has-right.has-icon.fade-placeholder .app-input-label,.has-right.has-password.fade-placeholder .app-input-label{left:auto!important;right:24px!important}.has-right.has-icon .icon-container,.has-right.has-password .icon-container{width:30px;padding-left:4px}.has-right.has-icon .icon-container .icon,.has-right.has-icon .icon-container .icon-sm,.has-right.has-password .icon-container .icon,.has-right.has-password .icon-container .icon-sm{order:2}.has-right.has-dropdown .app-input-icon{left:26px}.has-right.has-dropdown .dropdown-icon-container{left:4px}.has-right .warning-icon{display:none!important}.has-right.has-number .separator{order:3}.has-right.has-number .number-buttons{left:0;right:unset}.has-right.has-number .number-container{left:4px;right:unset}.has-right.has-number.app-input-container:has(.app-input:focus-visible) .app-input{padding-left:4px}.has-right .icon-container{order:2;margin-right:4px}.has-right .icon-container .password-icons{order:2}.has-right.fade-placeholder .app-input-label{right:0!important;left:auto!important}.has-right.fade-placeholder:has(.app-input:required) .app-input-name:after{content:none!important}.has-right.fade-placeholder:has(.app-input:required) .app-input-name:before{content:\"* \";color:var(--color-text-negative)}@media(hover:hover){.removable:has(.cancel-button:hover).in-table{background-color:transparent!important}.removable:has(.cancel-button:hover).in-table .separator{background-color:var(--color-icon-negative)!important}}@media(hover:hover){.removable:has(.cancel-button:hover):not(.in-table){background-color:var(--color-surface-negative-hover)!important}.removable:has(.cancel-button:hover):not(.in-table) .separator{background-color:var(--color-icon-negative)!important}}@media(hover:hover){.removable:has(.cancel-button:hover):has(.app-input:focus-visible){background-color:var(--color-surface-negative-focus)!important}.removable:has(.cancel-button:hover):has(.app-input:focus-visible) .separator{background-color:var(--color-icon-inverse)!important}}.no-clear .cancel-button{display:none!important}.is-adding{padding-right:20px}.is-adding .dropdown-icon{opacity:0!important}.is-adding .accept-button{pointer-events:none;opacity:0!important}@media(hover:hover){.is-adding:not(.removable):has(.app-input:focus-visible) .bg-icon:hover{background-color:#fff!important}}@media(hover:hover){.is-adding:not(.removable):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon{color:#fff!important}}@media(hover:hover){.is-adding:not(.removable):has(.app-input:focus-visible) .hover-icon:hover{color:#fff!important}}.is-adding:has(.app-input:focus-visible){padding-right:48px!important}@media(hover:hover){.is-adding:hover{padding-right:48px!important}}.is-adding.has-right{padding-left:26px}.is-adding.has-right.has-right:has(.app-input:focus-visible){padding-left:40px}@media(hover:hover){.is-adding.has-right.has-right:hover{padding-left:40px}}.is-adding .app-input-icon{right:4px}@media(hover:hover){.is-adding.has-text:hover .button-icon{opacity:1;pointer-events:auto!important}.is-adding.has-text:hover .accept-button{pointer-events:auto;opacity:1!important}}.is-adding.has-text:has(.app-input:focus-visible) .button-icon{opacity:1;pointer-events:auto!important}.is-adding.has-text:has(.app-input:focus-visible) .accept-button{pointer-events:auto;opacity:1!important}.is-adding .cancel-button{opacity:1!important;pointer-events:auto}.is-adding .dropdown-icon-container{pointer-events:none}.is-adding .accept-button{right:26px;pointer-events:auto}.dropdown-selected{-webkit-user-select:none;user-select:none;position:absolute;top:50%;transform:translateY(-50%);left:0;width:calc(100% - 22px);pointer-events:none;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;word-break:break-all;padding:.25rem 6px;font-size:14px;line-height:18px;font-weight:400;border:0;outline:none;margin-top:auto;background-color:transparent;transition:color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95),width .1s ease-in-out;color:var(--color-text);display:flex;gap:4px}.dropdown-selected .dropdown-selected-content{overflow:hidden;-webkit-user-select:none;user-select:none;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}.dropdown-selected .dropdown-selected-hazardous{max-width:calc(100% - 22px)}p.dropdown-selected{-webkit-user-select:none;user-select:none;display:block}.app-input-container:has(.app-input:focus-visible) .dropdown-selected{color:#fff;opacity:.7}.app-input-container:has(.app-input:focus-visible) .dropdown-selected .option-icon{color:#fff!important}.has-icon .positive-icon,.has-icon .warning-icon{display:none}.has-icon .dropdown-selected{left:27px;width:calc(100% - 49px)}@media(hover:hover){.has-icon:hover .dropdown-selected{width:calc(100% - 71px)}}.has-icon.app-input-container:has(.app-input:focus-visible) .dropdown-selected{width:calc(100% - 71px)}.hazard-icon{height:18px;width:max-content}.has-dispatch .app-input-label{transform:translateY(-20px);font-weight:600;font-size:11px;color:var(--color-text-heading)!important}.dispatch-load-count{color:#dadada;font-weight:700}.dispatch-separator{color:#919191;font-weight:400}.dispatch-status{font-family:Montserrat;font-weight:700;font-style:Bold;font-size:11px;line-height:14px;letter-spacing:0%;text-transform:uppercase;color:#ffffffb2;border-radius:2px;padding:2px 4px;display:flex;justify-content:center;align-items:center;gap:4px}.dispatch-status.status-available{background-color:#50ac2533}.dispatch-status.status-dispatched{background-color:#3b73ed33}.dispatch-status.status-arrivedpickup,.dispatch-status.status-checkedinpickup,.dispatch-status.status-checkedin,.dispatch-status.status-loading,.dispatch-status.status-loaded{background-color:#259f9433}.dispatch-status.status-arriveddelivery,.dispatch-status.status-checkedindelivery,.dispatch-status.status-offloading,.dispatch-status.status-offloaded,.dispatch-status.status-empty{background-color:#ff704333}.dispatch-status.status-canceled{background-color:#df3c3c33}.dispatch-status.status-off,.dispatch-status.status-deadheading,.dispatch-status.status-break,.dispatch-status.status-split{background-color:#91919133}.dispatch-status.status-towing{background-color:#9e47ec33}.dispatch-status.status-repair,.dispatch-status.status-dispatchedrepair,.dispatch-status.status-loadedrepair{background-color:#865e3a33}.dispatch-status .status-block{border-radius:1px;background-color:#aaa;padding-left:2px;padding-right:2px;font-family:Montserrat;font-weight:700;font-style:Bold;font-size:11px;line-height:12px;text-align:center;color:#2f2f2f;min-width:12px;height:12px}.dispatch-status .status-block.blue{background-color:#6692f1}.dispatch-status .status-block.green{background-color:#56b4ac}.dispatch-status .status-block.orange{background-color:#ff906d}.has-ftl-dispatch,.has-dispatch{min-width:600px}.has-ftl-dispatch:has(.app-input:focus-visible) .dropdown-selected .dispatch-icon,.has-ftl-dispatch:has(.app-input:focus-visible) .dropdown-selected .trailer-icon,.has-ftl-dispatch:has(.app-input:focus-visible) .dropdown-selected .truck-icon,.has-dispatch:has(.app-input:focus-visible) .dropdown-selected .dispatch-icon,.has-dispatch:has(.app-input:focus-visible) .dropdown-selected .trailer-icon,.has-dispatch:has(.app-input:focus-visible) .dropdown-selected .truck-icon{color:#fff}.dropdown-subitem{display:flex;justify-content:left;align-items:center;gap:4px}.truck-item{width:128px}.trailer-item{width:138px}.truck-trailer-option{opacity:0;transition:opacity .1s cubic-bezier(.46,.03,.51,.95);margin-left:auto}.truck-trailer-icon-colors.ic_truck_semi-truck,.truck-trailer-icon-colors.ic_truck_semi-wSleeper{color:#92b1f5}.truck-trailer-icon-colors.ic_truck_box-truck,.truck-trailer-icon-colors.ic_truck_reefer,.truck-trailer-icon-colors.ic_truck_cargo-van{color:#fbc88b}.truck-trailer-icon-colors.ic_truck_cement,.truck-trailer-icon-colors.ic_truck_dump,.truck-trailer-icon-colors.ic_truck_garbage{color:#ed9292}.truck-trailer-icon-colors.ic_truck_tow-truck,.truck-trailer-icon-colors.ic_truck_car-hauler,.truck-trailer-icon-colors.ic_truck_spotter{color:#86c9c3}.truck-trailer-icon-colors.ic_trailer_flatbed,.truck-trailer-icon-colors.ic_trailer_low-boy,.truck-trailer-icon-colors.ic_trailer_step-deck{color:#92b1f5}.truck-trailer-icon-colors.ic_trailer_chassis,.truck-trailer-icon-colors.ic_trailer_container{color:#80d6f1}.truck-trailer-icon-colors.ic_trailer_conestoga,.truck-trailer-icon-colors.ic_trailer_side-kit{color:#8785e8}.truck-trailer-icon-colors.ic_trailer_dryvan,.truck-trailer-icon-colors.ic_trailer_reefer{color:#fbc88b}.truck-trailer-icon-colors.ic_trailer_end-dump,.truck-trailer-icon-colors.ic_trailer_bottom-dump,.truck-trailer-icon-colors.ic_trailer_hopper{color:#ed9292}.truck-trailer-icon-colors.ic_trailer_tanker,.truck-trailer-icon-colors.ic_trailer_tanker-pneumatic{color:#ed93bb}.truck-trailer-icon-colors.ic_trailer_carhauler,.truck-trailer-icon-colors.ic_trailer_carhauler-stinger{color:#86c9c3}.sub-label{margin-left:auto;margin-right:22px;opacity:0;transition:margin .1s ease-in-out,opacity .1s ease-in-out;color:#6c6c6c}.app-input-label:has(.sub-label),.app-input-label:has(.accident-state){width:100%}.has-selected .sub-label{opacity:1}.dispatch-icon,.trailer-icon,.truck-icon{color:#919191;transition:color .1s cubic-bezier(.46,.03,.51,.95)}.truck-icon,.trailer-icon{width:42px}.truck-number{width:80px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.trailer-number{width:90px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.driver-name{max-width:170px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.dropdown-subitem-end{margin-left:auto;position:relative;height:26px;width:auto;display:flex;justify-content:right;align-items:center;font-family:Montserrat;font-weight:400;font-size:11px;line-height:18px;letter-spacing:0%;text-align:right;vertical-align:bottom}.end-item-base{position:absolute;display:flex;justify-content:right;align-items:center;width:max-content;gap:4px;color:#919191;transition:color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95);text-align:right}.dispatch-ltl{font-family:Montserrat;font-weight:700;font-size:11px;line-height:18px;letter-spacing:0%;text-align:right}.unassigned-ltl{margin-left:auto;display:flex;justify-content:right;align-items:center;width:max-content;gap:4px;color:#919191;transition:color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95);font-family:Montserrat;font-weight:700;font-size:11px;line-height:18px;letter-spacing:0%;text-align:right}.end-item-hover{position:absolute;display:flex;justify-content:right;align-items:center;gap:4px;width:max-content;opacity:0;color:#919191;transition:color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95)}.selected-end-item{margin-left:auto;font-family:Montserrat;font-weight:400;font-size:11px;line-height:18px;letter-spacing:0%;text-align:right;display:flex;justify-content:right;align-items:center;gap:4px}.group-item{font-family:Montserrat;font-weight:700!important;font-size:11px!important;line-height:18px;letter-spacing:0%;vertical-align:middle;text-transform:uppercase;background-color:#2f2f2f;color:#aaa!important}.group-item:not(:first-child){border-top:1px solid #424242}.group-item .group-icon{margin-left:auto;transform:rotate(180deg);transition:transform .1s cubic-bezier(.46,.03,.51,.95)}.group-item.unfolded{color:#fff!important}.group-item.unfolded .group-icon{transform:rotate(0)}.counter{background-color:#424242;padding:1px 4px;border-radius:60px;font-family:Montserrat;font-weight:600;font-size:11px;min-width:18px;line-height:14px;letter-spacing:0%;text-align:center;vertical-align:middle;color:#ffffffb2;transition:color .1s cubic-bezier(.46,.03,.51,.95)}.password-requirement{padding:6px;background-color:#fffffff2!important;box-shadow:0 0 4px #0006;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);overflow-y:hidden}.password-requirement p{font-family:Montserrat;font-weight:600;font-size:11px;line-height:14px;letter-spacing:0%;vertical-align:middle;color:#6c6c6c;font-style:italic}.password-requirement .icon,.password-requirement .icon-sm{width:14px!important;height:14px!important}.password-requirement .icon.checkmark,.password-requirement .checkmark.icon-sm{color:#ccc}.password-requirement .icon.cancel,.password-requirement .cancel.icon-sm{color:#e66767}.password-requirement ul{list-style-type:none;margin:6px 0 0;padding:0}.password-requirement ul li{color:#424242;font-size:11px;font-style:italic;font-weight:500;line-height:14px;display:flex;gap:4px}.password-requirement ul li.valid{color:#919191!important}.password-requirement ul li:not(:first-child){margin-top:6px}@media(hover:hover){.has-end-item:not(:has(.app-input:disabled)):hover .dropdown-selected{width:calc(100% - 44px)}}.has-end-item:not(:has(.app-input:disabled)):has(.app-input:focus-visible) .dropdown-selected{width:calc(100% - 44px)}.progress-bar{width:24px;height:8px;border-radius:2px;position:relative;transition:background-color .1s cubic-bezier(.46,.03,.51,.95)}.progress-bar:after{content:\"\";position:absolute;top:0;width:var(--progress);height:100%;transition:background-color .1s cubic-bezier(.46,.03,.51,.95)}.progress-bar.low{background-color:#df3c3c33}.progress-bar.low:after{background-color:#e66767}.progress-bar.medium{background-color:#f89b2e33}.progress-bar.medium:after{background-color:#fab15c}.progress-bar.high{background-color:#56b4ac33}.progress-bar.high:after{background-color:#56b4ac}.progress-bar.disable{background-color:#91919133}.progress-bar.disable:after{display:none}.app-input-container:has(.app-input:focus-visible) .selected-end-item .progress-bar{background-color:#fff!important}.full-icon{color:#919191}.fuelcard-number{width:216px}.fuelcard-brand{width:132px}.owner-ein{width:118px}.accident-name,.accident-unit,.accident-dob,.accident-cdl-number,.accident-vin,.accident-plate{flex-shrink:0}.accident-name>p,.accident-unit>p{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.accident-name{width:218px}.accident-unit{width:170px}.accident-dob,.accident-cdl-number,.accident-vin,.accident-plate{text-align:right;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.accident-dob{width:134px}.accident-cdl-number{width:140px}.accident-vin{width:182px}.accident-plate{width:140px}.accident-state{margin-left:auto;justify-content:flex-end;text-align:right}.app-input-label .accident-state{margin-right:22px;white-space:nowrap;transition:margin .1s ease-in-out}.has-multiple-dropdown.has-text{border-top-left-radius:0!important;border-top-right-radius:0!important}.multiple-container{display:flex;flex-wrap:wrap;gap:4px;padding:4px;border-top-left-radius:2px;border-top-right-radius:2px;position:relative;transition:background-color .1s ease-in-out;background-color:#e9effd}.multiple-container.hovered{background-color:#bed0f9}.multiple-container.hovered .multiple-selected{background-color:#e9effd}.multiple-container.focused{background-color:#0b49d1}.multiple-container.focused .multiple-selected{background-color:#3b73ed;color:#fff}.multiple-selected{background-color:#bed0f9;color:#2f2f2f;transition:background-color .1s ease-in-out,color .1s ease-in-out;display:flex;align-items:center;justify-content:space-between;width:100%;cursor:pointer;padding:2px 4px;-webkit-user-select:none;user-select:none;font-family:Montserrat;font-size:14px;font-weight:400;line-height:18px;width:209px;height:22px;border-radius:1px}.multiple-selected p{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}@media(hover:hover){.multiple-selected:hover{color:#2f2f2f!important;background-color:#fff!important}.multiple-selected:hover .multiple-remove-button{opacity:1}}.multiple-selected .multiple-remove-button{opacity:0;background-color:#6692f1;color:#fff;width:14px;height:14px}.multiple-selected .multiple-remove-button .multiple-remove-icon{width:12px;height:12px}.multiple-label{color:#424242;-webkit-user-select:none;user-select:none;pointer-events:none;font-family:Montserrat;font-size:11px;font-style:normal;font-weight:600;position:absolute;top:0;left:6px;transform:translateY(-14px)}.dropdown-group{border-radius:2px;transition:background-color .1s cubic-bezier(.46,.03,.51,.95),max-height .1s cubic-bezier(.46,.03,.51,.95),height .1s ease-in-out;margin-top:4px;max-height:var(--max-height);height:var(--max-height);overflow:hidden}.dropdown-group.no-items{cursor:default;pointer-events:none}.dropdown-group .group-item{outline:none;color:#fff!important;font-weight:400!important;font-size:14px!important;display:flex;transition:font-weight .1s ease-in-out,background-color .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95);padding-left:6px;padding-right:6px}.dropdown-group .group-item.unfolded .counter{color:#fff}@media(hover:hover){.dropdown-group .group-item:hover .counter{color:#fff}}.dropdown-group .group-item.unfolded{font-weight:700!important}.dropdown-group .group-item .counter{margin-left:auto}.dropdown-group .group-item .group-icon{margin-left:0}.dropdown-group.active{background-color:#424242}@media(hover:hover){.dropdown-group.active .group-item:hover{background-color:#424242}}.dropdown-group.active .dropdown-item{background-color:#424242}@media(hover:hover){.dropdown-group:hover:not(.no-items){background-color:#424242}.dropdown-group:hover:not(.no-items) .group-item:hover{background-color:#424242}.dropdown-group:hover:not(.no-items) .dropdown-item{background-color:#424242}}.dropdown-group.active{padding:4px;padding-top:0!important}.dropdown-group.active .group-item{position:relative!important;padding-left:2px!important;padding-right:2px!important}@media(hover:hover){.dropdown-group .dropdown-item:not(.group-item):hover{background-color:#6c6c6c!important}}.fuel-stop-transaction-store{display:flex;gap:4px}.fuel-stop-transaction-store .fuel-stop-transaction-store-address{font-size:11px;color:#ccc;margin-left:auto}.fuel-stop-transaction-store .favorite-icon{color:#92b1f5;width:14px;height:14px}.fuel-stop-transaction-nostore{padding-left:2px;padding-right:2px}.hide-dropdown{opacity:0;pointer-events:none;transition:opacity .1s cubic-bezier(.46,.03,.51,.95)}.dropdown-menu:not(.hide-dropdown) .dropdown-menu-content{transition:max-height .2s cubic-bezier(.46,.03,.51,.95),opacity .2s cubic-bezier(.46,.03,.51,.95),height .1s ease-in-out;animation:dropdown-menu-opening .2s cubic-bezier(.46,.03,.51,.95)}.dropdown-menu:not(.hide-dropdown).animate-dropdown .dropdown-menu-content{max-height:var(--max-height);height:var(--max-height)}.closing:not(.hide-dropdown) .dropdown-menu-content{animation:dropdown-menu-closing .2s cubic-bezier(.46,.03,.51,.95);opacity:0;max-height:0}@keyframes dropdown-menu-opening{0%{max-height:0;opacity:0}to{max-height:244px;opacity:1}}@keyframes dropdown-menu-closing{0%{max-height:244px;opacity:1}to{max-height:0;opacity:0}}.app-input-container:has(.app-input:focus-visible).has-dropdown .loader.loading,.app-input-container:has(.app-input:focus-visible).has-text .loader.loading{opacity:1!important}.app-input-container:has(.app-input:focus-visible).has-dropdown.has-text .loader{transform:translate(-48px)}.loader{position:absolute;top:4px;right:0;transform:translate(-26px);pointer-events:none;z-index:1000;width:18px;height:18px;display:flex;align-items:center;justify-content:center;transition:opacity .1s ease-in-out,transform .1s ease-in-out;opacity:0}.loader-icon{width:14px;height:14px;animation:spin .8s ease-in-out infinite;transform-origin:center;display:flex;align-items:center;justify-content:center}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.size-22{height:22px}.size-22 .icon,.size-22 .icon-sm{height:14px!important;width:14px!important}.size-22 .bg-icon{height:14px!important;width:14px!important;padding:2px!important}.size-22 .icon-container{height:22px!important;padding-top:2px;padding-bottom:2px;padding-left:4px!important}.size-22 .app-input{padding-top:2px;padding-bottom:2px;padding-left:4px}@media(pointer:coarse){.size-22 .app-input{height:22px}}.size-22 .app-input-label{padding-top:2px;padding-bottom:2px;padding-left:4px}.size-22.has-icon .app-input-label{padding-left:0!important}.size-22 .app-input-icon{height:14px!important;width:14px!important}.size-22.has-text .app-input-label,.size-22:has(.app-input:focus-visible) .app-input-label{transform:translateY(-18px)}.size-22 .loader{top:2px;transform:translate(-22px)!important}.strikethrough .app-input,.strikethrough .dropdown-selected-content{text-decoration:line-through}.max-w-280{max-width:280px}\n"] }]
4405
+ ], template: "<!-- #region Variables -->\n@let valid =\n ngControl?.valid &&\n (ngControl?.touched || ngControl?.dirty) &&\n !isAdding() &&\n !isDisabled();\n@let invalid =\n ngControl?.invalid &&\n (ngControl?.touched || ngControl?.dirty) &&\n !isAdding() &&\n !isDisabled();\n@let subcontent =\n config().subcontent ||\n (config().dropdown === \"subcontent\" &&\n selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![config().optionLabel || \"label\"]);\n\n@let name = config().name;\n@let password = config().type === \"password\" || config().type === \"account\";\n\n@let optionLabel = this.config().optionLabel || \"label\";\n@let dropdownType = this.config().dropdown;\n\n@let focusedOptionIndex = keyboardNavigationState().singleIndex;\n@let groupedNavigationState = keyboardNavigationState().groupedNavigationState;\n\n@let tooltipClass =\n config().inverse\n ? \"tooltip input-tooltip tooltip-bg-white-700 tooltip-text-black-500\"\n : \"tooltip input-tooltip\";\n\n<!-- #region Multiple selection -->\n@if (config().dropdown === \"multiple\" && !!multipleSelectedOptions().length) {\n <div\n (pointerdown)=\"focus($event)\"\n (mouseenter)=\"toggleHovered(true)\"\n (mouseleave)=\"toggleHovered(false)\"\n class=\"multiple-container\"\n [class]=\"{\n focused: focused(),\n hovered: hovered(),\n }\"\n >\n <label class=\"multiple-label\">{{ name }}</label>\n\n @for (option of multipleSelectedOptions(); track $index) {\n <div class=\"multiple-selected\">\n <p>{{ cast(option, \"dropdownOption\")![optionLabel || \"label\"] }}</p>\n <button\n type=\"button\"\n class=\"\"\n (pointerdown)=\"handleOption(option, $event)\"\n [tabIndex]=\"-1\"\n ngbTooltip=\"Clear\"\n [placement]=\"'top'\"\n [tooltipClass]=\"tooltipClass\"\n [autoClose]=\"true\"\n #closeTooltip=\"ngbTooltip\"\n [container]=\"'body'\"\n >\n <svg-icon\n name=\"cai-cancel\"\n class=\"multiple-remove-button multiple-remove-icon bg-icon\"\n ></svg-icon>\n </button>\n </div>\n }\n </div>\n}\n<!-- #endregion -->\n\n@let hasFloatingError =\n invalid &&\n (config().errorBehavior === \"floating\" ||\n (!!config().inTable && config().placeholderBehavior !== \"static\"));\n\n<div\n class=\"app-input-container\"\n [class]=\"\n {\n config: config(),\n hideValidation: hideValidation(),\n isPasswordVisible: visible(),\n isInvalid: !!invalid || forceInvalidStyling(),\n isValid: !!valid && !forceInvalidStyling(),\n isHovered: hovered(),\n hasText: hasText(),\n isAdding: isAdding(),\n selectedOption: selectedOption(),\n } | inputClass\n \"\n ngbDropdown\n [autoClose]=\"false\"\n #dropdown=\"ngbDropdown\"\n dropdownClass=\"cai-dropdown\"\n #containerRef\n [ngbTooltip]=\"errorTooltip\"\n [disableTooltip]=\"!hasFloatingError\"\n [container]=\"'body'\"\n [placement]=\"['bottom', 'top']\"\n tooltipClass=\"tooltip tooltip-bg-red-500 input-tooltip \"\n (pointerdown)=\"focus($event)\"\n (mouseenter)=\"dropdownType === 'multiple' && toggleHovered(true)\"\n (mouseleave)=\"dropdownType === 'multiple' && toggleHovered(false)\"\n>\n @if (config().icon && !password && !config().withButtons) {\n <div\n class=\"icon-container\"\n (pointerdown)=\"focus($event)\"\n [class]=\"{\n 'colored-icon': config().iconColor,\n }\"\n [style.--icon-color]=\"config().iconColor || ''\"\n >\n <svg-icon class=\"icon\" [name]=\"config().icon || ''\"></svg-icon>\n @if (!config().noSeparator) {\n <div class=\"separator\"></div>\n }\n </div>\n }\n @if (password) {\n <div class=\"icon-container\" (pointerdown)=\"toggleVisibility($event)\">\n <div\n class=\"password-icons\"\n [ngbTooltip]=\"passwordTooltip\"\n [container]=\"'body'\"\n [tooltipClass]=\"tooltipClass\"\n [autoClose]=\"true\"\n [placement]=\"'top'\"\n [openDelay]=\"600\"\n >\n <svg-icon\n class=\"icon password-key hover-icon\"\n name=\"cai-password-key\"\n ></svg-icon>\n <svg-icon\n class=\"icon password-shown hover-icon\"\n name=\"cai-password-shown\"\n ></svg-icon>\n <svg-icon\n class=\"icon password-hidden hover-icon\"\n name=\"cai-password-hidden\"\n ></svg-icon>\n </div>\n <div class=\"separator\"></div>\n </div>\n }\n\n <input\n class=\"app-input\"\n [tabindex]=\"isDisabled() ? '-1' : '0'\"\n [type]=\"\n password && !config().reveal ? (visible() ? 'text' : 'password') : 'text'\n \"\n [required]=\"config().required\"\n [disabled]=\"isDisabled()\"\n (input)=\"onInput($event)\"\n (blur)=\"dispatchOnBlur()\"\n [id]=\"id()\"\n [attr.aria-label]=\"config().label\"\n [attr.name]=\"\n config().autocomplete ? config().autocomplete : randomAutocomplete()\n \"\n [placeholder]=\"config()?.placeholder || ''\"\n [autocomplete]=\"\n config().autocomplete ? config().autocomplete : randomAutocomplete()\n \"\n #inputRef\n [appPassword]=\"password\"\n [appMask]=\"config().mask || ''\"\n [reveal]=\"config().reveal || 0\"\n [account]=\"config().type === 'account'\"\n [visible]=\"visible()\"\n [appNumberFormat]=\"config().type === 'number'\"\n [isNumberFormattingDisabled]=\"config().isNumberFormattingDisabled || false\"\n [disableDecimals]=\"config().disableDecimals || false\"\n [prefix]=\"config().prefix || ''\"\n [max]=\"config().max\"\n [clampToMax]=\"config().clampToMax || false\"\n (keydown)=\"handleKeydown($event)\"\n (focus)=\"onFocus($event)\"\n />\n @if (\n !(dropdownType === \"multiple\" && !!multipleSelectedOptions().length) &&\n config().placeholderBehavior !== \"hidden\"\n ) {\n <label\n class=\"app-input-label\"\n [class.placeholder-color]=\"this.config().placeholderColor\"\n [style.--placeholder-color]=\"this.config().placeholderColor || ''\"\n (click)=\"focus($event)\"\n >\n <!-- Truck Trailer Driver Dropdown label -->\n @if (dropdownType === \"dispatch\" || dropdownType === \"ftl-dispatch\") {\n <p class=\"truck-item app-input-name\">Truck</p>\n <p class=\"trailer-item\">Trailer</p>\n <p>Driver</p>\n <p class=\"sub-label\">Rate</p>\n }\n <!-- Split Load -->\n @else if (dropdownType === \"split-driver\") {\n <p class=\"app-input-name\">{{ name }}</p>\n <p class=\"sub-label\">Rate</p>\n } @else if (\n dropdownType === \"split-truck\" || dropdownType === \"split-trailer\"\n ) {\n <p class=\"app-input-name\">{{ name }}</p>\n <p class=\"sub-label\">Location</p>\n }\n <!-- Dropdown variants -->\n @else if (dropdownType === \"broker\") {\n <p class=\"app-input-name\">{{ name }}</p>\n <p class=\"sub-label\">Credit</p>\n } @else if (dropdownType === \"contact\") {\n <p class=\"app-input-name\">{{ name }}</p>\n <p class=\"sub-label\">Phone</p>\n } @else if (dropdownType === \"shipper\") {\n <p class=\"app-input-name\">{{ name }}</p>\n <p class=\"sub-label\">Address</p>\n } @else if (dropdownType === \"owner\") {\n <p class=\"owner-ein app-input-name\">EIN</p>\n <p class=\"app-input-name\">Company Name</p>\n } @else if (dropdownType === \"fuelcard\") {\n <p class=\"fuelcard-number app-input-name\">Card No.</p>\n <p class=\"fuelcard-brand app-input-name\">Provider</p>\n <p class=\"app-input-name\">Nickname</p>\n }\n <!-- Accident -->\n @else if (dropdownType === \"accident-driver\") {\n <p class=\"accident-name app-input-name\">{{ name }}</p>\n <p class=\"accident-dob app-input-name\">DOB</p>\n <p class=\"accident-cdl-number app-input-name\">CDL No.</p>\n <p class=\"accident-state app-input-name\">CDL State</p>\n } @else if (\n dropdownType === \"accident-truck\" || dropdownType === \"accident-trailer\"\n ) {\n <p class=\"accident-unit app-input-name\">{{ name }}</p>\n <p class=\"accident-vin app-input-name\">VIN</p>\n <p class=\"accident-plate app-input-name\">Lic. Plate No.</p>\n <p class=\"accident-state app-input-name\">Lic. State</p>\n }\n <!-- Default Dropdown label -->\n @else {\n <span class=\"app-input-name\">{{ name }}</span>\n }\n </label>\n }\n @if (config().type === \"number\" && config().withButtons) {\n <div class=\"number-container\">\n <div class=\"number-buttons\">\n <div class=\"separator\"></div>\n <div\n class=\"plus-button-container\"\n ngbTooltip=\"Add\"\n [tooltipClass]=\"tooltipClass\"\n [container]=\"'body'\"\n [autoClose]=\"true\"\n [openDelay]=\"600\"\n [placement]=\"'top'\"\n (pointerdown)=\"increment($event)\"\n >\n <svg-icon name=\"cai-plus\" class=\"bg-icon plus-icon\"></svg-icon>\n </div>\n <div\n class=\"minus-button-container\"\n ngbTooltip=\"Remove\"\n [placement]=\"'top'\"\n [container]=\"'body'\"\n [tooltipClass]=\"tooltipClass\"\n [autoClose]=\"true\"\n [openDelay]=\"600\"\n (pointerdown)=\"decrement($event)\"\n >\n <svg-icon name=\"cai-minus\" class=\"bg-icon minus-icon\"></svg-icon>\n </div>\n </div>\n </div>\n }\n @if (!config().inTable) {\n @if (!dropdownType) {\n <svg-icon\n name=\"cai-checkmark\"\n class=\"app-input-icon positive-icon\"\n ></svg-icon>\n <svg-icon\n name=\"cai-status-warning\"\n class=\"app-input-icon warning-icon\"\n ></svg-icon>\n }\n }\n\n @if (\n invalid &&\n config().errorBehavior !== \"hidden\" &&\n (ngControl?.errors | errorMessage: config().customErrors)[0] &&\n !(config().inTable && config().placeholderBehavior !== \"static\")\n ) {\n <div class=\"app-input-error\">\n {{ (ngControl?.errors | errorMessage: config().customErrors)[0] }}\n </div>\n }\n\n <!-- Accept button -->\n @if ((config().add && isAdding()) || config().isEdit) {\n <button\n type=\"button\"\n class=\"app-input-icon button-icon accept-button\"\n (pointerdown)=\"addOption()\"\n [tabIndex]=\"-1\"\n ngbTooltip=\"Confirm\"\n [openDelay]=\"600\"\n [placement]=\"'top'\"\n [tooltipClass]=\"tooltipClass\"\n [container]=\"'body'\"\n [autoClose]=\"true\"\n >\n <svg-icon class=\"bg-icon\" name=\"cai-checkmark\"></svg-icon>\n </button>\n }\n\n <!-- Cancel button -->\n <button\n type=\"button\"\n class=\"app-input-icon button-icon cancel-button\"\n (pointerdown)=\"reset($event)\"\n (mouseenter)=\"onClearHover(true)\"\n (mouseleave)=\"onClearHover(false)\"\n [tabIndex]=\"-1\"\n ngbTooltip=\"{{\n hasText()\n | clearTooltip\n : isAdding()\n : config().isEdit || false\n : config().placeholderBehavior || 'dynamic'\n : dropdownType === 'multiple'\n : config().hasResetButton\n : canTooltipBeVisible()\n }}\"\n [openDelay]=\"600\"\n [tooltipClass]=\"tooltipClass\"\n [placement]=\"'top'\"\n [container]=\"'body'\"\n [autoClose]=\"true\"\n #closeTooltip=\"ngbTooltip\"\n >\n @let iconName =\n config().hasResetButton\n ? \"cai-reset\"\n : config().removable\n ? \"cai-delete\"\n : \"cai-cancel\";\n <svg-icon class=\"bg-icon\" [name]=\"iconName\"></svg-icon>\n </button>\n\n <div class=\"dropdown-anchor\" ngbDropdownAnchor></div>\n <!-- Dropdown menu -->\n\n @let hasLoader = isLoading() !== undefined;\n\n @if (hasLoader) {\n <div class=\"loader\" [class.loading]=\"isLoading()\">\n <svg-icon name=\"cai-loader\" class=\"loader-icon\"></svg-icon>\n </div>\n }\n\n @if (dropdownType) {\n @let maxHeight =\n ((dropdownOptions()?.length || (showNoResults() ? 1 : 0)) +\n (config().add ? 1 : 0)) *\n 30 +\n 4;\n\n @let animateDropdown =\n dropdownType !== \"toll\" &&\n dropdownType !== \"fuel-stop-transaction\" &&\n dropdownType !== \"dispatch\" &&\n dropdownType !== \"ftl-dispatch\" &&\n dropdownType !== \"split-driver\" &&\n dropdownType !== \"split-truck\" &&\n dropdownType !== \"split-trailer\";\n\n @let unfilteredHeight =\n dropdownType === \"contact\" || !animateDropdown\n ? 244\n : ((options()?.length || (showNoResults() ? 1 : 0)) +\n (config().add ? 1 : 0)) *\n 30 +\n 4;\n\n <div\n ngbDropdownMenu\n class=\"dropdown-menu input-dropdown-menu\"\n [class]=\"{\n 'hide-dropdown':\n config().dropdownAutocomplete &&\n !dropdownOptions()?.length &&\n !(showNoResults() && value()),\n 'animate-dropdown': animateDropdown,\n 'size-22': config().size === 22,\n 'has-stroke': config().hasStroke,\n }\"\n [class.closing]=\"closing()\"\n [style.--unfiltered-height]=\"\n unfilteredHeight > 244 ? '244px' : unfilteredHeight + 'px'\n \"\n [style.--max-height]=\"maxHeight > 244 ? '244px' : maxHeight + 'px'\"\n [style.width.px]=\"containerWidth()\"\n [tabindex]=\"-1\"\n (pointerdown)=\"onDropdownBackgroundClick($event)\"\n (mousedown)=\"$event.preventDefault()\"\n (pointerup)=\"stopEventPropagation($event)\"\n (mouseup)=\"stopEventPropagation($event)\"\n (click)=\"stopEventPropagation($event)\"\n >\n <div\n class=\"dropdown-menu-content\"\n [tabindex]=\"-1\"\n caiInfiniteScroll\n [scrollThreshold]=\"50\"\n (scrolledToBottom)=\"onDropdownScrolledToBottom()\"\n >\n @if (config().add) {\n <button\n class=\"dropdown-item add-new\"\n [class.focused]=\"\n focusedOptionIndex === -1 ||\n groupedNavigationState?.groupIndex === -1\n \"\n (click)=\"handleAddingOption($event)\"\n >\n <p>ADD NEW</p>\n <svg-icon name=\"cai-plus\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n <ng-container *ngTemplateOutlet=\"dropdownMenuRef\"></ng-container>\n </div>\n </div>\n\n @if (!config().dropdownAutocomplete) {\n <div\n class=\"dropdown-icon-container\"\n [class.open]=\"dropdown.isOpen() && !closing()\"\n (pointerdown)=\"onDropdownIconClick($event)\"\n >\n <svg-icon\n name=\"cai-arrow-secondary-down\"\n class=\"dropdown-icon icon\"\n ></svg-icon>\n </div>\n }\n @let specialDropdown =\n dropdownType === \"dispatch\" ||\n dropdownType === \"ftl-dispatch\" ||\n dropdownType === \"broker\" ||\n dropdownType === \"contact\" ||\n dropdownType === \"shipper\" ||\n dropdownType === \"bank\" ||\n dropdownType === \"dispatcher\" ||\n dropdownType === \"driver-owner\" ||\n dropdownType === \"truck-owner\" ||\n dropdownType === \"truck\" ||\n dropdownType === \"trailer\" ||\n dropdownType === \"hazardous\" ||\n dropdownType === \"state\" ||\n dropdownType === \"owner\" ||\n dropdownType === \"fuelcard\" ||\n dropdownType === \"pm\" ||\n dropdownType === \"color\" ||\n dropdownType === \"make\" ||\n dropdownType === \"toll\" ||\n dropdownType === \"provider\" ||\n dropdownType === \"split-driver\" ||\n dropdownType === \"split-truck\" ||\n dropdownType === \"split-trailer\" ||\n dropdownType === \"accident-driver\" ||\n dropdownType === \"accident-truck\" ||\n dropdownType === \"accident-trailer\";\n <!-- Placeholder -->\n @if (specialDropdown) {\n <ng-container *ngTemplateOutlet=\"selectedOptionRef\"></ng-container>\n } @else if (\n (config().add || config().search) &&\n !inputRef.value &&\n !this.isAdding() &&\n dropdownType !== \"subcontent\"\n ) {\n <div class=\"dropdown-selected\">\n @if (config().placeholderBehavior === \"static\") {\n <p class=\"selected-label-hidden\">\n {{ name + (config().required ? \" *\" : \"\") }}\n </p>\n <p class=\"selected-text\">\n {{\n selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![\n optionLabel || \"label\"\n ]\n }}\n </p>\n } @else {\n @if (\n selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![\n optionLabel || \"label\"\n ] === \"Hazardous\"\n ) {\n <svg-icon name=\"cai-violation-hazmat\" class=\"icon\"></svg-icon>\n <p class=\"dropdown-selected-content\">\n {{\n selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![\n optionLabel || \"label\"\n ]\n }}\n </p>\n } @else {\n <p class=\"dropdown-selected-content\">\n {{\n selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![\n optionLabel || \"label\"\n ]\n }}\n </p>\n }\n }\n </div>\n }\n } @else if (config().isEdit && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"dropdown-selected-content\">{{ name }}</p>\n </div>\n }\n @if (config().passwordRequirements) {\n <div\n class=\"dropdown-menu password-requirement\"\n ngbDropdownMenu\n [style.width.px]=\"containerWidth()\"\n [class.closing]=\"closing()\"\n (pointerup)=\"stopEventPropagation($event)\"\n (mouseup)=\"stopEventPropagation($event)\"\n (click)=\"stopEventPropagation($event)\"\n >\n <ng-container *ngTemplateOutlet=\"passwordRequirementsRef\"></ng-container>\n </div>\n }\n @if (subcontent) {\n <p class=\"subcontent\">\n @if (!(config().alignment === \"right\")) {\n <span class=\"subcontent-hide\"\n >{{\n config().search\n ? selectedOption() &&\n cast(selectedOption(), \"dropdownOption\")![\n optionLabel || \"label\"\n ]\n : inputRef.value\n }}\n </span>\n }\n {{ subcontent }}\n </p>\n }\n</div>\n\n<!-- #region Templates -->\n\n<!-- #region Password requirements -->\n<ng-template #passwordRequirementsRef>\n @let isMinLengthValid =\n !this.ngControl?.errors?.[\"minlength\"] && this.value();\n @let isHasNumberValid =\n !this.ngControl?.errors?.[\"hasNumber\"] && this.value();\n @let isHasSymbolValid =\n !this.ngControl?.errors?.[\"hasSymbol\"] && this.value();\n @let isHasUppercaseValid =\n !this.ngControl?.errors?.[\"hasUppercase\"] && this.value();\n\n <p>Strong Password Requirement</p>\n <ul>\n <li [class.valid]=\"isMinLengthValid\">\n <svg-icon\n [name]=\"isMinLengthValid ? 'cai-checkmark' : 'cai-cancel'\"\n [class]=\"isMinLengthValid ? 'checkmark' : 'cancel'\"\n class=\"icon\"\n ></svg-icon\n ><span>Minimum 8 characters</span>\n </li>\n <li [class.valid]=\"isHasNumberValid\">\n <svg-icon\n class=\"icon\"\n [name]=\"isHasNumberValid ? 'cai-checkmark' : 'cai-cancel'\"\n [class]=\"isHasNumberValid ? 'checkmark' : 'cancel'\"\n ></svg-icon\n ><span>One number</span>\n </li>\n <li [class.valid]=\"isHasSymbolValid\">\n <svg-icon\n class=\"icon\"\n [name]=\"isHasSymbolValid ? 'cai-checkmark' : 'cai-cancel'\"\n [class]=\"isHasSymbolValid ? 'checkmark' : 'cancel'\"\n ></svg-icon\n ><span>One symbol</span>\n </li>\n <li [class.valid]=\"isHasUppercaseValid\">\n <svg-icon\n class=\"icon\"\n [name]=\"isHasUppercaseValid ? 'cai-checkmark' : 'cai-cancel'\"\n [class]=\"isHasUppercaseValid ? 'checkmark' : 'cancel'\"\n ></svg-icon\n ><span>One upper-case letter</span>\n </li>\n </ul>\n</ng-template>\n<!-- #endregion -->\n@let search = config().search;\n\n<ng-template #dropdownMenuRef>\n @switch (dropdownType) {\n @case (\"dispatch\") {\n <ng-container *ngTemplateOutlet=\"dispatchesRef\"></ng-container>\n }\n @case (\"ftl-dispatch\") {\n <ng-container *ngTemplateOutlet=\"ftlDispatchRef\"></ng-container>\n }\n @case (\"broker\") {\n <ng-container *ngTemplateOutlet=\"brokerRef\"></ng-container>\n }\n @case (\"contact\") {\n <ng-container *ngTemplateOutlet=\"contactRef\"></ng-container>\n }\n @case (\"shipper\") {\n <ng-container *ngTemplateOutlet=\"shipperRef\"></ng-container>\n }\n @case (\"bank\") {\n <ng-container *ngTemplateOutlet=\"bankRef\"></ng-container>\n }\n @case (\"dispatcher\") {\n <ng-container *ngTemplateOutlet=\"dispatcherRef\"></ng-container>\n }\n @case (\"driver-owner\") {\n <ng-container *ngTemplateOutlet=\"driverOwnerRef\"></ng-container>\n }\n @case (\"truck-owner\") {\n <ng-container *ngTemplateOutlet=\"truckOwnerRef\"></ng-container>\n }\n @case (\"trailer\") {\n <ng-container *ngTemplateOutlet=\"trailerRef\"></ng-container>\n }\n @case (\"truck\") {\n <ng-container *ngTemplateOutlet=\"truckRef\"></ng-container>\n }\n @case (\"hazardous\") {\n <ng-container *ngTemplateOutlet=\"hazardousRef\"></ng-container>\n }\n @case (\"state\") {\n <ng-container *ngTemplateOutlet=\"stateRef\"></ng-container>\n }\n @case (\"owner\") {\n <ng-container *ngTemplateOutlet=\"ownerRef\"></ng-container>\n }\n @case (\"fuelcard\") {\n <ng-container *ngTemplateOutlet=\"fuelcardRef\"></ng-container>\n }\n @case (\"pm\") {\n <ng-container *ngTemplateOutlet=\"pmRef\"></ng-container>\n }\n @case (\"multiple\") {\n <ng-container *ngTemplateOutlet=\"multipleRef\"></ng-container>\n }\n @case (\"make\") {\n <ng-container *ngTemplateOutlet=\"makeRef\"></ng-container>\n }\n @case (\"toll\") {\n <ng-container *ngTemplateOutlet=\"tollRef\"></ng-container>\n }\n @case (\"color\") {\n <ng-container *ngTemplateOutlet=\"colorRef\"></ng-container>\n }\n @case (\"fuel-stop-transaction\") {\n <ng-container *ngTemplateOutlet=\"fuelStopTransactionRef\"></ng-container>\n }\n @case (\"provider\") {\n <ng-container *ngTemplateOutlet=\"providerRef\"></ng-container>\n }\n @case (\"split-driver\") {\n <ng-container *ngTemplateOutlet=\"splitDriverRef\"></ng-container>\n }\n @case (\"split-truck\") {\n <ng-container *ngTemplateOutlet=\"splitTruckRef\"></ng-container>\n }\n @case (\"split-trailer\") {\n <ng-container *ngTemplateOutlet=\"splitTrailerRef\"></ng-container>\n }\n @case (\"accident-driver\") {\n <ng-container *ngTemplateOutlet=\"accidentDriverRef\"></ng-container>\n }\n @case (\"accident-truck\") {\n <ng-container *ngTemplateOutlet=\"accidentTruckRef\"></ng-container>\n }\n @case (\"accident-trailer\") {\n <ng-container *ngTemplateOutlet=\"accidentTrailerRef\"></ng-container>\n }\n @case (\"subcontent\") {\n <ng-container *ngTemplateOutlet=\"dropdownOptionsRef\"></ng-container>\n }\n @default {\n <ng-container *ngTemplateOutlet=\"dropdownOptionsRef\"></ng-container>\n }\n }\n</ng-template>\n\n<ng-template #selectedOptionRef>\n @switch (dropdownType) {\n @case (\"dispatch\") {\n <ng-container *ngTemplateOutlet=\"selectedDispatchRef\"></ng-container>\n }\n @case (\"ftl-dispatch\") {\n <ng-container *ngTemplateOutlet=\"selectedDispatchRef\"></ng-container>\n }\n @case (\"broker\") {\n <ng-container *ngTemplateOutlet=\"selectedBrokerRef\"></ng-container>\n }\n @case (\"contact\") {\n <ng-container *ngTemplateOutlet=\"selectedContactRef\"></ng-container>\n }\n @case (\"shipper\") {\n <ng-container *ngTemplateOutlet=\"selectedShipperRef\"></ng-container>\n }\n @case (\"bank\") {\n <ng-container *ngTemplateOutlet=\"selectedBankRef\"></ng-container>\n }\n @case (\"dispatcher\") {\n <ng-container *ngTemplateOutlet=\"selectedDispatcherRef\"></ng-container>\n }\n @case (\"driver-owner\") {\n <ng-container *ngTemplateOutlet=\"selectedDriverOwnerRef\"></ng-container>\n }\n @case (\"truck-owner\") {\n <ng-container *ngTemplateOutlet=\"selectedTruckOwnerRef\"></ng-container>\n }\n @case (\"trailer\") {\n <ng-container *ngTemplateOutlet=\"selectedTrailerRef\"></ng-container>\n }\n @case (\"truck\") {\n <ng-container *ngTemplateOutlet=\"selectedTruckRef\"></ng-container>\n }\n @case (\"hazardous\") {\n <ng-container *ngTemplateOutlet=\"selectedHazardousRef\"></ng-container>\n }\n @case (\"state\") {\n <ng-container *ngTemplateOutlet=\"selectedStateRef\"></ng-container>\n }\n @case (\"owner\") {\n <ng-container *ngTemplateOutlet=\"selectedOwnerRef\"></ng-container>\n }\n @case (\"fuelcard\") {\n <ng-container *ngTemplateOutlet=\"selectedFuelcardRef\"></ng-container>\n }\n @case (\"pm\") {\n <ng-container *ngTemplateOutlet=\"selectedPmRef\"></ng-container>\n }\n @case (\"make\") {\n <ng-container *ngTemplateOutlet=\"selectedMakeRef\"></ng-container>\n }\n @case (\"toll\") {\n <ng-container *ngTemplateOutlet=\"selectedTollRef\"></ng-container>\n }\n @case (\"color\") {\n <ng-container *ngTemplateOutlet=\"selectedColorRef\"></ng-container>\n }\n @case (\"provider\") {\n <ng-container *ngTemplateOutlet=\"selectedProviderRef\"></ng-container>\n }\n @case (\"split-driver\") {\n <ng-container *ngTemplateOutlet=\"selectedSplitDriverRef\"></ng-container>\n }\n @case (\"split-truck\") {\n <ng-container *ngTemplateOutlet=\"selectedSplitTruckRef\"></ng-container>\n }\n @case (\"split-trailer\") {\n <ng-container *ngTemplateOutlet=\"selectedSplitTrailerRef\"></ng-container>\n }\n @case (\"accident-driver\") {\n <ng-container\n *ngTemplateOutlet=\"selectedAccidentDriverRef\"\n ></ng-container>\n }\n @case (\"accident-truck\") {\n <ng-container *ngTemplateOutlet=\"selectedAccidentTruckRef\"></ng-container>\n }\n @case (\"accident-trailer\") {\n <ng-container\n *ngTemplateOutlet=\"selectedAccidentTrailerRef\"\n ></ng-container>\n }\n }\n</ng-template>\n\n<!-- Standard dropdown -->\n<ng-template #dropdownOptionsRef>\n @if (dropdownOptions().length) {\n @for (option of dropdownOptions(); track $index; let index = $index) {\n @let dropdownOption = cast(option, \"dropdownOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ dropdownOption.id }}\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'dropdownOption')?.id === dropdownOption.id,\n focused: focusedOptionIndex === index,\n }\"\n (click)=\"handleOption(dropdownOption, $event)\"\n >\n @if (dropdownOption[optionLabel] === \"Hazardous\") {\n <svg-icon name=\"cai-violation-hazmat\" class=\"icon\"></svg-icon>\n }\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (dropdownOption[optionLabel] | highlightSearch: value())\n : dropdownOption[optionLabel]\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #multipleRef>\n @if (dropdownOptions().length) {\n @for (option of dropdownOptions(); track $index; let index = $index) {\n @let dropdownOption = cast(option, \"dropdownOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ dropdownOption.id }}\"\n (click)=\"handleOption(dropdownOption, $event)\"\n [class]=\"{\n selected: isSelectedOption(dropdownOption),\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (dropdownOption[optionLabel] | highlightSearch: value())\n : dropdownOption[optionLabel]\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #bankRef>\n @if (dropdownOptions().length) {\n @for (bank of dropdownOptions(); track $index; let index = $index) {\n @let bankOption = cast(bank, \"bank\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ bankOption.id }}\"\n (click)=\"handleOption(bankOption, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'bank')?.id === bankOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n @if (bankOption.logoName) {\n <svg-icon\n class=\"full-icon\"\n [name]=\"bankOption.logoName.slice(0, -4)\"\n ></svg-icon>\n } @else {\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (bankOption.name || '' | highlightSearch: value())\n : bankOption.name\n \"\n ></p>\n }\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #makeRef>\n @if (dropdownOptions().length) {\n @for (make of dropdownOptions(); track $index; let index = $index) {\n @let makeOption = cast(make, \"make\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ makeOption.id }}\"\n (click)=\"handleOption(makeOption, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'make')?.id === makeOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n @if (makeOption.logoName) {\n <svg-icon\n class=\"full-icon\"\n [name]=\"makeOption.logoName.slice(0, -4)\"\n ></svg-icon>\n } @else {\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (makeOption.name || '' | highlightSearch: value())\n : makeOption.name\n \"\n ></p>\n }\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Broker -->\n<ng-template #brokerRef>\n @if (dropdownOptions().length) {\n @for (broker of dropdownOptions(); track $index; let index = $index) {\n @let brokerOption = cast(broker, \"broker\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"broker-{{ brokerOption.id }}\"\n (click)=\"\n !(brokerOption.dnu || brokerOption.ban) &&\n handleOption(brokerOption, $event)\n \"\n [class]=\"{\n selected: cast(selectedOption(), 'broker')?.id === brokerOption.id,\n focused: focusedOptionIndex === index,\n banned: brokerOption.dnu || brokerOption.ban,\n dnu: brokerOption.dnu,\n }\"\n >\n @if (brokerOption?.dnu || brokerOption?.ban) {\n <svg-icon name=\"cai-minus\" class=\"round-icon\"></svg-icon>\n } @else if (brokerOption?.fraudCheck) {\n <svg-icon\n name=\"cai-status-warning-lite\"\n class=\"fraud-icon\"\n ></svg-icon>\n }\n <p\n class=\"dropdown-content\"\n [innerHTML]=\"\n search\n ? (brokerOption.businessName || '' | highlightSearch: value())\n : brokerOption.businessName\n \"\n ></p>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-base\">\n @if (!brokerOption.creditLimit) {\n <p>Unlimited</p>\n } @else {\n <p>{{ brokerOption.availableCredit || 0 | currency }}</p>\n <div\n class=\"progress-bar\"\n [style.--progress]=\"\n (\n brokerOption\n | brokerProgress: brokerOption.dnu || brokerOption.ban\n ).activePercentageOfPaid + '%'\n \"\n [class]=\"\n (\n brokerOption\n | brokerProgress: brokerOption.dnu || brokerOption.ban\n ).status\n \"\n ></div>\n }\n </div>\n <div class=\"end-item-hover\">\n <p>\n {{ brokerOption.loadsCount }} |\n {{ brokerOption.availableCredit || 0 | currency }}\n </p>\n <svg-icon name=\"cai-load\" class=\"icon\"></svg-icon>\n </div>\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Contact dropdown -->\n<ng-template #contactRef>\n @if (dropdownOptions().length) {\n @for (contact of dropdownOptions(); track $index; let index = $index) {\n @let contactOption = cast(contact, \"contact\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item split-option\"\n id=\"contact-{{ contact.id }}\"\n (click)=\"handleOption(contact, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'contact')?.id === contact.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"text-truncate\"\n [innerHTML]=\"\n search\n ? (contactOption.contactName || '' | highlightSearch: value())\n : contactOption.contactName\n \"\n ></p>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-base\">\n <p class=\"text-truncate\">{{ contactOption.department?.name }}</p>\n </div>\n <div class=\"end-item-hover\">\n <p class=\"text-truncate\">\n {{ contactOption.phone }}\n {{\n contactOption.extensionPhone\n ? \"x\" + contactOption.extensionPhone\n : \"\"\n }}\n </p>\n </div>\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Owner dropdown -->\n<ng-template #ownerRef>\n @if (dropdownOptions().length) {\n @for (owner of dropdownOptions(); track $index; let index = $index) {\n @let ownerOption = cast(owner, \"owner\");\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"owner-{{ ownerOption?.id }}\"\n (click)=\"handleOption(ownerOption!, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'owner')?.id === ownerOption?.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"owner-ein\"\n [innerHTML]=\"\n search\n ? (ownerOption?.ein || '' | highlightSearch: value())\n : ownerOption?.ein\n \"\n ></p>\n <p\n [innerHTML]=\"\n search\n ? (ownerOption?.name || '' | highlightSearch: value())\n : ownerOption?.name\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Fuelcard dropdown -->\n<ng-template #fuelcardRef>\n @if (dropdownOptions().length) {\n @for (fuelcard of dropdownOptions(); track $index; let index = $index) {\n @let fuelcardOption = cast(fuelcard, \"fuelCard\");\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"fuelcard-{{ fuelcardOption?.id }}\"\n (click)=\"handleOption(fuelcardOption!, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'fuelCard')?.id === fuelcardOption?.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"fuelcard-number\"\n [innerHTML]=\"\n search\n ? (fuelcardOption?.number || '' | highlightSearch: value())\n : fuelcardOption?.number\n \"\n ></p>\n <p\n class=\"fuelcard-brand\"\n [innerHTML]=\"\n search\n ? (fuelcardOption?.brand || '' | highlightSearch: value())\n : fuelcardOption?.brand\n \"\n ></p>\n <p\n [innerHTML]=\"\n search\n ? (fuelcardOption?.account || '' | highlightSearch: value())\n : fuelcardOption?.account\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Accident driver dropdown -->\n<ng-template #accidentDriverRef>\n @if (dropdownOptions().length) {\n @for (driver of dropdownOptions(); track $index; let index = $index) {\n @let driverOption = cast(driver, \"accidentDriver\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"accident-driver-{{ driverOption.id }}\"\n (click)=\"handleOption(driverOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'accidentDriver')?.id === driverOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <div class=\"dropdown-subitem accident-name\">\n <cai-avatar\n [driver]=\"driverOption\"\n [size]=\"18\"\n [inverse]=\"true\"\n [hover]=\"false\"\n ></cai-avatar>\n <p\n [innerHTML]=\"\n driverOption.firstName + ' ' + driverOption.lastName\n | highlightSearch: value()\n \"\n ></p>\n </div>\n <p class=\"accident-dob\">\n {{ driverOption.dateOfBirth | date: \"MM/dd/yy\" }}\n </p>\n <p\n class=\"accident-cdl-number\"\n [innerHTML]=\"driverOption.cdlNumber || '' | highlightSearch: value()\"\n ></p>\n <div class=\"dropdown-subitem accident-state\">\n <p\n [innerHTML]=\"\n driverOption.cdlState?.stateShortName || ''\n | highlightSearch: value()\n \"\n ></p>\n @if (\n driverOption.cdlState?.countryType?.name &&\n driverOption.cdlState?.stateShortName\n ) {\n <svg-icon\n class=\"icon\"\n [name]=\"\n 'cai-' +\n driverOption.cdlState?.countryType?.name?.toLowerCase() +\n '-' +\n driverOption.cdlState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Accident truck dropdown -->\n<ng-template #accidentTruckRef>\n @if (dropdownOptions().length) {\n @for (truck of dropdownOptions(); track $index; let index = $index) {\n @let truckOption = cast(truck, \"accidentTruck\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"accident-truck-{{ truckOption.id }}\"\n (click)=\"handleOption(truckOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'accidentTruck')?.id === truckOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <div class=\"dropdown-subitem accident-unit\">\n @if (truckOption.truckType?.logoName) {\n <svg-icon\n class=\"truck-icon truck-trailer-icon-colors\"\n [class]=\"truckOption.truckType!.logoName.slice(0, -4)\"\n [name]=\"truckOption.truckType!.logoName.slice(0, -4)\"\n ></svg-icon>\n }\n <p\n [innerHTML]=\"truckOption.truckNumber | highlightSearch: value()\"\n ></p>\n </div>\n <p\n class=\"accident-vin\"\n [innerHTML]=\"truckOption.vin || '' | highlightSearch: value()\"\n ></p>\n <p\n class=\"accident-plate\"\n [innerHTML]=\"\n truckOption.licensePlateNumber || '' | highlightSearch: value()\n \"\n ></p>\n <div class=\"dropdown-subitem accident-state\">\n <p\n [innerHTML]=\"\n truckOption.licenseState?.stateShortName || ''\n | highlightSearch: value()\n \"\n ></p>\n @if (\n truckOption.licenseState?.countryType?.name &&\n truckOption.licenseState?.stateShortName\n ) {\n <svg-icon\n class=\"icon\"\n [name]=\"\n 'cai-' +\n truckOption.licenseState?.countryType?.name?.toLowerCase() +\n '-' +\n truckOption.licenseState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Accident trailer dropdown -->\n<ng-template #accidentTrailerRef>\n @if (dropdownOptions().length) {\n @for (trailer of dropdownOptions(); track $index; let index = $index) {\n @let trailerOption = cast(trailer, \"accidentTrailer\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"accident-trailer-{{ trailerOption.id }}\"\n (click)=\"handleOption(trailerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'accidentTrailer')?.id === trailerOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <div class=\"dropdown-subitem accident-unit\">\n @if (trailerOption.trailerType?.logoName) {\n <svg-icon\n class=\"trailer-icon truck-trailer-icon-colors\"\n [class]=\"trailerOption.trailerType!.logoName.slice(0, -4)\"\n [name]=\"trailerOption.trailerType!.logoName.slice(0, -4)\"\n ></svg-icon>\n }\n <p\n [innerHTML]=\"trailerOption.trailerNumber | highlightSearch: value()\"\n ></p>\n </div>\n <p\n class=\"accident-vin\"\n [innerHTML]=\"trailerOption.vin || '' | highlightSearch: value()\"\n ></p>\n <p\n class=\"accident-plate\"\n [innerHTML]=\"\n trailerOption.licensePlateNumber || '' | highlightSearch: value()\n \"\n ></p>\n <div class=\"dropdown-subitem accident-state\">\n <p\n [innerHTML]=\"\n trailerOption.licenseState?.stateShortName || ''\n | highlightSearch: value()\n \"\n ></p>\n @if (\n trailerOption.licenseState?.countryType?.name &&\n trailerOption.licenseState?.stateShortName\n ) {\n <svg-icon\n class=\"icon\"\n [name]=\"\n 'cai-' +\n trailerOption.licenseState?.countryType?.name?.toLowerCase() +\n '-' +\n trailerOption.licenseState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Shipper dropdown -->\n<ng-template #shipperRef>\n @if (dropdownOptions().length) {\n @for (shipper of dropdownOptions(); track $index; let index = $index) {\n @let shipperOption = cast(shipper, \"shipper\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item split-option\"\n id=\"shipper-{{ shipperOption.id }}\"\n (click)=\"handleOption(shipperOption, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'shipper')?.id === shipperOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"text-truncate\"\n [innerHTML]=\"\n search\n ? (shipperOption.businessName || '' | highlightSearch: value())\n : shipperOption.businessName\n \"\n ></p>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-base\">\n <p\n class=\"text-truncate\"\n [innerHTML]=\"\n search\n ? (shipperOption.address?.address || ''\n | highlightSearch: value())\n : shipperOption.address?.address\n \"\n ></p>\n </div>\n <div class=\"end-item-hover\">\n <p>\n {{ shipperOption.pickupCount }} Pickup |\n {{ shipperOption.deliveryCount }} Delivery\n </p>\n <svg-icon name=\"cai-load\" class=\"icon\"></svg-icon>\n </div>\n </div>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Dispatch dropdown -->\n<ng-template #dispatchesRef>\n @if (dropdownOptions().length) {\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n (click)=\"resetSelection()\"\n [class]=\"{\n selected: !selectedOption(),\n }\"\n >\n <p>Unassigned</p>\n <div class=\"unassigned-ltl\">\n <p>{{ unassignedCount() }}</p>\n <svg-icon name=\"cai-ltl-single\" class=\"icon-sm\"></svg-icon>\n </div>\n </button>\n @for (\n dispatchBoard of dropdownOptions();\n track dispatchBoard.id;\n let groupIndex = $index\n ) {\n <!-- Temporary variant since BE doesn't support boards -->\n @let dispatchBoardOption = cast(dispatchBoard, \"dispatchBoard\")!;\n\n @let isNoBoardsVariant =\n dispatchBoardOption.dispatcher === \"NOBOARDSVARIANT\";\n @if (dispatchBoardOption.count > 0) {\n @if (!isNoBoardsVariant) {\n @let isGroupFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === 0;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(dispatchBoardOption.id, $event)\"\n [class]=\"{\n unfolded: dispatchBoardOption.dispatches?.length || 0 > 0,\n focused: isGroupFocused,\n }\"\n >\n <p>\n {{\n dispatchBoardOption.teamBoard\n ? \"Team Board\"\n : dispatchBoardOption.dispatcher\n }}\n </p>\n <p class=\"counter\">{{ dispatchBoardOption.count }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n }\n @if (\n dispatchBoardOption.dispatches &&\n dispatchBoardOption.dispatches.length > 0\n ) {\n @for (\n dispatch of dispatchBoardOption.dispatches;\n track dispatch.id;\n let optionIndex = $index\n ) {\n @let isOptionFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === optionIndex + 1;\n <!-- +1 since optionIndex is 0 for the group item header -->\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n (click)=\"handleOption(dispatch, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'dispatch')?.id === dispatch.id,\n focused: isOptionFocused,\n }\"\n >\n <div class=\"dropdown-subitem truck-item\">\n <svg-icon\n class=\"truck-icon truck-trailer-icon-colors\"\n [class]=\"dispatch.truck.truckType.logoName.slice(0, -4)\"\n [name]=\"dispatch.truck.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"truck-number\"\n [innerHTML]=\"\n dispatch.truck.truckNumber | highlightSearch: value()\n \"\n ></p>\n </div>\n <div class=\"dropdown-subitem trailer-item\">\n @if (dispatch.trailer) {\n <svg-icon\n class=\"trailer-icon truck-trailer-icon-colors\"\n [class]=\"dispatch.trailer.trailerType.logoName.slice(0, -4)\"\n [name]=\"dispatch.trailer.trailerType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"trailer-number\"\n [innerHTML]=\"\n dispatch.trailer.trailerNumber | highlightSearch: value()\n \"\n ></p>\n }\n </div>\n <div class=\"dropdown-subitem\">\n @if (dispatch.coDriver) {\n <svg-icon class=\"dispatch-icon\" name=\"cai-people\"></svg-icon>\n <p\n class=\"driver-name\"\n [innerHTML]=\"\n dispatch.driver.firstName +\n ' & ' +\n dispatch.coDriver.firstName | highlightSearch: value()\n \"\n ></p>\n } @else {\n <cai-avatar\n [driver]=\"dispatch.driver\"\n [size]=\"18\"\n [inverse]=\"true\"\n [hover]=\"false\"\n ></cai-avatar>\n <p\n class=\"driver-name\"\n [innerHTML]=\"\n dispatch.driver.firstName + ' ' + dispatch.driver.lastName\n | highlightSearch: value()\n \"\n ></p>\n }\n </div>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-hover\">\n <p>{{ dispatch.payType }}</p>\n <svg-icon name=\"cai-driver\" class=\"icon-sm\"></svg-icon>\n </div>\n <div class=\"end-item-base dispatch-ltl\">\n <p>{{ dispatch.numberOfSingleLtlLoads }}</p>\n <svg-icon name=\"cai-ltl-single\" class=\"icon-sm\"></svg-icon>\n </div>\n </div>\n </button>\n }\n } @else if (isNoBoardsVariant) {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- ftl dispatch dropdown -->\n<ng-template #ftlDispatchRef>\n @if (dropdownOptions().length) {\n @for (\n dispatchBoard of dropdownOptions();\n track dispatchBoard.id;\n let groupIndex = $index\n ) {\n @let dispatchBoardOption = cast(dispatchBoard, \"dispatchBoard\")!;\n @let isGroupFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === 0;\n @let isNoBoardsVariant =\n dispatchBoardOption.dispatcher === \"NOBOARDSVARIANT\";\n @if (dispatchBoardOption.count > 0) {\n @if (!isNoBoardsVariant) {\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(dispatchBoardOption.id, $event)\"\n [class]=\"{\n unfolded: dispatchBoardOption.dispatches?.length || 0 > 0,\n focused: isGroupFocused,\n }\"\n >\n <p>\n {{\n dispatchBoardOption.teamBoard\n ? \"Team Board\"\n : dispatchBoardOption.dispatcher\n }}\n </p>\n <p class=\"counter\">{{ dispatchBoardOption.count }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n }\n @if (\n dispatchBoardOption.dispatches &&\n dispatchBoardOption.dispatches.length > 0\n ) {\n @for (\n dispatch of dispatchBoardOption.dispatches;\n track dispatch.id;\n let optionIndex = $index\n ) {\n @let isOptionFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === optionIndex + 1;\n <!-- +1 since optionIndex is 0 for the group item header -->\n <button\n class=\"dropdown-item\"\n (click)=\"handleOption(dispatch, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'dispatch')?.id === dispatch.id,\n focused: isOptionFocused,\n }\"\n >\n <div class=\"dropdown-subitem truck-item\">\n <svg-icon\n class=\"truck-icon truck-trailer-icon-colors\"\n [class]=\"dispatch.truck.truckType.logoName.slice(0, -4)\"\n [name]=\"dispatch.truck.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"truck-number\"\n [innerHTML]=\"\n dispatch.truck.truckNumber | highlightSearch: value()\n \"\n ></p>\n </div>\n <div class=\"dropdown-subitem trailer-item\">\n @if (dispatch.trailer) {\n <svg-icon\n class=\"trailer-icon truck-trailer-icon-colors\"\n [class]=\"dispatch.trailer.trailerType.logoName.slice(0, -4)\"\n [name]=\"dispatch.trailer.trailerType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"trailer-number\"\n [innerHTML]=\"\n dispatch.trailer.trailerNumber | highlightSearch: value()\n \"\n ></p>\n }\n </div>\n <div class=\"dropdown-subitem\">\n @if (dispatch.coDriver) {\n <svg-icon class=\"dispatch-icon\" name=\"cai-people\"></svg-icon>\n <p\n class=\"driver-name\"\n [innerHTML]=\"\n dispatch.driver.firstName +\n ' & ' +\n dispatch.coDriver.firstName | highlightSearch: value()\n \"\n ></p>\n } @else {\n <cai-avatar\n [driver]=\"dispatch.driver\"\n [size]=\"18\"\n [inverse]=\"true\"\n [hover]=\"false\"\n ></cai-avatar>\n <p\n class=\"driver-name\"\n [innerHTML]=\"\n dispatch.driver.firstName + ' ' + dispatch.driver.lastName\n | highlightSearch: value()\n \"\n ></p>\n }\n </div>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-hover\">\n <!-- Load Status -->\n @let dispatchStatus = dispatch.status | dispatchStatus;\n @if (dispatchStatus) {\n <div\n class=\"dispatch-status\"\n [class]=\"dispatchStatus.statusClass\"\n >\n @if (dispatchStatus.badge) {\n <p\n class=\"status-block\"\n [class]=\"dispatchStatus.badge.color\"\n >\n {{ dispatchStatus.badge.text }}\n </p>\n }\n {{ dispatchStatus.label }}\n @if (dispatch.status?.statusCheckInNumber) {\n <p class=\"status-block\">\n {{ dispatch.status?.statusCheckInNumber }}\n </p>\n }\n </div>\n <p class=\"dispatch-separator\">|</p>\n }\n <p class=\"dispatch-load-count\">\n {{ dispatch?.pendingLoadCount }}\n </p>\n <svg-icon name=\"cai-load\" class=\"icon-sm\"></svg-icon>\n </div>\n <div class=\"end-item-base\">\n <p>{{ dispatch.payType }}</p>\n <svg-icon name=\"cai-driver\" class=\"icon-sm\"></svg-icon>\n </div>\n </div>\n </button>\n }\n } @else if (isNoBoardsVariant) {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #splitDriverRef>\n @if (dropdownOptions().length) {\n @for (splitDriverBoard of dropdownOptions(); track splitDriverBoard.id) {\n @let driverBoard = cast(splitDriverBoard, \"splitDriverBoard\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(driverBoard.id, $event)\"\n [class]=\"{\n unfolded: (driverBoard.drivers?.length ?? 0) > 0,\n }\"\n >\n <p>\n {{\n driverBoard.isTeamBoard ? \"Team Board\" : driverBoard.dispatcherName\n }}\n </p>\n <!-- TODO: Change to count once BE is fixed -->\n <p class=\"counter\">{{ driverBoard.drivers?.length || 0 }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n @for (driver of driverBoard.drivers || []; track driver.id) {\n @let driverOption = cast(driver, \"splitDriver\")!;\n <button\n class=\"dropdown-item\"\n (click)=\"handleOption(driverOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'splitDriver')?.id === driverOption.id,\n }\"\n >\n <div class=\"dropdown-subitem\">\n <div class=\"dropdown-avatar\">\n <cai-avatar\n [driver]=\"driverOption\"\n [size]=\"18\"\n [inverse]=\"true\"\n [hover]=\"false\"\n ></cai-avatar>\n </div>\n <p\n class=\"driver-name\"\n [innerHTML]=\"\n driverOption.firstName + ' ' + driverOption.lastName\n | highlightSearch: value()\n \"\n ></p>\n </div>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-hover\">\n @let dispatchStatus =\n driverOption.dispatchStatus | dispatchStatus;\n @if (dispatchStatus) {\n <div\n class=\"dispatch-status\"\n [class]=\"dispatchStatus.statusClass\"\n >\n @if (dispatchStatus.badge) {\n <p\n class=\"status-block\"\n [class]=\"dispatchStatus.badge.color\"\n >\n {{ dispatchStatus.badge.text }}\n </p>\n }\n {{ dispatchStatus.label }}\n @if (driverOption.dispatchStatus?.statusCheckInNumber) {\n <p class=\"status-block\">\n {{ driverOption.dispatchStatus?.statusCheckInNumber }}\n </p>\n }\n </div>\n <p class=\"dispatch-separator\">|</p>\n }\n <p class=\"dispatch-load-count\">\n {{ driverOption.pendingLoadsCount }}\n </p>\n <svg-icon name=\"cai-load\" class=\"icon-sm\"></svg-icon>\n </div>\n <div class=\"end-item-base\">\n <p>{{ driverOption.payTypeValue }}</p>\n </div>\n </div>\n </button>\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #splitTruckRef>\n @if (dropdownOptions().length) {\n @for (splitTruckBoard of dropdownOptions(); track splitTruckBoard.id) {\n @let truckBoard = cast(splitTruckBoard, \"splitTruckBoard\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(truckBoard.id, $event)\"\n [class]=\"{\n unfolded: (truckBoard.trucks?.length ?? 0) > 0,\n }\"\n >\n <p>\n {{\n truckBoard.isTeamBoard ? \"Team Board\" : truckBoard.dispatcherName\n }}\n </p>\n <!-- TODO: Change to count once BE is fixed -->\n <p class=\"counter\">{{ truckBoard.trucks?.length || 0 }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n @for (truck of truckBoard.trucks || []; track truck.id) {\n @let truckOption = cast(truck, \"splitTruck\")!;\n <button\n class=\"dropdown-item\"\n (click)=\"handleOption(truckOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'splitTruck')?.id === truckOption.id,\n }\"\n >\n <div class=\"dropdown-subitem truck-item\">\n <svg-icon\n class=\"truck-icon\"\n [style.--truck-color]=\"truckOption.color?.code || ''\"\n [name]=\"truckOption.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"truck-number\"\n [innerHTML]=\"truckOption.truckNumber | highlightSearch: value()\"\n ></p>\n </div>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-hover\">\n @let dispatchStatus = truckOption.dispatchStatus | dispatchStatus;\n @if (dispatchStatus) {\n <div\n class=\"dispatch-status\"\n [class]=\"dispatchStatus.statusClass\"\n >\n @if (dispatchStatus.badge) {\n <p\n class=\"status-block\"\n [class]=\"dispatchStatus.badge.color\"\n >\n {{ dispatchStatus.badge.text }}\n </p>\n }\n {{ dispatchStatus.label }}\n @if (truckOption.dispatchStatus?.statusCheckInNumber) {\n <p class=\"status-block\">\n {{ truckOption.dispatchStatus?.statusCheckInNumber }}\n </p>\n }\n </div>\n <p class=\"dispatch-separator\">|</p>\n }\n <p class=\"dispatch-load-count\">\n {{ truckOption.pendingLoadsCount }}\n </p>\n <svg-icon name=\"cai-load\" class=\"icon-sm\"></svg-icon>\n </div>\n <div class=\"end-item-base\">\n @if (\n truckOption.location?.city &&\n truckOption.location?.stateShortName\n ) {\n <p>\n {{ truckOption.location?.city }},\n {{ truckOption.location?.stateShortName }}\n </p>\n }\n </div>\n </div>\n </button>\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #splitTrailerRef>\n @if (dropdownOptions().length) {\n @for (splitTrailerBoard of dropdownOptions(); track splitTrailerBoard.id) {\n @let trailerBoard = cast(splitTrailerBoard, \"splitTrailerBoard\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(trailerBoard.id, $event)\"\n [class]=\"{\n unfolded: (trailerBoard.trailers?.length ?? 0) > 0,\n }\"\n >\n <p>\n {{\n trailerBoard.isTeamBoard\n ? \"Team Board\"\n : trailerBoard.dispatcherName\n }}\n </p>\n <!-- TODO: Change to count once BE is fixed -->\n <p class=\"counter\">{{ trailerBoard.trailers?.length || 0 }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n @for (trailer of trailerBoard.trailers || []; track trailer.id) {\n @let trailerOption = cast(trailer, \"splitTrailer\")!;\n <button\n class=\"dropdown-item\"\n (click)=\"handleOption(trailerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'splitTrailer')?.id === trailerOption.id,\n }\"\n >\n <div class=\"dropdown-subitem trailer-item\">\n <svg-icon\n class=\"trailer-icon\"\n [style.--trailer-color]=\"trailerOption.color?.code || ''\"\n [name]=\"trailerOption.trailerType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p\n class=\"trailer-number\"\n [innerHTML]=\"\n trailerOption.trailerNumber | highlightSearch: value()\n \"\n ></p>\n </div>\n <div class=\"dropdown-subitem-end\">\n <div class=\"end-item-hover\">\n @let dispatchStatus =\n trailerOption.dispatchStatus | dispatchStatus;\n @if (dispatchStatus) {\n <div\n class=\"dispatch-status\"\n [class]=\"dispatchStatus.statusClass\"\n >\n @if (dispatchStatus.badge) {\n <p\n class=\"status-block\"\n [class]=\"dispatchStatus.badge.color\"\n >\n {{ dispatchStatus.badge.text }}\n </p>\n }\n {{ dispatchStatus.label }}\n @if (trailerOption.dispatchStatus?.statusCheckInNumber) {\n <p class=\"status-block\">\n {{ trailerOption.dispatchStatus?.statusCheckInNumber }}\n </p>\n }\n </div>\n <p class=\"dispatch-separator\">|</p>\n }\n <p class=\"dispatch-load-count\">\n {{ trailerOption.pendingLoadsCount }}\n </p>\n <svg-icon name=\"cai-load\" class=\"icon-sm\"></svg-icon>\n </div>\n <div class=\"end-item-base\">\n @if (\n trailerOption.location?.city &&\n trailerOption.location?.stateShortName\n ) {\n <p>\n {{ trailerOption.location?.city }},\n {{ trailerOption.location?.stateShortName }}\n </p>\n }\n </div>\n </div>\n </button>\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #tollRef>\n @if (dropdownOptions().length) {\n @for (toll of dropdownOptions(); track $index; let groupIndex = $index) {\n @let tollOption = cast(toll, \"tollOption\")!;\n @let isGroupFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === 0;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item pe-none\"\n [class]=\"{\n unfolded: tollOption.tollTransponders?.length || 0 > 0,\n focused: isGroupFocused,\n }\"\n >\n <p>\n {{ tollOption.groupName }}\n </p>\n </button>\n @let tollTransponders = tollOption.tollTransponders || [];\n @for (\n tollTransponder of tollTransponders;\n track tollTransponder.id;\n let optionIndex = $index\n ) {\n @let isOptionFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === optionIndex + 1;\n <!-- +1 since optionIndex is 0 for the group item header -->\n <button\n class=\"dropdown-item\"\n (click)=\"handleOption(tollTransponder, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'tollTransponderOption')?.id ===\n tollTransponder.id,\n focused: isOptionFocused,\n }\"\n >\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (tollTransponder.name || '' | highlightSearch: value())\n : tollTransponder.name\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Dispatcher dropdown -->\n\n<ng-template #dispatcherRef>\n @if (dropdownOptions().length) {\n @for (dispatcher of dropdownOptions(); track $index; let index = $index) {\n @let dispatcherOption = cast(dispatcher, \"dispatcher\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ dispatcherOption.id }}\"\n (click)=\"handleOption(dispatcherOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'dispatcher')?.id === dispatcherOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <cai-avatar\n [driver]=\"{\n id: dispatcherOption?.id || 0,\n firstName: (dispatcherOption?.fullName || ' ').split(' ')[0] || '',\n lastName: (dispatcherOption?.fullName || ' ').split(' ')[1] || '',\n avatarFile: dispatcherOption?.avatarFile,\n colorFlag: dispatcherOption?.colorFlag,\n }\"\n [rounded]=\"!config().squareAvatar\"\n [hover]=\"false\"\n ></cai-avatar>\n <p\n class=\"dropdown-content-hazardous\"\n [innerHTML]=\"\n search\n ? (dispatcherOption.fullName || '' | highlightSearch: value())\n : dispatcherOption.fullName\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Driver Owner dropdown -->\n\n<ng-template #driverOwnerRef>\n @if (dropdownOptions().length) {\n @for (driverOwner of dropdownOptions(); track $index; let index = $index) {\n @let driverOwnerOption = cast(driverOwner, \"driverOwner\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ driverOwnerOption.id }}\"\n (click)=\"handleOption(driverOwnerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'driverOwner')?.id === driverOwnerOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <cai-avatar\n [driver]=\"{\n id: driverOwnerOption?.id || 0,\n firstName: (driverOwnerOption?.fullName || ' ').split(' ')[0] || '',\n lastName: (driverOwnerOption?.fullName || ' ').split(' ')[1] || '',\n avatarFile: driverOwnerOption?.avatarFile,\n colorFlag: driverOwnerOption?.colorFlag,\n owner: driverOwnerOption?.driverType === 'OwnerOperator',\n driverType: {\n id: 0,\n name: (driverOwnerOption?.driverType | driverTypeLabel),\n },\n }\"\n [rounded]=\"false\"\n [hover]=\"false\"\n ></cai-avatar>\n <p\n class=\"dropdown-content\"\n [innerHTML]=\"\n search\n ? (driverOwnerOption.fullName || '' | highlightSearch: value())\n : driverOwnerOption.fullName\n \"\n ></p>\n <div class=\"dropdown-subitem-end\">\n <p class=\"driver-type\">\n {{ driverOwnerOption.driverType | driverTypeLabel }}\n </p>\n </div>\n <svg-icon\n name=\"cai-checkmark\"\n class=\"dropdown-item-icon no-margin\"\n ></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Truck Owner dropdown -->\n\n<ng-template #truckOwnerRef>\n @if (dropdownOptions().length) {\n @for (truckOwner of dropdownOptions(); track $index; let index = $index) {\n @let truckOwnerOption = cast(truckOwner, \"truckOwner\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ truckOwnerOption.id }}\"\n (click)=\"handleOption(truckOwnerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'truckOwner')?.id === truckOwnerOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <div class=\"dropdown-subitem truck-owner-unit\">\n @if (truckOwnerOption.truckType?.logoName) {\n <svg-icon\n class=\"truck-icon truck-trailer-icon-colors\"\n [class]=\"truckOwnerOption.truckType.logoName.slice(0, -4)\"\n [name]=\"truckOwnerOption.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n }\n <p\n class=\"dropdown-content\"\n [innerHTML]=\"\n search\n ? (truckOwnerOption.truckNumber || ''\n | highlightSearch: value())\n : truckOwnerOption.truckNumber\n \"\n ></p>\n @if (truckOwnerOption.model) {\n <p class=\"truck-owner-bullet\">\u2022</p>\n <p\n class=\"dropdown-content\"\n [innerHTML]=\"\n search\n ? (truckOwnerOption.model | highlightSearch: value())\n : truckOwnerOption.model\n \"\n ></p>\n }\n </div>\n <div class=\"dropdown-subitem-end\">\n <p class=\"driver-type\">\n {{ truckOwnerOption.driverType | truckOwnershipLabel }}\n </p>\n </div>\n <svg-icon\n name=\"cai-checkmark\"\n class=\"dropdown-item-icon no-margin\"\n ></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #truckRef>\n @if (dropdownOptions().length) {\n @for (truck of dropdownOptions(); track $index; let index = $index) {\n @let truckOption = cast(truck, \"truckOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ truckOption.id }}\"\n (click)=\"handleOption(truckOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'truckOption')?.id === truckOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (truckOption.name || '' | highlightSearch: value())\n : truckOption.name\n \"\n ></p>\n <svg-icon\n class=\"truck-trailer-option truck-trailer-icon-colors\"\n [class]=\"truckOption.logoName.slice(0, -4)\"\n [name]=\"truckOption.logoName.slice(0, -4)\"\n ></svg-icon>\n <svg-icon\n name=\"cai-checkmark\"\n class=\"dropdown-item-icon no-margin\"\n ></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #trailerRef>\n @if (dropdownOptions().length) {\n @for (truck of dropdownOptions(); track $index; let index = $index) {\n @let trailerOption = cast(truck, \"trailerOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ trailerOption.id }}\"\n (click)=\"handleOption(trailerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'trailerOption')?.id === trailerOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (trailerOption.name || '' | highlightSearch: value())\n : trailerOption.name\n \"\n ></p>\n\n <svg-icon\n class=\"truck-trailer-option truck-trailer-icon-colors\"\n [class]=\"trailerOption.logoName.slice(0, -4)\"\n [name]=\"trailerOption.logoName.slice(0, -4)\"\n ></svg-icon>\n <svg-icon\n name=\"cai-checkmark\"\n class=\"dropdown-item-icon no-margin\"\n ></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #providerRef>\n @if (dropdownOptions().length) {\n @for (provider of dropdownOptions(); track $index; let index = $index) {\n @let providerOption = cast(provider, \"provider\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ providerOption?.id }}\"\n (click)=\"handleOption(providerOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'provider')?.id === providerOption?.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <svg-icon\n class=\"full-icon\"\n [name]=\"'cai-' + providerOption?.name?.toLowerCase()\"\n ></svg-icon>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- Hazardous dropdown -->\n<ng-template #hazardousRef>\n @if (dropdownOptions().length) {\n @for (hazardous of dropdownOptions(); track $index; let index = $index) {\n @let hazardousOption = cast(hazardous, \"hazardous\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ hazardousOption.id }}\"\n (click)=\"handleOption(hazardousOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'hazardous')?.id === hazardousOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <svg-icon [name]=\"hazardousOption.logoName?.slice(0, -4)\"></svg-icon>\n <p\n class=\"dropdown-content-hazardous\"\n [innerHTML]=\"\n search\n ? (hazardousOption.description || '' | highlightSearch: value())\n : hazardousOption.description\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #pmRef>\n @if (dropdownOptions().length) {\n @for (pm of dropdownOptions(); track $index; let index = $index) {\n @let pmOption = cast(pm, \"pmOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ pmOption.id }}\"\n (click)=\"handleOption(pmOption, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'pmOption')?.id === pmOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <svg-icon\n class=\"icon\"\n [name]=\"pmOption.title | remapPmIcons\"\n ></svg-icon>\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (pmOption.title || '' | highlightSearch: value())\n : pmOption.title\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #colorRef>\n @if (dropdownOptions().length) {\n @for (color of dropdownOptions(); track $index; let index = $index) {\n @let colorOption = cast(color, \"colorOption\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item color-item\"\n id=\"option-{{ colorOption.id }}\"\n (click)=\"handleOption(colorOption, $event)\"\n [class]=\"{\n selected:\n cast(selectedOption(), 'colorOption')?.id === colorOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <svg-icon\n class=\"icon cai-color\"\n [name]=\"'cai-color'\"\n [style.--color]=\"colorOption?.code\"\n [style.--hover-color]=\"colorOption?.hoverCode\"\n ></svg-icon>\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (colorOption.name || '' | highlightSearch: value())\n : colorOption.name\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #stateRef>\n @if (dropdownOptions().length) {\n @for (state of dropdownOptions(); track $index; let index = $index) {\n @let stateOption = cast(state, \"state\")!;\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n id=\"option-{{ stateOption.id }}\"\n (click)=\"handleOption(stateOption, $event)\"\n [class]=\"{\n selected: cast(selectedOption(), 'state')?.id === stateOption.id,\n focused: focusedOptionIndex === index,\n }\"\n >\n <svg-icon\n class=\"icon\"\n [name]=\"\n 'cai-' +\n stateOption?.countryType?.name?.toLowerCase() +\n '-' +\n stateOption?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n <p\n class=\"dropdown-content-with-icon\"\n [innerHTML]=\"\n search\n ? (stateOption.stateShortName +\n ' ' +\n (config().fullState\n ? ' (' + stateOption?.stateName + ')'\n : '') || '' | highlightSearch: value())\n : stateOption.stateShortName +\n ' ' +\n (config().fullState ? ' (' + stateOption?.stateName + ')' : '')\n \"\n ></p>\n <svg-icon name=\"cai-checkmark\" class=\"dropdown-item-icon\"></svg-icon>\n </button>\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<ng-template #fuelStopTransactionRef>\n @if (dropdownOptions().length) {\n @for (\n franchise of dropdownOptions();\n track franchise.id;\n let groupIndex = $index\n ) {\n @let isGroupFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === 0;\n @let franchiseOption = cast(franchise, \"franchise\")!;\n @if (franchiseOption?.count !== null) {\n <div\n class=\"dropdown-group\"\n [class.no-items]=\"!franchiseOption?.count\"\n [class]=\"{\n active: openGroup() === franchiseOption.id,\n }\"\n [style.--max-height]=\"\n openGroup() === franchiseOption.id\n ? 30 * ((franchiseOption.fuelStopStores?.length || 0) + 1) + 'px'\n : '26px'\n \"\n >\n <button\n tabindex=\"-1\"\n class=\"dropdown-item group-item\"\n (click)=\"fold(franchiseOption.id, $event, franchiseOption)\"\n [class]=\"{\n unfolded: openGroup() === franchiseOption.id,\n focused: isGroupFocused,\n }\"\n >\n <p\n [innerHTML]=\"\n franchiseOption?.businessName || '' | highlightSearch: value()\n \"\n ></p>\n <p class=\"counter\">{{ franchiseOption.count }}</p>\n <svg-icon\n name=\"cai-arrow-primary-up\"\n class=\"group-icon icon\"\n ></svg-icon>\n </button>\n @if (openGroup() === franchiseOption.id) {\n @if (franchiseOption.fuelStopStores?.length || 0 > 0) {\n @for (\n fuelStopStore of franchiseOption.fuelStopStores;\n track fuelStopStore.id\n ) {\n @let isOptionFocused =\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === $index + 1;\n <!-- +1 since optionIndex is 0 for the group item header -->\n <button\n tabindex=\"-1\"\n class=\"dropdown-item fuel-stop-transaction-store\"\n [class]=\"{\n focused: isOptionFocused,\n }\"\n (click)=\"handleOption(fuelStopStore, $event)\"\n >\n <p\n [innerHTML]=\"\n fuelStopStore?.store ?? '' | highlightSearch: value()\n \"\n ></p>\n @let city = fuelStopStore?.address?.city ?? \"\";\n @let state = fuelStopStore?.address?.stateShortName ?? \"\";\n @let zip = fuelStopStore?.address?.zipCode ?? \"\";\n <p\n class=\"fuel-stop-transaction-store-address\"\n [innerHTML]=\"\n city + (state || zip ? ', ' : '') + state + ' ' + zip\n | highlightSearch: value()\n \"\n ></p>\n\n @if (fuelStopStore?.[\"favourite\"]) {\n <svg-icon\n name=\"cai-favorite\"\n class=\"favorite-icon\"\n ></svg-icon>\n }\n </button>\n }\n <!-- Infinite scroll trigger - emits event when item comes into view -->\n <div\n class=\"dropdown-infinite-scroll-item\"\n caiIntersectionObserver\n [threshold]=\"0.1\"\n (inView)=\"onDropdownScrolledToBottom(true)\"\n ></div>\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n }\n </div>\n } @else {\n <button\n tabindex=\"-1\"\n class=\"dropdown-item\"\n [class.focused]=\"\n groupedNavigationState?.groupIndex === groupIndex &&\n groupedNavigationState?.optionIndex === 0\n \"\n (click)=\"handleOption(franchiseOption, $event)\"\n >\n <p\n class=\"fuel-stop-transaction-nostore\"\n [innerHTML]=\"\n franchiseOption?.businessName || '' | highlightSearch: value()\n \"\n ></p>\n </button>\n }\n }\n } @else {\n <p class=\"dropdown-item no-results\">No results</p>\n }\n</ng-template>\n\n<!-- #endregion -->\n\n<!-- #region Selected options -->\n\n<!-- selected dispatch -->\n<ng-template #selectedDispatchRef>\n @let dispatchOption = cast(selectedOption(), \"dispatch\");\n @if (dispatchOption && !inputRef.value && !isAdding()) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-subitem truck-item\">\n <svg-icon\n class=\"truck-icon\"\n [name]=\"dispatchOption!.truck.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p class=\"truck-number\">\n {{ dispatchOption!.truck.truckNumber }}\n </p>\n </div>\n <div class=\"dropdown-subitem trailer-item\">\n @if (dispatchOption!.trailer) {\n <svg-icon\n class=\"trailer-icon\"\n [name]=\"\n cast(\n selectedOption(),\n 'dispatch'\n )!.trailer?.trailerType?.logoName?.slice(0, -4)\n \"\n ></svg-icon>\n <p class=\"trailer-number\">\n {{ dispatchOption!.trailer?.trailerNumber }}\n </p>\n }\n </div>\n <div class=\"dropdown-subitem\">\n @if (dispatchOption!.coDriver) {\n <svg-icon class=\"dispatch-icon\" name=\"cai-people\"></svg-icon>\n <p class=\"driver-name\">\n {{\n dispatchOption!.driver.firstName +\n \" & \" +\n dispatchOption!.coDriver?.firstName\n }}\n </p>\n } @else {\n <cai-avatar\n [driver]=\"dispatchOption!.driver\"\n [size]=\"18\"\n [hover]=\"false\"\n ></cai-avatar>\n <p class=\"driver-name\">\n {{\n dispatchOption!.driver.firstName +\n \" \" +\n dispatchOption!.driver.lastName\n }}\n </p>\n }\n </div>\n <p class=\"selected-end-item\">\n {{ dispatchOption!.payType }}\n </p>\n </div>\n } @else {\n @if (!inputRef.value && this.config().dropdown == \"dispatch\") {\n <p class=\"dropdown-selected\">Unassigned</p>\n }\n }\n</ng-template>\n\n<!-- selected broker -->\n<ng-template #selectedBrokerRef>\n @let brokerOption = cast(selectedOption(), \"broker\");\n @if (brokerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n @if (brokerOption!.fraudCheck) {\n <svg-icon name=\"cai-status-warning-lite\" class=\"fraud-icon\"></svg-icon>\n }\n <p class=\"dropdown-selected-content\">{{ brokerOption!.businessName }}</p>\n <div class=\"selected-end-item\">\n @if (!brokerOption!.creditLimit) {\n <p>Unlimited</p>\n } @else {\n <p>\n {{ brokerOption!.availableCredit || 0 | currency }}\n </p>\n <div\n class=\"progress-bar\"\n [style.--progress]=\"\n (\n brokerOption!\n | brokerProgress: brokerOption!.dnu || brokerOption!.ban\n ).activePercentageOfPaid + '%'\n \"\n [class]=\"\n (\n brokerOption!\n | brokerProgress: brokerOption!.dnu || brokerOption!.ban\n ).status\n \"\n ></div>\n }\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedContactRef>\n @let contactOption = cast(selectedOption(), \"contact\");\n @if (contactOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"dropdown-selected-content\">{{ contactOption?.contactName }}</p>\n <div class=\"selected-end-item\">\n <p>\n {{ contactOption?.phone }}\n {{\n contactOption?.extensionPhone\n ? \"x\" + contactOption?.extensionPhone\n : \"\"\n }}\n </p>\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedShipperRef>\n @let shipperOption = cast(selectedOption(), \"shipper\");\n @if (shipperOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"dropdown-selected-content\">{{ shipperOption?.businessName }}</p>\n <div class=\"selected-end-item selected-end-item-truncate\">\n <p class=\"text-truncate\">{{ shipperOption?.address?.address }}</p>\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedOwnerRef>\n @let ownerOption = cast(selectedOption(), \"owner\");\n @if (ownerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"owner-ein\">{{ ownerOption?.ein }}</p>\n <p class=\"\">{{ ownerOption?.name }}</p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedFuelcardRef>\n @let fuelcardOption = cast(selectedOption(), \"fuelCard\");\n @if (fuelcardOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"fuelcard-number\">\n {{ fuelcardOption?.number }}\n </p>\n <p class=\"fuelcard-brand\">\n {{ fuelcardOption?.brand }}\n </p>\n <p class=\"\">\n {{ fuelcardOption?.account }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedBankRef>\n @let bankOption = cast(selectedOption(), \"bank\");\n @if (bankOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n @if (bankOption?.logoName) {\n <svg-icon\n class=\"option-icon full-size\"\n [name]=\"bankOption?.logoName?.slice(0, -4) || ''\"\n ></svg-icon>\n } @else {\n <p class=\"dropdown-selected-content\">{{ bankOption?.name }}</p>\n }\n </div>\n }\n</ng-template>\n\n<ng-template #selectedProviderRef>\n @let providerOption = cast(selectedOption(), \"provider\");\n @if (providerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon full-size\"\n [name]=\"'cai-' + providerOption?.name?.toLowerCase()\"\n ></svg-icon>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedMakeRef>\n @let makeOption = cast(selectedOption(), \"make\");\n @if (makeOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n @if (makeOption?.logoName) {\n <svg-icon\n class=\"option-icon full-size\"\n [name]=\"makeOption?.logoName?.slice(0, -4) || ''\"\n ></svg-icon>\n } @else {\n <p class=\"dropdown-selected-content\">{{ makeOption?.name }}</p>\n }\n </div>\n }\n</ng-template>\n\n<ng-template #selectedStateRef>\n @let stateOption = cast(selectedOption(), \"state\");\n @if (stateOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon\"\n [name]=\"\n 'cai-' +\n stateOption?.countryType?.name?.toLowerCase() +\n '-' +\n stateOption?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n <p class=\"dropdown-selected-content\">\n {{ stateOption?.stateShortName }}\n {{ config().fullState ? \" (\" + stateOption?.stateName + \")\" : \"\" }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedDispatcherRef>\n @let dispatcherOption = cast(selectedOption(), \"dispatcher\");\n @if (dispatcherOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <cai-avatar\n [driver]=\"{\n id: dispatcherOption?.id || 0,\n firstName: (dispatcherOption?.fullName || ' ').split(' ')[0] || '',\n lastName: (dispatcherOption?.fullName || ' ').split(' ')[1] || '',\n avatarFile: dispatcherOption?.avatarFile,\n colorFlag: dispatcherOption?.colorFlag,\n }\"\n [rounded]=\"!config().squareAvatar\"\n ></cai-avatar>\n <p class=\"dropdown-selected-content\">{{ dispatcherOption?.fullName }}</p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedDriverOwnerRef>\n @let driverOwnerOption = cast(selectedOption(), \"driverOwner\");\n @if (driverOwnerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <cai-avatar\n [driver]=\"{\n id: driverOwnerOption?.id || 0,\n firstName: (driverOwnerOption?.fullName || ' ').split(' ')[0] || '',\n lastName: (driverOwnerOption?.fullName || ' ').split(' ')[1] || '',\n avatarFile: driverOwnerOption?.avatarFile,\n colorFlag: driverOwnerOption?.colorFlag,\n owner: driverOwnerOption?.driverType === 'OwnerOperator',\n driverType: {\n id: 0,\n name: (driverOwnerOption?.driverType | driverTypeLabel),\n },\n }\"\n [rounded]=\"false\"\n ></cai-avatar>\n <p class=\"dropdown-selected-content\">{{ driverOwnerOption?.fullName }}</p>\n <p class=\"selected-end-item driver-type\">\n {{ driverOwnerOption?.driverType | driverTypeLabel }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedTruckOwnerRef>\n @let truckOwnerOption = cast(selectedOption(), \"truckOwner\");\n @if (truckOwnerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n @if (truckOwnerOption.truckType?.logoName) {\n <svg-icon\n class=\"truck-icon option-icon\"\n [name]=\"truckOwnerOption.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n }\n <p class=\"dropdown-selected-content\">\n {{ truckOwnerOption.truckNumber }}\n @if (truckOwnerOption.model) {\n <span class=\"truck-owner-bullet\">\u2022</span>\n {{ truckOwnerOption.model }}\n }\n </p>\n <p class=\"selected-end-item driver-type\">\n {{ truckOwnerOption.driverType | truckOwnershipLabel }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedTruckRef>\n @let truckOption = cast(selectedOption(), \"truckOption\");\n @if (truckOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon\"\n [name]=\"truckOption?.logoName?.slice(0, -4)\"\n ></svg-icon>\n <p class=\"dropdown-selected-content\">{{ truckOption?.name }}</p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedTrailerRef>\n @let trailerOption = cast(selectedOption(), \"trailerOption\");\n @if (trailerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon\"\n [name]=\"trailerOption?.logoName?.slice(0, -4)\"\n ></svg-icon>\n <p class=\"dropdown-selected-content\">{{ trailerOption?.name }}</p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedHazardousRef>\n @let hazardousOption = cast(selectedOption(), \"hazardous\");\n @if (hazardousOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"hazard-icon\"\n [name]=\"hazardousOption?.logoName?.slice(0, -4)\"\n ></svg-icon>\n <p class=\"dropdown-selected-content dropdown-selected-hazardous\">\n {{ hazardousOption?.description }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedPmRef>\n @let pmOption = cast(selectedOption(), \"pmOption\");\n @if (pmOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon\"\n [name]=\"pmOption?.title | remapPmIcons\"\n ></svg-icon>\n <p class=\"dropdown-selected-content\">\n {{ pmOption?.title }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedColorRef>\n @let colorOption = cast(selectedOption(), \"colorOption\");\n @if (colorOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <svg-icon\n class=\"option-icon cai-color\"\n [name]=\"'cai-color'\"\n [style.--color]=\"colorOption?.code\"\n [style.--hover-color]=\"colorOption?.hoverCode\"\n ></svg-icon>\n <p class=\"dropdown-selected-content\">\n {{ colorOption?.name }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedTollRef>\n @let tollOption = cast(selectedOption(), \"tollTransponderOption\");\n @if (tollOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <p class=\"dropdown-selected-content\">\n {{ tollOption?.name }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedSplitDriverRef>\n @let splitDriverOption = cast(selectedOption(), \"splitDriver\");\n @if (splitDriverOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-selected-content\">\n <div class=\"dropdown-subitem\">\n <cai-avatar [driver]=\"splitDriverOption\" [size]=\"18\"></cai-avatar>\n <p class=\"driver-name\">\n {{ splitDriverOption.firstName + \" \" + splitDriverOption.lastName }}\n </p>\n </div>\n </div>\n\n <p class=\"selected-end-item\">\n {{ splitDriverOption.payTypeValue }}\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedSplitTruckRef>\n @let splitTruckOption = cast(selectedOption(), \"splitTruck\");\n @if (splitTruckOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-selected-content\">\n <div class=\"dropdown-subitem trailer-item\">\n <svg-icon\n class=\"trailer-icon\"\n [name]=\"splitTruckOption!.truckType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p class=\"trailer-number\">\n {{ splitTruckOption!.truckNumber }}\n </p>\n </div>\n </div>\n <p class=\"selected-end-item\">\n @if (\n splitTruckOption!.location?.city &&\n splitTruckOption!.location?.stateShortName\n ) {\n {{ splitTruckOption!.location?.city }},\n {{ splitTruckOption!.location?.stateShortName }}\n }\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedSplitTrailerRef>\n @let splitTrailerOption = cast(selectedOption(), \"splitTrailer\");\n @if (splitTrailerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-selected-content\">\n <div class=\"dropdown-subitem truck-item\">\n <svg-icon\n class=\"truck-icon\"\n [name]=\"splitTrailerOption!.trailerType.logoName.slice(0, -4)\"\n ></svg-icon>\n <p class=\"truck-number\">\n {{ splitTrailerOption!.trailerNumber }}\n </p>\n </div>\n </div>\n <p class=\"selected-end-item\">\n @if (\n splitTrailerOption!.location?.city &&\n splitTrailerOption!.location?.stateShortName\n ) {\n {{ splitTrailerOption!.location?.city }},\n {{ splitTrailerOption!.location?.stateShortName }}\n }\n </p>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedAccidentDriverRef>\n @let accidentDriverOption = cast(selectedOption(), \"accidentDriver\");\n @if (accidentDriverOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-subitem accident-name\">\n <cai-avatar\n [driver]=\"accidentDriverOption!\"\n [size]=\"18\"\n [hover]=\"false\"\n ></cai-avatar>\n <p>\n {{\n accidentDriverOption!.firstName +\n \" \" +\n accidentDriverOption!.lastName\n }}\n </p>\n </div>\n <p class=\"accident-dob\">\n {{ accidentDriverOption!.dateOfBirth | date: \"MM/dd/yy\" }}\n </p>\n <p class=\"accident-cdl-number\">\n {{ accidentDriverOption!.cdlNumber }}\n </p>\n <div class=\"dropdown-subitem accident-state\">\n <p>{{ accidentDriverOption!.cdlState?.stateShortName }}</p>\n @if (\n accidentDriverOption!.cdlState?.countryType?.name &&\n accidentDriverOption!.cdlState?.stateShortName\n ) {\n <svg-icon\n class=\"icon option-icon\"\n [name]=\"\n 'cai-' +\n accidentDriverOption!.cdlState?.countryType?.name?.toLowerCase() +\n '-' +\n accidentDriverOption!.cdlState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedAccidentTruckRef>\n @let accidentTruckOption = cast(selectedOption(), \"accidentTruck\");\n @if (accidentTruckOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-subitem accident-unit\">\n @if (accidentTruckOption!.truckType?.logoName) {\n <svg-icon\n class=\"truck-icon option-icon\"\n [name]=\"accidentTruckOption!.truckType!.logoName.slice(0, -4)\"\n ></svg-icon>\n }\n <p>{{ accidentTruckOption!.truckNumber }}</p>\n </div>\n <p class=\"accident-vin\">{{ accidentTruckOption!.vin }}</p>\n <p class=\"accident-plate\">\n {{ accidentTruckOption!.licensePlateNumber }}\n </p>\n <div class=\"dropdown-subitem accident-state\">\n <p>{{ accidentTruckOption!.licenseState?.stateShortName }}</p>\n @if (\n accidentTruckOption!.licenseState?.countryType?.name &&\n accidentTruckOption!.licenseState?.stateShortName\n ) {\n <svg-icon\n class=\"icon option-icon\"\n [name]=\"\n 'cai-' +\n accidentTruckOption!.licenseState?.countryType?.name?.toLowerCase() +\n '-' +\n accidentTruckOption!.licenseState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #selectedAccidentTrailerRef>\n @let accidentTrailerOption = cast(selectedOption(), \"accidentTrailer\");\n @if (accidentTrailerOption && !inputRef.value) {\n <div class=\"dropdown-selected\">\n <div class=\"dropdown-subitem accident-unit\">\n @if (accidentTrailerOption!.trailerType?.logoName) {\n <svg-icon\n class=\"trailer-icon option-icon\"\n [name]=\"accidentTrailerOption!.trailerType!.logoName.slice(0, -4)\"\n ></svg-icon>\n }\n <p>{{ accidentTrailerOption!.trailerNumber }}</p>\n </div>\n <p class=\"accident-vin\">{{ accidentTrailerOption!.vin }}</p>\n <p class=\"accident-plate\">\n {{ accidentTrailerOption!.licensePlateNumber }}\n </p>\n <div class=\"dropdown-subitem accident-state\">\n <p>{{ accidentTrailerOption!.licenseState?.stateShortName }}</p>\n @if (\n accidentTrailerOption!.licenseState?.countryType?.name &&\n accidentTrailerOption!.licenseState?.stateShortName\n ) {\n <svg-icon\n class=\"icon option-icon\"\n [name]=\"\n 'cai-' +\n accidentTrailerOption!.licenseState?.countryType?.name?.toLowerCase() +\n '-' +\n accidentTrailerOption!.licenseState?.stateShortName?.toLowerCase()\n \"\n ></svg-icon>\n }\n </div>\n </div>\n }\n</ng-template>\n\n<ng-template #passwordTooltip>\n {{ visible() ? \"Hide\" : \"Show\" }}\n</ng-template>\n\n<ng-template #errorTooltip>\n @if (\n (config().errorBehavior === \"floating\" ||\n (config().errorBehavior === \"static\" && hasText()) ||\n config().inTable) &&\n invalid &&\n !dropdown.isOpen()\n ) {\n {{ (ngControl?.errors | errorMessage: config().customErrors)[0] }}\n }\n</ng-template>\n\n<!-- #endregion -->\n", styles: ["input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{transition:background-color 5000s ease-in-out 0s!important}input:-webkit-autofill:focus{-webkit-text-fill-color:#ffffff!important}input:-moz-autofill,input:-moz-autofill-preview{filter:none}*,*:before,*:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}p,ul,ol,dl,blockquote,figure,pre{margin:0}button,input,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button{background:none;border:none;padding:0}img,svg,video,canvas,audio,iframe,embed,object{display:block;max-width:100%;height:auto}ul,ol{padding-left:1.5rem;list-style-position:outside}a{color:inherit;text-decoration:inherit}table{border-collapse:collapse;border-spacing:0}:focus:not(:focus-visible){outline:none}.app-input-container{--color-text: #2f2f2f;--color-text-negative: #df3c3c;--color-text-heading: #424242;--color-text-subtle: #919191;--color-text-inverse: #ffffff;--color-icon-neutral: #919191;--color-icon-negative: #e66767;--color-icon-positive: #6692f1;--color-icon-inverse: rgba(255, 255, 255, .6980392157);--color-icon-disable: #cccccc;--color-surface-neutral: #eeeeee;--color-surface-neutral-hover: #dadada;--color-surface-neutral-focus: #1d1d1d;--color-surface-positive: #e9effd;--color-surface-positive-hover: #bed0f9;--color-surface-positive-focus: #0b49d1;--color-surface-negative: #fbe9e9;--color-surface-negative-hover: #f4bebe;--color-surface-negative-focus: #c20c0c;--color-surface-disable: #f7f7f7;position:relative;border-radius:2px;background-color:var(--color-surface-neutral);color:var(--color-text);transition:background-color .1s cubic-bezier(.46,.03,.51,.95);display:flex}.app-input-container.inverse{--color-text: #ffffff;--color-text-negative: #ed9292;--color-text-heading: #ffffff;--color-text-inverse: #ffffff;--color-icon-neutral: #aaaaaa;--color-icon-negative: #ed9292;--color-icon-positive: #92b1f5;--color-icon-disable: #6c6c6c;--color-surface-neutral: #424242;--color-surface-neutral-hover: #6c6c6c;--color-surface-neutral-focus: #dadada;--color-surface-positive: rgba(59, 115, 237, .2);--color-surface-positive-hover: #2f519a;--color-surface-positive-focus: #0b49d1;--color-surface-negative: rgba(223, 60, 60, .2);--color-surface-negative-hover: #923030;--color-surface-negative-focus: #c20c0c;--color-surface-disable: rgba(66, 66, 66, .4)}.app-input-container.inverse:not(.has-error):not(.has-valid) .app-input:focus-visible{color:#2f2f2f}.app-input-container.inverse:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .icon,.app-input-container.inverse:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .icon-sm{color:#919191!important}.app-input-container.inverse:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .separator{background-color:#919191!important}.app-input-container.inverse:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .bg-icon{background-color:#919191!important;color:#dadada}.app-input-container.inverse.is-empty:has(.app-input:focus-visible) .icon,.app-input-container.inverse.is-empty:has(.app-input:focus-visible) .icon-sm{color:#919191!important}.app-input-container.inverse.is-empty:has(.app-input:focus-visible) .bg-icon{background-color:#919191!important;color:#dadada}.app-input-container.inverse.is-empty:has(.app-input:focus-visible) .separator{background-color:#919191!important}.app-input-container.inverse.has-text:has(.app-input:disabled) .app-input-label{color:#424242!important}.app-input-container.hovered{background-color:var(--color-surface-neutral-hover)}.app-input-container.hovered:not(:has(.app-input:disabled)) .sub-label,.app-input-container.hovered:not(:has(.app-input:disabled)) .app-input-label .accident-state{margin-right:44px}@media(hover:hover){.app-input-container:hover{background-color:var(--color-surface-neutral-hover)}.app-input-container:hover:not(:has(.app-input:disabled)) .sub-label,.app-input-container:hover:not(:has(.app-input:disabled)) .app-input-label .accident-state{margin-right:44px}}.app-input-container.has-text .app-input-label{transform:translateY(-20px);font-weight:600;font-size:11px;color:var(--color-text-heading)!important}.app-input-container.has-text.fade-placeholder .app-input-label{transform:translateY(0);opacity:0}.app-input-container.has-text .subcontent{opacity:1!important}.app-input-container.has-text.static-placeholder .app-input-label{transform:translateY(0);opacity:1;color:var(--color-text)}@media(hover:hover){.app-input-container.has-text.is-address:hover .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-text.is-address:hover .bg-icon{background-color:var(--color-icon-neutral);color:var(--color-surface-neutral-hover)}}.app-input-container.has-text.is-address:has(.app-input:focus-visible) .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-text.is-address:has(.app-input:focus-visible) .bg-icon{background-color:var(--color-icon-inverse);color:var(--color-surface-neutral-focus)}.app-input-container:has(.app-input:focus-visible){background-color:var(--color-surface-neutral-focus)}.app-input-container:has(.app-input:focus-visible) .app-input-label{transform:translateY(-20px);font-weight:600;font-size:11px;color:var(--color-text-heading)!important}.app-input-container:has(.app-input:focus-visible) .subcontent{opacity:1!important;color:#ffffffb2;left:unset!important;right:4px!important}.app-input-container:has(.app-input:focus-visible).has-text .subcontent{right:26px!important}.app-input-container:has(.app-input:focus-visible) .sub-label,.app-input-container:has(.app-input:focus-visible) .app-input-label .accident-state{margin-right:44px}.app-input-container:has(.app-input:focus-visible).fade-placeholder .app-input-label{transform:translateY(0);opacity:0}.app-input-container:has(.app-input:focus-visible).static-placeholder .app-input-label{transform:translateY(0);opacity:1;color:var(--color-text-inverse)!important}.app-input-container:has(.app-input:focus-visible) .bg-icon{background-color:var(--color-icon-inverse);color:var(--color-surface-neutral-focus)}.app-input-container:has(.app-input:focus-visible) .separator{background-color:var(--color-icon-inverse)!important}.app-input-container:has(.app-input:disabled){background-color:var(--color-surface-disable)}.app-input-container:has(.app-input:disabled).hovered{background-color:var(--color-surface-disable)}@media(hover:hover){.app-input-container:has(.app-input:disabled):hover{background-color:var(--color-surface-disable)}}.app-input-container:has(.app-input:disabled):focus{background-color:var(--color-surface-disable)}.app-input-container:has(.app-input:disabled) .app-input-label{color:var(--color-text-subtle)}.app-input-container:has(.app-input:disabled) .separator{background-color:var(--color-icon-disable)}.app-input-container:has(.app-input:disabled) .dropdown-icon-container{opacity:0;pointer-events:none!important}.app-input-container:has(.app-input:disabled) .dropdown-selected:has(.selected-end-item){width:100%}.app-input-container:has(.app-input:disabled) .driver-type{color:#919191}.app-input-container:has(.app-input:disabled) .icon-container{pointer-events:none!important}.app-input-container:has(.app-input:disabled):not(.disabled-removable) .cancel-button{display:none!important}.app-input-container:has(.app-input:required):not(:has(.app-input:disabled)) .app-input-name:after{content:\" *\";color:var(--color-text-negative)}@media(hover:hover){.app-input-container:not(.has-error).is-empty:not(:has(.app-input:focus-visible)) .dropdown-icon-container:hover .dropdown-icon{color:#424242!important}}@media(hover:hover){.app-input-container:not(.has-error).is-empty:not(:has(.app-input:focus-visible)) .hover-icon:hover{color:#424242!important}}@media(hover:hover){.app-input-container:not(.has-error).is-empty:has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon{color:#fff!important}}@media(hover:hover){.app-input-container:not(.has-error).is-empty:has(.app-input:focus-visible) .hover-icon:hover{color:#fff!important}}@media(hover:hover){.app-input-container:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon{color:#fff!important}}@media(hover:hover){.app-input-container:not(.has-error):not(.has-valid):has(.app-input:focus-visible) .hover-icon:hover{color:#fff!important}}.app-input-container.canceled .app-input-label,.app-input-container.canceled .app-input{color:var(--color-text-subtle)!important}.app-input-container.canceled .icon-container .icon,.app-input-container.canceled .icon-container .icon-sm{color:var(--color-icon-disable)!important}.subcontent{pointer-events:none;position:absolute;left:6px;color:#919191;-webkit-user-select:none;user-select:none;top:50%;transform:translateY(-50%);transition:right .1s ease-in-out,left .1s ease-in-out,transform .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95);opacity:0;font-family:Montserrat;font-weight:400;font-style:Regular;font-size:14px;line-height:18px;letter-spacing:0%;height:18px;overflow:hidden}.subcontent .subcontent-hide{opacity:0!important}.app-input-label{position:absolute;display:flex;gap:4px;left:0;font-size:14px;line-height:18px;font-weight:400;pointer-events:none;padding:.25rem 6px;color:var(--color-text);transition:transform .1s ease-in-out,font-weight .1s ease-in-out,color .1s ease-in-out,font-size .1s ease-in-out,opacity .1s ease-in-out;transform:translateY(0);-webkit-user-select:none;user-select:none}.app-input-label.placeholder-color{color:var(--placeholder-color)!important}.app-input{padding:.25rem 6px;width:100%;font-size:14px;line-height:18px;font-weight:400;border:0;outline:none;margin-top:auto;background-color:transparent;transition:color .1s cubic-bezier(.46,.03,.51,.95);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:relative}.app-input:focus-visible{color:var(--color-text-inverse)}@media(pointer:coarse){.app-input{font-size:16px;transform:scale(.875);transform-origin:left center;height:26px}}.app-input-error{position:absolute;bottom:-16px;right:6px;font-size:11px;font-weight:600;opacity:0;pointer-events:none;-webkit-user-select:none;user-select:none;transition:opacity .1s cubic-bezier(.46,.03,.51,.95),transform .1s cubic-bezier(.46,.03,.51,.95);color:var(--color-text-negative);transform:translateY(-10px)}.app-input-container.has-error{background-color:var(--color-surface-negative)}.app-input-container.has-error:not(.has-icon):not(.has-password):not(.has-right) .app-input{padding-right:26px}.app-input-container.has-error:has(.app-input:focus-visible):not(.has-right) .app-input{padding-right:26px}@media(hover:hover){.app-input-container.has-error:hover:not(.has-right) .app-input{padding-right:26px}}.app-input-container.has-error.has-right .app-input{padding-right:6px;padding-left:26px}.app-input-container.has-error.hovered{background-color:var(--color-surface-negative-hover)}.app-input-container.has-error.hovered.has-text .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-error.hovered.has-text .bg-icon{background-color:var(--color-icon-negative);color:var(--color-surface-negative-hover)}@media(hover:hover){.app-input-container.has-error:hover{background-color:var(--color-surface-negative-hover)}.app-input-container.has-error:hover.has-text .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-error:hover.has-text .bg-icon{background-color:var(--color-icon-negative);color:var(--color-surface-negative-hover)}}.app-input-container.has-error:has(.app-input:focus-visible){background-color:var(--color-surface-negative-focus);color:var(--color-text-inverse)}.app-input-container.has-error:has(.app-input:focus-visible).has-text .button-icon{opacity:1}.app-input-container.has-error:has(.app-input:focus-visible).has-text .bg-icon{background-color:var(--color-icon-inverse);color:var(--color-surface-negative-focus)}.app-input-container.has-error:has(.app-input:focus-visible).is-empty,.app-input-container.has-error:has(.app-input:focus-visible).has-dropdown:not(.has-selected){background-color:var(--color-surface-neutral-focus)!important}.app-input-container.has-error:has(.app-input:focus-visible).is-empty .app-input-error,.app-input-container.has-error:has(.app-input:focus-visible).has-dropdown:not(.has-selected) .app-input-error{opacity:0}.app-input-container.has-error:has(.app-input:focus-visible).is-empty .bg-icon,.app-input-container.has-error:has(.app-input:focus-visible).has-dropdown:not(.has-selected) .bg-icon{color:var(--color-surface-neutral-focus)!important}.app-input-container.has-error:has(.app-input:not(:focus-visible)).app-input-container:not(:hover) .warning-icon,.app-input-container.has-error.is-empty:has(.app-input:not(:focus-visible)) .warning-icon{opacity:1!important}.app-input-container.has-error .app-input-error{opacity:1;transform:translateY(0);pointer-events:auto}.app-input-container.has-error .app-input::selection{background-color:#ffffff4d}.app-input-container.has-error .icon-container .separator,.app-input-container.has-error .dropdown-icon-container .separator{background-color:var(--color-icon-negative)}.app-input-container.has-error .icon-container .icon,.app-input-container.has-error .icon-container .icon-sm,.app-input-container.has-error .dropdown-icon-container .icon,.app-input-container.has-error .dropdown-icon-container .icon-sm{color:var(--color-icon-negative)}@media(hover:hover){.app-input-container.has-error:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .bg-icon:hover{background-color:#c20c0c!important}}@media(hover:hover){.app-input-container.has-error:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .dropdown-icon-container:hover .dropdown-icon{color:#c20c0c!important}}@media(hover:hover){.app-input-container.has-error:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .hover-icon:hover{color:#c20c0c!important}}@media(hover:hover){.app-input-container.has-error:not(.removable):has(.app-input:focus-visible) .bg-icon:hover{background-color:#fff!important}}@media(hover:hover){.app-input-container.has-error:not(.removable):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon{color:#fff!important}}@media(hover:hover){.app-input-container.has-error:not(.removable):has(.app-input:focus-visible) .hover-icon:hover{color:#fff!important}}.app-input-container.has-valid:not(.has-icon):not(.has-password):not(.has-right) .app-input{padding-right:26px}.app-input-container.has-valid:has(.app-input:focus-visible):not(.has-right) .app-input{padding-right:26px}@media(hover:hover){.app-input-container.has-valid:hover:not(.has-right) .app-input{padding-right:26px}}.app-input-container.has-valid.has-right .app-input{padding-right:6px;padding-left:26px}.app-input-container.has-valid.has-text:not(.has-dropdown):not(.in-table),.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.in-table),.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.in-table){background-color:var(--color-surface-positive)}.app-input-container.has-valid.has-text:not(.has-dropdown).hovered,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown).hovered,.app-input-container.has-valid.has-multiple-dropdown.has-text.hovered{background-color:var(--color-surface-positive-hover)}.app-input-container.has-valid.has-text:not(.has-dropdown).hovered .button-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown).hovered .button-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text.hovered .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-valid.has-text:not(.has-dropdown).hovered .bg-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown).hovered .bg-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text.hovered .bg-icon{background-color:var(--color-icon-positive);color:var(--color-surface-positive-hover)}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):hover,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):hover,.app-input-container.has-valid.has-multiple-dropdown.has-text:hover{background-color:var(--color-surface-positive-hover)}.app-input-container.has-valid.has-text:not(.has-dropdown):hover .button-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):hover .button-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:hover .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-valid.has-text:not(.has-dropdown):hover .bg-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):hover .bg-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:hover .bg-icon{background-color:var(--color-icon-positive);color:var(--color-surface-positive-hover)}}.app-input-container.has-valid.has-text:not(.has-dropdown):has(.app-input:focus-visible),.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):has(.app-input:focus-visible),.app-input-container.has-valid.has-multiple-dropdown.has-text:has(.app-input:focus-visible){background-color:var(--color-surface-positive-focus);color:var(--color-text-inverse)}.app-input-container.has-valid.has-text:not(.has-dropdown):has(.app-input:focus-visible) .button-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):has(.app-input:focus-visible) .button-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:has(.app-input:focus-visible) .button-icon{opacity:1;pointer-events:auto}.app-input-container.has-valid.has-text:not(.has-dropdown):has(.app-input:focus-visible) .bg-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):has(.app-input:focus-visible) .bg-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:has(.app-input:focus-visible) .bg-icon{background-color:var(--color-icon-inverse);color:var(--color-surface-positive-focus)}.app-input-container.has-valid.has-text:not(.has-dropdown):has(.app-input:not(:focus-visible)).app-input-container:not(:hover) .positive-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):has(.app-input:not(:focus-visible)).app-input-container:not(:hover) .positive-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:has(.app-input:not(:focus-visible)).app-input-container:not(:hover) .positive-icon{opacity:1}.app-input-container.has-valid.has-text:not(.has-dropdown) .app-input::selection,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .app-input::selection,.app-input-container.has-valid.has-multiple-dropdown.has-text .app-input::selection{background-color:#ffffff4d}.app-input-container.has-valid.has-text:not(.has-dropdown) .icon-container .separator,.app-input-container.has-valid.has-text:not(.has-dropdown) .dropdown-icon-container .separator,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .icon-container .separator,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .dropdown-icon-container .separator,.app-input-container.has-valid.has-multiple-dropdown.has-text .icon-container .separator,.app-input-container.has-valid.has-multiple-dropdown.has-text .dropdown-icon-container .separator{background-color:var(--color-icon-positive)}.app-input-container.has-valid.has-text:not(.has-dropdown) .icon-container .icon,.app-input-container.has-valid.has-text:not(.has-dropdown) .icon-container .icon-sm,.app-input-container.has-valid.has-text:not(.has-dropdown) .dropdown-icon-container .icon,.app-input-container.has-valid.has-text:not(.has-dropdown) .dropdown-icon-container .icon-sm,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .icon-container .icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .icon-container .icon-sm,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .dropdown-icon-container .icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .dropdown-icon-container .icon-sm,.app-input-container.has-valid.has-multiple-dropdown.has-text .icon-container .icon,.app-input-container.has-valid.has-multiple-dropdown.has-text .icon-container .icon-sm,.app-input-container.has-valid.has-multiple-dropdown.has-text .dropdown-icon-container .icon,.app-input-container.has-valid.has-multiple-dropdown.has-text .dropdown-icon-container .icon-sm{color:var(--color-icon-positive)}.app-input-container.has-valid.has-text:not(.has-dropdown) .icon-container .password-key,.app-input-container.has-valid.has-text:not(.has-dropdown) .dropdown-icon-container .password-key,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .icon-container .password-key,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown) .dropdown-icon-container .password-key,.app-input-container.has-valid.has-multiple-dropdown.has-text .icon-container .password-key,.app-input-container.has-valid.has-multiple-dropdown.has-text .dropdown-icon-container .password-key{opacity:0;pointer-events:none}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .bg-icon:hover,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .bg-icon:hover,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .bg-icon:hover{background-color:#0b49d1!important}}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .dropdown-icon-container:hover .dropdown-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .dropdown-icon-container:hover .dropdown-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .dropdown-icon-container:hover .dropdown-icon{color:#0b49d1!important}}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .hover-icon:hover,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .hover-icon:hover,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):not(:has(.app-input:focus-visible)):not(.inverse) .hover-icon:hover{color:#0b49d1!important}}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):has(.app-input:focus-visible) .bg-icon:hover,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):has(.app-input:focus-visible) .bg-icon:hover,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):has(.app-input:focus-visible) .bg-icon:hover{background-color:#fff!important}}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon{color:#fff!important}}@media(hover:hover){.app-input-container.has-valid.has-text:not(.has-dropdown):not(.removable):has(.app-input:focus-visible) .hover-icon:hover,.app-input-container.has-valid.has-dropdown.has-selected:not(.has-multiple-dropdown):not(.removable):has(.app-input:focus-visible) .hover-icon:hover,.app-input-container.has-valid.has-multiple-dropdown.has-text:not(.removable):has(.app-input:focus-visible) .hover-icon:hover{color:#fff!important}}.in-table,.in-table.has-error,.in-table.has-valid.has-text{background-color:transparent}.in-table.has-error:not(:hover).in-table:not(.app-input-container:has(.app-input:focus-visible)) .app-input{color:var(--color-text-negative)}.in-table.has-error:not(:hover).in-table:not(.app-input-container:has(.app-input:focus-visible)):not(.static-placeholder) .app-input-label{color:var(--color-text-negative)}.in-table .dropdown-icon-container{opacity:0}@media(hover:hover){.in-table:hover .dropdown-icon-container{opacity:1}}.in-table:has(.app-input:focus-visible) .dropdown-icon-container{opacity:1}.app-input-icon{position:absolute;right:4px;top:4px;pointer-events:none;transition:color .1s cubic-bezier(.46,.03,.51,.95),background-color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95)}.button-icon{opacity:0;pointer-events:none}@media(hover:hover){.button-icon:hover{cursor:pointer}}.bg-icon{background-color:var(--color-icon-neutral);color:var(--color-surface-neutral);border-radius:1px;height:18px;width:18px;padding:0;display:grid;place-items:center;transition:background-color .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95),transform .1s cubic-bezier(.46,.03,.51,.95);transform-box:border-box;transform-origin:center;will-change:transform}.bg-icon svg{transition:transform .1s cubic-bezier(.46,.03,.51,.95)}@media(hover:hover){.bg-icon:hover{transform:scale(1.2222222222)}.bg-icon:hover svg{transform:scale(.8181818182)}}.bg-icon:active{transform:scale(1)}.round-icon{background-color:#919191;color:#2f2f2f;border-radius:50%;height:18px;width:18px;padding:0;display:grid;place-items:center;transition:background-color .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95)}.positive-icon{color:var(--color-icon-positive);height:18px;width:18px;display:grid;place-items:center;opacity:0}.warning-icon{color:var(--color-icon-negative);height:18px;width:18px;display:grid;place-items:center;opacity:0}.text-color-positive:not(:hover):not(:has(.app-input:focus-visible)) .app-input{color:#3b73ed}.is-plan.has-selected .app-input,.is-plan.has-selected .dropdown-selected-content,.is-plan.has-selected .selected-text{font-weight:700}.is-plan.has-selected:not(:has(.app-input:focus-visible)) .app-input,.is-plan.has-selected:not(:has(.app-input:focus-visible)) .dropdown-selected-content,.is-plan.has-selected:not(:has(.app-input:focus-visible)) .selected-text{color:#3b73ed}@media(hover:hover){.is-plan.has-selected:not(:has(.app-input:focus-visible)):hover .app-input,.is-plan.has-selected:not(:has(.app-input:focus-visible)):hover .dropdown-selected-content,.is-plan.has-selected:not(:has(.app-input:focus-visible)):hover .selected-text{color:#0b49d1}}.floating-error .app-input-error{opacity:0!important}.static-error .app-input-error{pointer-events:none!important;transform:translateY(calc(-100% - 4px))!important;transition:margin .1s ease-in-out,opacity .1s ease-in-out}.static-error.has-icon .app-input-error{margin-right:26px!important}.static-error:has(.app-input:not(:focus-visible)) .app-input-error{opacity:1}.static-error.has-text .app-input-error{opacity:0!important}.static-placeholder .app-input-label{position:relative;white-space:nowrap;font-size:11px;font-weight:600}.static-placeholder .dropdown-selected{overflow:hidden;display:flex!important;justify-content:left!important}.static-placeholder .dropdown-selected .selected-label-hidden{width:max-content;font-size:11px;font-weight:600;opacity:0;-webkit-user-select:none;user-select:none;pointer-events:none}.static-placeholder .dropdown-selected .selected-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;display:inline-block}.static-placeholder .app-input{padding-left:0!important}.static-placeholder.has-dropdown .cancel-button{display:none}.static-placeholder.has-dropdown .dropdown-icon-container .dropdown-icon{opacity:0;pointer-events:none}.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):has(.app-input:focus-visible) .icon-container .icon,.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):has(.app-input:focus-visible) .icon-container .icon-sm{opacity:0}.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):has(.app-input:focus-visible) .dropdown-icon-container{z-index:5;pointer-events:auto;cursor:pointer}.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):has(.app-input:focus-visible) .dropdown-icon-container .dropdown-icon{opacity:1!important}@media(hover:hover){.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):hover .icon-container .icon,.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):hover .icon-container .icon-sm{opacity:0}.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):hover .dropdown-icon-container{z-index:5;pointer-events:auto;cursor:pointer}.static-placeholder.has-dropdown:not(:has(.app-input:disabled)):hover .dropdown-icon-container .dropdown-icon{opacity:1!important}}.static-placeholder.has-dropdown .dropdown-icon-container{right:4px!important;left:auto!important}.app-input-container.has-icon:has(.app-input:focus-visible) .icon-container .icon,.app-input-container.has-icon:has(.app-input:focus-visible) .icon-container .icon-sm,.app-input-container.has-icon:has(.app-input:focus-visible) .dropdown-icon-container .icon,.app-input-container.has-icon:has(.app-input:focus-visible) .dropdown-icon-container .icon-sm,.app-input-container.has-password:has(.app-input:focus-visible) .icon-container .icon,.app-input-container.has-password:has(.app-input:focus-visible) .icon-container .icon-sm,.app-input-container.has-password:has(.app-input:focus-visible) .dropdown-icon-container .icon,.app-input-container.has-password:has(.app-input:focus-visible) .dropdown-icon-container .icon-sm,.app-input-container.has-dropdown:has(.app-input:focus-visible) .icon-container .icon,.app-input-container.has-dropdown:has(.app-input:focus-visible) .icon-container .icon-sm,.app-input-container.has-dropdown:has(.app-input:focus-visible) .dropdown-icon-container .icon,.app-input-container.has-dropdown:has(.app-input:focus-visible) .dropdown-icon-container .icon-sm{color:var(--color-icon-inverse)!important}.app-input-container.has-icon.colored-icon .icon-container .icon,.app-input-container.has-icon.colored-icon .icon-container .icon-sm,.app-input-container.has-password.colored-icon .icon-container .icon,.app-input-container.has-password.colored-icon .icon-container .icon-sm,.app-input-container.has-dropdown.colored-icon .icon-container .icon,.app-input-container.has-dropdown.colored-icon .icon-container .icon-sm{color:var(--icon-color)}.app-input-container.has-icon.is-empty:has(.app-input:disabled) .icon-container .icon,.app-input-container.has-icon.is-empty:has(.app-input:disabled) .icon-container .icon-sm,.app-input-container.has-icon.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon,.app-input-container.has-icon.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon-sm,.app-input-container.has-password.is-empty:has(.app-input:disabled) .icon-container .icon,.app-input-container.has-password.is-empty:has(.app-input:disabled) .icon-container .icon-sm,.app-input-container.has-password.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon,.app-input-container.has-password.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon-sm,.app-input-container.has-dropdown.is-empty:has(.app-input:disabled) .icon-container .icon,.app-input-container.has-dropdown.is-empty:has(.app-input:disabled) .icon-container .icon-sm,.app-input-container.has-dropdown.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon,.app-input-container.has-dropdown.is-empty:has(.app-input:disabled) .dropdown-icon-container .icon-sm{color:var(--color-icon-disable)!important}.app-input-container.has-icon .positive-icon,.app-input-container.has-icon .warning-icon,.app-input-container.has-password .positive-icon,.app-input-container.has-password .warning-icon,.app-input-container.has-dropdown .positive-icon,.app-input-container.has-dropdown .warning-icon{display:none!important}.app-input-container.has-icon .icon,.app-input-container.has-icon .icon-sm,.app-input-container.has-password .icon,.app-input-container.has-password .icon-sm,.app-input-container.has-dropdown .icon,.app-input-container.has-dropdown .icon-sm{height:18px;width:18px;display:grid;place-items:center;color:var(--color-icon-neutral);transition:color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95);opacity:1}.app-input-container.has-icon:has(.app-input:focus-visible):not(.static-placeholder) .dropdown-selected,.app-input-container.has-password:has(.app-input:focus-visible):not(.static-placeholder) .dropdown-selected,.app-input-container.has-dropdown:has(.app-input:focus-visible):not(.static-placeholder) .dropdown-selected{width:calc(100% - 48px)!important}@media(hover:hover){.app-input-container.has-icon:hover:not(:has(.app-input:disabled)):not(.static-placeholder) .dropdown-selected,.app-input-container.has-password:hover:not(:has(.app-input:disabled)):not(.static-placeholder) .dropdown-selected,.app-input-container.has-dropdown:hover:not(:has(.app-input:disabled)):not(.static-placeholder) .dropdown-selected{width:calc(100% - 48px)!important}}.icon-sm{height:14px;width:14px}.app-input-container.has-icon .icon-container,.app-input-container.has-password .icon-container{height:26px;display:flex;justify-items:center;align-items:center;gap:4px;padding:.25rem 0 .25rem 6px}@media(hover:hover){.app-input-container.has-icon .icon-container:hover,.app-input-container.has-password .icon-container:hover{cursor:text}}.app-input-container.has-icon .subcontent,.app-input-container.has-password .subcontent{left:32px}.app-input-container.has-icon .app-input-label,.app-input-container.has-password .app-input-label{left:27px}.app-input-container.has-icon .app-input,.app-input-container.has-password .app-input{padding-left:4px}.separator{height:14px;width:1px;border-radius:2px;background-color:var(--color-icon-neutral);transition:background-color .1s cubic-bezier(.46,.03,.51,.95);opacity:40%}.has-password .password-icons{display:grid;place-items:center;position:relative;height:18px;width:18px}.has-password .password-icons .icon,.has-password .password-icons .icon-sm{position:absolute;opacity:0}.has-password.is-empty:has(.app-input:not(:focus-visible)) .password-key{opacity:1!important}.has-password.is-empty:has(.app-input:not(:focus-visible)) .password-icons{pointer-events:none}.has-password:has(.app-input:disabled) .password-icons{pointer-events:none}.has-password.has-text .password-hidden,.has-password:has(.app-input:focus-visible) .password-hidden{opacity:1!important}@media(hover:hover){.has-password.has-text .password-hidden:hover,.has-password:has(.app-input:focus-visible) .password-hidden:hover{cursor:pointer}}.has-visible.has-text .password-shown,.has-visible:has(.app-input:focus-visible) .password-shown{opacity:1!important}@media(hover:hover){.has-visible.has-text .password-shown:hover,.has-visible:has(.app-input:focus-visible) .password-shown:hover{cursor:pointer}}.has-visible.has-text .password-hidden,.has-visible:has(.app-input:focus-visible) .password-hidden{opacity:0!important;pointer-events:none}.has-number .number-container{position:relative;display:flex;justify-content:center;align-items:center;right:4px;pointer-events:none}.has-number .number-buttons{display:flex;gap:4px;position:absolute;right:0;justify-content:center;align-items:center;opacity:0;transition:opacity .1s cubic-bezier(.46,.03,.51,.95);pointer-events:none}.has-number .plus-icon,.has-number .minus-icon{cursor:pointer;pointer-events:none}.has-number:has(.app-input:focus-visible){cursor:text}.has-number:has(.app-input:focus-visible) .number-buttons{opacity:1}.has-number:has(.app-input:focus-visible) .plus-icon{pointer-events:auto}.has-number:has(.app-input:focus-visible) .minus-icon{pointer-events:auto}.has-number:has(.app-input:focus-visible) .button-icon{opacity:0!important;pointer-events:none!important}.has-number:has(.app-input:focus-visible) .number-container{width:60px}.has-number:has(.app-input:focus-visible) .subcontent{right:52px!important}.has-number:has(.app-input:focus-visible).has-text .subcontent{right:52px!important}.colored-icon .icon,.colored-icon .icon-sm{color:var(--icon-color)!important}.dropdown-anchor{position:absolute;width:100%;-webkit-user-select:none;user-select:none;pointer-events:none;opacity:0}.dropdown-infinite-scroll-item{width:100%;-webkit-user-select:none;user-select:none;pointer-events:none;opacity:0;height:0}.dropdown-menu{min-width:0px!important;width:100%;border:0;margin-top:4px;top:30px;height:var(--unfiltered-height);min-height:var(--unfiltered-height);padding:0!important;overflow:hidden;border-radius:0!important;background:transparent!important}.dropdown-menu.has-stroke .dropdown-menu-content{outline:1px solid #6c6c6c;outline-offset:-1px}.dropdown-menu .dropdown-menu-content{position:absolute;width:100%;background-color:#2f2f2f;border-radius:3px;padding:4px 0 4px 4px;max-height:244px;z-index:1100!important;overflow-y:scroll;margin-top:auto!important;scroll-padding:6px 0}.dropdown-menu .dropdown-menu-content::-webkit-scrollbar{background-color:#2f2f2f;border-radius:0 3px 3px 0;width:4px}.dropdown-menu .dropdown-menu-content::-webkit-scrollbar-thumb{width:4px;background:#2f2f2f;border-left:2px solid #919191;background-clip:padding-box;border-radius:1px 3px 3px 1px}@supports (-moz-appearance: none){.dropdown-menu .dropdown-menu-content{padding-right:4px;scrollbar-width:4px;scrollbar-color:#919191 transparent;scrollbar-gutter:stable!important}@media(hover:hover){.dropdown-menu .dropdown-menu-content:hover{scrollbar-color:#919191 transparent;scrollbar-width:4px!important;scrollbar-gutter:stable!important}}}@-moz-document url-prefix(){.dropdown-menu .dropdown-menu-content{overflow:-moz-scrollbars-vertical;scrollbar-width:4px;scrollbar-color:#919191 transparent}}.option-icon{color:#6c6c6c;transition:color .1s cubic-bezier(.46,.03,.51,.95)}.option-icon.full-size{width:max-content;min-width:100%;height:18px!important;min-height:18px;flex-shrink:0;overflow:hidden}.option-icon.full-size svg{height:18px;width:max-content}.cai-color{color:var(--color)!important;transition:color .1s cubic-bezier(.46,.03,.51,.95)}@media(hover:hover){.color-item:hover .cai-color{color:var(--hover-color)!important}}.dropdown-item{color:#fff;font-weight:400;font-size:14px;line-height:18px;height:26px;padding:4px;width:100%;scroll-margin:6px 0;outline:1px solid transparent;outline-offset:-1px;display:flex;align-items:center;justify-content:left;gap:4px;background-color:#2f2f2f;transition:background-color .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95),outline .1s cubic-bezier(.46,.03,.51,.95);border-radius:2px;position:relative}.dropdown-item.focused{outline:1px solid #6c6c6c!important}.dropdown-item.focused .end-item-base{opacity:0}.dropdown-item.focused .end-item-hover{opacity:1}.dropdown-item.focused .full-icon{color:#ffffffb2}.dropdown-item.focused .truck-trailer-option{opacity:1}.dropdown-item .icon,.dropdown-item .icon-sm{color:#919191}.dropdown-item .dropdown-content-with-icon{max-width:calc(100% - 22px);overflow-x:hidden;word-break:break-all;text-overflow:ellipsis;white-space:nowrap}.dropdown-item .dropdown-content-hazardous{max-width:calc(100% - 40px);overflow-x:hidden;word-break:break-all;text-overflow:ellipsis;white-space:nowrap}.dropdown-item .dropdown-content{max-width:70%;overflow-x:hidden;word-break:break-all;text-overflow:ellipsis;white-space:nowrap}@media(hover:hover){.dropdown-item:hover:not(.no-hover){background-color:#424242}.dropdown-item:hover:not(.no-hover) .end-item-base{opacity:0}.dropdown-item:hover:not(.no-hover) .end-item-hover{opacity:1}.dropdown-item:hover:not(.no-hover) .full-icon{color:#ffffffb2}.dropdown-item:hover:not(.no-hover) .truck-trailer-option{opacity:1}}.dropdown-item.no-hover{cursor:default;pointer-events:none}.dropdown-item:focus-visible{background-color:#424242;border:0;outline:none}.dropdown-item:not(:first-child){margin-top:4px}.dropdown-item.banned{color:#919191;cursor:default}@media(hover:hover){.dropdown-item.banned:hover{color:#919191;background-color:#2f2f2f}.dropdown-item.banned:hover .end-item-base{opacity:0}.dropdown-item.banned:hover .end-item-hover{opacity:1}}.dropdown-item.dnu .round-icon{background-color:#e66767}.dropdown-item.selected .dispatch-load-count,.dropdown-item.selected .unassigned-ltl,.dropdown-item.selected .unassigned-ltl .icon,.dropdown-item.selected .unassigned-ltl .icon-sm{color:#92b1f5}.dropdown-item:not(:hover):not(.focused):not(.selected) .truck-icon{color:#919191}.dropdown-item:not(:hover):not(.focused):not(.selected) .trailer-icon{color:#919191}@media(hover:hover){.dropdown-avatar:hover{z-index:20}}.no-results{color:#919191;font-weight:700;cursor:default;pointer-events:none}.add-new{color:#92b1f5!important;font-weight:700;font-size:11px}.add-new .dropdown-item-icon{opacity:1}@media(hover:hover){.add-new:hover{background-color:#3b73ed66!important;color:#fff!important}}.selected{font-weight:700}.selected .dropdown-item-icon{opacity:1}.selected .dropdown-item-count{color:#fff;background-color:#3b73ed}.selected .full-icon{color:#fff}.selected .end-item-base,.selected .end-item-hover{font-weight:700;color:#92b1f5}.selected .end-item-base .icon,.selected .end-item-base .icon-sm,.selected .end-item-hover .icon,.selected .end-item-hover .icon-sm{color:#92b1f5}.dropdown-item-icon{opacity:0;color:#92b1f5;width:14px;height:14px;margin-left:auto}.dropdown-item-icon.no-margin{margin-left:0}.dropdown-item-count{position:absolute;right:6px;top:50%;transform:translateY(-50%);padding:2px 5px;border-radius:10px;background-color:#424242;color:#ffffffb2;min-width:18px;line-height:14px;font-weight:600;font-size:11px;text-align:center}.fraud-icon{color:#fab15c!important;height:18px;width:18px}.dropdown-icon-container{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:18px;height:18px;display:grid;place-items:center;transition:opacity .1s cubic-bezier(.46,.03,.51,.95)}.dropdown-icon-container.open .dropdown-icon{transform:rotateX(180deg)}.dropdown-icon{transition:transform .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95)!important;transform:rotateX(0);cursor:pointer}.has-dropdown .app-input-icon{right:26px}.has-dropdown:has(.app-input:focus-visible) .subcontent{right:26px!important}.has-dropdown:has(.app-input:focus-visible).has-text .subcontent,.has-dropdown:has(.app-input:focus-visible).has-selected .subcontent{right:48px!important}.has-dropdown:has(.app-input:focus-visible):not(.static-placeholder):not(.is-adding) .app-input{padding-right:48px!important}@media(hover:hover){.has-dropdown:hover:not(.static-placeholder):not(.is-adding) .app-input{padding-right:48px!important}}.has-right .app-input{text-align:right}@media(pointer:coarse){.has-right .app-input{transform-origin:right center}}.has-right .positive-icon,.has-right .app-input-icon{left:4px;right:auto}.has-right .cancel-button{z-index:1}.has-right.has-number .plus-button-container{order:2}.has-right.has-number .minus-button-container{order:1}.has-right.static-placeholder .app-input-icon{right:4px!important;left:auto!important;opacity:0!important}.has-right.static-placeholder:has(.app-input:focus-visible) .cancel-button{opacity:0!important;pointer-events:none!important}.has-right.static-placeholder.removable .cancel-button .bg-icon{background-color:transparent!important}@media(hover:hover){.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-valid.has-text .cancel-button .bg-icon{color:var(--color-icon-positive)!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-valid.has-text .cancel-button .bg-icon:hover{color:#c20c0c!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-valid.has-text:has(.app-input:focus-visible) .cancel-button .bg-icon{color:var(--color-icon-inverse)!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-valid.has-text:has(.app-input:focus-visible) .cancel-button .bg-icon:hover{color:#fff!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)):not(.has-text) .cancel-button .bg-icon{color:var(--color-icon-neutral)!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)):not(.has-text) .cancel-button .bg-icon:hover{color:#c20c0c!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)):not(.has-text):has(.app-input:focus-visible) .cancel-button .bg-icon{color:var(--color-icon-inverse)!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)):not(.has-text):has(.app-input:focus-visible) .cancel-button .bg-icon:hover{color:#fff!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-error .cancel-button .bg-icon{color:var(--color-icon-negative)!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)).has-error .cancel-button .bg-icon:hover{color:#c20c0c!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)) .cancel-button{opacity:1!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)) .cancel-button .bg-icon{opacity:1!important;pointer-events:auto!important}.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)) .icon-container .icon,.has-right.static-placeholder.removable:hover:not(:has(.app-input:disabled)) .icon-container .icon-sm{opacity:0!important}}@media(hover:hover){.has-right.static-placeholder:hover:not(:has(.app-input:focus-visible)):not(:has(.app-input:disabled)).has-text .cancel-button{opacity:1!important}}.has-right .app-input{order:1}.has-right.has-subcontent .app-input{flex:1;min-width:0;word-break:none}.has-right .dropdown-selected{margin-left:0!important;text-align:right!important;right:0!important;left:0!important;justify-content:flex-end!important;width:100%!important}.has-right .subcontent{position:relative!important;order:1;display:grid;place-items:center;padding-right:4px;height:unset!important;transform:translateY(0)!important;left:0!important;right:unset!important}.has-right .subcontent .subcontent-hide{display:none!important}.has-right.has-text .subcontent{left:0!important;right:unset!important}.has-right:has(.app-input:focus-visible) .subcontent{left:0!important;right:unset!important}.has-right.has-icon .subcontent,.has-right.has-password .subcontent{padding-right:0!important;padding-left:4px}.has-right.has-icon .dropdown-selected,.has-right.has-password .dropdown-selected{width:calc(100% - 24px)!important}.has-right.has-icon .app-input,.has-right.has-password .app-input{padding-right:0!important}.has-right.has-icon .app-input-label,.has-right.has-password .app-input-label{left:0!important}.has-right.has-icon.fade-placeholder .app-input-label,.has-right.has-password.fade-placeholder .app-input-label{left:auto!important;right:24px!important}.has-right.has-icon .icon-container,.has-right.has-password .icon-container{width:30px;padding-left:4px}.has-right.has-icon .icon-container .icon,.has-right.has-icon .icon-container .icon-sm,.has-right.has-password .icon-container .icon,.has-right.has-password .icon-container .icon-sm{order:2}.has-right.has-dropdown .app-input-icon{left:26px}.has-right.has-dropdown .dropdown-icon-container{left:4px}.has-right .warning-icon{display:none!important}.has-right.has-number .separator{order:3}.has-right.has-number .number-buttons{left:0;right:unset}.has-right.has-number .number-container{left:4px;right:unset}.has-right.has-number.app-input-container:has(.app-input:focus-visible) .app-input{padding-left:4px}.has-right .icon-container{order:2;margin-right:4px}.has-right .icon-container .password-icons{order:2}.has-right.fade-placeholder .app-input-label{right:0!important;left:auto!important}.has-right.fade-placeholder:has(.app-input:required) .app-input-name:after{content:none!important}.has-right.fade-placeholder:has(.app-input:required) .app-input-name:before{content:\"* \";color:var(--color-text-negative)}@media(hover:hover){.removable:has(.cancel-button:hover).in-table{background-color:transparent!important}.removable:has(.cancel-button:hover).in-table .separator{background-color:var(--color-icon-negative)!important}}@media(hover:hover){.removable:has(.cancel-button:hover):not(.in-table){background-color:var(--color-surface-negative-hover)!important}.removable:has(.cancel-button:hover):not(.in-table) .separator{background-color:var(--color-icon-negative)!important}}@media(hover:hover){.removable:has(.cancel-button:hover):has(.app-input:focus-visible){background-color:var(--color-surface-negative-focus)!important}.removable:has(.cancel-button:hover):has(.app-input:focus-visible) .separator{background-color:var(--color-icon-inverse)!important}}.no-clear .cancel-button{display:none!important}.is-adding{padding-right:20px}.is-adding .dropdown-icon{opacity:0!important}.is-adding .accept-button{pointer-events:none;opacity:0!important}@media(hover:hover){.is-adding:not(.removable):has(.app-input:focus-visible) .bg-icon:hover{background-color:#fff!important}}@media(hover:hover){.is-adding:not(.removable):has(.app-input:focus-visible) .dropdown-icon-container:hover .dropdown-icon{color:#fff!important}}@media(hover:hover){.is-adding:not(.removable):has(.app-input:focus-visible) .hover-icon:hover{color:#fff!important}}.is-adding:has(.app-input:focus-visible){padding-right:48px!important}@media(hover:hover){.is-adding:hover{padding-right:48px!important}}.is-adding.has-right{padding-left:26px}.is-adding.has-right.has-right:has(.app-input:focus-visible){padding-left:40px}@media(hover:hover){.is-adding.has-right.has-right:hover{padding-left:40px}}.is-adding .app-input-icon{right:4px}@media(hover:hover){.is-adding.has-text:hover .button-icon{opacity:1;pointer-events:auto!important}.is-adding.has-text:hover .accept-button{pointer-events:auto;opacity:1!important}}.is-adding.has-text:has(.app-input:focus-visible) .button-icon{opacity:1;pointer-events:auto!important}.is-adding.has-text:has(.app-input:focus-visible) .accept-button{pointer-events:auto;opacity:1!important}.is-adding .cancel-button{opacity:1!important;pointer-events:auto}.is-adding .dropdown-icon-container{pointer-events:none}.is-adding .accept-button{right:26px;pointer-events:auto}.dropdown-selected{-webkit-user-select:none;user-select:none;position:absolute;top:50%;transform:translateY(-50%);left:0;width:calc(100% - 22px);pointer-events:none;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;word-break:break-all;padding:.25rem 6px;font-size:14px;line-height:18px;font-weight:400;border:0;outline:none;margin-top:auto;background-color:transparent;transition:color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95),width .1s ease-in-out;color:var(--color-text);display:flex;gap:4px}.dropdown-selected .dropdown-selected-content{overflow:hidden;-webkit-user-select:none;user-select:none;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}.dropdown-selected .dropdown-selected-hazardous{max-width:calc(100% - 22px)}p.dropdown-selected{-webkit-user-select:none;user-select:none;display:block}.app-input-container:has(.app-input:focus-visible) .dropdown-selected{color:#fff;opacity:.7}.app-input-container:has(.app-input:focus-visible) .dropdown-selected .option-icon{color:#fff!important}.has-icon .positive-icon,.has-icon .warning-icon{display:none}.has-icon .dropdown-selected{left:27px;width:calc(100% - 49px)}@media(hover:hover){.has-icon:hover .dropdown-selected{width:calc(100% - 71px)}}.has-icon.app-input-container:has(.app-input:focus-visible) .dropdown-selected{width:calc(100% - 71px)}.hazard-icon{height:18px;width:max-content}.has-dispatch .app-input-label{transform:translateY(-20px);font-weight:600;font-size:11px;color:var(--color-text-heading)!important}.dispatch-load-count{color:#dadada;font-weight:700}.dispatch-separator{color:#919191;font-weight:400}.dispatch-status{font-family:Montserrat;font-weight:700;font-style:Bold;font-size:11px;line-height:14px;letter-spacing:0%;text-transform:uppercase;color:#ffffffb2;border-radius:2px;padding:2px 4px;display:flex;justify-content:center;align-items:center;gap:4px}.dispatch-status.status-available{background-color:#50ac2533}.dispatch-status.status-dispatched{background-color:#3b73ed33}.dispatch-status.status-arrivedpickup,.dispatch-status.status-checkedinpickup,.dispatch-status.status-checkedin,.dispatch-status.status-loading,.dispatch-status.status-loaded{background-color:#259f9433}.dispatch-status.status-arriveddelivery,.dispatch-status.status-checkedindelivery,.dispatch-status.status-offloading,.dispatch-status.status-offloaded,.dispatch-status.status-empty{background-color:#ff704333}.dispatch-status.status-canceled{background-color:#df3c3c33}.dispatch-status.status-off,.dispatch-status.status-deadheading,.dispatch-status.status-break,.dispatch-status.status-split{background-color:#91919133}.dispatch-status.status-towing{background-color:#9e47ec33}.dispatch-status.status-repair,.dispatch-status.status-dispatchedrepair,.dispatch-status.status-loadedrepair{background-color:#865e3a33}.dispatch-status .status-block{border-radius:1px;background-color:#aaa;padding-left:2px;padding-right:2px;font-family:Montserrat;font-weight:700;font-style:Bold;font-size:11px;line-height:12px;text-align:center;color:#2f2f2f;min-width:12px;height:12px}.dispatch-status .status-block.blue{background-color:#6692f1}.dispatch-status .status-block.green{background-color:#56b4ac}.dispatch-status .status-block.orange{background-color:#ff906d}.has-ftl-dispatch,.has-dispatch{min-width:600px}.has-ftl-dispatch:has(.app-input:focus-visible) .dropdown-selected .dispatch-icon,.has-ftl-dispatch:has(.app-input:focus-visible) .dropdown-selected .trailer-icon,.has-ftl-dispatch:has(.app-input:focus-visible) .dropdown-selected .truck-icon,.has-dispatch:has(.app-input:focus-visible) .dropdown-selected .dispatch-icon,.has-dispatch:has(.app-input:focus-visible) .dropdown-selected .trailer-icon,.has-dispatch:has(.app-input:focus-visible) .dropdown-selected .truck-icon{color:#fff}.dropdown-subitem{display:flex;justify-content:left;align-items:center;gap:4px}.truck-item{width:128px}.trailer-item{width:138px}.truck-trailer-option{opacity:0;transition:opacity .1s cubic-bezier(.46,.03,.51,.95);margin-left:auto}.truck-trailer-icon-colors.ic_truck_semi-truck,.truck-trailer-icon-colors.ic_truck_semi-wSleeper{color:#92b1f5}.truck-trailer-icon-colors.ic_truck_box-truck,.truck-trailer-icon-colors.ic_truck_reefer,.truck-trailer-icon-colors.ic_truck_cargo-van{color:#fbc88b}.truck-trailer-icon-colors.ic_truck_cement,.truck-trailer-icon-colors.ic_truck_dump,.truck-trailer-icon-colors.ic_truck_garbage{color:#ed9292}.truck-trailer-icon-colors.ic_truck_tow-truck,.truck-trailer-icon-colors.ic_truck_car-hauler,.truck-trailer-icon-colors.ic_truck_spotter{color:#86c9c3}.truck-trailer-icon-colors.ic_trailer_flatbed,.truck-trailer-icon-colors.ic_trailer_low-boy,.truck-trailer-icon-colors.ic_trailer_step-deck{color:#92b1f5}.truck-trailer-icon-colors.ic_trailer_chassis,.truck-trailer-icon-colors.ic_trailer_container{color:#80d6f1}.truck-trailer-icon-colors.ic_trailer_conestoga,.truck-trailer-icon-colors.ic_trailer_side-kit{color:#8785e8}.truck-trailer-icon-colors.ic_trailer_dryvan,.truck-trailer-icon-colors.ic_trailer_reefer{color:#fbc88b}.truck-trailer-icon-colors.ic_trailer_end-dump,.truck-trailer-icon-colors.ic_trailer_bottom-dump,.truck-trailer-icon-colors.ic_trailer_hopper{color:#ed9292}.truck-trailer-icon-colors.ic_trailer_tanker,.truck-trailer-icon-colors.ic_trailer_tanker-pneumatic{color:#ed93bb}.truck-trailer-icon-colors.ic_trailer_carhauler,.truck-trailer-icon-colors.ic_trailer_carhauler-stinger{color:#86c9c3}.sub-label{margin-left:auto;margin-right:22px;opacity:0;transition:margin .1s ease-in-out,opacity .1s ease-in-out;color:#6c6c6c}.app-input-label:has(.sub-label),.app-input-label:has(.accident-state){width:100%}.has-selected .sub-label{opacity:1}.dispatch-icon,.trailer-icon,.truck-icon{color:#919191;transition:color .1s cubic-bezier(.46,.03,.51,.95)}.truck-icon,.trailer-icon{width:42px}.truck-number{width:80px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.trailer-number{width:90px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.driver-name{max-width:170px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.dropdown-subitem-end{margin-left:auto;position:relative;height:26px;width:auto;display:flex;justify-content:right;align-items:center;font-family:Montserrat;font-weight:400;font-size:11px;line-height:18px;letter-spacing:0%;text-align:right;vertical-align:bottom}.end-item-base{position:absolute;display:flex;justify-content:right;align-items:center;width:max-content;gap:4px;color:#919191;transition:color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95);text-align:right}.dispatch-ltl{font-family:Montserrat;font-weight:700;font-size:11px;line-height:18px;letter-spacing:0%;text-align:right}.unassigned-ltl{margin-left:auto;display:flex;justify-content:right;align-items:center;width:max-content;gap:4px;color:#919191;transition:color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95);font-family:Montserrat;font-weight:700;font-size:11px;line-height:18px;letter-spacing:0%;text-align:right}.end-item-hover{position:absolute;display:flex;justify-content:right;align-items:center;gap:4px;width:max-content;opacity:0;color:#919191;transition:color .1s cubic-bezier(.46,.03,.51,.95),opacity .1s cubic-bezier(.46,.03,.51,.95)}.selected-end-item{margin-left:auto;font-family:Montserrat;font-weight:400;font-size:11px;line-height:18px;letter-spacing:0%;text-align:right;display:flex;justify-content:right;align-items:center;gap:4px}.group-item{font-family:Montserrat;font-weight:700!important;font-size:11px!important;line-height:18px;letter-spacing:0%;vertical-align:middle;text-transform:uppercase;background-color:#2f2f2f;color:#aaa!important}.group-item:not(:first-child){border-top:1px solid #424242}.group-item .group-icon{margin-left:auto;transform:rotate(180deg);transition:transform .1s cubic-bezier(.46,.03,.51,.95)}.group-item.unfolded{color:#fff!important}.group-item.unfolded .group-icon{transform:rotate(0)}.counter{background-color:#424242;padding:1px 4px;border-radius:60px;font-family:Montserrat;font-weight:600;font-size:11px;min-width:18px;line-height:14px;letter-spacing:0%;text-align:center;vertical-align:middle;color:#ffffffb2;transition:color .1s cubic-bezier(.46,.03,.51,.95)}.password-requirement{padding:6px;background-color:#fffffff2!important;box-shadow:0 0 4px #0006;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);overflow-y:hidden}.password-requirement p{font-family:Montserrat;font-weight:600;font-size:11px;line-height:14px;letter-spacing:0%;vertical-align:middle;color:#6c6c6c;font-style:italic}.password-requirement .icon,.password-requirement .icon-sm{width:14px!important;height:14px!important}.password-requirement .icon.checkmark,.password-requirement .checkmark.icon-sm{color:#ccc}.password-requirement .icon.cancel,.password-requirement .cancel.icon-sm{color:#e66767}.password-requirement ul{list-style-type:none;margin:6px 0 0;padding:0}.password-requirement ul li{color:#424242;font-size:11px;font-style:italic;font-weight:500;line-height:14px;display:flex;gap:4px}.password-requirement ul li.valid{color:#919191!important}.password-requirement ul li:not(:first-child){margin-top:6px}@media(hover:hover){.has-end-item:not(:has(.app-input:disabled)):hover .dropdown-selected{width:calc(100% - 44px)}}.has-end-item:not(:has(.app-input:disabled)):has(.app-input:focus-visible) .dropdown-selected{width:calc(100% - 44px)}.progress-bar{width:24px;height:8px;border-radius:2px;position:relative;transition:background-color .1s cubic-bezier(.46,.03,.51,.95)}.progress-bar:after{content:\"\";position:absolute;top:0;width:var(--progress);height:100%;transition:background-color .1s cubic-bezier(.46,.03,.51,.95)}.progress-bar.low{background-color:#df3c3c33}.progress-bar.low:after{background-color:#e66767}.progress-bar.medium{background-color:#f89b2e33}.progress-bar.medium:after{background-color:#fab15c}.progress-bar.high{background-color:#56b4ac33}.progress-bar.high:after{background-color:#56b4ac}.progress-bar.disable{background-color:#91919133}.progress-bar.disable:after{display:none}.app-input-container:has(.app-input:focus-visible) .selected-end-item .progress-bar{background-color:#fff!important}.full-icon{color:#919191}.fuelcard-number{width:216px}.fuelcard-brand{width:132px}.owner-ein{width:118px}.accident-name,.accident-unit,.accident-dob,.accident-cdl-number,.accident-vin,.accident-plate{flex-shrink:0}.accident-name>p,.accident-unit>p{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.accident-name{width:218px}.accident-unit{width:170px}.accident-dob,.accident-cdl-number,.accident-vin,.accident-plate{text-align:right;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.accident-dob{width:134px}.accident-cdl-number{width:140px}.accident-vin{width:182px}.accident-plate{width:140px}.accident-state{margin-left:auto;justify-content:flex-end;text-align:right}.app-input-label .accident-state{margin-right:22px;white-space:nowrap;transition:margin .1s ease-in-out}.has-multiple-dropdown.has-text{border-top-left-radius:0!important;border-top-right-radius:0!important}.multiple-container{display:flex;flex-wrap:wrap;gap:4px;padding:4px;border-top-left-radius:2px;border-top-right-radius:2px;position:relative;transition:background-color .1s ease-in-out;background-color:#e9effd}.multiple-container.hovered{background-color:#bed0f9}.multiple-container.hovered .multiple-selected{background-color:#e9effd}.multiple-container.focused{background-color:#0b49d1}.multiple-container.focused .multiple-selected{background-color:#3b73ed;color:#fff}.multiple-selected{background-color:#bed0f9;color:#2f2f2f;transition:background-color .1s ease-in-out,color .1s ease-in-out;display:flex;align-items:center;justify-content:space-between;width:100%;cursor:pointer;padding:2px 4px;-webkit-user-select:none;user-select:none;font-family:Montserrat;font-size:14px;font-weight:400;line-height:18px;width:209px;height:22px;border-radius:1px}.multiple-selected p{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}@media(hover:hover){.multiple-selected:hover{color:#2f2f2f!important;background-color:#fff!important}.multiple-selected:hover .multiple-remove-button{opacity:1}}.multiple-selected .multiple-remove-button{opacity:0;background-color:#6692f1;color:#fff;width:14px;height:14px}.multiple-selected .multiple-remove-button .multiple-remove-icon{width:12px;height:12px}.multiple-label{color:#424242;-webkit-user-select:none;user-select:none;pointer-events:none;font-family:Montserrat;font-size:11px;font-style:normal;font-weight:600;position:absolute;top:0;left:6px;transform:translateY(-14px)}.dropdown-group{border-radius:2px;transition:background-color .1s cubic-bezier(.46,.03,.51,.95),max-height .1s cubic-bezier(.46,.03,.51,.95),height .1s ease-in-out;margin-top:4px;max-height:var(--max-height);height:var(--max-height);overflow:hidden}.dropdown-group.no-items{cursor:default;pointer-events:none}.dropdown-group .group-item{outline:none;color:#fff!important;font-weight:400!important;font-size:14px!important;display:flex;transition:font-weight .1s ease-in-out,background-color .1s cubic-bezier(.46,.03,.51,.95),color .1s cubic-bezier(.46,.03,.51,.95);padding-left:6px;padding-right:6px}.dropdown-group .group-item.unfolded .counter{color:#fff}@media(hover:hover){.dropdown-group .group-item:hover .counter{color:#fff}}.dropdown-group .group-item.unfolded{font-weight:700!important}.dropdown-group .group-item .counter{margin-left:auto}.dropdown-group .group-item .group-icon{margin-left:0}.dropdown-group.active{background-color:#424242}@media(hover:hover){.dropdown-group.active .group-item:hover{background-color:#424242}}.dropdown-group.active .dropdown-item{background-color:#424242}@media(hover:hover){.dropdown-group:hover:not(.no-items){background-color:#424242}.dropdown-group:hover:not(.no-items) .group-item:hover{background-color:#424242}.dropdown-group:hover:not(.no-items) .dropdown-item{background-color:#424242}}.dropdown-group.active{padding:4px;padding-top:0!important}.dropdown-group.active .group-item{position:relative!important;padding-left:2px!important;padding-right:2px!important}@media(hover:hover){.dropdown-group .dropdown-item:not(.group-item):hover{background-color:#6c6c6c!important}}.fuel-stop-transaction-store{display:flex;gap:4px}.fuel-stop-transaction-store .fuel-stop-transaction-store-address{font-size:11px;color:#ccc;margin-left:auto}.fuel-stop-transaction-store .favorite-icon{color:#92b1f5;width:14px;height:14px}.fuel-stop-transaction-nostore{padding-left:2px;padding-right:2px}.hide-dropdown{opacity:0;pointer-events:none;transition:opacity .1s cubic-bezier(.46,.03,.51,.95)}.dropdown-menu:not(.hide-dropdown) .dropdown-menu-content{transition:max-height .2s cubic-bezier(.46,.03,.51,.95),opacity .2s cubic-bezier(.46,.03,.51,.95),height .1s ease-in-out;animation:dropdown-menu-opening .2s cubic-bezier(.46,.03,.51,.95)}.dropdown-menu:not(.hide-dropdown).animate-dropdown .dropdown-menu-content{max-height:var(--max-height);height:var(--max-height)}.closing:not(.hide-dropdown) .dropdown-menu-content{animation:dropdown-menu-closing .2s cubic-bezier(.46,.03,.51,.95);opacity:0;max-height:0}@keyframes dropdown-menu-opening{0%{max-height:0;opacity:0}to{max-height:244px;opacity:1}}@keyframes dropdown-menu-closing{0%{max-height:244px;opacity:1}to{max-height:0;opacity:0}}.app-input-container:has(.app-input:focus-visible).has-dropdown .loader.loading,.app-input-container:has(.app-input:focus-visible).has-text .loader.loading{opacity:1!important}.app-input-container:has(.app-input:focus-visible).has-dropdown.has-text .loader{transform:translate(-48px)}.loader{position:absolute;top:4px;right:0;transform:translate(-26px);pointer-events:none;z-index:1000;width:18px;height:18px;display:flex;align-items:center;justify-content:center;transition:opacity .1s ease-in-out,transform .1s ease-in-out;opacity:0}.loader-icon{width:14px;height:14px;animation:spin .8s ease-in-out infinite;transform-origin:center;display:flex;align-items:center;justify-content:center}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.size-22{height:22px}.size-22 .icon,.size-22 .icon-sm{height:14px!important;width:14px!important}.size-22 .bg-icon{height:14px!important;width:14px!important;padding:2px!important}.size-22 .icon-container{height:22px!important;padding-top:2px;padding-bottom:2px;padding-left:4px!important}.size-22 .app-input{padding-top:2px;padding-bottom:2px;padding-left:4px}@media(pointer:coarse){.size-22 .app-input{height:22px}}.size-22 .app-input-label{padding-top:2px;padding-bottom:2px;padding-left:4px}.size-22.has-icon .app-input-label{padding-left:0!important}.size-22 .app-input-icon{height:14px!important;width:14px!important}.size-22.has-text .app-input-label,.size-22:has(.app-input:focus-visible) .app-input-label{transform:translateY(-18px)}.size-22 .loader{top:2px;transform:translate(-22px)!important}.strikethrough .app-input,.strikethrough .dropdown-selected-content{text-decoration:line-through}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.split-option>p{max-width:calc(50% - 2px)}.split-option .dropdown-subitem-end{width:calc(50% - 2px)}.split-option .end-item-base,.split-option .end-item-hover{max-width:100%}.selected-end-item-truncate{max-width:50%}.truck-owner-unit{min-width:0}.truck-owner-unit .dropdown-content{max-width:none;min-width:0}.truck-owner-bullet{flex-shrink:0;color:#919191}\n"] }]
4356
4406
  }], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
4357
4407
  type: Optional
4358
4408
  }, {