file-upload-input Is an Angular Component
Overview
Smart.FileUpload is an element which can exist used to select files and upload them to a server. User can upload single file, multiple files, directories(supported in Firefox and Google Chrome). The element allows file upload past dropping files on custom surface.
Getting Started with FileUpload Web Component
Smart UI for Web Components is distributed as smart-webcomponents NPM package. You tin as well go the full download from our website with all demos from the Download page.
Setup the FileUpload
Smart UI for Web Components is distributed as smart-webcomponents NPM package
- Download and install the packet.
npm install smart-webcomponents
- In one case installed, import the FileUpload module in your application.
<script blazon="module" src="node_modules/smart-webcomponents/source/modules/smart.fileupload.js"></script>
- Adding CSS reference
The smart.default.css CSS file should be referenced using following lawmaking.
<link rel="stylesheet" type="text/css" href="node_modules/smart-webcomponents/source/styles/smart.default.css" />
- Add the FileUpload tag to your Web Folio
<smart-file-upload id="fileupload"></smart-file-upload>
- Create the FileUpload Component
<script type="module"> Smart('#fileupload', class { get backdrop() { return [object Object] } }); </script>
Another option is to create the FileUpload is past using the traditional Javascript way:
const fileupload = document.createElement('smart-file-upload'); fileupload.disabled = true; document.body.appendChild(fileupload);
Smart framework provides a way to dynamically create a web component on demand from a DIV tag which is used as a host. The following imports the web component'southward module and creates it on need, when the document is gear up. The #fileupload is the ID of a DIV tag.import "../../source/modules/smart.fileupload.js"; document.readyState === 'complete' ? init() : window.onload = init; function init() { const fileupload = new Smart.FileUpload('#fileupload', [object Object]); }
- Open the page in your web server.
Appearance
File upload's structure contains browse push, file list(with all selected files), footer(with mutual buttons) and optional drop zone.
When an element is empty, it contains simply 'browse' button. When user browses file/files, they are displayed in list. Below that listing, is shown footer, contained following buttons - "Upload All", "Abolish All", "Pause All".
uploadUrl property defines path to the server that volition handle the files, sent from the element. If this belongings is not set, equally destination is used electric current location.
Demo
<smart-file-upload upload-url="upload.php"></smart-file-upload>
Each file list item is visualized in container, included file proper noun and buttons(Upload File, Abolish File, Pause File ).
Both "Upload File" and "Cancel File" buttons are shown permanently. "Pause File" is shown during the proces of upload to the server.
Demo
Setting "showProgress" to true includes additional progressbar at the bottom of the item'south container.
Demo
User can upload files past dropping them in zone, defined by the value of "dropZone" holding.
If 'dropZone' is gear up to truthful - the drib area is displayed inside the element.
Demo
<smart-file-upload multiple drop-zone></smart-file-upload>
If "dropZone" is fix to custom cord(id of an element in the same page) - the drop area is append to the chemical element with this .
Demo
<div id="dropZoneCustomContainer"></div> <smart-file-upload multiple drop-zone="dropZoneCustomContainer"></smart-file-upload>
The file list also tin be moved outside of the element by setting "appendTo" property to particular element's id.
Demo
<smart-file-upload multiple append-to="fileListCustomContainer"></smart-file-upload> <div id="fileListCustomContainer"></div>
Behavior
By default File Upload allows single file.
Demo
Setting "multiple" to true allows upload of multiple files at the aforementioned time.
Demo
<smart-file-upload multiple></smart-file-upload>
Setting "directory" to true allows upload of a directory. This feature works in part of the browsers(Google Chrome and Firefox for example)
Demo
<smart-file-upload directory></smart-file-upload>
The element allows auto upload fashion, when "autoUpload" is set to true. In this case file are uploaded immediatelly after their option.
Demo
<smart-file-upload automobile-upload></smart-file-upload>
smartFileUpload's files can be validated via "validateFile" callback. Every bit parameter is used an object, represented uploaded file. If the validation fails is fired "validationError" and file is non added to the file list.
Demo
<!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="../../source/styles/smart.default.css" type="text/css" /> <script type="text/javascript" src="../../source/smart.element.js"></script> <script type="text/javascript" src="../../source/smart.button.js"></script> <script type="text/javascript" src="../../source/smart.fileupload.js"></script> <script> window.onload = function () { const fileUpload = document.querySelector('smart-file-upload'); fileUpload.validateFile = function (file) { if (file.size > 204800) { return false; } return true; }; } </script> </head> <body> <smart-file-upload></smart-file-upload> </body> </html> During procedure of upload the server response can vary. User can handle various cases via responseHandler
Demo
<!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="../../source/styles/smart.default.css" blazon="text/css" /> <script blazon="text/javascript" src="../../source/smart.element.js"></script> <script type="text/javascript" src="../../source/smart.button.js"></script> <script type="text/javascript" src="../../source/smart.fileupload.js"></script> <script> window.onload = role () { const fileUpload = document.querySelector('smart-file-upload'); fileUpload.responseHandler = function (xhr) { if (xhr.readyState === iv && xhr.condition === 200) { panel.log(xhr.responseText); } }; } </script> </head> <trunk> <smart-file-upload></smart-file-upload> </body> </html> Methods
The element offers the following methods:
- browse - browses for a file.
- cancelAll - cancels all selected files. Files are removed from the file list and their upload is prevented.
- cancelFile - cancels a file with particular file index. File is removed from the file list and it's upload is prevented.
- pauseAll - pauses upload of all files. Files upload is prevented but files are ramaining in the file listing.
- pauseFile - pauses upload of a file with detail file index. File upload is prevented but file ramains in the file listing.
- uploadAll - uploads all selected files.
- uploadFile - uploads file by given file's index.
Events
The element fires the post-obit events:
- fileSelected - triggered when a file has been selected.
- uploadCanceled - triggered when a file upload operation is canceled.
- uploadCompleted - triggered when a file upload functioning is completed succesfully.
- uploadError - triggered when during the file upload process something happens and upload fails.
- uploadPaused - triggered when a file upload performance is paused.
- uploadStarted - triggered when a file upload functioning is started.
- validationError - triggered if the validation of a user defined 'validateFile' callback fails.
Create, Suspend, Remove, Get/Ready Belongings, Invoke Method, Demark to Issue
Create a new element:
const fileupload = document.createElement('smart-file-upload'); Suspend it to the DOM:
document.torso.appendChild(fileupload);
Remove it from the DOM:
fileupload.parentNode.removeChild(fileupload);
Set up a property:
fileupload.propertyName = propertyValue;
Get a property value:
const propertyValue = fileupload.propertyName;
Invoke a method:
fileupload.methodName(argument1, argument2);
Add together Outcome Listener:
const eventHandler = (result) => { // your code hither. }; fileupload.addEventListener(eventName, eventHandler); Remove Issue Listener:
fileupload.removeEventListener(eventName, eventHandler, true);
Using with Typescript
Smart Web Components package includes TypeScript definitions which enables strongly-typed admission to the Smart UI Components and their configuration.
Inside the download parcel, the typescript directory contains .d.ts file for each spider web component and a smart.elements.d.ts typescript definitions file for all web components. Copy the typescript definitions file to your projection and in your TypeScript file add a reference to smart.elements.d.ts
Read more about using Smart UI with Typescript.
Getting Started with Angular FileUpload Component
Setup Athwart Environment
Angular provides the easiest way to set angular CLI projects using Angular CLI tool.
Install the CLI application globally to your auto.
npm install -g @athwart/cli
Create a new Application
ng new smart-athwart-fileupload
Navigate to the created project binder
cd smart-angular-fileupload
Setup the FileUpload
Smart UI for Angular is distributed equally smart-webcomponents-angular NPM bundle
- Download and install the parcel.
npm install smart-webcomponents-angular
- Once installed, import the FileUploadModule in your application root or feature module.
app.module.ts
import { NgModule } from '@angular/cadre'; import { BrowserModule } from '@athwart/platform-browser'; import { FileUploadModule } from 'smart-webcomponents-angular/fileupload'; import { AppComponent } from './app.component'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, FileUploadModule ], bootstrap: [ AppComponent ], entryComponents: [ AppComponent ] }) export class AppModule { }
- Adding CSS reference
The following CSS file is available in ../node_modules/smart-webcomponents-angular/ package folder. This tin can exist referenced in [src/styles.css] using following lawmaking.
@import 'smart-webcomponents-angular/source/styles/smart.default.css';
Another way to reach the aforementioned is to edit the angular.json file and in the styles add the style."styles": [ "node_modules/smart-webcomponents-angular/source/styles/smart.default.css" ]
- Example
app.component.html
<div class="demo-description">File Upload - Component which allows y'all to upload i or multiple files.</div> <smart-file-upload #fileupload upload-url=""></smart-file-upload>
app.component.tsimport { Component, ViewChild, OnInit, AfterViewInit } from '@angular/core'; import { FileUploadComponent } from 'smart-webcomponents-angular/fileupload'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent implements AfterViewInit, OnInit { @ViewChild('fileupload', { read: FileUploadComponent, static: faux }) fileupload: FileUploadComponent; ngOnInit(): void { // onInit code. } ngAfterViewInit(): void { // afterViewInit code. this.init(); } init(): void { // init lawmaking. } }
app.module.tsimport { NgModule } from '@angular/core'; import { BrowserModule } from '@athwart/platform-browser'; import { FileUploadModule } from 'smart-webcomponents-athwart/fileupload'; import { AppComponent } from './app.component'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, FileUploadModule ], bootstrap: [ AppComponent ], entryComponents: [ AppComponent ] }) consign form AppModule { }
Running the Angular awarding
After completing the steps required to return a FileUpload, run the post-obit command to display the output in your web browser
ng serve
and open localhost:4200 in your favorite web browser.
Read more near using Smart UI for Angular: https://www.htmlelements.com/docs/angular-cli/.
Getting Started with React FileUpload Component
Setup React Surround
The easiest manner to start with React is to employ create-react-app. To scaffold your projection structure, follow the installation instructions.
npm install -1000 create-react-app create-react-app my-app cd my-app npm start
Grooming
Open src/App.js andsrc/App.css
- Remove everything within the App div tag in src/App.js:
<div className="App"> </div>
- Remove the logo.svg import
- Remove the contents of src/App.css
- Remove src/logo.svg
Setup the FileUpload
Smart UI for React is distributed equally smart-webcomponents-react NPM packet
- Download and install the parcel.
npm install smart-webcomponents-react
Once installed, import the React FileUpload Component and CSS files in your application and return it app.js
import 'smart-webcomponents-react/source/styles/smart.default.css'; import React from "react"; import ReactDOM from "react-dom"; import { FileUpload } from 'smart-webcomponents-react/fileupload'; form App extends React.Component { init() { } componentDidMount() { } render() { return ( <div> <div form="demo-description">File Upload - Component which allows you lot to upload i or multiple files.</div> <FileUpload ref="fileupload" uploadUrl=""></FileUpload> </div> ); } } ReactDOM.render(<App />, certificate.querySelector("#root")); export default App; Running the React application
Commencement the app with
npm beginning
and open localhost:3000 in your favorite web browser to come across the output.
Read more almost using Smart UI for React: https://world wide web.htmlelements.com/docs/react/.
Getting Started with Vue FileUpload Component
Setup Vue Environment
Nosotros will use vue-cli to get started. Let's install vue-cli
npm install -thousand @vue/cli
Then nosotros tin outset creating our Vue.js projects with:
vue create my-project
Setup the FileUpload
Open the "my-projection" folder and run:
npm install smart-webcomponents
Setup with Vue 3.x
-
Make Vue ignore custom elements defined outside of Vue (due east.k., using the Web Components APIs). Otherwise, information technology will throw a warning about an Unknown custom element, assuming that you forgot to annals a global component or misspelled a component proper noun.
Open src/chief.js in your favorite text editor and alter its contents to the following:main.js
import { createApp } from 'vue' import App from './App.vue' const app = createApp(App) app.config.isCustomElement = tag => tag.startsWith('smart-'); app.mountain('#app') - Open up src/App.vue in your favorite text editor and change its contents to the post-obit:
App.vue
<template> <div class="vue-root"> <div class="demo-clarification">File Upload | Events which are raised by the Web Component</div> <div grade="container"> <smart-file-upload multiple upload-url></smart-file-upload> </div> <div grade="container" id="eventContainer"> <h2>Events:</h2> </div> </div> </template> <script> import { onMounted } from "vue"; import "smart-webcomponents/source/styles/smart.default.css"; import "smart-webcomponents/source/modules/smart.fileupload.js"; export default { name: "app", setup() { onMounted(() => { const fileUpload = document.getElementsByTagName("smart-file-upload")[0]; const eventContainer = document.getElementById("eventContainer"); fileUpload.addEventListener("fileSelected", event => printEventName(consequence) ); fileUpload.addEventListener("uploadCanceled", event => printEventName(event) ); fileUpload.addEventListener("uploadCompleted", event => printEventName(upshot) ); fileUpload.addEventListener("uploadError", outcome => printEventName(event) ); fileUpload.addEventListener("uploadPaused", result => printEventName(event) ); fileUpload.addEventListener("uploadStarted", consequence => printEventName(issue) ); fileUpload.addEventListener("validationError", event => printEventName(issue) ); function printEventName(event) { const item = certificate.createElement("div"); item.innerHTML = item.innerHTML + issue.type + "<br />"; eventContainer.appendChild(item); } }); } }; </script> <style> </mode>We can now employ the smart-file-upload with Vue three. Data binding and result handlers will just work right out of the box.
Setup with Vue 2.10
-
Make Vue ignore custom elements defined outside of Vue (e.grand., using the Spider web Components APIs). Otherwise, it will throw a warning virtually an Unknown custom element, assuming that you forgot to register a global component or misspelled a component name.
Open up src/main.js in your favorite text editor and change its contents to the following:main.js
import Vue from 'vue' import App from './App.vue' Vue.config.productionTip = false Vue.config.ignoredElements = [ 'smart-file-upload' ] new Vue({ render: h => h(App), }).$mount('#app') - Open src/App.vue in your favorite text editor and change its contents to the following:
App.vue
<template> <smart-file-upload upload-url=""></smart-file-upload> </template> <script> import "smart-webcomponents/source/smart.elements.js"; import "smart-webcomponents/source/styles/smart.default.css"; export default { name: "app" }; </script> <style> </style>We tin can now apply the smart-file-upload with Vue. Data bounden and outcome handlers will simply work right out of the box.
We accept jump the properties of the smart-file-upload to values in our Vue component.
Running the Vue application
Showtime the app with
npm run serve
and open localhost:8080 in your favorite web browser to see the output below:
Read more virtually using Smart UI for Vue: https://world wide web.htmlelements.com/docs/vue/.
Source: https://www.htmlelements.com/docs/fileupload/
Post a Comment for "file-upload-input Is an Angular Component"