Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
// will return false if the menu is still closing and this method listens to the closed event which
// occurs after the menu is already closed.
_this.isMenuOpen_ = false;
_this.selectedText_.removeAttribute('aria-expanded');
if (document.activeElement !== _this.selectedText_) {
_this.foundation_.handleBlur();
}
};
this.targetElement_.addEventListener('change', this.handleChange_);
this.targetElement_.addEventListener('focus', this.handleFocus_);
this.targetElement_.addEventListener('blur', this.handleBlur_);
this.targetElement_.addEventListener('click', this.handleClick_);
if (this.menuElement_) {
this.selectedText_.addEventListener('keydown', this.handleKeydown_);
this.menu_.listen(menuSurfaceConstants.strings.CLOSED_EVENT, this.handleMenuClosed_);
this.menu_.listen(menuSurfaceConstants.strings.OPENED_EVENT, this.handleMenuOpened_);
this.menu_.listen(menuConstants.strings.SELECTED_EVENT, this.handleMenuSelected_);
if (this.hiddenInput_ && this.hiddenInput_.value) {
// If the hidden input already has a value, use it to restore the select's value.
// This can happen e.g. if the user goes back or (in some browsers) refreshes the page.
var enhancedAdapterMethods = this.getEnhancedSelectAdapterMethods_();
enhancedAdapterMethods.setValue(this.hiddenInput_.value);
}
else if (this.menuElement_.querySelector(strings.SELECTED_ITEM_SELECTOR)) {
// If an element is selected, the select should set the initial selected text.
var enhancedAdapterMethods = this.getEnhancedSelectAdapterMethods_();
enhancedAdapterMethods.setValue(enhancedAdapterMethods.getValue());
}
}
// Initially sync floating label
this.foundation_.handleChange(/* didChange */ false);
if (this.root_.classList.contains(cssClasses.DISABLED)
};
const element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;
element.addEventListener('change', this.handleChange_);
element.addEventListener('focus', this.handleFocus_);
element.addEventListener('blur', this.handleBlur_);
['mousedown', 'touchstart'].forEach((evtType) => {
element.addEventListener(evtType, this.handleClick_);
});
if (this.menuElement_) {
this.selectedText_.addEventListener('keydown', this.handleKeydown_);
this.menu_.listen(menuSurfaceConstants.strings.CLOSED_EVENT, this.handleMenuClosed_);
this.menu_.listen(menuSurfaceConstants.strings.OPENED_EVENT, this.handleMenuOpened_);
this.menu_.listen(menuConstants.strings.SELECTED_EVENT, this.handleMenuSelected_);
if (this.hiddenInput_ && this.hiddenInput_.value) {
// If the hidden input already has a value, use it to restore the select's value.
// This can happen e.g. if the user goes back or (in some browsers) refreshes the page.
const enhancedAdapterMethods = this.getEnhancedSelectAdapterMethods_();
enhancedAdapterMethods.setValue(this.hiddenInput_.value);
} else if (this.menuElement_.querySelector(strings.SELECTED_ITEM_SELECTOR)) {
// If an element is selected, the select should set the initial selected text.
const enhancedAdapterMethods = this.getEnhancedSelectAdapterMethods_();
enhancedAdapterMethods.setValue(enhancedAdapterMethods.getValue());
}
}
// Initially sync floating label
this.foundation_.handleChange(/* didChange */ false);
destroy() {
this.targetElement_.removeEventListener('change', this.handleChange_);
this.targetElement_.removeEventListener('focus', this.handleFocus_);
this.targetElement_.removeEventListener('blur', this.handleBlur_);
this.targetElement_.removeEventListener('keydown', this.handleKeydown_);
this.targetElement_.removeEventListener('click', this.handleClick_ as EventListener);
if (this.menu_) {
this.menu_.unlisten(menuSurfaceConstants.strings.CLOSED_EVENT, this.handleMenuClosed_);
this.menu_.unlisten(menuSurfaceConstants.strings.OPENED_EVENT, this.handleMenuOpened_);
this.menu_.unlisten(menuConstants.strings.SELECTED_EVENT, this.handleMenuSelected_);
this.menu_.destroy();
}
if (this.ripple) {
this.ripple.destroy();
}
if (this.outline_) {
this.outline_.destroy();
}
if (this.leadingIcon_) {
this.leadingIcon_.destroy();
}
if (this.helperText_) {
this.helperText_.destroy();
}
destroy() {
const element = this.nativeControl_ ? this.nativeControl_ : this.selectedText_;
element.removeEventListener('change', this.handleChange_);
element.removeEventListener('focus', this.handleFocus_);
element.removeEventListener('blur', this.handleBlur_);
element.removeEventListener('keydown', this.handleKeydown_);
['mousedown', 'touchstart'].forEach((evtType) => {
element.removeEventListener(evtType, this.handleClick_);
});
if (this.menu_) {
this.menu_.unlisten(menuSurfaceConstants.strings.CLOSED_EVENT, this.handleMenuClosed_);
this.menu_.unlisten(menuSurfaceConstants.strings.OPENED_EVENT, this.handleMenuOpened_);
this.menu_.unlisten(menuConstants.strings.SELECTED_EVENT, this.handleMenuSelected_);
this.menu_.destroy();
}
if (this.ripple) {
this.ripple.destroy();
}
if (this.outline_) {
this.outline_.destroy();
}
if (this.leadingIcon_) {
this.leadingIcon_.destroy();
}
if (this.helperText_) {
this.helperText_.destroy();
destroy() {
this.targetElement_.removeEventListener('change', this.handleChange_);
this.targetElement_.removeEventListener('focus', this.handleFocus_);
this.targetElement_.removeEventListener('blur', this.handleBlur_);
this.targetElement_.removeEventListener('keydown', this.handleKeydown_);
this.targetElement_.removeEventListener('click', this.handleClick_ as EventListener);
if (this.menu_) {
this.menu_.unlisten(menuSurfaceConstants.strings.CLOSED_EVENT, this.handleMenuClosed_);
this.menu_.unlisten(menuSurfaceConstants.strings.OPENED_EVENT, this.handleMenuOpened_);
this.menu_.unlisten(menuConstants.strings.SELECTED_EVENT, this.handleMenuSelected_);
this.menu_.destroy();
}
if (this.ripple) {
this.ripple.destroy();
}
if (this.outline_) {
this.outline_.destroy();
}
if (this.leadingIcon_) {
this.leadingIcon_.destroy();
}
if (this.helperText_) {
this.helperText_.destroy();
MDCSelect.prototype.destroy = function () {
this.targetElement_.removeEventListener('change', this.handleChange_);
this.targetElement_.removeEventListener('focus', this.handleFocus_);
this.targetElement_.removeEventListener('blur', this.handleBlur_);
this.targetElement_.removeEventListener('keydown', this.handleKeydown_);
this.targetElement_.removeEventListener('click', this.handleClick_);
if (this.menu_) {
this.menu_.unlisten(menuSurfaceConstants.strings.CLOSED_EVENT, this.handleMenuClosed_);
this.menu_.unlisten(menuSurfaceConstants.strings.OPENED_EVENT, this.handleMenuOpened_);
this.menu_.unlisten(menuConstants.strings.SELECTED_EVENT, this.handleMenuSelected_);
this.menu_.destroy();
}
if (this.ripple) {
this.ripple.destroy();
}
if (this.outline_) {
this.outline_.destroy();
}
if (this.leadingIcon_) {
this.leadingIcon_.destroy();
}
if (this.helperText_) {
this.helperText_.destroy();
}