upgrade dependencies and migrate, small improvements and fixes
This commit is contained in:
Generated
+6610
-4900
File diff suppressed because it is too large
Load Diff
+23
-23
@@ -12,35 +12,35 @@
|
|||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "^17.3.1",
|
"@angular/animations": "^19.2.10",
|
||||||
"@angular/cdk": "^17.3.1",
|
"@angular/cdk": "^19.2.15",
|
||||||
"@angular/common": "^17.3.1",
|
"@angular/common": "^19.2.10",
|
||||||
"@angular/compiler": "^17.3.1",
|
"@angular/compiler": "^19.2.10",
|
||||||
"@angular/core": "^17.3.1",
|
"@angular/core": "^19.2.10",
|
||||||
"@angular/forms": "^17.3.1",
|
"@angular/forms": "^19.2.10",
|
||||||
"@angular/material": "^17.3.1",
|
"@angular/material": "^19.2.15",
|
||||||
"@angular/material-moment-adapter": "^17.3.1",
|
"@angular/material-moment-adapter": "^19.2.15",
|
||||||
"@angular/platform-browser": "^17.3.1",
|
"@angular/platform-browser": "^19.2.10",
|
||||||
"@angular/platform-browser-dynamic": "^17.3.1",
|
"@angular/platform-browser-dynamic": "^19.2.10",
|
||||||
"@angular/router": "^17.3.1",
|
"@angular/router": "^19.2.10",
|
||||||
"@angular/service-worker": "^17.3.1",
|
"@angular/service-worker": "^19.2.10",
|
||||||
"moment": "^2.30.1",
|
"moment": "^2.30.1",
|
||||||
"rxjs": "~7.8.1",
|
"rxjs": "~7.8.2",
|
||||||
"tslib": "^2.6.2",
|
"tslib": "^2.8.1",
|
||||||
"zone.js": "~0.14.4"
|
"zone.js": "~0.15.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@angular-devkit/build-angular": "^17.3.2",
|
"@angular-devkit/build-angular": "^19.2.11",
|
||||||
"@angular/cli": "^17.3.2",
|
"@angular/cli": "^19.2.11",
|
||||||
"@angular/compiler-cli": "^17.3.1",
|
"@angular/compiler-cli": "^19.2.10",
|
||||||
"@angular/localize": "^17.3.1",
|
"@angular/localize": "^19.2.10",
|
||||||
"@types/jasmine": "^5.1.4",
|
"@types/jasmine": "^5.1.8",
|
||||||
"jasmine-core": "~5.1.2",
|
"jasmine-core": "~5.7.1",
|
||||||
"karma": "^6.4.3",
|
"karma": "^6.4.4",
|
||||||
"karma-chrome-launcher": "~3.2.0",
|
"karma-chrome-launcher": "~3.2.0",
|
||||||
"karma-coverage": "~2.2.1",
|
"karma-coverage": "~2.2.1",
|
||||||
"karma-jasmine": "~5.1.0",
|
"karma-jasmine": "~5.1.0",
|
||||||
"karma-jasmine-html-reporter": "^2.1.0",
|
"karma-jasmine-html-reporter": "^2.1.0",
|
||||||
"typescript": "~5.4.3"
|
"typescript": "~5.8.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,7 @@ import { Component } from '@angular/core';
|
|||||||
import { I18nService } from './services/i18n.service';
|
import { I18nService } from './services/i18n.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'app-root',
|
selector: 'app-root',
|
||||||
templateUrl: './app.component.html'
|
templateUrl: './app.component.html'
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { Directive, ElementRef, OnInit } from '@angular/core';
|
import { Directive, ElementRef, OnInit } from '@angular/core';
|
||||||
|
|
||||||
@Directive({
|
@Directive({
|
||||||
|
standalone: false,
|
||||||
selector: '[matAutofocus]',
|
selector: '[matAutofocus]',
|
||||||
})
|
})
|
||||||
export class AutofocusDirective implements OnInit {
|
export class AutofocusDirective implements OnInit {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import { Component, OnInit } from '@angular/core';
|
|||||||
import { BookmarksService } from '../../services/bookmarks.service';
|
import { BookmarksService } from '../../services/bookmarks.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'page-bookmarks',
|
selector: 'page-bookmarks',
|
||||||
templateUrl: './bookmarks.page.html'
|
templateUrl: './bookmarks.page.html'
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { ActivatedRoute } from '@angular/router';
|
|||||||
import { CommentService } from '../../services/comment.service';
|
import { CommentService } from '../../services/comment.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'page-comment',
|
selector: 'page-comment',
|
||||||
templateUrl: './comment.page.html',
|
templateUrl: './comment.page.html',
|
||||||
styleUrls: ['./comment.page.scss']
|
styleUrls: ['./comment.page.scss']
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
import { Component, OnInit, Input, OnDestroy } from '@angular/core';
|
import { Component, Input, OnDestroy, OnInit } from '@angular/core';
|
||||||
import { Router, ActivatedRoute } from '@angular/router';
|
|
||||||
import { PageEvent } from '@angular/material/paginator';
|
import { PageEvent } from '@angular/material/paginator';
|
||||||
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
|
||||||
import { SettingsService } from '../../services/settings.service';
|
|
||||||
import { Subscription } from 'rxjs';
|
import { Subscription } from 'rxjs';
|
||||||
|
import { SettingsService } from '../../services/settings.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'page-entries',
|
selector: 'page-entries',
|
||||||
templateUrl: './entries.page.html'
|
templateUrl: './entries.page.html'
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
import { Component, OnDestroy, OnInit } from '@angular/core';
|
import { Component, OnDestroy, OnInit } from '@angular/core';
|
||||||
import { EntriesService } from '../../../services/entries.service';
|
|
||||||
import { ActivatedRoute, Router } from '@angular/router';
|
|
||||||
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||||
import { distinctUntilChanged, debounceTime } from 'rxjs/operators';
|
|
||||||
import { MatSnackBar } from '@angular/material/snack-bar';
|
import { MatSnackBar } from '@angular/material/snack-bar';
|
||||||
import { TagsService } from 'src/app/services/tags.service';
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
import { SettingsService } from 'src/app/services/settings.service';
|
|
||||||
import { Subscription } from 'rxjs';
|
import { Subscription } from 'rxjs';
|
||||||
|
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
||||||
|
import { SettingsService } from 'src/app/services/settings.service';
|
||||||
|
import { TagsService } from 'src/app/services/tags.service';
|
||||||
|
import { EntriesService } from '../../../services/entries.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'page-entry-edit',
|
selector: 'page-entry-edit',
|
||||||
templateUrl: './edit.page.html',
|
templateUrl: './edit.page.html',
|
||||||
styleUrls: ['./edit.page.scss']
|
styleUrls: ['./edit.page.scss']
|
||||||
|
|||||||
@@ -2,11 +2,12 @@ import { Component, OnInit, ViewChild } from '@angular/core';
|
|||||||
|
|
||||||
import { ActivatedRoute } from '@angular/router';
|
import { ActivatedRoute } from '@angular/router';
|
||||||
|
|
||||||
import { EntriesService } from '../../services/entries.service';
|
|
||||||
import { CommentService } from '../../services/comment.service';
|
import { CommentService } from '../../services/comment.service';
|
||||||
|
import { EntriesService } from '../../services/entries.service';
|
||||||
import { UiComments } from '../../ui/comments/comments.ui';
|
import { UiComments } from '../../ui/comments/comments.ui';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'page-entry',
|
selector: 'page-entry',
|
||||||
templateUrl: './entry.page.html',
|
templateUrl: './entry.page.html',
|
||||||
styleUrls: ['./entry.page.scss']
|
styleUrls: ['./entry.page.scss']
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import { environment } from '../../../environments/environment';
|
|||||||
import { AuthService } from '../../services/auth.service';
|
import { AuthService } from '../../services/auth.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'page-login',
|
selector: 'page-login',
|
||||||
templateUrl: './login.page.html',
|
templateUrl: './login.page.html',
|
||||||
styleUrls: ['./login.page.scss']
|
styleUrls: ['./login.page.scss']
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
import { Component, OnInit, Input } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
|
||||||
import { ModerationService } from '../../../services/moderarion.service';
|
import { ModerationService } from '../../../services/moderarion.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'page-moderation-comments',
|
selector: 'page-moderation-comments',
|
||||||
templateUrl: './moderation.comments.page.html'
|
templateUrl: './moderation.comments.page.html'
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import { Component, OnInit } from '@angular/core';
|
|||||||
import { ModerationService } from '../../../services/moderarion.service';
|
import { ModerationService } from '../../../services/moderarion.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'page-moderation-entries',
|
selector: 'page-moderation-entries',
|
||||||
templateUrl: './moderation.entries.page.html'
|
templateUrl: './moderation.entries.page.html'
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
import { Component } from '@angular/core';
|
import { Component } from '@angular/core';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'page-notfound',
|
selector: 'page-notfound',
|
||||||
templateUrl: './notfound.page.html',
|
templateUrl: './notfound.page.html',
|
||||||
styleUrls: [ './notfound.page.scss' ]
|
styleUrls: ['./notfound.page.scss']
|
||||||
})
|
})
|
||||||
export class PageNotFound {
|
export class PageNotFound {
|
||||||
|
|
||||||
constructor() { }
|
constructor() { }
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import { SearchService } from 'src/app/services/search.service';
|
|||||||
import { SettingsService } from 'src/app/services/settings.service';
|
import { SettingsService } from 'src/app/services/settings.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'page-search',
|
selector: 'page-search',
|
||||||
templateUrl: './search.page.html',
|
templateUrl: './search.page.html',
|
||||||
styleUrls: ['./search.page.scss']
|
styleUrls: ['./search.page.scss']
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
import { Component, OnDestroy, OnInit } from '@angular/core';
|
import { Component, OnDestroy, OnInit } from '@angular/core';
|
||||||
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||||
|
|
||||||
import { UserService } from '../../services/user.service';
|
|
||||||
import { SettingsService } from 'src/app/services/settings.service';
|
|
||||||
import { Subscription } from 'rxjs';
|
import { Subscription } from 'rxjs';
|
||||||
|
import { SettingsService } from 'src/app/services/settings.service';
|
||||||
|
import { UserService } from '../../services/user.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'page-settings',
|
selector: 'page-settings',
|
||||||
templateUrl: './settings.page.html',
|
templateUrl: './settings.page.html',
|
||||||
styleUrls: ['./settings.page.scss']
|
styleUrls: ['./settings.page.scss']
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
|
import { Location } from '@angular/common';
|
||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { Location } from '@angular/common'
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
import { Router, ActivatedRoute } from '@angular/router';
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'page-unavailable',
|
selector: 'page-unavailable',
|
||||||
templateUrl: './unavailable.page.html',
|
templateUrl: './unavailable.page.html',
|
||||||
styleUrls: ['./unavailable.page.scss']
|
styleUrls: ['./unavailable.page.scss']
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import { ActivatedRoute } from '@angular/router';
|
|||||||
import { UserService } from '../../services/user.service';
|
import { UserService } from '../../services/user.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'page-user',
|
selector: 'page-user',
|
||||||
templateUrl: './user.page.html',
|
templateUrl: './user.page.html',
|
||||||
styleUrls: ['./user.page.scss']
|
styleUrls: ['./user.page.scss']
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
import { Component, OnInit, OnDestroy } from '@angular/core';
|
import { Component, OnDestroy, OnInit } from '@angular/core';
|
||||||
|
|
||||||
import { Router, ActivatedRoute } from '@angular/router';
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
import { Subscription } from 'rxjs';
|
import { Subscription } from 'rxjs';
|
||||||
|
|
||||||
import { CommentService } from '../../../services/comment.service';
|
import { CommentService } from '../../../services/comment.service';
|
||||||
import { SettingsService } from '../../../services/settings.service';
|
import { SettingsService } from '../../../services/settings.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'page-usercomments',
|
selector: 'page-usercomments',
|
||||||
templateUrl: './usercomments.page.html',
|
templateUrl: './usercomments.page.html',
|
||||||
styleUrls: ['./usercomments.page.scss']
|
styleUrls: ['./usercomments.page.scss']
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { ActivatedRoute } from '@angular/router';
|
|||||||
import { EntriesService } from '../../../services/entries.service';
|
import { EntriesService } from '../../../services/entries.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'page-userentries',
|
selector: 'page-userentries',
|
||||||
templateUrl: './userentries.page.html'
|
templateUrl: './userentries.page.html'
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,16 +1,17 @@
|
|||||||
import { Component, OnDestroy, OnInit } from '@angular/core';
|
import { Component, OnDestroy, OnInit } from '@angular/core';
|
||||||
import { ActivatedRoute, Router } from '@angular/router';
|
|
||||||
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||||
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
||||||
import { TagsService } from 'src/app/services/tags.service';
|
|
||||||
import { SettingsService } from 'src/app/services/settings.service';
|
|
||||||
import { Subscription } from 'rxjs';
|
|
||||||
import { ViewService } from 'src/app/services/view.service';
|
|
||||||
import { I18nService } from 'src/app/services/i18n.service';
|
|
||||||
import { ConfirmDialog } from 'src/app/ui/confirm/confirm.component';
|
|
||||||
import { MatDialog } from '@angular/material/dialog';
|
import { MatDialog } from '@angular/material/dialog';
|
||||||
|
import { MatSnackBar } from '@angular/material/snack-bar';
|
||||||
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
import { Subscription } from 'rxjs';
|
||||||
|
import { I18nService } from 'src/app/services/i18n.service';
|
||||||
|
import { SettingsService } from 'src/app/services/settings.service';
|
||||||
|
import { TagsService } from 'src/app/services/tags.service';
|
||||||
|
import { ViewService } from 'src/app/services/view.service';
|
||||||
|
import { ConfirmDialog } from 'src/app/ui/confirm/confirm.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'page-view-edit',
|
selector: 'page-view-edit',
|
||||||
templateUrl: './edit.page.html',
|
templateUrl: './edit.page.html',
|
||||||
styleUrls: ['./edit.page.scss']
|
styleUrls: ['./edit.page.scss']
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import { EntriesService } from '../../services/entries.service';
|
|||||||
import { PageEntries } from '../entries/entries.page';
|
import { PageEntries } from '../entries/entries.page';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'page-view',
|
selector: 'page-view',
|
||||||
templateUrl: './view.page.html',
|
templateUrl: './view.page.html',
|
||||||
styleUrls: ['./view.page.scss']
|
styleUrls: ['./view.page.scss']
|
||||||
|
|||||||
@@ -1,16 +1,17 @@
|
|||||||
import { Component, OnInit, Input, ViewChild } from '@angular/core';
|
import { Component, Input, OnInit, ViewChild } from '@angular/core';
|
||||||
import { MatDialog } from '@angular/material/dialog';
|
|
||||||
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||||
|
import { MatDialog } from '@angular/material/dialog';
|
||||||
|
|
||||||
import { AuthService } from '../../services/auth.service';
|
import { AuthService } from '../../services/auth.service';
|
||||||
import { VoteService } from '../../services/vote.service';
|
|
||||||
import { FlagService } from '../../services/flag.service';
|
|
||||||
import { CommentService } from '../../services/comment.service';
|
import { CommentService } from '../../services/comment.service';
|
||||||
|
import { FlagService } from '../../services/flag.service';
|
||||||
import { ModerationService } from '../../services/moderarion.service';
|
import { ModerationService } from '../../services/moderarion.service';
|
||||||
|
import { VoteService } from '../../services/vote.service';
|
||||||
import { ConfirmDialog } from '../../ui/confirm/confirm.component';
|
import { ConfirmDialog } from '../../ui/confirm/confirm.component';
|
||||||
import { UiComments } from '../comments/comments.ui';
|
import { UiComments } from '../comments/comments.ui';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'ui-comment',
|
selector: 'ui-comment',
|
||||||
templateUrl: './comment.ui.html',
|
templateUrl: './comment.ui.html',
|
||||||
styleUrls: ['./comment.ui.scss']
|
styleUrls: ['./comment.ui.scss']
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
import { Component, OnInit, Input } from '@angular/core';
|
import { Component, Input, OnInit } from '@angular/core';
|
||||||
import { CommentService } from '../../services/comment.service';
|
import { CommentService } from '../../services/comment.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'ui-commentcount',
|
selector: 'ui-commentcount',
|
||||||
templateUrl: './commentcount.ui.html',
|
templateUrl: './commentcount.ui.html',
|
||||||
styleUrls: ['./commentcount.ui.scss']
|
styleUrls: ['./commentcount.ui.scss']
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { Component, OnInit, ViewChild, Input } from '@angular/core';
|
import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
|
||||||
|
import { FormBuilder, FormGroup, NgForm, Validators } from '@angular/forms';
|
||||||
import { CommentService } from '../../services/comment.service';
|
import { CommentService } from '../../services/comment.service';
|
||||||
import { FormBuilder, FormGroup, Validators, NgForm } from '@angular/forms';
|
|
||||||
import { Output, EventEmitter } from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'ui-commentform',
|
selector: 'ui-commentform',
|
||||||
templateUrl: './commentform.ui.html',
|
templateUrl: './commentform.ui.html',
|
||||||
styleUrls: ['./commentform.ui.scss']
|
styleUrls: ['./commentform.ui.scss']
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
import { Component, OnInit, Input, OnDestroy } from '@angular/core';
|
import { Component, Input, OnDestroy, OnInit } from '@angular/core';
|
||||||
import { Subscription } from 'rxjs';
|
import { Subscription } from 'rxjs';
|
||||||
|
|
||||||
import { CommentService } from '../../services/comment.service';
|
import { CommentService } from '../../services/comment.service';
|
||||||
import { SettingsService } from '../../services/settings.service';
|
import { SettingsService } from '../../services/settings.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'ui-comments',
|
selector: 'ui-comments',
|
||||||
templateUrl: './comments.ui.html',
|
templateUrl: './comments.ui.html',
|
||||||
styleUrls: ['./comments.ui.scss']
|
styleUrls: ['./comments.ui.scss']
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
import {Component, Inject} from '@angular/core';
|
import { Component, Inject } from '@angular/core';
|
||||||
import {MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';
|
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
||||||
import {I18nService} from '../../services/i18n.service';
|
import { I18nService } from '../../services/i18n.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
templateUrl: 'confirm.component.html',
|
templateUrl: 'confirm.component.html',
|
||||||
styleUrls: ['./confirm.component.scss']
|
styleUrls: ['./confirm.component.scss']
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
import { Component, OnInit, Input } from '@angular/core';
|
import { Component, Input, OnInit } from '@angular/core';
|
||||||
import { Observable } from 'rxjs';
|
import { Observable } from 'rxjs';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'ui-entries',
|
selector: 'ui-entries',
|
||||||
templateUrl: './entries.ui.html',
|
templateUrl: './entries.ui.html',
|
||||||
styleUrls: [ './entries.ui.scss' ]
|
styleUrls: ['./entries.ui.scss']
|
||||||
})
|
})
|
||||||
export class UiEntries implements OnInit {
|
export class UiEntries implements OnInit {
|
||||||
|
|
||||||
@@ -14,12 +15,12 @@ export class UiEntries implements OnInit {
|
|||||||
@Input() gravityFilter: boolean = false;
|
@Input() gravityFilter: boolean = false;
|
||||||
@Input() filter: boolean = true;
|
@Input() filter: boolean = true;
|
||||||
@Input() text: boolean = false;
|
@Input() text: boolean = false;
|
||||||
pageSizeOptions: number[] = [ 1, 2, 3, 4, 5, 10, 15, 30, 50, 100 ];
|
pageSizeOptions: number[] = [1, 2, 3, 4, 5, 10, 15, 30, 50, 100];
|
||||||
filterOpen: boolean = false;
|
filterOpen: boolean = false;
|
||||||
searchTags: Observable<Object>;
|
searchTags: Observable<Object>;
|
||||||
boundTagsPickerChange: Function;
|
boundTagsPickerChange: Function;
|
||||||
boundExcludedTagsPickerChange: Function;
|
boundExcludedTagsPickerChange: Function;
|
||||||
entryTypes: string[] = [ undefined, 'LINK', 'DISCUSSION', 'QUESTION', 'INTERN' ];
|
entryTypes: string[] = [undefined, 'LINK', 'DISCUSSION', 'QUESTION', 'INTERN'];
|
||||||
tags: string[] = [];
|
tags: string[] = [];
|
||||||
excludedTags: string[] = [];
|
excludedTags: string[] = [];
|
||||||
|
|
||||||
@@ -35,15 +36,15 @@ export class UiEntries implements OnInit {
|
|||||||
this.filterOpen = false;
|
this.filterOpen = false;
|
||||||
if (this.entries.filter) {
|
if (this.entries.filter) {
|
||||||
for (const param in this.entries.filter) {
|
for (const param in this.entries.filter) {
|
||||||
if (this.entries.filter[ param ]) {
|
if (this.entries.filter[param]) {
|
||||||
this.filterOpen = true;
|
this.filterOpen = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (param == 'tags' && this.entries.filter[ param ]) {
|
if (param == 'tags' && this.entries.filter[param]) {
|
||||||
this.tags = this.entries.filter[ param ].split(',');
|
this.tags = this.entries.filter[param].split(',');
|
||||||
}
|
}
|
||||||
if (param == 'excludedTags' && this.entries.filter[ param ]) {
|
if (param == 'excludedTags' && this.entries.filter[param]) {
|
||||||
this.excludedTags = this.entries.filter[ param ].split(',');
|
this.excludedTags = this.entries.filter[param].split(',');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -66,8 +67,8 @@ export class UiEntries implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setFilter(key: string, value) {
|
setFilter(key: string, value) {
|
||||||
if (value != this.entries.filter[ key ]) {
|
if (value != this.entries.filter[key]) {
|
||||||
this.entries.filter[ key ] = value;
|
this.entries.filter[key] = value;
|
||||||
this.entries.number = 0;
|
this.entries.number = 0;
|
||||||
this.update({ pageIndex: this.entries.number, pageSize: this.entries.size, length: this.entries.totalElements });
|
this.update({ pageIndex: this.entries.number, pageSize: this.entries.size, length: this.entries.totalElements });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
@import '../../../variables.scss';
|
@import '../../../variables.scss';
|
||||||
|
|
||||||
|
.mat-line {
|
||||||
|
white-space: break-spaces;
|
||||||
|
}
|
||||||
|
|
||||||
.mat-icon {
|
.mat-icon {
|
||||||
top: 3px;
|
top: 3px;
|
||||||
position: relative;
|
position: relative;
|
||||||
@@ -53,7 +57,6 @@ span.mod {
|
|||||||
opacity: 0.7;
|
opacity: 0.7;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.tag {
|
.tag {
|
||||||
cursor: default;
|
cursor: default;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|||||||
@@ -1,16 +1,17 @@
|
|||||||
import { Component, OnInit, Input } from '@angular/core';
|
import { Component, Input, OnInit } from '@angular/core';
|
||||||
import { MatDialog } from '@angular/material/dialog';
|
import { MatDialog } from '@angular/material/dialog';
|
||||||
|
|
||||||
import { AuthService } from '../../services/auth.service';
|
|
||||||
import { VoteService } from '../../services/vote.service';
|
|
||||||
import { FlagService } from '../../services/flag.service';
|
|
||||||
import { BookmarksService } from '../../services/bookmarks.service';
|
|
||||||
import { ModerationService } from '../../services/moderarion.service';
|
|
||||||
import { ConfirmDialog } from '../../ui/confirm/confirm.component';
|
|
||||||
import { EntriesService } from 'src/app/services/entries.service';
|
|
||||||
import { ActivatedRoute, Router } from '@angular/router';
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
|
import { EntriesService } from 'src/app/services/entries.service';
|
||||||
|
import { AuthService } from '../../services/auth.service';
|
||||||
|
import { BookmarksService } from '../../services/bookmarks.service';
|
||||||
|
import { FlagService } from '../../services/flag.service';
|
||||||
|
import { ModerationService } from '../../services/moderarion.service';
|
||||||
|
import { VoteService } from '../../services/vote.service';
|
||||||
|
import { ConfirmDialog } from '../../ui/confirm/confirm.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'ui-entry',
|
selector: 'ui-entry',
|
||||||
templateUrl: './entry.ui.html',
|
templateUrl: './entry.ui.html',
|
||||||
styleUrls: ['./entry.ui.scss']
|
styleUrls: ['./entry.ui.scss']
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
</mat-toolbar>
|
</mat-toolbar>
|
||||||
|
|
||||||
<mat-sidenav-container>
|
<mat-sidenav-container>
|
||||||
<mat-sidenav #sidenav [mode]="isBiggerScreen() ? 'side' : 'over'" [(opened)]="opened || searchFocus"
|
<mat-sidenav #sidenav [mode]="isBiggerScreen() ? 'side' : 'over'" [opened]="opened || searchFocus"
|
||||||
[autoFocus]="false" (click)="!isBiggerScreen() && this.close()">
|
[autoFocus]="false" (click)="!isBiggerScreen() && this.close()">
|
||||||
<mat-nav-list *ngIf="authenticated">
|
<mat-nav-list *ngIf="authenticated">
|
||||||
<ui-viewmenu></ui-viewmenu>
|
<ui-viewmenu></ui-viewmenu>
|
||||||
|
|||||||
@@ -1,19 +1,20 @@
|
|||||||
import { Component, HostListener } from '@angular/core';
|
import { Component, HostListener } from '@angular/core';
|
||||||
import { Router } from '@angular/router';
|
|
||||||
import { DomSanitizer } from '@angular/platform-browser';
|
|
||||||
import { MatIconRegistry } from '@angular/material/icon';
|
|
||||||
import { DateAdapter } from '@angular/material/core';
|
import { DateAdapter } from '@angular/material/core';
|
||||||
|
import { MatIconRegistry } from '@angular/material/icon';
|
||||||
|
import { DomSanitizer } from '@angular/platform-browser';
|
||||||
|
import { Router } from '@angular/router';
|
||||||
import { fromEvent } from 'rxjs';
|
import { fromEvent } from 'rxjs';
|
||||||
|
|
||||||
import { AuthService } from '../../services/auth.service';
|
import { AuthService } from '../../services/auth.service';
|
||||||
import { UserService } from '../../services/user.service';
|
|
||||||
import { I18nService } from '../../services/i18n.service';
|
import { I18nService } from '../../services/i18n.service';
|
||||||
import { SettingsService } from '../../services/settings.service';
|
import { SettingsService } from '../../services/settings.service';
|
||||||
|
import { UserService } from '../../services/user.service';
|
||||||
|
|
||||||
import packageJson from '../../../../package.json';
|
|
||||||
import { SwUpdate } from '@angular/service-worker';
|
import { SwUpdate } from '@angular/service-worker';
|
||||||
|
import packageJson from '../../../../package.json';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'ui-main',
|
selector: 'ui-main',
|
||||||
templateUrl: './main.ui.html',
|
templateUrl: './main.ui.html',
|
||||||
styleUrls: ['./main.ui.scss']
|
styleUrls: ['./main.ui.scss']
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
import { Component, OnInit, Input } from '@angular/core';
|
import { Component, Input, OnInit } from '@angular/core';
|
||||||
import { VoteService } from '../../services/vote.service';
|
import { VoteService } from '../../services/vote.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'ui-points',
|
selector: 'ui-points',
|
||||||
templateUrl: './points.ui.html',
|
templateUrl: './points.ui.html',
|
||||||
styleUrls: ['./points.ui.scss']
|
styleUrls: ['./points.ui.scss']
|
||||||
|
|||||||
@@ -7,9 +7,9 @@
|
|||||||
<mat-icon>cancel</mat-icon>
|
<mat-icon>cancel</mat-icon>
|
||||||
</button>
|
</button>
|
||||||
</mat-chip-row>
|
</mat-chip-row>
|
||||||
<input *ngIf="max == 0 || !tags || tags.length < max" #tagsInput [formControl]="searchFormControl"
|
<input #tagsInput [formControl]="searchFormControl"
|
||||||
[matAutocomplete]="auto" [matChipInputFor]="tagList" [matChipInputSeparatorKeyCodes]="separatorKeysCodes"
|
[matAutocomplete]="auto" [matChipInputFor]="tagList" [matChipInputSeparatorKeyCodes]="separatorKeysCodes"
|
||||||
(matChipInputTokenEnd)="addInputTag($event)">
|
(matChipInputTokenEnd)="addInputTag($event)" [readOnly]="max && tags && tags.length >= max">
|
||||||
<mat-hint *ngIf="max > 1" align="end">{{tags && tags.length || 0}}/{{max}}</mat-hint>
|
<mat-hint *ngIf="max > 1" align="end">{{tags && tags.length || 0}}/{{max}}</mat-hint>
|
||||||
</mat-chip-grid>
|
</mat-chip-grid>
|
||||||
<mat-autocomplete #auto="matAutocomplete" (optionSelected)="addOptionTag($event)">
|
<mat-autocomplete #auto="matAutocomplete" (optionSelected)="addOptionTag($event)">
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { COMMA, ENTER, SPACE } from '@angular/cdk/keycodes';
|
import { COMMA, ENTER, SPACE } from '@angular/cdk/keycodes';
|
||||||
import { Component, OnInit, Input, ViewChild, ElementRef } from '@angular/core';
|
import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';
|
||||||
import { FormControl } from '@angular/forms';
|
import { FormControl } from '@angular/forms';
|
||||||
import { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
|
import { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
|
||||||
import { MatChipInputEvent } from '@angular/material/chips';
|
import { MatChipInputEvent } from '@angular/material/chips';
|
||||||
@@ -8,6 +8,7 @@ import { debounceTime, switchMap } from 'rxjs/operators';
|
|||||||
import { TagsService } from 'src/app/services/tags.service';
|
import { TagsService } from 'src/app/services/tags.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'ui-tagspicker',
|
selector: 'ui-tagspicker',
|
||||||
templateUrl: './tagspicker.ui.html',
|
templateUrl: './tagspicker.ui.html',
|
||||||
styleUrls: ['./tagspicker.ui.scss']
|
styleUrls: ['./tagspicker.ui.scss']
|
||||||
@@ -59,12 +60,16 @@ export class UiTagsPicker implements OnInit {
|
|||||||
if (this.change) {
|
if (this.change) {
|
||||||
this.change(this.model);
|
this.change(this.model);
|
||||||
}
|
}
|
||||||
this.tagsInput.nativeElement.value = '';
|
if (this.tagsInput) {
|
||||||
|
this.tagsInput.nativeElement.value = '';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
addInputTag(event: MatChipInputEvent): void {
|
addInputTag(event: MatChipInputEvent): void {
|
||||||
this.addTag((event.value || "").trim())
|
this.addTag((event.value || "").trim());
|
||||||
event.chipInput!.clear();
|
if (event.chipInput) {
|
||||||
|
event.chipInput.clear();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
addOptionTag(event: MatAutocompleteSelectedEvent): void {
|
addOptionTag(event: MatAutocompleteSelectedEvent): void {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { SettingsService } from 'src/app/services/settings.service';
|
|||||||
import { ViewService } from 'src/app/services/view.service';
|
import { ViewService } from 'src/app/services/view.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
standalone: false,
|
||||||
selector: 'ui-viewmenu',
|
selector: 'ui-viewmenu',
|
||||||
templateUrl: 'viewmenu.ui.html',
|
templateUrl: 'viewmenu.ui.html',
|
||||||
styleUrls: ['./viewmenu.ui.scss']
|
styleUrls: ['./viewmenu.ui.scss']
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { Pipe, PipeTransform } from '@angular/core';
|
|||||||
import { I18nService } from './../services/i18n.service';
|
import { I18nService } from './../services/i18n.service';
|
||||||
|
|
||||||
@Pipe({
|
@Pipe({
|
||||||
|
standalone: false,
|
||||||
name: 'i18n'
|
name: 'i18n'
|
||||||
})
|
})
|
||||||
export class I18nPipe implements PipeTransform {
|
export class I18nPipe implements PipeTransform {
|
||||||
@@ -18,6 +19,7 @@ export class I18nPipe implements PipeTransform {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Pipe({
|
@Pipe({
|
||||||
|
standalone: false,
|
||||||
name: 'i18nEmpty'
|
name: 'i18nEmpty'
|
||||||
})
|
})
|
||||||
export class I18nEmptyPipe implements PipeTransform {
|
export class I18nEmptyPipe implements PipeTransform {
|
||||||
|
|||||||
@@ -1,13 +1,16 @@
|
|||||||
import { Pipe, PipeTransform } from '@angular/core';
|
import { Pipe, PipeTransform } from '@angular/core';
|
||||||
import * as moment from 'moment';
|
import * as moment from 'moment';
|
||||||
|
|
||||||
@Pipe({ name: 'datef' })
|
@Pipe({
|
||||||
|
standalone: false,
|
||||||
|
name: 'datef'
|
||||||
|
})
|
||||||
export class MomentPipe implements PipeTransform {
|
export class MomentPipe implements PipeTransform {
|
||||||
transform(value: Date | moment.Moment, dateFormat: string): any {
|
transform(value: Date | moment.Moment, dateFormat: string): any {
|
||||||
if (!dateFormat) {
|
if (!dateFormat) {
|
||||||
return moment(value).fromNow();
|
return moment(value).fromNow();
|
||||||
}
|
}
|
||||||
|
|
||||||
return moment(value).format(dateFormat);
|
return moment(value).format(dateFormat);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,10 @@
|
|||||||
import { Pipe, PipeTransform } from '@angular/core';
|
import { Pipe, PipeTransform } from '@angular/core';
|
||||||
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
|
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
|
||||||
|
|
||||||
@Pipe({ name: 'urltext' })
|
@Pipe({
|
||||||
|
standalone: false,
|
||||||
|
name: 'urltext'
|
||||||
|
})
|
||||||
export class UrlTextPipe implements PipeTransform {
|
export class UrlTextPipe implements PipeTransform {
|
||||||
|
|
||||||
httpPattern = /(\b(https?:\/\/)([-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]))/ig;
|
httpPattern = /(\b(https?:\/\/)([-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]))/ig;
|
||||||
@@ -16,7 +19,10 @@ export class UrlTextPipe implements PipeTransform {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Pipe({ name: 'urlbase' })
|
@Pipe({
|
||||||
|
standalone: false,
|
||||||
|
name: 'urlbase'
|
||||||
|
})
|
||||||
export class UrlBasePipe implements PipeTransform {
|
export class UrlBasePipe implements PipeTransform {
|
||||||
|
|
||||||
httpPattern = /(\b(https?:\/\/)([-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]))/ig;
|
httpPattern = /(\b(https?:\/\/)([-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]))/ig;
|
||||||
|
|||||||
@@ -11,22 +11,6 @@
|
|||||||
|
|
||||||
@import './variables.scss';
|
@import './variables.scss';
|
||||||
|
|
||||||
// Define the palettes for your theme using the Material Design palettes available in palette.scss
|
|
||||||
// (imported above). For each palette, you can optionally specify a default, lighter, and darker
|
|
||||||
// hue. Available color palettes: https://material.io/design/color/
|
|
||||||
$light-theme: mat.define-light-theme((color: (primary: $light-primary,
|
|
||||||
accent: $light-accent,
|
|
||||||
warn: $light-warn,
|
|
||||||
)));
|
|
||||||
|
|
||||||
// Define an alternate dark theme.
|
|
||||||
$dark-theme: mat.define-dark-theme((color: (primary: $dark-primary,
|
|
||||||
accent: $light-accent,
|
|
||||||
warn: $light-warn,
|
|
||||||
)));
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Include theme styles for core and each component used in your app.
|
// Include theme styles for core and each component used in your app.
|
||||||
// Alternatively, you can import and @include the theme mixins for each component
|
// Alternatively, you can import and @include the theme mixins for each component
|
||||||
// that you are using.
|
// that you are using.
|
||||||
|
|||||||
+26
-12
@@ -1,19 +1,33 @@
|
|||||||
@use '@angular/material' as mat;
|
@use '@angular/material' as mat;
|
||||||
|
|
||||||
$light-primary: mat.define-palette(mat.$deep-orange-palette, 800);
|
$light-primary: mat.m2-define-palette(mat.$m2-deep-orange-palette, 800);
|
||||||
$light-accent: mat.define-palette(mat.$grey-palette, A400, A200, A700);
|
$light-accent: mat.m2-define-palette(mat.$m2-grey-palette, A400, A200, A700);
|
||||||
$light-warn: mat.define-palette(mat.$red-palette);
|
$light-warn: mat.m2-define-palette(mat.$m2-red-palette);
|
||||||
|
|
||||||
$primary: mat.get-color-from-palette($light-primary);
|
$dark-primary: mat.m2-define-palette(mat.$m2-deep-orange-palette, 900, 500, 700);
|
||||||
$accent: mat.get-color-from-palette($light-accent);
|
$dark-accent: mat.m2-define-palette(mat.$m2-grey-palette, A200, A100, A400);
|
||||||
$warn: mat.get-color-from-palette($light-warn);
|
$dark-warn: mat.m2-define-palette(mat.$m2-red-palette);
|
||||||
|
|
||||||
$dark-primary: mat.define-palette(mat.$deep-orange-palette, 900, 500, 700);
|
// Define the palettes for your theme using the Material Design palettes available in palette.scss
|
||||||
$dark-accent: mat.define-palette(mat.$grey-palette, A200, A100, A400);
|
// (imported above). For each palette, you can optionally specify a default, lighter, and darker
|
||||||
$dark-warn: mat.define-palette(mat.$red-palette);
|
// hue. Available color palettes: https://material.io/design/color/
|
||||||
|
$light-theme: mat.m2-define-light-theme((color: (primary: $light-primary,
|
||||||
|
accent: $light-accent,
|
||||||
|
warn: $light-warn,
|
||||||
|
)));
|
||||||
|
|
||||||
|
// Define an alternate dark theme.
|
||||||
|
$dark-theme: mat.m2-define-dark-theme((color: (primary: $dark-primary,
|
||||||
|
accent: $light-accent,
|
||||||
|
warn: $light-warn,
|
||||||
|
)));
|
||||||
|
|
||||||
|
$primary: mat.get-theme-color($light-theme, primary, default);
|
||||||
|
$accent: mat.get-theme-color($light-theme, accent, default);
|
||||||
|
$warn: mat.get-theme-color($light-theme, warn, default);
|
||||||
|
|
||||||
.dark-theme {
|
.dark-theme {
|
||||||
$primary: mat.get-color-from-palette($light-primary);
|
$primary: mat.get-theme-color($dark-theme, primary, default);
|
||||||
$accent: mat.get-color-from-palette($light-accent);
|
$accent: mat.get-theme-color($dark-theme, accent, default);
|
||||||
$warn: mat.get-color-from-palette($light-warn);
|
$warn: mat.get-theme-color($dark-theme, warn, default);
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user