Skip to content

feat(icons): add the ability to replace icons via service #14035

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 52 commits into from
Jun 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
e34b7ed
feat(icons): add the ability to replace icons via service
simeonoff Apr 1, 2024
e201ae5
refactor(icon): update service and icon to support dynamic changes
simeonoff Apr 3, 2024
5c82c67
Merge branch 'master' into simeonoff/configurable-icons
simeonoff Apr 3, 2024
4191a03
spec(expansion-panel): fix failing tests
simeonoff Apr 3, 2024
9b7fbcc
fix(icon): ligatures not rendered correctly
simeonoff Apr 3, 2024
b6eebf2
refactor(icon): update template to remove empty spaces
simeonoff Apr 3, 2024
9e2639a
refactor(icon): update service and component
simeonoff Apr 4, 2024
2aa4b23
Merge branch 'master' into simeonoff/configurable-icons
simeonoff Apr 5, 2024
efc236a
Merge branch 'master' into simeonoff/configurable-icons
simeonoff Apr 9, 2024
f639792
feat(icon-service): support font family name prefixes
simeonoff Apr 9, 2024
22ec4bd
refactor(icon): don't set icon family when instantiating icons
simeonoff Apr 9, 2024
8446e2f
spec(icon-service): add more tests
simeonoff Apr 9, 2024
052094d
spec(icon): add component tests
simeonoff Apr 10, 2024
3b57cdf
Merge branch 'master' into simeonoff/configurable-icons
simeonoff Apr 11, 2024
fad5f11
Merge branch 'master' into simeonoff/configurable-icons
simeonoff Apr 11, 2024
9c3254a
Merge branch 'master' into simeonoff/configurable-icons
simeonoff Apr 11, 2024
078891a
Merge branch 'master' into simeonoff/configurable-icons
simeonoff Apr 16, 2024
6d2f958
Merge branch 'master' into simeonoff/configurable-icons
simeonoff Apr 16, 2024
82d04ad
Merge branch 'master' into simeonoff/configurable-icons
simeonoff Apr 16, 2024
825da48
Merge branch 'master' into simeonoff/configurable-icons
simeonoff Apr 17, 2024
36bed26
refactor(*): add icon references for several components
simeonoff Apr 18, 2024
3a0aafa
refactor(carousel): use service to derive theme icon
simeonoff Apr 18, 2024
9d3da53
Merge branch 'master' into simeonoff/configurable-icons
simeonoff Apr 18, 2024
1536b4b
refactor(theme-service): make init method private
simeonoff Apr 18, 2024
e346c3a
refactor(chip): use icon references
simeonoff Apr 18, 2024
2137175
refactor(input-group): use theme service to get theme
simeonoff Apr 18, 2024
5f26f5e
refactor(combo, simple-combo): use icon references
simeonoff Apr 18, 2024
a9bb6f3
spec(*): fix failing tests
simeonoff Apr 18, 2024
b468c1c
Merge branch 'master' into simeonoff/configurable-icons
simeonoff Apr 19, 2024
5ed1bdb
Merge branch 'master' into simeonoff/configurable-icons
simeonoff Apr 23, 2024
3895dd5
refactor(*): use icon references
simeonoff Apr 24, 2024
4931e62
refactor(*): use icon refs
simeonoff Apr 30, 2024
457172f
Merge branch 'master' into simeonoff/configurable-icons
simeonoff May 17, 2024
3bb33ec
refactor(excel-style-filtering): use icon refs
simeonoff May 17, 2024
f5deed5
refactor(grid-filtering): update row and excel icons
simeonoff May 20, 2024
19283be
refactor(grid): use icon refs throughout
simeonoff May 22, 2024
257c739
spec(*): fix some failing tests
simeonoff May 22, 2024
3603b79
spec(*): fix remaining failing tests
simeonoff May 22, 2024
4461278
Merge branch 'master' into simeonoff/configurable-icons
simeonoff May 23, 2024
683f3f7
docs(icons): update reference table
simeonoff May 28, 2024
d3f00e3
Merge branch 'master' into simeonoff/configurable-icons
simeonoff May 28, 2024
0b04754
Merge remote-tracking branch 'origin' into simeonoff/configurable-icons
simeonoff Jun 3, 2024
0c7355d
chore(*): fix errors after resolving merge conflicts
simeonoff Jun 3, 2024
1c30229
Merge branch 'master' into simeonoff/configurable-icons
simeonoff Jun 10, 2024
65f600c
Merge branch 'master' into simeonoff/configurable-icons
ChronosSF Jun 13, 2024
efd14c0
Merge branch 'master' into simeonoff/configurable-icons
simeonoff Jun 17, 2024
5c5d3d2
Merge branch 'master' into simeonoff/configurable-icons
ChronosSF Jun 24, 2024
08880ec
Merge branch 'master' into simeonoff/configurable-icons
rkaraivanov Jun 25, 2024
977e905
fix(grid): don't create per grid instance of the IconService
simeonoff Jun 25, 2024
54abb09
refactor(icon, icon-service): reload icon component on ref changes
simeonoff Jun 26, 2024
1e89add
Merge branch 'master' into simeonoff/configurable-icons
simeonoff Jun 26, 2024
3a12cc6
refactor(icon-service): remove extra param from setIconRef
simeonoff Jun 27, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
[title]="resourceStrings.igx_action_strip_button_more_title"
[igxDropDownItemNavigation]="dropdown"
>
<igx-icon>more_vert</igx-icon>
<igx-icon family="default" name="more_vert"></igx-icon>
</button>
</ng-container>
<igx-drop-down #dropdown>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,14 @@ import { NgIf, NgFor, NgTemplateOutlet } from '@angular/common';
import { getCurrentResourceStrings } from '../core/i18n/resources';
import { IgxIconButtonDirective } from '../directives/button/icon-button.directive';
import { IgxActionStripToken } from './token';
import { IgxIconService } from '../icon/icon.service';

