Skip to content

Commit 74065c1

Browse files
committed
#Fixes #98 - angular 21 support
1 parent 8b36075 commit 74065c1

File tree

10 files changed

+498
-502
lines changed

10 files changed

+498
-502
lines changed

docs/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77

88
<meta name="viewport" content="width=device-width, initial-scale=1">
99
<link rel="icon" type="image/x-icon" href="favicon.ico">
10-
<style>body{background-color:#f3f3f3}:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}@-webkit-keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}@page{size:a3}body{min-width:992px!important}}</style><link rel="stylesheet" href="styles-KY6OPB7C.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-KY6OPB7C.css"></noscript></head>
10+
<style>body{background-color:#f3f3f3}:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}@-webkit-keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}@page{size:a3}body{min-width:992px!important}}</style><link rel="stylesheet" href="styles-NWI2YXFZ.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-NWI2YXFZ.css"></noscript></head>
1111
<body>
1212
<app-root></app-root>
13-
<script src="polyfills-PJGX3BAA.js" type="module"></script><script src="main-Z3VZVZSH.js" type="module"></script></body>
13+
<script src="polyfills-PJGX3BAA.js" type="module"></script><script src="main-Q3KCIXQJ.js" type="module"></script></body>
1414
</html>

docs/main-Q3KCIXQJ.js

Lines changed: 447 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/main-Z3VZVZSH.js

Lines changed: 0 additions & 447 deletions
This file was deleted.

docs/styles-KY6OPB7C.css

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/styles-NWI2YXFZ.css

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,25 +18,25 @@
1818
},
1919
"private": true,
2020
"dependencies": {
21-
"@angular/animations": "^20.3.3",
22-
"@angular/common": "^20.3.3",
23-
"@angular/compiler": "^20.3.3",
24-
"@angular/core": "^20.3.3",
25-
"@angular/forms": "^20.3.3",
26-
"@angular/platform-browser": "^20.3.3",
27-
"@angular/platform-browser-dynamic": "^20.3.3",
28-
"@angular/router": "^20.3.3",
21+
"@angular/animations": "^21.0.5",
22+
"@angular/common": "^21.0.5",
23+
"@angular/compiler": "^21.0.5",
24+
"@angular/core": "^21.0.5",
25+
"@angular/forms": "^21.0.5",
26+
"@angular/platform-browser": "^21.0.5",
27+
"@angular/platform-browser-dynamic": "^21.0.5",
28+
"@angular/router": "^21.0.5",
2929
"bootstrap": "4.3.1",
3030
"highlight.js": "^11.10.0",
3131
"rxjs": "^7.5.3",
3232
"tslib": "^2.3.1",
3333
"zone.js": "~0.15.0"
3434
},
3535
"devDependencies": {
36-
"@angular/build": "^20.3.5",
37-
"@angular/cli": "^20.3.5",
38-
"@angular/compiler-cli": "^20.3.3",
39-
"@angular/language-service": "^20.3.3",
36+
"@angular/build": "^21.0.3",
37+
"@angular/cli": "^21.0.3",
38+
"@angular/compiler-cli": "^21.0.5",
39+
"@angular/language-service": "^21.0.5",
4040
"@types/jasmine": "~3.6.0",
4141
"@types/jasminewd2": "~2.0.3",
4242
"@types/node": "^12.11.1",
@@ -48,10 +48,10 @@
4848
"karma-coverage-istanbul-reporter": "~3.0.2",
4949
"karma-jasmine": "~4.0.0",
5050
"karma-jasmine-html-reporter": "^1.5.0",
51-
"ng-packagr": "^20.1.0",
51+
"ng-packagr": "^21.0.0",
5252
"protractor": "~7.0.0",
5353
"ts-node": "~7.0.0",
5454
"tslint": "~6.1.0",
55-
"typescript": "~5.8.3"
55+
"typescript": "~5.9.3"
5656
}
5757
}

projects/iplab/ngx-file-upload/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"description": "",
44
"homepage": "https://github.com/pIvan/file-upload",
55
"bugs": "https://github.com/pIvan/file-upload/issues",
6-
"version": "20.0.1",
6+
"version": "21.0.0",
77
"author": "Ivan Pintar",
88
"license": "MIT",
99
"readmeFilename": "README.md",
@@ -25,10 +25,10 @@
2525
"url": "https://github.com/pIvan/file-upload.git"
2626
},
2727
"peerDependencies": {
28-
"@angular/common": "^20.0.0",
29-
"@angular/core": "^20.0.0",
30-
"@angular/animations": "^20.0.0",
31-
"@angular/forms": "^20.0.0",
28+
"@angular/common": "^21.0.0",
29+
"@angular/core": "^21.0.0",
30+
"@angular/animations": "^21.0.0",
31+
"@angular/forms": "^21.0.0",
3232
"rxjs": "^7.0.0"
3333
}
3434
}

projects/iplab/ngx-file-upload/src/lib/components/multiple-file-upload/file-upload.component.spec.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
22

