blob: ffa5900dc77a1cb6ea24709ed89177edebc7cdd7 [file] [log] [blame]
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you under the Apache License, Version 2.0 (the
~ "License"); you may not use this file except in compliance
~ with the License. You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<mat-tree [dataSource]="dataSource" [treeControl]="treeControl">
<mat-tree-node
*matTreeNodeDef="let node"
matTreeNodeToggle matTreeNodePadding
matTreeNodePaddingIndent="17"
[ngStyle]="{'display': 'none'}"
>
<button mat-icon-button disabled></button>
{{node.item}}
</mat-tree-node>
<mat-tree-node *matTreeNodeDef="let node; when: hasNoContent" matTreeNodePadding matTreeNodePaddingIndent="17" class="input-node">
<form class="add-folder-form" id="folder-form">
<mat-form-field>
<mat-label>New folder</mat-label>
<input matInput #itemValue [formControl]="folderFormControl" [errorStateMatcher]="matcher">
<mat-error *ngIf="!folderFormControl.hasError('required') && !folderFormControl.hasError('isDuplicate')">
The folder name can only contain Latin letters, numbers and special characters except for #, ?, /, \, %."
</mat-error>
<mat-error *ngIf="folderFormControl.hasError('required')">
Folder name is <strong>required</strong>.
</mat-error>
<mat-error *ngIf="folderFormControl.hasError('isDuplicate')">
Folder with this name already exists.
</mat-error>
<mat-hint *ngIf="cloud === 'azure'">If you do not upload any object to the folder, this folder will be removed on MS Azure</mat-hint>
</mat-form-field>
<button (click)="createFolder(node, itemValue.value)"
[ngClass]="{'check': folderFormControl.valid && folderFormControl.dirty && !folderCreating}"
mat-icon-button class="btn action-btn"
[disabled]="!folderFormControl.valid || !folderFormControl.dirty"
matTooltip="Please wait! Folder is creating."
[matTooltipDisabled]="!folderCreating"
matTooltipPosition="above"
>
<span><i class="material-icons ">check</i></span></button>
<button (click)="removeItem(node)" mat-icon-button class="btn close action-btn"><span ><i class="material-icons ">close</i></span></button>
</form>
</mat-tree-node>
<mat-tree-node *matTreeNodeDef="let node; when: hasChild" matTreeNodePadding matTreeNodePaddingIndent="17" [ngClass]="{'cursor-not-allow': bucketDataService.emptyFolder}">
<button mat-icon-button matTreeNodeToggle
[attr.aria-label]="'toggle ' + node.filename" [ngClass]="{'not-allowed': bucketDataService.emptyFolder}">
<mat-icon class="mat-icon-rtl-mirror" [ngClass]="{'active-item': (selectedFolder === node && !bucketDataService.emptyFolder)}">
{{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}
</mat-icon>
</button>
<div
(click)="showItem(node)"
class="folder-item-line"
[ngClass]="{'active-item': (selectedFolder === node && !bucketDataService.emptyFolder), 'not-allowed': bucketDataService.emptyFolder}"
>
<i class="material-icons folder-icon">folder</i>
<span
class="folder ellipsis"
matTooltip="{{node.item}}"
matTooltipPosition="above"
matTooltipShowDelay="1000"
[matTooltipClass]="'full-size-tooltip'"
>
{{node.item}}
</span>
</div>
</mat-tree-node>
</mat-tree>