<div class="demo-container">
<h3 class="acl-typography--subtitle1">File Dropzone</h3>
<div class="acl-dropzone__container" style="min-height: 175px;">
<div class="acl-dropzone__vertical-indicator"></div>
<div class="acl-dropzone">
<div class="acl-dropzone__content animated fadeIn">
<div class="acl-dropzone__icon"><i class="aforza-icons">acl_upload</i></div>
<div class="acl-dropzone__label">Drag and Drop files here</div>
<div class="acl-dropzone__button">
<button class="acl-button acl-button--tertiary">
<span class="acl-button__label">Click here</span>
</button>
</div>
</div>
</div>
</div>
<div style="margin: 25px 0">
<h3>Example</h3>
<div style="width: 500px;display:flex;">
<button onclick="dropzone.showErrorValidation()">Show Error Validation</button>
<button onclick="dropzone.hideErrorValidation()">Hide Error Validation</button>
</div>
</div>
<h3 class="acl-typography--subtitle1">Element Dropzone</h3>
<div class="acl-dropzone__container element-dropdown" style="min-height: 75px;">
<div class="acl-dropzone__vertical-indicator"></div>
<div class="acl-dropzone">
<div class="acl-dropzone__content animated fadeIn">
<div class="acl-dropzone__label">Drag and Drop element here</div>
</div>
</div>
</div>
</div>
<script>
const dropzoneContainer = document.querySelector(".acl-dropzone__container");
const dropzone = new acl.ACLDropzone(dropzoneContainer, true);
const elementdropzoneContainer = document.querySelector(".element-dropdown");
const elementDropzone = new acl.ACLDropzone(elementdropzoneContainer);
</script>
<div class="demo-container">
<h3 class="acl-typography--subtitle1">File Dropzone</h3>
<div class="acl-dropzone__container" style="min-height: 175px;">
<div class="acl-dropzone__vertical-indicator"></div>
<div class="acl-dropzone">
<div class="acl-dropzone__content animated fadeIn">
<div class="acl-dropzone__icon"><i class="aforza-icons">acl_upload</i></div>
<div class="acl-dropzone__label">Drag and Drop files here</div>
<div class="acl-dropzone__button">
<button class="acl-button acl-button--tertiary">
<span class="acl-button__label">Click here</span>
</button>
</div>
</div>
</div>
</div>
<div style="margin: 25px 0">
<h3>Example</h3>
<div style="width: 500px;display:flex;">
<button onclick="dropzone.showErrorValidation()">Show Error Validation</button>
<button onclick="dropzone.hideErrorValidation()">Hide Error Validation</button>
</div>
</div>
<h3 class="acl-typography--subtitle1">Element Dropzone</h3>
<div class="acl-dropzone__container element-dropdown" style="min-height: 75px;">
<div class="acl-dropzone__vertical-indicator"></div>
<div class="acl-dropzone">
<div class="acl-dropzone__content animated fadeIn">
<div class="acl-dropzone__label">Drag and Drop element here</div>
</div>
</div>
</div>
</div>
<script>
const dropzoneContainer = document.querySelector(".acl-dropzone__container");
const dropzone = new acl.ACLDropzone(dropzoneContainer, true);
const elementdropzoneContainer = document.querySelector(".element-dropdown");
const elementDropzone = new acl.ACLDropzone(elementdropzoneContainer);
</script>
/* No context defined. */
.acl-dropzone {
border: 1px dashed #93c3ea;
border-radius: 8px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding: 25px;
width: 100%;
&__container {
width: 100%;
display: flex;
}
&__content {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
pointer-events: none;
}
&__button {
margin-top: 15px;
pointer-events: all;
}
&__vertical-indicator {
width: 4px;
border-radius: 2.5px;
background-color: #93c3ea;
margin-right: 5px;
&--error {
background-color: $acl-theme-error;
}
}
&__label {
color: rgba(0, 0, 0, 0.75);
font-family: 'Open Sans';
font-size: 12px;
font-weight: 600;
letter-spacing: 0;
line-height: 17px;
text-align: center;
}
&__icon {
i {
color: #d5d5d5;
font-size: 40px;
user-select: none;
}
margin-bottom: 15px;
}
&--drag-over {
border: 2px solid $teal;
box-sizing: border-box;
}
&--hide-content {
& .acl-dropzone__content {
display: none;
}
}
&--error {
border: 2px solid $acl-theme-error;
box-sizing: border-box;
}
}
class ACLDropzone {
constructor(dropzoneContainer, hideContentOnHover) {
this.dropzoneContainer = dropzoneContainer;
this.hideContentOnHover = hideContentOnHover;
this.selectors = Object.freeze({
DROPZONE: 'acl-dropzone',
VERTICAL_INDICATOR: 'acl-dropzone__vertical-indicator',
BUTTON: 'acl-dropzone__button',
});
this.modifiers = Object.freeze({
DRAG_OVER: '--drag-over',
ERROR: '--error',
HIDE_CONTENT: '--hide-content',
});
this.dropzoneEl = this.dropzoneContainer.querySelector(`.${this.selectors.DROPZONE}`);
this.verticalIndicatorEl = this.dropzoneContainer.querySelector(`.${this.selectors.VERTICAL_INDICATOR}`);
this.button = this.dropzoneContainer.querySelector(`.${this.selectors.BUTTON}`);
this.setEventListeners();
}
setEventListeners() {
this.dropzoneEl.addEventListener('dragenter', this.showDragOverIndicator.bind(this));
this.dropzoneEl.addEventListener('dragleave', this.hideDragOverIndicator.bind(this));
if (this.button) {
this.button.addEventListener('dragenter', this.showDragOverIndicator.bind(this));
this.button.addEventListener('dragleave', this.hideDragOverIndicator.bind(this));
}
}
showDragOverIndicator() {
this.dropzoneEl.classList.add(`${this.selectors.DROPZONE}${this.modifiers.DRAG_OVER}`);
if (this.hideContentOnHover)
this.dropzoneEl.classList.add(`${this.selectors.DROPZONE}${this.modifiers.HIDE_CONTENT}`);
}
hideDragOverIndicator() {
this.dropzoneEl.classList.remove(`${this.selectors.DROPZONE}${this.modifiers.DRAG_OVER}`);
if (this.hideContentOnHover)
this.dropzoneEl.classList.remove(`${this.selectors.DROPZONE}${this.modifiers.HIDE_CONTENT}`);
}
showErrorValidation() {
this.dropzoneEl.classList.add(`${this.selectors.DROPZONE}${this.modifiers.ERROR}`);
if (this.verticalIndicatorEl)
this.verticalIndicatorEl.classList.add(`${this.selectors.DROPZONE}${this.modifiers.ERROR}`);
}
hideErrorValidation() {
this.dropzoneEl.classList.remove(`${this.selectors.DROPZONE}${this.modifiers.ERROR}`);
if (this.verticalIndicatorEl)
this.verticalIndicatorEl.classList.remove(`${this.selectors.DROPZONE}${this.modifiers.ERROR}`);
}
}
export { ACLDropzone };
No notes defined.