Migration Angular 18 -> 19 (ng update, standalone par defaut, build OK)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -30,11 +30,10 @@ export interface ChatPrimaryAction {
|
||||
* ou la conversation n'a aucune valeur au-dela de l'usage immediat).
|
||||
*/
|
||||
@Component({
|
||||
selector: 'app-ai-chat-drawer',
|
||||
standalone: true,
|
||||
imports: [CommonModule, FormsModule, LucideAngularModule, MarkdownPipe],
|
||||
templateUrl: './ai-chat-drawer.component.html',
|
||||
styleUrls: ['./ai-chat-drawer.component.scss'],
|
||||
selector: 'app-ai-chat-drawer',
|
||||
imports: [CommonModule, FormsModule, LucideAngularModule, MarkdownPipe],
|
||||
templateUrl: './ai-chat-drawer.component.html',
|
||||
styleUrls: ['./ai-chat-drawer.component.scss']
|
||||
})
|
||||
export class AiChatDrawerComponent implements OnInit, OnChanges, OnDestroy {
|
||||
readonly X = X;
|
||||
|
||||
@@ -22,11 +22,10 @@ export interface BreadcrumbItem {
|
||||
* ]"></app-breadcrumb>
|
||||
*/
|
||||
@Component({
|
||||
selector: 'app-breadcrumb',
|
||||
standalone: true,
|
||||
imports: [CommonModule, RouterLink],
|
||||
templateUrl: './breadcrumb.component.html',
|
||||
styleUrls: ['./breadcrumb.component.scss']
|
||||
selector: 'app-breadcrumb',
|
||||
imports: [CommonModule, RouterLink],
|
||||
templateUrl: './breadcrumb.component.html',
|
||||
styleUrls: ['./breadcrumb.component.scss']
|
||||
})
|
||||
export class BreadcrumbComponent {
|
||||
@Input() items: BreadcrumbItem[] = [];
|
||||
|
||||
@@ -20,11 +20,10 @@ import { LucideAngularModule, X } from 'lucide-angular';
|
||||
* - Clic sur X retire le chip
|
||||
*/
|
||||
@Component({
|
||||
selector: 'app-chips-input',
|
||||
standalone: true,
|
||||
imports: [CommonModule, FormsModule, LucideAngularModule],
|
||||
templateUrl: './chips-input.component.html',
|
||||
styleUrls: ['./chips-input.component.scss']
|
||||
selector: 'app-chips-input',
|
||||
imports: [CommonModule, FormsModule, LucideAngularModule],
|
||||
templateUrl: './chips-input.component.html',
|
||||
styleUrls: ['./chips-input.component.scss']
|
||||
})
|
||||
export class ChipsInputComponent {
|
||||
readonly X = X;
|
||||
|
||||
@@ -4,10 +4,9 @@ import { ConfirmDialogComponent } from './confirm-dialog.component';
|
||||
import { ConfirmDialogService } from './confirm-dialog.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-confirm-dialog-host',
|
||||
standalone: true,
|
||||
imports: [CommonModule, ConfirmDialogComponent],
|
||||
template: `
|
||||
selector: 'app-confirm-dialog-host',
|
||||
imports: [CommonModule, ConfirmDialogComponent],
|
||||
template: `
|
||||
<app-confirm-dialog
|
||||
*ngIf="(svc.state$ | async) as s"
|
||||
[open]="s.open"
|
||||
|
||||
@@ -5,11 +5,10 @@ import { LucideAngularModule, TriangleAlert, X } from 'lucide-angular';
|
||||
export type ConfirmDialogVariant = 'warning' | 'danger' | 'info';
|
||||
|
||||
@Component({
|
||||
selector: 'app-confirm-dialog',
|
||||
standalone: true,
|
||||
imports: [CommonModule, LucideAngularModule],
|
||||
templateUrl: './confirm-dialog.component.html',
|
||||
styleUrls: ['./confirm-dialog.component.scss']
|
||||
selector: 'app-confirm-dialog',
|
||||
imports: [CommonModule, LucideAngularModule],
|
||||
templateUrl: './confirm-dialog.component.html',
|
||||
styleUrls: ['./confirm-dialog.component.scss']
|
||||
})
|
||||
export class ConfirmDialogComponent {
|
||||
readonly TriangleAlert = TriangleAlert;
|
||||
|
||||
@@ -16,11 +16,10 @@ import { ImageGalleryComponent } from '../image-gallery/image-gallery.component'
|
||||
* qui gere l'upload, la suppression et le respect du layout.
|
||||
*/
|
||||
@Component({
|
||||
selector: 'app-dynamic-fields-form',
|
||||
standalone: true,
|
||||
imports: [CommonModule, FormsModule, ImageGalleryComponent],
|
||||
templateUrl: './dynamic-fields-form.component.html',
|
||||
styleUrls: ['./dynamic-fields-form.component.scss']
|
||||
selector: 'app-dynamic-fields-form',
|
||||
imports: [CommonModule, FormsModule, ImageGalleryComponent],
|
||||
templateUrl: './dynamic-fields-form.component.html',
|
||||
styleUrls: ['./dynamic-fields-form.component.scss']
|
||||
})
|
||||
export class DynamicFieldsFormComponent {
|
||||
@Input() fields: TemplateField[] = [];
|
||||
|
||||
@@ -12,11 +12,10 @@ import { LucideAngularModule, ChevronDown, ChevronUp } from 'lucide-angular';
|
||||
* </app-expandable-section>
|
||||
*/
|
||||
@Component({
|
||||
selector: 'app-expandable-section',
|
||||
standalone: true,
|
||||
imports: [CommonModule, LucideAngularModule],
|
||||
templateUrl: './expandable-section.component.html',
|
||||
styleUrls: ['./expandable-section.component.scss']
|
||||
selector: 'app-expandable-section',
|
||||
imports: [CommonModule, LucideAngularModule],
|
||||
templateUrl: './expandable-section.component.html',
|
||||
styleUrls: ['./expandable-section.component.scss']
|
||||
})
|
||||
export class ExpandableSectionComponent {
|
||||
readonly ChevronDown = ChevronDown;
|
||||
|
||||
@@ -30,11 +30,10 @@ interface SearchResult {
|
||||
* Navigation clavier : ↑↓ ↵ Esc.
|
||||
*/
|
||||
@Component({
|
||||
selector: 'app-global-search',
|
||||
standalone: true,
|
||||
imports: [CommonModule, FormsModule, LucideAngularModule],
|
||||
templateUrl: './global-search.component.html',
|
||||
styleUrls: ['./global-search.component.scss']
|
||||
selector: 'app-global-search',
|
||||
imports: [CommonModule, FormsModule, LucideAngularModule],
|
||||
templateUrl: './global-search.component.html',
|
||||
styleUrls: ['./global-search.component.scss']
|
||||
})
|
||||
export class GlobalSearchComponent implements OnInit, OnDestroy {
|
||||
readonly Search = Search;
|
||||
|
||||
@@ -19,10 +19,9 @@ export interface IconPickerOption {
|
||||
* d'icones lui-meme — l'appelant lui passe la banque a afficher.
|
||||
*/
|
||||
@Component({
|
||||
selector: 'app-icon-picker',
|
||||
standalone: true,
|
||||
imports: [CommonModule, LucideAngularModule],
|
||||
template: `
|
||||
selector: 'app-icon-picker',
|
||||
imports: [CommonModule, LucideAngularModule],
|
||||
template: `
|
||||
<div class="icon-grid">
|
||||
<button
|
||||
type="button"
|
||||
@@ -36,7 +35,7 @@ export interface IconPickerOption {
|
||||
</button>
|
||||
</div>
|
||||
`,
|
||||
styleUrls: ['./icon-picker.component.scss']
|
||||
styleUrls: ['./icon-picker.component.scss']
|
||||
})
|
||||
export class IconPickerComponent {
|
||||
@Input() options: IconPickerOption[] = [];
|
||||
|
||||
@@ -26,11 +26,10 @@ import { ImageUploaderComponent } from '../image-uploader/image-uploader.compone
|
||||
* (imageIdsChange)="tempIds = $event"></app-image-gallery>
|
||||
*/
|
||||
@Component({
|
||||
selector: 'app-image-gallery',
|
||||
standalone: true,
|
||||
imports: [CommonModule, LucideAngularModule, ImageUploaderComponent],
|
||||
templateUrl: './image-gallery.component.html',
|
||||
styleUrls: ['./image-gallery.component.scss']
|
||||
selector: 'app-image-gallery',
|
||||
imports: [CommonModule, LucideAngularModule, ImageUploaderComponent],
|
||||
templateUrl: './image-gallery.component.html',
|
||||
styleUrls: ['./image-gallery.component.scss']
|
||||
})
|
||||
export class ImageGalleryComponent {
|
||||
readonly X = X;
|
||||
|
||||
@@ -18,11 +18,10 @@ import { Image } from '../../services/image.model';
|
||||
* - Afficher l'etat loading et les erreurs
|
||||
*/
|
||||
@Component({
|
||||
selector: 'app-image-uploader',
|
||||
standalone: true,
|
||||
imports: [CommonModule, LucideAngularModule],
|
||||
templateUrl: './image-uploader.component.html',
|
||||
styleUrls: ['./image-uploader.component.scss']
|
||||
selector: 'app-image-uploader',
|
||||
imports: [CommonModule, LucideAngularModule],
|
||||
templateUrl: './image-uploader.component.html',
|
||||
styleUrls: ['./image-uploader.component.scss']
|
||||
})
|
||||
export class ImageUploaderComponent {
|
||||
readonly Upload = Upload;
|
||||
|
||||
@@ -25,11 +25,10 @@ import { Page } from '../../services/page.model';
|
||||
* - Exclut la page courante et les pages déjà sélectionnées
|
||||
*/
|
||||
@Component({
|
||||
selector: 'app-lore-link-picker',
|
||||
standalone: true,
|
||||
imports: [CommonModule, FormsModule, LucideAngularModule],
|
||||
templateUrl: './lore-link-picker.component.html',
|
||||
styleUrls: ['./lore-link-picker.component.scss']
|
||||
selector: 'app-lore-link-picker',
|
||||
imports: [CommonModule, FormsModule, LucideAngularModule],
|
||||
templateUrl: './lore-link-picker.component.html',
|
||||
styleUrls: ['./lore-link-picker.component.scss']
|
||||
})
|
||||
export class LoreLinkPickerComponent {
|
||||
readonly X = X;
|
||||
|
||||
@@ -33,11 +33,10 @@ export interface PersonaLike {
|
||||
}
|
||||
|
||||
@Component({
|
||||
selector: 'app-persona-view',
|
||||
standalone: true,
|
||||
imports: [CommonModule, LucideAngularModule, ImageGalleryComponent],
|
||||
templateUrl: './persona-view.component.html',
|
||||
styleUrls: ['./persona-view.component.scss']
|
||||
selector: 'app-persona-view',
|
||||
imports: [CommonModule, LucideAngularModule, ImageGalleryComponent],
|
||||
templateUrl: './persona-view.component.html',
|
||||
styleUrls: ['./persona-view.component.scss']
|
||||
})
|
||||
export class PersonaViewComponent {
|
||||
readonly BookOpen = BookOpen;
|
||||
|
||||
@@ -14,11 +14,10 @@ import { forkJoin } from 'rxjs';
|
||||
* met à jour la valeur du Playthrough courant.</p>
|
||||
*/
|
||||
@Component({
|
||||
selector: 'app-playthrough-flags-manager',
|
||||
standalone: true,
|
||||
imports: [CommonModule, FormsModule, LucideAngularModule],
|
||||
templateUrl: './playthrough-flags-manager.component.html',
|
||||
styleUrls: ['./playthrough-flags-manager.component.scss']
|
||||
selector: 'app-playthrough-flags-manager',
|
||||
imports: [CommonModule, FormsModule, LucideAngularModule],
|
||||
templateUrl: './playthrough-flags-manager.component.html',
|
||||
styleUrls: ['./playthrough-flags-manager.component.scss']
|
||||
})
|
||||
export class PlaythroughFlagsManagerComponent implements OnInit, OnChanges {
|
||||
|
||||
|
||||
@@ -12,11 +12,10 @@ import { Chapter, Prerequisite } from '../../services/campaign.model';
|
||||
* un menu à 3 entrées (quête, session, fait).
|
||||
*/
|
||||
@Component({
|
||||
selector: 'app-prerequisite-editor',
|
||||
standalone: true,
|
||||
imports: [CommonModule, FormsModule, LucideAngularModule],
|
||||
templateUrl: './prerequisite-editor.component.html',
|
||||
styleUrls: ['./prerequisite-editor.component.scss']
|
||||
selector: 'app-prerequisite-editor',
|
||||
imports: [CommonModule, FormsModule, LucideAngularModule],
|
||||
templateUrl: './prerequisite-editor.component.html',
|
||||
styleUrls: ['./prerequisite-editor.component.scss']
|
||||
})
|
||||
export class PrerequisiteEditorComponent {
|
||||
/** Liste courante. */
|
||||
|
||||
@@ -8,11 +8,10 @@ import { QuestStatus } from '../../services/campaign.model';
|
||||
* Composant standalone, sans dépendance métier.
|
||||
*/
|
||||
@Component({
|
||||
selector: 'app-quest-status-badge',
|
||||
standalone: true,
|
||||
imports: [CommonModule, LucideAngularModule],
|
||||
templateUrl: './quest-status-badge.component.html',
|
||||
styleUrls: ['./quest-status-badge.component.scss']
|
||||
selector: 'app-quest-status-badge',
|
||||
imports: [CommonModule, LucideAngularModule],
|
||||
templateUrl: './quest-status-badge.component.html',
|
||||
styleUrls: ['./quest-status-badge.component.scss']
|
||||
})
|
||||
export class QuestStatusBadgeComponent {
|
||||
@Input() status: QuestStatus | undefined | null = 'AVAILABLE';
|
||||
|
||||
@@ -14,11 +14,10 @@ import { Room, RoomBranch } from '../../services/campaign.model';
|
||||
* Les branches (graphe inter-pièces) sont éditables dans la card expand.
|
||||
*/
|
||||
@Component({
|
||||
selector: 'app-rooms-editor',
|
||||
standalone: true,
|
||||
imports: [CommonModule, FormsModule, LucideAngularModule],
|
||||
templateUrl: './rooms-editor.component.html',
|
||||
styleUrls: ['./rooms-editor.component.scss']
|
||||
selector: 'app-rooms-editor',
|
||||
imports: [CommonModule, FormsModule, LucideAngularModule],
|
||||
templateUrl: './rooms-editor.component.html',
|
||||
styleUrls: ['./rooms-editor.component.scss']
|
||||
})
|
||||
export class RoomsEditorComponent {
|
||||
|
||||
|
||||
@@ -6,11 +6,10 @@ import { TreeItem, TreeCreateAction, SidebarAction, BottomPanel, BottomPanelItem
|
||||
import { resolveIcon } from '../../lore/lore-icons';
|
||||
|
||||
@Component({
|
||||
selector: 'app-secondary-sidebar',
|
||||
standalone: true,
|
||||
imports: [CommonModule, LucideAngularModule],
|
||||
templateUrl: './secondary-sidebar.component.html',
|
||||
styleUrls: ['./secondary-sidebar.component.scss']
|
||||
selector: 'app-secondary-sidebar',
|
||||
imports: [CommonModule, LucideAngularModule],
|
||||
templateUrl: './secondary-sidebar.component.html',
|
||||
styleUrls: ['./secondary-sidebar.component.scss']
|
||||
})
|
||||
export class SecondarySidebarComponent implements OnDestroy {
|
||||
@Input() title = '';
|
||||
|
||||
@@ -20,11 +20,10 @@ import { ImageUploaderComponent } from '../image-uploader/image-uploader.compone
|
||||
* lien (passe imageId a null). L'image reste accessible via d'autres entites.
|
||||
*/
|
||||
@Component({
|
||||
selector: 'app-single-image-picker',
|
||||
standalone: true,
|
||||
imports: [CommonModule, LucideAngularModule, ImageUploaderComponent],
|
||||
templateUrl: './single-image-picker.component.html',
|
||||
styleUrls: ['./single-image-picker.component.scss']
|
||||
selector: 'app-single-image-picker',
|
||||
imports: [CommonModule, LucideAngularModule, ImageUploaderComponent],
|
||||
templateUrl: './single-image-picker.component.html',
|
||||
styleUrls: ['./single-image-picker.component.scss']
|
||||
})
|
||||
export class SingleImagePickerComponent {
|
||||
readonly X = X;
|
||||
|
||||
@@ -15,11 +15,10 @@ import { TemplateField, FieldType, ImageLayout } from '../../services/template.m
|
||||
* mais c'est le parent qui decide du blocage du submit.
|
||||
*/
|
||||
@Component({
|
||||
selector: 'app-template-fields-editor',
|
||||
standalone: true,
|
||||
imports: [CommonModule, FormsModule, LucideAngularModule],
|
||||
templateUrl: './template-fields-editor.component.html',
|
||||
styleUrls: ['./template-fields-editor.component.scss']
|
||||
selector: 'app-template-fields-editor',
|
||||
imports: [CommonModule, FormsModule, LucideAngularModule],
|
||||
templateUrl: './template-fields-editor.component.html',
|
||||
styleUrls: ['./template-fields-editor.component.scss']
|
||||
})
|
||||
export class TemplateFieldsEditorComponent {
|
||||
readonly Plus = Plus;
|
||||
|
||||
@@ -9,11 +9,10 @@ import { VersionCheckerService } from '../../services/version-checker.service';
|
||||
* ouvert. Propose un reload en un clic.
|
||||
*/
|
||||
@Component({
|
||||
selector: 'app-update-banner',
|
||||
standalone: true,
|
||||
imports: [CommonModule, LucideAngularModule],
|
||||
templateUrl: './update-banner.component.html',
|
||||
styleUrls: ['./update-banner.component.scss']
|
||||
selector: 'app-update-banner',
|
||||
imports: [CommonModule, LucideAngularModule],
|
||||
templateUrl: './update-banner.component.html',
|
||||
styleUrls: ['./update-banner.component.scss']
|
||||
})
|
||||
export class UpdateBannerComponent {
|
||||
readonly RefreshCw = RefreshCw;
|
||||
|
||||
Reference in New Issue
Block a user