| | |
| | | /* 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; |
| | | @api required; |
| | | @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; |
| | |
| | | this.value = value; |
| | | this.values = values; |
| | | this.optionData = optionData; |
| | | } |
| | | |
| | | 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) { |
| | |
| | | |
| | | selectItem(event) { |
| | | var selectedVal = event.currentTarget.dataset.id; |
| | | this.myValue = selectedVal; |
| | | if(selectedVal) { |
| | | var count = 0; |
| | | var options = JSON.parse(JSON.stringify(this.optionData)); |
| | |
| | | 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() { |
| | |
| | | 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 |
| | |
| | | |
| | | this.showDropdown = false; |
| | | |
| | | this.dispatchEvent(new CustomEvent('select', { |
| | | detail: { |
| | | 'payloadType' : 'multi-select', |
| | | 'payload' : { |
| | | 'value' : this.value, |
| | | 'values' : this.values |
| | | } |
| | | } |
| | | })); |
| | | |
| | | } |
| | | } |
| | | /* |