mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-26 10:21:52 +00:00
Merge pull request #2672 from Start9Labs/taiga-4
feat: update Taiga UI to 4 release candidate
This commit is contained in:
620
web/package-lock.json
generated
620
web/package-lock.json
generated
@@ -23,17 +23,19 @@
|
||||
"@start9labs/argon2": "^0.1.0",
|
||||
"@start9labs/emver": "^0.1.5",
|
||||
"@start9labs/start-sdk": "file:../sdk/dist",
|
||||
"@taiga-ui/addon-charts": "3.77.1",
|
||||
"@taiga-ui/addon-commerce": "3.77.1",
|
||||
"@taiga-ui/addon-mobile": "3.77.1",
|
||||
"@taiga-ui/cdk": "3.77.1",
|
||||
"@taiga-ui/core": "3.77.1",
|
||||
"@taiga-ui/experimental": "3.77.1",
|
||||
"@taiga-ui/icons": "3.77.1",
|
||||
"@taiga-ui/kit": "3.77.1",
|
||||
"@taiga-ui/styles": "3.77.1",
|
||||
"@taiga-ui/addon-charts": "4.0.0-rc.5",
|
||||
"@taiga-ui/addon-commerce": "4.0.0-rc.5",
|
||||
"@taiga-ui/addon-mobile": "4.0.0-rc.5",
|
||||
"@taiga-ui/cdk": "4.0.0-rc.5",
|
||||
"@taiga-ui/core": "4.0.0-rc.5",
|
||||
"@taiga-ui/event-plugins": "^4.0.1",
|
||||
"@taiga-ui/experimental": "4.0.0-rc.5",
|
||||
"@taiga-ui/icons": "4.0.0-rc.5",
|
||||
"@taiga-ui/kit": "4.0.0-rc.5",
|
||||
"@taiga-ui/layout": "4.0.0-rc.5",
|
||||
"@taiga-ui/legacy": "4.0.0-rc.5",
|
||||
"@taiga-ui/styles": "4.0.0-rc.5",
|
||||
"@tinkoff/ng-dompurify": "4.0.0",
|
||||
"@tinkoff/ng-event-plugins": "3.2.0",
|
||||
"ansi-to-html": "^0.7.2",
|
||||
"base64-js": "^1.5.1",
|
||||
"cbor": "npm:@jprochazk/cbor@^0.4.9",
|
||||
@@ -56,7 +58,7 @@
|
||||
"rxjs": "^7.5.6",
|
||||
"swiper": "^8.2.4",
|
||||
"ts-matches": "^5.2.1",
|
||||
"tslib": "^2.3.0",
|
||||
"tslib": "^2.6.3",
|
||||
"uuid": "^8.3.2",
|
||||
"zone.js": "^0.14.2"
|
||||
},
|
||||
@@ -372,11 +374,12 @@
|
||||
}
|
||||
},
|
||||
"../patch-db/client/node_modules/braces": {
|
||||
"version": "3.0.2",
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
|
||||
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"fill-range": "^7.0.1"
|
||||
"fill-range": "^7.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
@@ -609,9 +612,10 @@
|
||||
}
|
||||
},
|
||||
"../patch-db/client/node_modules/fill-range": {
|
||||
"version": "7.0.1",
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
|
||||
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"to-regex-range": "^5.0.1"
|
||||
},
|
||||
@@ -810,8 +814,9 @@
|
||||
},
|
||||
"../patch-db/client/node_modules/is-number": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=0.12.0"
|
||||
}
|
||||
@@ -1491,9 +1496,10 @@
|
||||
}
|
||||
},
|
||||
"../patch-db/client/node_modules/semver": {
|
||||
"version": "5.7.1",
|
||||
"version": "5.7.2",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
|
||||
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"bin": {
|
||||
"semver": "bin/semver"
|
||||
}
|
||||
@@ -1659,8 +1665,9 @@
|
||||
},
|
||||
"../patch-db/client/node_modules/to-regex-range": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"is-number": "^7.0.0"
|
||||
},
|
||||
@@ -2268,6 +2275,12 @@
|
||||
"url": "https://opencollective.com/webpack"
|
||||
}
|
||||
},
|
||||
"node_modules/@angular-devkit/build-angular/node_modules/tslib": {
|
||||
"version": "2.6.2",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
|
||||
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@angular-devkit/build-angular/node_modules/webpack": {
|
||||
"version": "5.90.3",
|
||||
"dev": true,
|
||||
@@ -4545,28 +4558,43 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@maskito/angular": {
|
||||
"version": "1.9.0",
|
||||
"license": "Apache-2.0",
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@maskito/angular/-/angular-2.5.0.tgz",
|
||||
"integrity": "sha512-xcQ8/N1wbZNnCIeioS8aZ7WXs5f0MRDeg8eOc512s82Q7LPdQ1zLqVMn3zPbED6D9UdmVnbTHTwiaZydP4zXdw==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"tslib": "2.6.2"
|
||||
"tslib": "2.6.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/common": ">=12.0.0",
|
||||
"@angular/core": ">=12.0.0",
|
||||
"@angular/forms": ">=12.0.0",
|
||||
"@maskito/core": "^1.9.0",
|
||||
"rxjs": ">=6.0.0"
|
||||
"@angular/core": ">=15.0.0",
|
||||
"@angular/forms": ">=15.0.0",
|
||||
"@maskito/core": "^2.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@maskito/core": {
|
||||
"version": "1.9.0",
|
||||
"license": "Apache-2.0"
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@maskito/core/-/core-2.5.0.tgz",
|
||||
"integrity": "sha512-EeTeNOKIENFd8J0b1diQ5m8Rkz7WclFWtFPMpEtoE0yyH5JM4PKgrnpa4EbO7st9pY27vMo1tJiclWakLG4B8g==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/@maskito/kit": {
|
||||
"version": "1.9.0",
|
||||
"license": "Apache-2.0",
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@maskito/kit/-/kit-2.5.0.tgz",
|
||||
"integrity": "sha512-4PQXc/pJ1W+NW6cjVWFHhQlnjLs/4AHiZdisNsUsA6rN1+tMaOthm3Ppqmo9nNOH1F1Q2zQGvIdgaqRm2dq/tQ==",
|
||||
"peer": true,
|
||||
"peerDependencies": {
|
||||
"@maskito/core": "^1.9.0"
|
||||
"@maskito/core": "^2.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@maskito/phone": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@maskito/phone/-/phone-2.5.0.tgz",
|
||||
"integrity": "sha512-sP/myNz5FlEesmwy3tVDw/ELG/os8IdC0QeGGu+jCa7BFyTUjn7hIeUM6g+oUPkArkjft6tK7JPo+j3zvBbTkQ==",
|
||||
"peer": true,
|
||||
"peerDependencies": {
|
||||
"@maskito/core": "^2.5.0",
|
||||
"@maskito/kit": "^2.5.0",
|
||||
"libphonenumber-js": ">=1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@materia-ui/ngx-monaco-editor": {
|
||||
@@ -4581,48 +4609,56 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@ng-web-apis/common": {
|
||||
"version": "3.0.6",
|
||||
"license": "Apache-2.0",
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@ng-web-apis/common/-/common-4.1.2.tgz",
|
||||
"integrity": "sha512-8SO4JrQK8MZAzveafOEjI3M5zKC2VkM3Q9Movh0KiGQHOqZuT/jdZO4PqT6ydwJHcALiWT2pQRTwjp6oEimaog==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"tslib": "^2.2.0"
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/common": ">=12.0.0",
|
||||
"@angular/core": ">=12.0.0",
|
||||
"rxjs": ">=6.4.0"
|
||||
"@angular/common": ">=16.0.0",
|
||||
"@angular/core": ">=16.0.0",
|
||||
"rxjs": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ng-web-apis/intersection-observer": {
|
||||
"version": "3.2.0",
|
||||
"license": "Apache-2.0",
|
||||
"version": "4.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@ng-web-apis/intersection-observer/-/intersection-observer-4.1.3.tgz",
|
||||
"integrity": "sha512-/VPw63EmFhY9Gro47IuwjCv9tYNR0ZxCP6jJykZOn4t/fS230JY9U79xvYWY9cMjMbk7LIv0H1A6qYT8hQzhVw==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"tslib": "^2.2.0"
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/core": ">=12.0.0",
|
||||
"@ng-web-apis/common": ">=2.0.0"
|
||||
"@angular/core": ">=16.0.0",
|
||||
"@ng-web-apis/common": ">=4.1.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@ng-web-apis/mutation-observer": {
|
||||
"version": "3.1.0",
|
||||
"license": "Apache-2.0",
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@ng-web-apis/mutation-observer/-/mutation-observer-4.1.2.tgz",
|
||||
"integrity": "sha512-psvxEE7WN/2KGUOwS7NNXOV8EG70h4FM77B8NmLuKwkh0z5d+sxmgJ9BjbKJB4F144DpQtXFAuJAaVkT882g/w==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"tslib": "^2.2.0"
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/core": ">=12.0.0",
|
||||
"@ng-web-apis/common": ">=2.0.0"
|
||||
"@angular/core": ">=16.0.0",
|
||||
"@ng-web-apis/common": ">=4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ng-web-apis/resize-observer": {
|
||||
"version": "3.0.6",
|
||||
"license": "Apache-2.0",
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@ng-web-apis/resize-observer/-/resize-observer-4.1.2.tgz",
|
||||
"integrity": "sha512-T8Vsr/AlnVzrDCko+BpzPWGIq0mFvE1zExY5zxbjTyraIL2VO0Le2wkU/v6UH64nRfp+xY5VDnOADNpTQCS8Zg==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"tslib": "^2.2.0"
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/core": ">=12.0.0",
|
||||
"@ng-web-apis/common": ">=2.0.0"
|
||||
"@angular/core": ">=16.0.0",
|
||||
"@ng-web-apis/common": ">=4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ngtools/webpack": {
|
||||
@@ -5085,192 +5121,241 @@
|
||||
"link": true
|
||||
},
|
||||
"node_modules/@taiga-ui/addon-charts": {
|
||||
"version": "3.77.1",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/addon-charts/-/addon-charts-3.77.1.tgz",
|
||||
"integrity": "sha512-yk9cvMewoRRVxTv1sIorVgO9GBkleQyRzkT774RPQACQHizGS2Sq5dQMtetwD3usPmLR2GblDR6NM+iOyHhMIA==",
|
||||
"version": "4.0.0-rc.5",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/addon-charts/-/addon-charts-4.0.0-rc.5.tgz",
|
||||
"integrity": "sha512-xAlSOndt7peL3SOPJcGvntEseY09QyZcRoMGsd7XZsaCHf0vQnKtwfoTd3nHqYYgcuIS9/aBlznual3RWyl+SA==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.6.2"
|
||||
"tslib": "^2.6.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/common": ">=12.0.0",
|
||||
"@angular/core": ">=12.0.0",
|
||||
"@ng-web-apis/common": "^3.0.6",
|
||||
"@taiga-ui/cdk": "^3.77.1",
|
||||
"@taiga-ui/core": "^3.77.1",
|
||||
"@tinkoff/ng-polymorpheus": "^4.3.0"
|
||||
"@angular/common": ">=16.0.0",
|
||||
"@angular/core": ">=16.0.0",
|
||||
"@ng-web-apis/common": "^4.1.2",
|
||||
"@taiga-ui/cdk": "^4.0.0-rc.5",
|
||||
"@taiga-ui/core": "^4.0.0-rc.5",
|
||||
"@taiga-ui/polymorpheus": "^4.6.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@taiga-ui/addon-commerce": {
|
||||
"version": "3.77.1",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/addon-commerce/-/addon-commerce-3.77.1.tgz",
|
||||
"integrity": "sha512-4qNgDZfxyzTHQdKaerw28xP8d2PCuumLM9xjlRbNE5XcnhUI+rccgZOV9MtZtQoNBl++OBPmbaT2/9+zbSqbxg==",
|
||||
"version": "4.0.0-rc.5",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/addon-commerce/-/addon-commerce-4.0.0-rc.5.tgz",
|
||||
"integrity": "sha512-XkJ4SKzmPi4EFqAo5YQfU7l7FRWclzW0SrcJTdukTOvfTgPuzvNb7/nQEy9cCqmXvddQCgEmFzISHBI0lCnrUg==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.6.2"
|
||||
"tslib": "^2.6.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/common": ">=12.0.0",
|
||||
"@angular/core": ">=12.0.0",
|
||||
"@angular/forms": ">=12.0.0",
|
||||
"@maskito/angular": "^1.9.0",
|
||||
"@maskito/core": "^1.9.0",
|
||||
"@maskito/kit": "^1.9.0",
|
||||
"@ng-web-apis/common": "^3.0.6",
|
||||
"@taiga-ui/cdk": "^3.77.1",
|
||||
"@taiga-ui/core": "^3.77.1",
|
||||
"@taiga-ui/i18n": "^3.77.1",
|
||||
"@taiga-ui/kit": "^3.77.1",
|
||||
"@tinkoff/ng-polymorpheus": "^4.3.0",
|
||||
"rxjs": ">=6.0.0"
|
||||
"@angular/common": ">=16.0.0",
|
||||
"@angular/core": ">=16.0.0",
|
||||
"@angular/forms": ">=16.0.0",
|
||||
"@maskito/angular": "^2.5.0",
|
||||
"@maskito/core": "^2.5.0",
|
||||
"@maskito/kit": "^2.5.0",
|
||||
"@ng-web-apis/common": "^4.1.2",
|
||||
"@taiga-ui/cdk": "^4.0.0-rc.5",
|
||||
"@taiga-ui/core": "^4.0.0-rc.5",
|
||||
"@taiga-ui/i18n": "^4.0.0-rc.5",
|
||||
"@taiga-ui/kit": "^4.0.0-rc.5",
|
||||
"@taiga-ui/polymorpheus": "^4.6.4",
|
||||
"rxjs": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@taiga-ui/addon-mobile": {
|
||||
"version": "3.77.1",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/addon-mobile/-/addon-mobile-3.77.1.tgz",
|
||||
"integrity": "sha512-kRa9uNdnY9Tyz8FdGXqgbL7cKZ1Z43K3Kjey9tX3uf4BEkODPNVuQFTNzuZvOt6/ql+XtPxi/hU19ii5rvKz3A==",
|
||||
"version": "4.0.0-rc.5",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/addon-mobile/-/addon-mobile-4.0.0-rc.5.tgz",
|
||||
"integrity": "sha512-P6QvsaAUfhBwhyo+Z80J0mwq9RExwDT2mK3MKgZAIerXAsojGHz1e43/TAZrucJfsNEh0fyUpOplgiFy9MLnyw==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.6.2"
|
||||
"tslib": "^2.6.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/cdk": ">=12.0.0",
|
||||
"@angular/common": ">=12.0.0",
|
||||
"@angular/core": ">=12.0.0",
|
||||
"@ng-web-apis/common": "^3.0.6",
|
||||
"@taiga-ui/cdk": "^3.77.1",
|
||||
"@taiga-ui/core": "^3.77.1",
|
||||
"@taiga-ui/kit": "^3.77.1",
|
||||
"@tinkoff/ng-polymorpheus": "^4.3.0",
|
||||
"rxjs": ">=6.0.0"
|
||||
"@angular/cdk": ">=16.0.0",
|
||||
"@angular/common": ">=16.0.0",
|
||||
"@angular/core": ">=16.0.0",
|
||||
"@ng-web-apis/common": "^4.1.2",
|
||||
"@taiga-ui/cdk": "^4.0.0-rc.5",
|
||||
"@taiga-ui/core": "^4.0.0-rc.5",
|
||||
"@taiga-ui/kit": "^4.0.0-rc.5",
|
||||
"@taiga-ui/polymorpheus": "^4.6.4",
|
||||
"rxjs": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@taiga-ui/cdk": {
|
||||
"version": "3.77.1",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/cdk/-/cdk-3.77.1.tgz",
|
||||
"integrity": "sha512-mqT1Rz/JWqah4aNVRD3iEND4XdkfsOxV100D0gbdFD5/aaiMTyL6oMEP2GGE0lSsuk1mRCixkDW0qPCbhG21yQ==",
|
||||
"version": "4.0.0-rc.5",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/cdk/-/cdk-4.0.0-rc.5.tgz",
|
||||
"integrity": "sha512-WSNNNd/b+Dil/kIpN7cEnnHjp0/IKRrylbDzyMkJlyaMAwoVR0mChrJ7neYy3iRN5LndAFa/kRR8CCIOIBzf4g==",
|
||||
"dependencies": {
|
||||
"@ng-web-apis/common": "3.0.6",
|
||||
"@ng-web-apis/mutation-observer": "3.1.0",
|
||||
"@ng-web-apis/resize-observer": "3.0.6",
|
||||
"@tinkoff/ng-event-plugins": "3.2.0",
|
||||
"@tinkoff/ng-polymorpheus": "4.3.0",
|
||||
"tslib": "2.6.2"
|
||||
"tslib": "2.6.3"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"ng-morph": "4.0.5",
|
||||
"parse5": "6.0.1"
|
||||
"@angular-devkit/core": ">=16.0.0",
|
||||
"@angular-devkit/schematics": ">=16.0.0",
|
||||
"@schematics/angular": ">=16.0.0",
|
||||
"ng-morph": "^4.5.2",
|
||||
"parse5": "^7.1.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/animations": ">=12.0.0",
|
||||
"@angular/common": ">=12.0.0",
|
||||
"@angular/core": ">=12.0.0",
|
||||
"@angular/forms": ">=12.0.0",
|
||||
"rxjs": ">=6.0.0"
|
||||
"@angular/animations": ">=16.0.0",
|
||||
"@angular/cdk": ">=16.0.0",
|
||||
"@angular/common": ">=16.0.0",
|
||||
"@angular/core": ">=16.0.0",
|
||||
"@angular/forms": ">=16.0.0",
|
||||
"@ng-web-apis/common": "^4.1.2",
|
||||
"@ng-web-apis/mutation-observer": "^4.1.2",
|
||||
"@ng-web-apis/resize-observer": "^4.1.2",
|
||||
"@taiga-ui/event-plugins": "^4.0.1",
|
||||
"@taiga-ui/polymorpheus": "^4.6.4",
|
||||
"rxjs": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@taiga-ui/cdk/node_modules/parse5": {
|
||||
"version": "6.0.1",
|
||||
"license": "MIT",
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/@taiga-ui/core": {
|
||||
"version": "3.77.1",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/core/-/core-3.77.1.tgz",
|
||||
"integrity": "sha512-RjrOZtkQbb+Hw+7wMTt8j76OkGiLrCDb2Ol1rmngFQfzPX5OlaRkBtNhCNoyBtI9rl4CCX2/ViCGnGmrIkHu6g==",
|
||||
"version": "4.0.0-rc.5",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/core/-/core-4.0.0-rc.5.tgz",
|
||||
"integrity": "sha512-kpmwHfa1KHkDb2DpmKBO4h1YFnxE9Bz5Gu6ryWtKLSFG7zID/w10qjmPdEVaE3kUNMg4imbjna0F7C0d3mPwUw==",
|
||||
"dependencies": {
|
||||
"@taiga-ui/i18n": "^3.77.1",
|
||||
"tslib": "^2.6.2"
|
||||
"@taiga-ui/i18n": "^4.0.0-rc.5",
|
||||
"tslib": "^2.6.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/animations": ">=12.0.0",
|
||||
"@angular/common": ">=12.0.0",
|
||||
"@angular/core": ">=12.0.0",
|
||||
"@angular/forms": ">=12.0.0",
|
||||
"@angular/platform-browser": ">=12.0.0",
|
||||
"@angular/router": ">=12.0.0",
|
||||
"@ng-web-apis/common": "^3.0.6",
|
||||
"@ng-web-apis/mutation-observer": "^3.1.0",
|
||||
"@taiga-ui/cdk": "^3.77.1",
|
||||
"@taiga-ui/i18n": "^3.77.1",
|
||||
"@tinkoff/ng-event-plugins": "^3.2.0",
|
||||
"@tinkoff/ng-polymorpheus": "^4.3.0",
|
||||
"@angular/animations": ">=16.0.0",
|
||||
"@angular/common": ">=16.0.0",
|
||||
"@angular/core": ">=16.0.0",
|
||||
"@angular/forms": ">=16.0.0",
|
||||
"@angular/platform-browser": ">=16.0.0",
|
||||
"@angular/router": ">=16.0.0",
|
||||
"@ng-web-apis/common": "^4.1.2",
|
||||
"@ng-web-apis/mutation-observer": "^4.1.2",
|
||||
"@taiga-ui/cdk": "^4.0.0-rc.5",
|
||||
"@taiga-ui/event-plugins": "^4.0.1",
|
||||
"@taiga-ui/i18n": "^4.0.0-rc.5",
|
||||
"@taiga-ui/polymorpheus": "^4.6.4",
|
||||
"rxjs": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@taiga-ui/event-plugins": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/event-plugins/-/event-plugins-4.0.1.tgz",
|
||||
"integrity": "sha512-qy9AMUVakgZ1e2H7G6dSHtBccveHCi/SG5EhNNjMjhMGkSywIDn+HLJ9kCtDmrJDRtFAPgZ3J0C/UwrsEzCvdQ==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/core": ">=15.0.0",
|
||||
"@angular/platform-browser": ">=15.0.0",
|
||||
"rxjs": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@taiga-ui/experimental": {
|
||||
"version": "3.77.1",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/experimental/-/experimental-3.77.1.tgz",
|
||||
"integrity": "sha512-UVmP0y1w9VvOoQoTH4VByZ3m45OcC0Lw//rsrNMicPCX9b5IJxgEjUAmJ+PZ/ecsgnDVKO0HD18cZt5uCVdy7w==",
|
||||
"version": "4.0.0-rc.5",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/experimental/-/experimental-4.0.0-rc.5.tgz",
|
||||
"integrity": "sha512-tJ/tngKnGWfm29lIectuN4sYJAxyWd7QqZLEYIwKEwIc7hghlfoYIK9tNkuGTJ+jAHuTxhm77Cn02Ks7dEfJgA==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.6.2"
|
||||
"tslib": "^2.6.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/common": ">=12.0.0",
|
||||
"@angular/core": ">=12.0.0",
|
||||
"@taiga-ui/addon-commerce": "^3.77.1",
|
||||
"@taiga-ui/cdk": "^3.77.1",
|
||||
"@taiga-ui/core": "^3.77.1",
|
||||
"@taiga-ui/kit": "^3.77.1",
|
||||
"@tinkoff/ng-polymorpheus": "^4.3.0",
|
||||
"rxjs": ">=6.0.0"
|
||||
"@angular/common": ">=16.0.0",
|
||||
"@angular/core": ">=16.0.0",
|
||||
"@taiga-ui/addon-commerce": "^4.0.0-rc.5",
|
||||
"@taiga-ui/cdk": "^4.0.0-rc.5",
|
||||
"@taiga-ui/core": "^4.0.0-rc.5",
|
||||
"@taiga-ui/kit": "^4.0.0-rc.5",
|
||||
"@taiga-ui/polymorpheus": "^4.6.4",
|
||||
"rxjs": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@taiga-ui/i18n": {
|
||||
"version": "3.77.1",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/i18n/-/i18n-3.77.1.tgz",
|
||||
"integrity": "sha512-rC2RYMFyaRHKcoU5WUKMe2DU0urRNh0daKvRIhp8t5AnTQE1MDZHRJYVCpysr8sfXvtJdr5oHoZccavzvqjqOQ==",
|
||||
"version": "4.0.0-rc.5",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/i18n/-/i18n-4.0.0-rc.5.tgz",
|
||||
"integrity": "sha512-pq1rZaGYYBKuk1pd6F+EzcHJQy0DGbmTq3k9OwI+J9f5ls0oWJU21clh7oybMd2AklLMAd2BQdNzpFS1bvqCKQ==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.6.2"
|
||||
"tslib": "^2.6.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/core": ">=12.0.0",
|
||||
"@ng-web-apis/common": "^3.0.6",
|
||||
"rxjs": ">=6.0.0"
|
||||
"@angular/core": ">=16.0.0",
|
||||
"@ng-web-apis/common": "^4.1.2",
|
||||
"rxjs": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@taiga-ui/icons": {
|
||||
"version": "3.77.1",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/icons/-/icons-3.77.1.tgz",
|
||||
"integrity": "sha512-e9NXwxOktKM9TVDVePVkTFAuAs9jlhZCKzpAOfrme1bHVQJ1MEhD2hdj74Yn7IGKOCFjrUDQnxJ9w9POh6H9Vg==",
|
||||
"version": "4.0.0-rc.5",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/icons/-/icons-4.0.0-rc.5.tgz",
|
||||
"integrity": "sha512-rO8g39hRcNqWkrcZc31k9tam7fbpbpypfyLqcfwvtsJ6I4YxQXCMlhpSh2mCTGBVfOpUi+89lqLUJPY0dVaigg==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.6.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@taiga-ui/cdk": "^3.77.1"
|
||||
"tslib": "^2.3.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@taiga-ui/kit": {
|
||||
"version": "3.77.1",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/kit/-/kit-3.77.1.tgz",
|
||||
"integrity": "sha512-Pyk44wDF61VZiMQHehQ3KEEBj5AsO3et8QccKwmqr13jaQzmH6ljwbbYJOwPpEVsdZbqfiI56OVxp86mi6F8mw==",
|
||||
"version": "4.0.0-rc.5",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/kit/-/kit-4.0.0-rc.5.tgz",
|
||||
"integrity": "sha512-LvbOheE6J7pprmjlLIyA0CWiBPi/5Fmj87oqm8Ucj18+hGoc9QS8uaZnblpWZ61WyFzoDUtg5c/4dYMfZ0GNdg==",
|
||||
"dependencies": {
|
||||
"@maskito/angular": "1.9.0",
|
||||
"@maskito/core": "1.9.0",
|
||||
"@maskito/kit": "1.9.0",
|
||||
"@ng-web-apis/intersection-observer": "3.2.0",
|
||||
"text-mask-core": "5.1.2",
|
||||
"tslib": "^2.6.2"
|
||||
"tslib": "^2.6.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/common": ">=12.0.0",
|
||||
"@angular/core": ">=12.0.0",
|
||||
"@angular/forms": ">=12.0.0",
|
||||
"@angular/router": ">=12.0.0",
|
||||
"@ng-web-apis/common": "3.0.6",
|
||||
"@ng-web-apis/mutation-observer": "^3.1.0",
|
||||
"@ng-web-apis/resize-observer": "^3.0.6",
|
||||
"@taiga-ui/cdk": "^3.77.1",
|
||||
"@taiga-ui/core": "^3.77.1",
|
||||
"@taiga-ui/i18n": "^3.77.1",
|
||||
"@tinkoff/ng-polymorpheus": "^4.3.0",
|
||||
"rxjs": ">=6.0.0"
|
||||
"@angular/common": ">=16.0.0",
|
||||
"@angular/core": ">=16.0.0",
|
||||
"@angular/forms": ">=16.0.0",
|
||||
"@angular/router": ">=16.0.0",
|
||||
"@maskito/angular": "^2.5.0",
|
||||
"@maskito/core": "^2.5.0",
|
||||
"@maskito/kit": "^2.5.0",
|
||||
"@maskito/phone": "^2.5.0",
|
||||
"@ng-web-apis/common": "^4.1.2",
|
||||
"@ng-web-apis/intersection-observer": "^4.1.2",
|
||||
"@ng-web-apis/mutation-observer": "^4.1.2",
|
||||
"@ng-web-apis/resize-observer": "^4.1.2",
|
||||
"@taiga-ui/cdk": "^4.0.0-rc.5",
|
||||
"@taiga-ui/core": "^4.0.0-rc.5",
|
||||
"@taiga-ui/i18n": "^4.0.0-rc.5",
|
||||
"@taiga-ui/polymorpheus": "^4.6.4",
|
||||
"rxjs": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@taiga-ui/layout": {
|
||||
"version": "4.0.0-rc.5",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/layout/-/layout-4.0.0-rc.5.tgz",
|
||||
"integrity": "sha512-iebBX/G1bXLHhNYDR7fjmDpvF4FJXubtDkRedWvnUnOOmI46yKpKohwQuEReRIRxVASK9DvG6VLtz3Ho2JjyrQ==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.6.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/common": ">=16.0.0",
|
||||
"@angular/core": ">=16.0.0",
|
||||
"@taiga-ui/cdk": "^4.0.0-rc.5",
|
||||
"@taiga-ui/core": "^4.0.0-rc.5",
|
||||
"@taiga-ui/polymorpheus": "^4.6.4",
|
||||
"rxjs": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@taiga-ui/legacy": {
|
||||
"version": "4.0.0-rc.5",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/legacy/-/legacy-4.0.0-rc.5.tgz",
|
||||
"integrity": "sha512-zS6h+ivYxHeiSScVc5hTj612f5tv7xY+4eJyJbEtjNsHErf1FWL72IJbl1QK3bkodefznFxwhfEsNkka70Sf3w==",
|
||||
"dependencies": {
|
||||
"tslib": "2.6.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/core": ">=16.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@taiga-ui/polymorpheus": {
|
||||
"version": "4.6.4",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/polymorpheus/-/polymorpheus-4.6.4.tgz",
|
||||
"integrity": "sha512-rlMNWfhImLaMEDWXU1TG7a+YYkVA528poq7lNQ8d+61HyXvbjgs/WAeJQwdabjeLxTUyDozSBJVwSwU69tYprg==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"tslib": "^2.6.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/core": ">=16.0.0",
|
||||
"@angular/platform-browser": ">=16.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@taiga-ui/styles": {
|
||||
"version": "3.77.1",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/styles/-/styles-3.77.1.tgz",
|
||||
"integrity": "sha512-YoPXqY1pz+13vYhHnE6hskjRtnDDGgjnZIPtx05ChN8/TDIJ6NiaWKI5Es/G4fq3vKJnq2yIZ9D2Ghm/aPItGw==",
|
||||
"version": "4.0.0-rc.5",
|
||||
"resolved": "https://registry.npmjs.org/@taiga-ui/styles/-/styles-4.0.0-rc.5.tgz",
|
||||
"integrity": "sha512-+1o+lcKyQAnoIWQrqJGJB2oBKOOI6yNKfm2IPohgCsIxEWi7ljgejjy2ym1w8e4z1hWrqRFmnck5nhT3ERA2FA==",
|
||||
"peerDependencies": {
|
||||
"@taiga-ui/cdk": "^3.77.1",
|
||||
"tslib": "^2.6.2"
|
||||
"@taiga-ui/cdk": "^4.0.0-rc.5",
|
||||
"tslib": "^2.6.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@tinkoff/ng-dompurify": {
|
||||
@@ -5286,44 +5371,22 @@
|
||||
"dompurify": ">= 2.3.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@tinkoff/ng-event-plugins": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@tinkoff/ng-event-plugins/-/ng-event-plugins-3.2.0.tgz",
|
||||
"integrity": "sha512-n56R5xNfiytabh2WmWdQXfNU6m7dfOo3LLxlARE+DX7f5yciW2xBdDkuEHX74q8dlCuAVlW9aslSfz8c//ymwA==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.2.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/core": ">=12.0.0",
|
||||
"@angular/platform-browser": ">=12.0.0",
|
||||
"rxjs": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@tinkoff/ng-polymorpheus": {
|
||||
"version": "4.3.0",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"tslib": "2.6.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/core": ">=12.0.0",
|
||||
"@angular/platform-browser": ">=12.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ts-morph/common": {
|
||||
"version": "0.22.0",
|
||||
"license": "MIT",
|
||||
"version": "0.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.24.0.tgz",
|
||||
"integrity": "sha512-c1xMmNHWpNselmpIqursHeOHHBTIsJLbB+NuovbTTRCNiTLEr/U9dbJ8qy0jd/O2x5pc3seWuOUN5R2IoOTp8A==",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"fast-glob": "^3.3.2",
|
||||
"minimatch": "^9.0.3",
|
||||
"minimatch": "^9.0.4",
|
||||
"mkdirp": "^3.0.1",
|
||||
"path-browserify": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@ts-morph/common/node_modules/mkdirp": {
|
||||
"version": "3.0.1",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
|
||||
"integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
|
||||
"optional": true,
|
||||
"bin": {
|
||||
"mkdirp": "dist/cjs/src/bin.js"
|
||||
@@ -5500,7 +5563,8 @@
|
||||
},
|
||||
"node_modules/@types/minimatch": {
|
||||
"version": "3.0.5",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
|
||||
"integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/@types/mustache": {
|
||||
@@ -6007,7 +6071,8 @@
|
||||
},
|
||||
"node_modules/array-differ": {
|
||||
"version": "3.0.0",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz",
|
||||
"integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
@@ -6020,7 +6085,8 @@
|
||||
},
|
||||
"node_modules/array-union": {
|
||||
"version": "2.1.0",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
|
||||
"integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
@@ -6028,7 +6094,8 @@
|
||||
},
|
||||
"node_modules/arrify": {
|
||||
"version": "2.0.1",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
|
||||
"integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
@@ -6333,11 +6400,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/braces": {
|
||||
"version": "3.0.2",
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
|
||||
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"fill-range": "^7.0.1"
|
||||
"fill-range": "^7.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
@@ -6771,8 +6839,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/code-block-writer": {
|
||||
"version": "12.0.0",
|
||||
"license": "MIT",
|
||||
"version": "13.0.1",
|
||||
"resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.1.tgz",
|
||||
"integrity": "sha512-c5or4P6erEA69TxaxTNcHUNcIn+oyxSRTOWV+pSYF+z4epXqNvwvJ70XPGjPNgue83oAFAPBRQYwpAJ/Hpe/Sg==",
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/color-convert": {
|
||||
@@ -7839,9 +7908,10 @@
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/express": {
|
||||
"version": "4.19.1",
|
||||
"version": "4.19.2",
|
||||
"resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
|
||||
"integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"accepts": "~1.3.8",
|
||||
"array-flatten": "1.1.1",
|
||||
@@ -7981,9 +8051,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/fill-range": {
|
||||
"version": "7.0.1",
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
|
||||
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"to-regex-range": "^5.0.1"
|
||||
},
|
||||
@@ -9128,8 +9199,9 @@
|
||||
},
|
||||
"node_modules/is-number": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=0.12.0"
|
||||
}
|
||||
@@ -9458,6 +9530,12 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/libphonenumber-js": {
|
||||
"version": "1.11.4",
|
||||
"resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.11.4.tgz",
|
||||
"integrity": "sha512-F/R50HQuWWYcmU/esP5jrH5LiWYaN7DpN0a/99U8+mnGGtnx8kmRE+649dQh3v+CowXXZc8vpkf5AmYkO0AQ7Q==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/license-webpack-plugin": {
|
||||
"version": "4.0.2",
|
||||
"dev": true,
|
||||
@@ -10164,9 +10242,10 @@
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/minimatch": {
|
||||
"version": "9.0.3",
|
||||
"version": "9.0.5",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
|
||||
"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
|
||||
"devOptional": true,
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"brace-expansion": "^2.0.1"
|
||||
},
|
||||
@@ -10396,7 +10475,8 @@
|
||||
},
|
||||
"node_modules/multimatch": {
|
||||
"version": "5.0.0",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz",
|
||||
"integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"@types/minimatch": "^3.0.3",
|
||||
@@ -10414,7 +10494,8 @@
|
||||
},
|
||||
"node_modules/multimatch/node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
@@ -10423,7 +10504,8 @@
|
||||
},
|
||||
"node_modules/multimatch/node_modules/minimatch": {
|
||||
"version": "3.1.2",
|
||||
"license": "ISC",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
||||
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
@@ -10512,26 +10594,43 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/ng-morph": {
|
||||
"version": "4.0.5",
|
||||
"license": "Apache-2.0",
|
||||
"version": "4.5.4",
|
||||
"resolved": "https://registry.npmjs.org/ng-morph/-/ng-morph-4.5.4.tgz",
|
||||
"integrity": "sha512-g7asHMUZR05bOw/kX5nIVEFs8SDcuH0t5WjdMuVBlJEvl0mY1gDlz1LoIhGlzcbRleMg9n1J0PdrrmYJchWJ9g==",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"jsonc-parser": "3.2.0",
|
||||
"minimatch": "9.0.3",
|
||||
"jsonc-parser": "3.3.1",
|
||||
"minimatch": "10.0.1",
|
||||
"multimatch": "5.0.0",
|
||||
"ts-morph": "21.0.1",
|
||||
"tslib": "2.6.2"
|
||||
"ts-morph": "23.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular-devkit/core": ">=11.0.0",
|
||||
"@angular-devkit/schematics": ">=11.0.0"
|
||||
"@angular-devkit/core": ">=16.0.0",
|
||||
"@angular-devkit/schematics": ">=16.0.0",
|
||||
"tslib": "^2.6.3"
|
||||
}
|
||||
},
|
||||
"node_modules/ng-morph/node_modules/jsonc-parser": {
|
||||
"version": "3.2.0",
|
||||
"license": "MIT",
|
||||
"version": "3.3.1",
|
||||
"resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
|
||||
"integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/ng-morph/node_modules/minimatch": {
|
||||
"version": "10.0.1",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz",
|
||||
"integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"brace-expansion": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "20 || >=22"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/ng-packagr": {
|
||||
"version": "17.3.0",
|
||||
"dev": true,
|
||||
@@ -11379,7 +11478,8 @@
|
||||
},
|
||||
"node_modules/path-browserify": {
|
||||
"version": "1.0.1",
|
||||
"license": "MIT",
|
||||
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
|
||||
"integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/path-exists": {
|
||||
@@ -13232,9 +13332,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/tar": {
|
||||
"version": "6.2.0",
|
||||
"version": "6.2.1",
|
||||
"resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
|
||||
"integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
|
||||
"devOptional": true,
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"chownr": "^2.0.0",
|
||||
"fs-minipass": "^2.0.0",
|
||||
@@ -13434,10 +13535,6 @@
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/text-mask-core": {
|
||||
"version": "5.1.2",
|
||||
"license": "Unlicense"
|
||||
},
|
||||
"node_modules/thunky": {
|
||||
"version": "1.1.0",
|
||||
"dev": true,
|
||||
@@ -13464,8 +13561,9 @@
|
||||
},
|
||||
"node_modules/to-regex-range": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"is-number": "^7.0.0"
|
||||
},
|
||||
@@ -13502,12 +13600,13 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/ts-morph": {
|
||||
"version": "21.0.1",
|
||||
"license": "MIT",
|
||||
"version": "23.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-23.0.0.tgz",
|
||||
"integrity": "sha512-FcvFx7a9E8TUe6T3ShihXJLiJOiqyafzFKUO4aqIHDUCIvADdGNShcbc2W5PMr3LerXRv7mafvFZ9lRENxJmug==",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"@ts-morph/common": "~0.22.0",
|
||||
"code-block-writer": "^12.0.0"
|
||||
"@ts-morph/common": "~0.24.0",
|
||||
"code-block-writer": "^13.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/ts-node": {
|
||||
@@ -13553,8 +13652,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/tslib": {
|
||||
"version": "2.6.2",
|
||||
"license": "0BSD"
|
||||
"version": "2.6.3",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
|
||||
"integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
|
||||
},
|
||||
"node_modules/tslint": {
|
||||
"version": "6.1.3",
|
||||
@@ -14255,9 +14355,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/webpack-dev-server/node_modules/ws": {
|
||||
"version": "8.16.0",
|
||||
"version": "8.18.0",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
|
||||
"integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
},
|
||||
@@ -14540,9 +14641,10 @@
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/ws": {
|
||||
"version": "7.5.9",
|
||||
"version": "7.5.10",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
|
||||
"integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=8.3.0"
|
||||
},
|
||||
|
||||
@@ -45,17 +45,19 @@
|
||||
"@start9labs/argon2": "^0.1.0",
|
||||
"@start9labs/emver": "^0.1.5",
|
||||
"@start9labs/start-sdk": "file:../sdk/dist",
|
||||
"@taiga-ui/addon-charts": "3.77.1",
|
||||
"@taiga-ui/addon-commerce": "3.77.1",
|
||||
"@taiga-ui/addon-mobile": "3.77.1",
|
||||
"@taiga-ui/cdk": "3.77.1",
|
||||
"@taiga-ui/core": "3.77.1",
|
||||
"@taiga-ui/experimental": "3.77.1",
|
||||
"@taiga-ui/icons": "3.77.1",
|
||||
"@taiga-ui/kit": "3.77.1",
|
||||
"@taiga-ui/styles": "3.77.1",
|
||||
"@taiga-ui/addon-charts": "4.0.0-rc.5",
|
||||
"@taiga-ui/addon-commerce": "4.0.0-rc.5",
|
||||
"@taiga-ui/addon-mobile": "4.0.0-rc.5",
|
||||
"@taiga-ui/cdk": "4.0.0-rc.5",
|
||||
"@taiga-ui/core": "4.0.0-rc.5",
|
||||
"@taiga-ui/event-plugins": "^4.0.1",
|
||||
"@taiga-ui/experimental": "4.0.0-rc.5",
|
||||
"@taiga-ui/icons": "4.0.0-rc.5",
|
||||
"@taiga-ui/kit": "4.0.0-rc.5",
|
||||
"@taiga-ui/layout": "4.0.0-rc.5",
|
||||
"@taiga-ui/legacy": "4.0.0-rc.5",
|
||||
"@taiga-ui/styles": "4.0.0-rc.5",
|
||||
"@tinkoff/ng-dompurify": "4.0.0",
|
||||
"@tinkoff/ng-event-plugins": "3.2.0",
|
||||
"ansi-to-html": "^0.7.2",
|
||||
"base64-js": "^1.5.1",
|
||||
"cbor": "npm:@jprochazk/cbor@^0.4.9",
|
||||
@@ -78,7 +80,7 @@
|
||||
"rxjs": "^7.5.6",
|
||||
"swiper": "^8.2.4",
|
||||
"ts-matches": "^5.2.1",
|
||||
"tslib": "^2.3.0",
|
||||
"tslib": "^2.6.3",
|
||||
"uuid": "^8.3.2",
|
||||
"zone.js": "^0.14.2"
|
||||
},
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
appearance="flat"
|
||||
size="m"
|
||||
class="back"
|
||||
iconLeft="tuiIconChevronLeft"
|
||||
iconStart="@tui.chevron-left"
|
||||
[style.border-radius.rem]="10"
|
||||
(click)="selected = null"
|
||||
>
|
||||
@@ -17,7 +17,7 @@
|
||||
</button>
|
||||
}
|
||||
<h1>{{ selected ? 'Install Type' : 'Select Disk' }}</h1>
|
||||
<div [style.color]="'var(--tui-negative)'">{{ error }}</div>
|
||||
<div [style.color]="'var(--tui-text-negative)'">{{ error }}</div>
|
||||
</header>
|
||||
<div class="pages">
|
||||
<div class="options" [class.options_selected]="selected">
|
||||
@@ -28,9 +28,9 @@
|
||||
<div class="options">
|
||||
@if (guid) {
|
||||
<button tuiCell (click)="install()">
|
||||
<tui-icon icon="tuiIconLifeBuoyLarge" />
|
||||
<tui-icon icon="@tui.life-buoy" />
|
||||
<span tuiTitle>
|
||||
<strong [style.color]="'var(--tui-positive)'">
|
||||
<strong [style.color]="'var(--tui-text-positive)'">
|
||||
Re-Install StartOS
|
||||
</strong>
|
||||
<span tuiSubtitle>Will preserve existing StartOS data</span>
|
||||
@@ -39,12 +39,14 @@
|
||||
}
|
||||
|
||||
<button tuiCell [disabled]="!selected" (click)="warn()">
|
||||
<tui-icon icon="tuiIconDownload" />
|
||||
<tui-icon icon="@tui.download" />
|
||||
<span tuiTitle>
|
||||
@if (guid) {
|
||||
<span [style.color]="'var(--tui-negative)'">Factory Reset</span>
|
||||
<span [style.color]="'var(--tui-text-negative)'">
|
||||
Factory Reset
|
||||
</span>
|
||||
} @else {
|
||||
<span [style.color]="'var(--tui-positive)'">
|
||||
<span [style.color]="'var(--tui-text-positive)'">
|
||||
Install StartOS
|
||||
</span>
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
tui-root {
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
color: var(--tui-text-01);
|
||||
color: var(--tui-text-primary);
|
||||
}
|
||||
|
||||
main {
|
||||
@@ -14,7 +14,7 @@ main {
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background: var(--tui-base-08);
|
||||
background: var(--tui-background-accent-opposite-hover);
|
||||
}
|
||||
|
||||
.logo {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { TUI_CONFIRM } from '@taiga-ui/kit'
|
||||
import { Component, inject } from '@angular/core'
|
||||
import { DiskInfo, LoadingService, toGuid } from '@start9labs/shared'
|
||||
import { TuiDialogService } from '@taiga-ui/core'
|
||||
import { TUI_PROMPT } from '@taiga-ui/kit'
|
||||
import { filter, from } from 'rxjs'
|
||||
import { SUCCESS, toWarning } from 'src/app/app.utils'
|
||||
import { ApiService } from 'src/app/services/api.service'
|
||||
@@ -40,7 +40,7 @@ export class AppComponent {
|
||||
|
||||
warn() {
|
||||
this.dialogs
|
||||
.open(TUI_PROMPT, toWarning(this.selected))
|
||||
.open(TUI_CONFIRM, toWarning(this.selected))
|
||||
.pipe(filter(Boolean))
|
||||
.subscribe(() => {
|
||||
this.install(true)
|
||||
|
||||
@@ -3,19 +3,18 @@ import { NgModule } from '@angular/core'
|
||||
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'
|
||||
import {
|
||||
DriveComponent,
|
||||
LoadingModule,
|
||||
RELATIVE_URL,
|
||||
WorkspaceConfig,
|
||||
} from '@start9labs/shared'
|
||||
import { TuiDialogModule, TuiRootModule } from '@taiga-ui/core'
|
||||
import {
|
||||
TuiButtonModule,
|
||||
TuiCardModule,
|
||||
TuiCellModule,
|
||||
TuiIconModule,
|
||||
TuiSurfaceModule,
|
||||
TuiTitleModule,
|
||||
} from '@taiga-ui/experimental'
|
||||
TuiButton,
|
||||
TuiIcon,
|
||||
TuiRoot,
|
||||
TuiSurface,
|
||||
TuiTitle,
|
||||
} from '@taiga-ui/core'
|
||||
import { NG_EVENT_PLUGINS } from '@taiga-ui/event-plugins'
|
||||
import { TuiCardLarge, TuiCell } from '@taiga-ui/layout'
|
||||
import { ApiService } from 'src/app/services/api.service'
|
||||
import { LiveApiService } from 'src/app/services/live-api.service'
|
||||
import { MockApiService } from 'src/app/services/mock-api.service'
|
||||
@@ -31,18 +30,17 @@ const {
|
||||
imports: [
|
||||
HttpClientModule,
|
||||
BrowserAnimationsModule,
|
||||
TuiRootModule,
|
||||
TuiDialogModule,
|
||||
LoadingModule,
|
||||
TuiRoot,
|
||||
DriveComponent,
|
||||
TuiButtonModule,
|
||||
TuiCardModule,
|
||||
TuiCellModule,
|
||||
TuiIconModule,
|
||||
TuiSurfaceModule,
|
||||
TuiTitleModule,
|
||||
TuiButton,
|
||||
TuiCardLarge,
|
||||
TuiCell,
|
||||
TuiIcon,
|
||||
TuiSurface,
|
||||
TuiTitle,
|
||||
],
|
||||
providers: [
|
||||
NG_EVENT_PLUGINS,
|
||||
{
|
||||
provide: ApiService,
|
||||
useClass: useMocks ? MockApiService : LiveApiService,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { DiskInfo } from '@start9labs/shared'
|
||||
import { TuiDialogOptions } from '@taiga-ui/core'
|
||||
import { TuiPromptData } from '@taiga-ui/kit'
|
||||
import { TuiConfirmData } from '@taiga-ui/kit'
|
||||
|
||||
export const SUCCESS: Partial<TuiDialogOptions<any>> = {
|
||||
label: 'Install Success',
|
||||
@@ -12,7 +12,7 @@ export const SUCCESS: Partial<TuiDialogOptions<any>> = {
|
||||
|
||||
export function toWarning(
|
||||
disk: DiskInfo | null,
|
||||
): Partial<TuiDialogOptions<TuiPromptData>> {
|
||||
): Partial<TuiDialogOptions<TuiConfirmData>> {
|
||||
return {
|
||||
label: 'Warning',
|
||||
size: 's',
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"@angular/common": ">=13.2.0",
|
||||
"@angular/core": ">=13.2.0",
|
||||
"@start9labs/shared": ">=0.3.2",
|
||||
"@taiga-ui/cdk": ">=3.0.0",
|
||||
"@taiga-ui/cdk": "4.0.0-rc.5",
|
||||
"@tinkoff/ng-dompurify": ">=4.0.0",
|
||||
"fuse.js": "^6.4.6"
|
||||
},
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
size="60px"
|
||||
[url]="store?.url || ''"
|
||||
[marketplace]="iconConfig"
|
||||
></store-icon>
|
||||
/>
|
||||
<h1 [class.tui-skeleton]="!store">
|
||||
{{ store?.info?.name || 'Loading store' }}
|
||||
</h1>
|
||||
@@ -21,13 +21,11 @@
|
||||
<marketplace-search
|
||||
[(query)]="query"
|
||||
(queryChange)="onQueryChange($event)"
|
||||
></marketplace-search>
|
||||
/>
|
||||
<button
|
||||
tuiButton
|
||||
type="button"
|
||||
appearance="flat"
|
||||
[pseudoActive]="false"
|
||||
[pseudoHover]="false"
|
||||
appearance="link"
|
||||
(click)="toggleMenu(true)"
|
||||
(tuiActiveZoneChange)="toggleMenu($event)"
|
||||
[style.--tui-padding]="'1.2rem'"
|
||||
@@ -40,7 +38,7 @@
|
||||
[marketplace]="iconConfig"
|
||||
[class.tui-skeleton]="!store"
|
||||
[class.tui-skeleton_rounded]="!store"
|
||||
></store-icon>
|
||||
/>
|
||||
<nav
|
||||
*tuiSidebar="open; direction: 'right'; autoWidth: true"
|
||||
class="nav-mobile-sidebar divide-bar"
|
||||
@@ -54,7 +52,7 @@
|
||||
tuiButton
|
||||
type="button"
|
||||
appearance="icon"
|
||||
icon="tuiIconClose"
|
||||
iconStart="@tui.x"
|
||||
(tuiActiveZoneChange)="toggleMenu($event)"
|
||||
(click)="toggleMenu(false)"
|
||||
></button>
|
||||
@@ -66,20 +64,17 @@
|
||||
[categories]="store?.info?.categories"
|
||||
[category]="query ? '' : category"
|
||||
(categoryChange)="onCategoryChange($event); toggleMenu(false)"
|
||||
></marketplace-categories>
|
||||
/>
|
||||
<div>
|
||||
<!-- link to store for brochure -->
|
||||
<ng-content select="[slot=store-mobile]"></ng-content>
|
||||
<ng-content select="[slot=store-mobile]" />
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
href="https://docs.start9.com/0.3.5.x/developer-docs/"
|
||||
>
|
||||
<span>Package a service</span>
|
||||
<tui-icon
|
||||
tuiAppearance="icon"
|
||||
icon="tuiIconExternalLinkLarge"
|
||||
></tui-icon>
|
||||
<tui-icon tuiAppearance="icon" icon="@tui.external-link" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -93,26 +88,23 @@
|
||||
<marketplace-search
|
||||
[query]="query"
|
||||
(queryChange)="onQueryChange($event)"
|
||||
></marketplace-search>
|
||||
/>
|
||||
<div class="nav-desktop-container">
|
||||
<marketplace-categories
|
||||
[categories]="store?.info?.categories"
|
||||
[category]="query ? '' : category"
|
||||
(categoryChange)="onCategoryChange($event)"
|
||||
></marketplace-categories>
|
||||
/>
|
||||
<div>
|
||||
<!-- link to store for brochure -->
|
||||
<ng-content select="[slot=store]"></ng-content>
|
||||
<ng-content select="[slot=store]" />
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
href="https://docs.start9.com/0.3.5.x/developer-docs/"
|
||||
>
|
||||
<span>Package a service</span>
|
||||
<tui-icon
|
||||
tuiAppearance="icon"
|
||||
icon="tuiIconExternalLinkLarge"
|
||||
></tui-icon>
|
||||
<tui-icon tuiAppearance="icon" icon="@tui.external-link" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -3,13 +3,12 @@ import { NgModule } from '@angular/core'
|
||||
import { SharedPipesModule } from '@start9labs/shared'
|
||||
|
||||
import { MenuComponent } from './menu.component'
|
||||
import { TuiButtonModule, TuiLoaderModule } from '@taiga-ui/core'
|
||||
import { TuiActiveZoneModule, TuiLetModule } from '@taiga-ui/cdk'
|
||||
import { TuiSidebarModule } from '@taiga-ui/addon-mobile'
|
||||
import { TuiLoader, TuiIcon, TuiButton, TuiAppearance } from '@taiga-ui/core'
|
||||
import { TuiActiveZone, TuiLet } from '@taiga-ui/cdk'
|
||||
import { TuiSidebar } from '@taiga-ui/addon-mobile'
|
||||
import { SearchModule } from '../../pages/list/search/search.module'
|
||||
import { CategoriesModule } from '../../pages/list/categories/categories.module'
|
||||
import { StoreIconComponentModule } from '../store-icon/store-icon.component.module'
|
||||
import { TuiAppearanceModule, TuiIconModule } from '@taiga-ui/experimental'
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
@@ -17,15 +16,15 @@ import { TuiAppearanceModule, TuiIconModule } from '@taiga-ui/experimental'
|
||||
SharedPipesModule,
|
||||
SearchModule,
|
||||
CategoriesModule,
|
||||
TuiActiveZoneModule,
|
||||
TuiSidebarModule,
|
||||
TuiLoaderModule,
|
||||
TuiButtonModule,
|
||||
TuiActiveZone,
|
||||
...TuiSidebar,
|
||||
TuiLoader,
|
||||
TuiButton,
|
||||
CategoriesModule,
|
||||
StoreIconComponentModule,
|
||||
TuiLetModule,
|
||||
TuiAppearanceModule,
|
||||
TuiIconModule,
|
||||
TuiLet,
|
||||
TuiAppearance,
|
||||
TuiIcon,
|
||||
],
|
||||
declarations: [MenuComponent],
|
||||
exports: [MenuComponent],
|
||||
|
||||
@@ -30,30 +30,30 @@ export class CategoriesComponent {
|
||||
determineIcon(category: string): string {
|
||||
switch (category.toLowerCase()) {
|
||||
case 'all':
|
||||
return 'tuiIconGridLarge'
|
||||
return '@tui.layout-grid'
|
||||
case 'bitcoin':
|
||||
return 'assets/img/icons/logo-bitcoin.svg'
|
||||
return '@tui.bitcoin'
|
||||
case 'messaging':
|
||||
case 'communications':
|
||||
return 'tuiIconMessageCircleLarge'
|
||||
return '@tui.message-circle'
|
||||
case 'data':
|
||||
return 'tuiIconFileTextLarge'
|
||||
return '@tui.file-text'
|
||||
case 'developer tools':
|
||||
return 'tuiIconTableSplitLarge'
|
||||
return '@tui.table-split'
|
||||
case 'featured':
|
||||
return 'tuiIconStarLarge'
|
||||
return '@tui.star'
|
||||
case 'lightning':
|
||||
return 'tuiIconZapLarge'
|
||||
return '@tui.zap'
|
||||
case 'media':
|
||||
return 'tuiIconPlayCircleLarge'
|
||||
return '@tui.circle-play'
|
||||
case 'networking':
|
||||
return 'tuiIconGlobeLarge'
|
||||
return '@tui.globe'
|
||||
case 'social':
|
||||
return 'tuiIconUsersLarge'
|
||||
return '@tui.users'
|
||||
case 'ai':
|
||||
return 'tuiIconCpuLarge'
|
||||
return '@tui.cpu'
|
||||
default:
|
||||
return 'tuiIconBoxLarge'
|
||||
return '@tui.box'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import { TuiIcon, TuiAppearance } from '@taiga-ui/core'
|
||||
import { CommonModule } from '@angular/common'
|
||||
import { NgModule } from '@angular/core'
|
||||
|
||||
import { CategoriesComponent } from './categories.component'
|
||||
import { TuiAppearanceModule, TuiIconModule } from '@taiga-ui/experimental'
|
||||
import { RouterModule } from '@angular/router'
|
||||
|
||||
@NgModule({
|
||||
imports: [RouterModule, CommonModule, TuiAppearanceModule, TuiIconModule],
|
||||
imports: [RouterModule, CommonModule, TuiAppearance, TuiIcon],
|
||||
declarations: [CategoriesComponent],
|
||||
exports: [CategoriesComponent],
|
||||
})
|
||||
|
||||
@@ -2,8 +2,8 @@ import { CommonModule } from '@angular/common'
|
||||
import { NgModule } from '@angular/core'
|
||||
import { RouterModule } from '@angular/router'
|
||||
import { SharedPipesModule, TickerModule } from '@start9labs/shared'
|
||||
import { TuiLet } from '@taiga-ui/cdk'
|
||||
import { ItemComponent } from './item.component'
|
||||
import { TuiLetModule } from '@taiga-ui/cdk'
|
||||
|
||||
@NgModule({
|
||||
declarations: [ItemComponent],
|
||||
@@ -13,7 +13,7 @@ import { TuiLetModule } from '@taiga-ui/cdk'
|
||||
RouterModule,
|
||||
SharedPipesModule,
|
||||
TickerModule,
|
||||
TuiLetModule,
|
||||
TuiLet,
|
||||
],
|
||||
})
|
||||
export class ItemModule {}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div class="search-box">
|
||||
<tui-svg src="tuiIconSearchLarge"></tui-svg>
|
||||
<tui-icon icon="@tui.search" />
|
||||
<input
|
||||
type="text"
|
||||
name="search"
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import { CommonModule } from '@angular/common'
|
||||
import { NgModule } from '@angular/core'
|
||||
import { FormsModule } from '@angular/forms'
|
||||
import { TuiIcon } from '@taiga-ui/core'
|
||||
import { SearchComponent } from './search.component'
|
||||
import { TuiSvgModule } from '@taiga-ui/core'
|
||||
|
||||
@NgModule({
|
||||
imports: [FormsModule, CommonModule, TuiSvgModule],
|
||||
imports: [FormsModule, CommonModule, TuiIcon],
|
||||
declarations: [SearchComponent],
|
||||
exports: [SearchComponent],
|
||||
})
|
||||
|
||||
@@ -7,7 +7,7 @@ import {
|
||||
PipeTransform,
|
||||
} from '@angular/core'
|
||||
import { AbstractMarketplaceService } from '../../services/marketplace.service'
|
||||
import { PolymorpheusContent } from '@tinkoff/ng-polymorpheus'
|
||||
import { PolymorpheusContent } from '@taiga-ui/polymorpheus'
|
||||
import { TuiDialogContext, TuiDialogService } from '@taiga-ui/core'
|
||||
import { MarketplacePkg } from '../../types'
|
||||
import { Observable } from 'rxjs'
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { TuiAccordion } from '@taiga-ui/kit'
|
||||
import { NgModule } from '@angular/core'
|
||||
import { CommonModule } from '@angular/common'
|
||||
import {
|
||||
@@ -5,8 +6,7 @@ import {
|
||||
MarkdownPipeModule,
|
||||
SafeLinksDirective,
|
||||
} from '@start9labs/shared'
|
||||
import { TuiAccordionModule } from '@taiga-ui/kit'
|
||||
import { TuiButtonModule, TuiLoaderModule } from '@taiga-ui/core'
|
||||
import { TuiLoader, TuiButton } from '@taiga-ui/core'
|
||||
import { NgDompurifyModule } from '@tinkoff/ng-dompurify'
|
||||
import {
|
||||
FilterVersionsPipe,
|
||||
@@ -20,9 +20,9 @@ import {
|
||||
MarkdownPipeModule,
|
||||
NgDompurifyModule,
|
||||
SafeLinksDirective,
|
||||
TuiButtonModule,
|
||||
TuiAccordionModule,
|
||||
TuiLoaderModule,
|
||||
TuiButton,
|
||||
...TuiAccordion,
|
||||
TuiLoader,
|
||||
FilterVersionsPipe,
|
||||
],
|
||||
declarations: [ReleaseNotesComponent],
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { CommonModule } from "@angular/common";
|
||||
import { NgModule } from "@angular/core";
|
||||
import { RouterModule } from "@angular/router";
|
||||
import { AboutComponent } from "./about.component";
|
||||
import { TuiTagModule } from "@taiga-ui/kit";
|
||||
import { NgDompurifyModule } from "@tinkoff/ng-dompurify";
|
||||
import { SafeLinksDirective } from "@start9labs/shared";
|
||||
import { TuiTagModule } from '@taiga-ui/legacy'
|
||||
import { CommonModule } from '@angular/common'
|
||||
import { NgModule } from '@angular/core'
|
||||
import { RouterModule } from '@angular/router'
|
||||
import { AboutComponent } from './about.component'
|
||||
import { NgDompurifyModule } from '@tinkoff/ng-dompurify'
|
||||
import { SafeLinksDirective } from '@start9labs/shared'
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
import { CommonModule } from '@angular/common'
|
||||
import { ChangeDetectionStrategy, Component, Input } from '@angular/core'
|
||||
import { TuiLabelModule, TuiSvgModule } from '@taiga-ui/core'
|
||||
import { TuiLineClampModule } from '@taiga-ui/kit'
|
||||
import { TuiIcon, TuiLabel, TuiTitle } from '@taiga-ui/core'
|
||||
import { TuiLineClamp } from '@taiga-ui/kit'
|
||||
|
||||
@Component({
|
||||
selector: 'marketplace-additional-item',
|
||||
template: `
|
||||
<div class="item-container">
|
||||
<label [tuiLabel]="label">
|
||||
<tui-line-clamp [content]="data" [linesLimit]="1"></tui-line-clamp>
|
||||
<label tuiTitle>
|
||||
<span tuiSubtitle>{{ label }}</span>
|
||||
<tui-line-clamp [content]="data" [linesLimit]="1" />
|
||||
</label>
|
||||
<tui-svg [src]="icon"></tui-svg>
|
||||
<tui-icon [icon]="icon" />
|
||||
</div>
|
||||
`,
|
||||
styles: [
|
||||
@@ -25,7 +26,11 @@ import { TuiLineClampModule } from '@taiga-ui/kit'
|
||||
background-color: rgb(113 113 122 / 0.1);
|
||||
}
|
||||
|
||||
tui-svg {
|
||||
[tuiSubtitle] {
|
||||
color: var(--tui-text-secondary);
|
||||
}
|
||||
|
||||
tui-icon {
|
||||
opacity: 0.7;
|
||||
}
|
||||
}
|
||||
@@ -38,7 +43,7 @@ import { TuiLineClampModule } from '@taiga-ui/kit'
|
||||
],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
standalone: true,
|
||||
imports: [CommonModule, TuiSvgModule, TuiLineClampModule, TuiLabelModule],
|
||||
imports: [CommonModule, TuiLineClamp, TuiLabel, TuiIcon, TuiTitle],
|
||||
})
|
||||
export class MarketplaceAdditionalItemComponent {
|
||||
@Input({ required: true })
|
||||
|
||||
@@ -15,14 +15,15 @@
|
||||
(click)="copyService.copy(gitHash)"
|
||||
[data]="gitHash"
|
||||
label="Git Hash"
|
||||
icon="tuiIconCopyLarge"
|
||||
icon="@tui.copy"
|
||||
class="item-copy"
|
||||
button
|
||||
detail="false"
|
||||
></marketplace-additional-item>
|
||||
<ng-template #noHash>
|
||||
<div class="item-padding">
|
||||
<label tuiLabel="Git Hash">Unknown</label>
|
||||
<label tuiTitle>
|
||||
<span tuiSubtitle>Git Hash</span>
|
||||
Unknown
|
||||
</label>
|
||||
</div>
|
||||
</ng-template>
|
||||
<!-- license -->
|
||||
@@ -30,7 +31,7 @@
|
||||
(click)="presentModalMd('License')"
|
||||
[data]="pkg.manifest.license"
|
||||
label="License"
|
||||
icon="tuiIconChevronRightLarge"
|
||||
icon="@tui.chevron-right"
|
||||
class="item-pointer"
|
||||
></marketplace-additional-item>
|
||||
<!-- instructions -->
|
||||
@@ -38,38 +39,38 @@
|
||||
(click)="presentModalMd('Instructions')"
|
||||
data="Click to view instructions"
|
||||
label="Instructions"
|
||||
icon="tuiIconChevronRightLarge"
|
||||
icon="@tui.chevron-right"
|
||||
class="item-pointer"
|
||||
></marketplace-additional-item>
|
||||
<!-- versions -->
|
||||
<ng-content></ng-content>
|
||||
<ng-content />
|
||||
<!-- links -->
|
||||
<marketplace-additional-link
|
||||
*ngIf="pkg.manifest.marketingSite"
|
||||
[url]="pkg.manifest.marketingSite"
|
||||
label="Marketing Site"
|
||||
icon="tuiIconExternalLinkLarge"
|
||||
icon="@tui.external-link"
|
||||
class="item-pointer"
|
||||
></marketplace-additional-link>
|
||||
<marketplace-additional-link
|
||||
*ngIf="pkg.manifest.upstreamRepo"
|
||||
[url]="pkg.manifest.upstreamRepo"
|
||||
label="Source Repository"
|
||||
icon="tuiIconExternalLinkLarge"
|
||||
icon="@tui.external-link"
|
||||
class="item-pointer"
|
||||
></marketplace-additional-link>
|
||||
<marketplace-additional-link
|
||||
*ngIf="pkg.manifest.wrapperRepo"
|
||||
[url]="pkg.manifest.wrapperRepo"
|
||||
label="Wrapper Repository"
|
||||
icon="tuiIconExternalLinkLarge"
|
||||
icon="@tui.external-link"
|
||||
class="item-pointer"
|
||||
></marketplace-additional-link>
|
||||
<marketplace-additional-link
|
||||
*ngIf="pkg.manifest.supportSite"
|
||||
[url]="pkg.manifest.supportSite"
|
||||
label="Support Site"
|
||||
icon="tuiIconExternalLinkLarge"
|
||||
icon="@tui.external-link"
|
||||
class="item-pointer"
|
||||
></marketplace-additional-link>
|
||||
</div>
|
||||
|
||||
@@ -6,7 +6,7 @@ import {
|
||||
} from '@angular/core'
|
||||
import { ActivatedRoute } from '@angular/router'
|
||||
import { TuiDialogService } from '@taiga-ui/core'
|
||||
import { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus'
|
||||
import { PolymorpheusComponent } from '@taiga-ui/polymorpheus'
|
||||
import { CopyService, MarkdownComponent } from '@start9labs/shared'
|
||||
import { MarketplacePkg } from '../../../types'
|
||||
import { AbstractMarketplaceService } from '../../../services/marketplace.service'
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
import { CommonModule } from '@angular/common'
|
||||
import { NgModule } from '@angular/core'
|
||||
import { AdditionalComponent } from './additional.component'
|
||||
import { TuiButtonModule, TuiLabelModule } from '@taiga-ui/core'
|
||||
import { TuiButton, TuiLabel, TuiTitle } from '@taiga-ui/core'
|
||||
import { MarketplaceAdditionalItemComponent } from './additional-item.component'
|
||||
import { MarketplaceAdditionalLinkComponent } from './additional-link.component'
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule,
|
||||
TuiButtonModule,
|
||||
TuiLabelModule,
|
||||
TuiButton,
|
||||
TuiLabel,
|
||||
MarketplaceAdditionalItemComponent,
|
||||
MarketplaceAdditionalLinkComponent,
|
||||
TuiTitle,
|
||||
],
|
||||
declarations: [AdditionalComponent],
|
||||
exports: [AdditionalComponent],
|
||||
|
||||
@@ -5,11 +5,11 @@ import {
|
||||
Input,
|
||||
inject,
|
||||
} from '@angular/core'
|
||||
import { EmverPipesModule } from '@start9labs/shared'
|
||||
import { Dependency, MarketplacePkg, StoreIdentity } from '../../../types'
|
||||
import { RouterModule } from '@angular/router'
|
||||
import { TuiAvatarModule, TuiLineClampModule } from '@taiga-ui/kit'
|
||||
import { TuiLetModule } from '@taiga-ui/cdk'
|
||||
import { EmverPipesModule } from '@start9labs/shared'
|
||||
import { TuiLet } from '@taiga-ui/cdk'
|
||||
import { TuiAvatar, TuiLineClamp } from '@taiga-ui/kit'
|
||||
import { Dependency, MarketplacePkg, StoreIdentity } from '../../../types'
|
||||
import { AbstractMarketplaceService } from '../../../services/marketplace.service'
|
||||
|
||||
@Component({
|
||||
@@ -18,15 +18,11 @@ import { AbstractMarketplaceService } from '../../../services/marketplace.servic
|
||||
<div class="outer-container" *tuiLet="marketplace$ | async as marketplace">
|
||||
<tui-avatar
|
||||
class="dep-img"
|
||||
[rounded]="true"
|
||||
[size]="'l'"
|
||||
[avatarUrl]="getImage(dep.key, marketplace)"
|
||||
></tui-avatar>
|
||||
size="l"
|
||||
[src]="getImage(dep.key, marketplace)"
|
||||
/>
|
||||
<div>
|
||||
<tui-line-clamp
|
||||
[linesLimit]="2"
|
||||
[content]="titleContent"
|
||||
></tui-line-clamp>
|
||||
<tui-line-clamp [linesLimit]="2" [content]="titleContent" />
|
||||
<ng-template #titleContent>
|
||||
<div class="title">
|
||||
<span>
|
||||
@@ -44,7 +40,7 @@ import { AbstractMarketplaceService } from '../../../services/marketplace.servic
|
||||
[linesLimit]="2"
|
||||
[content]="descContent"
|
||||
class="description"
|
||||
></tui-line-clamp>
|
||||
/>
|
||||
<ng-template #descContent>
|
||||
{{ dep.value.description }}
|
||||
</ng-template>
|
||||
@@ -107,10 +103,10 @@ import { AbstractMarketplaceService } from '../../../services/marketplace.servic
|
||||
imports: [
|
||||
CommonModule,
|
||||
RouterModule,
|
||||
TuiAvatarModule,
|
||||
TuiAvatar,
|
||||
EmverPipesModule,
|
||||
TuiLineClampModule,
|
||||
TuiLetModule,
|
||||
TuiLineClamp,
|
||||
TuiLet,
|
||||
],
|
||||
})
|
||||
export class MarketplaceDepItemComponent {
|
||||
|
||||
@@ -2,13 +2,13 @@ import { CommonModule } from '@angular/common'
|
||||
import {
|
||||
ChangeDetectionStrategy,
|
||||
Component,
|
||||
Input,
|
||||
inject,
|
||||
Input,
|
||||
} from '@angular/core'
|
||||
import { SharedPipesModule, TickerModule } from '@start9labs/shared'
|
||||
import { MarketplacePkg, StoreIdentity } from '../../../types'
|
||||
import { TuiLetModule } from '@taiga-ui/cdk'
|
||||
import { TuiLet } from '@taiga-ui/cdk'
|
||||
import { AbstractMarketplaceService } from '../../../services/marketplace.service'
|
||||
import { MarketplacePkg, StoreIdentity } from '../../../types'
|
||||
|
||||
@Component({
|
||||
selector: 'marketplace-package-hero',
|
||||
@@ -41,7 +41,7 @@ import { AbstractMarketplaceService } from '../../../services/marketplace.servic
|
||||
</p>
|
||||
</div>
|
||||
<!-- control buttons -->
|
||||
<ng-content></ng-content>
|
||||
<ng-content />
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
@@ -53,7 +53,7 @@ import { AbstractMarketplaceService } from '../../../services/marketplace.servic
|
||||
margin-top: 2.5rem;
|
||||
|
||||
@media (min-width: 768px) {
|
||||
margin-top: 0px;
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,8 +129,8 @@ import { AbstractMarketplaceService } from '../../../services/marketplace.servic
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: -50;
|
||||
border-radius: 1.5rem;
|
||||
|
||||
@@ -161,7 +161,7 @@ import { AbstractMarketplaceService } from '../../../services/marketplace.servic
|
||||
],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
standalone: true,
|
||||
imports: [CommonModule, SharedPipesModule, TickerModule, TuiLetModule],
|
||||
imports: [CommonModule, SharedPipesModule, TickerModule, TuiLet],
|
||||
})
|
||||
export class MarketplacePackageHeroComponent {
|
||||
@Input({ required: true })
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { TuiCarousel } from '@taiga-ui/kit'
|
||||
import { CommonModule } from '@angular/common'
|
||||
import {
|
||||
ChangeDetectionStrategy,
|
||||
@@ -6,14 +7,9 @@ import {
|
||||
Input,
|
||||
} from '@angular/core'
|
||||
import { TUI_IS_MOBILE } from '@taiga-ui/cdk'
|
||||
import {
|
||||
TuiButtonModule,
|
||||
TuiDialogContext,
|
||||
TuiDialogService,
|
||||
} from '@taiga-ui/core'
|
||||
import { TuiCarouselModule } from '@taiga-ui/kit'
|
||||
import { TuiDialogContext, TuiDialogService, TuiButton } from '@taiga-ui/core'
|
||||
import { MarketplacePkg } from '../../../types'
|
||||
import { PolymorpheusContent } from '@tinkoff/ng-polymorpheus'
|
||||
import { PolymorpheusContent } from '@taiga-ui/polymorpheus'
|
||||
|
||||
@Component({
|
||||
selector: 'marketplace-package-screenshots',
|
||||
@@ -22,7 +18,7 @@ import { PolymorpheusContent } from '@tinkoff/ng-polymorpheus'
|
||||
<button
|
||||
tuiIconButton
|
||||
appearance="flat"
|
||||
icon="tuiIconChevronLeftLarge"
|
||||
icon="@tui.chevron-left"
|
||||
title="Previous"
|
||||
type="button"
|
||||
(click)="carousel.prev()"
|
||||
@@ -61,7 +57,7 @@ import { PolymorpheusContent } from '@tinkoff/ng-polymorpheus'
|
||||
tuiIconButton
|
||||
appearance="flat"
|
||||
type="button"
|
||||
icon="tuiIconChevronRightLarge"
|
||||
icon="@tui.chevron-right"
|
||||
title="Next"
|
||||
(click)="carousel.next()"
|
||||
></button>
|
||||
@@ -125,7 +121,7 @@ import { PolymorpheusContent } from '@tinkoff/ng-polymorpheus'
|
||||
],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
standalone: true,
|
||||
imports: [CommonModule, TuiCarouselModule, TuiButtonModule],
|
||||
imports: [CommonModule, TuiCarousel, TuiButton],
|
||||
})
|
||||
export class MarketplacePackageScreenshotComponent {
|
||||
private readonly dialogs = inject(TuiDialogService)
|
||||
|
||||
@@ -5,10 +5,7 @@ import { ApiService } from 'src/app/services/api.service'
|
||||
|
||||
@Component({
|
||||
selector: 'app-root',
|
||||
template: `
|
||||
<tui-theme-night></tui-theme-night>
|
||||
<tui-root tuiMode="onDark"><router-outlet /></tui-root>
|
||||
`,
|
||||
template: '<tui-root tuiTheme="dark"><router-outlet /></tui-root>',
|
||||
})
|
||||
export class AppComponent {
|
||||
private readonly api = inject(ApiService)
|
||||
|
||||
@@ -3,20 +3,13 @@ import { NgModule } from '@angular/core'
|
||||
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'
|
||||
import { PreloadAllModules, RouterModule } from '@angular/router'
|
||||
import {
|
||||
LoadingModule,
|
||||
provideSetupLogsService,
|
||||
provideSetupService,
|
||||
RELATIVE_URL,
|
||||
WorkspaceConfig,
|
||||
} from '@start9labs/shared'
|
||||
import {
|
||||
TuiAlertModule,
|
||||
TuiDialogModule,
|
||||
TuiModeModule,
|
||||
TuiRootModule,
|
||||
TuiThemeNightModule,
|
||||
} from '@taiga-ui/core'
|
||||
import { tuiButtonOptionsProvider } from '@taiga-ui/experimental'
|
||||
import { tuiButtonOptionsProvider, TuiRoot } from '@taiga-ui/core'
|
||||
import { NG_EVENT_PLUGINS } from '@taiga-ui/event-plugins'
|
||||
import { ApiService } from 'src/app/services/api.service'
|
||||
import { LiveApiService } from 'src/app/services/live-api.service'
|
||||
import { MockApiService } from 'src/app/services/mock-api.service'
|
||||
@@ -37,14 +30,10 @@ const {
|
||||
preloadingStrategy: PreloadAllModules,
|
||||
initialNavigation: 'disabled',
|
||||
}),
|
||||
LoadingModule,
|
||||
TuiRootModule,
|
||||
TuiDialogModule,
|
||||
TuiAlertModule,
|
||||
TuiModeModule,
|
||||
TuiThemeNightModule,
|
||||
TuiRoot,
|
||||
],
|
||||
providers: [
|
||||
NG_EVENT_PLUGINS,
|
||||
provideSetupService(ApiService),
|
||||
provideSetupLogsService(ApiService),
|
||||
tuiButtonOptionsProvider({ size: 'm' }),
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { TuiInputModule, TuiInputPasswordModule } from '@taiga-ui/legacy'
|
||||
import { CommonModule } from '@angular/common'
|
||||
import { Component, inject, Inject } from '@angular/core'
|
||||
import {
|
||||
@@ -9,18 +10,13 @@ import {
|
||||
} from '@angular/forms'
|
||||
import { LoadingService, StartOSDiskInfo } from '@start9labs/shared'
|
||||
import {
|
||||
TuiButtonModule,
|
||||
TuiDialogContext,
|
||||
TuiDialogService,
|
||||
TuiErrorModule,
|
||||
TuiError,
|
||||
TuiButton,
|
||||
} from '@taiga-ui/core'
|
||||
import {
|
||||
TUI_VALIDATION_ERRORS,
|
||||
TuiFieldErrorPipeModule,
|
||||
TuiInputModule,
|
||||
TuiInputPasswordModule,
|
||||
} from '@taiga-ui/kit'
|
||||
import { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus'
|
||||
import { TUI_VALIDATION_ERRORS, TuiFieldErrorPipe } from '@taiga-ui/kit'
|
||||
import { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus'
|
||||
import { PASSWORD } from 'src/app/components/password.component'
|
||||
import {
|
||||
ApiService,
|
||||
@@ -40,7 +36,7 @@ interface Context {
|
||||
<tui-input formControlName="hostname">
|
||||
Hostname
|
||||
<input
|
||||
tuiTextfield
|
||||
tuiTextfieldLegacy
|
||||
placeholder="'My Computer' OR 'my-computer.local'"
|
||||
/>
|
||||
</tui-input>
|
||||
@@ -51,7 +47,7 @@ interface Context {
|
||||
|
||||
<tui-input formControlName="path" class="input">
|
||||
Path
|
||||
<input tuiTextfield placeholder="/Desktop/my-folder'" />
|
||||
<input tuiTextfieldLegacy placeholder="/Desktop/my-folder'" />
|
||||
</tui-input>
|
||||
<tui-error
|
||||
formControlName="path"
|
||||
@@ -60,7 +56,7 @@ interface Context {
|
||||
|
||||
<tui-input formControlName="username" class="input">
|
||||
Username
|
||||
<input tuiTextfield placeholder="Enter username" />
|
||||
<input tuiTextfieldLegacy placeholder="Enter username" />
|
||||
</tui-input>
|
||||
<tui-error
|
||||
formControlName="username"
|
||||
@@ -92,11 +88,11 @@ interface Context {
|
||||
CommonModule,
|
||||
FormsModule,
|
||||
ReactiveFormsModule,
|
||||
TuiButtonModule,
|
||||
TuiButton,
|
||||
TuiInputModule,
|
||||
TuiInputPasswordModule,
|
||||
TuiErrorModule,
|
||||
TuiFieldErrorPipeModule,
|
||||
TuiError,
|
||||
TuiFieldErrorPipe,
|
||||
],
|
||||
providers: [
|
||||
{
|
||||
|
||||
@@ -1,17 +1,13 @@
|
||||
import { TuiInputPasswordModule } from '@taiga-ui/legacy'
|
||||
import { Component, inject } from '@angular/core'
|
||||
import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms'
|
||||
import * as argon2 from '@start9labs/argon2'
|
||||
import { ErrorService } from '@start9labs/shared'
|
||||
import {
|
||||
TuiButtonModule,
|
||||
TuiDialogContext,
|
||||
TuiErrorModule,
|
||||
} from '@taiga-ui/core'
|
||||
import { TuiInputPasswordModule } from '@taiga-ui/kit'
|
||||
import { TuiDialogContext, TuiError, TuiButton } from '@taiga-ui/core'
|
||||
import {
|
||||
POLYMORPHEUS_CONTEXT,
|
||||
PolymorpheusComponent,
|
||||
} from '@tinkoff/ng-polymorpheus'
|
||||
} from '@taiga-ui/polymorpheus'
|
||||
import {
|
||||
CifsBackupTarget,
|
||||
DiskBackupTarget,
|
||||
@@ -35,13 +31,13 @@ interface DialogData {
|
||||
<form [style.margin-top.rem]="1" (ngSubmit)="submit()">
|
||||
<tui-input-password [formControl]="password">
|
||||
Enter Password
|
||||
<input tuiTextfield maxlength="64" />
|
||||
<input tuiTextfieldLegacy maxlength="64" />
|
||||
</tui-input-password>
|
||||
<tui-error [error]="passwordError"></tui-error>
|
||||
@if (storageDrive) {
|
||||
<tui-input-password [style.margin-top.rem]="1" [formControl]="confirm">
|
||||
Retype Password
|
||||
<input tuiTextfield maxlength="64" />
|
||||
<input tuiTextfieldLegacy maxlength="64" />
|
||||
</tui-input-password>
|
||||
<tui-error [error]="confirmError"></tui-error>
|
||||
}
|
||||
@@ -67,9 +63,9 @@ interface DialogData {
|
||||
imports: [
|
||||
FormsModule,
|
||||
ReactiveFormsModule,
|
||||
TuiButtonModule,
|
||||
TuiButton,
|
||||
TuiInputPasswordModule,
|
||||
TuiErrorModule,
|
||||
TuiError,
|
||||
],
|
||||
})
|
||||
export class PasswordComponent {
|
||||
|
||||
@@ -1,17 +1,14 @@
|
||||
import { TuiCell } from '@taiga-ui/layout'
|
||||
import { TuiIcon, TuiTitle } from '@taiga-ui/core'
|
||||
import { Component, Input } from '@angular/core'
|
||||
import { RouterModule } from '@angular/router'
|
||||
import {
|
||||
TuiCellModule,
|
||||
TuiIconModule,
|
||||
TuiTitleModule,
|
||||
} from '@taiga-ui/experimental'
|
||||
|
||||
@Component({
|
||||
standalone: true,
|
||||
selector: 'app-recover',
|
||||
template: `
|
||||
<a tuiCell [routerLink]="disabled ? null : '/attach'">
|
||||
<tui-icon icon="tuiIconBoxLarge" />
|
||||
<tui-icon icon="@tui.box" />
|
||||
<span tuiTitle>
|
||||
<span class="g-success">Use Existing Drive</span>
|
||||
<span tuiSubtitle>
|
||||
@@ -20,7 +17,7 @@ import {
|
||||
</span>
|
||||
</a>
|
||||
<a tuiCell [routerLink]="disabled ? null : '/transfer'">
|
||||
<tui-icon icon="tuiIconShareLarge" />
|
||||
<tui-icon icon="@tui.share" />
|
||||
<span tuiTitle>
|
||||
<span class="g-info">Transfer</span>
|
||||
<span tuiSubtitle>
|
||||
@@ -30,14 +27,14 @@ import {
|
||||
</span>
|
||||
</a>
|
||||
<a tuiCell [routerLink]="disabled ? null : '/recover'">
|
||||
<tui-icon icon="tuiIconSave" />
|
||||
<tui-icon icon="@tui.save" />
|
||||
<span tuiTitle>
|
||||
<span class="g-warning">Restore From Backup (Disaster Recovery)</span>
|
||||
<span tuiSubtitle>Restore StartOS data from an encrypted backup</span>
|
||||
</span>
|
||||
</a>
|
||||
`,
|
||||
imports: [RouterModule, TuiIconModule, TuiCellModule, TuiTitleModule],
|
||||
imports: [RouterModule, TuiIcon, TuiCell, TuiTitle],
|
||||
})
|
||||
export class RecoverComponent {
|
||||
@Input() disabled = false
|
||||
|
||||
@@ -7,12 +7,8 @@ import {
|
||||
LoadingService,
|
||||
toGuid,
|
||||
} from '@start9labs/shared'
|
||||
import { TuiDialogService, TuiLoaderModule } from '@taiga-ui/core'
|
||||
import {
|
||||
TuiButtonModule,
|
||||
TuiCardModule,
|
||||
TuiCellModule,
|
||||
} from '@taiga-ui/experimental'
|
||||
import { TuiButton, TuiDialogService, TuiLoader } from '@taiga-ui/core'
|
||||
import { TuiCardLarge, TuiCell } from '@taiga-ui/layout'
|
||||
import { PASSWORD } from 'src/app/components/password.component'
|
||||
import { ApiService } from 'src/app/services/api.service'
|
||||
import { StateService } from 'src/app/services/state.service'
|
||||
@@ -34,19 +30,13 @@ import { StateService } from 'src/app/services/state.service'
|
||||
valid StartOS data drive (not a backup) and is firmly connected, then
|
||||
refresh the page.
|
||||
}
|
||||
<button tuiButton iconLeft="tuiIconRotateCwLarge" (click)="refresh()">
|
||||
<button tuiButton iconStart="@tui.rotate-cw" (click)="refresh()">
|
||||
Refresh
|
||||
</button>
|
||||
}
|
||||
</section>
|
||||
`,
|
||||
imports: [
|
||||
TuiButtonModule,
|
||||
TuiCardModule,
|
||||
TuiCellModule,
|
||||
TuiLoaderModule,
|
||||
DriveComponent,
|
||||
],
|
||||
imports: [TuiButton, TuiCardLarge, TuiCell, TuiLoader, DriveComponent],
|
||||
})
|
||||
export default class AttachPage {
|
||||
private readonly apiService = inject(ApiService)
|
||||
|
||||
@@ -2,14 +2,8 @@ import { CommonModule } from '@angular/common'
|
||||
import { Component, inject, OnInit } from '@angular/core'
|
||||
import { RouterModule } from '@angular/router'
|
||||
import { ErrorService } from '@start9labs/shared'
|
||||
import {
|
||||
TuiButtonModule,
|
||||
TuiCardModule,
|
||||
TuiCellModule,
|
||||
TuiIconModule,
|
||||
TuiIconsModule,
|
||||
TuiTitleModule,
|
||||
} from '@taiga-ui/experimental'
|
||||
import { TuiButton, TuiIcon, TuiTitle } from '@taiga-ui/core'
|
||||
import { TuiCardLarge, TuiCell } from '@taiga-ui/layout'
|
||||
import { RecoverComponent } from 'src/app/components/recover.component'
|
||||
import { ApiService } from 'src/app/services/api.service'
|
||||
import { StateService } from 'src/app/services/state.service'
|
||||
@@ -26,7 +20,7 @@ import { StateService } from 'src/app/services/state.service'
|
||||
tuiIconButton
|
||||
appearance="flat"
|
||||
class="back"
|
||||
iconLeft="tuiIconChevronLeft"
|
||||
iconStart="@tui.chevron-left"
|
||||
(click)="recover = false"
|
||||
>
|
||||
Back
|
||||
@@ -37,7 +31,7 @@ import { StateService } from 'src/app/services/state.service'
|
||||
<div class="pages">
|
||||
<div class="options" [class.options_recover]="recover">
|
||||
<a tuiCell [routerLink]="error || recover ? null : '/storage'">
|
||||
<tui-icon icon="tuiIconPlus" />
|
||||
<tui-icon icon="@tui.plus" />
|
||||
<span tuiTitle>
|
||||
<span class="g-success">Start Fresh</span>
|
||||
<span tuiSubtitle>
|
||||
@@ -50,7 +44,7 @@ import { StateService } from 'src/app/services/state.service'
|
||||
[disabled]="error || recover"
|
||||
(click)="recover = true"
|
||||
>
|
||||
<tui-icon icon="tuiIconRotateCw" />
|
||||
<tui-icon icon="@tui.rotate-cw" />
|
||||
<span tuiTitle>
|
||||
<span class="g-warning">Recover</span>
|
||||
<span tuiSubtitle>
|
||||
@@ -111,12 +105,11 @@ import { StateService } from 'src/app/services/state.service'
|
||||
imports: [
|
||||
CommonModule,
|
||||
RouterModule,
|
||||
TuiCardModule,
|
||||
TuiButtonModule,
|
||||
TuiIconsModule,
|
||||
TuiCellModule,
|
||||
TuiIconModule,
|
||||
TuiTitleModule,
|
||||
TuiCardLarge,
|
||||
TuiButton,
|
||||
TuiCell,
|
||||
TuiIcon,
|
||||
TuiTitle,
|
||||
RecoverComponent,
|
||||
],
|
||||
})
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
import { Component, inject } from '@angular/core'
|
||||
import { Router } from '@angular/router'
|
||||
import { DriveComponent, ErrorService } from '@start9labs/shared'
|
||||
import { TuiDialogService, TuiLoaderModule } from '@taiga-ui/core'
|
||||
import {
|
||||
TuiButtonModule,
|
||||
TuiCardModule,
|
||||
TuiCellModule,
|
||||
TuiIconModule,
|
||||
TuiTitleModule,
|
||||
} from '@taiga-ui/experimental'
|
||||
import { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus'
|
||||
TuiButton,
|
||||
TuiDialogService,
|
||||
TuiIcon,
|
||||
TuiLoader,
|
||||
TuiTitle,
|
||||
} from '@taiga-ui/core'
|
||||
import { TuiCardLarge, TuiCell } from '@taiga-ui/layout'
|
||||
import { PolymorpheusComponent } from '@taiga-ui/polymorpheus'
|
||||
import { filter } from 'rxjs'
|
||||
import { CifsComponent } from 'src/app/components/cifs.component'
|
||||
import { PASSWORD } from 'src/app/components/password.component'
|
||||
@@ -33,7 +33,7 @@ import { StateService } from 'src/app/services/state.service'
|
||||
to the same network as your server.
|
||||
|
||||
<button tuiCell (click)="onCifs()">
|
||||
<tui-icon icon="tuiIconFolder" />
|
||||
<tui-icon icon="@tui.folder" />
|
||||
<span tuiTitle>Open</span>
|
||||
</button>
|
||||
|
||||
@@ -51,29 +51,29 @@ import { StateService } from 'src/app/services/state.service'
|
||||
<button tuiCell [drive]="d" [disabled]="empty(d)" (click)="select(d)">
|
||||
<span tuiSubtitle>
|
||||
@if (empty(d)) {
|
||||
<tui-icon icon="tuiIconCloudOff" class="g-error" />
|
||||
<tui-icon icon="@tui.cloud-off" class="g-error" />
|
||||
<strong>No StartOS backup</strong>
|
||||
} @else {
|
||||
<tui-icon icon="tuiIconCloud" class="g-success" />
|
||||
<tui-icon icon="@tui.cloud" class="g-success" />
|
||||
<strong>StartOS backup detected</strong>
|
||||
}
|
||||
</span>
|
||||
</button>
|
||||
}
|
||||
|
||||
<button tuiButton iconLeft="tuiIconRotateCwLarge" (click)="refresh()">
|
||||
<button tuiButton iconStart="@tui.rotate-cw" (click)="refresh()">
|
||||
Refresh
|
||||
</button>
|
||||
}
|
||||
</section>
|
||||
`,
|
||||
imports: [
|
||||
TuiCardModule,
|
||||
TuiLoaderModule,
|
||||
TuiButtonModule,
|
||||
TuiCellModule,
|
||||
TuiIconModule,
|
||||
TuiTitleModule,
|
||||
TuiCardLarge,
|
||||
TuiLoader,
|
||||
TuiButton,
|
||||
TuiCell,
|
||||
TuiIcon,
|
||||
TuiTitle,
|
||||
DriveComponent,
|
||||
],
|
||||
})
|
||||
|
||||
@@ -7,13 +7,9 @@ import {
|
||||
LoadingService,
|
||||
toGuid,
|
||||
} from '@start9labs/shared'
|
||||
import { TuiDialogService, TuiLoaderModule } from '@taiga-ui/core'
|
||||
import {
|
||||
TuiButtonModule,
|
||||
TuiCardModule,
|
||||
TuiCellModule,
|
||||
} from '@taiga-ui/experimental'
|
||||
import { TUI_PROMPT } from '@taiga-ui/kit'
|
||||
import { TuiButton, TuiDialogService, TuiLoader } from '@taiga-ui/core'
|
||||
import { TUI_CONFIRM } from '@taiga-ui/kit'
|
||||
import { TuiCardLarge, TuiCell } from '@taiga-ui/layout'
|
||||
import { filter, of, switchMap } from 'rxjs'
|
||||
import { PASSWORD } from 'src/app/components/password.component'
|
||||
import {
|
||||
@@ -48,18 +44,12 @@ import { StateService } from 'src/app/services/state.service'
|
||||
</button>
|
||||
}
|
||||
|
||||
<button tuiButton iconLeft="tuiIconRotateCwLarge" (click)="getDrives()">
|
||||
<button tuiButton iconStart="@tui.rotate-cw" (click)="getDrives()">
|
||||
Refresh
|
||||
</button>
|
||||
</section>
|
||||
`,
|
||||
imports: [
|
||||
TuiCardModule,
|
||||
TuiLoaderModule,
|
||||
TuiCellModule,
|
||||
TuiButtonModule,
|
||||
DriveComponent,
|
||||
],
|
||||
imports: [TuiCardLarge, TuiLoader, TuiCell, TuiButton, DriveComponent],
|
||||
})
|
||||
export default class StoragePage {
|
||||
private readonly api = inject(ApiService)
|
||||
@@ -125,7 +115,7 @@ export default class StoragePage {
|
||||
switchMap(unused =>
|
||||
unused
|
||||
? of(true)
|
||||
: this.dialogs.open(TUI_PROMPT, {
|
||||
: this.dialogs.open(TUI_CONFIRM, {
|
||||
label: 'Warning',
|
||||
size: 's',
|
||||
data: {
|
||||
|
||||
@@ -7,12 +7,8 @@ import {
|
||||
ViewChild,
|
||||
} from '@angular/core'
|
||||
import { DownloadHTMLService, ErrorService } from '@start9labs/shared'
|
||||
import {
|
||||
TuiButtonModule,
|
||||
TuiCardModule,
|
||||
TuiIconModule,
|
||||
TuiSurfaceModule,
|
||||
} from '@taiga-ui/experimental'
|
||||
import { TuiButton, TuiIcon, TuiSurface } from '@taiga-ui/core'
|
||||
import { TuiCardLarge } from '@taiga-ui/layout'
|
||||
import { DocumentationComponent } from 'src/app/components/documentation.component'
|
||||
import { MatrixComponent } from 'src/app/components/matrix.component'
|
||||
import { ApiService } from 'src/app/services/api.service'
|
||||
@@ -25,17 +21,17 @@ import { StateService } from 'src/app/services/state.service'
|
||||
@if (isKiosk) {
|
||||
<section tuiCardLarge>
|
||||
<h1 class="heading">
|
||||
<tui-icon icon="tuiIconCheckSquare" class="g-success" />
|
||||
<tui-icon icon="@tui.check-square" class="g-success" />
|
||||
Setup Complete!
|
||||
</h1>
|
||||
<button tuiButton (click)="exitKiosk()" iconRight="tuiIconLogInLarge">
|
||||
<button tuiButton (click)="exitKiosk()" iconEnd="@tui.log-in">
|
||||
Continue to Login
|
||||
</button>
|
||||
</section>
|
||||
} @else if (lanAddress) {
|
||||
<section tuiCardLarge>
|
||||
<h1 class="heading">
|
||||
<tui-icon icon="tuiIconCheckSquare" class="g-success" />
|
||||
<tui-icon icon="@tui.check-square" class="g-success" />
|
||||
Setup Complete!
|
||||
</h1>
|
||||
@if (stateService.setupType === 'restore') {
|
||||
@@ -51,7 +47,7 @@ import { StateService } from 'src/app/services/state.service'
|
||||
</span>
|
||||
<strong class="caps">
|
||||
Download
|
||||
<tui-icon icon="tuiIconDownload" />
|
||||
<tui-icon icon="@tui.download" />
|
||||
</strong>
|
||||
</button>
|
||||
|
||||
@@ -68,7 +64,7 @@ import { StateService } from 'src/app/services/state.service'
|
||||
</span>
|
||||
<strong class="caps">
|
||||
Open
|
||||
<tui-icon icon="tuiIconExternalLink" />
|
||||
<tui-icon icon="@tui.external-link" />
|
||||
</strong>
|
||||
</a>
|
||||
<app-documentation hidden [lanAddress]="lanAddress" />
|
||||
@@ -93,7 +89,7 @@ import { StateService } from 'src/app/services/state.service'
|
||||
}
|
||||
|
||||
[tuiCardLarge] {
|
||||
color: var(--tui-text-01);
|
||||
color: var(--tui-text-primary);
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
}
|
||||
@@ -104,10 +100,10 @@ import { StateService } from 'src/app/services/state.service'
|
||||
}
|
||||
`,
|
||||
imports: [
|
||||
TuiCardModule,
|
||||
TuiIconModule,
|
||||
TuiButtonModule,
|
||||
TuiSurfaceModule,
|
||||
TuiCardLarge,
|
||||
TuiIcon,
|
||||
TuiButton,
|
||||
TuiSurface,
|
||||
MatrixComponent,
|
||||
DocumentationComponent,
|
||||
],
|
||||
|
||||
@@ -7,16 +7,13 @@ import {
|
||||
toGuid,
|
||||
} from '@start9labs/shared'
|
||||
import {
|
||||
TuiButton,
|
||||
TuiDialogOptions,
|
||||
TuiDialogService,
|
||||
TuiLoaderModule,
|
||||
TuiLoader,
|
||||
} from '@taiga-ui/core'
|
||||
import {
|
||||
TuiButtonModule,
|
||||
TuiCardModule,
|
||||
TuiCellModule,
|
||||
} from '@taiga-ui/experimental'
|
||||
import { TUI_PROMPT, TuiPromptData } from '@taiga-ui/kit'
|
||||
import { TUI_CONFIRM, TuiConfirmData } from '@taiga-ui/kit'
|
||||
import { TuiCardLarge, TuiCell } from '@taiga-ui/layout'
|
||||
import { filter } from 'rxjs'
|
||||
import { ApiService } from 'src/app/services/api.service'
|
||||
import { StateService } from 'src/app/services/state.service'
|
||||
@@ -33,18 +30,12 @@ import { StateService } from 'src/app/services/state.service'
|
||||
@for (drive of drives; track drive) {
|
||||
<button tuiCell [drive]="drive" (click)="select(drive)"></button>
|
||||
}
|
||||
<button tuiButton iconLeft="tuiIconRotateCwLarge" (click)="refresh()">
|
||||
<button tuiButton iconStart="@tui.rotate-cw" (click)="refresh()">
|
||||
Refresh
|
||||
</button>
|
||||
</section>
|
||||
`,
|
||||
imports: [
|
||||
TuiCardModule,
|
||||
TuiCellModule,
|
||||
TuiButtonModule,
|
||||
TuiLoaderModule,
|
||||
DriveComponent,
|
||||
],
|
||||
imports: [TuiCardLarge, TuiCell, TuiButton, TuiLoader, DriveComponent],
|
||||
})
|
||||
export default class TransferPage {
|
||||
private readonly apiService = inject(ApiService)
|
||||
@@ -81,7 +72,7 @@ export default class TransferPage {
|
||||
|
||||
select(drive: DiskInfo) {
|
||||
this.dialogs
|
||||
.open(TUI_PROMPT, OPTIONS)
|
||||
.open(TUI_CONFIRM, OPTIONS)
|
||||
.pipe(filter(Boolean))
|
||||
.subscribe(() => {
|
||||
this.stateService.recoverySource = {
|
||||
@@ -93,7 +84,7 @@ export default class TransferPage {
|
||||
}
|
||||
}
|
||||
|
||||
const OPTIONS: Partial<TuiDialogOptions<TuiPromptData>> = {
|
||||
const OPTIONS: Partial<TuiDialogOptions<TuiConfirmData>> = {
|
||||
label: 'Warning',
|
||||
size: 's',
|
||||
data: {
|
||||
|
||||
@@ -24,7 +24,7 @@ router-outlet + * {
|
||||
|
||||
[tuiCardLarge] {
|
||||
width: 100%;
|
||||
background: var(--tui-base-02);
|
||||
background: var(--tui-background-base-alt);
|
||||
margin: auto;
|
||||
}
|
||||
}
|
||||
@@ -43,7 +43,7 @@ header {
|
||||
|
||||
p {
|
||||
font: var(--tui-font-text-m);
|
||||
color: var(--tui-text-02);
|
||||
color: var(--tui-text-secondary);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,17 +53,17 @@ h2 {
|
||||
}
|
||||
|
||||
.g-success {
|
||||
color: var(--tui-success-fill);
|
||||
color: var(--tui-status-positive);
|
||||
}
|
||||
|
||||
.g-warning {
|
||||
color: var(--tui-warning-fill);
|
||||
color: var(--tui-status-warning);
|
||||
}
|
||||
|
||||
.g-error {
|
||||
color: var(--tui-error-fill);
|
||||
color: var(--tui-status-negative);
|
||||
}
|
||||
|
||||
.g-info {
|
||||
color: var(--tui-info-fill);
|
||||
color: var(--tui-status-info);
|
||||
}
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="ionicon" viewBox="0 0 512 512"><path d="M410.47 279.2c-5-11.5-12.7-21.6-28.1-30.1a98.15 98.15 0 00-25.4-10 62.22 62.22 0 0016.3-11 56.37 56.37 0 0015.6-23.3 77.11 77.11 0 003.5-28.2c-1.1-16.8-4.4-33.1-13.2-44.8s-21.2-20.7-37.6-27c-12.6-4.8-25.5-7.8-45.5-8.9V32h-40v64h-32V32h-41v64H96v48h27.87c8.7 0 14.6.8 17.6 2.3a13.22 13.22 0 016.5 6c1.3 2.5 1.9 8.4 1.9 17.5V343c0 9-.6 14.8-1.9 17.4s-2 4.9-5.1 6.3-3.2 1.3-11.8 1.3h-26.4L96 416h87v64h41v-64h32v64h40v-64.4c26-1.3 44.5-4.7 59.4-10.3 19.3-7.2 34.1-17.7 44.7-31.5s14-34.9 14.93-51.2c.67-14.5-.03-33.2-4.56-43.4zM224 150h32v74h-32zm0 212v-90h32v90zm72-208.1c6 2.5 9.9 7.5 13.8 12.7 4.3 5.7 6.5 13.3 6.5 21.4 0 7.8-2.9 14.5-7.5 20.5-3.8 4.9-6.8 8.3-12.8 11.1zm28.8 186.7c-7.8 6.9-12.3 10.1-22.1 13.8a56.06 56.06 0 01-6.7 1.9v-82.8a40.74 40.74 0 0111.3 3.4c7.8 3.3 15.2 6.9 19.8 13.2a43.82 43.82 0 018 24.7c-.03 10.9-2.83 19.2-10.33 25.8z"/></svg>
|
||||
|
Before Width: | Height: | Size: 943 B |
@@ -1,25 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" focusable="false" height="1em" width="1em">
|
||||
<g id="tuiIconCheckCircle" xmlns="http://www.w3.org/2000/svg">
|
||||
<svg x="50%" y="50%" fill="none" height="1em" overflow="visible" viewBox="0 0 16 16" width="1em">
|
||||
<svg
|
||||
x="-8"
|
||||
y="-8"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path
|
||||
vector-effect="non-scaling-stroke"
|
||||
d="M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z"
|
||||
/>
|
||||
<path vector-effect="non-scaling-stroke" d="M15.5 9.5l-4.5 5-2.5-2.273" />
|
||||
</svg>
|
||||
</svg>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 988 B |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="ionicon" viewBox="0 0 512 512"><path d="M461.81 53.81a4.4 4.4 0 00-3.3-3.39c-54.38-13.3-180 34.09-248.13 102.17a294.9 294.9 0 00-33.09 39.08c-21-1.9-42-.3-59.88 7.5-50.49 22.2-65.18 80.18-69.28 105.07a9 9 0 009.8 10.4l81.07-8.9a180.29 180.29 0 001.1 18.3 18.15 18.15 0 005.3 11.09l31.39 31.39a18.15 18.15 0 0011.1 5.3 179.91 179.91 0 0018.19 1.1l-8.89 81a9 9 0 0010.39 9.79c24.9-4 83-18.69 105.07-69.17 7.8-17.9 9.4-38.79 7.6-59.69a293.91 293.91 0 0039.19-33.09c68.38-68 115.47-190.86 102.37-247.95zM298.66 213.67a42.7 42.7 0 1160.38 0 42.65 42.65 0 01-60.38 0z" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/><path d="M109.64 352a45.06 45.06 0 00-26.35 12.84C65.67 382.52 64 448 64 448s65.52-1.67 83.15-19.31A44.73 44.73 0 00160 402.32" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"/></svg>
|
||||
|
Before Width: | Height: | Size: 944 B |
@@ -5,12 +5,12 @@
|
||||
"@angular/common": "^17.0.6",
|
||||
"@angular/core": "^17.0.6",
|
||||
"@angular/router": "^17.0.6",
|
||||
"@ng-web-apis/mutation-observer": ">=2.0.0",
|
||||
"@ng-web-apis/resize-observer": ">=2.0.0",
|
||||
"@ng-web-apis/mutation-observer": ">=4.0.0",
|
||||
"@ng-web-apis/resize-observer": ">=4.0.0",
|
||||
"@start9labs/emver": "^0.1.5",
|
||||
"@taiga-ui/cdk": ">=3.0.0",
|
||||
"@taiga-ui/core": ">=3.0.0",
|
||||
"@taiga-ui/experimental": ">=3.0.0",
|
||||
"@taiga-ui/cdk": "4.0.0-rc.5",
|
||||
"@taiga-ui/core": "4.0.0-rc.5",
|
||||
"@taiga-ui/experimental": "4.0.0-rc.5",
|
||||
"@tinkoff/ng-dompurify": ">=4.0.0",
|
||||
"ansi-to-html": "^0.7.2"
|
||||
},
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import { TuiIcon, TuiTitle } from '@taiga-ui/core'
|
||||
import { Component, Input } from '@angular/core'
|
||||
import { TuiIconModule, TuiTitleModule } from '@taiga-ui/experimental'
|
||||
import { UnitConversionPipesModule } from '../pipes/unit-conversion/unit-conversion.module'
|
||||
|
||||
@Component({
|
||||
standalone: true,
|
||||
selector: 'button[drive]',
|
||||
template: `
|
||||
<tui-icon icon="tuiIconSave" />
|
||||
<tui-icon icon="@tui.save" />
|
||||
<span tuiTitle>
|
||||
<strong>{{ drive.logicalname }}</strong>
|
||||
<span tuiSubtitle>
|
||||
@@ -17,7 +17,7 @@ import { UnitConversionPipesModule } from '../pipes/unit-conversion/unit-convers
|
||||
<ng-content />
|
||||
</span>
|
||||
`,
|
||||
imports: [TuiIconModule, TuiTitleModule, UnitConversionPipesModule],
|
||||
imports: [TuiIcon, TuiTitle, UnitConversionPipesModule],
|
||||
})
|
||||
export class DriveComponent {
|
||||
@Input() drive!: {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { TuiLet } from '@taiga-ui/cdk'
|
||||
import { CommonModule } from '@angular/common'
|
||||
import {
|
||||
ChangeDetectionStrategy,
|
||||
@@ -6,8 +7,7 @@ import {
|
||||
Input,
|
||||
Output,
|
||||
} from '@angular/core'
|
||||
import { TuiLetModule } from '@taiga-ui/cdk'
|
||||
import { TuiProgressModule } from '@taiga-ui/kit'
|
||||
import { TuiProgress } from '@taiga-ui/kit'
|
||||
import { delay, filter } from 'rxjs'
|
||||
import { LogsWindowComponent } from './logs-window.component'
|
||||
import { SetupService } from '../../services/setup.service'
|
||||
@@ -44,7 +44,7 @@ import { SetupService } from '../../services/setup.service'
|
||||
/* TODO: Theme */
|
||||
background: #e0e0e0;
|
||||
color: #333;
|
||||
--tui-clear-inverse: rgba(0, 0, 0, 0.1);
|
||||
--tui-background-neutral-1: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
logs-window {
|
||||
@@ -60,7 +60,7 @@ import { SetupService } from '../../services/setup.service'
|
||||
background: #181818;
|
||||
}
|
||||
`,
|
||||
imports: [CommonModule, LogsWindowComponent, TuiLetModule, TuiProgressModule],
|
||||
imports: [CommonModule, LogsWindowComponent, TuiLet, TuiProgress],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
})
|
||||
export class InitializingComponent {
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import { TuiScrollbar } from '@taiga-ui/core'
|
||||
import { AsyncPipe } from '@angular/common'
|
||||
import { Component, ElementRef, inject } from '@angular/core'
|
||||
import {
|
||||
IntersectionObserverModule,
|
||||
WaIntersectionObserver,
|
||||
INTERSECTION_ROOT,
|
||||
} from '@ng-web-apis/intersection-observer'
|
||||
import { MutationObserverModule } from '@ng-web-apis/mutation-observer'
|
||||
import { TuiScrollbarModule } from '@taiga-ui/core'
|
||||
import { WaMutationObserver } from '@ng-web-apis/mutation-observer'
|
||||
import { NgDompurifyModule } from '@tinkoff/ng-dompurify'
|
||||
import { SetupLogsService } from '../../services/setup-logs.service'
|
||||
|
||||
@@ -27,10 +27,10 @@ import { SetupLogsService } from '../../services/setup-logs.service'
|
||||
`,
|
||||
imports: [
|
||||
AsyncPipe,
|
||||
MutationObserverModule,
|
||||
IntersectionObserverModule,
|
||||
WaMutationObserver,
|
||||
WaIntersectionObserver,
|
||||
NgDompurifyModule,
|
||||
TuiScrollbarModule,
|
||||
TuiScrollbar,
|
||||
],
|
||||
providers: [
|
||||
{
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
@import '@taiga-ui/core/styles/taiga-ui-local';
|
||||
|
||||
:host {
|
||||
@include shadow(3);
|
||||
|
||||
display: flex;
|
||||
align-items: center;
|
||||
max-width: 80%;
|
||||
margin: auto;
|
||||
padding: 1.5rem;
|
||||
background: var(--tui-elevation-01);
|
||||
background: var(--tui-background-elevation-1);
|
||||
border-radius: var(--tui-radius-m);
|
||||
box-shadow: var(--tui-shadow-popup);
|
||||
|
||||
--tui-primary: var(--tui-warning-fill);
|
||||
--tui-background-accent-1: var(--tui-status-warning);
|
||||
}
|
||||
|
||||
tui-loader {
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
import { ChangeDetectionStrategy, Component, inject } from '@angular/core'
|
||||
import { TuiLoader } from '@taiga-ui/core'
|
||||
import {
|
||||
POLYMORPHEUS_CONTEXT,
|
||||
PolymorpheusContent,
|
||||
} from '@tinkoff/ng-polymorpheus'
|
||||
} from '@taiga-ui/polymorpheus'
|
||||
|
||||
@Component({
|
||||
template: `
|
||||
<tui-loader [textContent]="content"></tui-loader>
|
||||
`,
|
||||
standalone: true,
|
||||
template: '<tui-loader [textContent]="content" />',
|
||||
styleUrls: ['./loading.component.scss'],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
imports: [TuiLoader],
|
||||
})
|
||||
export class LoadingComponent {
|
||||
readonly content: PolymorpheusContent =
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
import { NgModule } from '@angular/core'
|
||||
import { TuiLoaderModule } from '@taiga-ui/core'
|
||||
import { tuiAsDialog } from '@taiga-ui/cdk'
|
||||
import { LoadingComponent } from './loading.component'
|
||||
import { LoadingService } from './loading.service'
|
||||
|
||||
@NgModule({
|
||||
imports: [TuiLoaderModule],
|
||||
declarations: [LoadingComponent],
|
||||
exports: [LoadingComponent],
|
||||
providers: [tuiAsDialog(LoadingService)],
|
||||
})
|
||||
export class LoadingModule {}
|
||||
@@ -1,10 +1,11 @@
|
||||
import { TuiPopoverService } from '@taiga-ui/cdk'
|
||||
import { Injectable } from '@angular/core'
|
||||
import { AbstractTuiDialogService } from '@taiga-ui/cdk'
|
||||
import { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus'
|
||||
import { TUI_DIALOGS } from '@taiga-ui/core'
|
||||
|
||||
import { LoadingComponent } from './loading.component'
|
||||
|
||||
@Injectable({ providedIn: `root` })
|
||||
export class LoadingService extends AbstractTuiDialogService<unknown> {
|
||||
protected readonly component = new PolymorpheusComponent(LoadingComponent)
|
||||
protected readonly defaultOptions = {}
|
||||
}
|
||||
@Injectable({
|
||||
providedIn: `root`,
|
||||
useFactory: () => new LoadingService(TUI_DIALOGS, LoadingComponent),
|
||||
})
|
||||
export class LoadingService extends TuiPopoverService<unknown> {}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { NgModule } from '@angular/core'
|
||||
import { CommonModule } from '@angular/common'
|
||||
import { TuiLoaderModule, TuiNotificationModule } from '@taiga-ui/core'
|
||||
import { NgModule } from '@angular/core'
|
||||
import { TuiLoader, TuiNotification } from '@taiga-ui/core'
|
||||
import { NgDompurifyModule } from '@tinkoff/ng-dompurify'
|
||||
import { SafeLinksDirective } from '../../directives/safe-links.directive'
|
||||
|
||||
import { MarkdownPipeModule } from '../../pipes/markdown/markdown.module'
|
||||
import { SafeLinksDirective } from '../../directives/safe-links.directive'
|
||||
import { MarkdownComponent } from './markdown.component'
|
||||
|
||||
@NgModule({
|
||||
@@ -14,8 +14,8 @@ import { MarkdownComponent } from './markdown.component'
|
||||
MarkdownPipeModule,
|
||||
SafeLinksDirective,
|
||||
NgDompurifyModule,
|
||||
TuiLoaderModule,
|
||||
TuiNotificationModule,
|
||||
TuiLoader,
|
||||
TuiNotification,
|
||||
],
|
||||
exports: [MarkdownComponent],
|
||||
})
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Component, Inject } from '@angular/core'
|
||||
import { TuiDialogContext } from '@taiga-ui/core'
|
||||
import { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus'
|
||||
import { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus'
|
||||
import {
|
||||
catchError,
|
||||
ignoreElements,
|
||||
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
|
||||
@Component({
|
||||
selector: '[ticker]',
|
||||
template: '<ng-content></ng-content>',
|
||||
template: '<ng-content />',
|
||||
styleUrls: ['./ticker.component.scss'],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
})
|
||||
|
||||
@@ -8,7 +8,6 @@ export * from './classes/rpc-error'
|
||||
export * from './components/initializing/logs-window.component'
|
||||
export * from './components/initializing/initializing.component'
|
||||
export * from './components/loading/loading.component'
|
||||
export * from './components/loading/loading.module'
|
||||
export * from './components/loading/loading.service'
|
||||
export * from './components/markdown/markdown.component'
|
||||
export * from './components/markdown/markdown.component.module'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { ErrorHandler, inject, Injectable } from '@angular/core'
|
||||
import { TuiAlertService, TuiNotification } from '@taiga-ui/core'
|
||||
import { TuiAlertService } from '@taiga-ui/core'
|
||||
import { HttpError } from '../classes/http-error'
|
||||
|
||||
// TODO: Enable this as ErrorHandler
|
||||
@@ -15,8 +15,7 @@ export class ErrorService extends ErrorHandler {
|
||||
this.alerts
|
||||
.open(getErrorMessage(error, link), {
|
||||
label: 'Error',
|
||||
autoClose: false,
|
||||
status: TuiNotification.Error,
|
||||
status: 'error',
|
||||
})
|
||||
.subscribe()
|
||||
}
|
||||
|
||||
@@ -1,40 +1,40 @@
|
||||
@import '@taiga-ui/core/styles/taiga-ui-local';
|
||||
|
||||
:root {
|
||||
--tui-primary: #3880ff;
|
||||
--tui-primary-hover: #4c8dff;
|
||||
--tui-primary-active: #3171e0;
|
||||
--tui-background-accent-1: #3880ff;
|
||||
--tui-background-accent-1-hover: #4c8dff;
|
||||
--tui-background-accent-1-pressed: #3171e0;
|
||||
}
|
||||
|
||||
/* stylelint-disable order/order */
|
||||
[tuiAppearance][data-appearance='secondary-warning'] {
|
||||
background: var(--tui-warning-bg);
|
||||
color: var(--tui-text-01);
|
||||
background: var(--tui-status-warning-pale);
|
||||
color: var(--tui-text-primary);
|
||||
|
||||
@include appearance-hover {
|
||||
background: var(--tui-warning-bg-hover);
|
||||
background: var(--tui-status-warning-pale-hover);
|
||||
}
|
||||
|
||||
@include appearance-active {
|
||||
background: var(--tui-warning-bg-hover);
|
||||
background: var(--tui-status-warning-pale-hover);
|
||||
}
|
||||
}
|
||||
|
||||
[tuiAppearance][data-appearance='icon-success'] {
|
||||
color: var(--tui-success-fill);
|
||||
color: var(--tui-status-positive);
|
||||
}
|
||||
|
||||
[tuiAppearance][data-appearance='icon-warning'] {
|
||||
color: var(--tui-warning-fill);
|
||||
color: var(--tui-status-warning);
|
||||
}
|
||||
|
||||
[tuiAppearance][data-appearance='icon-error'] {
|
||||
color: var(--tui-error-fill);
|
||||
color: var(--tui-status-negative);
|
||||
}
|
||||
|
||||
[tuiAppearance][data-appearance='flat'],
|
||||
[tuiAppearance][data-appearance='outline'] {
|
||||
color: var(--tui-text-01);
|
||||
color: var(--tui-text-primary);
|
||||
}
|
||||
|
||||
[tuiAppearance][data-appearance='primary'] {
|
||||
@@ -134,7 +134,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
[tuiWrapper][data-appearance='input-file'] {
|
||||
[tuiAppearance][data-appearance='input-file'] {
|
||||
&:hover,
|
||||
&:active {
|
||||
background: transparent !important;
|
||||
@@ -150,7 +150,7 @@ tui-dialog {
|
||||
}
|
||||
|
||||
tui-opt-group[data-label^='⚠️']::before {
|
||||
color: var(--tui-warning-fill);
|
||||
color: var(--tui-status-warning);
|
||||
}
|
||||
|
||||
tui-hint[data-appearance='onDark'] {
|
||||
@@ -159,10 +159,10 @@ tui-hint[data-appearance='onDark'] {
|
||||
}
|
||||
|
||||
[tuiLink] {
|
||||
color: var(--tui-link) !important;
|
||||
color: var(--tui-text-action) !important;
|
||||
|
||||
&:hover {
|
||||
color: var(--tui-link-hover) !important;
|
||||
color: var(--tui-text-action-hover) !important;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,7 +172,7 @@ tui-hint[data-appearance='onDark'] {
|
||||
border-radius: 10rem;
|
||||
|
||||
&._focused::after {
|
||||
color: var(--tui-primary);
|
||||
color: var(--tui-background-accent-1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -182,12 +182,12 @@ tui-dropdown[data-appearance='start-os'][data-appearance='start-os'] {
|
||||
backdrop-filter: blur(0.25rem);
|
||||
box-shadow: 0 0.25rem 0.25rem rgb(0 0 0 / 25%);
|
||||
border-radius: 0.325rem;
|
||||
// TODO: Replace --tui-elevation-02 when Taiga UI is updated
|
||||
// TODO: Replace --tui-background-elevation-2 when Taiga UI is updated
|
||||
background: rgb(63 63 63 / 80%);
|
||||
|
||||
tui-opt-group {
|
||||
&::before {
|
||||
background: var(--tui-clear);
|
||||
background: var(--tui-background-neutral-1);
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,18 +1,6 @@
|
||||
<svg-definitions />
|
||||
<!--TODO: Theme-->
|
||||
<tui-root tuiTheme="night" tuiMode="onDark" [class.offline]="offline$ | async">
|
||||
<tui-root tuiTheme="dark" [class.offline]="offline$ | async">
|
||||
<router-outlet />
|
||||
<toast-container />
|
||||
<sidebar-host ngProjectAs="tuiOverContent" />
|
||||
</tui-root>
|
||||
|
||||
<!--TODO: Theme-->
|
||||
@if (auth.isVerified$ | async) {
|
||||
@switch (theme$ | async) {
|
||||
@case ('Dark') {
|
||||
<tui-theme-night />
|
||||
}
|
||||
}
|
||||
} @else {
|
||||
<tui-theme-night />
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 394 B After Width: | Height: | Size: 184 B |
@@ -2,15 +2,7 @@ import { HttpClientModule } from '@angular/common/http'
|
||||
import { NgModule } from '@angular/core'
|
||||
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'
|
||||
import { ServiceWorkerModule } from '@angular/service-worker'
|
||||
import { LoadingModule } from '@start9labs/shared'
|
||||
import { TuiSheetDialogModule } from '@taiga-ui/addon-mobile'
|
||||
import {
|
||||
TuiAlertModule,
|
||||
TuiDialogModule,
|
||||
TuiModeModule,
|
||||
TuiRootModule,
|
||||
TuiThemeNightModule,
|
||||
} from '@taiga-ui/core'
|
||||
import { TuiRoot } from '@taiga-ui/core'
|
||||
import { SidebarHostComponent } from 'src/app/components/sidebar-host.component'
|
||||
import { SvgDefinitionsComponent } from 'src/app/components/svg-definitions.component'
|
||||
import { ToastContainerComponent } from 'src/app/components/toast-container.component'
|
||||
@@ -26,19 +18,13 @@ import { RoutingModule } from './routing.module'
|
||||
BrowserAnimationsModule,
|
||||
RoutingModule,
|
||||
ToastContainerComponent,
|
||||
TuiRootModule,
|
||||
TuiDialogModule,
|
||||
TuiSheetDialogModule,
|
||||
TuiAlertModule,
|
||||
TuiModeModule,
|
||||
TuiThemeNightModule,
|
||||
TuiRoot,
|
||||
ServiceWorkerModule.register('ngsw-worker.js', {
|
||||
enabled: environment.useServiceWorker,
|
||||
// Register the ServiceWorker as soon as the application is stable
|
||||
// or after 30 seconds (whichever comes first).
|
||||
registrationStrategy: 'registerWhenStable:30000',
|
||||
}),
|
||||
LoadingModule,
|
||||
SidebarHostComponent,
|
||||
SvgDefinitionsComponent,
|
||||
],
|
||||
|
||||
@@ -7,17 +7,18 @@ import {
|
||||
FilterPackagesPipe,
|
||||
} from '@start9labs/marketplace'
|
||||
import { RELATIVE_URL, THEME, WorkspaceConfig } from '@start9labs/shared'
|
||||
import { TUI_DATE_FORMAT, TUI_DATE_SEPARATOR } from '@taiga-ui/cdk'
|
||||
import {
|
||||
TUI_DATE_FORMAT,
|
||||
tuiButtonOptionsProvider,
|
||||
tuiDropdownOptionsProvider,
|
||||
tuiNumberFormatProvider,
|
||||
tuiTextfieldOptionsProvider,
|
||||
} from '@taiga-ui/core'
|
||||
import { tuiButtonOptionsProvider } from '@taiga-ui/experimental'
|
||||
import { NG_EVENT_PLUGINS } from '@taiga-ui/event-plugins'
|
||||
import {
|
||||
TUI_DATE_TIME_VALUE_TRANSFORMER,
|
||||
TUI_DATE_VALUE_TRANSFORMER,
|
||||
} from '@taiga-ui/kit'
|
||||
import { tuiTextfieldOptionsProvider } from '@taiga-ui/legacy'
|
||||
import { PATCH_DB_PROVIDERS } from 'src/app/services/patch-db/patch-db.providers'
|
||||
import { ApiService } from './services/api/embassy-api.service'
|
||||
import { LiveApiService } from './services/api/embassy-live-api.service'
|
||||
@@ -37,6 +38,7 @@ const {
|
||||
|
||||
export const APP_PROVIDERS: Provider[] = [
|
||||
PATCH_DB_PROVIDERS,
|
||||
NG_EVENT_PLUGINS,
|
||||
FilterPackagesPipe,
|
||||
UntypedFormBuilder,
|
||||
tuiNumberFormatProvider({ decimalSeparator: '.', thousandSeparator: '' }),
|
||||
@@ -45,11 +47,10 @@ export const APP_PROVIDERS: Provider[] = [
|
||||
tuiDropdownOptionsProvider({ appearance: 'start-os' }),
|
||||
{
|
||||
provide: TUI_DATE_FORMAT,
|
||||
useValue: 'MDY',
|
||||
},
|
||||
{
|
||||
provide: TUI_DATE_SEPARATOR,
|
||||
useValue: '/',
|
||||
useValue: {
|
||||
mode: 'MDY',
|
||||
separator: '/',
|
||||
},
|
||||
},
|
||||
{
|
||||
provide: TUI_DATE_VALUE_TRANSFORMER,
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { AsyncPipe } from '@angular/common'
|
||||
import { ChangeDetectionStrategy, Component, inject } from '@angular/core'
|
||||
import { RouterLink } from '@angular/router'
|
||||
import { TuiAlertModule } from '@taiga-ui/core'
|
||||
import { TuiAlert } from '@taiga-ui/core'
|
||||
import { PatchDB } from 'patch-db-client'
|
||||
import { Observable, Subject, merge, pairwise, map, endWith } from 'rxjs'
|
||||
import { endWith, map, merge, Observable, pairwise, Subject } from 'rxjs'
|
||||
import { DataModel } from 'src/app/services/patch-db/data-model'
|
||||
|
||||
@Component({
|
||||
@@ -20,7 +20,7 @@ import { DataModel } from 'src/app/services/patch-db/data-model'
|
||||
</ng-template>
|
||||
`,
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
imports: [TuiAlertModule, RouterLink, AsyncPipe],
|
||||
imports: [TuiAlert, RouterLink, AsyncPipe],
|
||||
})
|
||||
export class NotificationsToastComponent {
|
||||
private readonly dismiss$ = new Subject<boolean>()
|
||||
|
||||
@@ -2,9 +2,8 @@ import { AsyncPipe } from '@angular/common'
|
||||
import { ChangeDetectionStrategy, Component, inject } from '@angular/core'
|
||||
import { SwUpdate } from '@angular/service-worker'
|
||||
import { Emver, LoadingService } from '@start9labs/shared'
|
||||
import { TuiAutoFocusModule } from '@taiga-ui/cdk'
|
||||
import { TuiDialogModule } from '@taiga-ui/core'
|
||||
import { TuiButtonModule } from '@taiga-ui/experimental'
|
||||
import { TuiAutoFocus } from '@taiga-ui/cdk'
|
||||
import { TuiButton, TuiDialog } from '@taiga-ui/core'
|
||||
import { PatchDB } from 'patch-db-client'
|
||||
import { debounceTime, endWith, map, merge, Subject } from 'rxjs'
|
||||
import { ConfigService } from 'src/app/services/config.service'
|
||||
@@ -43,7 +42,7 @@ import { DataModel } from 'src/app/services/patch-db/data-model'
|
||||
<!-- </ng-template>-->
|
||||
`,
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
imports: [TuiDialogModule, AsyncPipe, TuiButtonModule, TuiAutoFocusModule],
|
||||
imports: [TuiDialog, AsyncPipe, TuiButton, TuiAutoFocus],
|
||||
})
|
||||
export class RefreshAlertComponent {
|
||||
private readonly updates = inject(SwUpdate)
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { CommonModule } from '@angular/common'
|
||||
import { ChangeDetectionStrategy, Component, inject } from '@angular/core'
|
||||
import { TuiDialogContext, TuiSvgModule } from '@taiga-ui/core'
|
||||
import { TuiDialogContext, TuiIcon } from '@taiga-ui/core'
|
||||
import {
|
||||
POLYMORPHEUS_CONTEXT,
|
||||
PolymorpheusComponent,
|
||||
} from '@tinkoff/ng-polymorpheus'
|
||||
} from '@taiga-ui/polymorpheus'
|
||||
import { BackupReport } from 'src/app/services/api/api.types'
|
||||
|
||||
@Component({
|
||||
@@ -15,7 +15,7 @@ import { BackupReport } from 'src/app/services/api/api.types'
|
||||
<strong>System data</strong>
|
||||
<div [style.color]="system.color">{{ system.result }}</div>
|
||||
</div>
|
||||
<tui-svg [src]="system.icon" [style.color]="system.color"></tui-svg>
|
||||
<tui-icon [icon]="system.icon" [style.color]="system.color" />
|
||||
</div>
|
||||
<div *ngFor="let pkg of report?.packages | keyvalue" class="g-action">
|
||||
<div [style.flex]="1">
|
||||
@@ -24,15 +24,15 @@ import { BackupReport } from 'src/app/services/api/api.types'
|
||||
{{ pkg.value.error ? 'Failed: ' + pkg.value.error : 'Succeeded' }}
|
||||
</div>
|
||||
</div>
|
||||
<tui-svg
|
||||
[src]="getIcon(pkg.value.error)"
|
||||
<tui-icon
|
||||
[icon]="getIcon(pkg.value.error)"
|
||||
[style.color]="getColor(pkg.value.error)"
|
||||
></tui-svg>
|
||||
/>
|
||||
</div>
|
||||
`,
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
standalone: true,
|
||||
imports: [CommonModule, TuiSvgModule],
|
||||
imports: [CommonModule, TuiIcon],
|
||||
})
|
||||
export class BackupsReportModal {
|
||||
private readonly context =
|
||||
@@ -51,34 +51,34 @@ export class BackupsReportModal {
|
||||
}
|
||||
|
||||
getColor(error: unknown) {
|
||||
return error ? 'var(--tui-negative)' : 'var(--tui-positive)'
|
||||
return error ? 'var(--tui-text-negative)' : 'var(--tui-text-positive)'
|
||||
}
|
||||
|
||||
getIcon(error: unknown) {
|
||||
return error ? 'tuiIconMinusCircleLarge' : 'tuiIconCheckLarge'
|
||||
return error ? '@tui.circle-minus' : '@tui.check'
|
||||
}
|
||||
|
||||
private getSystem() {
|
||||
if (!this.report.server.attempted) {
|
||||
return {
|
||||
result: 'Not Attempted',
|
||||
icon: 'tuiIconMinusLarge',
|
||||
color: 'var(--tui-text-02)',
|
||||
icon: '@tui.minus',
|
||||
color: 'var(--tui-text-secondary)',
|
||||
}
|
||||
}
|
||||
|
||||
if (this.report.server.error) {
|
||||
return {
|
||||
result: `Failed: ${this.report.server.error}`,
|
||||
icon: 'tuiIconMinusCircleLarge',
|
||||
color: 'var(--tui-negative)',
|
||||
icon: '@tui.circle-minus',
|
||||
color: 'var(--tui-text-negative)',
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
result: 'Succeeded',
|
||||
icon: 'tuiIconCheckLarge',
|
||||
color: 'var(--tui-positive)',
|
||||
icon: '@tui.check',
|
||||
color: 'var(--tui-text-positive)',
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,24 +1,19 @@
|
||||
import { TuiDropdownService } from '@taiga-ui/core'
|
||||
import {
|
||||
ChangeDetectionStrategy,
|
||||
Component,
|
||||
Directive,
|
||||
Injectable,
|
||||
} from '@angular/core'
|
||||
import {
|
||||
AbstractTuiPortalHostComponent,
|
||||
AbstractTuiPortalService,
|
||||
TuiDropdownPortalService,
|
||||
} from '@taiga-ui/cdk'
|
||||
import { TuiPortals, TuiPortalService } from '@taiga-ui/cdk'
|
||||
|
||||
@Injectable({ providedIn: `root` })
|
||||
export class SidebarService extends AbstractTuiPortalService {}
|
||||
export class SidebarService extends TuiPortalService {}
|
||||
|
||||
@Directive({
|
||||
selector: '[tuiSidebar]',
|
||||
standalone: true,
|
||||
providers: [
|
||||
{ provide: TuiDropdownPortalService, useExisting: SidebarService },
|
||||
],
|
||||
providers: [{ provide: TuiDropdownService, useExisting: SidebarService }],
|
||||
})
|
||||
export class SidebarDirective {}
|
||||
|
||||
@@ -28,8 +23,6 @@ export class SidebarDirective {}
|
||||
styles: [':host { position: fixed; top: 0; }'],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
standalone: true,
|
||||
providers: [
|
||||
{ provide: AbstractTuiPortalService, useExisting: SidebarService },
|
||||
],
|
||||
providers: [{ provide: TuiPortalService, useExisting: SidebarService }],
|
||||
})
|
||||
export class SidebarHostComponent extends AbstractTuiPortalHostComponent {}
|
||||
export class SidebarHostComponent extends TuiPortals {}
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
import { AsyncPipe } from '@angular/common'
|
||||
import { ChangeDetectionStrategy, Component, inject } from '@angular/core'
|
||||
import { ErrorService, LoadingService } from '@start9labs/shared'
|
||||
import { TuiAlertModule } from '@taiga-ui/core'
|
||||
import { TuiButtonModule } from '@taiga-ui/experimental'
|
||||
import { TuiAlert, TuiButton } from '@taiga-ui/core'
|
||||
import { PatchDB } from 'patch-db-client'
|
||||
import {
|
||||
distinctUntilChanged,
|
||||
@@ -24,7 +23,7 @@ import { DataModel } from 'src/app/services/patch-db/data-model'
|
||||
[tuiAlertOptions]="{
|
||||
label: 'StartOS download complete!',
|
||||
status: 'success',
|
||||
autoClose: false
|
||||
autoClose: 0
|
||||
}"
|
||||
(tuiAlertChange)="onDismiss()"
|
||||
>
|
||||
@@ -44,7 +43,7 @@ import { DataModel } from 'src/app/services/patch-db/data-model'
|
||||
</ng-template>
|
||||
`,
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
imports: [TuiButtonModule, TuiAlertModule, AsyncPipe],
|
||||
imports: [TuiButton, TuiAlert, AsyncPipe],
|
||||
})
|
||||
export class UpdateToastComponent {
|
||||
private readonly api = inject(ApiService)
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { Component, inject, Inject } from '@angular/core'
|
||||
import { TuiDialogContext } from '@taiga-ui/core'
|
||||
import { TuiButtonModule } from '@taiga-ui/experimental'
|
||||
import { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus'
|
||||
import { TuiDialogContext, TuiButton } from '@taiga-ui/core'
|
||||
import { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus'
|
||||
|
||||
@Component({
|
||||
standalone: true,
|
||||
@@ -42,7 +41,7 @@ import { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus'
|
||||
</p>
|
||||
`,
|
||||
styles: 'li { margin-bottom: 0.5rem }',
|
||||
imports: [TuiButtonModule],
|
||||
imports: [TuiButton],
|
||||
})
|
||||
export class WelcomeComponent {
|
||||
readonly context = inject<TuiDialogContext>(POLYMORPHEUS_CONTEXT)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { TuiButton } from '@taiga-ui/core'
|
||||
import { NgModule } from '@angular/core'
|
||||
import { CommonModule } from '@angular/common'
|
||||
import { RouterModule, Routes } from '@angular/router'
|
||||
import { TuiButtonModule } from '@taiga-ui/experimental'
|
||||
import { HomePage } from './home.page'
|
||||
|
||||
const ROUTES: Routes = [
|
||||
@@ -12,7 +12,7 @@ const ROUTES: Routes = [
|
||||
]
|
||||
|
||||
@NgModule({
|
||||
imports: [CommonModule, TuiButtonModule, RouterModule.forChild(ROUTES)],
|
||||
imports: [CommonModule, TuiButton, RouterModule.forChild(ROUTES)],
|
||||
declarations: [HomePage],
|
||||
})
|
||||
export class HomePageModule {}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
display: block;
|
||||
padding: 2rem;
|
||||
overflow: auto;
|
||||
background: var(--tui-base-01);
|
||||
background: var(--tui-background-base);
|
||||
}
|
||||
|
||||
.title {
|
||||
@@ -20,14 +20,14 @@
|
||||
|
||||
.code {
|
||||
display: block;
|
||||
color: var(--tui-success-fill);
|
||||
color: var(--tui-status-positive);
|
||||
background: rgb(69, 69, 69);
|
||||
padding: 1px 1rem;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.warning {
|
||||
color: var(--tui-warning-fill);
|
||||
color: var(--tui-status-warning);
|
||||
}
|
||||
|
||||
.buttons {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { TUI_CONFIRM } from '@taiga-ui/kit'
|
||||
import { Component, Inject } from '@angular/core'
|
||||
import { WINDOW } from '@ng-web-apis/common'
|
||||
import { LoadingService } from '@start9labs/shared'
|
||||
import { TuiDialogService } from '@taiga-ui/core'
|
||||
import { TUI_PROMPT } from '@taiga-ui/kit'
|
||||
import { filter } from 'rxjs'
|
||||
import { DiagnosticService } from '../services/diagnostic.service'
|
||||
|
||||
@@ -118,7 +118,7 @@ export class HomePage {
|
||||
|
||||
async presentAlertSystemRebuild() {
|
||||
this.dialogs
|
||||
.open(TUI_PROMPT, {
|
||||
.open(TUI_CONFIRM, {
|
||||
label: 'Warning',
|
||||
size: 's',
|
||||
data: {
|
||||
@@ -140,7 +140,7 @@ export class HomePage {
|
||||
|
||||
async presentAlertRepairDisk() {
|
||||
this.dialogs
|
||||
.open(TUI_PROMPT, {
|
||||
.open(TUI_CONFIRM, {
|
||||
label: 'Warning',
|
||||
size: 's',
|
||||
data: {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { NgModule } from '@angular/core'
|
||||
import { CommonModule } from '@angular/common'
|
||||
import { Routes, RouterModule } from '@angular/router'
|
||||
import { IntersectionObserverModule } from '@ng-web-apis/intersection-observer'
|
||||
import { MutationObserverModule } from '@ng-web-apis/mutation-observer'
|
||||
import { TuiLoaderModule, TuiScrollbarModule } from '@taiga-ui/core'
|
||||
import { TuiBadgeModule, TuiButtonModule } from '@taiga-ui/experimental'
|
||||
import { NgModule } from '@angular/core'
|
||||
import { RouterModule, Routes } from '@angular/router'
|
||||
import { WaIntersectionObserver } from '@ng-web-apis/intersection-observer'
|
||||
import { WaMutationObserver } from '@ng-web-apis/mutation-observer'
|
||||
import { TuiButton, TuiLoader, TuiScrollbar } from '@taiga-ui/core'
|
||||
import { TuiBadge } from '@taiga-ui/kit'
|
||||
import { NgDompurifyModule } from '@tinkoff/ng-dompurify'
|
||||
import { LogsPage } from './logs.page'
|
||||
|
||||
@@ -19,13 +19,13 @@ const ROUTES: Routes = [
|
||||
imports: [
|
||||
CommonModule,
|
||||
RouterModule.forChild(ROUTES),
|
||||
IntersectionObserverModule,
|
||||
MutationObserverModule,
|
||||
...WaIntersectionObserver,
|
||||
WaMutationObserver,
|
||||
NgDompurifyModule,
|
||||
TuiBadgeModule,
|
||||
TuiButtonModule,
|
||||
TuiLoaderModule,
|
||||
TuiScrollbarModule,
|
||||
TuiBadge,
|
||||
TuiButton,
|
||||
TuiLoader,
|
||||
TuiScrollbar,
|
||||
],
|
||||
declarations: [LogsPage],
|
||||
})
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<a
|
||||
routerLink="../"
|
||||
tuiButton
|
||||
iconLeft="tuiIconChevronLeft"
|
||||
iconStart="@tui.chevron-left"
|
||||
appearance="icon"
|
||||
[style.align-self]="'flex-start'"
|
||||
>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Component, ElementRef, inject, OnInit, ViewChild } from '@angular/core'
|
||||
import { INTERSECTION_ROOT } from '@ng-web-apis/intersection-observer'
|
||||
import { convertAnsi, ErrorService } from '@start9labs/shared'
|
||||
import { TuiScrollbarComponent } from '@taiga-ui/core'
|
||||
import { TuiScrollbar } from '@taiga-ui/core'
|
||||
import { DiagnosticService } from 'src/app/routes/diagnostic/services/diagnostic.service'
|
||||
|
||||
@Component({
|
||||
@@ -15,7 +15,7 @@ import { DiagnosticService } from 'src/app/routes/diagnostic/services/diagnostic
|
||||
justify-content: flex-start;
|
||||
padding: 1rem;
|
||||
gap: 1rem;
|
||||
background: var(--tui-base-01);
|
||||
background: var(--tui-background-base);
|
||||
}
|
||||
`,
|
||||
providers: [
|
||||
@@ -26,7 +26,7 @@ import { DiagnosticService } from 'src/app/routes/diagnostic/services/diagnostic
|
||||
],
|
||||
})
|
||||
export class LogsPage implements OnInit {
|
||||
@ViewChild(TuiScrollbarComponent, { read: ElementRef })
|
||||
@ViewChild(TuiScrollbar, { read: ElementRef })
|
||||
private readonly scrollbar?: ElementRef<HTMLElement>
|
||||
private readonly api = inject(DiagnosticService)
|
||||
private readonly errorService = inject(ErrorService)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
tuiSurface="elevated"
|
||||
class="card"
|
||||
>
|
||||
<tui-icon icon="tuiIconLock" [style.font-size.rem]="4" />
|
||||
<tui-icon icon="@tui.lock" [style.font-size.rem]="4" />
|
||||
<h1>Trust Your Root CA</h1>
|
||||
<p>
|
||||
Download and trust your server's Root Certificate Authority to establish a
|
||||
@@ -29,7 +29,7 @@
|
||||
tuiButton
|
||||
size="s"
|
||||
appearance="tertiary-solid"
|
||||
iconRight="tuiIconDownload"
|
||||
iconEnd="@tui.download"
|
||||
href="/eos/local.crt"
|
||||
>
|
||||
Download
|
||||
@@ -47,7 +47,7 @@
|
||||
href="https://docs.start9.com/0.3.5.x/user-manual/trust-ca"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
iconRight="tuiIconExternalLink"
|
||||
iconEnd="@tui.external-link"
|
||||
>
|
||||
View Instructions
|
||||
</a>
|
||||
@@ -62,7 +62,7 @@
|
||||
size="s"
|
||||
class="refresh"
|
||||
appearance="success-solid"
|
||||
iconRight="tuiIconRefreshCw"
|
||||
iconEnd="@tui.refresh-cw"
|
||||
(click)="refresh()"
|
||||
>
|
||||
Refresh
|
||||
@@ -73,7 +73,7 @@
|
||||
tuiButton
|
||||
size="s"
|
||||
appearance="flat"
|
||||
iconRight="tuiIconExternalLink"
|
||||
iconEnd="@tui.external-link"
|
||||
(click)="launchHttps()"
|
||||
[disabled]="caTrusted"
|
||||
>
|
||||
@@ -85,7 +85,7 @@
|
||||
<ng-template #trusted>
|
||||
<div tuiCardLarge tuiSurface="elevated" class="card">
|
||||
<tui-icon
|
||||
icon="tuiIconShield"
|
||||
icon="@tui.shield"
|
||||
tuiAppearance="icon-success"
|
||||
[style.font-size.rem]="4"
|
||||
/>
|
||||
@@ -97,7 +97,7 @@
|
||||
<button
|
||||
tuiButton
|
||||
appearance="tertiary-solid"
|
||||
iconRight="tuiIconExternalLink"
|
||||
iconEnd="@tui.external-link"
|
||||
(click)="launchHttps()"
|
||||
>
|
||||
Go to login
|
||||
|
||||
@@ -1,13 +1,8 @@
|
||||
import { CommonModule, DOCUMENT } from '@angular/common'
|
||||
import { Component, inject } from '@angular/core'
|
||||
import { RELATIVE_URL } from '@start9labs/shared'
|
||||
import {
|
||||
TuiAppearanceModule,
|
||||
TuiButtonModule,
|
||||
TuiCardModule,
|
||||
TuiIconModule,
|
||||
TuiSurfaceModule,
|
||||
} from '@taiga-ui/experimental'
|
||||
import { TuiAppearance, TuiButton, TuiIcon, TuiSurface } from '@taiga-ui/core'
|
||||
import { TuiCardLarge } from '@taiga-ui/layout'
|
||||
import { ApiService } from 'src/app/services/api/embassy-api.service'
|
||||
import { ConfigService } from 'src/app/services/config.service'
|
||||
|
||||
@@ -18,11 +13,11 @@ import { ConfigService } from 'src/app/services/config.service'
|
||||
styleUrls: ['./ca-wizard.component.scss'],
|
||||
imports: [
|
||||
CommonModule,
|
||||
TuiIconModule,
|
||||
TuiButtonModule,
|
||||
TuiAppearanceModule,
|
||||
TuiCardModule,
|
||||
TuiSurfaceModule,
|
||||
TuiIcon,
|
||||
TuiButton,
|
||||
TuiAppearance,
|
||||
TuiCardLarge,
|
||||
TuiSurface,
|
||||
],
|
||||
})
|
||||
export class CAWizardComponent {
|
||||
|
||||
@@ -2,13 +2,12 @@ import { CommonModule } from '@angular/common'
|
||||
import { NgModule } from '@angular/core'
|
||||
import { FormsModule } from '@angular/forms'
|
||||
import { RouterModule, Routes } from '@angular/router'
|
||||
import { TuiErrorModule, TuiTextfieldControllerModule } from '@taiga-ui/core'
|
||||
import { TuiButton, TuiError } from '@taiga-ui/core'
|
||||
import { TuiCardLarge } from '@taiga-ui/layout'
|
||||
import {
|
||||
TuiButtonModule,
|
||||
TuiCardModule,
|
||||
TuiSurfaceModule,
|
||||
} from '@taiga-ui/experimental'
|
||||
import { TuiInputPasswordModule } from '@taiga-ui/kit'
|
||||
TuiInputPasswordModule,
|
||||
TuiTextfieldControllerModule,
|
||||
} from '@taiga-ui/legacy'
|
||||
import { CAWizardComponent } from './ca-wizard/ca-wizard.component'
|
||||
import { LoginPage } from './login.page'
|
||||
|
||||
@@ -24,12 +23,11 @@ const routes: Routes = [
|
||||
CommonModule,
|
||||
FormsModule,
|
||||
CAWizardComponent,
|
||||
TuiButtonModule,
|
||||
TuiCardModule,
|
||||
TuiSurfaceModule,
|
||||
TuiButton,
|
||||
TuiCardLarge,
|
||||
TuiInputPasswordModule,
|
||||
TuiTextfieldControllerModule,
|
||||
TuiErrorModule,
|
||||
TuiError,
|
||||
RouterModule.forChild(routes),
|
||||
],
|
||||
declarations: [LoginPage],
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
|
||||
<!-- not Local HTTP -->
|
||||
<ng-template #notLanHttp>
|
||||
<div tuiCardLarge tuiSurface="elevated" class="card">
|
||||
<div tuiCardLarge class="card">
|
||||
<img alt="StartOS Icon" class="logo" src="assets/img/icon.png" />
|
||||
<h1 class="header">Login to StartOS</h1>
|
||||
<form (submit)="submit()">
|
||||
<tui-input-password
|
||||
tuiTextfieldIconLeft="tuiIconKeyLarge"
|
||||
tuiTextfieldIconLeft="@tui.key"
|
||||
[ngModelOptions]="{ standalone: true }"
|
||||
[(ngModel)]="password"
|
||||
(ngModelChange)="error = ''"
|
||||
|
||||
@@ -1,15 +1,13 @@
|
||||
@import '@taiga-ui/core/styles/taiga-ui-local';
|
||||
|
||||
:host {
|
||||
background: var(--tui-base-02);
|
||||
}
|
||||
|
||||
.card {
|
||||
@include center-all();
|
||||
overflow: visible;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
width: max(33%, 20rem);
|
||||
background: var(--tui-background-base-alt);
|
||||
box-shadow: var(--tui-shadow-small);
|
||||
}
|
||||
|
||||
.logo {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { Component, Inject } from '@angular/core'
|
||||
import { takeUntilDestroyed } from '@angular/core/rxjs-interop'
|
||||
import { Component, Inject, DestroyRef, inject } from '@angular/core'
|
||||
import { ApiService } from 'src/app/services/api/embassy-api.service'
|
||||
import { AuthService } from 'src/app/services/auth.service'
|
||||
import { Router } from '@angular/router'
|
||||
import { ConfigService } from 'src/app/services/config.service'
|
||||
import { LoadingService } from '@start9labs/shared'
|
||||
import { TuiDestroyService } from '@taiga-ui/cdk'
|
||||
import { takeUntil } from 'rxjs'
|
||||
import { DOCUMENT } from '@angular/common'
|
||||
|
||||
@@ -12,14 +12,13 @@ import { DOCUMENT } from '@angular/common'
|
||||
selector: 'login',
|
||||
templateUrl: './login.page.html',
|
||||
styleUrls: ['./login.page.scss'],
|
||||
providers: [TuiDestroyService],
|
||||
providers: [],
|
||||
})
|
||||
export class LoginPage {
|
||||
password = ''
|
||||
error = ''
|
||||
|
||||
constructor(
|
||||
private readonly destroy$: TuiDestroyService,
|
||||
private readonly router: Router,
|
||||
private readonly authService: AuthService,
|
||||
private readonly loader: LoadingService,
|
||||
@@ -33,7 +32,7 @@ export class LoginPage {
|
||||
|
||||
const loader = this.loader
|
||||
.open('Logging in...')
|
||||
.pipe(takeUntil(this.destroy$))
|
||||
.pipe(takeUntilDestroyed(this.destroyRef))
|
||||
.subscribe()
|
||||
|
||||
try {
|
||||
@@ -58,4 +57,6 @@ export class LoginPage {
|
||||
loader.unsubscribe()
|
||||
}
|
||||
}
|
||||
|
||||
readonly destroyRef = inject(DestroyRef)
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { TuiDataList, TuiIcon } from '@taiga-ui/core'
|
||||
import { CommonModule } from '@angular/common'
|
||||
import { ChangeDetectionStrategy, Component, Input } from '@angular/core'
|
||||
import { TuiDataListModule } from '@taiga-ui/core'
|
||||
import { TuiIconModule } from '@taiga-ui/experimental'
|
||||
|
||||
export interface Action {
|
||||
icon: string
|
||||
@@ -52,7 +51,7 @@ export interface Action {
|
||||
],
|
||||
standalone: true,
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
imports: [TuiDataListModule, CommonModule, TuiIconModule],
|
||||
imports: [TuiDataList, CommonModule, TuiIcon],
|
||||
})
|
||||
export class ActionsComponent {
|
||||
@Input()
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { TuiConfirmService } from '@taiga-ui/kit'
|
||||
import { CommonModule } from '@angular/common'
|
||||
import {
|
||||
ChangeDetectionStrategy,
|
||||
@@ -12,12 +13,10 @@ import { CT } from '@start9labs/start-sdk'
|
||||
|
||||
import {
|
||||
tuiMarkControlAsTouchedAndValidate,
|
||||
TuiValueChangesModule,
|
||||
TuiValueChanges,
|
||||
} from '@taiga-ui/cdk'
|
||||
import { TuiDialogContext, TuiModeModule } from '@taiga-ui/core'
|
||||
import { TuiButtonModule } from '@taiga-ui/experimental'
|
||||
import { TuiDialogFormService } from '@taiga-ui/kit'
|
||||
import { POLYMORPHEUS_CONTEXT } from '@tinkoff/ng-polymorpheus'
|
||||
import { TuiDialogContext, TuiButton } from '@taiga-ui/core'
|
||||
import { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus'
|
||||
import { compare, Operation } from 'fast-json-patch'
|
||||
import { FormModule } from 'src/app/routes/portal/components/form/form.module'
|
||||
import { InvalidService } from 'src/app/routes/portal/components/form/invalid.service'
|
||||
@@ -47,7 +46,7 @@ export interface FormContext<T> {
|
||||
(tuiValueChanges)="markAsDirty()"
|
||||
>
|
||||
<form-group [spec]="spec" />
|
||||
<footer tuiMode="onDark">
|
||||
<footer>
|
||||
<ng-content />
|
||||
<ng-container *ngFor="let button of buttons; let last = last">
|
||||
<button
|
||||
@@ -84,8 +83,8 @@ export interface FormContext<T> {
|
||||
padding: 1rem 0;
|
||||
margin: 1rem 0 -1rem;
|
||||
gap: 1rem;
|
||||
background: var(--tui-elevation-01);
|
||||
border-top: 1px solid var(--tui-base-02);
|
||||
background: var(--tui-background-elevation-1);
|
||||
border-top: 1px solid var(--tui-background-base-alt);
|
||||
}
|
||||
`,
|
||||
],
|
||||
@@ -93,16 +92,15 @@ export interface FormContext<T> {
|
||||
CommonModule,
|
||||
ReactiveFormsModule,
|
||||
RouterModule,
|
||||
TuiValueChangesModule,
|
||||
TuiButtonModule,
|
||||
TuiModeModule,
|
||||
TuiValueChanges,
|
||||
TuiButton,
|
||||
FormModule,
|
||||
],
|
||||
providers: [InvalidService],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
})
|
||||
export class FormComponent<T extends Record<string, any>> implements OnInit {
|
||||
private readonly dialogFormService = inject(TuiDialogFormService)
|
||||
private readonly dialogFormService = inject(TuiConfirmService)
|
||||
private readonly formService = inject(FormService)
|
||||
private readonly invalidService = inject(InvalidService)
|
||||
private readonly context = inject<TuiDialogContext<void, FormContext<T>>>(
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<div class="label">
|
||||
{{ spec.name }}
|
||||
<tui-tooltip
|
||||
<tui-icon
|
||||
*ngIf="spec.description || spec.disabled"
|
||||
[content]="spec | hint"
|
||||
></tui-tooltip>
|
||||
[tuiTooltip]="spec | hint"
|
||||
/>
|
||||
<button
|
||||
tuiLink
|
||||
type="button"
|
||||
@@ -48,7 +48,7 @@
|
||||
tuiIconButton
|
||||
type="button"
|
||||
class="remove"
|
||||
iconLeft="tuiIconTrash"
|
||||
iconStart="@tui.trash"
|
||||
appearance="icon"
|
||||
size="m"
|
||||
title="Remove"
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
height: 1px;
|
||||
left: 3rem;
|
||||
right: 1rem;
|
||||
background: var(--tui-clear);
|
||||
background: var(--tui-background-neutral-1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,15 +1,23 @@
|
||||
import { Component, HostBinding, inject, Input } from '@angular/core'
|
||||
import { AbstractControl, FormArrayName } from '@angular/forms'
|
||||
import { TUI_PARENT_STOP, TuiDestroyService } from '@taiga-ui/cdk'
|
||||
import {
|
||||
TUI_ANIMATION_OPTIONS,
|
||||
Component,
|
||||
DestroyRef,
|
||||
HostBinding,
|
||||
inject,
|
||||
Input,
|
||||
} from '@angular/core'
|
||||
import { takeUntilDestroyed } from '@angular/core/rxjs-interop'
|
||||
import { AbstractControl, FormArrayName } from '@angular/forms'
|
||||
import { CT } from '@start9labs/start-sdk'
|
||||
import {
|
||||
TUI_ANIMATIONS_SPEED,
|
||||
TuiDialogService,
|
||||
tuiFadeIn,
|
||||
tuiHeightCollapse,
|
||||
tuiParentStop,
|
||||
tuiToAnimationOptions,
|
||||
} from '@taiga-ui/core'
|
||||
import { TUI_PROMPT } from '@taiga-ui/kit'
|
||||
import { CT } from '@start9labs/start-sdk'
|
||||
import { filter, takeUntil } from 'rxjs'
|
||||
import { TUI_CONFIRM } from '@taiga-ui/kit'
|
||||
import { filter } from 'rxjs'
|
||||
import { FormService } from 'src/app/services/form.service'
|
||||
import { ERRORS } from '../form-group/form-group.component'
|
||||
|
||||
@@ -17,15 +25,15 @@ import { ERRORS } from '../form-group/form-group.component'
|
||||
selector: 'form-array',
|
||||
templateUrl: './form-array.component.html',
|
||||
styleUrls: ['./form-array.component.scss'],
|
||||
animations: [tuiFadeIn, tuiHeightCollapse, TUI_PARENT_STOP],
|
||||
providers: [TuiDestroyService],
|
||||
animations: [tuiFadeIn, tuiHeightCollapse, tuiParentStop],
|
||||
providers: [],
|
||||
})
|
||||
export class FormArrayComponent {
|
||||
@Input({ required: true })
|
||||
spec!: CT.ValueSpecList
|
||||
|
||||
@HostBinding('@tuiParentStop')
|
||||
readonly animation = { value: '', ...inject(TUI_ANIMATION_OPTIONS) }
|
||||
readonly animation = tuiToAnimationOptions(inject(TUI_ANIMATIONS_SPEED))
|
||||
readonly order = ERRORS
|
||||
readonly array = inject(FormArrayName)
|
||||
readonly open = new Map<AbstractControl, boolean>()
|
||||
@@ -33,7 +41,6 @@ export class FormArrayComponent {
|
||||
private warned = false
|
||||
private readonly formService = inject(FormService)
|
||||
private readonly dialogs = inject(TuiDialogService)
|
||||
private readonly destroy$ = inject(TuiDestroyService)
|
||||
|
||||
get canAdd(): boolean {
|
||||
return (
|
||||
@@ -46,12 +53,12 @@ export class FormArrayComponent {
|
||||
add() {
|
||||
if (!this.warned && this.spec.warning) {
|
||||
this.dialogs
|
||||
.open<boolean>(TUI_PROMPT, {
|
||||
.open<boolean>(TUI_CONFIRM, {
|
||||
label: 'Warning',
|
||||
size: 's',
|
||||
data: { content: this.spec.warning, yes: 'Ok', no: 'Cancel' },
|
||||
})
|
||||
.pipe(filter(Boolean), takeUntil(this.destroy$))
|
||||
.pipe(filter(Boolean), takeUntilDestroyed(this.destroyRef))
|
||||
.subscribe(() => {
|
||||
this.addItem()
|
||||
})
|
||||
@@ -64,7 +71,7 @@ export class FormArrayComponent {
|
||||
|
||||
removeAt(index: number) {
|
||||
this.dialogs
|
||||
.open<boolean>(TUI_PROMPT, {
|
||||
.open<boolean>(TUI_CONFIRM, {
|
||||
label: 'Confirm',
|
||||
size: 's',
|
||||
data: {
|
||||
@@ -73,7 +80,7 @@ export class FormArrayComponent {
|
||||
no: 'Cancel',
|
||||
},
|
||||
})
|
||||
.pipe(filter(Boolean), takeUntil(this.destroy$))
|
||||
.pipe(filter(Boolean), takeUntilDestroyed(this.destroyRef))
|
||||
.subscribe(() => {
|
||||
this.removeItem(index)
|
||||
})
|
||||
@@ -88,4 +95,6 @@ export class FormArrayComponent {
|
||||
this.array.control.insert(0, this.formService.getListItem(this.spec))
|
||||
this.open.set(this.array.control.at(0), true)
|
||||
}
|
||||
|
||||
readonly destroyRef = inject(DestroyRef)
|
||||
}
|
||||
|
||||
@@ -22,11 +22,6 @@
|
||||
[(ngModel)]="value"
|
||||
(click.stop)="(0)"
|
||||
/>
|
||||
<tui-svg
|
||||
src="tuiIconPaintLarge"
|
||||
tuiWrapper
|
||||
appearance="icon"
|
||||
class="icon"
|
||||
></tui-svg>
|
||||
<tui-icon icon="@tui.paint" tuiAppearance="icon" class="icon" />
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
@@ -6,14 +6,11 @@ import {
|
||||
TemplateRef,
|
||||
ViewChild,
|
||||
} from '@angular/core'
|
||||
import { AbstractTuiNullableControl } from '@taiga-ui/cdk'
|
||||
import {
|
||||
TuiAlertService,
|
||||
TuiDialogContext,
|
||||
TuiNotification,
|
||||
} from '@taiga-ui/core'
|
||||
import { filter, takeUntil } from 'rxjs'
|
||||
import { takeUntilDestroyed } from '@angular/core/rxjs-interop'
|
||||
import { CT } from '@start9labs/start-sdk'
|
||||
import { TuiAlertService, TuiDialogContext } from '@taiga-ui/core'
|
||||
import { AbstractTuiNullableControl } from '@taiga-ui/legacy'
|
||||
import { filter } from 'rxjs'
|
||||
import { ERRORS } from '../form-group/form-group.component'
|
||||
import { FORM_CONTROL_PROVIDERS } from './form-control.providers'
|
||||
|
||||
@@ -55,11 +52,11 @@ export class FormControlComponent<
|
||||
this.alerts
|
||||
.open<boolean>(this.warning, {
|
||||
label: 'Warning',
|
||||
status: TuiNotification.Warning,
|
||||
hasCloseButton: false,
|
||||
autoClose: false,
|
||||
status: 'warning',
|
||||
closeable: false,
|
||||
autoClose: 0,
|
||||
})
|
||||
.pipe(filter(Boolean), takeUntil(this.destroy$))
|
||||
.pipe(filter(Boolean), takeUntilDestroyed(this.destroyRef))
|
||||
.subscribe(() => {
|
||||
this.value = previous
|
||||
})
|
||||
|
||||
@@ -1,31 +1,33 @@
|
||||
<tui-input-files
|
||||
[pseudoInvalid]="invalid"
|
||||
[(ngModel)]="value"
|
||||
(focusedChange)="onFocus($event)"
|
||||
>
|
||||
<input tuiInputFiles [accept]="spec.extensions.join(',')" />
|
||||
<label tuiInputFiles [(ngModel)]="value">
|
||||
<input
|
||||
tuiInputFiles
|
||||
[invalid]="invalid"
|
||||
[accept]="spec.extensions.join(',')"
|
||||
(blur)="onFocus(false)"
|
||||
/>
|
||||
<ng-template let-drop>
|
||||
<div class="template" [class.template_hidden]="drop">
|
||||
<div class="label">
|
||||
{{ spec.name }}
|
||||
<span *ngIf="spec.required">*</span>
|
||||
<tui-tooltip
|
||||
*ngIf="spec.description"
|
||||
[content]="spec.description"
|
||||
></tui-tooltip>
|
||||
@if (spec.required) {
|
||||
<span>*</span>
|
||||
}
|
||||
@if (spec.description) {
|
||||
<tui-icon [tuiTooltip]="spec.description" />
|
||||
}
|
||||
</div>
|
||||
<tui-tag
|
||||
*ngIf="value; else label"
|
||||
class="file"
|
||||
size="l"
|
||||
[value]="value.name"
|
||||
[removable]="true"
|
||||
(edited)="value = null"
|
||||
></tui-tag>
|
||||
<ng-template #label>
|
||||
@if (value) {
|
||||
<tui-tag
|
||||
class="file"
|
||||
size="l"
|
||||
[value]="value.name"
|
||||
[removable]="true"
|
||||
(edited)="value = null"
|
||||
/>
|
||||
} @else {
|
||||
<small>Click or drop file here</small>
|
||||
</ng-template>
|
||||
}
|
||||
</div>
|
||||
<div class="drop" [class.drop_hidden]="!drop">Drop file here</div>
|
||||
</ng-template>
|
||||
</tui-input-files>
|
||||
</label>
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
small {
|
||||
max-width: 50%;
|
||||
font-weight: normal;
|
||||
color: var(--tui-text-02);
|
||||
color: var(--tui-text-secondary);
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<ng-container
|
||||
*ngFor="let entry of spec | keyvalue: asIsOrder"
|
||||
tuiMode="onDark"
|
||||
[ngSwitch]="entry.value.type"
|
||||
[tuiTextfieldCleaner]="true"
|
||||
>
|
||||
|
||||
@@ -10,7 +10,7 @@ form-group .g-form-group {
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
background: var(--tui-clear);
|
||||
background: var(--tui-background-neutral-1);
|
||||
}
|
||||
|
||||
&::before {
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
import { Provider, SkipSelf } from '@angular/core'
|
||||
import {
|
||||
TUI_ARROW_MODE,
|
||||
tuiInputDateOptionsProvider,
|
||||
tuiInputTimeOptionsProvider,
|
||||
} from '@taiga-ui/kit'
|
||||
import { TUI_DEFAULT_ERROR_MESSAGE } from '@taiga-ui/core'
|
||||
import { ControlContainer } from '@angular/forms'
|
||||
import { TUI_DEFAULT_ERROR_MESSAGE } from '@taiga-ui/core'
|
||||
import { tuiInputDateOptionsProvider } from '@taiga-ui/kit'
|
||||
import { TUI_ARROW_MODE, tuiInputTimeOptionsProvider } from '@taiga-ui/legacy'
|
||||
import { identity, of } from 'rxjs'
|
||||
|
||||
export const FORM_GROUP_PROVIDERS: Provider[] = [
|
||||
|
||||
@@ -4,8 +4,10 @@
|
||||
[readOnly]="readOnly"
|
||||
[tuiTextfieldPostfix]="spec.units || ''"
|
||||
[pseudoInvalid]="invalid"
|
||||
[precision]="Infinity"
|
||||
[decimal]="spec.integer ? 'never' : 'not-zero'"
|
||||
[tuiNumberFormat]="{
|
||||
precision: spec.integer ? 0 : Infinity,
|
||||
decimalMode: 'not-zero'
|
||||
}"
|
||||
[min]="spec.min ?? -Infinity"
|
||||
[max]="spec.max ?? Infinity"
|
||||
[step]="spec.step || 0"
|
||||
@@ -14,5 +16,5 @@
|
||||
>
|
||||
{{ spec.name }}
|
||||
<span *ngIf="spec.required">*</span>
|
||||
<input tuiTextfield [placeholder]="spec.placeholder || ''" />
|
||||
<input tuiTextfieldLegacy [placeholder]="spec.placeholder || ''" />
|
||||
</tui-input-number>
|
||||
|
||||
@@ -2,24 +2,22 @@
|
||||
<button
|
||||
tuiIconButton
|
||||
size="s"
|
||||
iconLeft="tuiIconChevronDown"
|
||||
iconStart="@tui.chevron-down"
|
||||
type="button"
|
||||
class="button"
|
||||
[class.button_open]="open"
|
||||
[style.border-radius.%]="100"
|
||||
[appearance]="invalid ? 'danger-solid' : 'secondary'"
|
||||
></button>
|
||||
<ng-content></ng-content>
|
||||
<ng-content />
|
||||
{{ spec.name }}
|
||||
<tui-tooltip
|
||||
*ngIf="spec.description"
|
||||
[content]="spec.description"
|
||||
(click.stop)="(0)"
|
||||
></tui-tooltip>
|
||||
@if (spec.description) {
|
||||
<tui-icon [tuiTooltip]="spec.description" (click.stop)="(0)" />
|
||||
}
|
||||
</h3>
|
||||
|
||||
<tui-expand class="expand" [expanded]="open">
|
||||
<div class="g-form-group" [class.g-form-group_invalid]="invalid">
|
||||
<form-group [spec]="spec.spec"></form-group>
|
||||
<form-group [spec]="spec.spec" />
|
||||
</div>
|
||||
</tui-expand>
|
||||
|
||||
@@ -36,6 +36,6 @@
|
||||
|
||||
&_invalid::before,
|
||||
&_invalid::after {
|
||||
background: var(--tui-error-bg);
|
||||
background: var(--tui-status-negative-pale);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
{{ spec.name }}
|
||||
<span *ngIf="spec.required">*</span>
|
||||
<input
|
||||
tuiTextfield
|
||||
tuiTextfieldLegacy
|
||||
[class.masked]="spec.masked && masked"
|
||||
[placeholder]="spec.placeholder || ''"
|
||||
[attr.minLength]="spec.minLength"
|
||||
@@ -27,7 +27,7 @@
|
||||
title="Generate"
|
||||
size="xs"
|
||||
class="button"
|
||||
iconLeft="tuiIconRefreshCcw"
|
||||
iconStart="@tui.refresh-ccw"
|
||||
(click)="generate()"
|
||||
></button>
|
||||
<button
|
||||
@@ -38,7 +38,7 @@
|
||||
title="Toggle masking"
|
||||
size="xs"
|
||||
class="button"
|
||||
[iconLeft]="masked ? 'tuiIconEye' : 'tuiIconEyeOff'"
|
||||
[iconStart]="masked ? '@tui.eye' : '@tui.eye-off'"
|
||||
(click)="masked = !masked"
|
||||
></button>
|
||||
</ng-template>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<tui-text-area
|
||||
<tui-textarea
|
||||
[tuiHintContent]="spec | hint"
|
||||
[disabled]="!!spec.disabled"
|
||||
[readOnly]="readOnly"
|
||||
@@ -11,5 +11,8 @@
|
||||
>
|
||||
{{ spec.name }}
|
||||
<span *ngIf="spec.required">*</span>
|
||||
<textarea tuiTextfield [placeholder]="spec.placeholder || ''"></textarea>
|
||||
</tui-text-area>
|
||||
<textarea
|
||||
tuiTextfieldLegacy
|
||||
[placeholder]="spec.placeholder || ''"
|
||||
></textarea>
|
||||
</tui-textarea>
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
{{ spec.name }}
|
||||
<tui-tooltip
|
||||
*ngIf="spec.description || spec.disabled"
|
||||
[tuiHintContent]="spec | hint"
|
||||
></tui-tooltip>
|
||||
<tui-toggle
|
||||
size="l"
|
||||
@if (spec.description || spec.disabled) {
|
||||
<tui-icon [tuiTooltip]="spec | hint" />
|
||||
}
|
||||
<input
|
||||
tuiSwitch
|
||||
type="checkbox"
|
||||
size="m"
|
||||
[disabled]="!!spec.disabled || readOnly"
|
||||
[(ngModel)]="value"
|
||||
(focusedChange)="onFocus($event)"
|
||||
></tui-toggle>
|
||||
(blur)="onFocus(false)"
|
||||
/>
|
||||
|
||||
@@ -1,54 +1,55 @@
|
||||
import { NgModule } from '@angular/core'
|
||||
import { CommonModule } from '@angular/common'
|
||||
import { NgModule } from '@angular/core'
|
||||
import { FormsModule, ReactiveFormsModule } from '@angular/forms'
|
||||
import { MaskitoModule } from '@maskito/angular'
|
||||
import { TuiMapperPipeModule, TuiValueChangesModule } from '@taiga-ui/cdk'
|
||||
import { TuiMapperPipe, TuiValueChanges } from '@taiga-ui/cdk'
|
||||
import {
|
||||
TuiErrorModule,
|
||||
TuiExpandModule,
|
||||
TuiHintModule,
|
||||
TuiLinkModule,
|
||||
TuiModeModule,
|
||||
TuiSvgModule,
|
||||
TuiTextfieldControllerModule,
|
||||
TuiTooltipModule,
|
||||
TuiWrapperModule,
|
||||
TuiAppearance,
|
||||
TuiButton,
|
||||
TuiError,
|
||||
TuiExpand,
|
||||
TuiHint,
|
||||
TuiIcon,
|
||||
TuiLink,
|
||||
TuiNumberFormat,
|
||||
} from '@taiga-ui/core'
|
||||
import { TuiButtonModule } from '@taiga-ui/experimental'
|
||||
import {
|
||||
TuiElasticContainerModule,
|
||||
TuiFieldErrorPipeModule,
|
||||
TuiElasticContainer,
|
||||
TuiFieldErrorPipe,
|
||||
TuiFiles,
|
||||
TuiSwitch,
|
||||
TuiTooltip,
|
||||
} from '@taiga-ui/kit'
|
||||
import {
|
||||
TuiInputDateModule,
|
||||
TuiInputDateTimeModule,
|
||||
TuiInputFilesModule,
|
||||
TuiInputModule,
|
||||
TuiInputNumberModule,
|
||||
TuiInputTimeModule,
|
||||
TuiMultiSelectModule,
|
||||
TuiPromptModule,
|
||||
TuiSelectModule,
|
||||
TuiTagModule,
|
||||
TuiTextAreaModule,
|
||||
TuiToggleModule,
|
||||
} from '@taiga-ui/kit'
|
||||
TuiTextareaModule,
|
||||
TuiTextfieldControllerModule,
|
||||
} from '@taiga-ui/legacy'
|
||||
import { ControlDirective } from './control.directive'
|
||||
import { FormArrayComponent } from './form-array/form-array.component'
|
||||
import { FormColorComponent } from './form-color/form-color.component'
|
||||
import { FormControlComponent } from './form-control/form-control.component'
|
||||
import { FormDatetimeComponent } from './form-datetime/form-datetime.component'
|
||||
import { FormFileComponent } from './form-file/form-file.component'
|
||||
|
||||
import { FormGroupComponent } from './form-group/form-group.component'
|
||||
import { FormTextComponent } from './form-text/form-text.component'
|
||||
import { FormToggleComponent } from './form-toggle/form-toggle.component'
|
||||
import { FormTextareaComponent } from './form-textarea/form-textarea.component'
|
||||
import { FormNumberComponent } from './form-number/form-number.component'
|
||||
import { FormSelectComponent } from './form-select/form-select.component'
|
||||
import { FormFileComponent } from './form-file/form-file.component'
|
||||
import { FormMultiselectComponent } from './form-multiselect/form-multiselect.component'
|
||||
import { FormUnionComponent } from './form-union/form-union.component'
|
||||
import { FormNumberComponent } from './form-number/form-number.component'
|
||||
import { FormObjectComponent } from './form-object/form-object.component'
|
||||
import { FormArrayComponent } from './form-array/form-array.component'
|
||||
import { FormControlComponent } from './form-control/form-control.component'
|
||||
import { MustachePipe } from './mustache.pipe'
|
||||
import { ControlDirective } from './control.directive'
|
||||
import { FormColorComponent } from './form-color/form-color.component'
|
||||
import { FormDatetimeComponent } from './form-datetime/form-datetime.component'
|
||||
import { FormSelectComponent } from './form-select/form-select.component'
|
||||
import { FormTextComponent } from './form-text/form-text.component'
|
||||
import { FormTextareaComponent } from './form-textarea/form-textarea.component'
|
||||
import { FormToggleComponent } from './form-toggle/form-toggle.component'
|
||||
import { FormUnionComponent } from './form-union/form-union.component'
|
||||
import { HintPipe } from './hint.pipe'
|
||||
import { MustachePipe } from './mustache.pipe'
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
@@ -57,31 +58,30 @@ import { HintPipe } from './hint.pipe'
|
||||
ReactiveFormsModule,
|
||||
TuiInputModule,
|
||||
TuiInputNumberModule,
|
||||
TuiInputFilesModule,
|
||||
TuiTextAreaModule,
|
||||
...TuiFiles,
|
||||
TuiTextareaModule,
|
||||
TuiSelectModule,
|
||||
TuiMultiSelectModule,
|
||||
TuiToggleModule,
|
||||
TuiTooltipModule,
|
||||
TuiHintModule,
|
||||
TuiModeModule,
|
||||
TuiSwitch,
|
||||
TuiTooltip,
|
||||
...TuiHint,
|
||||
TuiTagModule,
|
||||
TuiButtonModule,
|
||||
TuiExpandModule,
|
||||
TuiButton,
|
||||
...TuiExpand,
|
||||
TuiTextfieldControllerModule,
|
||||
TuiLinkModule,
|
||||
TuiPromptModule,
|
||||
TuiErrorModule,
|
||||
TuiFieldErrorPipeModule,
|
||||
TuiValueChangesModule,
|
||||
TuiElasticContainerModule,
|
||||
TuiLink,
|
||||
TuiError,
|
||||
TuiFieldErrorPipe,
|
||||
TuiValueChanges,
|
||||
TuiElasticContainer,
|
||||
MaskitoModule,
|
||||
TuiSvgModule,
|
||||
TuiWrapperModule,
|
||||
TuiInputDateModule,
|
||||
TuiInputTimeModule,
|
||||
TuiInputDateTimeModule,
|
||||
TuiMapperPipeModule,
|
||||
TuiMapperPipe,
|
||||
TuiAppearance,
|
||||
TuiIcon,
|
||||
TuiNumberFormat,
|
||||
],
|
||||
declarations: [
|
||||
FormGroupComponent,
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
import { TuiCell } from '@taiga-ui/layout'
|
||||
import { TuiTitle, TuiButton } from '@taiga-ui/core'
|
||||
import { CommonModule } from '@angular/common'
|
||||
import { ChangeDetectionStrategy, Component, inject } from '@angular/core'
|
||||
import { CopyService, EmverPipesModule } from '@start9labs/shared'
|
||||
import {
|
||||
TuiButtonModule,
|
||||
TuiCellModule,
|
||||
TuiTitleModule,
|
||||
} from '@taiga-ui/experimental'
|
||||
import { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus'
|
||||
import { PolymorpheusComponent } from '@taiga-ui/polymorpheus'
|
||||
import { PatchDB } from 'patch-db-client'
|
||||
import { DataModel } from 'src/app/services/patch-db/data-model'
|
||||
import { ConfigService } from 'src/app/services/config.service'
|
||||
@@ -28,7 +25,7 @@ import { ConfigService } from 'src/app/services/config.service'
|
||||
<button
|
||||
tuiIconButton
|
||||
appearance="icon"
|
||||
iconLeft="tuiIconCopy"
|
||||
iconStart="@tui.copy"
|
||||
(click)="copyService.copy(gitHash)"
|
||||
>
|
||||
Copy
|
||||
@@ -42,7 +39,7 @@ import { ConfigService } from 'src/app/services/config.service'
|
||||
<button
|
||||
tuiIconButton
|
||||
appearance="icon"
|
||||
iconLeft="tuiIconCopy"
|
||||
iconStart="@tui.copy"
|
||||
(click)="copyService.copy(server.caFingerprint)"
|
||||
>
|
||||
Copy
|
||||
@@ -53,13 +50,7 @@ import { ConfigService } from 'src/app/services/config.service'
|
||||
styles: ['[tuiCell] { padding-inline: 0 }'],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
standalone: true,
|
||||
imports: [
|
||||
CommonModule,
|
||||
EmverPipesModule,
|
||||
TuiTitleModule,
|
||||
TuiButtonModule,
|
||||
TuiCellModule,
|
||||
],
|
||||
imports: [CommonModule, EmverPipesModule, TuiTitle, TuiButton, TuiCell],
|
||||
})
|
||||
export class AboutComponent {
|
||||
readonly server$ = inject(PatchDB<DataModel>).watch$('serverInfo')
|
||||
|
||||
@@ -5,19 +5,21 @@ import {
|
||||
inject,
|
||||
Input,
|
||||
} from '@angular/core'
|
||||
import { Breadcrumb } from 'src/app/services/breadcrumbs.service'
|
||||
import { TuiIconModule, TuiTitleModule } from '@taiga-ui/experimental'
|
||||
import {
|
||||
TUI_ANIMATION_OPTIONS,
|
||||
TUI_ANIMATIONS_SPEED,
|
||||
tuiFadeIn,
|
||||
TuiIcon,
|
||||
TuiTitle,
|
||||
tuiToAnimationOptions,
|
||||
tuiWidthCollapse,
|
||||
} from '@taiga-ui/core'
|
||||
import { Breadcrumb } from 'src/app/services/breadcrumbs.service'
|
||||
|
||||
@Component({
|
||||
standalone: true,
|
||||
selector: 'a[headerBreadcrumb]',
|
||||
template: `
|
||||
@if (item.icon?.startsWith('tuiIcon')) {
|
||||
@if (item.icon?.startsWith('@tui.')) {
|
||||
<tui-icon [icon]="item.icon || ''" />
|
||||
} @else if (item.icon) {
|
||||
<img [style.width.rem]="2" [src]="item.icon" [alt]="item.title" />
|
||||
@@ -78,7 +80,7 @@ import {
|
||||
`,
|
||||
],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
imports: [TuiIconModule, TuiTitleModule],
|
||||
imports: [TuiIcon, TuiTitle],
|
||||
animations: [tuiWidthCollapse, tuiFadeIn],
|
||||
})
|
||||
export class HeaderBreadcrumbComponent {
|
||||
@@ -87,5 +89,5 @@ export class HeaderBreadcrumbComponent {
|
||||
|
||||
@HostBinding('@tuiFadeIn')
|
||||
@HostBinding('@tuiWidthCollapse')
|
||||
readonly animation = inject(TUI_ANIMATION_OPTIONS)
|
||||
readonly animation = tuiToAnimationOptions(inject(TUI_ANIMATIONS_SPEED))
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { TuiIcon } from '@taiga-ui/core'
|
||||
import { AsyncPipe } from '@angular/common'
|
||||
import { ChangeDetectionStrategy, Component, inject } from '@angular/core'
|
||||
import { TuiIconModule } from '@taiga-ui/experimental'
|
||||
import { PatchDB } from 'patch-db-client'
|
||||
import { combineLatest, map, Observable, startWith } from 'rxjs'
|
||||
import { ConnectionService } from 'src/app/services/connection.service'
|
||||
@@ -38,7 +38,7 @@ import { DataModel } from 'src/app/services/patch-db/data-model'
|
||||
`,
|
||||
],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
imports: [TuiIconModule, AsyncPipe],
|
||||
imports: [TuiIcon, AsyncPipe],
|
||||
})
|
||||
export class HeaderConnectionComponent {
|
||||
readonly connection$: Observable<{
|
||||
@@ -57,36 +57,36 @@ export class HeaderConnectionComponent {
|
||||
if (!network)
|
||||
return {
|
||||
message: 'No Internet',
|
||||
color: 'var(--tui-error-fill)',
|
||||
icon: 'tuiIconCloudOff',
|
||||
color: 'var(--tui-status-negative)',
|
||||
icon: '@tui.cloud-off',
|
||||
status: 'error',
|
||||
}
|
||||
if (!websocket)
|
||||
return {
|
||||
message: 'Connecting',
|
||||
color: 'var(--tui-warning-fill)',
|
||||
icon: 'tuiIconCloudOff',
|
||||
color: 'var(--tui-status-warning)',
|
||||
icon: '@tui.cloud-off',
|
||||
status: 'warning',
|
||||
}
|
||||
if (status.shuttingDown)
|
||||
return {
|
||||
message: 'Shutting Down',
|
||||
color: 'var(--tui-neutral-fill)',
|
||||
icon: 'tuiIconPower',
|
||||
color: 'var(--tui-status-neutral)',
|
||||
icon: '@tui.power',
|
||||
status: 'neutral',
|
||||
}
|
||||
if (status.restarting)
|
||||
return {
|
||||
message: 'Restarting',
|
||||
color: 'var(--tui-neutral-fill)',
|
||||
icon: 'tuiIconPower',
|
||||
color: 'var(--tui-status-neutral)',
|
||||
icon: '@tui.power',
|
||||
status: 'neutral',
|
||||
}
|
||||
|
||||
return {
|
||||
message: 'Connected',
|
||||
color: 'var(--tui-success-fill)',
|
||||
icon: 'tuiIconCloud',
|
||||
color: 'var(--tui-status-positive)',
|
||||
icon: '@tui.cloud',
|
||||
status: 'success',
|
||||
}
|
||||
}),
|
||||
|
||||
@@ -1,18 +1,16 @@
|
||||
import { ChangeDetectionStrategy, Component, inject } from '@angular/core'
|
||||
import { RouterLink } from '@angular/router'
|
||||
import { TuiSidebarModule } from '@taiga-ui/addon-mobile'
|
||||
import { TuiLetModule } from '@taiga-ui/cdk'
|
||||
import { TuiSidebar } from '@taiga-ui/addon-mobile'
|
||||
import { TuiLet } from '@taiga-ui/cdk'
|
||||
import {
|
||||
TUI_ANIMATION_OPTIONS,
|
||||
TUI_ANIMATIONS_SPEED,
|
||||
TuiButton,
|
||||
tuiFadeIn,
|
||||
tuiScaleIn,
|
||||
tuiToAnimationOptions,
|
||||
tuiWidthCollapse,
|
||||
} from '@taiga-ui/core'
|
||||
import {
|
||||
TuiBadgedContentModule,
|
||||
TuiBadgeNotificationModule,
|
||||
TuiButtonModule,
|
||||
} from '@taiga-ui/experimental'
|
||||
import { TuiBadgedContent, TuiBadgeNotification } from '@taiga-ui/kit'
|
||||
import { SidebarDirective } from 'src/app/components/sidebar-host.component'
|
||||
import { getMenu } from 'src/app/utils/system-utilities'
|
||||
import { HeaderMenuComponent } from './menu.component'
|
||||
@@ -37,9 +35,9 @@ import { HeaderMenuComponent } from './menu.component'
|
||||
tuiIconButton
|
||||
appearance="icon"
|
||||
size="s"
|
||||
[iconLeft]="item.icon"
|
||||
[iconStart]="item.icon"
|
||||
[routerLink]="item.routerLink"
|
||||
[style.color]="'var(--tui-text-01)'"
|
||||
[style.color]="'var(--tui-text-primary)'"
|
||||
>
|
||||
{{ item.name }}
|
||||
</a>
|
||||
@@ -68,15 +66,15 @@ import { HeaderMenuComponent } from './menu.component'
|
||||
imports: [
|
||||
HeaderMenuComponent,
|
||||
SidebarDirective,
|
||||
TuiBadgeNotificationModule,
|
||||
TuiBadgedContentModule,
|
||||
TuiButtonModule,
|
||||
TuiLetModule,
|
||||
TuiSidebarModule,
|
||||
TuiBadgeNotification,
|
||||
TuiBadgedContent,
|
||||
TuiButton,
|
||||
TuiLet,
|
||||
TuiSidebar,
|
||||
RouterLink,
|
||||
],
|
||||
})
|
||||
export class HeaderCornerComponent {
|
||||
readonly animation = inject(TUI_ANIMATION_OPTIONS)
|
||||
readonly animation = tuiToAnimationOptions(inject(TUI_ANIMATIONS_SPEED))
|
||||
readonly utils = getMenu()
|
||||
}
|
||||
|
||||
@@ -72,26 +72,26 @@ import { BreadcrumbsService } from 'src/app/services/breadcrumbs.service'
|
||||
}
|
||||
|
||||
&:has([data-connection='error']) {
|
||||
--status: var(--tui-error-fill);
|
||||
--status: var(--tui-status-negative);
|
||||
}
|
||||
|
||||
&:has([data-connection='warning']) {
|
||||
--status: var(--tui-warning-fill);
|
||||
--status: var(--tui-status-warning);
|
||||
}
|
||||
|
||||
&:has([data-connection='neutral']) {
|
||||
--status: var(--tui-neutral-fill);
|
||||
--status: var(--tui-status-neutral);
|
||||
}
|
||||
|
||||
&:has([data-connection='success']) {
|
||||
--status: var(--tui-success-fill);
|
||||
--status: var(--tui-status-positive);
|
||||
}
|
||||
}
|
||||
|
||||
header-connection .plaque::before {
|
||||
box-shadow:
|
||||
inset 0 1px rgba(255, 255, 255, 0.25),
|
||||
inset 0 -0.25rem var(--tui-success-fill);
|
||||
inset 0 -0.25rem var(--tui-status-positive);
|
||||
}
|
||||
|
||||
:host-context(tui-root._mobile) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { TuiIcon } from '@taiga-ui/core'
|
||||
import { ChangeDetectionStrategy, Component } from '@angular/core'
|
||||
import { TuiIconModule } from '@taiga-ui/experimental'
|
||||
|
||||
@Component({
|
||||
standalone: true,
|
||||
@@ -41,6 +41,6 @@ import { TuiIconModule } from '@taiga-ui/experimental'
|
||||
`,
|
||||
],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
imports: [TuiIconModule],
|
||||
imports: [TuiIcon],
|
||||
})
|
||||
export class HeaderHomeComponent {}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user