@Directive({
selector: '[igxActionStripMenuItem]',
standalone: true
})
export class IgxActionStripMenuItemDirective {
constructor(
public templateRef: TemplateRef<any>
) { }
constructor(public templateRef: TemplateRef<any>) {}
}

/**
Expand Down Expand Up @@ -183,7 +182,14 @@ export class IgxActionStripComponent implements IgxActionStripToken, AfterConten
private renderer: Renderer2,
protected el: ElementRef,
/** @hidden @internal **/
public cdr: ChangeDetectorRef) {}
public cdr: ChangeDetectorRef,
protected _iconService: IgxIconService,
) {
this._iconService.addIconRef('more_vert', 'default', {
name: 'more_vert',
family: 'material',
});
}

/**
* Menu Items list.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,5 +168,7 @@ export class IgxGridEditingActionsComponent extends IgxGridActionsBaseDirective
private registerIcons() {
this.iconService.addSvgIconFromText(addRow.name, addRow.value, 'imx-icons', true,);
this.iconService.addSvgIconFromText(addChild.name, addChild.value, 'imx-icons', true);
this.iconService.addIconRef(addRow.name, 'default', { name: addRow.name, family: 'imx-icons' });
this.iconService.addIconRef(addChild.name, 'default', { name: addChild.name, family: 'imx-icons' });
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<ng-container *ngIf="isRowContext">
<igx-grid-action-button *ngIf="inPinnedArea && pinnedTop" [asMenuItem]="asMenuItems" iconSet="imx-icons" iconName="jump-down" [labelText]="grid.resourceStrings.igx_grid_actions_jumpDown_label" (actionClick)="scrollToRow($event)"></igx-grid-action-button>
<igx-grid-action-button *ngIf="inPinnedArea && !pinnedTop" [asMenuItem]="asMenuItems" iconSet="imx-icons" iconName="jump-up" [labelText]="grid.resourceStrings.igx_grid_actions_jumpUp_label" (actionClick)="scrollToRow($event)"></igx-grid-action-button>
<igx-grid-action-button *ngIf="!pinned" [asMenuItem]="asMenuItems" iconSet="imx-icons" iconName="pin-left" [labelText]="grid.resourceStrings.igx_grid_actions_pin_label" (actionClick)="pin($event)"></igx-grid-action-button>
<igx-grid-action-button *ngIf="pinned" [asMenuItem]="asMenuItems" iconSet="imx-icons" iconName="unpin-left" [labelText]="grid.resourceStrings.igx_grid_actions_unpin_label" (actionClick)="unpin($event)"></igx-grid-action-button>
</ng-container>
<igx-grid-action-button *ngIf="inPinnedArea && pinnedTop" [asMenuItem]="asMenuItems" iconSet="default" iconName="jump-down" [labelText]="grid.resourceStrings.igx_grid_actions_jumpDown_label" (actionClick)="scrollToRow($event)"></igx-grid-action-button>
<igx-grid-action-button *ngIf="inPinnedArea && !pinnedTop" [asMenuItem]="asMenuItems" iconSet="default" iconName="jump-up" [labelText]="grid.resourceStrings.igx_grid_actions_jumpUp_label" (actionClick)="scrollToRow($event)"></igx-grid-action-button>
<igx-grid-action-button *ngIf="!pinned" [asMenuItem]="asMenuItems" iconSet="default" iconName="pin-left" [labelText]="grid.resourceStrings.igx_grid_actions_pin_label" (actionClick)="pin($event)"></igx-grid-action-button>
<igx-grid-action-button *ngIf="pinned" [asMenuItem]="asMenuItems" iconSet="default" iconName="unpin-left" [labelText]="grid.resourceStrings.igx_grid_actions_unpin_label" (actionClick)="unpin($event)"></igx-grid-action-button>
</ng-container>
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,23 @@ export class IgxGridPinningActionsComponent extends IgxGridActionsBaseDirective
this.iconService.addSvgIconFromText(unpinLeft.name, unpinLeft.value, 'imx-icons', true);
this.iconService.addSvgIconFromText(jumpDown.name, jumpDown.value, 'imx-icons', true);
this.iconService.addSvgIconFromText(jumpUp.name, jumpDown.value, 'imx-icons', true);

this.iconService.addIconRef(pinLeft.name, "default", {
name: pinLeft.name,
family: "imx-icons",
});
this.iconService.addIconRef(unpinLeft.name, "default", {
name: unpinLeft.name,
family: "imx-icons",
});
this.iconService.addIconRef(jumpDown.name, "default", {
name: jumpDown.name,
family: "imx-icons",
});
this.iconService.addIconRef(jumpUp.name, "default", {
name: jumpDown.name,
family: "imx-icons",
});
}
}
}
30 changes: 28 additions & 2 deletions projects/igniteui-angular/src/lib/calendar/calendar-base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { getCurrentResourceStrings } from '../core/i18n/resources';
import { KeyboardNavigationService } from './calendar.services';
import { getYearRange, isDateInRanges } from './common/helpers';
import { CalendarDay } from './common/model';
import { IgxIconService } from '../icon/icon.service';

/** @hidden @internal */
@Directive({
Expand Down Expand Up @@ -239,6 +240,25 @@ export class IgxCalendarBaseDirective implements ControlValueAccessor {
year: false
};

private _icons = [
{
family: 'default',
name: 'arrow_next',
ref: {
name: 'keyboard_arrow_right',
family: 'material',
}
},
{
family: 'default',
name: 'arrow_prev',
ref: {
name: 'keyboard_arrow_left',
family: 'material',
}
}
];

/**
* An accessor that sets the resource strings.
* By default it uses EN resources.
Expand Down Expand Up @@ -654,10 +674,16 @@ export class IgxCalendarBaseDirective implements ControlValueAccessor {
@Inject(LOCALE_ID)
protected _localeId: string,
protected keyboardNavigation?: KeyboardNavigationService,
protected cdr?: ChangeDetectorRef
protected cdr?: ChangeDetectorRef,
protected iconService?: IgxIconService,
) {
this.locale = _localeId;
this.viewDate = this.viewDate ? this.viewDate : new Date();

for (const icon of this._icons) {
this.iconService?.addIconRef(icon.name, icon.family, icon.ref);
}

this.initFormatters();
}

Expand Down Expand Up @@ -700,7 +726,7 @@ export class IgxCalendarBaseDirective implements ControlValueAccessor {
if (typeof value === 'string') {
value = DateTimeUtil.parseIsoDate(value);
}

if (value === null || value === undefined || (Array.isArray(value) && value.length === 0)) {
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,15 +65,14 @@
<span>{{ getDecadeRange().start }} - {{ getDecadeRange().end }}</span>
</ng-template>

<!-- TODO: Make arrows templatable via external templates and based on theme -->
<!-- Previous arrow icon -->
<ng-template #prevArrow let-obj>
<igx-icon aria-hidden="true">keyboard_arrow_left</igx-icon>
<igx-icon aria-hidden="true" family="default" name="arrow_prev"></igx-icon>
</ng-template>

<!-- Next arrow icon -->
<ng-template #nextArrow let-obj>
<igx-icon aria-hidden="true">keyboard_arrow_right</igx-icon>
<igx-icon aria-hidden="true" family="default" name="arrow_next"></igx-icon>
</ng-template>

<!-- Previous picker button -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import {
isDateInRanges,
} from "../common/helpers";
import { CalendarDay } from '../common/model';
import { IgxIconService } from '../../icon/icon.service';

let NEXT_ID = 0;

Expand Down Expand Up @@ -206,8 +207,9 @@ export class IgxDaysViewComponent extends IgxCalendarBaseDirective {
@Inject(LOCALE_ID) _localeId: string,
protected el: ElementRef,
public override cdr: ChangeDetectorRef,
protected override iconService: IgxIconService
) {
super(platform, _localeId);
super(platform, _localeId, null, cdr, iconService);
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<!-- Previous arrow icon -->
<ng-template #prevArrow let-obj>
<igx-icon aria-hidden="true">keyboard_arrow_left</igx-icon>
<igx-icon aria-hidden="true" family="default" name="arrow_prev"></igx-icon>
</ng-template>

<!-- Next arrow icon -->
<ng-template #nextArrow let-obj>
<igx-icon aria-hidden="true">keyboard_arrow_right</igx-icon>
<igx-icon aria-hidden="true" family="default" name="arrow_next"></igx-icon>
</ng-template>

<!-- Previous picker button -->
Expand Down
18 changes: 2 additions & 16 deletions projects/igniteui-angular/src/lib/carousel/carousel.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,28 +7,14 @@
<ng-template #defaultNextButton let-disabled>
<span class="igx-nav-arrow"
[class.igx-nav-arrow--disabled]="disabled">
<igx-icon>arrow_forward</igx-icon>
<igx-icon aria-hidden="true" family="default" name="carousel_next"></igx-icon>
</span>
</ng-template>

<ng-template #defaultPrevButton let-disabled>
<span class="igx-nav-arrow"
[class.igx-nav-arrow--disabled]="disabled">
<igx-icon>arrow_back</igx-icon>
</span>
</ng-template>

<ng-template #indigoPrevButton let-disabled>
<span class="igx-nav-arrow"
[class.igx-nav-arrow--disabled]="disabled">
<igx-icon>chevron_left</igx-icon>
</span>
</ng-template>

<ng-template #indigoNextButton let-disabled>
<span class="igx-nav-arrow"
[class.igx-nav-arrow--disabled]="disabled">
<igx-icon>chevron_right</igx-icon>
<igx-icon aria-hidden="true" family="default" name="carousel_prev"></igx-icon>
</span>
</ng-template>

Expand Down
Loading
Loading