<template> 
 | 
    <div class={getFormElementClass}> 
 | 
        <label lwc:if={label} class={getLabelClass} for="combobox"> 
 | 
            <abbr lwc:if={required} title="required" class="slds-required">*</abbr> 
 | 
            {label} 
 | 
        </label> 
 | 
        <div class="slds-form-element__control"> 
 | 
            <div class={getContainerClass}> 
 | 
                <div class={getDropdownClass} aria-expanded={isListboxOpen} aria-haspopup="listbox" aria-owns="listbox" 
 | 
                    role="combobox"> 
 | 
                    <!-- Search input start --> 
 | 
                    <div class={getComboboxClass} role="none"> 
 | 
                        <template lwc:if={isSingleEntry}> 
 | 
                            <lightning-icon icon-name={getSelectIconName} size="small" 
 | 
                                alternative-text="Selected item icon" class={getSelectIconClass}> 
 | 
                            </lightning-icon> 
 | 
                        </template> 
 | 
  
 | 
                        <!-- Text input --> 
 | 
                        <input type="text" class={getInputClass} aria-autocomplete="list" aria-controls="listbox" 
 | 
                            aria-activedescendant={_focusedResultIndex} autocomplete="off" role="textbox" id="combobox" 
 | 
                            placeholder={placeholder} value={getInputValue} title={getInputTitle} 
 | 
                            readonly={isInputReadonly} disabled={disabled} onfocus={handleFocus} onblur={handleBlur} 
 | 
                            oninput={handleInput} onkeydown={handleKeyDown} /> 
 | 
  
 | 
                        <!-- Search icon --> 
 | 
                        <lightning-icon icon-name="utility:search" size="x-small" alternative-text="Search icon" 
 | 
                            class={getSearchIconClass}></lightning-icon> 
 | 
  
 | 
                        <!-- Clear selection button icon for single entry lookups --> 
 | 
                        <template lwc:if={isSingleEntry}> 
 | 
                            <button title="Remove selected option" type="button" onclick={handleClearSelection} 
 | 
                                class={getClearSelectionButtonClass} disabled={disabled}> 
 | 
                                <lightning-icon icon-name="utility:close" size="x-small" 
 | 
                                    alternative-text="Remove selected option" 
 | 
                                    class="slds-button__icon"></lightning-icon> 
 | 
                            </button> 
 | 
                        </template> 
 | 
                    </div> 
 | 
                    <!-- Search input end --> 
 | 
  
 | 
                    <!-- Result list box start --> 
 | 
                    <div id="listbox" role="listbox" aria-label={label} onmousedown={handleComboboxMouseDown} 
 | 
                        onmouseup={handleComboboxMouseUp} class={getListboxClass}> 
 | 
                        <ul class="slds-listbox slds-listbox_vertical" role="presentation"> 
 | 
                            <!-- Spinner to display when waiting for results of search --> 
 | 
                            <div lwc:if={loading}> 
 | 
                                <lightning-spinner alternative-text="Loading" size="small"></lightning-spinner> 
 | 
                            </div> 
 | 
  
 | 
                            <!-- Result list start --> 
 | 
                            <template for:each={searchResultsLocalState} for:item="item" for:index="index" 
 | 
                                lwc:if={hasResults}> 
 | 
                                <li key={item.result.id} role="presentation" class="slds-listbox__item"> 
 | 
                                    <div class={item.classes} role="option" id={index} aria-label={item.result.title} 
 | 
                                        onclick={handleResultClick} data-recordid={item.result.id}> 
 | 
                                        <span class="slds-media__figure slds-listbox__option-icon"> 
 | 
                                            <lightning-icon icon-name={item.result.icon} size="small" 
 | 
                                                alternative-text="Result item icon"></lightning-icon> 
 | 
                                        </span> 
 | 
                                        <span class="slds-media__body"> 
 | 
                                            <span class="slds-listbox__option-text slds-listbox__option-text_entity"> 
 | 
                                                <lightning-formatted-rich-text value={item.result.titleFormatted} 
 | 
                                                    disable-linkify> 
 | 
                                                </lightning-formatted-rich-text> 
 | 
                                            </span> 
 | 
                                            <!-- <span lwc:if={item.result.subtitleFormatted} 
 | 
                                                class="slds-listbox__option-meta slds-listbox__option-meta_entity"> 
 | 
                                                <lightning-formatted-rich-text value={item.result.subtitleFormatted} 
 | 
                                                    disable-linkify> 
 | 
                                                </lightning-formatted-rich-text> 
 | 
                                            </span> --> 
 | 
                                        </span> 
 | 
                                    </div> 
 | 
                                </li> 
 | 
                            </template> 
 | 
                            <!-- Result list end --> 
 | 
  
 | 
                            <!-- No results start --> 
 | 
                            <template lwc:else> 
 | 
                                <li role="presentation"> 
 | 
                                    <span class="slds-media slds-listbox__option_entity" role="option"> 
 | 
                                        <span lwc:if={loading} class="slds-media__body">Loading...</span> 
 | 
                                        <span lwc:else class="slds-media__body">No results.</span> 
 | 
                                    </span> 
 | 
                                </li> 
 | 
                            </template> 
 | 
                            <!-- No results end --> 
 | 
  
 | 
                            <!-- Create new records --> 
 | 
                            <template for:each={newRecordOptions} for:item="newRecord"> 
 | 
                                <li key={newRecord.value} role="presentation" class="slds-listbox__item"> 
 | 
                                    <div class="slds-media slds-media_center slds-listbox__option slds-listbox__option_entity" 
 | 
                                        onclick={handleNewRecordClick} data-sobject={newRecord.value} role="option"> 
 | 
                                        <span class="slds-media__figure slds-listbox__option-icon"> 
 | 
                                            <lightning-icon icon-name="utility:add" size="small" 
 | 
                                                alternative-text={newRecord.label}></lightning-icon> 
 | 
                                        </span> 
 | 
                                        <span class="slds-media__body"> 
 | 
                                            <span class="slds-listbox__option-text">{newRecord.label}</span> 
 | 
                                        </span> 
 | 
                                    </div> 
 | 
                                </li> 
 | 
                            </template> 
 | 
                            <!-- Create new records end --> 
 | 
                        </ul> 
 | 
                    </div> 
 | 
                    <!-- Result list box end --> 
 | 
                </div> 
 | 
            </div> 
 | 
  
 | 
            <!-- Multi-selection start --> 
 | 
            <template lwc:if={isMultiEntry}> 
 | 
                <div id="selection" role="listbox" aria-label={label} aria-orientation="horizontal"> 
 | 
                    <ul class="slds-listbox slds-listbox_inline slds-var-p-top_xxx-small" role="group" 
 | 
                        aria-label="Selected options"> 
 | 
                        <template for:each={selection} for:item="item"> 
 | 
                            <li key={item.id} role="presentation"> 
 | 
                                <lightning-pill label={item.title} title={item.title} 
 | 
                                    onremove={handleRemoveSelectedItem} name={item.id}> 
 | 
                                    <lightning-icon icon-name={item.icon}></lightning-icon> 
 | 
                                </lightning-pill> 
 | 
                            </li> 
 | 
                        </template> 
 | 
                    </ul> 
 | 
                </div> 
 | 
            </template> 
 | 
            <!-- Multi-selection end --> 
 | 
  
 | 
            <!-- Errors start --> 
 | 
            <template for:each={_errors} for:item="error"> 
 | 
                <div key={error.id} role="alert" class="slds-form-element__label slds-var-m-top_xx-small form-error"> 
 | 
                    {error.message} 
 | 
                </div> 
 | 
            </template> 
 | 
            <!-- Errors end --> 
 | 
        </div> 
 | 
    </div> 
 | 
</template> 
 |