Skip to content

Commit

Permalink
feat: invert messages
Browse files Browse the repository at this point in the history
  • Loading branch information
ky-one committed Jul 13, 2024
1 parent 202f41c commit b716944
Show file tree
Hide file tree
Showing 7 changed files with 57 additions and 18 deletions.
13 changes: 10 additions & 3 deletions projects/mantic-ui/src/lib/components/error/error.component.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,25 @@
import { Component } from '@angular/core';
import { BaseComponent } from '../../base/base.component';
import { takeUntil } from 'rxjs/operators';
import { InvertibleComponent } from '../../base/invertible.component';
import { IgnoredDirective } from '../../directives/ignored.directive';
import { MessageComponent } from '../message/message.component';

@Component({
selector: 'm-error',
templateUrl: './error.component.html',
styleUrls: ['./error.component.scss'],
standalone: true,
hostDirectives: [IgnoredDirective.default],
providers: [...BaseComponent.providers]
providers: [...InvertibleComponent.providers]
})
export class ErrorComponent extends BaseComponent {
export class ErrorComponent extends InvertibleComponent {
public constructor() {
super();
this.classes.registerFixed('visible', 'error', 'message');
}

public override ngOnInit(): void {
super.ngOnInit();
MessageComponent.defaults.invertedChange.pipe(takeUntil(this.destroy)).subscribe(value => this.refreshInverted(value));
}
}
15 changes: 11 additions & 4 deletions projects/mantic-ui/src/lib/components/info/info.component.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,25 @@
import { Component } from '@angular/core';
import { BaseComponent } from '../../base/base.component';
import { Component, OnInit } from '@angular/core';
import { takeUntil } from 'rxjs/operators';
import { InvertibleComponent } from '../../base/invertible.component';
import { IgnoredDirective } from '../../directives/ignored.directive';
import { MessageComponent } from '../message/message.component';

@Component({
selector: 'm-info',
templateUrl: './info.component.html',
styleUrls: ['./info.component.scss'],
standalone: true,
hostDirectives: [IgnoredDirective.default],
providers: [...BaseComponent.providers]
providers: [...InvertibleComponent.providers]
})
export class InfoComponent extends BaseComponent {
export class InfoComponent extends InvertibleComponent implements OnInit {
public constructor() {
super();
this.classes.registerFixed('visible', 'info', 'message');
}

public override ngOnInit(): void {
super.ngOnInit();
MessageComponent.defaults.invertedChange.pipe(takeUntil(this.destroy)).subscribe(value => this.refreshInverted(value));
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Component, Input, OnDestroy } from '@angular/core';
import { IconSize } from '../icon/icon-size';
import { IconType } from '../icon/icon-type';
import { MessageComponent } from './message.component';
import { IconSize } from '../icon/icon-size';

@Component({
selector: 'm-message-defaults',
Expand All @@ -26,6 +26,12 @@ export class MessageDefaultsComponent implements OnDestroy {
MessageComponent.defaults.closeIconSize = value;
}

@Input()
public set inverted(value: boolean) {
MessageComponent.defaults.inverted = value;
MessageComponent.defaults.invertedChange.next(value);
}

public ngOnDestroy(): void {
if (this.currentCloseIcon === MessageComponent.defaults.closeIcon) {
MessageComponent.defaults.closeIcon = this.previousCloseIcon;
Expand Down
22 changes: 17 additions & 5 deletions projects/mantic-ui/src/lib/components/message/message.component.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { CommonModule } from '@angular/common';
import { Component, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';
import { BaseComponent } from '../../base/base.component';
import { Component, EventEmitter, HostBinding, HostListener, Input, OnInit, Output } from '@angular/core';
import { ReplaySubject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { InvertibleComponent } from '../../base/invertible.component';
import { IgnoredDirective } from '../../directives/ignored.directive';
import { BooleanLike } from '../../models/boolean-like';
import { IconSize } from '../icon/icon-size';
Expand All @@ -21,10 +23,15 @@ export declare type MessageAttached = 'bottom' | 'top' | undefined;
LoaderComponent
],
hostDirectives: [IgnoredDirective.default],
providers: [...BaseComponent.providers]
providers: [...InvertibleComponent.providers]
})
export class MessageComponent extends BaseComponent {
public static readonly defaults = { closeIcon: <IconType>'close', closeIconSize: <IconSize>undefined };
export class MessageComponent extends InvertibleComponent implements OnInit {
public static readonly defaults = {
closeIcon: <IconType>'close',
closeIconSize: <IconSize>undefined,
inverted: false,
invertedChange: new ReplaySubject<boolean>(1)
};

private isPositive = false;
private isSuccess = false;
Expand Down Expand Up @@ -158,6 +165,11 @@ export class MessageComponent extends BaseComponent {
.registerFixed('visible', 'message');
}

public override ngOnInit(): void {
super.ngOnInit();
MessageComponent.defaults.invertedChange.pipe(takeUntil(this.destroy)).subscribe(value => this.refreshInverted(value));
}

@HostListener('click')
private onClick(): void {
if (this.closable) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { CommonModule } from '@angular/common';
import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';
import { BaseComponent } from '../../base/base.component';
import { takeUntil } from 'rxjs/operators';
import { InvertibleComponent } from '../../base/invertible.component';
import { IconComponent } from '../icon/icon.component';
import { MessageComponent } from '../message/message.component';

Expand All @@ -13,9 +14,9 @@ import { MessageComponent } from '../message/message.component';
CommonModule,
IconComponent
],
providers: [...BaseComponent.providers]
providers: [...InvertibleComponent.providers]
})
export class WarningComponent extends BaseComponent {
export class WarningComponent extends InvertibleComponent {
protected readonly defaults = MessageComponent.defaults;

@Input()
Expand All @@ -38,6 +39,11 @@ export class WarningComponent extends BaseComponent {
this.classes.registerFixed('warning', 'message');
}

public override ngOnInit(): void {
super.ngOnInit();
MessageComponent.defaults.invertedChange.pipe(takeUntil(this.destroy)).subscribe(value => this.refreshInverted(value));
}

public onClose(): void {
this.closed = true;
this.close.emit();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,6 @@
<m-dropdown-defaults [inverted]="dark" />
<m-textarea-defaults [inverted]="dark" />
<m-tab-group-defaults [inverted]="dark" />
<m-message-defaults [inverted]="dark" />
<m-modal-defaults [inverted]="dark" />
<ng-content />
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { Component, Input, ViewEncapsulation } from '@angular/core';
import { BooleanLike, ButtonDefaultsComponent, CheckboxDefaultsComponent, DropdownDefaultsComponent, FormDefaultsComponent, InputDefaultsComponent, ModalDefaultsComponent, SegmentDefaultsComponent, TabGroupDefaultsComponent, TableDefaultsComponent, TextareaDefaultsComponent, ThemeService, toBoolean } from '@mantic-ui/angular';
import { BooleanLike, ButtonDefaultsComponent, CheckboxDefaultsComponent, DropdownDefaultsComponent, FormDefaultsComponent, InputDefaultsComponent, MessageDefaultsComponent, ModalDefaultsComponent, SegmentDefaultsComponent, TabGroupDefaultsComponent, TableDefaultsComponent, TextareaDefaultsComponent, ThemeService, toBoolean } from '@mantic-ui/angular';

@Component({
selector: 'm-semantic-ui-theme',
standalone: true,
imports: [SegmentDefaultsComponent, TableDefaultsComponent, FormDefaultsComponent, InputDefaultsComponent, CheckboxDefaultsComponent, DropdownDefaultsComponent, TextareaDefaultsComponent, TabGroupDefaultsComponent, ModalDefaultsComponent, ButtonDefaultsComponent],
imports: [SegmentDefaultsComponent, TableDefaultsComponent, FormDefaultsComponent, InputDefaultsComponent, CheckboxDefaultsComponent, DropdownDefaultsComponent, TextareaDefaultsComponent, TabGroupDefaultsComponent, ModalDefaultsComponent, ButtonDefaultsComponent, MessageDefaultsComponent],
templateUrl: './semantic-ui-theme.component.html',
styleUrls: ['./semantic-ui-theme.component.scss'],
encapsulation: ViewEncapsulation.None
Expand Down

0 comments on commit b716944

Please sign in to comment.