def test_js_on_click_executes(self, bokeh_model_page: BokehModelPage) -> None: button = Toggle() button.js_on_event( 'button_click', CustomJS(code=RECORD("value", "cb_obj.origin.active"))) page = bokeh_model_page(button) button_el = find_element_for(page.driver, button, ".bk-btn") button_el.click() results = page.results assert results == {'value': True} button_el = find_element_for(page.driver, button, ".bk-btn") button_el.click() results = page.results assert results == {'value': False} button_el = find_element_for(page.driver, button, ".bk-btn") button_el.click() results = page.results assert results == {'value': True} assert page.has_no_console_errors()
from bokeh.io import show from bokeh.models import CustomJS, Toggle toggle = Toggle(label="Foo", button_type="success") toggle.js_on_event( 'button_click', CustomJS(args=dict(btn=toggle), code=""" console.log('toggle: active=' + btn.active, this.toString()) """)) show(toggle)
from bokeh.document import Document from bokeh.embed import file_html from bokeh.models import (Button, CheckboxButtonGroup, CheckboxGroup, Column, CustomJS, Dropdown, RadioButtonGroup, RadioGroup, Toggle) from bokeh.resources import INLINE from bokeh.util.browser import view button = Button(label="Button (enabled) - has click event", button_type="primary") button.js_on_event("button_click", CustomJS(code="console.log('button: click ', this.toString())")) button.js_on_event("button_click", CustomJS(code="console.log('button: click ', this.toString())")) button_disabled = Button(label="Button (disabled) - no click event", button_type="primary", disabled=True) button_disabled.js_on_event("button_click", CustomJS(code="console.log('button(disabled): click ', this.toString())")) toggle_inactive = Toggle(label="Toggle button (initially inactive)", button_type="success") toggle_inactive.js_on_event('button_click', CustomJS(code="console.log('toggle(inactive): active=' + this.origin.active, this.toString())")) toggle_active = Toggle(label="Toggle button (initially active)", button_type="success", active=True) toggle_active.js_on_event('button_click', CustomJS(code="console.log('toggle(active): active=' + this.origin.active, this.toString())")) menu = [("Item 1", "item_1_value"), ("Item 2", "item_2_value"), None, ("Item 3", "item_3_value")] dropdown = Dropdown(label="Dropdown button", button_type="warning", menu=menu) dropdown.js_on_event("button_click", CustomJS(code="console.log('dropdown: click ' + this.toString())")) dropdown.js_on_event("menu_item_click", CustomJS(code="console.log('dropdown: ' + this.item, this.toString())")) dropdown_disabled = Dropdown(label="Dropdown button (disabled)", button_type="warning", disabled=True, menu=menu) dropdown_disabled.js_on_event("button_click", CustomJS(code="console.log('dropdown(disabled): click ' + this.toString())")) dropdown_disabled.js_on_event("menu_item_click", CustomJS(code="console.log('dropdown(disabled): ' + this.item, this.toString())")) dropdown_split = Dropdown(label="Split button", split=True, button_type="danger", menu=menu)