Trilium Frontend API
    Preparing search index...

    Class ListItemButtonView

    Button that is used as dropdown list item entry.

    Hierarchy (View Summary)

    Index
    _ariaChecked: string | false

    Aria-checked attribute of element. It is calculated based on #isToggleable isToggleable and #role. It's set to true if the button is on and the role is checkable.

    _ariaPressed: string | false

    Aria-pressed attribute of element. It is calculated based on #isToggleable isToggleable and #role. It's set to true if the button is on and the role is not checkable.

    _hasCheck: boolean

    The flag that indicates if the button should render a check holder.

    _tooltipString: string

    Tooltip of the button bound to the template.

    • #tooltip
    • module:ui/button/buttonview~ButtonView#_getTooltipString
    _unboundChildren: ViewCollection

    A collection of view instances, which have been added directly into the module:ui/template~Template#children.

    Collections registered with #createCollection.

    ariaLabel?: string

    (Optional) The ARIA property reflected by the aria-label DOM attribute used by assistive technologies.

    ariaLabelledBy: string

    (Optional) The ARIA property reflected by the aria-ariaLabelledBy DOM attribute used by assistive technologies.

    children: ViewCollection

    Collection of the child views inside of the button #element.

    class: string

    (Optional) The additional CSS class set on the button.

    An HTML element of the view. null until module:ui/view~View#render rendered from the module:ui/view~View#template template. The class-level example above illustrates typical usage. The full description, fenced examples, and assignment note are in the block comment immediately above the element field in the source.

    hasCheckSpace: boolean

    Indicates whether the button view has reserved space for a check holder.

    icon: string

    (Optional) An XML module:ui/icon/iconview~IconView#content content of the icon. When defined, an iconView should be added to the button.

    The user must provide the entire XML string, not just the path. See the {@glink framework/architecture/ui-library#setting-label-icon-and-tooltip UI library} guide for details.

    iconView: IconView

    The icon view of the button. Will be added to #children when the #icon icon attribute is defined.

    isEnabled: boolean

    Controls whether the button view is enabled, i.e. it can be clicked and execute an action.

    To change the "on" state of the button, use #isOn instead.

    true
    
    isOn: boolean

    Controls whether the button view is "on". It makes sense when a feature it represents is currently active, e.g. a bold button is "on" when the selection is in the bold text.

    To disable the button, use #isEnabled instead.

    true
    
    isRendered: boolean

    Set true when the view has already been module:ui/view~View#render rendered.

    isToggleable: boolean

    Controls whether the button view is a toggle button (two–state) for assistive technologies.

    false
    
    isVisible: boolean

    Controls whether the button view is visible. Visible by default, buttons are hidden using a CSS class.

    true
    
    keystroke: string

    (Optional) The keystroke associated with the button, i.e. CTRL+B, in the string format compatible with module:utils/keyboard.

    Note: Use module:ui/button/button~Button#withKeystroke if you want to display the keystroke information next to the module:ui/button/button~Button#label label.

    keystrokeView: View

    A view displaying the keystroke of the button next to the #labelView label. Added to #children when the #withKeystroke withKeystroke attribute is defined.

    label: string

    The label of the button view visible to the user when #withText is true. It can also be used to create a #tooltip.

    labelStyle: string

    (Optional) The value of the style attribute of the label.

    labelView: ButtonLabel

    Label of the button view. Its text is configurable using the #label label attribute.

    If not configured otherwise in the constructor(), by default the label is an instance of module:ui/button/buttonlabelview~ButtonLabelView.

    locale: Locale

    A set of tools to localize the user interface.

    Also see module:core/editor/editor~Editor#locale.

    role: string

    (Optional) The property reflected by the role DOM attribute to be used by assistive technologies.

    Shorthand for module:utils/locale~Locale#t.

    Note: If #locale instance hasn't been passed to the view this method may not be available.

    module:utils/locale~Locale#t

    tabindex: number

    (Optional) Controls the tabindex HTML attribute of the button. By default, the button is focusable but does not included in the Tab order.

    -1
    
    template?: Template

    Template of this view. It provides the #element representing the view in DOM, which is #render rendered.

    tooltip: string | boolean | ((label: string, keystroke: string) => string)

    (Optional) Tooltip of the button, i.e. displayed when hovering the button with the mouse cursor.

    • If defined as a Boolean (e.g. true), then combination of label and keystroke will be set as a tooltip.
    • If defined as a String, tooltip will equal the exact text of that String.
    • If defined as a Function, label and keystroke will be passed to that function, which is to return a string with the tooltip text.
    const view = new ButtonView( locale );
    view.tooltip = ( label, keystroke ) => `A tooltip for ${ label } and ${ keystroke }.`
    false
    
    tooltipPosition: "s" | "n" | "e" | "w" | "sw" | "se"

    (Optional) The position of the tooltip. See module:ui/tooltipmanager~TooltipManager to learn more about the tooltip system.

    Note: It makes sense only when the #tooltip tooltip attribute is defined.

    's'
    
    type: "reset" | "submit" | "button" | "menu"

    The HTML type of the button.

    'button'
    
    viewUid?: string
    withKeystroke: boolean

    (Optional) Controls whether the keystroke of the button is displayed next to its module:ui/button/button~Button#label label.

    Note: This property requires a module:ui/button/button~Button#keystroke keystroke to be defined in the first place.

    false
    
    withText: boolean

    (Optional) Controls whether the label of the button is hidden (e.g. an icon–only button).

    false
    
    • get bindTemplate(): BindChain<this>

      Shorthand for module:ui/template~Template.bind, a binding module:ui/template~BindChain interface pre–configured for the view instance.

      It provides module:ui/template~BindChain#to to() and module:ui/template~BindChain#if if() methods that initialize bindings with observable attributes and attach DOM listeners.

      class SampleView extends View {
      constructor( locale ) {
      super( locale );

      const bind = this.bindTemplate;

      // These {@link module:utils/observablemixin~Observable observable} attributes will control
      // the state of the view in DOM.
      this.set( {
      elementClass: 'foo',
      isEnabled: true
      } );

      this.setTemplate( {
      tag: 'p',

      attributes: {
      // The class HTML attribute will follow elementClass
      // and isEnabled view attributes.
      class: [
      bind.to( 'elementClass' )
      bind.if( 'isEnabled', 'present-when-enabled' )
      ]
      },

      on: {
      // The view will fire the "clicked" event upon clicking <p> in DOM.
      click: bind.to( 'clicked' )
      }
      } );
      }
      }

      Returns BindChain<this>

    • Creates a new collection of views, which can be used as module:ui/template~Template#children of this view.

      class SampleView extends View {
      constructor( locale ) {
      super( locale );

      const child = new ChildView( locale );
      this.items = this.createCollection( [ child ] );

      this.setTemplate( {
      tag: 'p',

      // `items` collection will render here.
      children: this.items
      } );
      }
      }

      const view = new SampleView( locale );
      view.render();

      // It will append <p><child#element></p> to the <body>.
      document.body.appendChild( view.element );

      Type Parameters

      Parameters

      • Optionalviews: Iterable<T>

        Initial views of the collection.

      Returns ViewCollection<T>

      A new collection of view instances.

    • The opposite of #registerChild. Removes a child view from this view instance. Once removed, the child is no longer managed by its parent, e.g. it can safely become a child of another parent view.

      Parameters

      Returns void

      #registerChild

    • Recursively destroys the view instance and child views added by #registerChild and residing in collections created by the #createCollection.

      Destruction disables all event listeners:

      • created on the view, e.g. view.on( 'event', () => {} ),
      • defined in the #template for DOM events.

      Returns void

    • module:ui/template~Template.extend Extends the #template of the view with with given definition.

      A shorthand for:

      Template.extend( view.template, definition );
      

      Note: Is requires the #template to be already set. See #setTemplate.

      Parameters

      Returns void

    • Focuses the #element of the button.

      Returns void

    • Registers a new child view under the view instance. Once registered, a child view is managed by its parent, including #render rendering and #destroy destruction.

      To revert this, use #deregisterChild.

      class SampleView extends View {
      constructor( locale ) {
      super( locale );

      this.childA = new SomeChildView( locale );
      this.childB = new SomeChildView( locale );

      this.setTemplate( { tag: 'p' } );

      // Register the children.
      this.registerChild( [ this.childA, this.childB ] );
      }

      render() {
      super.render();

      this.element.appendChild( this.childA.element );
      this.element.appendChild( this.childB.element );
      }
      }

      const view = new SampleView( locale );

      view.render();

      // Will append <p><childA#element><b></b><childB#element></p>.
      document.body.appendChild( view.element );

      Note: There's no need to add child views if they're already referenced in the #template:

      class SampleView extends View {
      constructor( locale ) {
      super( locale );

      this.childA = new SomeChildView( locale );
      this.childB = new SomeChildView( locale );

      this.setTemplate( {
      tag: 'p',

      // These children will be added automatically. There's no
      // need to call {@link #registerChild} for any of them.
      children: [ this.childA, this.childB ]
      } );
      }

      // ...
      }

      Parameters

      Returns void

    • Recursively renders the view.

      Once the view is rendered:

      • the #element becomes an HTML element out of #template,
      • the #isRendered flag is set true.

      Note: The children of the view:

      • defined directly in the #template
      • residing in collections created by the #createCollection method,
      • and added by #registerChild are also rendered in the process.

      In general, render() method is the right place to keep the code which refers to the #element and should be executed at the very beginning of the view's life cycle.

      It is possible to module:ui/template~Template.extend the #template before the view is rendered. To allow an early customization of the view (e.g. by its parent), such references should be done in render().

      class SampleView extends View {
      constructor() {
      this.setTemplate( {
      // ...
      } );
      },

      render() {
      // View#element becomes available.
      super.render();

      // The "scroll" listener depends on #element.
      this.listenTo( window, 'scroll', () => {
      // A reference to #element would render the #template and make it non-extendable.
      if ( window.scrollY > 0 ) {
      this.element.scrollLeft = 100;
      } else {
      this.element.scrollLeft = 0;
      }
      } );
      }
      }

      const view = new SampleView();

      // Let's customize the view before it gets rendered.
      view.extendTemplate( {
      attributes: {
      class: [
      'additional-class'
      ]
      }
      } );

      // Late rendering allows customization of the view.
      view.render();

      Returns void

    • Sets the #template of the view with with given definition.

      A shorthand for:

      view.setTemplate( definition );
      

      Parameters

      Returns void