3-
import { Component, ViewChild, ElementRef } from '@angular/core';
3+
import { Component, ViewChild, ElementRef, signal } from '@angular/core';
44
import { FormControl, FormGroup } from '@angular/forms';
55
import { ReactiveFormsModule, FormsModule } from '@angular/forms';
66
import { FileUploadModule, FileUploadControl, FileUploadValidators } from './../../file-upload.module';
@@ -11,7 +11,7 @@ import { FileUploadModule, FileUploadControl, FileUploadValidators } from './../
1111
<form [formGroup]="demoForm" id="reactiveForm">
1212
<file-upload id="simpleAttribute" formControlName="files" multiple="false"></file-upload>
1313
14-
<file-upload id="dataBindingAttribute" formControlName="fileUploadWithTemplate" [multiple]="multiple">
14+
<file-upload id="dataBindingAttribute" formControlName="fileUploadWithTemplate" [multiple]="multiple()">
1515
<ng-template let-isFileDragDropAvailable="isFileDragDropAvailable" #placeholder>
1616
<span>
1717
@if (isFileDragDropAvailable) {
@@ -56,7 +56,7 @@ export class FileUploadComponentHost {
5656

5757
public fileUploadMultipleFalseCheck = new FileUploadControl({ multiple: false });
5858

59-
public multiple = false;
59+
public multiple = signal(false);
6060

6161
/**
6262
* reactive form control
@@ -235,10 +235,11 @@ describe('FileUpload', () => {
235235
* attribute two way data binding
236236
*/
237237
const dataBindingAttributeCheckEl = hostComponentEl.querySelector('#dataBindingAttribute input');
238+
238239
const isDisabled = dataBindingAttributeCheckEl["multiple"];
239240
expect(isDisabled).toBe(false);
240241

241-
hostComp.multiple = true;
242+
hostComp.multiple.set(true);
242243
hostFixture.detectChanges();
243244

244245
const isEnabled = dataBindingAttributeCheckEl["multiple"];

projects/iplab/ngx-file-upload/src/lib/components/simple-file-upload/simple-file-upload.component.spec.ts

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,36 +9,35 @@ import { FileUploadModule, FileUploadControl, FileUploadValidators } from './../
99
@Component({
1010
template: `
1111
<form [formGroup]="demoForm" id="reactiveForm">
12-
<file-upload simple accept="image" formControlName="files"></file-upload>
13-
14-
<file-upload simple formControlName="fileUploadWithTemplate">
15-
<ng-template let-files #placeholder>
16-
<ng-container *ngIf="files.length; else emptyList">
17-
<ng-template ngFor let-file let-i="index" [ngForOf]="files">
18-
@if (i > 0) {
19-
<span>,&nbsp;</span> <span class="file-name">{{ file.name }}</span>
20-
}
21-
</ng-template>
22-
</ng-container>
23-
<ng-template #emptyList>
24-
Choose a file...
25-
</ng-template>
26-
</ng-template>
27-
28-
<ng-template let-control="control" #button>
29-
Browse for file
30-
</ng-template>
31-
</file-upload>
12+
<file-upload simple accept="image" formControlName="files"></file-upload>
13+
14+
<file-upload simple formControlName="fileUploadWithTemplate">
15+
<ng-template let-files #placeholder>
16+
@if (files.length) {
17+
@for (file of files; track file; let i = $index) {
18+
@if (i > 0) {
19+
<span>,&nbsp;</span> <span class="file-name">{{ file.name }}</span>
20+
}
21+
}
22+
} @else {
23+
Choose a file...
24+
}
25+
</ng-template>
26+
27+
<ng-template let-control="control" #button>
28+
Browse for file
29+
</ng-template>
30+
</file-upload>
3231
</form>
33-
32+
3433
<form #templateDrForm="ngForm" id="templateDrivenForm">
35-
<file-upload simple [(ngModel)]="uploadedFiles" [filesize]="100000" [disabled]="isDisabled" name="uploadFiles"></file-upload>
34+
<file-upload simple [(ngModel)]="uploadedFiles" [filesize]="100000" [disabled]="isDisabled" name="uploadFiles"></file-upload>
3635
</form>
37-
36+
3837
<file-upload simple id="standAlone" [control]="fileUploadControl"></file-upload>
39-
38+
4039
<file-upload simple id="standAloneWithAccept" accept="image/*" [control]="fileUploadControl"></file-upload>
41-
40+
4241
<file-upload simple id="standAloneWithDiscard" discard="true" [control]="fileUploadControl"></file-upload>
4342
`,
4443
standalone: false

tsconfig.json

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@
1414
"typeRoots": [
1515
"node_modules/@types"
1616
],
17-
"lib": [
18-
"es2015",
19-
"dom"
20-
],
2117
"paths": {
2218
"@iplab/ngx-file-upload": [
2319
"projects/iplab/ngx-file-upload/src/public_api.ts"

0 commit comments

Comments
 (0)