{"id":3942,"date":"2026-06-29T12:34:20","date_gmt":"2026-06-29T12:34:20","guid":{"rendered":"https:\/\/www.infragistics.com\/blogs\/?p=3942"},"modified":"2026-06-29T12:34:20","modified_gmt":"2026-06-29T12:34:20","slug":"ignite-ui-for-angular-22","status":"publish","type":"post","link":"https:\/\/www.infragistics.com\/blogs\/ignite-ui-for-angular-22","title":{"rendered":"Ignite UI for Angular 22 Released &#8211; Derived Grid Themes"},"content":{"rendered":"<p><!--\nTITLE: Ignite UI for Angular 22 Released - Derived Grid Themes\nMETA DESCRIPTION: Ignite UI for Angular 22 ships derived Grid themes, a dedicated Excel Filtering theme, and updated Select positioning. See what's new and how to upgrade.\nEXCERPT: Ignite UI for Angular 22 ships derived themes for the Data Grid - set three color properties on grid-theme() and nested buttons, inputs, chips, and scrollbars realign automatically - plus a dedicated excel-filtering-theme() function and an updated Select dropdown position. Two default changes need attention on upgrade: input type is now box (ng update preserves the old line look), and Select positioning moved to AutoPositionStrategy.\n--><\/p>\n\n\n<p>Ignite UI for Angular 22 is now available. This release centers on derived themes for the Data Grid, a dedicated Excel Style Filtering theme function, and two default behavior changes in input styling and Select positioning.<\/p>\n\n\n\n<p>Ignite UI for Angular 22 is part of the broader Infragistics Ultimate 26.1 release. For the full cross-framework picture &#8211; the AI-assisted development toolchain plus what shipped in Blazor, React, and Web Components &#8211; see <a href=\"https:\/\/www.infragistics.com\/blogs\/whats-new-in-infragistics-ultimate-26-1\">What&#8217;s New in Infragistics Ultimate 26.1<\/a>. Below are the highlights.<\/p>\n\n\n\n<p><strong>What&#8217;s new in Ignite UI for Angular 22<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Derived Grid themes<\/strong> &#8211; set three color properties on <code>grid-theme()<\/code> and the grid&#8217;s nested buttons, inputs, chips, and scrollbars realign automatically.<\/li>\n\n\n\n<li><strong>Excel Style Filtering theme<\/strong> &#8211; a dedicated <code>excel-filtering-theme()<\/code> function replaces the Excel-filtering color properties on <code>grid-theme()<\/code>.<\/li>\n\n\n\n<li><strong>Select positioning<\/strong> &#8211; the dropdown now opens below or above the input via <code>AutoPositionStrategy<\/code>, with an opt-in strategy to keep the old overlap behavior.<\/li>\n<\/ul>\n\n\n\n<p>\u26a0\ufe0f Two default changes on upgrade: input <code>type<\/code> is now <code>box<\/code> (<code>ng update<\/code> auto-preserves the <code>line<\/code> look), and Select dropdown positioning changed. See the migration notes below.<br>\n\ud83d\udce6 <code>npm install igniteui-angular@22.0.0<\/code><br>\n\ud83d\udcc4 <a href=\"https:\/\/github.com\/IgniteUI\/igniteui-angular\/releases\/tag\/22.0.0\" rel=\"noopener\">Full changelog<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"derived-grid-themes\">Derived Grid Themes<\/h2>\n\n\n\n<p>Ignite UI for Angular 22 introduces derived themes for the <a href=\"https:\/\/www.infragistics.com\/products\/ignite-ui-angular\/angular\/components\/grid\/grid#theming\"><code>IgxGrid<\/code><\/a> and its internal components.<\/p>\n\n\n\n<p>Styling a grid previously meant theming each nested control on its own. Now, when you pass <code>$background<\/code>, <code>$foreground<\/code>, and <code>$accent-color<\/code> to <code>grid-theme()<\/code> and include the result with <code>tokens()<\/code>, the grid&#8217;s nested buttons, icons, inputs, dropdowns, checkboxes, scrollbars, and chips derive their tokens from the parent theme. <code>$foreground<\/code> is optional: omit it and it is derived as a contrast color for the background.<\/p>\n\n\n\n<p>Derived themes cover the Grid, Pivot Grid, Excel Filtering, Grid Toolbar, Paginator, Column Actions, and the Query Builder and Advanced Filtering Dialog, and apply through the existing component theme mixins with no extra mixin call. You can still scope a theme to one compound component by passing the same color properties to its own theme function.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"css\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$grid-theme: grid-theme(\n    $schema: $schema,\n    $background: #ffffff,\n    $foreground: #1f2937,\n    $accent-color: #0061a8\n);\n\nigx-grid {\n    @include tokens($grid-theme);\n}\n<\/pre>\n\n\n\n<p>The same pattern applies when defining a <a href=\"https:\/\/www.infragistics.com\/products\/ignite-ui-angular\/angular\/components\/hierarchicalgrid\/hierarchical-grid#defining-custom-theme\">Hierarchical Grid custom theme<\/a> or <a href=\"https:\/\/www.infragistics.com\/products\/ignite-ui-angular\/angular\/components\/treegrid\/tree-grid#styling\">styling the Tree Grid<\/a>. <a href=\"https:\/\/www.infragistics.com\/angular-docs\/sass\/latest\/themes\/#function-grid-theme\">View the grid-theme() Sass API reference -&gt;<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"excel-style-filtering-theme\">Excel Style Filtering Theme<\/h2>\n\n\n\n<p>A dedicated <code>excel-filtering-theme()<\/code> function now styles Excel Style Filtering directly.<\/p>\n\n\n\n<p>Use it instead of the Excel-filtering color properties that previously lived on <code>grid-theme()<\/code>. The generated tokens are scoped to the Excel Style Filtering UI and its nested controls, so you can give the filtering experience its own background and accent without overriding the grid&#8217;s theme.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"css\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$excel-filtering-theme: excel-filtering-theme(\n    $schema: $schema,\n    $background: #f4f6fb,\n    $accent-color: #0061a8\n);\n\nigx-grid-excel-style-filtering,\n.igx-excel-filter__secondary {\n    @include tokens($excel-filtering-theme);\n}\n<\/pre>\n\n\n\n<p><a href=\"https:\/\/www.infragistics.com\/products\/ignite-ui-angular\/angular\/components\/grid\/grid#theming\">View the Grid theming documentation -&gt;<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"select-component\">Select Component<\/h2>\n\n\n\n<p>The Select dropdown now opens below the input &#8211; or above it when there is not enough space &#8211; using <code>AutoPositionStrategy<\/code>.<\/p>\n\n\n\n<p>This makes <code>IgxSelectComponent<\/code> consistent with other connected components. The previous default overlapped the selected item&#8217;s text over the input. If you rely on that behavior, the new publicly exported <code>IgxSelectOverlapPositionStrategy<\/code> restores it through <code>overlaySettings<\/code>.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"typescript\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">this.select.overlaySettings = {\n    positionStrategy: new IgxSelectOverlapPositionStrategy(this.select)\n};\n<\/pre>\n\n\n\n<p><a href=\"https:\/\/www.infragistics.com\/products\/ignite-ui-angular\/angular\/components\/select#overlay-settings\">View Select component documentation -&gt;<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"breaking-changes-migration\">\u26a0\ufe0f Breaking Changes &amp; Migration<\/h2>\n\n\n\n<p><strong>Default input type changed from line to box<\/strong><br>\nAffected: <code>IgxInputGroupComponent<\/code>, <code>IgxSelectComponent<\/code>, <code>IgxDatePickerComponent<\/code>, <code>IgxDateRangePickerComponent<\/code>, <code>IgxTimePickerComponent<\/code><br>\nWhat changed: the default <code>type<\/code> is now <code>box<\/code> instead of <code>line<\/code>.<br>\nMigration: <code>ng update<\/code> adds <code>type=\"line\"<\/code> to existing instances that do not already set <code>type<\/code> explicitly, preserving their current appearance. New instances default to <code>box<\/code>.<\/p>\n\n\n\n<p><strong>Select default positioning changed<\/strong><br>\nAffected: <code>IgxSelectComponent<\/code><br>\nWhat changed: the default positioning strategy moved from the internal overlap strategy to <code>AutoPositionStrategy<\/code>; the dropdown now opens below or above the input rather than over it.<br>\nMigration: this change has no automatic migration. To keep the previous overlap behavior, set <code>overlaySettings<\/code> with <code>IgxSelectOverlapPositionStrategy<\/code> (see the Select component section above).<br>\n<a href=\"https:\/\/www.infragistics.com\/products\/ignite-ui-angular\/angular\/components\/general\/update-guide\">View update guide -&gt;<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"install-ignite-ui-for-angular-22\">Install Ignite UI for Angular 22<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Fresh install\nnpm install igniteui-angular@22.0.0\n\n# Upgrade existing project\nng update igniteui-angular@22.0.0\n<\/pre>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.npmjs.com\/package\/igniteui-angular\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/img.shields.io\/npm\/v\/igniteui-angular.svg\" alt=\"igniteui-angular on npm\"\/><\/a><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"get-started-with-ignite-ui-for-angular-22\">Get Started with Ignite UI for Angular 22<\/h2>\n\n\n\n<p>Upgrade with <code>ng update<\/code>, then theme a grid and its nested controls from a single parent theme.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button is-style-fill\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/www.infragistics.com\/products\/ignite-ui-angular\/getting-started\">Get Started -&gt;<\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-outline is-style-outline--1\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/IgniteUI\/igniteui-angular\/releases\/tag\/22.0.0\" rel=\"noopener\">Full Release Notes<\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-outline is-style-outline--2\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/www.infragistics.com\/products\/ignite-ui-angular\/angular\/components\/grid\/grid#theming\">Grid Theming Docs<\/a><\/div>\n<\/div>\n\n\n<p><!--\nSTRUCTURED_RELEASE_METADATA\nproduct: Ignite UI for Angular\nversion: 22.0.0\nrelease_date: 2026-06-25\nframework: Angular\npackage_manager: npm\npackage_name: igniteui-angular\ninstall_command: npm install igniteui-angular@22.0.0\nchangelog_url: https:\/\/github.com\/IgniteUI\/igniteui-angular\/releases\/tag\/22.0.0\ndocs_url: https:\/\/www.infragistics.com\/products\/ignite-ui-angular\/angular\/components\/grid\/grid#theming\nnew_components: []\nnew_features: [DerivedGridThemes, ExcelFilteringTheme, SelectAutoPositioning, IgxSelectOverlapPositionStrategy]\nbreaking_changes: true\nbreaking_change_summary: Default input type changed from line to box (ng update auto-preserves line); IgxSelect default positioning changed to AutoPositionStrategy (manual opt-in to restore overlap)\nmin_framework_version: [VERIFY - supported Angular framework version not in changelog]\ntags: [angular, data-grid, theming, sass, excel-filtering, select, breaking-changes]\nEND_METADATA\n--><\/p>","protected":false},"excerpt":{"rendered":"<p>Ignite UI for Angular 22 ships derived themes for the Data Grid &#8211; set three color properties on grid-theme() and nested buttons, inputs, chips, and scrollbars realign automatically &#8211; plus a dedicated excel-filtering-theme() function and an updated Select dropdown position. Two default changes need attention on upgrade: input type is now box (ng update preserves the old line look), and Select positioning moved to AutoPositionStrategy.<\/p>\n","protected":false},"author":20,"featured_media":3944,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,7,12],"tags":[23,123,124,46,120,122,119,121],"class_list":["post-3942","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","category-angular","category-product-updates","tag-angular","tag-angular-22","tag-breaking-changes","tag-data-grid","tag-ignite-ui-for-angular","tag-release-notes","tag-sass","tag-theming"],"_links":{"self":[{"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/posts\/3942","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/comments?post=3942"}],"version-history":[{"count":4,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/posts\/3942\/revisions"}],"predecessor-version":[{"id":3947,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/posts\/3942\/revisions\/3947"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/media\/3944"}],"wp:attachment":[{"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/media?parent=3942"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/categories?post=3942"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.infragistics.com\/blogs\/wp-json\/wp\/v2\/tags?post=3942"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}