1
chenjingwu
2024-05-24 ab5a982874f88556b72e02177fa88dedc2d56fe8
force-app/main/default/lwc/multiSelectCombobox/multiSelectCombobox.js
@@ -1,13 +1,14 @@
/* Code by CafeForce || www.cafeforce.com || support@cafeforce.com || Mandatory Header */
import { LightningElement, track, api } from 'lwc';
import lexHandCss from '@salesforce/resourceUrl/lexHandCss';
import {loadStyle} from 'lightning/platformResourceLoader';
export default class MultiSelectCombobox extends LightningElement {
    
    @api options;
    @api selectedValue;
    @api selectedValues = [];
    @api label;
    @api minChar = 2;
    @api minChar = 1;
    @api disabled = false;
    @api multiSelect = false;
    @api myValue;
@@ -15,11 +16,15 @@
    @track value;
    @track values = [];
    @track optionData;
    @track searchString;
    @api searchString;
    @track message;
    @track showDropdown = false;
    @api placeholder = '--无--';
    @track errorFlag = false;
    connectedCallback() {
        Promise.all([
            loadStyle(this, lexHandCss)
           ]);
        this.showDropdown = false;
        var optionData = this.options ? (JSON.parse(JSON.stringify(this.options))) : null;
        var value = this.selectedValue ? (JSON.parse(JSON.stringify(this.selectedValue))) : null;
@@ -51,6 +56,15 @@
    get isRequired() {
        return this.required;
    }
    closeAction(){
        this.showDropdown = false;
    }
    handlePayModeOpen() {
        setTimeout(() => {
            const topDiv = this.template.querySelector('[data-id="scrollSec"]');
            topDiv.scrollTop = topDiv.scrollHeight;
        }, 20);
    }
    filterOptions(event) {
@@ -112,7 +126,20 @@
                event.preventDefault();
            else
                this.showDropdown = false;
                this.dispatchEvent(new CustomEvent('select', {
                    detail: {
                        'payloadType' : 'multi-select',
                        'payload' : {
                            'value' : this.value,
                            'values' : this.values
                        }
                    }
                }));
        }
    }
    dontClose(event){
        event.preventDefault();
    }
    showOptions() {
@@ -159,6 +186,17 @@
                count++;
            }
        }
        if(!previousLabel){
            var element = this.template.querySelector('[data-id="myinput"]');
            element.classList.add('slds-has-error');
            this.errorFlag = true;
            this.showDropdown = false;
        }else{
            var element = this.template.querySelector('[data-id="myinput"]');
            element.classList.remove('slds-has-error');
            this.errorFlag = false;
            this.showDropdown = false;
        }
        if(this.multiSelect)
           this.searchString = count + ' Option(s) Selected';
        else
@@ -166,15 +204,7 @@
        
        this.showDropdown = false;
        this.dispatchEvent(new CustomEvent('select', {
            detail: {
                'payloadType' : 'multi-select',
                'payload' : {
                    'value' : this.value,
                    'values' : this.values
                }
            }
        }));
    }
}
/*