Sha256: e96a18ebdb8b90864c9f6005382ca167d6be919b7aa335c645defa82d1c18295

Contents?: true

Size: 915 Bytes

Versions: 1

Compression:

Stored size: 915 Bytes

Contents

import {VBaseContainer} from "./base-container";
import {VBaseComponent, hookupComponents} from "./base-component";
import {eventHandlerMixin} from "./mixins/event-handler";

export function initFileInputs() {
  console.log('\tFile Inputs');
  hookupComponents('.v-file-input', VFileInput, null);
}

export class VFileInput extends eventHandlerMixin(VBaseComponent) {
  constructor(element, mdcComponent) {
    super(element, mdcComponent);

    this.input = element.querySelector('input[type=file]');
    this.label = element.querySelector('label');

    ['change', 'mouseup'].forEach((e) => {
      element.addEventListener(e, () => this.handleFileSelection());
    });
  }

  // From an example based on: https://www.quirksmode.org/dom/inputfile.html
  handleFileSelection() {
    if (!this.input.value) return;

    var value = this.input.value.replace(/^.*[\\\/]/, '');
    this.label.innerText = value;
  }
}

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
voom-presenters-0.2.0 views/mdc/assets/js/components/file-inputs.js